summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--PumpKINDlg.cpp70
-rw-r--r--PumpKINDlg.h3
-rw-r--r--pumpkin.mak238
3 files changed, 107 insertions, 204 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp
index 070f3e8..2a01918 100644
--- a/PumpKINDlg.cpp
+++ b/PumpKINDlg.cpp
@@ -1,2159 +1,2163 @@
1// PumpKINDlg.cpp : implementation file 1// PumpKINDlg.cpp : implementation file
2// 2//
3 3
4#include "stdafx.h" 4#include "stdafx.h"
5#include "PumpKIN.h" 5#include "PumpKIN.h"
6#include "PumpKINDlg.h" 6#include "PumpKINDlg.h"
7 7
8#include "ACLTargetCombo.h" 8#include "ACLTargetCombo.h"
9#include "PropsServer.h" 9#include "PropsServer.h"
10#include "PropsNetwork.h" 10#include "PropsNetwork.h"
11#include "PropsSounds.h" 11#include "PropsSounds.h"
12#include "PropsACL.h" 12#include "PropsACL.h"
13#include "ConfirmRRQDlg.h" 13#include "ConfirmRRQDlg.h"
14#include "ConfirmWRQDlg.h" 14#include "ConfirmWRQDlg.h"
15#include "RequestDlg.h" 15#include "RequestDlg.h"
16#include "Resolver.h" 16#include "Resolver.h"
17#include "Retrier.h" 17#include "Retrier.h"
18#include "Trayer.h" 18#include "Trayer.h"
19 19
20#include <io.h> 20#include <io.h>
21 21
22#ifdef _DEBUG 22#ifdef _DEBUG
23#define new DEBUG_NEW 23#define new DEBUG_NEW
24#undef THIS_FILE 24#undef THIS_FILE
25static char THIS_FILE[] = __FILE__; 25static char THIS_FILE[] = __FILE__;
26#endif 26#endif
27 27
28IMPLEMENT_DYNAMIC(CXferSocket, CAsyncSocket) 28IMPLEMENT_DYNAMIC(CXferSocket, CAsyncSocket)
29IMPLEMENT_DYNAMIC(CWRQSocket, CXferSocket) 29IMPLEMENT_DYNAMIC(CWRQSocket, CXferSocket)
30IMPLEMENT_DYNAMIC(CRRQSocket, CXferSocket) 30IMPLEMENT_DYNAMIC(CRRQSocket, CXferSocket)
31 31
32///////////////////////////////////////////////////////////////////////////// 32/////////////////////////////////////////////////////////////////////////////
33// CAboutDlg dialog used for App About 33// CAboutDlg dialog used for App About
34 34
35class CAboutDlg : public CDialog 35class CAboutDlg : public CDialog
36{ 36{
37public: 37public:
38 CAboutDlg(); 38 CAboutDlg();
39 39
40// Dialog Data 40// Dialog Data
41 //{{AFX_DATA(CAboutDlg) 41 //{{AFX_DATA(CAboutDlg)
42 enum { IDD = IDD_ABOUTBOX }; 42 enum { IDD = IDD_ABOUTBOX };
43 //}}AFX_DATA 43 //}}AFX_DATA
44 44
45 // ClassWizard generated virtual function overrides 45 // ClassWizard generated virtual function overrides
46 //{{AFX_VIRTUAL(CAboutDlg) 46 //{{AFX_VIRTUAL(CAboutDlg)
47 protected: 47 protected:
48 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 48 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
49 //}}AFX_VIRTUAL 49 //}}AFX_VIRTUAL
50 50
51// Implementation 51// Implementation
52protected: 52protected:
53 //{{AFX_MSG(CAboutDlg) 53 //{{AFX_MSG(CAboutDlg)
54 afx_msg void OnKlevernet(); 54 afx_msg void OnKlevernet();
55 //}}AFX_MSG 55 //}}AFX_MSG
56 DECLARE_MESSAGE_MAP() 56 DECLARE_MESSAGE_MAP()
57}; 57};
58 58
59CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 59CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
60{ 60{
61 //{{AFX_DATA_INIT(CAboutDlg) 61 //{{AFX_DATA_INIT(CAboutDlg)
62 //}}AFX_DATA_INIT 62 //}}AFX_DATA_INIT
63} 63}
64 64
65void CAboutDlg::DoDataExchange(CDataExchange* pDX) 65void CAboutDlg::DoDataExchange(CDataExchange* pDX)
66{ 66{
67 CDialog::DoDataExchange(pDX); 67 CDialog::DoDataExchange(pDX);
68 //{{AFX_DATA_MAP(CAboutDlg) 68 //{{AFX_DATA_MAP(CAboutDlg)
69 //}}AFX_DATA_MAP 69 //}}AFX_DATA_MAP
70} 70}
71 71
72BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 72BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
73 //{{AFX_MSG_MAP(CAboutDlg) 73 //{{AFX_MSG_MAP(CAboutDlg)
74 ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet) 74 ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet)
75 //}}AFX_MSG_MAP 75 //}}AFX_MSG_MAP
76END_MESSAGE_MAP() 76END_MESSAGE_MAP()
77 77
78///////////////////////////////////////////////////////////////////////////// 78/////////////////////////////////////////////////////////////////////////////
79// CPumpKINDlg dialog 79// CPumpKINDlg dialog
80 80
81CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) 81CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/)
82 : CDialog(CPumpKINDlg::IDD, pParent), m_MinSize(0,0) 82 : CDialog(CPumpKINDlg::IDD, pParent), m_MinSize(0,0)
83{ 83{
84 m_Listener.m_Daddy = this; 84 m_Listener.m_Daddy = this;
85 85
86 m_bListen = TRUE; 86 m_bListen = TRUE;
87 87
88 m_ListenPort = 69; 88 m_ListenPort = 69;
89 m_bTFTPSubdirs = TRUE; 89 m_bTFTPSubdirs = TRUE;
90 m_RRQMode = rrqAlwaysConfirm; 90 m_RRQMode = rrqAlwaysConfirm;
91 m_WRQMode = wrqAlwaysConfirm; 91 m_WRQMode = wrqAlwaysConfirm;
92 m_TFTPTimeOut = CTimeSpan(0,0,0,30); 92 m_TFTPTimeOut = CTimeSpan(0,0,0,30);
93 m_RetryTimeOut = CTimeSpan(0,0,0,10); 93 m_RetryTimeOut = CTimeSpan(0,0,0,10);
94 m_LogLength = 100; 94 m_LogLength = 100;
95 m_SpeakPort = 69; 95 m_SpeakPort = 69;
96 m_PromptTimeOut=30; 96 m_PromptTimeOut=30;
97 m_bShown=TRUE; 97 m_bShown=TRUE;
98 m_bExiting=FALSE; 98 m_bExiting=FALSE;
99 m_BlockSize=1024; 99 m_BlockSize=1024;
100 m_bnw.AssignSound("(bang)",IDR_WAVE_RING,CBellsNWhistles::CBang::bangResource); 100 m_bnw.AssignSound("(bang)",IDR_WAVE_RING,CBellsNWhistles::CBang::bangResource);
101 m_bnw.AssignSound("(done)",IDR_WAVE_FINISHED,CBellsNWhistles::CBang::bangResource); 101 m_bnw.AssignSound("(done)",IDR_WAVE_FINISHED,CBellsNWhistles::CBang::bangResource);
102 m_bnw.AssignSound("(oops)",IDR_WAVE_ABORTED,CBellsNWhistles::CBang::bangResource); 102 m_bnw.AssignSound("(oops)",IDR_WAVE_ABORTED,CBellsNWhistles::CBang::bangResource);
103 m_bnw.AssignSound("(none)",(int)0,CBellsNWhistles::CBang::bangNone); 103 m_bnw.AssignSound("(none)",(int)0,CBellsNWhistles::CBang::bangNone);
104 m_bnwRequest="(bang)"; m_bnwSuccess="(done)"; 104 m_bnwRequest="(bang)"; m_bnwSuccess="(done)";
105 m_bnwAbort="(oops)"; 105 m_bnwAbort="(oops)";
106 //{{AFX_DATA_INIT(CPumpKINDlg) 106 //{{AFX_DATA_INIT(CPumpKINDlg)
107 //}}AFX_DATA_INIT 107 //}}AFX_DATA_INIT
108 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 108 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
109 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 109 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
110 m_bmpBack.LoadBitmap(IDB_BACKGROUND); 110 m_bmpBack.LoadBitmap(IDB_BACKGROUND);
111 m_bmpBack.GetBitmap(&m_bitmapBack); 111 m_bmpBack.GetBitmap(&m_bitmapBack);
112 m_Retrier = new CRetrier(this); 112 m_Retrier = new CRetrier(this);
113 ASSERT(m_Retrier); 113 ASSERT(m_Retrier);
114 m_Trayer = new CTrayer(this); 114 m_Trayer = new CTrayer(this);
115 ASSERT(m_Trayer); 115 ASSERT(m_Trayer);
116 /* Ensure we're backwards compatible */ 116 /* Ensure we're backwards compatible */
117 ASSERT(CPumpKINDlg::rrqGiveAll==0); 117 ASSERT(CPumpKINDlg::rrqGiveAll==0);
118 ASSERT(CPumpKINDlg::rrqAlwaysConfirm==1); 118 ASSERT(CPumpKINDlg::rrqAlwaysConfirm==1);
119 ASSERT(CPumpKINDlg::rrqDenyAll==2); 119 ASSERT(CPumpKINDlg::rrqDenyAll==2);
120 ASSERT(CPumpKINDlg::wrqTakeAll==0); 120 ASSERT(CPumpKINDlg::wrqTakeAll==0);
121 ASSERT(CPumpKINDlg::wrqConfirmIfExists==1); 121 ASSERT(CPumpKINDlg::wrqConfirmIfExists==1);
122 ASSERT(CPumpKINDlg::wrqAlwaysConfirm==2); 122 ASSERT(CPumpKINDlg::wrqAlwaysConfirm==2);
123 ASSERT(CPumpKINDlg::wrqDenyAll==3); 123 ASSERT(CPumpKINDlg::wrqDenyAll==3);
124 /* -- */ 124 /* -- */
125 LoadSettings(); 125 LoadSettings();
126} 126}
127 127
128void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) 128void CPumpKINDlg::DoDataExchange(CDataExchange* pDX)
129{ 129{
130 CDialog::DoDataExchange(pDX); 130 CDialog::DoDataExchange(pDX);
131 //{{AFX_DATA_MAP(CPumpKINDlg) 131 //{{AFX_DATA_MAP(CPumpKINDlg)
132 DDX_Control(pDX, ID_HELP, m_HelpCtl); 132 DDX_Control(pDX, ID_HELP, m_HelpCtl);
133 DDX_Control(pDX, IDC_PUT, m_PutCtl); 133 DDX_Control(pDX, IDC_PUT, m_PutCtl);
134 DDX_Control(pDX, IDC_GET, m_GetCtl); 134 DDX_Control(pDX, IDC_GET, m_GetCtl);
135 DDX_Control(pDX, IDC_EXIT, m_ExitCtl); 135 DDX_Control(pDX, IDC_EXIT, m_ExitCtl);
136 DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); 136 DDX_Control(pDX, IDC_LISTENING, m_ListenCtl);
137 DDX_Control(pDX, IDC_ABORT, m_AbortCtl); 137 DDX_Control(pDX, IDC_ABORT, m_AbortCtl);
138 DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); 138 DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl);
139 DDX_Control(pDX, IDC_LOG, m_Log); 139 DDX_Control(pDX, IDC_LOG, m_Log);
140 DDX_Control(pDX, IDC_CONNECTIONS, m_List); 140 DDX_Control(pDX, IDC_CONNECTIONS, m_List);
141 //}}AFX_DATA_MAP 141 //}}AFX_DATA_MAP
142} 142}
143 143
144BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) 144BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog)
145 //{{AFX_MSG_MAP(CPumpKINDlg) 145 //{{AFX_MSG_MAP(CPumpKINDlg)
146 ON_WM_SYSCOMMAND() 146 ON_WM_SYSCOMMAND()
147 ON_WM_DESTROY() 147 ON_WM_DESTROY()
148 ON_WM_PAINT() 148 ON_WM_PAINT()
149 ON_WM_QUERYDRAGICON() 149 ON_WM_QUERYDRAGICON()
150 ON_WM_CREATE() 150 ON_WM_CREATE()
151 ON_BN_CLICKED(IDC_OPTIONS, OnOptions) 151 ON_BN_CLICKED(IDC_OPTIONS, OnOptions)
152 ON_WM_TIMER() 152 ON_WM_TIMER()
153 ON_BN_CLICKED(IDC_EXIT, OnExit) 153 ON_BN_CLICKED(IDC_EXIT, OnExit)
154 ON_BN_CLICKED(IDC_PUT, OnPut) 154 ON_BN_CLICKED(IDC_PUT, OnPut)
155 ON_BN_CLICKED(IDC_GET, OnGet) 155 ON_BN_CLICKED(IDC_GET, OnGet)
156 ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) 156 ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections)
157 ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) 157 ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections)
158 ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) 158 ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections)
159 ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) 159 ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections)
160 ON_BN_CLICKED(IDC_ABORT, OnAbort) 160 ON_BN_CLICKED(IDC_ABORT, OnAbort)
161 ON_WM_CLOSE() 161 ON_WM_CLOSE()
162 ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) 162 ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow)
163 ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) 163 ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen)
164 ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) 164 ON_COMMAND(ID_TRAY_EXIT, OnTrayExit)
165 ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) 165 ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin)
166 ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) 166 ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile)
167 ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) 167 ON_COMMAND(ID_TRAY_HELP, OnTrayHelp)
168 ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) 168 ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions)
169 ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) 169 ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile)
170 ON_WM_WINDOWPOSCHANGING() 170 ON_WM_WINDOWPOSCHANGING()
171 ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) 171 ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog)
172 ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) 172 ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder)
173 ON_WM_DROPFILES() 173 ON_WM_DROPFILES()
174 ON_BN_CLICKED(ID_HELP, OnHelp) 174 ON_BN_CLICKED(ID_HELP, OnHelp)
175 ON_BN_CLICKED(IDC_LISTENING, OnListening) 175 ON_BN_CLICKED(IDC_LISTENING, OnListening)
176 ON_WM_GETMINMAXINFO() 176 ON_WM_GETMINMAXINFO()
177 ON_WM_SIZE() 177 ON_WM_SIZE()
178 //}}AFX_MSG_MAP 178 //}}AFX_MSG_MAP
179END_MESSAGE_MAP() 179END_MESSAGE_MAP()
180 180
181///////////////////////////////////////////////////////////////////////////// 181/////////////////////////////////////////////////////////////////////////////
182// CPumpKINDlg message handlers 182// CPumpKINDlg message handlers
183 183
184BOOL CPumpKINDlg::OnInitDialog() 184BOOL CPumpKINDlg::OnInitDialog()
185{ 185{
186 CDialog::OnInitDialog(); 186 CDialog::OnInitDialog();
187 187
188 // Add "About..." menu item to system menu. 188 // Add "About..." menu item to system menu.
189 189
190 // IDM_ABOUTBOX must be in the system command range. 190 // IDM_ABOUTBOX must be in the system command range.
191 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 191 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
192 ASSERT(IDM_ABOUTBOX < 0xF000); 192 ASSERT(IDM_ABOUTBOX < 0xF000);
193 193
194 CMenu* pSysMenu = GetSystemMenu(FALSE); 194 CMenu* pSysMenu = GetSystemMenu(FALSE);
195 CString strAboutMenu; 195 CString strAboutMenu;
196 strAboutMenu.LoadString(IDS_ABOUTBOX); 196 strAboutMenu.LoadString(IDS_ABOUTBOX);
197 if (!strAboutMenu.IsEmpty()) 197 if (!strAboutMenu.IsEmpty())
198 { 198 {
199 pSysMenu->AppendMenu(MF_SEPARATOR); 199 pSysMenu->AppendMenu(MF_SEPARATOR);
200 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 200 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
201 } 201 }
202 202
203 // Set the icon for this dialog. The framework does this automatically 203 // Set the icon for this dialog. The framework does this automatically
204 // when the application's main window is not a dialog 204 // when the application's main window is not a dialog
205 SetIcon(m_hIcon, TRUE); // Set big icon 205 SetIcon(m_hIcon, TRUE); // Set big icon
206 SetIcon(m_hIcon, FALSE); // Set small icon 206 SetIcon(m_hIcon, FALSE); // Set small icon
207 207
208 VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); 208 VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0));
209 209
210 m_Images.Create(16,16,TRUE,2,1); 210 m_Images.Create(16,16,TRUE,2,1);
211 m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); 211 m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ));
212 m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); 212 m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ));
213 ASSERT(m_iRRQ>=0); 213 ASSERT(m_iRRQ>=0);
214 ASSERT(m_iWRQ>=0); 214 ASSERT(m_iWRQ>=0);
215 m_List.SetImageList(&m_Images,LVSIL_NORMAL); 215 m_List.SetImageList(&m_Images,LVSIL_NORMAL);
216 m_List.SetImageList(&m_Images,LVSIL_SMALL); 216 m_List.SetImageList(&m_Images,LVSIL_SMALL);
217 m_List.SetImageList(&m_Images,LVSIL_STATE); 217 m_List.SetImageList(&m_Images,LVSIL_STATE);
218 m_List.SetTextColor(RGB(255,255,0));// Yellow 218 m_List.SetTextColor(RGB(255,255,0));// Yellow
219 m_List.SetTextBkColor(RGB(12,167,0));// Green 219 m_List.SetTextBkColor(RGB(12,167,0));// Green
220 m_List.SetBkColor(RGB(12,167,0));// Green 220 m_List.SetBkColor(RGB(12,167,0));// Green
221CRect listrc; 221CRect listrc;
222 m_List.GetClientRect(&listrc); 222 m_List.GetClientRect(&listrc);
223 m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile); 223 m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile);
224 m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); 224 m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType);
225 m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); 225 m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer);
226 m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); 226 m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes);
227 m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); 227 m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize);
228 228
229 LogLine(IDS_LOG_START); 229 LogLine(IDS_LOG_START);
230 230
231 SetupButtons(); 231 SetupButtons();
232 232
233CRect wrci, wrco; 233CRect wrci, wrco;
234 GetWindowRect(&wrco); 234 GetWindowRect(&wrco);
235 GetClientRect(&wrci); 235 GetClientRect(&wrci);
236CRect brc; 236CRect brc;
237 m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc); 237 m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc);
238 m_rightGapButtons = wrci.right-brc.right; 238 m_rightGapButtons = wrci.right-brc.right;
239 m_List.GetWindowRect(&brc); ScreenToClient(&brc); 239 m_List.GetWindowRect(&brc); ScreenToClient(&brc);
240 m_rightGapList = wrci.right-brc.right; 240 m_rightGapList = wrci.right-brc.right;
241 m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); 241 m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc);
242 m_bottomGapListen = wrci.bottom-brc.bottom; 242 m_bottomGapListen = wrci.bottom-brc.bottom;
243 m_Log.GetWindowRect(&brc);ScreenToClient(&brc); 243 m_Log.GetWindowRect(&brc);ScreenToClient(&brc);
244 m_bottomGapLog = wrci.bottom-brc.bottom; 244 m_bottomGapLog = wrci.bottom-brc.bottom;
245 m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height(); 245 m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height();
246 246
247CRect rc, drc; 247CRect rc, drc;
248 GetWindowRect(rc); 248 GetWindowRect(rc);
249 GetDesktopWindow()->GetWindowRect(drc); 249 GetDesktopWindow()->GetWindowRect(drc);
250 SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); 250 SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER);
251 251
252 if(m_bShown) 252 if(m_bShown)
253 ShowWindow(SW_SHOW); 253 ShowWindow(SW_SHOW);
254 else 254 else
255 ShowWindow(SW_HIDE); 255 ShowWindow(SW_HIDE);
256 256
257 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); 257 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0);
258 258
259 // CG: The following block was added by the ToolTips component. 259 // CG: The following block was added by the ToolTips component.
260 { 260 {
261 // Create the ToolTip control. 261 // Create the ToolTip control.
262 m_tooltip.Create(this); 262 m_tooltip.Create(this);
263 m_tooltip.Activate(TRUE); 263 m_tooltip.Activate(TRUE);
264 264
265 m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); 265 m_tooltip.AddTool(&m_List,IDC_CONNECTIONS);
266 m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); 266 m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT);
267 m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); 267 m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET);
268 m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); 268 m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT);
269 m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); 269 m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS);
270 m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); 270 m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT);
271 m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP); 271 m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP);
272 m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG); 272 m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG);
273 } 273 }
274 return TRUE; // return TRUE unless you set the focus to a control 274 return TRUE; // return TRUE unless you set the focus to a control
275} 275}
276 276
277void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam) 277void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam)
278{ 278{
279 if ((nID & 0xFFF0) == IDM_ABOUTBOX) 279 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
280 { 280 {
281 CAboutDlg dlgAbout; 281 CAboutDlg dlgAbout;
282 dlgAbout.DoModal(); 282 dlgAbout.DoModal();
283 } 283 }
284 else 284 else
285 { 285 {
286 CDialog::OnSysCommand(nID, lParam); 286 CDialog::OnSysCommand(nID, lParam);
287 } 287 }
288} 288}
289 289
290void CPumpKINDlg::OnDestroy() 290void CPumpKINDlg::OnDestroy()
291{ 291{
292 SaveSettings(); 292 SaveSettings();
293 293
294NOTIFYICONDATA nid; 294NOTIFYICONDATA nid;
295 memset(&nid,0,sizeof(nid)); 295 memset(&nid,0,sizeof(nid));
296 nid.cbSize=sizeof(nid); 296 nid.cbSize=sizeof(nid);
297 nid.hWnd=m_Trayer->m_hWnd; 297 nid.hWnd=m_Trayer->m_hWnd;
298 nid.uID=IDC_TRAYICON; 298 nid.uID=IDC_TRAYICON;
299 nid.uFlags=0; 299 nid.uFlags=0;
300 VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid)); 300 VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid));
301 301
302 WinHelp(0L, HELP_QUIT); 302 WinHelp(0L, HELP_QUIT);
303 CDialog::OnDestroy(); 303 CDialog::OnDestroy();
304POSITION p = m_LogTimes.GetStartPosition(); 304POSITION p = m_LogTimes.GetStartPosition();
305 while(p){ 305 while(p){
306 CTime *t,*tt; 306 CTime *t,*tt;
307 m_LogTimes.GetNextAssoc(p,t,tt); 307 m_LogTimes.GetNextAssoc(p,t,tt);
308 ASSERT(t && tt && t==tt); 308 ASSERT(t && tt && t==tt);
309 delete t; 309 delete t;
310 } 310 }
311 // *** Abort and cleanup transfers 311 // *** Abort and cleanup transfers
312 m_LogTimes.RemoveAll(); 312 m_LogTimes.RemoveAll();
313} 313}
314 314
315// If you add a minimize button to your dialog, you will need the code below 315// If you add a minimize button to your dialog, you will need the code below
316// to draw the icon. For MFC applications using the document/view model, 316// to draw the icon. For MFC applications using the document/view model,
317// this is automatically done for you by the framework. 317// this is automatically done for you by the framework.
318 318
319void CPumpKINDlg::OnPaint() 319void CPumpKINDlg::OnPaint()
320{ 320{
321 if (IsIconic()) 321 if (IsIconic())
322 { 322 {
323 CPaintDC dc(this); // device context for painting 323 CPaintDC dc(this); // device context for painting
324 324
325 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 325 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
326 326
327 // Center icon in client rectangle 327 // Center icon in client rectangle
328 int cxIcon = GetSystemMetrics(SM_CXICON); 328 int cxIcon = GetSystemMetrics(SM_CXICON);
329 int cyIcon = GetSystemMetrics(SM_CYICON); 329 int cyIcon = GetSystemMetrics(SM_CYICON);
330 CRect rect; 330 CRect rect;
331 GetClientRect(&rect); 331 GetClientRect(&rect);
332 int x = (rect.Width() - cxIcon + 1) / 2; 332 int x = (rect.Width() - cxIcon + 1) / 2;
333 int y = (rect.Height() - cyIcon + 1) / 2; 333 int y = (rect.Height() - cyIcon + 1) / 2;
334 334
335 // Draw the icon 335 // Draw the icon
336 dc.DrawIcon(x, y, m_hIcon); 336 dc.DrawIcon(x, y, m_hIcon);
337 } 337 }
338 else 338 else
339 { 339 {
340 CPaintDC pDC(this); 340 CPaintDC pDC(this);
341 CDC bmpDC; 341 CDC bmpDC;
342 bmpDC.CreateCompatibleDC(&pDC); 342 bmpDC.CreateCompatibleDC(&pDC);
343 bmpDC.SelectObject(&m_bmpBack); 343 bmpDC.SelectObject(&m_bmpBack);
344 CRect rc; 344 CRect rc;
345 GetClientRect(&rc); 345 GetClientRect(&rc);
346 for(int x=-m_bitmapBack.bmWidth*2/4;x<rc.Width();x+=m_bitmapBack.bmWidth) 346 for(int x=-m_bitmapBack.bmWidth*2/4;x<rc.Width();x+=m_bitmapBack.bmWidth)
347 for(int y=-m_bitmapBack.bmHeight*2/4;y<rc.Height();y+=m_bitmapBack.bmHeight) 347 for(int y=-m_bitmapBack.bmHeight*2/4;y<rc.Height();y+=m_bitmapBack.bmHeight)
348 pDC.BitBlt(x,y,m_bitmapBack.bmWidth,m_bitmapBack.bmHeight,&bmpDC,0,0,SRCCOPY); 348 pDC.BitBlt(x,y,m_bitmapBack.bmWidth,m_bitmapBack.bmHeight,&bmpDC,0,0,SRCCOPY);
349 bmpDC.DeleteDC(); 349 bmpDC.DeleteDC();
350 CDialog::OnPaint(); 350 CDialog::OnPaint();
351 } 351 }
352} 352}
353 353
354// The system calls this to obtain the cursor to display while the user drags 354// The system calls this to obtain the cursor to display while the user drags
355// the minimized window. 355// the minimized window.
356HCURSOR CPumpKINDlg::OnQueryDragIcon() 356HCURSOR CPumpKINDlg::OnQueryDragIcon()
357{ 357{
358 return (HCURSOR) m_hIcon; 358 return (HCURSOR) m_hIcon;
359} 359}
360 360
361int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 361int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
362{ 362{
363 if (CDialog::OnCreate(lpCreateStruct) == -1) 363 if (CDialog::OnCreate(lpCreateStruct) == -1)
364 return -1; 364 return -1;
365 365
366 if(!m_Listener.SetListen(m_bListen)) { 366 if(!m_Listener.SetListen(m_bListen)) {
367 m_bListen=FALSE; 367 m_bListen=FALSE;
368 TRACE0("Failed to create socket\n"); 368 TRACE0("Failed to create socket\n");
369 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); 369 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
370 } 370 }
371 371
372 if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){ 372 if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){
373 TRACE0("Failed to create trayer\n"); 373 TRACE0("Failed to create trayer\n");
374 return -1; 374 return -1;
375 } 375 }
376 376
377NOTIFYICONDATA nid; 377NOTIFYICONDATA nid;
378 memset(&nid,0,sizeof(nid)); 378 memset(&nid,0,sizeof(nid));
379 nid.cbSize=sizeof(nid); 379 nid.cbSize=sizeof(nid);
380 nid.hWnd=m_Trayer->m_hWnd; 380 nid.hWnd=m_Trayer->m_hWnd;
381 nid.uID=IDC_TRAYICON; 381 nid.uID=IDC_TRAYICON;
382 nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; 382 nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
383 nid.uCallbackMessage=WM_TRAYICON; 383 nid.uCallbackMessage=WM_TRAYICON;
384 nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); 384 nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
385 // *** Load from resource 385 // *** Load from resource
386 strcpy(nid.szTip,"PumpKIN"); 386 strcpy(nid.szTip,"PumpKIN");
387 VERIFY(Shell_NotifyIcon(NIM_ADD,&nid)); 387 VERIFY(Shell_NotifyIcon(NIM_ADD,&nid));
388 388
389 return 0; 389 return 0;
390} 390}
391 391
392void CListenSocket::OnReceive(int nErrorCode) 392void CListenSocket::OnReceive(int nErrorCode)
393{ 393{
394 ASSERT(m_Daddy); 394 ASSERT(m_Daddy);
395 if(nErrorCode){ 395 if(nErrorCode){
396 m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR); 396 m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR);
397 return; 397 return;
398 } 398 }
399DWORD fionread = 0; 399DWORD fionread = 0;
400 VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired 400 VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired
401tftp *tftpRQ = tftp::Allocate(fionread); 401tftp *tftpRQ = tftp::Allocate(fionread);
402 ASSERT(tftpRQ); 402 ASSERT(tftpRQ);
403SOCKADDR_IN sin; 403SOCKADDR_IN sin;
404 if(!tftpRQ->Receive(this,fionread,&sin)){ 404 if(!tftpRQ->Receive(this,fionread,&sin)){
405 m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR); 405 m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR);
406 delete tftpRQ; 406 delete tftpRQ;
407 return; 407 return;
408 } 408 }
409 #ifndefNDEBUG 409 #ifndefNDEBUG
410CString tmp; 410CString tmp;
411 tmp.Format("%u - %s - %u\n",tftpRQ->Opcode(),inet_ntoa(sin.sin_addr),sin.sin_port); 411 tmp.Format("%u - %s - %u\n",tftpRQ->Opcode(),inet_ntoa(sin.sin_addr),sin.sin_port);
412 TRACE0(tmp); 412 TRACE0(tmp);
413#endif 413#endif
414POSITION p = m_Daddy->m_Xfers.GetStartPosition(); 414POSITION p = m_Daddy->m_Xfers.GetStartPosition();
415 while(p){ 415 while(p){
416 SOCKET key; 416 SOCKET key;
417 CXferSocket *sock; 417 CXferSocket *sock;
418 m_Daddy->m_Xfers.GetNextAssoc(p,key,sock); 418 m_Daddy->m_Xfers.GetNextAssoc(p,key,sock);
419 ASSERT(sock); 419 ASSERT(sock);
420 if(sock->m_Peer.sin_addr.s_addr==sin.sin_addr.s_addr && sock->m_Peer.sin_port==sin.sin_port){ 420 if(sock->m_Peer.sin_addr.s_addr==sin.sin_addr.s_addr && sock->m_Peer.sin_port==sin.sin_port){
421 TRACE0("Ignoring request which we are already processing\n"); 421 TRACE0("Ignoring request which we are already processing\n");
422 delete tftpRQ; 422 delete tftpRQ;
423 return; 423 return;
424 } 424 }
425 } 425 }
426 switch(tftpRQ->Opcode()){ 426 switch(tftpRQ->Opcode()){
427 case tftp::opRRQ: 427 case tftp::opRRQ:
428 // Read Request 428 // Read Request
429 { 429 {
430 CString tmp; 430 CString tmp;
431 tmp.Format(IDS_LOG_RRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr)); 431 tmp.Format(IDS_LOG_RRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr));
432 m_Daddy->LogLine(tmp); 432 m_Daddy->LogLine(tmp);
433 CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); 433 CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin);
434 ASSERT(s); 434 ASSERT(s);
435 tftpRQ->GetOptions(&s->m_Options); 435 tftpRQ->GetOptions(&s->m_Options);
436 if(!s->Create()) 436 if(!s->Create())
437 s->Destroy(FALSE); 437 s->Destroy(FALSE);
438 } 438 }
439 break; 439 break;
440 case tftp::opWRQ: 440 case tftp::opWRQ:
441 // Write Request 441 // Write Request
442 { 442 {
443 CString tmp; 443 CString tmp;
444 tmp.Format(IDS_LOG_WRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr)); 444 tmp.Format(IDS_LOG_WRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr));
445 m_Daddy->LogLine(tmp); 445 m_Daddy->LogLine(tmp);
446 CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); 446 CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin);
447 ASSERT(s); 447 ASSERT(s);
448 tftpRQ->GetOptions(&s->m_Options); 448 tftpRQ->GetOptions(&s->m_Options);
449 if(!s->Create(NULL,NULL)) 449 if(!s->Create(NULL,NULL))
450 s->Destroy(FALSE); 450 s->Destroy(FALSE);
451 } 451 }
452 break; 452 break;
453 default: 453 default:
454 m_Daddy->LogLine(IDS_LOG_LISTENOPCODE); 454 m_Daddy->LogLine(IDS_LOG_LISTENOPCODE);
455 delete tftpRQ; 455 delete tftpRQ;
456 return; 456 return;
457 } 457 }
458 delete tftpRQ; 458 delete tftpRQ;
459} 459}
460 460
461BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin) 461BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin)
462{ 462{
463 ASSERT(socket); 463 ASSERT(socket);
464int saddrLen = sizeof(SOCKADDR_IN); 464int saddrLen = sizeof(SOCKADDR_IN);
465 length = sin ? 465 length = sin ?
466 socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen) 466 socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen)
467 : 467 :
468 socket->Receive(udpBase(),maxLength) 468 socket->Receive(udpBase(),maxLength)
469 ; 469 ;
470 if(!length) 470 if(!length)
471 return FALSE; 471 return FALSE;
472 if(length==(tftpLength)SOCKET_ERROR) 472 if(length==(tftpLength)SOCKET_ERROR)
473 return FALSE; 473 return FALSE;
474 return TRUE; 474 return TRUE;
475} 475}
476 476
477UINT tftp::Opcode() 477UINT tftp::Opcode()
478{ 478{
479 return REVERSEBYTES(opcode); 479 return REVERSEBYTES(opcode);
480} 480}
481 481
482CString tftp::rqFileName() 482CString tftp::rqFileName()
483{ 483{
484 ASSERT(length); 484 ASSERT(length);
485 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); 485 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ);
486CString rv; 486CString rv;
487 if(memchr(&data.m_RQ.data,0,length-sizeof(opcode))) 487 if(memchr(&data.m_RQ.data,0,length-sizeof(opcode)))
488 rv = (LPCTSTR)data.m_RQ.data; 488 rv = (LPCTSTR)data.m_RQ.data;
489 return rv; 489 return rv;
490} 490}
491 491
492CString tftp::rqType() 492CString tftp::rqType()
493{ 493{
494 ASSERT(length); 494 ASSERT(length);
495 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); 495 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ);
496CString rv; 496CString rv;
497char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); 497char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode));
498 if(tmp++) 498 if(tmp++)
499 rv = (LPCTSTR)tmp; 499 rv = (LPCTSTR)tmp;
500 return rv; 500 return rv;
501} 501}
502 502
503UINT tftp::GetOptions(tftp::tftpOptions* ops) 503UINT tftp::GetOptions(tftp::tftpOptions* ops)
504{ 504{
505 ASSERT(length); 505 ASSERT(length);
506 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK); 506 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK);
507 ASSERT(ops); 507 ASSERT(ops);
508tftpOptions& o = *ops; 508tftpOptions& o = *ops;
509LPSTR base = (LPSTR)&data.m_RQ.data; 509LPSTR base = (LPSTR)&data.m_RQ.data;
510UINT basePtr = 0; 510UINT basePtr = 0;
511 if(Opcode()==opRRQ || Opcode()==opWRQ){ 511 if(Opcode()==opRRQ || Opcode()==opWRQ){
512 base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); 512 base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode));
513 if(!base) 513 if(!base)
514 return 0; 514 return 0;
515 base++; 515 base++;
516 basePtr = (base-(LPSTR)&data.m_RQ.data); 516 basePtr = (base-(LPSTR)&data.m_RQ.data);
517 base = (LPSTR)memchr(base,0,length-basePtr); 517 base = (LPSTR)memchr(base,0,length-basePtr);
518 if(!base) 518 if(!base)
519 return 0; 519 return 0;
520 base++; 520 base++;
521 basePtr = (base-(LPSTR)&data.m_RQ.data); 521 basePtr = (base-(LPSTR)&data.m_RQ.data);
522 } 522 }
523 ops->RemoveAll(); 523 ops->RemoveAll();
524UINT rv = 0; 524UINT rv = 0;
525 while(basePtr<(length-sizeof(opcode))){ 525 while(basePtr<(length-sizeof(opcode))){
526 CString onam = (LPSTR)&data.m_RQ.data[basePtr]; 526 CString onam = (LPSTR)&data.m_RQ.data[basePtr];
527 basePtr+=onam.GetLength()+1; 527 basePtr+=onam.GetLength()+1;
528 CString oval = (LPSTR)&data.m_RQ.data[basePtr]; 528 CString oval = (LPSTR)&data.m_RQ.data[basePtr];
529 basePtr+=oval.GetLength()+1; 529 basePtr+=oval.GetLength()+1;
530 onam.MakeLower(); 530 onam.MakeLower();
531 o[onam]=oval; 531 o[onam]=oval;
532 rv++; 532 rv++;
533 } 533 }
534 return rv; 534 return rv;
535} 535}
536 536
537tftp::tftp() 537tftp::tftp()
538{ 538{
539 length=0; 539 length=0;
540} 540}
541 541
542 542
543void CXferSocket::OnSend(int nErrorCode) 543void CXferSocket::OnSend(int nErrorCode)
544{ 544{
545 if(nErrorCode){ 545 if(nErrorCode){
546 ASSERT(m_Daddy); 546 ASSERT(m_Daddy);
547 m_Daddy->LogLine(IDS_LOG_XFERSEND); 547 m_Daddy->LogLine(IDS_LOG_XFERSEND);
548 return; 548 return;
549 } 549 }
550 if(!m_Queue.IsEmpty()){ 550 if(!m_Queue.IsEmpty()){
551 tftp *p = m_Queue.GetHead(); 551 tftp *p = m_Queue.GetHead();
552 ASSERT(p); 552 ASSERT(p);
553 m_Queue.RemoveHead(); 553 m_Queue.RemoveHead();
554 if(!p->Send(this,&m_Peer)){ 554 if(!p->Send(this,&m_Peer)){
555 ASSERT(m_Daddy); 555 ASSERT(m_Daddy);
556 m_Daddy->LogLine(IDS_LOG_XFERUDPSEND); 556 m_Daddy->LogLine(IDS_LOG_XFERUDPSEND);
557 } 557 }
558 delete p; 558 delete p;
559 } 559 }
560 DoSelect(); 560 DoSelect();
561 if(m_Queue.IsEmpty()){ 561 if(m_Queue.IsEmpty()){
562 switch(state){ 562 switch(state){
563 case stateDeny: 563 case stateDeny:
564 Destroy(FALSE); 564 Destroy(FALSE);
565 break; 565 break;
566 case stateFinish: 566 case stateFinish:
567 Destroy(TRUE); 567 Destroy(TRUE);
568 break; 568 break;
569 } 569 }
570 } 570 }
571} 571}
572 572
573BOOL tftp::Send(CAsyncSocket *socket,SOCKADDR_IN* saddr) 573BOOL tftp::Send(CAsyncSocket *socket,SOCKADDR_IN* saddr)
574{ 574{
575 ASSERT(socket); 575 ASSERT(socket);
576int rv = socket->SendTo(udpBase(),length,(SOCKADDR*)saddr,sizeof(SOCKADDR_IN)); 576int rv = socket->SendTo(udpBase(),length,(SOCKADDR*)saddr,sizeof(SOCKADDR_IN));
577 if(rv!=length) 577 if(rv!=length)
578 return FALSE; 578 return FALSE;
579 return TRUE; 579 return TRUE;
580} 580}
581 581
582void CXferSocket::DoSelect() 582void CXferSocket::DoSelect(BOOL do_select)
583{ 583{
584 if(m_Peer.sin_addr.s_addr!=INADDR_NONE) 584 if(m_Peer.sin_addr.s_addr!=INADDR_NONE)
585 AsyncSelect(FD_CLOSE|FD_READ|(m_Queue.IsEmpty()?0:FD_WRITE)); 585 AsyncSelect(FD_CLOSE|FD_READ|((m_Queue.IsEmpty()&&!do_select)?0:FD_WRITE));
586} 586}
587 587
588void CXferSocket::OnReceive(int nErrorCode) 588void CXferSocket::OnReceive(int nErrorCode)
589{ 589{
590 if(nErrorCode){ 590 if(nErrorCode){
591 ASSERT(m_Daddy); 591 ASSERT(m_Daddy);
592 m_Daddy->LogLine(IDS_LOG_XFERRECEIVE); 592 m_Daddy->LogLine(IDS_LOG_XFERRECEIVE);
593 return; 593 return;
594 } 594 }
595 ASSERT(m_Daddy); 595 ASSERT(m_Daddy);
596DWORD fionread = 0; 596DWORD fionread = 0;
597 VERIFY(IOCtl(FIONREAD,&fionread)); 597 VERIFY(IOCtl(FIONREAD,&fionread));
598tftp *p = tftp::Allocate(fionread); 598tftp *p = tftp::Allocate(fionread);
599 ASSERT(p); 599 ASSERT(p);
600SOCKADDR_IN sin; 600SOCKADDR_IN sin;
601 if(!p->Receive(this,fionread,&sin)){ 601 if(!p->Receive(this,fionread,&sin)){
602 m_Daddy->LogLine(IDS_LOG_XFERUDPRECEIVE); 602 m_Daddy->LogLine(IDS_LOG_XFERUDPRECEIVE);
603 delete p; 603 delete p;
604 }else 604 }else
605 if(m_Peer.sin_addr.s_addr==INADDR_NONE){ 605 if(m_Peer.sin_addr.s_addr==INADDR_NONE){
606 m_Peer.sin_addr=sin.sin_addr; 606 m_Peer.sin_addr=sin.sin_addr;
607 m_Peer.sin_port=sin.sin_port; 607 m_Peer.sin_port=sin.sin_port;
608 } 608 }
609BOOL alive = TRUE; 609BOOL alive = TRUE;
610 if(state==stateInit){ 610 if(state==stateInit){
611 state=stateXfer; 611 state=stateXfer;
612 m_Peer.sin_port=sin.sin_port; 612 m_Peer.sin_port=sin.sin_port;
613 UpdateList(); 613 UpdateList();
614 } 614 }
615 if(sin.sin_addr.s_addr!=m_Peer.sin_addr.s_addr || sin.sin_port!=m_Peer.sin_port){ 615 if(sin.sin_addr.s_addr!=m_Peer.sin_addr.s_addr || sin.sin_port!=m_Peer.sin_port){
616 m_Daddy->LogLine(IDS_LOG_XFERSOURCETID); 616 m_Daddy->LogLine(IDS_LOG_XFERSOURCETID);
617 // *** Bounce it! 617 // *** Bounce it!
618 }else{ 618 }else{
619 alive = OnTFTP(p); 619 alive = OnTFTP(p);
620 } 620 }
621 delete p; 621 delete p;
622 if(alive){ 622 if(alive){
623 DoSelect(); 623 DoSelect();
624 ResetTimeout(); 624 ResetTimeout();
625 } 625 }
626} 626}
627 627
628void CXferSocket::SetPeer(SOCKADDR_IN *sin) 628void CXferSocket::SetPeer(SOCKADDR_IN *sin)
629{ 629{
630 ASSERT(sin); 630 ASSERT(sin);
631 memmove(&m_Peer,sin,sizeof(m_Peer)); 631 memmove(&m_Peer,sin,sizeof(m_Peer));
632} 632}
633 633
634void CXferSocket::UpdateList() 634void CXferSocket::UpdateList()
635{ 635{
636 ASSERT(m_Daddy); 636 ASSERT(m_Daddy);
637LV_FINDINFO lvf; 637LV_FINDINFO lvf;
638 memset(&lvf,0,sizeof(lvf)); 638 memset(&lvf,0,sizeof(lvf));
639 lvf.flags=LVFI_PARAM; 639 lvf.flags=LVFI_PARAM;
640 lvf.lParam=(LPARAM)this; 640 lvf.lParam=(LPARAM)this;
641int i = m_Daddy->m_List.FindItem(&lvf); 641int i = m_Daddy->m_List.FindItem(&lvf);
642 if(i<0){ 642 if(i<0){
643 ASSERT(IsKindOf(RUNTIME_CLASS(CRRQSocket)) || IsKindOf(RUNTIME_CLASS(CWRQSocket))); 643 ASSERT(IsKindOf(RUNTIME_CLASS(CRRQSocket)) || IsKindOf(RUNTIME_CLASS(CWRQSocket)));
644 i=m_Daddy->m_List.InsertItem(0,m_FileName,IsKindOf(RUNTIME_CLASS(CRRQSocket))?m_Daddy->m_iRRQ:m_Daddy->m_iWRQ); 644 i=m_Daddy->m_List.InsertItem(0,m_FileName,IsKindOf(RUNTIME_CLASS(CRRQSocket))?m_Daddy->m_iRRQ:m_Daddy->m_iWRQ);
645 ASSERT(!(i<0)); 645 ASSERT(!(i<0));
646 m_Daddy->m_List.SetItemData(i,(DWORD)this); 646 m_Daddy->m_List.SetItemData(i,(DWORD)this);
647 } 647 }
648 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemFile,m_FileName); 648 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemFile,m_FileName);
649 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemType,m_Type); 649 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemType,m_Type);
650 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemPeer,inet_ntoa(m_Peer.sin_addr)); 650 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemPeer,inet_ntoa(m_Peer.sin_addr));
651CString tmp; 651CString tmp;
652 tmp.Format(IDS_FMT_BYTES,GetACK()); 652 tmp.Format(IDS_FMT_BYTES,GetACK());
653 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemBytes,tmp); 653 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemBytes,tmp);
654 if(m_xferSize>=0){ 654 if(m_xferSize>=0){
655 tmp.Format(IDS_FMT_BYTES,m_xferSize); 655 tmp.Format(IDS_FMT_BYTES,m_xferSize);
656 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemTSize,tmp); 656 m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemTSize,tmp);
657 } 657 }
658} 658}
659 659
660CXferSocket::CXferSocket() 660CXferSocket::CXferSocket()
661 : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), 661 : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE),
662 m_blkSize(512), m_timeOut(30), m_xferSize(-1), 662 m_blkSize(512), m_timeOut(30), m_xferSize(-1),
663 m__blkSize(512), m__timeOut(30) 663 m__blkSize(512), m__timeOut(30)
664{ 664{
665 m_Daddy=NULL; 665 m_Daddy=NULL;
666 m_Peer.sin_addr.s_addr=INADDR_NONE; 666 m_Peer.sin_addr.s_addr=INADDR_NONE;
667 m_Peer.sin_family=AF_INET; 667 m_Peer.sin_family=AF_INET;
668 state=stateNone; 668 state=stateNone;
669} 669}
670 670
671ULONG CXferSocket::GetACK() 671ULONG CXferSocket::GetACK()
672{ 672{
673 return 0; 673 return 0;
674} 674}
675 675
676CXferSocket::CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin) 676CXferSocket::CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin)
677 : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), 677 : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE),
678 m_blkSize(512), m_timeOut(30), m_xferSize(-1), 678 m_blkSize(512), m_timeOut(30), m_xferSize(-1),
679 m__blkSize(512), m__timeOut(30) 679 m__blkSize(512), m__timeOut(30)
680{ 680{
681 m_Peer.sin_family=AF_INET; 681 m_Peer.sin_family=AF_INET;
682 state=stateNone; 682 state=stateNone;
683 ASSERT(daddy); 683 ASSERT(daddy);
684 m_Daddy=daddy; 684 m_Daddy=daddy;
685 m_timeOut=m__timeOut=m_Daddy->m_TFTPTimeOut.GetTotalSeconds(); 685 m_timeOut=m__timeOut=m_Daddy->m_TFTPTimeOut.GetTotalSeconds();
686 if(sin){ 686 if(sin){
687 m_Peer.sin_addr.s_addr=sin->sin_addr.s_addr; 687 m_Peer.sin_addr.s_addr=sin->sin_addr.s_addr;
688 m_Peer.sin_port=sin->sin_port; 688 m_Peer.sin_port=sin->sin_port;
689 }else 689 }else
690 m_Peer.sin_addr.s_addr=INADDR_NONE; 690 m_Peer.sin_addr.s_addr=INADDR_NONE;
691 m_FileName=fileName; 691 m_FileName=fileName;
692 m_Type=type; 692 m_Type=type;
693} 693}
694 694
695BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) 695BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName)
696{ 696{
697 if(!CAsyncSocket::Create(0,SOCK_DGRAM)) 697 if(!CAsyncSocket::Create(0,SOCK_DGRAM))
698 return FALSE; 698 return FALSE;
699 ASSERT(m_Daddy); 699 ASSERT(m_Daddy);
700 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); 700 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName);
701 m_Daddy->m_Xfers[m_hSocket]=this; 701 m_Daddy->m_Xfers[m_hSocket]=this;
702CString lFile = localFile?localFile:m_FileName; 702CString lFile = localFile?localFile:m_FileName;
703 TurnSlashes(lFile,TRUE); 703 TurnSlashes(lFile,TRUE);
704 UpdateList(); 704 UpdateList();
705 if(!localFile){// Check only for incoming requests 705 if(!localFile){// Check only for incoming requests
706 if(CheckBadRelativeness(m_FileName)){ 706 if(CheckBadRelativeness(m_FileName)){
707 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 707 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
708 return TRUE; 708 return TRUE;
709 } 709 }
710 int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opRRQ,m_Peer.sin_addr.s_addr); 710 int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opRRQ,m_Peer.sin_addr.s_addr);
711 if(atar<0) 711 if(atar<0)
712 atar = m_Daddy->m_RRQMode; 712 atar = m_Daddy->m_RRQMode;
713 switch(atar){ 713 switch(atar){
714 case CPumpKINDlg::rrqGiveAll: 714 case CPumpKINDlg::rrqGiveAll:
715 break; 715 break;
716 case CPumpKINDlg::rrqAlwaysConfirm: 716 case CPumpKINDlg::rrqAlwaysConfirm:
717 if(ConfirmRequest()) 717 if(ConfirmRequest())
718 break; 718 break;
719 default: 719 default:
720 TRACE1("Unexpected access target: %d\n",atar); 720 TRACE1("Unexpected access target: %d\n",atar);
721 case CPumpKINDlg::rrqDenyAll: 721 case CPumpKINDlg::rrqDenyAll:
722 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 722 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
723 return TRUE; 723 return TRUE;
724 } 724 }
725 } 725 }
726CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile); 726CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile);
727CFileException e; 727CFileException e;
728 if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){ 728 if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){
729 if(localFile){ 729 if(localFile){
730 CString tmp; 730 CString tmp;
731 tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn); 731 tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn);
732 m_Daddy->LogLine(tmp); 732 m_Daddy->LogLine(tmp);
733 return FALSE; 733 return FALSE;
734 } 734 }
735 Deny(&e); 735 Deny(&e);
736 return TRUE; 736 return TRUE;
737 } 737 }
738 m_xferSize=m_File.GetLength();// *** HANDLE EXCEPTION 738 m_xferSize=m_File.GetLength();// *** HANDLE EXCEPTION
739 if(hostName){ 739 if(hostName){
740 m_HostName=hostName; 740 m_HostName=hostName;
741 741
742 CString tmp; 742 CString tmp;
743 tmp.Format(IDS_LOG_SENDING,m_FileName,m_HostName); 743 tmp.Format(IDS_LOG_SENDING,m_FileName,m_HostName);
744 m_Daddy->LogLine(tmp); 744 m_Daddy->LogLine(tmp);
745 745
746 CString inAddr = hostName; 746 CString inAddr = hostName;
747 int at = inAddr.Find('@'); 747 int at = inAddr.Find('@');
748 if(at>=0) 748 if(at>=0)
749 inAddr=inAddr.Mid(at+1); 749 inAddr=inAddr.Mid(at+1);
750 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){ 750 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){
751 ASSERT(!m_wndResolver); 751 ASSERT(!m_wndResolver);
752 m_wndResolver = new CResolver(this); 752 m_wndResolver = new CResolver(this);
753 ASSERT(m_wndResolver); 753 ASSERT(m_wndResolver);
754 return m_wndResolver->Resolve(); 754 return m_wndResolver->Resolve();
755 } 755 }
756 else 756 else
757 OnHostKnown(); 757 OnHostKnown();
758 }else{ 758 }else{
759 tftp::tftpOptions o; 759 tftp::tftpOptions o;
760 CString v; 760 CString v;
761 if(m_Options.Lookup(tftpoBSize,v)){ 761 if(m_Options.Lookup(tftpoBSize,v)){
762 m__blkSize=atoi(v); 762 m__blkSize=atoi(v);
763 if(m__blkSize){ 763 if(m__blkSize){
764 m_blkSize=m__blkSize; 764 m_blkSize=m__blkSize;
765 v.Format("%u",m_blkSize); 765 v.Format("%u",m_blkSize);
766 o[tftpoBSize]=v; 766 o[tftpoBSize]=v;
767 } 767 }
768 } 768 }
769 if(m_Options.Lookup(tftpoTSize,v)){ 769 if(m_Options.Lookup(tftpoTSize,v)){
770 v.Format("%lu",m_xferSize); 770 v.Format("%lu",m_xferSize);
771 o[tftpoTSize]=v; 771 o[tftpoTSize]=v;
772 } 772 }
773 if(m_Options.Lookup(tftpoTOut,v)){ 773 if(m_Options.Lookup(tftpoTOut,v)){
774 m__timeOut=atoi(v); 774 m__timeOut=atoi(v);
775 if(m__timeOut){ 775 if(m__timeOut){
776 m_timeOut=m__timeOut; 776 m_timeOut=m__timeOut;
777 v.Format("%u",m_timeOut); 777 v.Format("%u",m_timeOut);
778 o[tftpoTOut]=v; 778 o[tftpoTOut]=v;
779 } 779 }
780 } 780 }
781 state = stateXfer; 781 state = stateXfer;
782 m_ACK=0; 782 m_ACK=0;
783 if(o.GetCount()){ 783 if(o.GetCount()){
784 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&o)); 784 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&o));
785 ASSERT(p); 785 ASSERT(p);
786 p->SetOpcode(tftp::opOACK); 786 p->SetOpcode(tftp::opOACK);
787 p->data.m_OACK.Set(&o); 787 p->data.m_OACK.Set(&o);
788 PostTFTP(p,TRUE); 788 PostTFTP(p,TRUE);
789 }else 789 }else
790 DoXfer(); 790 DoXfer();
791 } 791 }
792 return TRUE; 792 return TRUE;
793} 793}
794 794
795CRRQSocket::CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) 795CRRQSocket::CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin)
796 : CXferSocket(daddy,fileName,type,sin) 796 : CXferSocket(daddy,fileName,type,sin)
797{ 797{
798 m_ACK=0; 798 m_ACK=0;
799 m_LastSlack=0; 799 m_LastSlack=0;
800} 800}
801 801
802UINT tftp::tftpERROR::tftpSize(LPCTSTR msg) 802UINT tftp::tftpERROR::tftpSize(LPCTSTR msg)
803{ 803{
804 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpERROR::tftpErrorCode)+strlen(msg)+1; 804 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpERROR::tftpErrorCode)+strlen(msg)+1;
805} 805}
806 806
807tftp* tftp::Allocate(UINT tftpSize) 807tftp* tftp::Allocate(UINT tftpSize)
808{ 808{
809 ASSERT(tftpSize); 809 ASSERT(tftpSize);
810tftp* rv = (tftp*) new BYTE[tftpSlackSize+tftpSize]; 810tftp* rv = (tftp*) new BYTE[tftpSlackSize+tftpSize];
811 ASSERT(rv); 811 ASSERT(rv);
812 rv->length=tftpSize; 812 rv->length=tftpSize;
813 return rv; 813 return rv;
814} 814}
815 815
816void tftp::errSet(UINT code,LPCTSTR msg) 816void tftp::errSet(UINT code,LPCTSTR msg)
817{ 817{
818 ASSERT(this); 818 ASSERT(this);
819 ASSERT(length>=data.m_ERROR.tftpSize(msg)); 819 ASSERT(length>=data.m_ERROR.tftpSize(msg));
820 strcpy((char*)data.m_ERROR.data,msg); 820 strcpy((char*)data.m_ERROR.data,msg);
821 data.m_ERROR.SetCode(code); 821 data.m_ERROR.SetCode(code);
822} 822}
823 823
824void CXferSocket::PostTFTP(tftp* p,BOOL retryable) 824void CXferSocket::PostTFTP(tftp* p,BOOL retryable)
825{ 825{
826 ASSERT(p); 826 ASSERT(p);
827 m_Queue.AddTail(p); 827 m_Queue.AddTail(p);
828 DoSelect(); 828 DoSelect();
829 if(!m_bRetry){ 829 if(!m_bRetry){
830 if(retryable) 830 if(retryable)
831 SetTry(p); 831 SetTry(p);
832 else 832 else
833 SetTry(); 833 SetTry();
834 } 834 }
835 ResetTimeout(); 835 ResetTimeout();
836} 836}
837 837
838void CXferSocket::Deny(UINT errCode,UINT errID) 838void CXferSocket::Deny(UINT errCode,UINT errID)
839{ 839{
840 PostError(errCode,errID); 840 PostError(errCode,errID);
841 state=stateDeny; 841 state=stateDeny;
842} 842}
843 843
844void CRRQSocket::DoXfer() 844void CRRQSocket::DoXfer()
845{ 845{
846tftp *p = tftp::Allocate(tftp::tftpDATA::tftpSize(m_blkSize)); 846tftp *p = tftp::Allocate(tftp::tftpDATA::tftpSize(m_blkSize));
847 ASSERT(p); 847 ASSERT(p);
848 p->SetOpcode(tftp::opDATA); 848 p->SetOpcode(tftp::opDATA);
849 TRY{ 849 TRY{
850 m_File.Seek(m_ACK*m_blkSize,CFile::begin); 850 m_File.Seek(m_ACK*m_blkSize,CFile::begin);
851 int bytes = m_File.Read(p->data.m_DATA.data,m_blkSize); 851 int bytes = m_File.Read(p->data.m_DATA.data,m_blkSize);
852 p->data.m_DATA.SetBlock(m_ACK+1); 852 p->data.m_DATA.SetBlock(m_ACK+1);
853 p->length=p->length-m_blkSize+bytes; 853 p->length=p->length-m_blkSize+bytes;
854 m_LastSlack = m_blkSize-bytes; 854 m_LastSlack = m_blkSize-bytes;
855 PostTFTP(p); 855 PostTFTP(p);
856 if(bytes<m_blkSize){ 856 if(bytes<m_blkSize){
857 state=stateFinish; 857 state=stateClosing; m_ACKtoClose = m_ACK+1;
858 ASSERT(m_Daddy);
859 CString tmp;
860 tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName);
861 m_Daddy->LogLine(tmp);
862 } 858 }
863 }CATCH(CFileException,e){ 859 }CATCH(CFileException,e){
864 Deny(e); 860 Deny(e);
865 }END_CATCH 861 }END_CATCH
866} 862}
867 863
868UINT tftp::tftpDATA::tftpSize(UINT blkSize) 864UINT tftp::tftpDATA::tftpSize(UINT blkSize)
869{ 865{
870 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpDATA) 866 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpDATA)
871 -sizeof(BYTE)+blkSize; 867 -sizeof(BYTE)+blkSize;
872} 868}
873 869
874void CXferSocket::Deny(CFileException* e) 870void CXferSocket::Deny(CFileException* e)
875{ 871{
876 PostError(e); 872 PostError(e);
877 state=stateDeny; 873 state=stateDeny;
878} 874}
879 875
880void CXferSocket::PostError(UINT errCode,UINT errID) 876void CXferSocket::PostError(UINT errCode,UINT errID)
881{ 877{
882CString msg; 878CString msg;
883 msg.LoadString(errID); 879 msg.LoadString(errID);
884 ASSERT(m_Daddy); 880 ASSERT(m_Daddy);
885 /*// *** 881 /*// ***
886CString tmp; 882CString tmp;
887 tmp.Format(IDS_LOG_SENTTFTPERROR,errCode,(LPCTSTR)msg); 883 tmp.Format(IDS_LOG_SENTTFTPERROR,errCode,(LPCTSTR)msg);
888 m_Daddy->LogLine(tmp); 884 m_Daddy->LogLine(tmp);
889 */ 885 */
890tftp* err = tftp::Allocate(tftp::tftpERROR::tftpSize(msg)); 886tftp* err = tftp::Allocate(tftp::tftpERROR::tftpSize(msg));
891err->SetOpcode(tftp::opERROR); 887err->SetOpcode(tftp::opERROR);
892 err->errSet(errCode,msg); 888 err->errSet(errCode,msg);
893 PostTFTP(err); 889 PostTFTP(err);
894} 890}
895 891
896void CXferSocket::PostError(CFileException* e) 892void CXferSocket::PostError(CFileException* e)
897{ 893{
898UINT eCode; 894UINT eCode;
899UINT eMsgID; 895UINT eMsgID;
900 switch(e->m_cause){ 896 switch(e->m_cause){
901 case CFileException::fileNotFound: 897 case CFileException::fileNotFound:
902 eCode=tftp::errNotFound; 898 eCode=tftp::errNotFound;
903 eMsgID=IDS_TFTP_ERROR_NOTFOUND; 899 eMsgID=IDS_TFTP_ERROR_NOTFOUND;
904 break; 900 break;
905 case CFileException::accessDenied: 901 case CFileException::accessDenied:
906 eCode=tftp::errAccessViolation; 902 eCode=tftp::errAccessViolation;
907 eMsgID=IDS_TFTP_ERROR_ACCESS; 903 eMsgID=IDS_TFTP_ERROR_ACCESS;
908 break; 904 break;
909 case CFileException::directoryFull: 905 case CFileException::directoryFull:
910 eCode=tftp::errDiskFull; 906 eCode=tftp::errDiskFull;
911 eMsgID=IDS_TFTP_ERROR_DIRFULL; 907 eMsgID=IDS_TFTP_ERROR_DIRFULL;
912 break; 908 break;
913 case CFileException::sharingViolation: 909 case CFileException::sharingViolation:
914 eCode=tftp::errAccessViolation; 910 eCode=tftp::errAccessViolation;
915 eMsgID=IDS_TFTP_ERROR_SHARING; 911 eMsgID=IDS_TFTP_ERROR_SHARING;
916 break; 912 break;
917 case CFileException::diskFull: 913 case CFileException::diskFull:
918 eCode=tftp::errDiskFull; 914 eCode=tftp::errDiskFull;
919 eMsgID=IDS_TFTP_ERROR_DISKFULL; 915 eMsgID=IDS_TFTP_ERROR_DISKFULL;
920 break; 916 break;
921 default: 917 default:
922 eCode=tftp::errUndefined; 918 eCode=tftp::errUndefined;
923 eMsgID=IDS_TFTP_ERROR_UNDEFINED; 919 eMsgID=IDS_TFTP_ERROR_UNDEFINED;
924 break; 920 break;
925 } 921 }
926 PostError(eCode,eMsgID); 922 PostError(eCode,eMsgID);
927} 923}
928 924
929ULONG CRRQSocket::GetACK(void) 925ULONG CRRQSocket::GetACK(void)
930{ 926{
931 return (m_ACK*m_blkSize)-m_LastSlack; 927 return (m_ACK*m_blkSize)-m_LastSlack;
932} 928}
933 929
934BOOL CRRQSocket::OnTFTP(tftp* p) 930BOOL CRRQSocket::OnTFTP(tftp* p)
935{ 931{
936BOOL rv = TRUE; 932BOOL rv = TRUE;
937 switch(p->Opcode()){ 933 switch(p->Opcode()){
938 case tftp::opOACK: 934 case tftp::opOACK:
939 m_ACK=0; 935 {
940 ASSERT(state!=stateFinish); 936 m_ACK=0;
941 { 937 ASSERT(state!=stateFinish);
942 tftp::tftpOptions o; 938 tftp::tftpOptions o;
943 if(p->GetOptions(&o)){ 939 if(p->GetOptions(&o)){
944 CString v; 940 CString v;
945 if(o.Lookup(tftpoBSize,v)){ 941 if(o.Lookup(tftpoBSize,v)){
946 m_blkSize=atoi(v); 942 m_blkSize=atoi(v);
947 if(!m_blkSize){// *** More sanity checks 943 if(!m_blkSize){// *** More sanity checks
948 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); 944 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE);
949 rv = TRUE; 945 rv = TRUE;
950 break; 946 break;
947 }
951 } 948 }
952 } 949 if(o.Lookup(tftpoTOut,v)){
953 if(o.Lookup(tftpoTOut,v)){ 950 m_timeOut=atoi(v);
954 m_timeOut=atoi(v); 951 if(!m_timeOut){// *** More sanity checks
955 if(!m_timeOut){// *** More sanity checks 952 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT);
956 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); 953 rv = TRUE;
957 rv = TRUE; 954 break;
958 break; 955 }
956 }
957 if(o.Lookup(tftpoXResume,v)){
958 m_ACK=atoi(v);
959 } 959 }
960 } 960 }
961 if(o.Lookup(tftpoXResume,v)){ 961 UpdateList();
962 m_ACK=atoi(v); 962 DoXfer();
963 }
964 } 963 }
965 UpdateList();
966 DoXfer();
967 }
968 break; 964 break;
969 case tftp::opACK: 965 case tftp::opACK:
970 m_ACK=p->data.m_ACK.Block(); 966 m_ACK=p->data.m_ACK.Block();
971 if(state!=stateFinish){ 967 if(state==stateClosing && m_ACK==m_ACKtoClose) {
968 state = stateFinish;
969 ASSERT(m_Daddy);
970 CString tmp;
971 tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName);
972 m_Daddy->LogLine(tmp);
973 rv = FALSE;
974 DoSelect(TRUE);
975 }else if(state!=stateFinish){
972 UpdateList(); 976 UpdateList();
973 DoXfer(); 977 DoXfer();
974 } 978 }
975 break; 979 break;
976 case tftp::opERROR: 980 case tftp::opERROR:
977 { 981 {
978 ASSERT(m_Daddy); 982 ASSERT(m_Daddy);
979 CString tmp; 983 CString tmp;
980 tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); 984 tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage());
981 m_Daddy->LogLine(tmp); 985 m_Daddy->LogLine(tmp);
982 } 986 }
983 Destroy(FALSE); 987 Destroy(FALSE);
984 rv = FALSE; 988 rv = FALSE;
985 break; 989 break;
986 default: 990 default:
987 { 991 {
988 ASSERT(m_Daddy); 992 ASSERT(m_Daddy);
989 CString tmp; 993 CString tmp;
990 tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); 994 tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode());
991 m_Daddy->LogLine(tmp); 995 m_Daddy->LogLine(tmp);
992 // *** Self destruct maybe?? 996 // *** Self destruct maybe??
993 } 997 }
994 break; 998 break;
995 } 999 }
996 return rv; 1000 return rv;
997} 1001}
998 1002
999BOOL CWRQSocket::OnTFTP(tftp* p) 1003BOOL CWRQSocket::OnTFTP(tftp* p)
1000{ 1004{
1001 switch(p->Opcode()){ 1005 switch(p->Opcode()){
1002 case tftp::opOACK: 1006 case tftp::opOACK:
1003 ASSERT(state!=stateFinish); 1007 ASSERT(state!=stateFinish);
1004 { 1008 {
1005 if(m_bResume) 1009 if(m_bResume)
1006 m_ACK=m_File.GetLength()/m_blkSize; 1010 m_ACK=m_File.GetLength()/m_blkSize;
1007 else 1011 else
1008 m_ACK=0; 1012 m_ACK=0;
1009 tftp::tftpOptions o; 1013 tftp::tftpOptions o;
1010 if(p->GetOptions(&o)){ 1014 if(p->GetOptions(&o)){
1011 CString v; 1015 CString v;
1012 if(o.Lookup(tftpoBSize,v)){ 1016 if(o.Lookup(tftpoBSize,v)){
1013 m_blkSize=atoi(v); 1017 m_blkSize=atoi(v);
1014 if(!m_blkSize){// *** More sanity checks 1018 if(!m_blkSize){// *** More sanity checks
1015 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); 1019 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE);
1016 return TRUE; 1020 return TRUE;
1017 } 1021 }
1018 } 1022 }
1019 if(o.Lookup(tftpoTOut,v)){ 1023 if(o.Lookup(tftpoTOut,v)){
1020 m_timeOut=atoi(v); 1024 m_timeOut=atoi(v);
1021 if(!m_timeOut){// *** More sanity checks 1025 if(!m_timeOut){// *** More sanity checks
1022 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); 1026 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT);
1023 return TRUE; 1027 return TRUE;
1024 } 1028 }
1025 } 1029 }
1026 if(o.Lookup(tftpoTSize,v)){ 1030 if(o.Lookup(tftpoTSize,v)){
1027 m_xferSize=atoi(v); 1031 m_xferSize=atoi(v);
1028 } 1032 }
1029 } 1033 }
1030 UpdateList(); 1034 UpdateList();
1031 DoXfer(); 1035 DoXfer();
1032 } 1036 }
1033 break; 1037 break;
1034 case tftp::opDATA: 1038 case tftp::opDATA:
1035 { 1039 {
1036 UINTblock = p->data.m_DATA.Block(); 1040 UINTblock = p->data.m_DATA.Block();
1037 TRY{ 1041 TRY{
1038 m_File.Seek((block-1)*m_blkSize,CFile::begin); 1042 m_File.Seek((block-1)*m_blkSize,CFile::begin);
1039 int bytes = p->length-sizeof(p->data.m_DATA.block)-(tftpHdrSize-tftpSlackSize); 1043 int bytes = p->length-sizeof(p->data.m_DATA.block)-(tftpHdrSize-tftpSlackSize);
1040 if(bytes){ 1044 if(bytes){
1041 m_File.Write(p->data.m_DATA.data,bytes); 1045 m_File.Write(p->data.m_DATA.data,bytes);
1042 // *** Move to the other place where we can do it not that often 1046 // *** Move to the other place where we can do it not that often
1043 m_File.SetLength(m_File.GetPosition()); 1047 m_File.SetLength(m_File.GetPosition());
1044 } 1048 }
1045 if(bytes<m_blkSize){ 1049 if(bytes<m_blkSize){
1046 state=stateFinish; 1050 state=stateFinish;
1047 ASSERT(m_Daddy); 1051 ASSERT(m_Daddy);
1048 CString tmp; 1052 CString tmp;
1049 tmp.Format(IDS_LOG_XFERWRQFINISHED,(LPCTSTR)m_FileName); 1053 tmp.Format(IDS_LOG_XFERWRQFINISHED,(LPCTSTR)m_FileName);
1050 m_Daddy->LogLine(tmp); 1054 m_Daddy->LogLine(tmp);
1051 } 1055 }
1052 m_ACK=block; 1056 m_ACK=block;
1053 m_LastSlack=m_blkSize-bytes; 1057 m_LastSlack=m_blkSize-bytes;
1054 UpdateList(); 1058 UpdateList();
1055 DoXfer(); 1059 DoXfer();
1056 }CATCH(CFileException,e){ 1060 }CATCH(CFileException,e){
1057 Deny(e); 1061 Deny(e);
1058 }END_CATCH 1062 }END_CATCH
1059 } 1063 }
1060 break; 1064 break;
1061 case tftp::opERROR: 1065 case tftp::opERROR:
1062 { 1066 {
1063 ASSERT(m_Daddy); 1067 ASSERT(m_Daddy);
1064 CString tmp; 1068 CString tmp;
1065 tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); 1069 tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage());
1066 m_Daddy->LogLine(tmp); 1070 m_Daddy->LogLine(tmp);
1067 } 1071 }
1068 Destroy(FALSE); 1072 Destroy(FALSE);
1069 return FALSE; 1073 return FALSE;
1070 default: 1074 default:
1071 { 1075 {
1072 ASSERT(m_Daddy); 1076 ASSERT(m_Daddy);
1073 CString tmp; 1077 CString tmp;
1074 tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); 1078 tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode());
1075 m_Daddy->LogLine(tmp); 1079 m_Daddy->LogLine(tmp);
1076 // *** Self destruct maybe?? 1080 // *** Self destruct maybe??
1077 } 1081 }
1078 break; 1082 break;
1079 } 1083 }
1080 return TRUE; 1084 return TRUE;
1081} 1085}
1082 1086
1083void tftp::SetOpcode(WORD op) 1087void tftp::SetOpcode(WORD op)
1084{ 1088{
1085 opcode = REVERSEBYTES(op); 1089 opcode = REVERSEBYTES(op);
1086} 1090}
1087void tftp::tftpDATA::SetBlock(WORD b) 1091void tftp::tftpDATA::SetBlock(WORD b)
1088{ 1092{
1089 block=REVERSEBYTES(b); 1093 block=REVERSEBYTES(b);
1090} 1094}
1091WORD tftp::tftpDATA::Block() 1095WORD tftp::tftpDATA::Block()
1092{ 1096{
1093 return REVERSEBYTES(block); 1097 return REVERSEBYTES(block);
1094} 1098}
1095WORD tftp::tftpACK::Block() 1099WORD tftp::tftpACK::Block()
1096{ 1100{
1097 return REVERSEBYTES(block); 1101 return REVERSEBYTES(block);
1098} 1102}
1099void tftp::tftpACK::SetBlock(WORD b) 1103void tftp::tftpACK::SetBlock(WORD b)
1100{ 1104{
1101 block = REVERSEBYTES(b); 1105 block = REVERSEBYTES(b);
1102} 1106}
1103WORD tftp::tftpERROR::Code() 1107WORD tftp::tftpERROR::Code()
1104{ 1108{
1105 return REVERSEBYTES(code); 1109 return REVERSEBYTES(code);
1106} 1110}
1107void tftp::tftpERROR::SetCode(WORD c) 1111void tftp::tftpERROR::SetCode(WORD c)
1108{ 1112{
1109 code = REVERSEBYTES(c); 1113 code = REVERSEBYTES(c);
1110} 1114}
1111 1115
1112 1116
1113CString tftp::errMessage() 1117CString tftp::errMessage()
1114{ 1118{
1115CString rv; 1119CString rv;
1116 if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code))) 1120 if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code)))
1117 rv = (LPCTSTR)data.m_ERROR.data; 1121 rv = (LPCTSTR)data.m_ERROR.data;
1118 return rv; 1122 return rv;
1119} 1123}
1120 1124
1121void CXferSocket::Destroy(BOOL success) 1125void CXferSocket::Destroy(BOOL success)
1122{ 1126{
1123 if(m_wndResolver){ 1127 if(m_wndResolver){
1124 delete m_wndResolver; 1128 delete m_wndResolver;
1125 m_wndResolver=NULL; 1129 m_wndResolver=NULL;
1126 } 1130 }
1127 SetTry(); 1131 SetTry();
1128 m_Daddy->m_bnw.StartSound( 1132 m_Daddy->m_bnw.StartSound(
1129 success 1133 success
1130 ? m_Daddy->m_bnwSuccess 1134 ? m_Daddy->m_bnwSuccess
1131 : m_Daddy->m_bnwAbort 1135 : m_Daddy->m_bnwAbort
1132 ); 1136 );
1133 if(m_File.m_hFile!=CFile::hFileNull){ 1137 if(m_File.m_hFile!=CFile::hFileNull){
1134 TRY{ 1138 TRY{
1135 m_File.Close(); 1139 m_File.Close();
1136 }CATCH(CFileException,e){ 1140 }CATCH(CFileException,e){
1137 TRACE0("Error closing file\n"); 1141 TRACE0("Error closing file\n");
1138 }END_CATCH 1142 }END_CATCH
1139 } 1143 }
1140 ASSERT(m_Daddy); 1144 ASSERT(m_Daddy);
1141 m_Daddy->KillTimer(m_hSocket); 1145 m_Daddy->KillTimer(m_hSocket);
1142 m_Daddy->m_Xfers.RemoveKey(m_hSocket); 1146 m_Daddy->m_Xfers.RemoveKey(m_hSocket);
1143LV_FINDINFO lvf; 1147LV_FINDINFO lvf;
1144 memset(&lvf,0,sizeof(lvf)); 1148 memset(&lvf,0,sizeof(lvf));
1145 lvf.flags=LVFI_PARAM; 1149 lvf.flags=LVFI_PARAM;
1146 lvf.lParam=(LPARAM)this; 1150 lvf.lParam=(LPARAM)this;
1147int i = m_Daddy->m_List.FindItem(&lvf); 1151int i = m_Daddy->m_List.FindItem(&lvf);
1148 if(i>=0) 1152 if(i>=0)
1149 m_Daddy->m_List.DeleteItem(i); 1153 m_Daddy->m_List.DeleteItem(i);
1150 delete this; 1154 delete this;
1151} 1155}
1152 1156
1153void CPumpKINDlg::LogLineToScreen(LPCTSTR str) 1157void CPumpKINDlg::LogLineToScreen(LPCTSTR str)
1154{ 1158{
1155 ASSERT(m_LogLength); 1159 ASSERT(m_LogLength);
1156 while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ 1160 while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){
1157 CTime *t = (CTime*)m_Log.GetItemData(0); 1161 CTime *t = (CTime*)m_Log.GetItemData(0);
1158 if(((DWORD)t)!=LB_ERR){ 1162 if(((DWORD)t)!=LB_ERR){
1159 ASSERT(t); 1163 ASSERT(t);
1160 m_LogTimes.RemoveKey(t); 1164 m_LogTimes.RemoveKey(t);
1161 delete t; 1165 delete t;
1162 } 1166 }
1163 m_Log.DeleteString(0); 1167 m_Log.DeleteString(0);
1164 } 1168 }
1165int i = m_Log.AddString(str); 1169int i = m_Log.AddString(str);
1166 ASSERT(i!=LB_ERR); 1170 ASSERT(i!=LB_ERR);
1167CTime *t = new CTime(CTime::GetCurrentTime()); 1171CTime *t = new CTime(CTime::GetCurrentTime());
1168 m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t)); 1172 m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t));
1169 m_Log.SetCurSel(i); 1173 m_Log.SetCurSel(i);
1170} 1174}
1171 1175
1172void CPumpKINDlg::LogLine(UINT msgID) 1176void CPumpKINDlg::LogLine(UINT msgID)
1173{ 1177{
1174CString tmp; 1178CString tmp;
1175 tmp.Format(msgID); 1179 tmp.Format(msgID);
1176 LogLine(tmp); 1180 LogLine(tmp);
1177} 1181}
1178 1182
1179void CXferSocket::TurnSlashes(CString& fn,BOOL bBack) 1183void CXferSocket::TurnSlashes(CString& fn,BOOL bBack)
1180{ 1184{
1181 ints = fn.Find(bBack?'/':'\\'); 1185 ints = fn.Find(bBack?'/':'\\');
1182 while(s>=0){ 1186 while(s>=0){
1183 fn.SetAt(s,bBack?'\\':'/'); 1187 fn.SetAt(s,bBack?'\\':'/');
1184 s = fn.Find(bBack?'/':'\\'); 1188 s = fn.Find(bBack?'/':'\\');
1185 } 1189 }
1186} 1190}
1187 1191
1188CString CXferSocket::ApplyRoot(LPCTSTR fileName) 1192CString CXferSocket::ApplyRoot(LPCTSTR fileName)
1189{ 1193{
1190 ASSERT(m_Daddy); 1194 ASSERT(m_Daddy);
1191CString fn = fileName; 1195CString fn = fileName;
1192CString rv = m_Daddy->m_TFTPRoot; 1196CString rv = m_Daddy->m_TFTPRoot;
1193 if(rv.IsEmpty()) 1197 if(rv.IsEmpty())
1194 rv = "."; 1198 rv = ".";
1195 if(rv[rv.GetLength()-1]!='\\') 1199 if(rv[rv.GetLength()-1]!='\\')
1196 rv+="\\"; 1200 rv+="\\";
1197 while((!fn.IsEmpty()) && fn[0]=='\\') 1201 while((!fn.IsEmpty()) && fn[0]=='\\')
1198 fn=fn.Mid(1); 1202 fn=fn.Mid(1);
1199 rv+=fn; 1203 rv+=fn;
1200 return rv; 1204 return rv;
1201} 1205}
1202 1206
1203void CPumpKINDlg::OnOptions() 1207void CPumpKINDlg::OnOptions()
1204{ 1208{
1205CPropertySheet cps(IDS_TITLE_OPTIONS,this); 1209CPropertySheet cps(IDS_TITLE_OPTIONS,this);
1206CPropsServer server; 1210CPropsServer server;
1207CPropsNetwork network; 1211CPropsNetwork network;
1208CPropsSounds sounds; 1212CPropsSounds sounds;
1209CPropsACL acl; 1213CPropsACL acl;
1210 1214
1211 server.m_RRQMode=m_RRQMode; 1215 server.m_RRQMode=m_RRQMode;
1212 server.m_TFTPRoot=m_TFTPRoot; 1216 server.m_TFTPRoot=m_TFTPRoot;
1213 server.m_TFTPSubdirs=m_bTFTPSubdirs; 1217 server.m_TFTPSubdirs=m_bTFTPSubdirs;
1214 server.m_WRQMode=m_WRQMode; 1218 server.m_WRQMode=m_WRQMode;
1215 server.m_PromptTimeOut=m_PromptTimeOut; 1219 server.m_PromptTimeOut=m_PromptTimeOut;
1216 server.m_LogFile=m_LogFile; 1220 server.m_LogFile=m_LogFile;
1217 1221
1218 network.m_ListenPort=m_ListenPort; 1222 network.m_ListenPort=m_ListenPort;
1219 network.m_SpeakPort=m_SpeakPort; 1223 network.m_SpeakPort=m_SpeakPort;
1220 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); 1224 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds();
1221 network.m_BlockSize=m_BlockSize; 1225 network.m_BlockSize=m_BlockSize;
1222 1226
1223 sounds.m_Request = m_bnwRequest; 1227 sounds.m_Request = m_bnwRequest;
1224 sounds.m_Success = m_bnwSuccess; 1228 sounds.m_Success = m_bnwSuccess;
1225 sounds.m_Abort = m_bnwAbort; 1229 sounds.m_Abort = m_bnwAbort;
1226 1230
1227 acl.m_rulist = m_aclRules; 1231 acl.m_rulist = m_aclRules;
1228 1232
1229 cps.AddPage(&server); 1233 cps.AddPage(&server);
1230 cps.AddPage(&network); 1234 cps.AddPage(&network);
1231 cps.AddPage(&sounds); 1235 cps.AddPage(&sounds);
1232 cps.AddPage(&acl); 1236 cps.AddPage(&acl);
1233 if(cps.DoModal()==IDOK){ 1237 if(cps.DoModal()==IDOK){
1234 m_RRQMode=server.m_RRQMode; 1238 m_RRQMode=server.m_RRQMode;
1235 m_TFTPRoot=server.m_TFTPRoot; 1239 m_TFTPRoot=server.m_TFTPRoot;
1236 m_bTFTPSubdirs=server.m_TFTPSubdirs; 1240 m_bTFTPSubdirs=server.m_TFTPSubdirs;
1237 m_WRQMode=server.m_WRQMode; 1241 m_WRQMode=server.m_WRQMode;
1238 m_PromptTimeOut=server.m_PromptTimeOut; 1242 m_PromptTimeOut=server.m_PromptTimeOut;
1239 m_LogFile=server.m_LogFile; 1243 m_LogFile=server.m_LogFile;
1240 1244
1241 m_ListenPort=network.m_ListenPort; 1245 m_ListenPort=network.m_ListenPort;
1242 m_SpeakPort=network.m_SpeakPort; 1246 m_SpeakPort=network.m_SpeakPort;
1243 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); 1247 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut);
1244 m_BlockSize=network.m_BlockSize; 1248 m_BlockSize=network.m_BlockSize;
1245 1249
1246 m_bnwRequest = sounds.m_Request; 1250 m_bnwRequest = sounds.m_Request;
1247 m_bnwSuccess = sounds.m_Success; 1251 m_bnwSuccess = sounds.m_Success;
1248 m_bnwAbort = sounds.m_Abort; 1252 m_bnwAbort = sounds.m_Abort;
1249 1253
1250 m_aclRules = acl.m_rulist; 1254 m_aclRules = acl.m_rulist;
1251 1255
1252 m_lastlogerr.Empty(); 1256 m_lastlogerr.Empty();
1253 } 1257 }
1254} 1258}
1255 1259
1256BOOL CRRQSocket::ConfirmRequest() 1260BOOL CRRQSocket::ConfirmRequest()
1257{ 1261{
1258CConfirmRRQDlg cd(NULL); 1262CConfirmRRQDlg cd(NULL);
1259 cd.m_Daddy=this; 1263 cd.m_Daddy=this;
1260 cd.m_File=m_FileName; 1264 cd.m_File=m_FileName;
1261 cd.m_Host=inet_ntoa(m_Peer.sin_addr); 1265 cd.m_Host=inet_ntoa(m_Peer.sin_addr);
1262 if(cd.DoModal()==IDOK) 1266 if(cd.DoModal()==IDOK)
1263 return TRUE; 1267 return TRUE;
1264 return FALSE; 1268 return FALSE;
1265} 1269}
1266 1270
1267CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) 1271CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin)
1268 : CXferSocket(daddy,fileName,type,sin) 1272 : CXferSocket(daddy,fileName,type,sin)
1269{ 1273{
1270 state=stateNone; 1274 state=stateNone;
1271 m_ACK=0; 1275 m_ACK=0;
1272 m_LastSlack=0; 1276 m_LastSlack=0;
1273 m_bResume=FALSE; 1277 m_bResume=FALSE;
1274} 1278}
1275 1279
1276BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) 1280BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName)
1277{ 1281{
1278 if(!CAsyncSocket::Create(0,SOCK_DGRAM)) 1282 if(!CAsyncSocket::Create(0,SOCK_DGRAM))
1279 return FALSE; 1283 return FALSE;
1280 ASSERT(m_Daddy); 1284 ASSERT(m_Daddy);
1281 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); 1285 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName);
1282 m_Daddy->m_Xfers[m_hSocket]=this; 1286 m_Daddy->m_Xfers[m_hSocket]=this;
1283 UpdateList(); 1287 UpdateList();
1284CString lf; 1288CString lf;
1285 if(!localFile) { 1289 if(!localFile) {
1286 lf = m_FileName; 1290 lf = m_FileName;
1287 TurnSlashes(lf,TRUE); 1291 TurnSlashes(lf,TRUE);
1288 } 1292 }
1289CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); 1293CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf);
1290 if(!localFile){// This is an incoming request.. 1294 if(!localFile){// This is an incoming request..
1291 if(CheckBadRelativeness(m_FileName)){ 1295 if(CheckBadRelativeness(m_FileName)){
1292 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 1296 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
1293 return TRUE; 1297 return TRUE;
1294 } 1298 }
1295 BOOL exists; 1299 BOOL exists;
1296 if(!_access((LPCTSTR)fn,0)) 1300 if(!_access((LPCTSTR)fn,0))
1297 m_Rename=exists=TRUE; 1301 m_Rename=exists=TRUE;
1298 else 1302 else
1299 m_Rename=exists=FALSE; 1303 m_Rename=exists=FALSE;
1300 int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opWRQ,m_Peer.sin_addr.s_addr); 1304 int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opWRQ,m_Peer.sin_addr.s_addr);
1301 if(atar<0) 1305 if(atar<0)
1302 atar=m_Daddy->m_WRQMode; 1306 atar=m_Daddy->m_WRQMode;
1303 switch(atar){ 1307 switch(atar){
1304 case CPumpKINDlg::wrqTakeAll: 1308 case CPumpKINDlg::wrqTakeAll:
1305 if(exists){ 1309 if(exists){
1306 if(!RenameFile(fn)){ 1310 if(!RenameFile(fn)){
1307 Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); 1311 Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME);
1308 return TRUE; 1312 return TRUE;
1309 } 1313 }
1310 } 1314 }
1311 break; 1315 break;
1312 case CPumpKINDlg::wrqConfirmIfExists: 1316 case CPumpKINDlg::wrqConfirmIfExists:
1313 if(!exists) 1317 if(!exists)
1314 break; 1318 break;
1315 case CPumpKINDlg::wrqAlwaysConfirm: 1319 case CPumpKINDlg::wrqAlwaysConfirm:
1316 if(exists) 1320 if(exists)
1317 m_bResume=TRUE; 1321 m_bResume=TRUE;
1318 if(ConfirmRequest()){ 1322 if(ConfirmRequest()){
1319 if(m_Rename){ 1323 if(m_Rename){
1320 RenameFile(fn); 1324 RenameFile(fn);
1321 if(SaveAs(fn)) 1325 if(SaveAs(fn))
1322 break; 1326 break;
1323 }else 1327 }else
1324 break; 1328 break;
1325 } 1329 }
1326 default: 1330 default:
1327 TRACE1("Unexpected access target: %d\n",atar); 1331 TRACE1("Unexpected access target: %d\n",atar);
1328 case CPumpKINDlg::wrqDenyAll: 1332 case CPumpKINDlg::wrqDenyAll:
1329 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 1333 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
1330 return TRUE; 1334 return TRUE;
1331 } 1335 }
1332 } 1336 }
1333CFileException e; 1337CFileException e;
1334 if(!m_File.Open( 1338 if(!m_File.Open(
1335 fn, 1339 fn,
1336 m_bResume 1340 m_bResume
1337 ?(CFile::modeWrite|CFile::shareDenyWrite) 1341 ?(CFile::modeWrite|CFile::shareDenyWrite)
1338 :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), 1342 :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite),
1339 &e 1343 &e
1340 )){ 1344 )){
1341 if(localFile){// Outgoing request 1345 if(localFile){// Outgoing request
1342 CString tmp; 1346 CString tmp;
1343 tmp.Format(IDS_LOG_FAILEDTOOPEN,fn); 1347 tmp.Format(IDS_LOG_FAILEDTOOPEN,fn);
1344 m_Daddy->LogLine(tmp); 1348 m_Daddy->LogLine(tmp);
1345 return FALSE; 1349 return FALSE;
1346 }else{ 1350 }else{
1347 Deny(&e); 1351 Deny(&e);
1348 return TRUE; 1352 return TRUE;
1349 } 1353 }
1350 } 1354 }
1351 if(hostName){ 1355 if(hostName){
1352 m_HostName=hostName; 1356 m_HostName=hostName;
1353 1357
1354 CString tmp; 1358 CString tmp;
1355 tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName); 1359 tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName);
1356 m_Daddy->LogLine(tmp); 1360 m_Daddy->LogLine(tmp);
1357 1361
1358 CString inAddr = hostName; 1362 CString inAddr = hostName;
1359 int at = inAddr.Find('@'); 1363 int at = inAddr.Find('@');
1360 if(at>=0) 1364 if(at>=0)
1361 inAddr=inAddr.Mid(at+1); 1365 inAddr=inAddr.Mid(at+1);
1362 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){ 1366 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){
1363 ASSERT(!m_wndResolver); 1367 ASSERT(!m_wndResolver);
1364 m_wndResolver = new CResolver(this); 1368 m_wndResolver = new CResolver(this);
1365 ASSERT(m_wndResolver); 1369 ASSERT(m_wndResolver);
1366 return m_wndResolver->Resolve(); 1370 return m_wndResolver->Resolve();
1367 }else{ 1371 }else{
1368 OnHostKnown(); 1372 OnHostKnown();
1369 return TRUE; 1373 return TRUE;
1370 } 1374 }
1371 } 1375 }
1372CString v; 1376CString v;
1373tftp::tftpOptions oack; 1377tftp::tftpOptions oack;
1374 if(m_Options.Lookup(tftpoTSize,v)){ 1378 if(m_Options.Lookup(tftpoTSize,v)){
1375 m_xferSize=atol(v); 1379 m_xferSize=atol(v);
1376 if(!m_xferSize){ 1380 if(!m_xferSize){
1377 Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE); 1381 Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE);
1378 return TRUE; 1382 return TRUE;
1379 } 1383 }
1380 } 1384 }
1381 if(m_Options.Lookup(tftpoBSize,v)){ 1385 if(m_Options.Lookup(tftpoBSize,v)){
1382 m_blkSize=atoi(v); 1386 m_blkSize=atoi(v);
1383 if(!m_blkSize){// *** Do more about sanity check 1387 if(!m_blkSize){// *** Do more about sanity check
1384 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); 1388 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE);
1385 return TRUE; 1389 return TRUE;
1386 } 1390 }
1387 v.Format("%u",m_blkSize); 1391 v.Format("%u",m_blkSize);
1388 oack[tftpoBSize]=v; 1392 oack[tftpoBSize]=v;
1389 } 1393 }
1390 if(m_Options.Lookup(tftpoTOut,v)){ 1394 if(m_Options.Lookup(tftpoTOut,v)){
1391 m_timeOut=atoi(v); 1395 m_timeOut=atoi(v);
1392 if(!m_timeOut){// *** Do more about sanity check 1396 if(!m_timeOut){// *** Do more about sanity check
1393 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); 1397 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT);
1394 return TRUE; 1398 return TRUE;
1395 } 1399 }
1396 v.Format("%u",m_timeOut); 1400 v.Format("%u",m_timeOut);
1397 oack[tftpoTOut]=v; 1401 oack[tftpoTOut]=v;
1398 } 1402 }
1399 if(m_Options.Lookup(tftpoXResume,v) && m_bResume){ 1403 if(m_Options.Lookup(tftpoXResume,v) && m_bResume){
1400 m_ACK=m_File.GetLength()/m_blkSize; 1404 m_ACK=m_File.GetLength()/m_blkSize;
1401 v.Format("%u",m_ACK); 1405 v.Format("%u",m_ACK);
1402 oack[tftpoXResume]=v; 1406 oack[tftpoXResume]=v;
1403 }else 1407 }else
1404 m_ACK=0; 1408 m_ACK=0;
1405 state=stateXfer; 1409 state=stateXfer;
1406 if(oack.GetCount()){ 1410 if(oack.GetCount()){
1407 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack)); 1411 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack));
1408 ASSERT(p); 1412 ASSERT(p);
1409 p->SetOpcode(tftp::opOACK); 1413 p->SetOpcode(tftp::opOACK);
1410 p->data.m_OACK.Set(&oack); 1414 p->data.m_OACK.Set(&oack);
1411 PostTFTP(p,TRUE); 1415 PostTFTP(p,TRUE);
1412 }else 1416 }else
1413 DoXfer(); 1417 DoXfer();
1414 return TRUE; 1418 return TRUE;
1415} 1419}
1416 1420
1417BOOL CWRQSocket::ConfirmRequest() 1421BOOL CWRQSocket::ConfirmRequest()
1418{ 1422{
1419CConfirmWRQDlg cd(NULL); 1423CConfirmWRQDlg cd(NULL);
1420 cd.m_Daddy=this; 1424 cd.m_Daddy=this;
1421 cd.m_File=m_FileName; 1425 cd.m_File=m_FileName;
1422 cd.m_Host=inet_ntoa(m_Peer.sin_addr); 1426 cd.m_Host=inet_ntoa(m_Peer.sin_addr);
1423 switch(cd.DoModal()){ 1427 switch(cd.DoModal()){
1424 case IDOK: 1428 case IDOK:
1425 m_Rename=FALSE; 1429 m_Rename=FALSE;
1426 m_bResume=FALSE; 1430 m_bResume=FALSE;
1427 return TRUE; 1431 return TRUE;
1428 case IDC_RENAME: 1432 case IDC_RENAME:
1429 m_bResume=FALSE; 1433 m_bResume=FALSE;
1430 m_Rename=TRUE; 1434 m_Rename=TRUE;
1431 return TRUE; 1435 return TRUE;
1432 case IDC_RESUME: 1436 case IDC_RESUME:
1433 m_Rename=FALSE; 1437 m_Rename=FALSE;
1434 m_bResume=TRUE; 1438 m_bResume=TRUE;
1435 return TRUE; 1439 return TRUE;
1436 case IDCANCEL: 1440 case IDCANCEL:
1437 return FALSE; 1441 return FALSE;
1438 } 1442 }
1439 return FALSE; 1443 return FALSE;
1440} 1444}
1441 1445
1442BOOL CWRQSocket::RenameFile(CString& fn) 1446BOOL CWRQSocket::RenameFile(CString& fn)
1443{ 1447{
1444CString renamed = fn; 1448CString renamed = fn;
1445 if(fn.IsEmpty()) 1449 if(fn.IsEmpty())
1446 return FALSE; 1450 return FALSE;
1447 if(fn[fn.GetLength()-1]==')'){ 1451 if(fn[fn.GetLength()-1]==')'){
1448 int op = fn.ReverseFind('('); 1452 int op = fn.ReverseFind('(');
1449 if(op>0 && fn[op-1]==' '){ 1453 if(op>0 && fn[op-1]==' '){
1450 if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty()) 1454 if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty())
1451 renamed = renamed.Left(op-1); 1455 renamed = renamed.Left(op-1);
1452 } 1456 }
1453 } 1457 }
1454CString testFN; 1458CString testFN;
1455 for(UINT tmp=0;tmp<32768;tmp++){ 1459 for(UINT tmp=0;tmp<32768;tmp++){
1456 testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp); 1460 testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp);
1457 if(!_access((LPCTSTR)testFN,0)) 1461 if(!_access((LPCTSTR)testFN,0))
1458 continue; 1462 continue;
1459 fn=testFN; 1463 fn=testFN;
1460 return TRUE; 1464 return TRUE;
1461 } 1465 }
1462 return FALSE; 1466 return FALSE;
1463} 1467}
1464 1468
1465BOOL CWRQSocket::SaveAs(CString& fn) 1469BOOL CWRQSocket::SaveAs(CString& fn)
1466{ 1470{
1467CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy); 1471CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy);
1468CString title; 1472CString title;
1469 title.LoadString(IDS_RENAME_TITLE); 1473 title.LoadString(IDS_RENAME_TITLE);
1470 cfd.m_ofn.lpstrTitle=(LPCTSTR)title; 1474 cfd.m_ofn.lpstrTitle=(LPCTSTR)title;
1471 if(cfd.DoModal()!=IDOK) 1475 if(cfd.DoModal()!=IDOK)
1472 return FALSE; 1476 return FALSE;
1473 fn = cfd.GetPathName(); 1477 fn = cfd.GetPathName();
1474 return TRUE; 1478 return TRUE;
1475} 1479}
1476 1480
1477void CWRQSocket::DoXfer() 1481void CWRQSocket::DoXfer()
1478{ 1482{
1479tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize()); 1483tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize());
1480 ASSERT(p); 1484 ASSERT(p);
1481 p->SetOpcode(tftp::opACK); 1485 p->SetOpcode(tftp::opACK);
1482 p->data.m_ACK.SetBlock(m_ACK); 1486 p->data.m_ACK.SetBlock(m_ACK);
1483 TRACE1("WRQ-ACK-%u\n",m_ACK); 1487 TRACE1("WRQ-ACK-%u\n",m_ACK);
1484 PostTFTP(p,TRUE);// *** ??? Hope this is right 1488 PostTFTP(p,TRUE);// *** ??? Hope this is right
1485} 1489}
1486 1490
1487UINT tftp::tftpACK::tftpSize() 1491UINT tftp::tftpACK::tftpSize()
1488{ 1492{
1489 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpACK); 1493 return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpACK);
1490} 1494}
1491 1495
1492ULONG CWRQSocket::GetACK() 1496ULONG CWRQSocket::GetACK()
1493{ 1497{
1494 return (m_ACK*m_blkSize)-m_LastSlack; 1498 return (m_ACK*m_blkSize)-m_LastSlack;
1495} 1499}
1496 1500
1497void CXferSocket::ResetTimeout() 1501void CXferSocket::ResetTimeout()
1498{ 1502{
1499 ASSERT(m_Daddy); 1503 ASSERT(m_Daddy);
1500 m_Daddy->m_Retrier->KillTimer(m_hSocket); 1504 m_Daddy->m_Retrier->KillTimer(m_hSocket);
1501 if(m_Retry) 1505 if(m_Retry)
1502 m_Daddy->m_Retrier->SetTimer(m_hSocket,min(60,m_Daddy->m_RetryTimeOut.GetTotalSeconds())*1000,NULL); 1506 m_Daddy->m_Retrier->SetTimer(m_hSocket,min(60,m_Daddy->m_RetryTimeOut.GetTotalSeconds())*1000,NULL);
1503 if(!m_bRetry){ 1507 if(!m_bRetry){
1504 m_Daddy->KillTimer(m_hSocket); 1508 m_Daddy->KillTimer(m_hSocket);
1505 m_Daddy->SetTimer(m_hSocket,min(60,m_timeOut)*1000,NULL); 1509 m_Daddy->SetTimer(m_hSocket,min(60,m_timeOut)*1000,NULL);
1506 } 1510 }
1507} 1511}
1508 1512
1509void CXferSocket::Abort() 1513void CXferSocket::Abort()
1510{ 1514{
1511 ASSERT(m_Daddy); 1515 ASSERT(m_Daddy);
1512CString tmp; 1516CString tmp;
1513 tmp.Format(IDS_LOG_XFERABORTED,(LPCTSTR)m_FileName); 1517 tmp.Format(IDS_LOG_XFERABORTED,(LPCTSTR)m_FileName);
1514 m_Daddy->LogLine(tmp); 1518 m_Daddy->LogLine(tmp);
1515 Destroy(FALSE); 1519 Destroy(FALSE);
1516} 1520}
1517 1521
1518void CPumpKINDlg::OnTimer(UINT nIDEvent) 1522void CPumpKINDlg::OnTimer(UINT nIDEvent)
1519{ 1523{
1520CXferSocket *socket; 1524CXferSocket *socket;
1521 if(m_Xfers.Lookup(nIDEvent,socket)){ 1525 if(m_Xfers.Lookup(nIDEvent,socket)){
1522 CString tmp; 1526 CString tmp;
1523 tmp.Format(IDS_LOG_TIMEDOUT,socket->m_FileName); 1527 tmp.Format(IDS_LOG_TIMEDOUT,socket->m_FileName);
1524 LogLine(tmp); 1528 LogLine(tmp);
1525 socket->Abort(); 1529 socket->Abort();
1526 }else{ 1530 }else{
1527 TRACE0("Failed to find timed out socket!\n"); 1531 TRACE0("Failed to find timed out socket!\n");
1528 } 1532 }
1529 CDialog::OnTimer(nIDEvent); 1533 CDialog::OnTimer(nIDEvent);
1530} 1534}
1531 1535
1532void CPumpKINDlg::OnExit() 1536void CPumpKINDlg::OnExit()
1533{ 1537{
1534 if(!m_Xfers.IsEmpty()){ 1538 if(!m_Xfers.IsEmpty()){
1535 CString title,text; 1539 CString title,text;
1536 title.LoadString(IDS_CONFIRMEXIT_TITLE); 1540 title.LoadString(IDS_CONFIRMEXIT_TITLE);
1537 text.LoadString(IDS_CONFIRMEXIT_TEXT); 1541 text.LoadString(IDS_CONFIRMEXIT_TEXT);
1538 if(MessageBox(text,title,MB_ICONQUESTION|MB_YESNO)!=IDYES) 1542 if(MessageBox(text,title,MB_ICONQUESTION|MB_YESNO)!=IDYES)
1539 return; 1543 return;
1540 } 1544 }
1541 m_bExiting=TRUE; 1545 m_bExiting=TRUE;
1542 EndDialog(IDOK); 1546 EndDialog(IDOK);
1543} 1547}
1544 1548
1545void CPumpKINDlg::OnPut() 1549void CPumpKINDlg::OnPut()
1546{ 1550{
1547CRequestDlg crd(NULL); 1551CRequestDlg crd(NULL);
1548 crd.m_Put=TRUE; 1552 crd.m_Put=TRUE;
1549 crd.m_BSize=m_BlockSize; 1553 crd.m_BSize=m_BlockSize;
1550 if(crd.DoModal()==IDOK){ 1554 if(crd.DoModal()==IDOK){
1551 CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); 1555 CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL);
1552 if(crd.m_BSize) 1556 if(crd.m_BSize)
1553 socket->m__blkSize=crd.m_BSize; 1557 socket->m__blkSize=crd.m_BSize;
1554 if(!socket->Create(crd.m_LocalFile,crd.m_Host)) 1558 if(!socket->Create(crd.m_LocalFile,crd.m_Host))
1555 socket->Destroy(); 1559 socket->Destroy();
1556 } 1560 }
1557} 1561}
1558 1562
1559void CPumpKINDlg::OnGet() 1563void CPumpKINDlg::OnGet()
1560{ 1564{
1561CRequestDlg crd(NULL); 1565CRequestDlg crd(NULL);
1562 crd.m_Put=FALSE; 1566 crd.m_Put=FALSE;
1563 crd.m_BSize=m_BlockSize; 1567 crd.m_BSize=m_BlockSize;
1564 if(crd.DoModal()==IDOK){ 1568 if(crd.DoModal()==IDOK){
1565 CWRQSocket *socket = new CWRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); 1569 CWRQSocket *socket = new CWRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL);
1566 if(crd.m_BSize) 1570 if(crd.m_BSize)
1567 socket->m__blkSize=crd.m_BSize; 1571 socket->m__blkSize=crd.m_BSize;
1568 if(!socket->Create(crd.m_LocalFile,crd.m_Host)) 1572 if(!socket->Create(crd.m_LocalFile,crd.m_Host))
1569 socket->Destroy(); 1573 socket->Destroy();
1570 } 1574 }
1571} 1575}
1572 1576
1573void CPumpKINDlg::SetupButtons() 1577void CPumpKINDlg::SetupButtons()
1574{ 1578{
1575 m_AbortCtl.EnableWindow(m_List.GetSelectedCount()>0); 1579 m_AbortCtl.EnableWindow(m_List.GetSelectedCount()>0);
1576} 1580}
1577 1581
1578void CPumpKINDlg::OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult) 1582void CPumpKINDlg::OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult)
1579{ 1583{
1580 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 1584 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
1581 SetupButtons(); 1585 SetupButtons();
1582 *pResult = 0; 1586 *pResult = 0;
1583} 1587}
1584 1588
1585void CPumpKINDlg::OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult) 1589void CPumpKINDlg::OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult)
1586{ 1590{
1587 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 1591 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
1588 SetupButtons(); 1592 SetupButtons();
1589 *pResult = 0; 1593 *pResult = 0;
1590} 1594}
1591 1595
1592void CPumpKINDlg::OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult) 1596void CPumpKINDlg::OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult)
1593{ 1597{
1594 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 1598 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
1595 SetupButtons(); 1599 SetupButtons();
1596 *pResult = 0; 1600 *pResult = 0;
1597} 1601}
1598 1602
1599void CPumpKINDlg::OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult) 1603void CPumpKINDlg::OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult)
1600{ 1604{
1601 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 1605 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
1602 SetupButtons(); 1606 SetupButtons();
1603 *pResult = 0; 1607 *pResult = 0;
1604} 1608}
1605 1609
1606void CPumpKINDlg::OnAbort() 1610void CPumpKINDlg::OnAbort()
1607{ 1611{
1608 if(!m_List.GetSelectedCount()) 1612 if(!m_List.GetSelectedCount())
1609 return; 1613 return;
1610 intitems = m_List.GetItemCount(); 1614 intitems = m_List.GetItemCount();
1611 for(int tmp=0;tmp<items;tmp++){ 1615 for(int tmp=0;tmp<items;tmp++){
1612 if(!(m_List.GetItemState(tmp,LVIS_SELECTED)&LVIS_SELECTED)) 1616 if(!(m_List.GetItemState(tmp,LVIS_SELECTED)&LVIS_SELECTED))
1613 continue; 1617 continue;
1614 CXferSocket *xfer = (CXferSocket*) m_List.GetItemData(tmp); 1618 CXferSocket *xfer = (CXferSocket*) m_List.GetItemData(tmp);
1615 ASSERT(xfer); 1619 ASSERT(xfer);
1616 xfer->Abort(); 1620 xfer->Abort();
1617 } 1621 }
1618} 1622}
1619 1623
1620void CXferSocket::OnFailedToResolve() 1624void CXferSocket::OnFailedToResolve()
1621{ 1625{
1622 TRACE0("Resolve failed\n"); 1626 TRACE0("Resolve failed\n");
1623 delete m_wndResolver; 1627 delete m_wndResolver;
1624 m_wndResolver=NULL; 1628 m_wndResolver=NULL;
1625 ASSERT(m_Daddy); 1629 ASSERT(m_Daddy);
1626CString tmp; 1630CString tmp;
1627 tmp.Format(IDS_LOG_RESOLVEFAILED,m_HostName); 1631 tmp.Format(IDS_LOG_RESOLVEFAILED,m_HostName);
1628 m_Daddy->LogLine(tmp); 1632 m_Daddy->LogLine(tmp);
1629 Abort(); 1633 Abort();
1630} 1634}
1631 1635
1632void CXferSocket::OnResolved() 1636void CXferSocket::OnResolved()
1633{ 1637{
1634 delete m_wndResolver; 1638 delete m_wndResolver;
1635 m_wndResolver=NULL; 1639 m_wndResolver=NULL;
1636 TRACE0("Resolved\n"); 1640 TRACE0("Resolved\n");
1637 m_Peer.sin_addr.s_addr = *(DWORD*)(((hostent*)m_ResolveBuff)->h_addr); 1641 m_Peer.sin_addr.s_addr = *(DWORD*)(((hostent*)m_ResolveBuff)->h_addr);
1638} 1642}
1639 1643
1640void CRRQSocket::OnResolved() 1644void CRRQSocket::OnResolved()
1641{ 1645{
1642 CXferSocket::OnResolved(); 1646 CXferSocket::OnResolved();
1643 OnHostKnown(); 1647 OnHostKnown();
1644} 1648}
1645 1649
1646void CRRQSocket::OnHostKnown() 1650void CRRQSocket::OnHostKnown()
1647{ 1651{
1648 ASSERT(m_Daddy); 1652 ASSERT(m_Daddy);
1649 m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); 1653 m_Peer.sin_port=htons(m_Daddy->m_SpeakPort);
1650tftp::tftpOptions o; 1654tftp::tftpOptions o;
1651CString v; 1655CString v;
1652 ASSERT(m_xferSize>=0); 1656 ASSERT(m_xferSize>=0);
1653 v.Format("%lu",m_xferSize); 1657 v.Format("%lu",m_xferSize);
1654 o[tftpoTSize] = v; 1658 o[tftpoTSize] = v;
1655 ASSERT(m__blkSize); 1659 ASSERT(m__blkSize);
1656 v.Format("%u",m__blkSize); 1660 v.Format("%u",m__blkSize);
1657 o[tftpoBSize] = v; 1661 o[tftpoBSize] = v;
1658 ASSERT(m__timeOut); 1662 ASSERT(m__timeOut);
1659 v.Format("%u",m__timeOut); 1663 v.Format("%u",m__timeOut);
1660 o[tftpoTOut] = v; 1664 o[tftpoTOut] = v;
1661 o[tftpoXResume] = "0"; 1665 o[tftpoXResume] = "0";
1662 tftp*p = tftp::Allocate(tftp::tftpWRQ::tftpSize(m_FileName,m_Type,&o)); 1666 tftp*p = tftp::Allocate(tftp::tftpWRQ::tftpSize(m_FileName,m_Type,&o));
1663 ASSERT(p); 1667 ASSERT(p);
1664 p->SetOpcode(tftp::opWRQ); 1668 p->SetOpcode(tftp::opWRQ);
1665 p->data.m_WRQ.Set(m_FileName,m_Type,&o); 1669 p->data.m_WRQ.Set(m_FileName,m_Type,&o);
1666 PostTFTP(p,TRUE); 1670 PostTFTP(p,TRUE);
1667 state=stateInit; 1671 state=stateInit;
1668 UpdateList(); 1672 UpdateList();
1669} 1673}
1670 1674
1671UINT tftp::tftpRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1675UINT tftp::tftpRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1672{ 1676{
1673UINT rv = tftpHdrSize-tftpSlackSize+strlen(file)+1+strlen(type)+1; 1677UINT rv = tftpHdrSize-tftpSlackSize+strlen(file)+1+strlen(type)+1;
1674 if(ops){ 1678 if(ops){
1675 tftpOptions& o = *ops; 1679 tftpOptions& o = *ops;
1676 POSITION p = o.GetStartPosition(); 1680 POSITION p = o.GetStartPosition();
1677 while(p){ 1681 while(p){
1678 CString n,v; 1682 CString n,v;
1679 o.GetNextAssoc(p,n,v); 1683 o.GetNextAssoc(p,n,v);
1680 rv+=n.GetLength()+1+v.GetLength()+1; 1684 rv+=n.GetLength()+1+v.GetLength()+1;
1681 } 1685 }
1682 } 1686 }
1683 return rv; 1687 return rv;
1684} 1688}
1685UINT tftp::tftpRRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1689UINT tftp::tftpRRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1686{ 1690{
1687 return tftp::tftpRQ::tftpSize(file,type,ops); 1691 return tftp::tftpRQ::tftpSize(file,type,ops);
1688} 1692}
1689UINT tftp::tftpWRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1693UINT tftp::tftpWRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1690{ 1694{
1691 return tftp::tftpRQ::tftpSize(file,type,ops); 1695 return tftp::tftpRQ::tftpSize(file,type,ops);
1692} 1696}
1693UINT tftp::tftpOACK::tftpSize(tftp::tftpOptions* ops) 1697UINT tftp::tftpOACK::tftpSize(tftp::tftpOptions* ops)
1694{ 1698{
1695UINT rv = tftpHdrSize-tftpSlackSize; 1699UINT rv = tftpHdrSize-tftpSlackSize;
1696 if(ops){ 1700 if(ops){
1697 tftpOptions& o = *ops; 1701 tftpOptions& o = *ops;
1698 POSITION p = o.GetStartPosition(); 1702 POSITION p = o.GetStartPosition();
1699 while(p){ 1703 while(p){
1700 CString n,v; 1704 CString n,v;
1701 o.GetNextAssoc(p,n,v); 1705 o.GetNextAssoc(p,n,v);
1702 rv+=n.GetLength()+1+v.GetLength()+1; 1706 rv+=n.GetLength()+1+v.GetLength()+1;
1703 } 1707 }
1704 } 1708 }
1705 return rv; 1709 return rv;
1706} 1710}
1707void tftp::tftpRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1711void tftp::tftpRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1708{ 1712{
1709 // MAY BE DANGEROUS! 1713 // MAY BE DANGEROUS!
1710UINT ptr = 0; 1714UINT ptr = 0;
1711 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; 1715 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1;
1712 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; 1716 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1;
1713 if(ops){ 1717 if(ops){
1714 tftpOptions& o = *ops; 1718 tftpOptions& o = *ops;
1715 POSITION p = o.GetStartPosition(); 1719 POSITION p = o.GetStartPosition();
1716 while(p){ 1720 while(p){
1717 CString n,v; 1721 CString n,v;
1718 o.GetNextAssoc(p,n,v); 1722 o.GetNextAssoc(p,n,v);
1719 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; 1723 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1;
1720 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; 1724 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1;
1721 } 1725 }
1722 } 1726 }
1723} 1727}
1724void tftp::tftpRRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1728void tftp::tftpRRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1725{ 1729{
1726 // MAY BE DANGEROUS! 1730 // MAY BE DANGEROUS!
1727UINT ptr = 0; 1731UINT ptr = 0;
1728 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; 1732 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1;
1729 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; 1733 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1;
1730 if(ops){ 1734 if(ops){
1731 tftpOptions& o = *ops; 1735 tftpOptions& o = *ops;
1732 POSITION p = o.GetStartPosition(); 1736 POSITION p = o.GetStartPosition();
1733 while(p){ 1737 while(p){
1734 CString n,v; 1738 CString n,v;
1735 o.GetNextAssoc(p,n,v); 1739 o.GetNextAssoc(p,n,v);
1736 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; 1740 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1;
1737 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; 1741 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1;
1738 } 1742 }
1739 } 1743 }
1740} 1744}
1741void tftp::tftpWRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) 1745void tftp::tftpWRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops)
1742{ 1746{
1743 // MAY BE DANGEROUS! 1747 // MAY BE DANGEROUS!
1744UINT ptr = 0; 1748UINT ptr = 0;
1745 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; 1749 strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1;
1746 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; 1750 strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1;
1747 if(ops){ 1751 if(ops){
1748 tftpOptions& o = *ops; 1752 tftpOptions& o = *ops;
1749 POSITION p = o.GetStartPosition(); 1753 POSITION p = o.GetStartPosition();
1750 while(p){ 1754 while(p){
1751 CString n,v; 1755 CString n,v;
1752 o.GetNextAssoc(p,n,v); 1756 o.GetNextAssoc(p,n,v);
1753 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; 1757 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1;
1754 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; 1758 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1;
1755 } 1759 }
1756 } 1760 }
1757} 1761}
1758void tftp::tftpOACK::Set(tftpOptions* ops) 1762void tftp::tftpOACK::Set(tftpOptions* ops)
1759{ 1763{
1760 ASSERT(ops); 1764 ASSERT(ops);
1761UINT ptr = 0; 1765UINT ptr = 0;
1762tftpOptions& o = *ops; 1766tftpOptions& o = *ops;
1763POSITION p = o.GetStartPosition(); 1767POSITION p = o.GetStartPosition();
1764 while(p){ 1768 while(p){
1765 CString n,v; 1769 CString n,v;
1766 o.GetNextAssoc(p,n,v); 1770 o.GetNextAssoc(p,n,v);
1767 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; 1771 strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1;
1768 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; 1772 strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1;
1769 } 1773 }
1770} 1774}
1771 1775
1772void CWRQSocket::OnResolved() 1776void CWRQSocket::OnResolved()
1773{ 1777{
1774 CXferSocket::OnResolved(); 1778 CXferSocket::OnResolved();
1775 OnHostKnown(); 1779 OnHostKnown();
1776} 1780}
1777 1781
1778void CWRQSocket::OnHostKnown() 1782void CWRQSocket::OnHostKnown()
1779{ 1783{
1780 ASSERT(m_Daddy); 1784 ASSERT(m_Daddy);
1781 m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); 1785 m_Peer.sin_port=htons(m_Daddy->m_SpeakPort);
1782tftp::tftpOptions o; 1786tftp::tftpOptions o;
1783CString v; 1787CString v;
1784 o[tftpoTSize]="0"; 1788 o[tftpoTSize]="0";
1785 if(m__blkSize){ 1789 if(m__blkSize){
1786 v.Format("%u",m__blkSize); 1790 v.Format("%u",m__blkSize);
1787 o[tftpoBSize]=v; 1791 o[tftpoBSize]=v;
1788 } 1792 }
1789 if(m__timeOut){ 1793 if(m__timeOut){
1790 v.Format("%u",m__timeOut); 1794 v.Format("%u",m__timeOut);
1791 o[tftpoTOut]=v; 1795 o[tftpoTOut]=v;
1792 } 1796 }
1793 tftp*p = tftp::Allocate(tftp::tftpRRQ::tftpSize(m_FileName,m_Type,&o)); 1797 tftp*p = tftp::Allocate(tftp::tftpRRQ::tftpSize(m_FileName,m_Type,&o));
1794 ASSERT(p); 1798 ASSERT(p);
1795 p->SetOpcode(tftp::opRRQ); 1799 p->SetOpcode(tftp::opRRQ);
1796 p->data.m_RRQ.Set(m_FileName,m_Type,&o); 1800 p->data.m_RRQ.Set(m_FileName,m_Type,&o);
1797 PostTFTP(p,TRUE); 1801 PostTFTP(p,TRUE);
1798 state=stateInit; 1802 state=stateInit;
1799 UpdateList(); 1803 UpdateList();
1800} 1804}
1801 1805
1802void CPumpKINDlg::OnClose() 1806void CPumpKINDlg::OnClose()
1803{ 1807{
1804 OnTrayShowpumpkinwindow(); 1808 OnTrayShowpumpkinwindow();
1805} 1809}
1806 1810
1807void CPumpKINDlg::OnTrayShowpumpkinwindow() 1811void CPumpKINDlg::OnTrayShowpumpkinwindow()
1808{ 1812{
1809 if(IsWindowVisible()){ 1813 if(IsWindowVisible()){
1810 m_bShown=FALSE; 1814 m_bShown=FALSE;
1811 ShowWindow(SW_HIDE); 1815 ShowWindow(SW_HIDE);
1812 }else{ 1816 }else{
1813 m_bShown=TRUE; 1817 m_bShown=TRUE;
1814 ShowWindow(SW_SHOW); 1818 ShowWindow(SW_SHOW);
1815 SetForegroundWindow(); 1819 SetForegroundWindow();
1816 SetFocus(); 1820 SetFocus();
1817 } 1821 }
1818} 1822}
1819 1823
1820void CPumpKINDlg::OnTrayExit() 1824void CPumpKINDlg::OnTrayExit()
1821{ 1825{
1822 OnExit(); 1826 OnExit();
1823} 1827}
1824 1828
1825void CPumpKINDlg::OnTrayAboutpumpkin() 1829void CPumpKINDlg::OnTrayAboutpumpkin()
1826{ 1830{
1827CAboutDlg dlgAbout; 1831CAboutDlg dlgAbout;
1828 dlgAbout.DoModal(); 1832 dlgAbout.DoModal();
1829} 1833}
1830 1834
1831void CPumpKINDlg::OnTrayFetchfile() 1835void CPumpKINDlg::OnTrayFetchfile()
1832{ 1836{
1833 OnGet(); 1837 OnGet();
1834} 1838}
1835 1839
1836void CPumpKINDlg::OnTrayHelp() 1840void CPumpKINDlg::OnTrayHelp()
1837{ 1841{
1838 OnHelp(); 1842 OnHelp();
1839} 1843}
1840 1844
1841void CPumpKINDlg::OnTrayOptions() 1845void CPumpKINDlg::OnTrayOptions()
1842{ 1846{
1843 OnOptions(); 1847 OnOptions();
1844} 1848}
1845 1849
1846void CPumpKINDlg::OnTraySendfile() 1850void CPumpKINDlg::OnTraySendfile()
1847{ 1851{
1848 OnPut(); 1852 OnPut();
1849} 1853}
1850 1854
1851void CPumpKINDlg::LoadSettings() 1855void CPumpKINDlg::LoadSettings()
1852{ 1856{
1853CWinApp *app = AfxGetApp(); 1857CWinApp *app = AfxGetApp();
1854 ASSERT(app); 1858 ASSERT(app);
1855 m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen); 1859 m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen);
1856 m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); 1860 m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest);
1857 m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); 1861 m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess);
1858 m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); 1862 m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort);
1859 m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); 1863 m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs);
1860 m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); 1864 m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort);
1861 m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); 1865 m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength);
1862 m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); 1866 m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut);
1863 m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); 1867 m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode);
1864 m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); 1868 m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort);
1865 m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); 1869 m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot);
1866 m_LogFile=app->GetProfileString("General","LogFile",m_LogFile); 1870 m_LogFile=app->GetProfileString("General","LogFile",m_LogFile);
1867 m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); 1871 m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()));
1868 m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); 1872 m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize);
1869 m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); 1873 m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()));
1870 m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); 1874 m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode);
1871 m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); 1875 m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown);
1872 if(m_TFTPRoot.IsEmpty()){ 1876 if(m_TFTPRoot.IsEmpty()){
1873 DWORD dL = ::GetCurrentDirectory(0,NULL); 1877 DWORD dL = ::GetCurrentDirectory(0,NULL);
1874 VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); 1878 VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL)));
1875 m_TFTPRoot.ReleaseBuffer(); 1879 m_TFTPRoot.ReleaseBuffer();
1876 } 1880 }
1877 ::SetCurrentDirectory(m_TFTPRoot); 1881 ::SetCurrentDirectory(m_TFTPRoot);
1878 m_aclRules.LoadProfile(app); 1882 m_aclRules.LoadProfile(app);
1879} 1883}
1880 1884
1881void CPumpKINDlg::SaveSettings() 1885void CPumpKINDlg::SaveSettings()
1882{ 1886{
1883CWinApp *app = AfxGetApp(); 1887CWinApp *app = AfxGetApp();
1884 ASSERT(app); 1888 ASSERT(app);
1885 app->WriteProfileInt("TFTPSettings","Listen",m_bListen); 1889 app->WriteProfileInt("TFTPSettings","Listen",m_bListen);
1886 app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); 1890 app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest);
1887 app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); 1891 app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess);
1888 app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); 1892 app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort);
1889 app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); 1893 app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs);
1890 app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); 1894 app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort);
1891 app->WriteProfileInt("UISettings","LogLength",m_LogLength); 1895 app->WriteProfileInt("UISettings","LogLength",m_LogLength);
1892 app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); 1896 app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut);
1893 app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); 1897 app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode);
1894 app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); 1898 app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort);
1895 app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); 1899 app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot);
1896 app->WriteProfileString("General","LogFile",m_LogFile); 1900 app->WriteProfileString("General","LogFile",m_LogFile);
1897 app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); 1901 app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds());
1898 app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); 1902 app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize);
1899 app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); 1903 app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds());
1900 app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); 1904 app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode);
1901 app->WriteProfileInt("UISettings","Visble",m_bShown); 1905 app->WriteProfileInt("UISettings","Visble",m_bShown);
1902 m_aclRules.SaveProfile(app); 1906 m_aclRules.SaveProfile(app);
1903} 1907}
1904 1908
1905void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 1909void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
1906{ 1910{
1907 CDialog::OnWindowPosChanging(lpwndpos); 1911 CDialog::OnWindowPosChanging(lpwndpos);
1908 if(!m_bExiting){ 1912 if(!m_bExiting){
1909 if(m_bShown){ 1913 if(m_bShown){
1910 lpwndpos->flags&=~SWP_HIDEWINDOW; 1914 lpwndpos->flags&=~SWP_HIDEWINDOW;
1911 lpwndpos->flags|=SWP_SHOWWINDOW; 1915 lpwndpos->flags|=SWP_SHOWWINDOW;
1912 }else{ 1916 }else{
1913 lpwndpos->flags&=~SWP_SHOWWINDOW; 1917 lpwndpos->flags&=~SWP_SHOWWINDOW;
1914 lpwndpos->flags|=SWP_HIDEWINDOW; 1918 lpwndpos->flags|=SWP_HIDEWINDOW;
1915 if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu)) 1919 if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu))
1916 GetDesktopWindow()->SetForegroundWindow(); 1920 GetDesktopWindow()->SetForegroundWindow();
1917 } 1921 }
1918 } 1922 }
1919} 1923}
1920 1924
1921CString CXferSocket::ApplyRootGently(LPCTSTR fn) 1925CString CXferSocket::ApplyRootGently(LPCTSTR fn)
1922{ 1926{
1923CString f = fn; 1927CString f = fn;
1924CString rv = f; 1928CString rv = f;
1925 if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0) 1929 if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0)
1926 rv = ApplyRoot(f); 1930 rv = ApplyRoot(f);
1927 return rv; 1931 return rv;
1928} 1932}
1929 1933
1930BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file) 1934BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file)
1931{ 1935{
1932CString tmp = file; 1936CString tmp = file;
1933 if(tmp.IsEmpty()) 1937 if(tmp.IsEmpty())
1934 return FALSE; 1938 return FALSE;
1935 if(tmp.Find("..")>=0) 1939 if(tmp.Find("..")>=0)
1936 return TRUE; 1940 return TRUE;
1937 if(tmp.Find(":")>=0) 1941 if(tmp.Find(":")>=0)
1938 return TRUE; 1942 return TRUE;
1939 if((!m_Daddy->m_bTFTPSubdirs) && m_FileName.Find('\\')>=0) 1943 if((!m_Daddy->m_bTFTPSubdirs) && m_FileName.Find('\\')>=0)
1940 return TRUE; 1944 return TRUE;
1941 return FALSE; 1945 return FALSE;
1942} 1946}
1943 1947
1944void CAboutDlg::OnKlevernet() 1948void CAboutDlg::OnKlevernet()
1945{ 1949{
1946CString url; 1950CString url;
1947 url.LoadString(IDS_KLEVERNET_URL); 1951 url.LoadString(IDS_KLEVERNET_URL);
1948 ShellExecute(::GetDesktopWindow(),"open",url,NULL,NULL,SW_SHOWMAXIMIZED); 1952 ShellExecute(::GetDesktopWindow(),"open",url,NULL,NULL,SW_SHOWMAXIMIZED);
1949} 1953}
1950 1954
1951BOOL CPumpKINDlg::PreTranslateMessage(MSG* pMsg) 1955BOOL CPumpKINDlg::PreTranslateMessage(MSG* pMsg)
1952{ 1956{
1953 // CG: The following block was added by the ToolTips component. 1957 // CG: The following block was added by the ToolTips component.
1954 { 1958 {
1955 // Let the ToolTip process this message. 1959 // Let the ToolTip process this message.
1956 m_tooltip.RelayEvent(pMsg); 1960 m_tooltip.RelayEvent(pMsg);
1957 1961
1958 return CDialog::PreTranslateMessage(pMsg); 1962 return CDialog::PreTranslateMessage(pMsg);
1959 } 1963 }
1960} 1964}
1961 1965
1962void CPumpKINDlg::OnSelchangeLog() 1966void CPumpKINDlg::OnSelchangeLog()
1963{ 1967{
1964int sel = m_Log.GetCurSel(); 1968int sel = m_Log.GetCurSel();
1965 if(sel==LB_ERR){ 1969 if(sel==LB_ERR){
1966 TRACE0("Error retrieving selection\n"); 1970 TRACE0("Error retrieving selection\n");
1967 }else{ 1971 }else{
1968 CTime *t = (CTime*)m_Log.GetItemData(sel); 1972 CTime *t = (CTime*)m_Log.GetItemData(sel);
1969 ASSERT(t); 1973 ASSERT(t);
1970 m_tooltip.UpdateTipText(t->Format(IDS_LOGTIMEFORMAT),&m_Log); 1974 m_tooltip.UpdateTipText(t->Format(IDS_LOGTIMEFORMAT),&m_Log);
1971 } 1975 }
1972} 1976}
1973 1977
1974void CPumpKINDlg::OnTrayOpenfilesfolder() 1978void CPumpKINDlg::OnTrayOpenfilesfolder()
1975{ 1979{
1976 ShellExecute(::GetDesktopWindow(),NULL,m_TFTPRoot,NULL,NULL,SW_SHOWDEFAULT); 1980 ShellExecute(::GetDesktopWindow(),NULL,m_TFTPRoot,NULL,NULL,SW_SHOWDEFAULT);
1977} 1981}
1978 1982
1979void CPumpKINDlg::OnDropFiles(HDROP hDropInfo) 1983void CPumpKINDlg::OnDropFiles(HDROP hDropInfo)
1980{ 1984{
1981UINT files = ::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0); 1985UINT files = ::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);
1982 ASSERT(files); 1986 ASSERT(files);
1983 for(UINT file=0;file<files;file++){ 1987 for(UINT file=0;file<files;file++){
1984 CString theFile; 1988 CString theFile;
1985 UINT fileNameLength = ::DragQueryFile(hDropInfo,file,NULL,0); 1989 UINT fileNameLength = ::DragQueryFile(hDropInfo,file,NULL,0);
1986 ASSERT(fileNameLength); 1990 ASSERT(fileNameLength);
1987 VERIFY(::DragQueryFile(hDropInfo,file,theFile.GetBuffer(fileNameLength+5),fileNameLength+4)<=fileNameLength); 1991 VERIFY(::DragQueryFile(hDropInfo,file,theFile.GetBuffer(fileNameLength+5),fileNameLength+4)<=fileNameLength);
1988 theFile.ReleaseBuffer(); 1992 theFile.ReleaseBuffer();
1989 // Send it over! 1993 // Send it over!
1990 CRequestDlg crd(NULL); 1994 CRequestDlg crd(NULL);
1991 crd.m_Drop=TRUE; 1995 crd.m_Drop=TRUE;
1992 crd.m_Put=TRUE; 1996 crd.m_Put=TRUE;
1993 crd.m_BSize=m_BlockSize; 1997 crd.m_BSize=m_BlockSize;
1994 crd.m_LocalFile=theFile; 1998 crd.m_LocalFile=theFile;
1995 if(crd.DoModal()==IDOK){ 1999 if(crd.DoModal()==IDOK){
1996 CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); 2000 CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL);
1997 if(crd.m_BSize) 2001 if(crd.m_BSize)
1998 socket->m__blkSize=crd.m_BSize; 2002 socket->m__blkSize=crd.m_BSize;
1999 if(!socket->Create(crd.m_LocalFile,crd.m_Host)) 2003 if(!socket->Create(crd.m_LocalFile,crd.m_Host))
2000 socket->Destroy(); 2004 socket->Destroy();
2001 } 2005 }
2002 } 2006 }
2003 ::DragFinish(hDropInfo); 2007 ::DragFinish(hDropInfo);
2004} 2008}
2005 2009
2006void CPumpKINDlg::OnCancel() 2010void CPumpKINDlg::OnCancel()
2007{ 2011{
2008 OnClose(); 2012 OnClose();
2009} 2013}
2010 2014
2011CPumpKINDlg::~CPumpKINDlg() 2015CPumpKINDlg::~CPumpKINDlg()
2012{ 2016{
2013 delete m_Trayer; 2017 delete m_Trayer;
2014 delete m_Retrier; 2018 delete m_Retrier;
2015} 2019}
2016 2020
2017void CXferSocket::OnRetry() 2021void CXferSocket::OnRetry()
2018{ 2022{
2019 if(!m_Retry){ 2023 if(!m_Retry){
2020 TRACE("Retrying unretriable..\n"); 2024 TRACE("Retrying unretriable..\n");
2021 return; 2025 return;
2022 } 2026 }
2023 TRACE0("Retrying..\n"); 2027 TRACE0("Retrying..\n");
2024 m_bRetry=TRUE; 2028 m_bRetry=TRUE;
2025 PostTFTP(tftp::Copy(m_Retry)); 2029 PostTFTP(tftp::Copy(m_Retry));
2026 m_bRetry=FALSE; 2030 m_bRetry=FALSE;
2027} 2031}
2028 2032
2029tftp* tftp::Copy(tftp *src) 2033tftp* tftp::Copy(tftp *src)
2030{ 2034{
2031 ASSERT(src); 2035 ASSERT(src);
2032 ASSERT(src->length); 2036 ASSERT(src->length);
2033tftp* rv = Allocate(src->length); 2037tftp* rv = Allocate(src->length);
2034 ASSERT(rv); 2038 ASSERT(rv);
2035 memmove(rv,src,tftpSlackSize+src->length); 2039 memmove(rv,src,tftpSlackSize+src->length);
2036 return rv; 2040 return rv;
2037} 2041}
2038 2042
2039void CXferSocket::SetTry(tftp *p) 2043void CXferSocket::SetTry(tftp *p)
2040{ 2044{
2041 if(m_Retry) 2045 if(m_Retry)
2042 delete m_Retry; 2046 delete m_Retry;
2043 m_Retry=p?tftp::Copy(p):NULL; 2047 m_Retry=p?tftp::Copy(p):NULL;
2044} 2048}
2045 2049
2046void CPumpKINDlg::OnHelp() 2050void CPumpKINDlg::OnHelp()
2047{ 2051{
2048 AfxGetApp()->WinHelp(0,HELP_FINDER); 2052 AfxGetApp()->WinHelp(0,HELP_FINDER);
2049} 2053}
2050 2054
2051BOOL CListenSocket::SetListen(BOOL b) { 2055BOOL CListenSocket::SetListen(BOOL b) {
2052 ASSERT(m_Daddy); 2056 ASSERT(m_Daddy);
2053 if(b==m_bListen) 2057 if(b==m_bListen)
2054 return TRUE; 2058 return TRUE;
2055 if(b) { 2059 if(b) {
2056 if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM)) 2060 if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM))
2057 return FALSE; 2061 return FALSE;
2058 return m_bListen=TRUE; 2062 return m_bListen=TRUE;
2059 }else{ 2063 }else{
2060 Close(); m_bListen=FALSE; 2064 Close(); m_bListen=FALSE;
2061 return TRUE; 2065 return TRUE;
2062 } 2066 }
2063} 2067}
2064 2068
2065void CPumpKINDlg::OnListening() 2069void CPumpKINDlg::OnListening()
2066{ 2070{
2067 if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) { 2071 if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) {
2068 TRACE0("Failed to create socket\n"); 2072 TRACE0("Failed to create socket\n");
2069 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); 2073 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
2070 } 2074 }
2071 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); 2075 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0);
2072 m_bListen=m_Listener.m_bListen; 2076 m_bListen=m_Listener.m_bListen;
2073} 2077}
2074 2078
2075void CPumpKINDlg::OnTrayListen() 2079void CPumpKINDlg::OnTrayListen()
2076{ 2080{
2077 if(!m_Listener.SetListen(!m_Listener.m_bListen)) { 2081 if(!m_Listener.SetListen(!m_Listener.m_bListen)) {
2078 TRACE0("Failed to create socket\n"); 2082 TRACE0("Failed to create socket\n");
2079 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); 2083 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
2080 } 2084 }
2081 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); 2085 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0);
2082 m_bListen=m_Listener.m_bListen; 2086 m_bListen=m_Listener.m_bListen;
2083} 2087}
2084 2088
2085void CPumpKINDlg::LogLine(LPCTSTR str) 2089void CPumpKINDlg::LogLine(LPCTSTR str)
2086{ 2090{
2087 LogLineToScreen(str); 2091 LogLineToScreen(str);
2088 if(!m_LogFile.IsEmpty()) { 2092 if(!m_LogFile.IsEmpty()) {
2089 if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { 2093 if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) {
2090 if(m_lastlogerr!=m_LogFile) { 2094 if(m_lastlogerr!=m_LogFile) {
2091 CString tmp; 2095 CString tmp;
2092 tmp.Format(IDS_LOG_LOGERROR,m_LogFile); 2096 tmp.Format(IDS_LOG_LOGERROR,m_LogFile);
2093 LogLineToScreen(tmp); 2097 LogLineToScreen(tmp);
2094 m_lastlogerr=m_LogFile; 2098 m_lastlogerr=m_LogFile;
2095 } 2099 }
2096 } 2100 }
2097 } 2101 }
2098} 2102}
2099 2103
2100void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 2104void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
2101{ 2105{
2102 CDialog::OnGetMinMaxInfo(lpMMI); 2106 CDialog::OnGetMinMaxInfo(lpMMI);
2103 if(m_MinSize.cx>0 && m_MinSize.cy>0){ 2107 if(m_MinSize.cx>0 && m_MinSize.cy>0){
2104 lpMMI->ptMinTrackSize.x = m_MinSize.cx; 2108 lpMMI->ptMinTrackSize.x = m_MinSize.cx;
2105 lpMMI->ptMinTrackSize.y = m_MinSize.cy; 2109 lpMMI->ptMinTrackSize.y = m_MinSize.cy;
2106 } 2110 }
2107} 2111}
2108 2112
2109void CPumpKINDlg::OnSize(UINT nType, int cx, int cy) 2113void CPumpKINDlg::OnSize(UINT nType, int cx, int cy)
2110{ 2114{
2111 CDialog::OnSize(nType, cx, cy); 2115 CDialog::OnSize(nType, cx, cy);
2112 if(nType==SIZE_RESTORED) 2116 if(nType==SIZE_RESTORED)
2113 RecalcLayout(cx,cy); 2117 RecalcLayout(cx,cy);
2114} 2118}
2115 2119
2116void CPumpKINDlg::RecalcLayout(int,int) 2120void CPumpKINDlg::RecalcLayout(int,int)
2117{ 2121{
2118 CRect wrc; 2122 CRect wrc;
2119 GetClientRect(&wrc); 2123 GetClientRect(&wrc);
2120 AdjustButton(m_GetCtl,wrc); 2124 AdjustButton(m_GetCtl,wrc);
2121 AdjustButton(m_PutCtl,wrc); 2125 AdjustButton(m_PutCtl,wrc);
2122 AdjustButton(m_AbortCtl,wrc); 2126 AdjustButton(m_AbortCtl,wrc);
2123 AdjustButton(m_HelpCtl,wrc); 2127 AdjustButton(m_HelpCtl,wrc);
2124 AdjustButton(m_ExitCtl,wrc); 2128 AdjustButton(m_ExitCtl,wrc);
2125 AdjustButton(m_OptionsCtl,wrc); 2129 AdjustButton(m_OptionsCtl,wrc);
2126 CRect brc; 2130 CRect brc;
2127 m_List.GetWindowRect(&brc); ScreenToClient(&brc); 2131 m_List.GetWindowRect(&brc); ScreenToClient(&brc);
2128 m_List.SetWindowPos( 2132 m_List.SetWindowPos(
2129 0, 2133 0,
2130 brc.left, brc.top, 2134 brc.left, brc.top,
2131 wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top, 2135 wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top,
2132 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); 2136 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS );
2133 m_Log.GetWindowRect(&brc); ScreenToClient(&brc); 2137 m_Log.GetWindowRect(&brc); ScreenToClient(&brc);
2134 m_Log.SetWindowPos( 2138 m_Log.SetWindowPos(
2135 0, 2139 0,
2136 brc.left, brc.top, 2140 brc.left, brc.top,
2137 wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top, 2141 wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top,
2138 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); 2142 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS );
2139 m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); 2143 m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc);
2140 m_ListenCtl.SetWindowPos( 2144 m_ListenCtl.SetWindowPos(
2141 0, 2145 0,
2142 wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen, 2146 wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen,
2143 0,0, 2147 0,0,
2144 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); 2148 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS );
2145 int i = m_Log.GetCount(); 2149 int i = m_Log.GetCount();
2146 if(i!=LB_ERR) 2150 if(i!=LB_ERR)
2147 m_Log.SetCurSel(i-1); 2151 m_Log.SetCurSel(i-1);
2148} 2152}
2149 2153
2150void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc) 2154void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc)
2151{ 2155{
2152 CRect brc; 2156 CRect brc;
2153 w.GetWindowRect(&brc); ScreenToClient(&brc); 2157 w.GetWindowRect(&brc); ScreenToClient(&brc);
2154 w.SetWindowPos( 2158 w.SetWindowPos(
2155 0, 2159 0,
2156 wrc.right-brc.Width()-m_rightGapButtons, brc.top, 2160 wrc.right-brc.Width()-m_rightGapButtons, brc.top,
2157 0, 0, 2161 0, 0,
2158 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); 2162 SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS );
2159} 2163}
diff --git a/PumpKINDlg.h b/PumpKINDlg.h
index c5469f1..23c2657 100644
--- a/PumpKINDlg.h
+++ b/PumpKINDlg.h
@@ -1,500 +1,501 @@
1// PumpKINDlg.h : header file 1// PumpKINDlg.h : header file
2// 2//
3 3
4 //#define REVERSEBYTES(w)MAKEWORD(HIBYTE(w),LOBYTE(w)); 4 //#define REVERSEBYTES(w)MAKEWORD(HIBYTE(w),LOBYTE(w));
5 #defineREVERSEBYTES(w) (htons((WORD)w)) 5 #defineREVERSEBYTES(w) (htons((WORD)w))
6 #define tftpoBSize"blksize" 6 #define tftpoBSize"blksize"
7 #define tftpoTSize"tsize" 7 #define tftpoTSize"tsize"
8 #define tftpoTOut"timeout" 8 #define tftpoTOut"timeout"
9 9
10 #define tftpoXResume"x-resume" 10 #define tftpoXResume"x-resume"
11 11
12 struct tftp{ 12 struct tftp{
13 typedef CMapStringToString tftpOptions; 13 typedef CMapStringToString tftpOptions;
14 typedef WORD tftpLength; 14 typedef WORD tftpLength;
15 typedef WORD tftpOpcode; 15 typedef WORD tftpOpcode;
16 tftpLengthlength; 16 tftpLengthlength;
17 tftpOpcode opcode; 17 tftpOpcode opcode;
18 enum{ 18 enum{
19 opRRQ = 1, 19 opRRQ = 1,
20 opWRQ = 2, 20 opWRQ = 2,
21 opDATA = 3, 21 opDATA = 3,
22 opACK = 4, 22 opACK = 4,
23 opERROR = 5, 23 opERROR = 5,
24 opOACK = 6, 24 opOACK = 6,
25 25
26 errUndefined = 0, 26 errUndefined = 0,
27 errNotFound = 1, 27 errNotFound = 1,
28 errAccessViolation = 2, 28 errAccessViolation = 2,
29 errDiskFull = 3, 29 errDiskFull = 3,
30 errIllegalOp = 4, 30 errIllegalOp = 4,
31 errUnknownTID = 5, 31 errUnknownTID = 5,
32 errFileExists = 6, 32 errFileExists = 6,
33 errNoUser = 7, 33 errNoUser = 7,
34 errOption = 8 34 errOption = 8
35 }; 35 };
36 structtftpUNKNOWN { 36 structtftpUNKNOWN {
37 BYTE data[1]; 37 BYTE data[1];
38 }; 38 };
39 structtftpRQ { 39 structtftpRQ {
40 BYTE data[1]; 40 BYTE data[1];
41public: 41public:
42 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 42 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
43 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 43 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
44 }; 44 };
45 structtftpRRQ { 45 structtftpRRQ {
46 BYTE data[1]; 46 BYTE data[1];
47public: 47public:
48 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 48 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
49 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 49 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
50 }; 50 };
51 structtftpWRQ { 51 structtftpWRQ {
52 BYTE data[1]; 52 BYTE data[1];
53public: 53public:
54 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 54 void Set(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
55 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL); 55 static UINT tftpSize(LPCTSTR file,LPCTSTR type,tftpOptions* ops=NULL);
56 }; 56 };
57 structtftpDATA { 57 structtftpDATA {
58 WORD block; 58 WORD block;
59 BYTE data[1]; 59 BYTE data[1];
60 public: 60 public:
61 WORD Block(); 61 WORD Block();
62 void SetBlock(WORD b); 62 void SetBlock(WORD b);
63 static UINT tftpSize(UINT blkSize=512); 63 static UINT tftpSize(UINT blkSize=512);
64 }; 64 };
65 struct tftpACK { 65 struct tftpACK {
66 WORD block; 66 WORD block;
67 public: 67 public:
68 static UINT tftpSize(); 68 static UINT tftpSize();
69 void SetBlock(WORD b); 69 void SetBlock(WORD b);
70 WORD Block(); 70 WORD Block();
71 }; 71 };
72 structtftpERROR { 72 structtftpERROR {
73 typedef WORD tftpErrorCode; 73 typedef WORD tftpErrorCode;
74 tftpErrorCode code; 74 tftpErrorCode code;
75 BYTE data[1]; 75 BYTE data[1];
76 public: 76 public:
77 void SetCode(WORD c); 77 void SetCode(WORD c);
78 WORD Code(); 78 WORD Code();
79 static UINT tftpSize(LPCTSTR msg); 79 static UINT tftpSize(LPCTSTR msg);
80 }; 80 };
81 struct tftpOACK { 81 struct tftpOACK {
82 BYTE data[1]; 82 BYTE data[1];
83 public: 83 public:
84 void Set(tftpOptions* ops); 84 void Set(tftpOptions* ops);
85 static UINT tftpSize(tftpOptions* ops); 85 static UINT tftpSize(tftpOptions* ops);
86 }; 86 };
87 uniontftpPacket { 87 uniontftpPacket {
88 tftpUNKNOWN m_UNKNOWN; 88 tftpUNKNOWN m_UNKNOWN;
89 tftpRQ m_RQ; 89 tftpRQ m_RQ;
90 tftpRRQ m_RRQ; 90 tftpRRQ m_RRQ;
91 tftpWRQ m_WRQ; 91 tftpWRQ m_WRQ;
92 tftpDATA m_DATA; 92 tftpDATA m_DATA;
93 tftpACK m_ACK; 93 tftpACK m_ACK;
94 tftpERROR m_ERROR; 94 tftpERROR m_ERROR;
95 tftpOACK m_OACK; 95 tftpOACK m_OACK;
96 }data; 96 }data;
97 97
98 void *udpBase(void){ return &opcode; } 98 void *udpBase(void){ return &opcode; }
99public: 99public:
100 static tftp* Copy(tftp *src); 100 static tftp* Copy(tftp *src);
101 CString errMessage(); 101 CString errMessage();
102 void SetOpcode(WORD op); 102 void SetOpcode(WORD op);
103 void errSet(UINT code,LPCTSTR msg); 103 void errSet(UINT code,LPCTSTR msg);
104 static tftp* Allocate(UINT tftpSize=0); 104 static tftp* Allocate(UINT tftpSize=0);
105 BOOL Send(CAsyncSocket *socket,SOCKADDR_IN* saddr); 105 BOOL Send(CAsyncSocket *socket,SOCKADDR_IN* saddr);
106 CString rqType(); 106 CString rqType();
107 CString rqFileName(); 107 CString rqFileName();
108 UINT GetOptions(tftpOptions* ops); 108 UINT GetOptions(tftpOptions* ops);
109 tftp(); 109 tftp();
110 UINT Opcode(); 110 UINT Opcode();
111 BOOL Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin=NULL); 111 BOOL Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin=NULL);
112}; 112};
113 #define tftpHdrSize(sizeof(tftp)-sizeof(tftp::tftpPacket)) 113 #define tftpHdrSize(sizeof(tftp)-sizeof(tftp::tftpPacket))
114 #definetftpSlackSize sizeof(tftp::tftpLength) 114 #definetftpSlackSize sizeof(tftp::tftpLength)
115 115
116struct acl_rule { 116struct acl_rule {
117 enum { 117 enum {
118 opRRQ=tftp::opRRQ, opWRQ=tftp::opWRQ 118 opRRQ=tftp::opRRQ, opWRQ=tftp::opWRQ
119 }; 119 };
120 int op; 120 int op;
121 DWORD addr, mask; 121 DWORD addr, mask;
122 enum { 122 enum {
123 rrqGrant=0, rrqPrompt, rrqDeny, 123 rrqGrant=0, rrqPrompt, rrqDeny,
124 rrqRules, 124 rrqRules,
125 rrqNone=-1 125 rrqNone=-1
126 }; 126 };
127 enum { 127 enum {
128 wrqGrant=0, wrqPromptIfExists, wrqPrompt, wrqDeny, 128 wrqGrant=0, wrqPromptIfExists, wrqPrompt, wrqDeny,
129 wrqRules, 129 wrqRules,
130 wrqNone=-1 130 wrqNone=-1
131 }; 131 };
132 int target; 132 int target;
133 133
134 acl_rule() 134 acl_rule()
135 : op(-1), addr(0), mask(0), target(-1) { } 135 : op(-1), addr(0), mask(0), target(-1) { }
136 acl_rule(int o,DWORD a,DWORD m,int t) 136 acl_rule(int o,DWORD a,DWORD m,int t)
137 : op(o), addr(a), mask(m), target(t) { } 137 : op(o), addr(a), mask(m), target(t) { }
138 acl_rule(const acl_rule& s) 138 acl_rule(const acl_rule& s)
139 : op(s.op), addr(s.addr), mask(s.mask), target(s.target) { } 139 : op(s.op), addr(s.addr), mask(s.mask), target(s.target) { }
140 140
141 BOOL IsValid() { 141 BOOL IsValid() {
142 if(op==opRRQ) { 142 if(op==opRRQ) {
143 if(target<rrqNone || target>=rrqRules) 143 if(target<rrqNone || target>=rrqRules)
144 return FALSE; 144 return FALSE;
145 }else if(op==opWRQ) { 145 }else if(op==opWRQ) {
146 if(target<wrqNone || target>=wrqRules) 146 if(target<wrqNone || target>=wrqRules)
147 return FALSE; 147 return FALSE;
148 }else 148 }else
149 return FALSE; 149 return FALSE;
150 return TRUE; 150 return TRUE;
151 } 151 }
152 152
153 BOOL IsMatch(int o,DWORD a) { 153 BOOL IsMatch(int o,DWORD a) {
154 if(o!=op) return FALSE; 154 if(o!=op) return FALSE;
155 if( (a&mask) != (addr&mask)) return FALSE; 155 if( (a&mask) != (addr&mask)) return FALSE;
156 return TRUE; 156 return TRUE;
157 } 157 }
158 158
159 CString str_addr() { 159 CString str_addr() {
160 return inet_ntoa(*(struct in_addr*)&addr); 160 return inet_ntoa(*(struct in_addr*)&addr);
161 } 161 }
162 CString str_mask() { 162 CString str_mask() {
163 return inet_ntoa(*(struct in_addr*)&mask); 163 return inet_ntoa(*(struct in_addr*)&mask);
164 } 164 }
165 CString str_target() { 165 CString str_target() {
166 if(op==opRRQ) { 166 if(op==opRRQ) {
167 switch(target) { 167 switch(target) {
168 case rrqNone: return "fallback"; 168 case rrqNone: return "fallback";
169 case rrqGrant: return "grant"; 169 case rrqGrant: return "grant";
170 case rrqPrompt: return "prompt"; 170 case rrqPrompt: return "prompt";
171 case rrqDeny: return "deny"; 171 case rrqDeny: return "deny";
172 default: return "?"; 172 default: return "?";
173 } 173 }
174 }else if(op==opWRQ) { 174 }else if(op==opWRQ) {
175 switch(target) { 175 switch(target) {
176 case wrqNone: return "fallback"; 176 case wrqNone: return "fallback";
177 case wrqGrant: return "grant"; 177 case wrqGrant: return "grant";
178 case wrqPromptIfExists: return "prompt if exists"; 178 case wrqPromptIfExists: return "prompt if exists";
179 case wrqPrompt: return "prompt"; 179 case wrqPrompt: return "prompt";
180 case wrqDeny: return "deny"; 180 case wrqDeny: return "deny";
181 default: return "?"; 181 default: return "?";
182 } 182 }
183 }else 183 }else
184 return "?"; 184 return "?";
185 } 185 }
186 186
187 void SaveProfile(CWinApp* app,int i) { 187 void SaveProfile(CWinApp* app,int i) {
188 CString n; n.Format("%d",i); 188 CString n; n.Format("%d",i);
189 app->WriteProfileInt("ACL","op_"+n,op); 189 app->WriteProfileInt("ACL","op_"+n,op);
190 app->WriteProfileString("ACL","addr_"+n,str_addr()); 190 app->WriteProfileString("ACL","addr_"+n,str_addr());
191 app->WriteProfileString("ACL","mask_"+n,str_mask()); 191 app->WriteProfileString("ACL","mask_"+n,str_mask());
192 app->WriteProfileInt("ACL","target_"+n,target); 192 app->WriteProfileInt("ACL","target_"+n,target);
193 } 193 }
194 194
195 void LoadProfile(CWinApp* app,int i) { 195 void LoadProfile(CWinApp* app,int i) {
196 CString n; n.Format("%d",i); 196 CString n; n.Format("%d",i);
197 op=app->GetProfileInt("ACL","op_"+n,-1); 197 op=app->GetProfileInt("ACL","op_"+n,-1);
198 addr=inet_addr(app->GetProfileString("ACL","addr_"+n)); 198 addr=inet_addr(app->GetProfileString("ACL","addr_"+n));
199 mask=inet_addr(app->GetProfileString("ACL","mask_"+n)); 199 mask=inet_addr(app->GetProfileString("ACL","mask_"+n));
200 target=app->GetProfileInt("ACL","target_"+n,-1); 200 target=app->GetProfileInt("ACL","target_"+n,-1);
201 } 201 }
202 202
203}; 203};
204 204
205class acl_rules_t : public CArray<acl_rule,acl_rule&> { 205class acl_rules_t : public CArray<acl_rule,acl_rule&> {
206public: 206public:
207 207
208 acl_rules_t& operator=(const acl_rules_t& s) { 208 acl_rules_t& operator=(const acl_rules_t& s) {
209 // Copy(s); XXX: unsuprisingly, there's a bug in MFC Copy, *pDst++=*pSrc (no ++ for Src) 209 // Copy(s); XXX: unsuprisingly, there's a bug in MFC Copy, *pDst++=*pSrc (no ++ for Src)
210 RemoveAll(); 210 RemoveAll();
211 int ns = s.GetSize(); 211 int ns = s.GetSize();
212 SetSize(ns); 212 SetSize(ns);
213 for(int i=0;i<ns;++i) 213 for(int i=0;i<ns;++i)
214 m_pData[i]=s.m_pData[i]; 214 m_pData[i]=s.m_pData[i];
215 return *this; 215 return *this;
216 } 216 }
217 217
218 int AppendRule(acl_rule& r) { 218 int AppendRule(acl_rule& r) {
219 return Add(r); 219 return Add(r);
220 } 220 }
221 221
222 void DeleteRule(int r) { 222 void DeleteRule(int r) {
223 RemoveAt(r); 223 RemoveAt(r);
224 } 224 }
225 225
226 int FindRule(int op,DWORD ip) { 226 int FindRule(int op,DWORD ip) {
227 for(int i=0;i<GetSize();++i) 227 for(int i=0;i<GetSize();++i)
228 if(m_pData[i].IsMatch(op,ip)) 228 if(m_pData[i].IsMatch(op,ip))
229 return i; 229 return i;
230 return -1; 230 return -1;
231 } 231 }
232 232
233 int FindTarget(int op,DWORD ip) { 233 int FindTarget(int op,DWORD ip) {
234 int r=FindRule(op,ip); 234 int r=FindRule(op,ip);
235 if(r<0) return -1; 235 if(r<0) return -1;
236 return m_pData[r].target; 236 return m_pData[r].target;
237 } 237 }
238 238
239 void SaveProfile(CWinApp* app) { 239 void SaveProfile(CWinApp* app) {
240 int s=GetSize(); 240 int s=GetSize();
241 for(int i=0;i<s;++i) 241 for(int i=0;i<s;++i)
242 m_pData[i].SaveProfile(app,i); 242 m_pData[i].SaveProfile(app,i);
243 app->WriteProfileInt("ACL","rules",s); 243 app->WriteProfileInt("ACL","rules",s);
244 } 244 }
245 void LoadProfile(CWinApp* app) { 245 void LoadProfile(CWinApp* app) {
246 RemoveAll(); 246 RemoveAll();
247 int s=app->GetProfileInt("ACL","rules",0); 247 int s=app->GetProfileInt("ACL","rules",0);
248 for(int i=0;i<s;++i) { 248 for(int i=0;i<s;++i) {
249 acl_rule r; 249 acl_rule r;
250 r.LoadProfile(app,i); 250 r.LoadProfile(app,i);
251 if(r.IsValid()) 251 if(r.IsValid())
252 Add(r); 252 Add(r);
253 } 253 }
254 } 254 }
255}; 255};
256 256
257class CPumpKINDlg; 257class CPumpKINDlg;
258 class CListenSocket : public CAsyncSocket{ 258 class CListenSocket : public CAsyncSocket{
259public: 259public:
260 CPumpKINDlg* m_Daddy; 260 CPumpKINDlg* m_Daddy;
261 BOOL m_bListen; 261 BOOL m_bListen;
262 262
263 CListenSocket() 263 CListenSocket()
264 : m_bListen(FALSE), m_Daddy(0) { } 264 : m_bListen(FALSE), m_Daddy(0) { }
265 265
266 BOOL SetListen(BOOL b); 266 BOOL SetListen(BOOL b);
267 virtual void OnReceive(int nErrorCode); 267 virtual void OnReceive(int nErrorCode);
268}; 268};
269 269
270 typedef CList<tftp*,tftp*>CTFTPList; 270 typedef CList<tftp*,tftp*>CTFTPList;
271class CResolver; 271class CResolver;
272 class CXferSocket : public CAsyncSocket{ 272 class CXferSocket : public CAsyncSocket{
273public: 273public:
274 UINT m__timeOut; 274 UINT m__timeOut;
275 UINT m__blkSize; 275 UINT m__blkSize;
276 tftp::tftpOptions m_Options; 276 tftp::tftpOptions m_Options;
277 LONG m_xferSize; 277 LONG m_xferSize;
278 UINT m_timeOut; 278 UINT m_timeOut;
279 UINT m_blkSize; 279 UINT m_blkSize;
280 BOOL m_bRetry; 280 BOOL m_bRetry;
281 void SetTry(tftp *p=NULL); 281 void SetTry(tftp *p=NULL);
282 tftp* m_Retry; 282 tftp* m_Retry;
283 void OnRetry(); 283 void OnRetry();
284 BOOL CheckBadRelativeness(LPCTSTR file); 284 BOOL CheckBadRelativeness(LPCTSTR file);
285 CString ApplyRootGently(LPCTSTR fn); 285 CString ApplyRootGently(LPCTSTR fn);
286 CString m_HostName; 286 CString m_HostName;
287 virtual void OnResolved(); 287 virtual void OnResolved();
288 virtual void OnFailedToResolve(); 288 virtual void OnFailedToResolve();
289 CResolver *m_wndResolver; 289 CResolver *m_wndResolver;
290 BYTE m_ResolveBuff[MAXGETHOSTSTRUCT]; 290 BYTE m_ResolveBuff[MAXGETHOSTSTRUCT];
291 virtual void Abort(); 291 virtual void Abort();
292 void ResetTimeout(); 292 void ResetTimeout();
293 enum{ 293 enum{
294 stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing 294 stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing
295 }; 295 };
296 int state; 296 int state;
297 void Deny(UINT errCode,UINT errID); 297 void Deny(UINT errCode,UINT errID);
298 void Deny(CFileException* e); 298 void Deny(CFileException* e);
299 CString ApplyRoot(LPCTSTR fileName); 299 CString ApplyRoot(LPCTSTR fileName);
300 void TurnSlashes(CString& fn,BOOL bBack=TRUE); 300 void TurnSlashes(CString& fn,BOOL bBack=TRUE);
301 virtual void Destroy(BOOL success=TRUE); 301 virtual void Destroy(BOOL success=TRUE);
302 void PostError(CFileException* e); 302 void PostError(CFileException* e);
303 void PostError(UINT errCode,UINT errID); 303 void PostError(UINT errCode,UINT errID);
304 void PostTFTP(tftp* p,BOOL retryable=FALSE); 304 void PostTFTP(tftp* p,BOOL retryable=FALSE);
305 CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin); 305 CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin);
306 CFile m_File; 306 CFile m_File;
307 virtual ULONG GetACK(); 307 virtual ULONG GetACK();
308 CString m_Type; 308 CString m_Type;
309 CString m_FileName; 309 CString m_FileName;
310 CXferSocket(); 310 CXferSocket();
311 void UpdateList(); 311 void UpdateList();
312 void SetPeer(SOCKADDR_IN *sin); 312 void SetPeer(SOCKADDR_IN *sin);
313 virtual BOOL OnTFTP(tftp* p) = 0; 313 virtual BOOL OnTFTP(tftp* p) = 0;
314 virtual void OnReceive(int nErrorCode); 314 virtual void OnReceive(int nErrorCode);
315 void DoSelect(); 315 void DoSelect(BOOL do_select=FALSE);
316 SOCKADDR_IN m_Peer; 316 SOCKADDR_IN m_Peer;
317 virtual void OnSend(int nErrorCode); 317 virtual void OnSend(int nErrorCode);
318 CPumpKINDlg* m_Daddy; 318 CPumpKINDlg* m_Daddy;
319 CTFTPList m_Queue; 319 CTFTPList m_Queue;
320 320
321 DECLARE_DYNAMIC(CXferSocket) 321 DECLARE_DYNAMIC(CXferSocket)
322}; 322};
323class CWRQSocket : public CXferSocket { 323class CWRQSocket : public CXferSocket {
324public: 324public:
325 BOOL m_bResume; 325 BOOL m_bResume;
326 void OnHostKnown(); 326 void OnHostKnown();
327 virtual void OnResolved(); 327 virtual void OnResolved();
328 UINT m_LastSlack; 328 UINT m_LastSlack;
329 ULONG GetACK(); 329 ULONG GetACK();
330 void DoXfer(); 330 void DoXfer();
331 UINT m_ACK; 331 UINT m_ACK;
332 BOOL SaveAs(CString& fn); 332 BOOL SaveAs(CString& fn);
333 BOOL RenameFile(CString& fn); 333 BOOL RenameFile(CString& fn);
334 BOOL m_Rename; 334 BOOL m_Rename;
335 BOOL ConfirmRequest(); 335 BOOL ConfirmRequest();
336 BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); 336 BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL);
337 CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); 337 CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin);
338 BOOL OnTFTP(tftp* p); 338 BOOL OnTFTP(tftp* p);
339 339
340 DECLARE_DYNAMIC(CWRQSocket) 340 DECLARE_DYNAMIC(CWRQSocket)
341}; 341};
342class CRRQSocket : public CXferSocket { 342class CRRQSocket : public CXferSocket {
343public: 343public:
344 UINT m_ACKtoClose;
344 void OnHostKnown(); 345 void OnHostKnown();
345 virtual void OnResolved(); 346 virtual void OnResolved();
346 BOOL ConfirmRequest(); 347 BOOL ConfirmRequest();
347 WORD m_LastSlack; 348 WORD m_LastSlack;
348 UINT m_ACK; 349 UINT m_ACK;
349 BOOL OnTFTP(tftp* p); 350 BOOL OnTFTP(tftp* p);
350 ULONG GetACK(void); 351 ULONG GetACK(void);
351 void DoXfer(); 352 void DoXfer();
352 CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); 353 CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin);
353 BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); 354 BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL);
354 355
355 DECLARE_DYNAMIC(CRRQSocket) 356 DECLARE_DYNAMIC(CRRQSocket)
356}; 357};
357 358
358 typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; 359 typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap;
359typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; 360typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap;
360 361
361///////////////////////////////////////////////////////////////////////////// 362/////////////////////////////////////////////////////////////////////////////
362// CPumpKINDlg dialog 363// CPumpKINDlg dialog
363 364
364class CTrayer; 365class CTrayer;
365class CRetrier; 366class CRetrier;
366class CPumpKINDlg : public CDialog 367class CPumpKINDlg : public CDialog
367{ 368{
368// Construction 369// Construction
369public: 370public:
370 void AdjustButton(CWnd& w,CRect& wrc); 371 void AdjustButton(CWnd& w,CRect& wrc);
371 void RecalcLayout(int,int); 372 void RecalcLayout(int,int);
372 CSize m_MinSize; 373 CSize m_MinSize;
373 UINT m_bottomGapLog; 374 UINT m_bottomGapLog;
374 UINT m_bottomGapListen; 375 UINT m_bottomGapListen;
375 UINT m_rightGapList; 376 UINT m_rightGapList;
376 UINT m_rightGapButtons; 377 UINT m_rightGapButtons;
377 CString m_lastlogerr; 378 CString m_lastlogerr;
378 void LogLine(LPCTSTR str); 379 void LogLine(LPCTSTR str);
379 CString m_LogFile; 380 CString m_LogFile;
380 BOOL m_bListen; 381 BOOL m_bListen;
381 acl_rules_t m_aclRules; 382 acl_rules_t m_aclRules;
382 CString m_bnwRequest; 383 CString m_bnwRequest;
383 CString m_bnwSuccess; 384 CString m_bnwSuccess;
384 CString m_bnwAbort; 385 CString m_bnwAbort;
385 CBellsNWhistles m_bnw; 386 CBellsNWhistles m_bnw;
386 CTrayer *m_Trayer; 387 CTrayer *m_Trayer;
387 CTimeSpan m_RetryTimeOut; 388 CTimeSpan m_RetryTimeOut;
388 virtual ~CPumpKINDlg(); 389 virtual ~CPumpKINDlg();
389 CRetrier* m_Retrier; 390 CRetrier* m_Retrier;
390 virtual BOOL PreTranslateMessage(MSG* pMsg); 391 virtual BOOL PreTranslateMessage(MSG* pMsg);
391 BOOL m_bShown; 392 BOOL m_bShown;
392 BOOL m_bExiting; 393 BOOL m_bExiting;
393 void SaveSettings(); 394 void SaveSettings();
394 void LoadSettings(); 395 void LoadSettings();
395 void SetupButtons(); 396 void SetupButtons();
396 BITMAP m_bitmapBack; 397 BITMAP m_bitmapBack;
397 CBitmap m_bmpBack; 398 CBitmap m_bmpBack;
398 UINT m_PromptTimeOut; 399 UINT m_PromptTimeOut;
399 UINT m_SpeakPort; 400 UINT m_SpeakPort;
400 void LogLine(UINT msgID); 401 void LogLine(UINT msgID);
401 CTimeMap m_LogTimes; 402 CTimeMap m_LogTimes;
402 void LogLineToFile(LPCTSTR str); 403 void LogLineToFile(LPCTSTR str);
403 void LogLineToScreen(LPCTSTR str); 404 void LogLineToScreen(LPCTSTR str);
404 int m_LogLength; 405 int m_LogLength;
405 enum{ 406 enum{
406 subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize 407 subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize
407 }; 408 };
408 int m_iWRQ; 409 int m_iWRQ;
409 int m_iRRQ; 410 int m_iRRQ;
410 CImageList m_Images; 411 CImageList m_Images;
411 CTIDMap m_Xfers; 412 CTIDMap m_Xfers;
412 CTimeSpan m_TFTPTimeOut; 413 CTimeSpan m_TFTPTimeOut;
413 enum{ 414 enum{
414 rrqGiveAll=acl_rule::rrqGrant, 415 rrqGiveAll=acl_rule::rrqGrant,
415 rrqAlwaysConfirm=acl_rule::rrqPrompt, 416 rrqAlwaysConfirm=acl_rule::rrqPrompt,
416 rrqDenyAll=acl_rule::rrqDeny, 417 rrqDenyAll=acl_rule::rrqDeny,
417 rrqFallback=acl_rule::rrqNone, 418 rrqFallback=acl_rule::rrqNone,
418 rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm 419 rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm
419 }; 420 };
420 enum{ 421 enum{
421 wrqTakeAll=acl_rule::wrqGrant, 422 wrqTakeAll=acl_rule::wrqGrant,
422 wrqConfirmIfExists=acl_rule::wrqPromptIfExists, 423 wrqConfirmIfExists=acl_rule::wrqPromptIfExists,
423 wrqAlwaysConfirm=acl_rule::wrqPrompt, 424 wrqAlwaysConfirm=acl_rule::wrqPrompt,
424 wrqDenyAll=acl_rule::wrqDeny, 425 wrqDenyAll=acl_rule::wrqDeny,
425 wrqFallback=acl_rule::wrqNone, 426 wrqFallback=acl_rule::wrqNone,
426 wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm 427 wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm
427 }; 428 };
428 UINT m_RRQMode; 429 UINT m_RRQMode;
429 UINT m_WRQMode; 430 UINT m_WRQMode;
430 BOOL m_bTFTPSubdirs; 431 BOOL m_bTFTPSubdirs;
431 CString m_TFTPRoot; 432 CString m_TFTPRoot;
432 UINT m_ListenPort; 433 UINT m_ListenPort;
433 UINT m_BlockSize; 434 UINT m_BlockSize;
434 CListenSocket m_Listener; 435 CListenSocket m_Listener;
435 CPumpKINDlg(CWnd* pParent = NULL);// standard constructor 436 CPumpKINDlg(CWnd* pParent = NULL);// standard constructor
436 437
437// Dialog Data 438// Dialog Data
438 //{{AFX_DATA(CPumpKINDlg) 439 //{{AFX_DATA(CPumpKINDlg)
439 enum { IDD = IDD_PUMPKIN_DIALOG }; 440 enum { IDD = IDD_PUMPKIN_DIALOG };
440 CButtonm_HelpCtl; 441 CButtonm_HelpCtl;
441 CButtonm_PutCtl; 442 CButtonm_PutCtl;
442 CButtonm_GetCtl; 443 CButtonm_GetCtl;
443 CButtonm_ExitCtl; 444 CButtonm_ExitCtl;
444 CButtonm_ListenCtl; 445 CButtonm_ListenCtl;
445 CButtonm_AbortCtl; 446 CButtonm_AbortCtl;
446 CButtonm_OptionsCtl; 447 CButtonm_OptionsCtl;
447 CListBoxm_Log; 448 CListBoxm_Log;
448 CListCtrlm_List; 449 CListCtrlm_List;
449 //}}AFX_DATA 450 //}}AFX_DATA
450 451
451 // ClassWizard generated virtual function overrides 452 // ClassWizard generated virtual function overrides
452 //{{AFX_VIRTUAL(CPumpKINDlg) 453 //{{AFX_VIRTUAL(CPumpKINDlg)
453 protected: 454 protected:
454 virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support 455 virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
455 //}}AFX_VIRTUAL 456 //}}AFX_VIRTUAL
456 457
457// Implementation 458// Implementation
458protected: 459protected:
459 CToolTipCtrl m_tooltip; 460 CToolTipCtrl m_tooltip;
460 HICON m_hIcon; 461 HICON m_hIcon;
461 462
462 // Generated message map functions 463 // Generated message map functions
463 //{{AFX_MSG(CPumpKINDlg) 464 //{{AFX_MSG(CPumpKINDlg)
464 virtual BOOL OnInitDialog(); 465 virtual BOOL OnInitDialog();
465 afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 466 afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
466 afx_msg void OnDestroy(); 467 afx_msg void OnDestroy();
467 afx_msg void OnPaint(); 468 afx_msg void OnPaint();
468 afx_msg HCURSOR OnQueryDragIcon(); 469 afx_msg HCURSOR OnQueryDragIcon();
469 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 470 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
470 afx_msg void OnOptions(); 471 afx_msg void OnOptions();
471 afx_msg void OnTimer(UINT nIDEvent); 472 afx_msg void OnTimer(UINT nIDEvent);
472 afx_msg void OnExit(); 473 afx_msg void OnExit();
473 afx_msg void OnPut(); 474 afx_msg void OnPut();
474 afx_msg void OnGet(); 475 afx_msg void OnGet();
475 afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); 476 afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult);
476 afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); 477 afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult);
477 afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); 478 afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult);
478 afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); 479 afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult);
479 afx_msg void OnAbort(); 480 afx_msg void OnAbort();
480 afx_msg void OnClose(); 481 afx_msg void OnClose();
481 afx_msg void OnTrayShowpumpkinwindow(); 482 afx_msg void OnTrayShowpumpkinwindow();
482 afx_msg void OnTrayListen(); 483 afx_msg void OnTrayListen();
483 afx_msg void OnTrayExit(); 484 afx_msg void OnTrayExit();
484 afx_msg void OnTrayAboutpumpkin(); 485 afx_msg void OnTrayAboutpumpkin();
485 afx_msg void OnTrayFetchfile(); 486 afx_msg void OnTrayFetchfile();
486 afx_msg void OnTrayHelp(); 487 afx_msg void OnTrayHelp();
487 afx_msg void OnTrayOptions(); 488 afx_msg void OnTrayOptions();
488 afx_msg void OnTraySendfile(); 489 afx_msg void OnTraySendfile();
489 afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); 490 afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
490 afx_msg void OnSelchangeLog(); 491 afx_msg void OnSelchangeLog();
491 afx_msg void OnTrayOpenfilesfolder(); 492 afx_msg void OnTrayOpenfilesfolder();
492 afx_msg void OnDropFiles(HDROP hDropInfo); 493 afx_msg void OnDropFiles(HDROP hDropInfo);
493 virtual void OnCancel(); 494 virtual void OnCancel();
494 afx_msg void OnHelp(); 495 afx_msg void OnHelp();
495 afx_msg void OnListening(); 496 afx_msg void OnListening();
496 afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); 497 afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
497 afx_msg void OnSize(UINT nType, int cx, int cy); 498 afx_msg void OnSize(UINT nType, int cx, int cy);
498 //}}AFX_MSG 499 //}}AFX_MSG
499 DECLARE_MESSAGE_MAP() 500 DECLARE_MESSAGE_MAP()
500}; 501};
diff --git a/pumpkin.mak b/pumpkin.mak
index a22a6fa..bf9e895 100644
--- a/pumpkin.mak
+++ b/pumpkin.mak
@@ -1,1685 +1,1583 @@
1# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 1# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
2# ** DO NOT EDIT ** 2# ** DO NOT EDIT **
3 3
4# TARGTYPE "Win32 (x86) Application" 0x0101 4# TARGTYPE "Win32 (x86) Application" 0x0101
5 5
6!IF "$(CFG)" == "" 6!IF "$(CFG)" == ""
7CFG=Install - Win32 Debug 7CFG=Install - Win32 Debug
8!MESSAGE No configuration specified. Defaulting to Install - Win32 Debug. 8!MESSAGE No configuration specified. Defaulting to Install - Win32 Debug.
9!ENDIF 9!ENDIF
10 10
11!IF "$(CFG)" != "PumpKIN - Win32 Release" && "$(CFG)" !=\ 11!IF "$(CFG)" != "PumpKIN - Win32 Release" && "$(CFG)" !=\
12 "PumpKIN - Win32 Debug" && "$(CFG)" != "PumpKIN - Win32 Static" && "$(CFG)" !=\ 12 "PumpKIN - Win32 Debug" && "$(CFG)" != "PumpKIN - Win32 Static" && "$(CFG)" !=\
13 "Install - Win32 Debug" && "$(CFG)" != "Install - Win32 Pure" && "$(CFG)" !=\ 13 "Install - Win32 Debug" && "$(CFG)" != "Install - Win32 Pure" && "$(CFG)" !=\
14 "Install - Win32 Static" && "$(CFG)" != "Install - Win32 Canned" 14 "Install - Win32 Static" && "$(CFG)" != "Install - Win32 Canned"
15!MESSAGE Invalid configuration "$(CFG)" specified. 15!MESSAGE Invalid configuration "$(CFG)" specified.
16!MESSAGE You can specify a configuration when running NMAKE on this makefile 16!MESSAGE You can specify a configuration when running NMAKE on this makefile
17!MESSAGE by defining the macro CFG on the command line. For example: 17!MESSAGE by defining the macro CFG on the command line. For example:
18!MESSAGE 18!MESSAGE
19!MESSAGE NMAKE /f "pumpkin.mak" CFG="Install - Win32 Debug" 19!MESSAGE NMAKE /f "pumpkin.mak" CFG="Install - Win32 Debug"
20!MESSAGE 20!MESSAGE
21!MESSAGE Possible choices for configuration are: 21!MESSAGE Possible choices for configuration are:
22!MESSAGE 22!MESSAGE
23!MESSAGE "PumpKIN - Win32 Release" (based on "Win32 (x86) Application") 23!MESSAGE "PumpKIN - Win32 Release" (based on "Win32 (x86) Application")
24!MESSAGE "PumpKIN - Win32 Debug" (based on "Win32 (x86) Application") 24!MESSAGE "PumpKIN - Win32 Debug" (based on "Win32 (x86) Application")
25!MESSAGE "PumpKIN - Win32 Static" (based on "Win32 (x86) Application") 25!MESSAGE "PumpKIN - Win32 Static" (based on "Win32 (x86) Application")
26!MESSAGE "Install - Win32 Debug" (based on "Win32 (x86) Application") 26!MESSAGE "Install - Win32 Debug" (based on "Win32 (x86) Application")
27!MESSAGE "Install - Win32 Pure" (based on "Win32 (x86) Application") 27!MESSAGE "Install - Win32 Pure" (based on "Win32 (x86) Application")
28!MESSAGE "Install - Win32 Static" (based on "Win32 (x86) Application") 28!MESSAGE "Install - Win32 Static" (based on "Win32 (x86) Application")
29!MESSAGE "Install - Win32 Canned" (based on "Win32 (x86) Application") 29!MESSAGE "Install - Win32 Canned" (based on "Win32 (x86) Application")
30!MESSAGE 30!MESSAGE
31!ERROR An invalid configuration is specified. 31!ERROR An invalid configuration is specified.
32!ENDIF 32!ENDIF
33 33
34!IF "$(OS)" == "Windows_NT" 34!IF "$(OS)" == "Windows_NT"
35NULL= 35NULL=
36!ELSE 36!ELSE
37NULL=nul 37NULL=nul
38!ENDIF 38!ENDIF
39################################################################################ 39################################################################################
40# Begin Project 40# Begin Project
41# PROP Target_Last_Scanned "PumpKIN - Win32 Debug" 41# PROP Target_Last_Scanned "PumpKIN - Win32 Debug"
42CPP=cl.exe 42CPP=cl.exe
43RSC=rc.exe 43RSC=rc.exe
44MTL=mktyplib.exe 44MTL=mktyplib.exe
45 45
46!IF "$(CFG)" == "PumpKIN - Win32 Release" 46!IF "$(CFG)" == "PumpKIN - Win32 Release"
47 47
48# PROP BASE Use_MFC 6 48# PROP BASE Use_MFC 6
49# PROP BASE Use_Debug_Libraries 0 49# PROP BASE Use_Debug_Libraries 0
50# PROP BASE Output_Dir "Release" 50# PROP BASE Output_Dir "Release"
51# PROP BASE Intermediate_Dir "Release" 51# PROP BASE Intermediate_Dir "Release"
52# PROP BASE Target_Dir "" 52# PROP BASE Target_Dir ""
53# PROP Use_MFC 6 53# PROP Use_MFC 6
54# PROP Use_Debug_Libraries 0 54# PROP Use_Debug_Libraries 0
55# PROP Output_Dir "Release" 55# PROP Output_Dir "Release"
56# PROP Intermediate_Dir "Release" 56# PROP Intermediate_Dir "Release"
57# PROP Target_Dir "" 57# PROP Target_Dir ""
58OUTDIR=.\Release 58OUTDIR=.\Release
59INTDIR=.\Release 59INTDIR=.\Release
60# Begin Custom Macros 60# Begin Custom Macros
61OutDir=.\Release 61OutDir=.\Release
62TargetName=pumpkin 62TargetName=pumpkin
63# End Custom Macros 63# End Custom Macros
64 64
65ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ 65ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\
66 "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" 66 "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_"
67 67
68CLEAN : 68CLEAN :
69 -@erase "$(INTDIR)\ACLTargetCombo.obj" 69 -@erase "$(INTDIR)\ACLTargetCombo.obj"
70 -@erase "$(INTDIR)\ConfirmRRQDlg.obj" 70 -@erase "$(INTDIR)\ConfirmRRQDlg.obj"
71 -@erase "$(INTDIR)\ConfirmWRQDlg.obj" 71 -@erase "$(INTDIR)\ConfirmWRQDlg.obj"
72 -@erase "$(INTDIR)\PropsACL.obj" 72 -@erase "$(INTDIR)\PropsACL.obj"
73 -@erase "$(INTDIR)\PropsNetwork.obj" 73 -@erase "$(INTDIR)\PropsNetwork.obj"
74 -@erase "$(INTDIR)\PropsServer.obj" 74 -@erase "$(INTDIR)\PropsServer.obj"
75 -@erase "$(INTDIR)\PropsSounds.obj" 75 -@erase "$(INTDIR)\PropsSounds.obj"
76 -@erase "$(INTDIR)\pumpkin.cn_" 76 -@erase "$(INTDIR)\pumpkin.cn_"
77 -@erase "$(INTDIR)\pumpkin.cnt" 77 -@erase "$(INTDIR)\pumpkin.cnt"
78 -@erase "$(INTDIR)\pumpkin.hl_" 78 -@erase "$(INTDIR)\pumpkin.hl_"
79 -@erase "$(INTDIR)\pumpkin.hlp" 79 -@erase "$(INTDIR)\pumpkin.hlp"
80 -@erase "$(INTDIR)\PumpKIN.obj" 80 -@erase "$(INTDIR)\PumpKIN.obj"
81 -@erase "$(INTDIR)\pumpkin.pch" 81 -@erase "$(INTDIR)\pumpkin.pch"
82 -@erase "$(INTDIR)\pumpkin.res" 82 -@erase "$(INTDIR)\pumpkin.res"
83 -@erase "$(INTDIR)\PumpKINDlg.obj" 83 -@erase "$(INTDIR)\PumpKINDlg.obj"
84 -@erase "$(INTDIR)\RequestDlg.obj" 84 -@erase "$(INTDIR)\RequestDlg.obj"
85 -@erase "$(INTDIR)\Resolver.obj" 85 -@erase "$(INTDIR)\Resolver.obj"
86 -@erase "$(INTDIR)\Retrier.obj" 86 -@erase "$(INTDIR)\Retrier.obj"
87 -@erase "$(INTDIR)\StdAfx.obj" 87 -@erase "$(INTDIR)\StdAfx.obj"
88 -@erase "$(INTDIR)\Trayer.obj" 88 -@erase "$(INTDIR)\Trayer.obj"
89 -@erase "$(OUTDIR)\pumpkin.ex_" 89 -@erase "$(OUTDIR)\pumpkin.ex_"
90 -@erase "$(OUTDIR)\pumpkin.exe" 90 -@erase "$(OUTDIR)\pumpkin.exe"
91 91
92"$(OUTDIR)" : 92"$(OUTDIR)" :
93 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 93 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
94 94
95# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c 95# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c
96# ADD CPP /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c 96# ADD CPP /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c
97CPP_PROJ=/nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 97CPP_PROJ=/nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
98 "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yu"stdafx.h" /Fo"$(INTDIR)/"\ 98 "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yu"stdafx.h" /Fo"$(INTDIR)/"\
99 /c 99 /c
100CPP_OBJS=.\Release/ 100CPP_OBJS=.\Release/
101CPP_SBRS=.\. 101CPP_SBRS=.\.
102# ADD BASE MTL /nologo /D "NDEBUG" /win32 102# ADD BASE MTL /nologo /D "NDEBUG" /win32
103# ADD MTL /nologo /D "NDEBUG" /win32 103# ADD MTL /nologo /D "NDEBUG" /win32
104MTL_PROJ=/nologo /D "NDEBUG" /win32 104MTL_PROJ=/nologo /D "NDEBUG" /win32
105# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 105# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
106# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 106# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
107RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" /d "_AFXDLL" 107RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" /d "_AFXDLL"
108BSC32=bscmake.exe 108BSC32=bscmake.exe
109# ADD BASE BSC32 /nologo 109# ADD BASE BSC32 /nologo
110# ADD BSC32 /nologo 110# ADD BSC32 /nologo
111BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" 111BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc"
112BSC32_SBRS= \ 112BSC32_SBRS= \
113 113
114LINK32=link.exe 114LINK32=link.exe
115# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 115# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
116# ADD LINK32 /nologo /subsystem:windows /machine:I386 116# ADD LINK32 /nologo /subsystem:windows /machine:I386
117LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ 117LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\
118 /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" 118 /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe"
119LINK32_OBJS= \ 119LINK32_OBJS= \
120 "$(INTDIR)\ACLTargetCombo.obj" \ 120 "$(INTDIR)\ACLTargetCombo.obj" \
121 "$(INTDIR)\ConfirmRRQDlg.obj" \ 121 "$(INTDIR)\ConfirmRRQDlg.obj" \
122 "$(INTDIR)\ConfirmWRQDlg.obj" \ 122 "$(INTDIR)\ConfirmWRQDlg.obj" \
123 "$(INTDIR)\PropsACL.obj" \ 123 "$(INTDIR)\PropsACL.obj" \
124 "$(INTDIR)\PropsNetwork.obj" \ 124 "$(INTDIR)\PropsNetwork.obj" \
125 "$(INTDIR)\PropsServer.obj" \ 125 "$(INTDIR)\PropsServer.obj" \
126 "$(INTDIR)\PropsSounds.obj" \ 126 "$(INTDIR)\PropsSounds.obj" \
127 "$(INTDIR)\PumpKIN.obj" \ 127 "$(INTDIR)\PumpKIN.obj" \
128 "$(INTDIR)\pumpkin.res" \ 128 "$(INTDIR)\pumpkin.res" \
129 "$(INTDIR)\PumpKINDlg.obj" \ 129 "$(INTDIR)\PumpKINDlg.obj" \
130 "$(INTDIR)\RequestDlg.obj" \ 130 "$(INTDIR)\RequestDlg.obj" \
131 "$(INTDIR)\Resolver.obj" \ 131 "$(INTDIR)\Resolver.obj" \
132 "$(INTDIR)\Retrier.obj" \ 132 "$(INTDIR)\Retrier.obj" \
133 "$(INTDIR)\StdAfx.obj" \ 133 "$(INTDIR)\StdAfx.obj" \
134 "$(INTDIR)\Trayer.obj" 134 "$(INTDIR)\Trayer.obj"
135 135
136"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 136"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
137 $(LINK32) @<< 137 $(LINK32) @<<
138 $(LINK32_FLAGS) $(LINK32_OBJS) 138 $(LINK32_FLAGS) $(LINK32_OBJS)
139<< 139<<
140 140
141# Begin Custom Build 141# Begin Custom Build
142OutDir=.\Release 142OutDir=.\Release
143TargetName=pumpkin 143TargetName=pumpkin
144InputPath=.\Release\pumpkin.exe 144InputPath=.\Release\pumpkin.exe
145SOURCE=$(InputPath) 145SOURCE=$(InputPath)
146 146
147"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 147"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
148 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_ 148 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_
149 149
150# End Custom Build 150# End Custom Build
151 151
152!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 152!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
153 153
154# PROP BASE Use_MFC 6 154# PROP BASE Use_MFC 6
155# PROP BASE Use_Debug_Libraries 1 155# PROP BASE Use_Debug_Libraries 1
156# PROP BASE Output_Dir "Debug" 156# PROP BASE Output_Dir "Debug"
157# PROP BASE Intermediate_Dir "Debug" 157# PROP BASE Intermediate_Dir "Debug"
158# PROP BASE Target_Dir "" 158# PROP BASE Target_Dir ""
159# PROP Use_MFC 6 159# PROP Use_MFC 6
160# PROP Use_Debug_Libraries 1 160# PROP Use_Debug_Libraries 1
161# PROP Output_Dir "Debug" 161# PROP Output_Dir "Debug"
162# PROP Intermediate_Dir "Debug" 162# PROP Intermediate_Dir "Debug"
163# PROP Target_Dir "" 163# PROP Target_Dir ""
164OUTDIR=.\Debug 164OUTDIR=.\Debug
165INTDIR=.\Debug 165INTDIR=.\Debug
166# Begin Custom Macros 166# Begin Custom Macros
167OutDir=.\Debug 167OutDir=.\Debug
168TargetName=pumpkin 168TargetName=pumpkin
169# End Custom Macros 169# End Custom Macros
170 170
171ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.bsc" "$(OUTDIR)\pumpkin.ex_"\ 171ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.bsc" "$(OUTDIR)\pumpkin.ex_"\
172 "$(OUTDIR)\pumpkin.hlp" "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_"\ 172 "$(OUTDIR)\pumpkin.hlp" "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_"\
173 "$(OUTDIR)\pumpkin.cn_" 173 "$(OUTDIR)\pumpkin.cn_"
174 174
175CLEAN : 175CLEAN :
176 -@erase "$(INTDIR)\ACLTargetCombo.obj" 176 -@erase "$(INTDIR)\ACLTargetCombo.obj"
177 -@erase "$(INTDIR)\ACLTargetCombo.sbr" 177 -@erase "$(INTDIR)\ACLTargetCombo.sbr"
178 -@erase "$(INTDIR)\ConfirmRRQDlg.obj" 178 -@erase "$(INTDIR)\ConfirmRRQDlg.obj"
179 -@erase "$(INTDIR)\ConfirmRRQDlg.sbr" 179 -@erase "$(INTDIR)\ConfirmRRQDlg.sbr"
180 -@erase "$(INTDIR)\ConfirmWRQDlg.obj" 180 -@erase "$(INTDIR)\ConfirmWRQDlg.obj"
181 -@erase "$(INTDIR)\ConfirmWRQDlg.sbr" 181 -@erase "$(INTDIR)\ConfirmWRQDlg.sbr"
182 -@erase "$(INTDIR)\PropsACL.obj" 182 -@erase "$(INTDIR)\PropsACL.obj"
183 -@erase "$(INTDIR)\PropsACL.sbr" 183 -@erase "$(INTDIR)\PropsACL.sbr"
184 -@erase "$(INTDIR)\PropsNetwork.obj" 184 -@erase "$(INTDIR)\PropsNetwork.obj"
185 -@erase "$(INTDIR)\PropsNetwork.sbr" 185 -@erase "$(INTDIR)\PropsNetwork.sbr"
186 -@erase "$(INTDIR)\PropsServer.obj" 186 -@erase "$(INTDIR)\PropsServer.obj"
187 -@erase "$(INTDIR)\PropsServer.sbr" 187 -@erase "$(INTDIR)\PropsServer.sbr"
188 -@erase "$(INTDIR)\PropsSounds.obj" 188 -@erase "$(INTDIR)\PropsSounds.obj"
189 -@erase "$(INTDIR)\PropsSounds.sbr" 189 -@erase "$(INTDIR)\PropsSounds.sbr"
190 -@erase "$(INTDIR)\pumpkin.cn_" 190 -@erase "$(INTDIR)\pumpkin.cn_"
191 -@erase "$(INTDIR)\pumpkin.cnt" 191 -@erase "$(INTDIR)\pumpkin.cnt"
192 -@erase "$(INTDIR)\pumpkin.hl_" 192 -@erase "$(INTDIR)\pumpkin.hl_"
193 -@erase "$(INTDIR)\pumpkin.hlp" 193 -@erase "$(INTDIR)\pumpkin.hlp"
194 -@erase "$(INTDIR)\PumpKIN.obj" 194 -@erase "$(INTDIR)\PumpKIN.obj"
195 -@erase "$(INTDIR)\pumpkin.pch" 195 -@erase "$(INTDIR)\pumpkin.pch"
196 -@erase "$(INTDIR)\pumpkin.res" 196 -@erase "$(INTDIR)\pumpkin.res"
197 -@erase "$(INTDIR)\PumpKIN.sbr" 197 -@erase "$(INTDIR)\PumpKIN.sbr"
198 -@erase "$(INTDIR)\PumpKINDlg.obj" 198 -@erase "$(INTDIR)\PumpKINDlg.obj"
199 -@erase "$(INTDIR)\PumpKINDlg.sbr" 199 -@erase "$(INTDIR)\PumpKINDlg.sbr"
200 -@erase "$(INTDIR)\RequestDlg.obj" 200 -@erase "$(INTDIR)\RequestDlg.obj"
201 -@erase "$(INTDIR)\RequestDlg.sbr" 201 -@erase "$(INTDIR)\RequestDlg.sbr"
202 -@erase "$(INTDIR)\Resolver.obj" 202 -@erase "$(INTDIR)\Resolver.obj"
203 -@erase "$(INTDIR)\Resolver.sbr" 203 -@erase "$(INTDIR)\Resolver.sbr"
204 -@erase "$(INTDIR)\Retrier.obj" 204 -@erase "$(INTDIR)\Retrier.obj"
205 -@erase "$(INTDIR)\Retrier.sbr" 205 -@erase "$(INTDIR)\Retrier.sbr"
206 -@erase "$(INTDIR)\StdAfx.obj" 206 -@erase "$(INTDIR)\StdAfx.obj"
207 -@erase "$(INTDIR)\StdAfx.sbr" 207 -@erase "$(INTDIR)\StdAfx.sbr"
208 -@erase "$(INTDIR)\Trayer.obj" 208 -@erase "$(INTDIR)\Trayer.obj"
209 -@erase "$(INTDIR)\Trayer.sbr" 209 -@erase "$(INTDIR)\Trayer.sbr"
210 -@erase "$(INTDIR)\vc40.idb" 210 -@erase "$(INTDIR)\vc40.idb"
211 -@erase "$(INTDIR)\vc40.pdb" 211 -@erase "$(INTDIR)\vc40.pdb"
212 -@erase "$(OUTDIR)\pumpkin.bsc" 212 -@erase "$(OUTDIR)\pumpkin.bsc"
213 -@erase "$(OUTDIR)\pumpkin.ex_" 213 -@erase "$(OUTDIR)\pumpkin.ex_"
214 -@erase "$(OUTDIR)\pumpkin.exe" 214 -@erase "$(OUTDIR)\pumpkin.exe"
215 -@erase "$(OUTDIR)\pumpkin.ilk" 215 -@erase "$(OUTDIR)\pumpkin.ilk"
216 -@erase "$(OUTDIR)\pumpkin.pdb" 216 -@erase "$(OUTDIR)\pumpkin.pdb"
217 217
218"$(OUTDIR)" : 218"$(OUTDIR)" :
219 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 219 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
220 220
221# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c 221# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c
222# ADD CPP /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR /Yu"stdafx.h" /c 222# ADD CPP /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR /Yu"stdafx.h" /c
223CPP_PROJ=/nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\ 223CPP_PROJ=/nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\
224 "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\ 224 "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\
225 /Yu"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c 225 /Yu"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
226CPP_OBJS=.\Debug/ 226CPP_OBJS=.\Debug/
227CPP_SBRS=.\Debug/ 227CPP_SBRS=.\Debug/
228# ADD BASE MTL /nologo /D "_DEBUG" /win32 228# ADD BASE MTL /nologo /D "_DEBUG" /win32
229# ADD MTL /nologo /D "_DEBUG" /win32 229# ADD MTL /nologo /D "_DEBUG" /win32
230MTL_PROJ=/nologo /D "_DEBUG" /win32 230MTL_PROJ=/nologo /D "_DEBUG" /win32
231# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" 231# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
232# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" 232# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
233RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL" 233RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL"
234BSC32=bscmake.exe 234BSC32=bscmake.exe
235# ADD BASE BSC32 /nologo 235# ADD BASE BSC32 /nologo
236# ADD BSC32 /nologo 236# ADD BSC32 /nologo
237BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" 237BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc"
238BSC32_SBRS= \ 238BSC32_SBRS= \
239 "$(INTDIR)\ACLTargetCombo.sbr" \ 239 "$(INTDIR)\ACLTargetCombo.sbr" \
240 "$(INTDIR)\ConfirmRRQDlg.sbr" \ 240 "$(INTDIR)\ConfirmRRQDlg.sbr" \
241 "$(INTDIR)\ConfirmWRQDlg.sbr" \ 241 "$(INTDIR)\ConfirmWRQDlg.sbr" \
242 "$(INTDIR)\PropsACL.sbr" \ 242 "$(INTDIR)\PropsACL.sbr" \
243 "$(INTDIR)\PropsNetwork.sbr" \ 243 "$(INTDIR)\PropsNetwork.sbr" \
244 "$(INTDIR)\PropsServer.sbr" \ 244 "$(INTDIR)\PropsServer.sbr" \
245 "$(INTDIR)\PropsSounds.sbr" \ 245 "$(INTDIR)\PropsSounds.sbr" \
246 "$(INTDIR)\PumpKIN.sbr" \ 246 "$(INTDIR)\PumpKIN.sbr" \
247 "$(INTDIR)\PumpKINDlg.sbr" \ 247 "$(INTDIR)\PumpKINDlg.sbr" \
248 "$(INTDIR)\RequestDlg.sbr" \ 248 "$(INTDIR)\RequestDlg.sbr" \
249 "$(INTDIR)\Resolver.sbr" \ 249 "$(INTDIR)\Resolver.sbr" \
250 "$(INTDIR)\Retrier.sbr" \ 250 "$(INTDIR)\Retrier.sbr" \
251 "$(INTDIR)\StdAfx.sbr" \ 251 "$(INTDIR)\StdAfx.sbr" \
252 "$(INTDIR)\Trayer.sbr" 252 "$(INTDIR)\Trayer.sbr"
253 253
254"$(OUTDIR)\pumpkin.bsc" : "$(OUTDIR)" $(BSC32_SBRS) 254"$(OUTDIR)\pumpkin.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
255 $(BSC32) @<< 255 $(BSC32) @<<
256 $(BSC32_FLAGS) $(BSC32_SBRS) 256 $(BSC32_FLAGS) $(BSC32_SBRS)
257<< 257<<
258 258
259LINK32=link.exe 259LINK32=link.exe
260# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 260# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386
261# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 261# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386
262LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\ 262LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\
263 /pdb:"$(OUTDIR)/pumpkin.pdb" /debug /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" 263 /pdb:"$(OUTDIR)/pumpkin.pdb" /debug /machine:I386 /out:"$(OUTDIR)/pumpkin.exe"
264LINK32_OBJS= \ 264LINK32_OBJS= \
265 "$(INTDIR)\ACLTargetCombo.obj" \ 265 "$(INTDIR)\ACLTargetCombo.obj" \
266 "$(INTDIR)\ConfirmRRQDlg.obj" \ 266 "$(INTDIR)\ConfirmRRQDlg.obj" \
267 "$(INTDIR)\ConfirmWRQDlg.obj" \ 267 "$(INTDIR)\ConfirmWRQDlg.obj" \
268 "$(INTDIR)\PropsACL.obj" \ 268 "$(INTDIR)\PropsACL.obj" \
269 "$(INTDIR)\PropsNetwork.obj" \ 269 "$(INTDIR)\PropsNetwork.obj" \
270 "$(INTDIR)\PropsServer.obj" \ 270 "$(INTDIR)\PropsServer.obj" \
271 "$(INTDIR)\PropsSounds.obj" \ 271 "$(INTDIR)\PropsSounds.obj" \
272 "$(INTDIR)\PumpKIN.obj" \ 272 "$(INTDIR)\PumpKIN.obj" \
273 "$(INTDIR)\pumpkin.res" \ 273 "$(INTDIR)\pumpkin.res" \
274 "$(INTDIR)\PumpKINDlg.obj" \ 274 "$(INTDIR)\PumpKINDlg.obj" \
275 "$(INTDIR)\RequestDlg.obj" \ 275 "$(INTDIR)\RequestDlg.obj" \
276 "$(INTDIR)\Resolver.obj" \ 276 "$(INTDIR)\Resolver.obj" \
277 "$(INTDIR)\Retrier.obj" \ 277 "$(INTDIR)\Retrier.obj" \
278 "$(INTDIR)\StdAfx.obj" \ 278 "$(INTDIR)\StdAfx.obj" \
279 "$(INTDIR)\Trayer.obj" 279 "$(INTDIR)\Trayer.obj"
280 280
281"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 281"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
282 $(LINK32) @<< 282 $(LINK32) @<<
283 $(LINK32_FLAGS) $(LINK32_OBJS) 283 $(LINK32_FLAGS) $(LINK32_OBJS)
284<< 284<<
285 285
286# Begin Custom Build 286# Begin Custom Build
287OutDir=.\Debug 287OutDir=.\Debug
288TargetName=pumpkin 288TargetName=pumpkin
289InputPath=.\Debug\pumpkin.exe 289InputPath=.\Debug\pumpkin.exe
290SOURCE=$(InputPath) 290SOURCE=$(InputPath)
291 291
292"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 292"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
293 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_ 293 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_
294 294
295# End Custom Build 295# End Custom Build
296 296
297!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 297!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
298 298
299# PROP BASE Use_MFC 6 299# PROP BASE Use_MFC 6
300# PROP BASE Use_Debug_Libraries 0 300# PROP BASE Use_Debug_Libraries 0
301# PROP BASE Output_Dir "PumpKIN_" 301# PROP BASE Output_Dir "PumpKIN_"
302# PROP BASE Intermediate_Dir "PumpKIN_" 302# PROP BASE Intermediate_Dir "PumpKIN_"
303# PROP BASE Target_Dir "" 303# PROP BASE Target_Dir ""
304# PROP Use_MFC 5 304# PROP Use_MFC 5
305# PROP Use_Debug_Libraries 0 305# PROP Use_Debug_Libraries 0
306# PROP Output_Dir "Releast" 306# PROP Output_Dir "Releast"
307# PROP Intermediate_Dir "Releast" 307# PROP Intermediate_Dir "Releast"
308# PROP Target_Dir "" 308# PROP Target_Dir ""
309OUTDIR=.\Releast 309OUTDIR=.\Releast
310INTDIR=.\Releast 310INTDIR=.\Releast
311# Begin Custom Macros 311# Begin Custom Macros
312OutDir=.\Releast 312OutDir=.\Releast
313TargetName=pumpkin 313TargetName=pumpkin
314# End Custom Macros 314# End Custom Macros
315 315
316ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ 316ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\
317 "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" 317 "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_"
318 318
319CLEAN : 319CLEAN :
320 -@erase "$(INTDIR)\ACLTargetCombo.obj" 320 -@erase "$(INTDIR)\ACLTargetCombo.obj"
321 -@erase "$(INTDIR)\ConfirmRRQDlg.obj" 321 -@erase "$(INTDIR)\ConfirmRRQDlg.obj"
322 -@erase "$(INTDIR)\ConfirmWRQDlg.obj" 322 -@erase "$(INTDIR)\ConfirmWRQDlg.obj"
323 -@erase "$(INTDIR)\PropsACL.obj" 323 -@erase "$(INTDIR)\PropsACL.obj"
324 -@erase "$(INTDIR)\PropsNetwork.obj" 324 -@erase "$(INTDIR)\PropsNetwork.obj"
325 -@erase "$(INTDIR)\PropsServer.obj" 325 -@erase "$(INTDIR)\PropsServer.obj"
326 -@erase "$(INTDIR)\PropsSounds.obj" 326 -@erase "$(INTDIR)\PropsSounds.obj"
327 -@erase "$(INTDIR)\pumpkin.cn_" 327 -@erase "$(INTDIR)\pumpkin.cn_"
328 -@erase "$(INTDIR)\pumpkin.cnt" 328 -@erase "$(INTDIR)\pumpkin.cnt"
329 -@erase "$(INTDIR)\pumpkin.hl_" 329 -@erase "$(INTDIR)\pumpkin.hl_"
330 -@erase "$(INTDIR)\pumpkin.hlp" 330 -@erase "$(INTDIR)\pumpkin.hlp"
331 -@erase "$(INTDIR)\PumpKIN.obj" 331 -@erase "$(INTDIR)\PumpKIN.obj"
332 -@erase "$(INTDIR)\pumpkin.pch" 332 -@erase "$(INTDIR)\pumpkin.pch"
333 -@erase "$(INTDIR)\pumpkin.res" 333 -@erase "$(INTDIR)\pumpkin.res"
334 -@erase "$(INTDIR)\PumpKINDlg.obj" 334 -@erase "$(INTDIR)\PumpKINDlg.obj"
335 -@erase "$(INTDIR)\RequestDlg.obj" 335 -@erase "$(INTDIR)\RequestDlg.obj"
336 -@erase "$(INTDIR)\Resolver.obj" 336 -@erase "$(INTDIR)\Resolver.obj"
337 -@erase "$(INTDIR)\Retrier.obj" 337 -@erase "$(INTDIR)\Retrier.obj"
338 -@erase "$(INTDIR)\StdAfx.obj" 338 -@erase "$(INTDIR)\StdAfx.obj"
339 -@erase "$(INTDIR)\Trayer.obj" 339 -@erase "$(INTDIR)\Trayer.obj"
340 -@erase "$(OUTDIR)\pumpkin.ex_" 340 -@erase "$(OUTDIR)\pumpkin.ex_"
341 -@erase "$(OUTDIR)\pumpkin.exe" 341 -@erase "$(OUTDIR)\pumpkin.exe"
342 342
343"$(OUTDIR)" : 343"$(OUTDIR)" :
344 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 344 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
345 345
346# ADD BASE CPP /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c 346# ADD BASE CPP /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /c
347# ADD CPP /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /c 347# ADD CPP /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /c
348CPP_PROJ=/nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 348CPP_PROJ=/nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
349 "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yu"stdafx.h" /Fo"$(INTDIR)/" /c 349 "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yu"stdafx.h" /Fo"$(INTDIR)/" /c
350CPP_OBJS=.\Releast/ 350CPP_OBJS=.\Releast/
351CPP_SBRS=.\. 351CPP_SBRS=.\.
352# ADD BASE MTL /nologo /D "NDEBUG" /win32 352# ADD BASE MTL /nologo /D "NDEBUG" /win32
353# ADD MTL /nologo /D "NDEBUG" /win32 353# ADD MTL /nologo /D "NDEBUG" /win32
354MTL_PROJ=/nologo /D "NDEBUG" /win32 354MTL_PROJ=/nologo /D "NDEBUG" /win32
355# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 355# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
356# ADD RSC /l 0x409 /d "NDEBUG" 356# ADD RSC /l 0x409 /d "NDEBUG"
357RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" 357RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG"
358BSC32=bscmake.exe 358BSC32=bscmake.exe
359# ADD BASE BSC32 /nologo 359# ADD BASE BSC32 /nologo
360# ADD BSC32 /nologo 360# ADD BSC32 /nologo
361BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" 361BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc"
362BSC32_SBRS= \ 362BSC32_SBRS= \
363 363
364LINK32=link.exe 364LINK32=link.exe
365# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 365# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
366# ADD LINK32 /nologo /subsystem:windows /machine:I386 366# ADD LINK32 /nologo /subsystem:windows /machine:I386
367LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ 367LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\
368 /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" 368 /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe"
369LINK32_OBJS= \ 369LINK32_OBJS= \
370 "$(INTDIR)\ACLTargetCombo.obj" \ 370 "$(INTDIR)\ACLTargetCombo.obj" \
371 "$(INTDIR)\ConfirmRRQDlg.obj" \ 371 "$(INTDIR)\ConfirmRRQDlg.obj" \
372 "$(INTDIR)\ConfirmWRQDlg.obj" \ 372 "$(INTDIR)\ConfirmWRQDlg.obj" \
373 "$(INTDIR)\PropsACL.obj" \ 373 "$(INTDIR)\PropsACL.obj" \
374 "$(INTDIR)\PropsNetwork.obj" \ 374 "$(INTDIR)\PropsNetwork.obj" \
375 "$(INTDIR)\PropsServer.obj" \ 375 "$(INTDIR)\PropsServer.obj" \
376 "$(INTDIR)\PropsSounds.obj" \ 376 "$(INTDIR)\PropsSounds.obj" \
377 "$(INTDIR)\PumpKIN.obj" \ 377 "$(INTDIR)\PumpKIN.obj" \
378 "$(INTDIR)\pumpkin.res" \ 378 "$(INTDIR)\pumpkin.res" \
379 "$(INTDIR)\PumpKINDlg.obj" \ 379 "$(INTDIR)\PumpKINDlg.obj" \
380 "$(INTDIR)\RequestDlg.obj" \ 380 "$(INTDIR)\RequestDlg.obj" \
381 "$(INTDIR)\Resolver.obj" \ 381 "$(INTDIR)\Resolver.obj" \
382 "$(INTDIR)\Retrier.obj" \ 382 "$(INTDIR)\Retrier.obj" \
383 "$(INTDIR)\StdAfx.obj" \ 383 "$(INTDIR)\StdAfx.obj" \
384 "$(INTDIR)\Trayer.obj" 384 "$(INTDIR)\Trayer.obj"
385 385
386"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 386"$(OUTDIR)\pumpkin.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
387 $(LINK32) @<< 387 $(LINK32) @<<
388 $(LINK32_FLAGS) $(LINK32_OBJS) 388 $(LINK32_FLAGS) $(LINK32_OBJS)
389<< 389<<
390 390
391# Begin Custom Build 391# Begin Custom Build
392OutDir=.\Releast 392OutDir=.\Releast
393TargetName=pumpkin 393TargetName=pumpkin
394InputPath=.\Releast\pumpkin.exe 394InputPath=.\Releast\pumpkin.exe
395SOURCE=$(InputPath) 395SOURCE=$(InputPath)
396 396
397"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 397"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
398 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_ 398 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_
399 399
400# End Custom Build 400# End Custom Build
401 401
402!ELSEIF "$(CFG)" == "Install - Win32 Debug" 402!ELSEIF "$(CFG)" == "Install - Win32 Debug"
403 403
404# PROP BASE Use_MFC 2 404# PROP BASE Use_MFC 2
405# PROP BASE Use_Debug_Libraries 1 405# PROP BASE Use_Debug_Libraries 1
406# PROP BASE Output_Dir "Install\Debug" 406# PROP BASE Output_Dir "Install\Debug"
407# PROP BASE Intermediate_Dir "Install\Debug" 407# PROP BASE Intermediate_Dir "Install\Debug"
408# PROP BASE Target_Dir "Install" 408# PROP BASE Target_Dir "Install"
409# PROP Use_MFC 0 409# PROP Use_MFC 0
410# PROP Use_Debug_Libraries 1 410# PROP Use_Debug_Libraries 1
411# PROP Output_Dir "Install\Debug" 411# PROP Output_Dir "Install\Debug"
412# PROP Intermediate_Dir "Install\Debug" 412# PROP Intermediate_Dir "Install\Debug"
413# PROP Target_Dir "Install" 413# PROP Target_Dir "Install"
414OUTDIR=.\Install\Debug 414OUTDIR=.\Install\Debug
415INTDIR=.\Install\Debug 415INTDIR=.\Install\Debug
416 416
417ALL : "$(OUTDIR)\Install.exe" 417ALL : "$(OUTDIR)\Install.exe"
418 418
419CLEAN : 419CLEAN :
420 -@erase "$(INTDIR)\install.obj" 420 -@erase "$(INTDIR)\install.obj"
421 -@erase "$(INTDIR)\Install.res" 421 -@erase "$(INTDIR)\Install.res"
422 -@erase "$(INTDIR)\vc40.idb" 422 -@erase "$(INTDIR)\vc40.idb"
423 -@erase "$(INTDIR)\vc40.pdb" 423 -@erase "$(INTDIR)\vc40.pdb"
424 -@erase "$(OUTDIR)\Install.exe" 424 -@erase "$(OUTDIR)\Install.exe"
425 -@erase "$(OUTDIR)\Install.ilk" 425 -@erase "$(OUTDIR)\Install.ilk"
426 -@erase "$(OUTDIR)\Install.pdb" 426 -@erase "$(OUTDIR)\Install.pdb"
427 427
428"$(OUTDIR)" : 428"$(OUTDIR)" :
429 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 429 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
430 430
431# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 431# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
432# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c 432# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c
433CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ 433CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
434 /D "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c 434 /D "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
435CPP_OBJS=.\Install\Debug/ 435CPP_OBJS=.\Install\Debug/
436CPP_SBRS=.\. 436CPP_SBRS=.\.
437# ADD BASE MTL /nologo /D "_DEBUG" /win32 437# ADD BASE MTL /nologo /D "_DEBUG" /win32
438# ADD MTL /nologo /D "_DEBUG" /win32 438# ADD MTL /nologo /D "_DEBUG" /win32
439MTL_PROJ=/nologo /D "_DEBUG" /win32 439MTL_PROJ=/nologo /D "_DEBUG" /win32
440# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" 440# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
441# ADD RSC /l 0x409 /d "_DEBUG" 441# ADD RSC /l 0x409 /d "_DEBUG"
442RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG" 442RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG"
443BSC32=bscmake.exe 443BSC32=bscmake.exe
444# ADD BASE BSC32 /nologo 444# ADD BASE BSC32 /nologo
445# ADD BSC32 /nologo 445# ADD BSC32 /nologo
446BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 446BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
447BSC32_SBRS= \ 447BSC32_SBRS= \
448 448
449LINK32=link.exe 449LINK32=link.exe
450# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 450# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386
451# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /debug /machine:I386 451# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /debug /machine:I386
452LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 452LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
453 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 453 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
454 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:yes\ 454 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:yes\
455 /pdb:"$(OUTDIR)/Install.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Install.exe" 455 /pdb:"$(OUTDIR)/Install.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Install.exe"
456LINK32_OBJS= \ 456LINK32_OBJS= \
457 "$(INTDIR)\install.obj" \ 457 "$(INTDIR)\install.obj" \
458 "$(INTDIR)\Install.res" 458 "$(INTDIR)\Install.res"
459 459
460"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 460"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
461 $(LINK32) @<< 461 $(LINK32) @<<
462 $(LINK32_FLAGS) $(LINK32_OBJS) 462 $(LINK32_FLAGS) $(LINK32_OBJS)
463<< 463<<
464 464
465!ELSEIF "$(CFG)" == "Install - Win32 Pure" 465!ELSEIF "$(CFG)" == "Install - Win32 Pure"
466 466
467# PROP BASE Use_MFC 2 467# PROP BASE Use_MFC 2
468# PROP BASE Use_Debug_Libraries 0 468# PROP BASE Use_Debug_Libraries 0
469# PROP BASE Output_Dir "Install\Pure" 469# PROP BASE Output_Dir "Install\Pure"
470# PROP BASE Intermediate_Dir "Install\Pure" 470# PROP BASE Intermediate_Dir "Install\Pure"
471# PROP BASE Target_Dir "Install" 471# PROP BASE Target_Dir "Install"
472# PROP Use_MFC 0 472# PROP Use_MFC 0
473# PROP Use_Debug_Libraries 0 473# PROP Use_Debug_Libraries 0
474# PROP Output_Dir "Install\Pure" 474# PROP Output_Dir "Install\Pure"
475# PROP Intermediate_Dir "Install\Pure" 475# PROP Intermediate_Dir "Install\Pure"
476# PROP Target_Dir "Install" 476# PROP Target_Dir "Install"
477OUTDIR=.\Install\Pure 477OUTDIR=.\Install\Pure
478INTDIR=.\Install\Pure 478INTDIR=.\Install\Pure
479 479
480ALL : "$(OUTDIR)\Install.exe" "$(OUTDIR)\Install.bsc" 480ALL : "$(OUTDIR)\Install.exe" "$(OUTDIR)\Install.bsc"
481 481
482CLEAN : 482CLEAN :
483 -@erase "$(INTDIR)\install.obj" 483 -@erase "$(INTDIR)\install.obj"
484 -@erase "$(INTDIR)\Install.res" 484 -@erase "$(INTDIR)\Install.res"
485 -@erase "$(INTDIR)\install.sbr" 485 -@erase "$(INTDIR)\install.sbr"
486 -@erase "$(OUTDIR)\Install.bsc" 486 -@erase "$(OUTDIR)\Install.bsc"
487 -@erase "$(OUTDIR)\Install.exe" 487 -@erase "$(OUTDIR)\Install.exe"
488 488
489"$(OUTDIR)" : 489"$(OUTDIR)" :
490 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 490 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
491 491
492# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 492# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
493# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /c 493# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /c
494CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 494CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
495 "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c 495 "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c
496CPP_OBJS=.\Install\Pure/ 496CPP_OBJS=.\Install\Pure/
497CPP_SBRS=.\Install\Pure/ 497CPP_SBRS=.\Install\Pure/
498# ADD BASE MTL /nologo /D "NDEBUG" /win32 498# ADD BASE MTL /nologo /D "NDEBUG" /win32
499# ADD MTL /nologo /D "NDEBUG" /win32 499# ADD MTL /nologo /D "NDEBUG" /win32
500MTL_PROJ=/nologo /D "NDEBUG" /win32 500MTL_PROJ=/nologo /D "NDEBUG" /win32
501# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 501# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
502# ADD RSC /l 0x409 /d "NDEBUG" 502# ADD RSC /l 0x409 /d "NDEBUG"
503RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" 503RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG"
504BSC32=bscmake.exe 504BSC32=bscmake.exe
505# ADD BASE BSC32 /nologo 505# ADD BASE BSC32 /nologo
506# ADD BSC32 /nologo 506# ADD BSC32 /nologo
507BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 507BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
508BSC32_SBRS= \ 508BSC32_SBRS= \
509 "$(INTDIR)\install.sbr" 509 "$(INTDIR)\install.sbr"
510 510
511"$(OUTDIR)\Install.bsc" : "$(OUTDIR)" $(BSC32_SBRS) 511"$(OUTDIR)\Install.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
512 $(BSC32) @<< 512 $(BSC32) @<<
513 $(BSC32_FLAGS) $(BSC32_SBRS) 513 $(BSC32_FLAGS) $(BSC32_SBRS)
514<< 514<<
515 515
516LINK32=link.exe 516LINK32=link.exe
517# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 517# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
518# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386 518# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386
519LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 519LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
520 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 520 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
521 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\ 521 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\
522 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe" 522 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe"
523LINK32_OBJS= \ 523LINK32_OBJS= \
524 "$(INTDIR)\install.obj" \ 524 "$(INTDIR)\install.obj" \
525 "$(INTDIR)\Install.res" 525 "$(INTDIR)\Install.res"
526 526
527"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 527"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
528 $(LINK32) @<< 528 $(LINK32) @<<
529 $(LINK32_FLAGS) $(LINK32_OBJS) 529 $(LINK32_FLAGS) $(LINK32_OBJS)
530<< 530<<
531 531
532!ELSEIF "$(CFG)" == "Install - Win32 Static" 532!ELSEIF "$(CFG)" == "Install - Win32 Static"
533 533
534# PROP BASE Use_MFC 2 534# PROP BASE Use_MFC 2
535# PROP BASE Use_Debug_Libraries 0 535# PROP BASE Use_Debug_Libraries 0
536# PROP BASE Output_Dir "Install\Static" 536# PROP BASE Output_Dir "Install\Static"
537# PROP BASE Intermediate_Dir "Install\Static" 537# PROP BASE Intermediate_Dir "Install\Static"
538# PROP BASE Target_Dir "Install" 538# PROP BASE Target_Dir "Install"
539# PROP Use_MFC 0 539# PROP Use_MFC 0
540# PROP Use_Debug_Libraries 0 540# PROP Use_Debug_Libraries 0
541# PROP Output_Dir "Install\Static" 541# PROP Output_Dir "Install\Static"
542# PROP Intermediate_Dir "Install\Static" 542# PROP Intermediate_Dir "Install\Static"
543# PROP Target_Dir "Install" 543# PROP Target_Dir "Install"
544OUTDIR=.\Install\Static 544OUTDIR=.\Install\Static
545INTDIR=.\Install\Static 545INTDIR=.\Install\Static
546 546
547ALL : "$(OUTDIR)\Install.exe" 547ALL : "$(OUTDIR)\Install.exe"
548 548
549CLEAN : 549CLEAN :
550 -@erase "$(INTDIR)\install.obj" 550 -@erase "$(INTDIR)\install.obj"
551 -@erase "$(INTDIR)\Install.res" 551 -@erase "$(INTDIR)\Install.res"
552 -@erase "$(OUTDIR)\Install.exe" 552 -@erase "$(OUTDIR)\Install.exe"
553 553
554"$(OUTDIR)" : 554"$(OUTDIR)" :
555 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 555 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
556 556
557# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 557# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
558# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "STATI_K" /YX /c 558# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "STATI_K" /YX /c
559CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 559CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
560 "_MBCS" /D "STATI_K" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c 560 "_MBCS" /D "STATI_K" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c
561CPP_OBJS=.\Install\Static/ 561CPP_OBJS=.\Install\Static/
562CPP_SBRS=.\. 562CPP_SBRS=.\.
563# ADD BASE MTL /nologo /D "NDEBUG" /win32 563# ADD BASE MTL /nologo /D "NDEBUG" /win32
564# ADD MTL /nologo /D "NDEBUG" /win32 564# ADD MTL /nologo /D "NDEBUG" /win32
565MTL_PROJ=/nologo /D "NDEBUG" /win32 565MTL_PROJ=/nologo /D "NDEBUG" /win32
566# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 566# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
567# ADD RSC /l 0x409 /d "NDEBUG" /d "STATI_K" 567# ADD RSC /l 0x409 /d "NDEBUG" /d "STATI_K"
568RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "STATI_K" 568RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "STATI_K"
569BSC32=bscmake.exe 569BSC32=bscmake.exe
570# ADD BASE BSC32 /nologo 570# ADD BASE BSC32 /nologo
571# ADD BSC32 /nologo 571# ADD BSC32 /nologo
572BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 572BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
573BSC32_SBRS= \ 573BSC32_SBRS= \
574 574
575LINK32=link.exe 575LINK32=link.exe
576# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 576# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
577# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386 577# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386
578LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 578LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
579 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 579 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
580 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\ 580 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\
581 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe" 581 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe"
582LINK32_OBJS= \ 582LINK32_OBJS= \
583 "$(INTDIR)\install.obj" \ 583 "$(INTDIR)\install.obj" \
584 "$(INTDIR)\Install.res" 584 "$(INTDIR)\Install.res"
585 585
586"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 586"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
587 $(LINK32) @<< 587 $(LINK32) @<<
588 $(LINK32_FLAGS) $(LINK32_OBJS) 588 $(LINK32_FLAGS) $(LINK32_OBJS)
589<< 589<<
590 590
591!ELSEIF "$(CFG)" == "Install - Win32 Canned" 591!ELSEIF "$(CFG)" == "Install - Win32 Canned"
592 592
593# PROP BASE Use_MFC 2 593# PROP BASE Use_MFC 2
594# PROP BASE Use_Debug_Libraries 0 594# PROP BASE Use_Debug_Libraries 0
595# PROP BASE Output_Dir "Install\Canned" 595# PROP BASE Output_Dir "Install\Canned"
596# PROP BASE Intermediate_Dir "Install\Canned" 596# PROP BASE Intermediate_Dir "Install\Canned"
597# PROP BASE Target_Dir "Install" 597# PROP BASE Target_Dir "Install"
598# PROP Use_MFC 0 598# PROP Use_MFC 0
599# PROP Use_Debug_Libraries 0 599# PROP Use_Debug_Libraries 0
600# PROP Output_Dir "Install\Canned" 600# PROP Output_Dir "Install\Canned"
601# PROP Intermediate_Dir "Install\Canned" 601# PROP Intermediate_Dir "Install\Canned"
602# PROP Target_Dir "Install" 602# PROP Target_Dir "Install"
603OUTDIR=.\Install\Canned 603OUTDIR=.\Install\Canned
604INTDIR=.\Install\Canned 604INTDIR=.\Install\Canned
605 605
606ALL : "$(OUTDIR)\Install.exe" 606ALL : "$(OUTDIR)\Install.exe"
607 607
608CLEAN : 608CLEAN :
609 -@erase "$(INTDIR)\install.obj" 609 -@erase "$(INTDIR)\install.obj"
610 -@erase "$(INTDIR)\Install.res" 610 -@erase "$(INTDIR)\Install.res"
611 -@erase "$(OUTDIR)\Install.exe" 611 -@erase "$(OUTDIR)\Install.exe"
612 612
613"$(OUTDIR)" : 613"$(OUTDIR)" :
614 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 614 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
615 615
616# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 616# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
617# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "K_ANNED" /YX /c 617# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "K_ANNED" /YX /c
618CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 618CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
619 "_MBCS" /D "K_ANNED" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c 619 "_MBCS" /D "K_ANNED" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c
620CPP_OBJS=.\Install\Canned/ 620CPP_OBJS=.\Install\Canned/
621CPP_SBRS=.\. 621CPP_SBRS=.\.
622# ADD BASE MTL /nologo /D "NDEBUG" /win32 622# ADD BASE MTL /nologo /D "NDEBUG" /win32
623# ADD MTL /nologo /D "NDEBUG" /win32 623# ADD MTL /nologo /D "NDEBUG" /win32
624MTL_PROJ=/nologo /D "NDEBUG" /win32 624MTL_PROJ=/nologo /D "NDEBUG" /win32
625# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 625# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
626# ADD RSC /l 0x409 /d "NDEBUG" /d "K_ANNED" 626# ADD RSC /l 0x409 /d "NDEBUG" /d "K_ANNED"
627RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "K_ANNED" 627RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "K_ANNED"
628BSC32=bscmake.exe 628BSC32=bscmake.exe
629# ADD BASE BSC32 /nologo 629# ADD BASE BSC32 /nologo
630# ADD BSC32 /nologo 630# ADD BSC32 /nologo
631BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 631BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
632BSC32_SBRS= \ 632BSC32_SBRS= \
633 633
634LINK32=link.exe 634LINK32=link.exe
635# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 635# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
636# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386 636# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386
637LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 637LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
638 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 638 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
639 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\ 639 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\
640 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe" 640 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe"
641LINK32_OBJS= \ 641LINK32_OBJS= \
642 "$(INTDIR)\install.obj" \ 642 "$(INTDIR)\install.obj" \
643 "$(INTDIR)\Install.res" 643 "$(INTDIR)\Install.res"
644 644
645"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 645"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
646 $(LINK32) @<< 646 $(LINK32) @<<
647 $(LINK32_FLAGS) $(LINK32_OBJS) 647 $(LINK32_FLAGS) $(LINK32_OBJS)
648<< 648<<
649 649
650!ENDIF 650!ENDIF
651 651
652.c{$(CPP_OBJS)}.obj: 652.c{$(CPP_OBJS)}.obj:
653 $(CPP) $(CPP_PROJ) $< 653 $(CPP) $(CPP_PROJ) $<
654 654
655.cpp{$(CPP_OBJS)}.obj: 655.cpp{$(CPP_OBJS)}.obj:
656 $(CPP) $(CPP_PROJ) $< 656 $(CPP) $(CPP_PROJ) $<
657 657
658.cxx{$(CPP_OBJS)}.obj: 658.cxx{$(CPP_OBJS)}.obj:
659 $(CPP) $(CPP_PROJ) $< 659 $(CPP) $(CPP_PROJ) $<
660 660
661.c{$(CPP_SBRS)}.sbr: 661.c{$(CPP_SBRS)}.sbr:
662 $(CPP) $(CPP_PROJ) $< 662 $(CPP) $(CPP_PROJ) $<
663 663
664.cpp{$(CPP_SBRS)}.sbr: 664.cpp{$(CPP_SBRS)}.sbr:
665 $(CPP) $(CPP_PROJ) $< 665 $(CPP) $(CPP_PROJ) $<
666 666
667.cxx{$(CPP_SBRS)}.sbr: 667.cxx{$(CPP_SBRS)}.sbr:
668 $(CPP) $(CPP_PROJ) $< 668 $(CPP) $(CPP_PROJ) $<
669 669
670################################################################################ 670################################################################################
671# Begin Target 671# Begin Target
672 672
673# Name "PumpKIN - Win32 Release" 673# Name "PumpKIN - Win32 Release"
674# Name "PumpKIN - Win32 Debug" 674# Name "PumpKIN - Win32 Debug"
675# Name "PumpKIN - Win32 Static" 675# Name "PumpKIN - Win32 Static"
676 676
677!IF "$(CFG)" == "PumpKIN - Win32 Release" 677!IF "$(CFG)" == "PumpKIN - Win32 Release"
678 678
679!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 679!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
680 680
681!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 681!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
682 682
683!ENDIF 683!ENDIF
684 684
685################################################################################ 685################################################################################
686# Begin Source File 686# Begin Source File
687 687
688SOURCE=.\PumpKIN.cpp 688SOURCE=.\PumpKIN.cpp
689
690!IF "$(CFG)" == "PumpKIN - Win32 Release"
691
692DEP_CPP_PUMPK=\ 689DEP_CPP_PUMPK=\
693 ".\pumpkin.h"\ 690 ".\pumpkin.h"\
694 ".\PumpKINDlg.h"\ 691 ".\PumpKINDlg.h"\
695 ".\shared-code\BellsNWhistles.h"\ 692 ".\shared-code\BellsNWhistles.h"\
696 ".\shared-code\kHelpers.h"\ 693 ".\shared-code\kHelpers.h"\
697 ".\stdafx.h"\ 694 ".\stdafx.h"\
698 695
699 696
697!IF "$(CFG)" == "PumpKIN - Win32 Release"
698
699
700"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ 700"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\
701 "$(INTDIR)\pumpkin.pch" 701 "$(INTDIR)\pumpkin.pch"
702 702
703 703
704!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 704!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
705 705
706DEP_CPP_PUMPK=\
707 ".\pumpkin.h"\
708 ".\PumpKINDlg.h"\
709 ".\shared-code\BellsNWhistles.h"\
710 ".\shared-code\kHelpers.h"\
711 ".\stdafx.h"\
712
713 706
714"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ 707"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\
715 "$(INTDIR)\pumpkin.pch" 708 "$(INTDIR)\pumpkin.pch"
716 709
717"$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ 710"$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\
718 "$(INTDIR)\pumpkin.pch" 711 "$(INTDIR)\pumpkin.pch"
719 712
720 713
721!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 714!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
722 715
723DEP_CPP_PUMPK=\
724 ".\pumpkin.h"\
725 ".\PumpKINDlg.h"\
726 ".\shared-code\BellsNWhistles.h"\
727 ".\shared-code\kHelpers.h"\
728 ".\stdafx.h"\
729
730 716
731"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ 717"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\
732 "$(INTDIR)\pumpkin.pch" 718 "$(INTDIR)\pumpkin.pch"
733 719
734 720
735!ENDIF 721!ENDIF
736 722
737# End Source File 723# End Source File
738################################################################################ 724################################################################################
739# Begin Source File 725# Begin Source File
740 726
741SOURCE=.\PumpKINDlg.cpp 727SOURCE=.\PumpKINDlg.cpp
728
729!IF "$(CFG)" == "PumpKIN - Win32 Release"
730
742DEP_CPP_PUMPKI=\ 731DEP_CPP_PUMPKI=\
743 ".\ACLTargetCombo.h"\ 732 ".\ACLTargetCombo.h"\
744 ".\ConfirmRRQDlg.h"\ 733 ".\ConfirmRRQDlg.h"\
745 ".\ConfirmWRQDlg.h"\ 734 ".\ConfirmWRQDlg.h"\
746 ".\PropsACL.h"\ 735 ".\PropsACL.h"\
747 ".\PropsNetwork.h"\ 736 ".\PropsNetwork.h"\
748 ".\PropsServer.h"\ 737 ".\PropsServer.h"\
749 ".\PropsSounds.h"\ 738 ".\PropsSounds.h"\
750 ".\pumpkin.h"\ 739 ".\pumpkin.h"\
751 ".\PumpKINDlg.h"\ 740 ".\PumpKINDlg.h"\
752 ".\RequestDlg.h"\ 741 ".\RequestDlg.h"\
753 ".\Resolver.h"\ 742 ".\Resolver.h"\
754 ".\Retrier.h"\ 743 ".\Retrier.h"\
755 ".\shared-code\BellsNWhistles.h"\ 744 ".\shared-code\BellsNWhistles.h"\
756 ".\shared-code\kHelpers.h"\ 745 ".\shared-code\kHelpers.h"\
757 ".\stdafx.h"\ 746 ".\stdafx.h"\
758 ".\Trayer.h"\ 747 ".\Trayer.h"\
759 748
760 749
761!IF "$(CFG)" == "PumpKIN - Win32 Release"
762
763
764"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ 750"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\
765 "$(INTDIR)\pumpkin.pch" 751 "$(INTDIR)\pumpkin.pch"
766 752
767 753
768!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 754!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
769 755
756DEP_CPP_PUMPKI=\
757 ".\ACLTargetCombo.h"\
758 ".\ConfirmRRQDlg.h"\
759 ".\ConfirmWRQDlg.h"\
760 ".\PropsACL.h"\
761 ".\PropsNetwork.h"\
762 ".\PropsServer.h"\
763 ".\PropsSounds.h"\
764 ".\pumpkin.h"\
765 ".\PumpKINDlg.h"\
766 ".\RequestDlg.h"\
767 ".\Resolver.h"\
768 ".\Retrier.h"\
769 ".\shared-code\kHelpers.h"\
770 ".\stdafx.h"\
771 ".\Trayer.h"\
772
773NODEP_CPP_PUMPKI=\
774 ".\DoSelect"\
775
770 776
771"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ 777"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\
772 "$(INTDIR)\pumpkin.pch" 778 "$(INTDIR)\pumpkin.pch"
773 779
774"$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ 780"$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\
775 "$(INTDIR)\pumpkin.pch" 781 "$(INTDIR)\pumpkin.pch"
776 782
777 783
778!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 784!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
779 785
786DEP_CPP_PUMPKI=\
787 ".\ACLTargetCombo.h"\
788 ".\ConfirmRRQDlg.h"\
789 ".\ConfirmWRQDlg.h"\
790 ".\PropsACL.h"\
791 ".\PropsNetwork.h"\
792 ".\PropsServer.h"\
793 ".\PropsSounds.h"\
794 ".\pumpkin.h"\
795 ".\PumpKINDlg.h"\
796 ".\RequestDlg.h"\
797 ".\Resolver.h"\
798 ".\Retrier.h"\
799 ".\shared-code\BellsNWhistles.h"\
800 ".\shared-code\kHelpers.h"\
801 ".\stdafx.h"\
802 ".\Trayer.h"\
803
780 804
781"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ 805"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\
782 "$(INTDIR)\pumpkin.pch" 806 "$(INTDIR)\pumpkin.pch"
783 807
784 808
785!ENDIF 809!ENDIF
786 810
787# End Source File 811# End Source File
788################################################################################ 812################################################################################
789# Begin Source File 813# Begin Source File
790 814
791SOURCE=.\StdAfx.cpp 815SOURCE=.\StdAfx.cpp
792DEP_CPP_STDAF=\ 816DEP_CPP_STDAF=\
793 ".\shared-code\BellsNWhistles.h"\ 817 ".\shared-code\BellsNWhistles.h"\
794 ".\shared-code\kHelpers.h"\ 818 ".\shared-code\kHelpers.h"\
795 ".\stdafx.h"\ 819 ".\stdafx.h"\
796 820
797 821
798!IF "$(CFG)" == "PumpKIN - Win32 Release" 822!IF "$(CFG)" == "PumpKIN - Win32 Release"
799 823
800# ADD CPP /Yc"stdafx.h" 824# ADD CPP /Yc"stdafx.h"
801 825
802BuildCmds= \ 826BuildCmds= \
803 $(CPP) /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 827 $(CPP) /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
804 "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/"\ 828 "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/"\
805 /c $(SOURCE) \ 829 /c $(SOURCE) \
806 830
807 831
808"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 832"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
809 $(BuildCmds) 833 $(BuildCmds)
810 834
811"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 835"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
812 $(BuildCmds) 836 $(BuildCmds)
813 837
814!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 838!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
815 839
816# ADD CPP /Yc"stdafx.h" 840# ADD CPP /Yc"stdafx.h"
817 841
818BuildCmds= \ 842BuildCmds= \
819 $(CPP) /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\ 843 $(CPP) /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\
820 "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\ 844 "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\
821 /Yc"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ 845 /Yc"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \
822 846
823 847
824"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 848"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
825 $(BuildCmds) 849 $(BuildCmds)
826 850
827"$(INTDIR)\StdAfx.sbr" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 851"$(INTDIR)\StdAfx.sbr" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
828 $(BuildCmds) 852 $(BuildCmds)
829 853
830"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 854"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
831 $(BuildCmds) 855 $(BuildCmds)
832 856
833!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 857!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
834 858
835# ADD BASE CPP /Yc"stdafx.h" 859# ADD BASE CPP /Yc"stdafx.h"
836# ADD CPP /Yc"stdafx.h" 860# ADD CPP /Yc"stdafx.h"
837 861
838BuildCmds= \ 862BuildCmds= \
839 $(CPP) /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 863 $(CPP) /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
840 "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/" /c $(SOURCE) \ 864 "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/" /c $(SOURCE) \
841 865
842 866
843"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 867"$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
844 $(BuildCmds) 868 $(BuildCmds)
845 869
846"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" 870"$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)"
847 $(BuildCmds) 871 $(BuildCmds)
848 872
849!ENDIF 873!ENDIF
850 874
851# End Source File 875# End Source File
852################################################################################ 876################################################################################
853# Begin Source File 877# Begin Source File
854 878
855SOURCE=.\pumpkin.rc 879SOURCE=.\pumpkin.rc
856DEP_RSC_PUMPKIN=\ 880DEP_RSC_PUMPKIN=\
857 ".\res\down.ico"\ 881 ".\res\down.ico"\
858 ".\res\failed.wav"\ 882 ".\res\failed.wav"\
859 ".\res\finished.wav"\ 883 ".\res\finished.wav"\
860 ".\res\PumpKIN.ico"\ 884 ".\res\PumpKIN.ico"\
861 ".\res\pumpkin.rc2"\ 885 ".\res\pumpkin.rc2"\
862 ".\res\remove.ico"\ 886 ".\res\remove.ico"\
863 ".\res\ring.wav"\ 887 ".\res\ring.wav"\
864 ".\res\rrq.ico"\ 888 ".\res\rrq.ico"\
865 ".\res\up.ico"\ 889 ".\res\up.ico"\
866 ".\res\wrq.ico"\ 890 ".\res\wrq.ico"\
867 ".\shared-data\browse-icon.ico"\ 891 ".\shared-data\browse-icon.ico"\
868 ".\shared-data\klever-background.bmp"\ 892 ".\shared-data\klever-background.bmp"\
869 ".\shared-data\play-icon.ico"\ 893 ".\shared-data\play-icon.ico"\
870 894
871 895
872!IF "$(CFG)" == "PumpKIN - Win32 Release" 896!IF "$(CFG)" == "PumpKIN - Win32 Release"
873 897
874 898
875"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" 899"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)"
876 $(RSC) $(RSC_PROJ) $(SOURCE) 900 $(RSC) $(RSC_PROJ) $(SOURCE)
877 901
878 902
879!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 903!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
880 904
881 905
882"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" 906"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)"
883 $(RSC) $(RSC_PROJ) $(SOURCE) 907 $(RSC) $(RSC_PROJ) $(SOURCE)
884 908
885 909
886!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 910!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
887 911
888 912
889"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" 913"$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)"
890 $(RSC) $(RSC_PROJ) $(SOURCE) 914 $(RSC) $(RSC_PROJ) $(SOURCE)
891 915
892 916
893!ENDIF 917!ENDIF
894 918
895# End Source File 919# End Source File
896################################################################################ 920################################################################################
897# Begin Source File 921# Begin Source File
898 922
899SOURCE=.\help\pumpkin.hpj 923SOURCE=.\help\pumpkin.hpj
900 924
901!IF "$(CFG)" == "PumpKIN - Win32 Release" 925!IF "$(CFG)" == "PumpKIN - Win32 Release"
902 926
903# Begin Custom Build - Making help files... 927# Begin Custom Build - Making help files...
904OutDir=.\Release 928OutDir=.\Release
905ProjDir=. 929ProjDir=.
906TargetName=pumpkin 930TargetName=pumpkin
907InputPath=.\help\pumpkin.hpj 931InputPath=.\help\pumpkin.hpj
908 932
909BuildCmds= \ 933BuildCmds= \
910 "$(ProjDir)\makehelp.bat" \ 934 "$(ProjDir)\makehelp.bat" \
911 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ 935 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \
912 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ 936 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \
913 937
914 938
915"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 939"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
916 $(BuildCmds) 940 $(BuildCmds)
917 941
918"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 942"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
919 $(BuildCmds) 943 $(BuildCmds)
920 944
921"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 945"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
922 $(BuildCmds) 946 $(BuildCmds)
923 947
924"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 948"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
925 $(BuildCmds) 949 $(BuildCmds)
926# End Custom Build 950# End Custom Build
927 951
928!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 952!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
929 953
930# Begin Custom Build - Making help files... 954# Begin Custom Build - Making help files...
931OutDir=.\Debug 955OutDir=.\Debug
932ProjDir=. 956ProjDir=.
933TargetName=pumpkin 957TargetName=pumpkin
934InputPath=.\help\pumpkin.hpj 958InputPath=.\help\pumpkin.hpj
935 959
936BuildCmds= \ 960BuildCmds= \
937 "$(ProjDir)\makehelp.bat" \ 961 "$(ProjDir)\makehelp.bat" \
938 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ 962 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \
939 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ 963 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \
940 964
941 965
942"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 966"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
943 $(BuildCmds) 967 $(BuildCmds)
944 968
945"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 969"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
946 $(BuildCmds) 970 $(BuildCmds)
947 971
948"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 972"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
949 $(BuildCmds) 973 $(BuildCmds)
950 974
951"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 975"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
952 $(BuildCmds) 976 $(BuildCmds)
953# End Custom Build 977# End Custom Build
954 978
955!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 979!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
956 980
957# Begin Custom Build - Making help files... 981# Begin Custom Build - Making help files...
958OutDir=.\Releast 982OutDir=.\Releast
959ProjDir=. 983ProjDir=.
960TargetName=pumpkin 984TargetName=pumpkin
961InputPath=.\help\pumpkin.hpj 985InputPath=.\help\pumpkin.hpj
962 986
963BuildCmds= \ 987BuildCmds= \
964 "$(ProjDir)\makehelp.bat" \ 988 "$(ProjDir)\makehelp.bat" \
965 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ 989 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \
966 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ 990 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \
967 991
968 992
969"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 993"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
970 $(BuildCmds) 994 $(BuildCmds)
971 995
972"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 996"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
973 $(BuildCmds) 997 $(BuildCmds)
974 998
975"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 999"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
976 $(BuildCmds) 1000 $(BuildCmds)
977 1001
978"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 1002"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
979 $(BuildCmds) 1003 $(BuildCmds)
980# End Custom Build 1004# End Custom Build
981 1005
982!ENDIF 1006!ENDIF
983 1007
984# End Source File 1008# End Source File
985################################################################################ 1009################################################################################
986# Begin Source File 1010# Begin Source File
987 1011
988SOURCE=.\PropsServer.cpp 1012SOURCE=.\PropsServer.cpp
989
990!IF "$(CFG)" == "PumpKIN - Win32 Release"
991
992DEP_CPP_PROPS=\ 1013DEP_CPP_PROPS=\
993 ".\PropsServer.h"\ 1014 ".\PropsServer.h"\
994 ".\pumpkin.h"\ 1015 ".\pumpkin.h"\
995 ".\shared-code\BellsNWhistles.h"\ 1016 ".\shared-code\BellsNWhistles.h"\
996 ".\shared-code\kHelpers.h"\ 1017 ".\shared-code\kHelpers.h"\
997 ".\stdafx.h"\ 1018 ".\stdafx.h"\
998 1019
999 1020
1021!IF "$(CFG)" == "PumpKIN - Win32 Release"
1022
1023
1000"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ 1024"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\
1001 "$(INTDIR)\pumpkin.pch" 1025 "$(INTDIR)\pumpkin.pch"
1002 1026
1003 1027
1004!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1028!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1005 1029
1006DEP_CPP_PROPS=\
1007 ".\PropsServer.h"\
1008 ".\pumpkin.h"\
1009 ".\shared-code\BellsNWhistles.h"\
1010 ".\shared-code\kHelpers.h"\
1011 ".\stdafx.h"\
1012
1013 1030
1014"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ 1031"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\
1015 "$(INTDIR)\pumpkin.pch" 1032 "$(INTDIR)\pumpkin.pch"
1016 1033
1017"$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ 1034"$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\
1018 "$(INTDIR)\pumpkin.pch" 1035 "$(INTDIR)\pumpkin.pch"
1019 1036
1020 1037
1021!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1038!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1022 1039
1023DEP_CPP_PROPS=\
1024 ".\PropsServer.h"\
1025 ".\pumpkin.h"\
1026 ".\shared-code\BellsNWhistles.h"\
1027 ".\shared-code\kHelpers.h"\
1028 ".\stdafx.h"\
1029
1030 1040
1031"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ 1041"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\
1032 "$(INTDIR)\pumpkin.pch" 1042 "$(INTDIR)\pumpkin.pch"
1033 1043
1034 1044
1035!ENDIF 1045!ENDIF
1036 1046
1037# End Source File 1047# End Source File
1038################################################################################ 1048################################################################################
1039# Begin Source File 1049# Begin Source File
1040 1050
1041SOURCE=.\PropsNetwork.cpp 1051SOURCE=.\PropsNetwork.cpp
1042DEP_CPP_PROPSN=\ 1052DEP_CPP_PROPSN=\
1043 ".\PropsNetwork.h"\ 1053 ".\PropsNetwork.h"\
1044 ".\pumpkin.h"\ 1054 ".\pumpkin.h"\
1045 ".\shared-code\BellsNWhistles.h"\ 1055 ".\shared-code\BellsNWhistles.h"\
1046 ".\shared-code\kHelpers.h"\ 1056 ".\shared-code\kHelpers.h"\
1047 ".\stdafx.h"\ 1057 ".\stdafx.h"\
1048 1058
1049 1059
1050!IF "$(CFG)" == "PumpKIN - Win32 Release" 1060!IF "$(CFG)" == "PumpKIN - Win32 Release"
1051 1061
1052 1062
1053"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ 1063"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\
1054 "$(INTDIR)\pumpkin.pch" 1064 "$(INTDIR)\pumpkin.pch"
1055 1065
1056 1066
1057!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1067!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1058 1068
1059 1069
1060"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ 1070"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\
1061 "$(INTDIR)\pumpkin.pch" 1071 "$(INTDIR)\pumpkin.pch"
1062 1072
1063"$(INTDIR)\PropsNetwork.sbr" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ 1073"$(INTDIR)\PropsNetwork.sbr" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\
1064 "$(INTDIR)\pumpkin.pch" 1074 "$(INTDIR)\pumpkin.pch"
1065 1075
1066 1076
1067!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1077!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1068 1078
1069 1079
1070"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ 1080"$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\
1071 "$(INTDIR)\pumpkin.pch" 1081 "$(INTDIR)\pumpkin.pch"
1072 1082
1073 1083
1074!ENDIF 1084!ENDIF
1075 1085
1076# End Source File 1086# End Source File
1077################################################################################ 1087################################################################################
1078# Begin Source File 1088# Begin Source File
1079 1089
1080SOURCE=.\ConfirmRRQDlg.cpp 1090SOURCE=.\ConfirmRRQDlg.cpp
1081
1082!IF "$(CFG)" == "PumpKIN - Win32 Release"
1083
1084DEP_CPP_CONFI=\ 1091DEP_CPP_CONFI=\
1085 ".\ConfirmRRQDlg.h"\ 1092 ".\ConfirmRRQDlg.h"\
1086 ".\pumpkin.h"\ 1093 ".\pumpkin.h"\
1087 ".\PumpKINDlg.h"\ 1094 ".\PumpKINDlg.h"\
1088 ".\shared-code\BellsNWhistles.h"\ 1095 ".\shared-code\BellsNWhistles.h"\
1089 ".\shared-code\kHelpers.h"\ 1096 ".\shared-code\kHelpers.h"\
1090 ".\stdafx.h"\ 1097 ".\stdafx.h"\
1091 1098
1092 1099
1100!IF "$(CFG)" == "PumpKIN - Win32 Release"
1101
1102
1093"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ 1103"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\
1094 "$(INTDIR)\pumpkin.pch" 1104 "$(INTDIR)\pumpkin.pch"
1095 1105
1096 1106
1097!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1107!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1098 1108
1099DEP_CPP_CONFI=\
1100 ".\ConfirmRRQDlg.h"\
1101 ".\pumpkin.h"\
1102 ".\PumpKINDlg.h"\
1103 ".\shared-code\BellsNWhistles.h"\
1104 ".\shared-code\kHelpers.h"\
1105 ".\stdafx.h"\
1106
1107 1109
1108"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ 1110"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\
1109 "$(INTDIR)\pumpkin.pch" 1111 "$(INTDIR)\pumpkin.pch"
1110 1112
1111"$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ 1113"$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\
1112 "$(INTDIR)\pumpkin.pch" 1114 "$(INTDIR)\pumpkin.pch"
1113 1115
1114 1116
1115!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1117!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1116 1118
1117DEP_CPP_CONFI=\
1118 ".\ConfirmRRQDlg.h"\
1119 ".\pumpkin.h"\
1120 ".\PumpKINDlg.h"\
1121 ".\shared-code\BellsNWhistles.h"\
1122 ".\shared-code\kHelpers.h"\
1123 ".\stdafx.h"\
1124
1125 1119
1126"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ 1120"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\
1127 "$(INTDIR)\pumpkin.pch" 1121 "$(INTDIR)\pumpkin.pch"
1128 1122
1129 1123
1130!ENDIF 1124!ENDIF
1131 1125
1132# End Source File 1126# End Source File
1133################################################################################ 1127################################################################################
1134# Begin Source File 1128# Begin Source File
1135 1129
1136SOURCE=.\ConfirmWRQDlg.cpp 1130SOURCE=.\ConfirmWRQDlg.cpp
1137
1138!IF "$(CFG)" == "PumpKIN - Win32 Release"
1139
1140DEP_CPP_CONFIR=\ 1131DEP_CPP_CONFIR=\
1141 ".\ConfirmWRQDlg.h"\ 1132 ".\ConfirmWRQDlg.h"\
1142 ".\pumpkin.h"\ 1133 ".\pumpkin.h"\
1143 ".\PumpKINDlg.h"\ 1134 ".\PumpKINDlg.h"\
1144 ".\shared-code\BellsNWhistles.h"\ 1135 ".\shared-code\BellsNWhistles.h"\
1145 ".\shared-code\kHelpers.h"\ 1136 ".\shared-code\kHelpers.h"\
1146 ".\stdafx.h"\ 1137 ".\stdafx.h"\
1147 1138
1148 1139
1140!IF "$(CFG)" == "PumpKIN - Win32 Release"
1141
1142
1149"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ 1143"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\
1150 "$(INTDIR)\pumpkin.pch" 1144 "$(INTDIR)\pumpkin.pch"
1151 1145
1152 1146
1153!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1147!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1154 1148
1155DEP_CPP_CONFIR=\
1156 ".\ConfirmWRQDlg.h"\
1157 ".\pumpkin.h"\
1158 ".\PumpKINDlg.h"\
1159 ".\shared-code\BellsNWhistles.h"\
1160 ".\shared-code\kHelpers.h"\
1161 ".\stdafx.h"\
1162
1163 1149
1164"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ 1150"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\
1165 "$(INTDIR)\pumpkin.pch" 1151 "$(INTDIR)\pumpkin.pch"
1166 1152
1167"$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ 1153"$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\
1168 "$(INTDIR)\pumpkin.pch" 1154 "$(INTDIR)\pumpkin.pch"
1169 1155
1170 1156
1171!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1157!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1172 1158
1173DEP_CPP_CONFIR=\
1174 ".\ConfirmWRQDlg.h"\
1175 ".\pumpkin.h"\
1176 ".\PumpKINDlg.h"\
1177 ".\shared-code\BellsNWhistles.h"\
1178 ".\shared-code\kHelpers.h"\
1179 ".\stdafx.h"\
1180
1181 1159
1182"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ 1160"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\
1183 "$(INTDIR)\pumpkin.pch" 1161 "$(INTDIR)\pumpkin.pch"
1184 1162
1185 1163
1186!ENDIF 1164!ENDIF
1187 1165
1188# End Source File 1166# End Source File
1189################################################################################ 1167################################################################################
1190# Begin Source File 1168# Begin Source File
1191 1169
1192SOURCE=.\RequestDlg.cpp 1170SOURCE=.\RequestDlg.cpp
1193DEP_CPP_REQUE=\ 1171DEP_CPP_REQUE=\
1194 ".\pumpkin.h"\ 1172 ".\pumpkin.h"\
1195 ".\RequestDlg.h"\ 1173 ".\RequestDlg.h"\
1196 ".\shared-code\BellsNWhistles.h"\ 1174 ".\shared-code\BellsNWhistles.h"\
1197 ".\shared-code\kHelpers.h"\ 1175 ".\shared-code\kHelpers.h"\
1198 ".\stdafx.h"\ 1176 ".\stdafx.h"\
1199 1177
1200 1178
1201!IF "$(CFG)" == "PumpKIN - Win32 Release" 1179!IF "$(CFG)" == "PumpKIN - Win32 Release"
1202 1180
1203 1181
1204"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ 1182"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\
1205 "$(INTDIR)\pumpkin.pch" 1183 "$(INTDIR)\pumpkin.pch"
1206 1184
1207 1185
1208!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1186!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1209 1187
1210 1188
1211"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ 1189"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\
1212 "$(INTDIR)\pumpkin.pch" 1190 "$(INTDIR)\pumpkin.pch"
1213 1191
1214"$(INTDIR)\RequestDlg.sbr" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ 1192"$(INTDIR)\RequestDlg.sbr" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\
1215 "$(INTDIR)\pumpkin.pch" 1193 "$(INTDIR)\pumpkin.pch"
1216 1194
1217 1195
1218!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1196!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1219 1197
1220 1198
1221"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ 1199"$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\
1222 "$(INTDIR)\pumpkin.pch" 1200 "$(INTDIR)\pumpkin.pch"
1223 1201
1224 1202
1225!ENDIF 1203!ENDIF
1226 1204
1227# End Source File 1205# End Source File
1228################################################################################ 1206################################################################################
1229# Begin Source File 1207# Begin Source File
1230 1208
1231SOURCE=.\Resolver.cpp 1209SOURCE=.\Resolver.cpp
1232
1233!IF "$(CFG)" == "PumpKIN - Win32 Release"
1234
1235DEP_CPP_RESOL=\ 1210DEP_CPP_RESOL=\
1236 ".\pumpkin.h"\ 1211 ".\pumpkin.h"\
1237 ".\PumpKINDlg.h"\ 1212 ".\PumpKINDlg.h"\
1238 ".\Resolver.h"\ 1213 ".\Resolver.h"\
1239 ".\shared-code\BellsNWhistles.h"\ 1214 ".\shared-code\BellsNWhistles.h"\
1240 ".\shared-code\kHelpers.h"\ 1215 ".\shared-code\kHelpers.h"\
1241 ".\stdafx.h"\ 1216 ".\stdafx.h"\
1242 1217
1243 1218
1219!IF "$(CFG)" == "PumpKIN - Win32 Release"
1220
1221
1244"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ 1222"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\
1245 "$(INTDIR)\pumpkin.pch" 1223 "$(INTDIR)\pumpkin.pch"
1246 1224
1247 1225
1248!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1226!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1249 1227
1250DEP_CPP_RESOL=\
1251 ".\pumpkin.h"\
1252 ".\PumpKINDlg.h"\
1253 ".\Resolver.h"\
1254 ".\shared-code\BellsNWhistles.h"\
1255 ".\shared-code\kHelpers.h"\
1256 ".\stdafx.h"\
1257
1258 1228
1259"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ 1229"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\
1260 "$(INTDIR)\pumpkin.pch" 1230 "$(INTDIR)\pumpkin.pch"
1261 1231
1262"$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ 1232"$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\
1263 "$(INTDIR)\pumpkin.pch" 1233 "$(INTDIR)\pumpkin.pch"
1264 1234
1265 1235
1266!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1236!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1267 1237
1268DEP_CPP_RESOL=\
1269 ".\pumpkin.h"\
1270 ".\PumpKINDlg.h"\
1271 ".\Resolver.h"\
1272 ".\shared-code\BellsNWhistles.h"\
1273 ".\shared-code\kHelpers.h"\
1274 ".\stdafx.h"\
1275
1276 1238
1277"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ 1239"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\
1278 "$(INTDIR)\pumpkin.pch" 1240 "$(INTDIR)\pumpkin.pch"
1279 1241
1280 1242
1281!ENDIF 1243!ENDIF
1282 1244
1283# End Source File 1245# End Source File
1284################################################################################ 1246################################################################################
1285# Begin Source File 1247# Begin Source File
1286 1248
1287SOURCE=.\Retrier.cpp 1249SOURCE=.\Retrier.cpp
1288
1289!IF "$(CFG)" == "PumpKIN - Win32 Release"
1290
1291DEP_CPP_RETRI=\ 1250DEP_CPP_RETRI=\
1292 ".\pumpkin.h"\ 1251 ".\pumpkin.h"\
1293 ".\PumpKINDlg.h"\ 1252 ".\PumpKINDlg.h"\
1294 ".\Retrier.h"\ 1253 ".\Retrier.h"\
1295 ".\shared-code\BellsNWhistles.h"\ 1254 ".\shared-code\BellsNWhistles.h"\
1296 ".\shared-code\kHelpers.h"\ 1255 ".\shared-code\kHelpers.h"\
1297 ".\stdafx.h"\ 1256 ".\stdafx.h"\
1298 1257
1299 1258
1259!IF "$(CFG)" == "PumpKIN - Win32 Release"
1260
1261
1300"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ 1262"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\
1301 "$(INTDIR)\pumpkin.pch" 1263 "$(INTDIR)\pumpkin.pch"
1302 1264
1303 1265
1304!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1266!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1305 1267
1306DEP_CPP_RETRI=\
1307 ".\pumpkin.h"\
1308 ".\PumpKINDlg.h"\
1309 ".\Retrier.h"\
1310 ".\shared-code\BellsNWhistles.h"\
1311 ".\shared-code\kHelpers.h"\
1312 ".\stdafx.h"\
1313
1314 1268
1315"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ 1269"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\
1316 "$(INTDIR)\pumpkin.pch" 1270 "$(INTDIR)\pumpkin.pch"
1317 1271
1318"$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ 1272"$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\
1319 "$(INTDIR)\pumpkin.pch" 1273 "$(INTDIR)\pumpkin.pch"
1320 1274
1321 1275
1322!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1276!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1323 1277
1324DEP_CPP_RETRI=\
1325 ".\pumpkin.h"\
1326 ".\PumpKINDlg.h"\
1327 ".\Retrier.h"\
1328 ".\shared-code\BellsNWhistles.h"\
1329 ".\shared-code\kHelpers.h"\
1330 ".\stdafx.h"\
1331
1332 1278
1333"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ 1279"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\
1334 "$(INTDIR)\pumpkin.pch" 1280 "$(INTDIR)\pumpkin.pch"
1335 1281
1336 1282
1337!ENDIF 1283!ENDIF
1338 1284
1339# End Source File 1285# End Source File
1340################################################################################ 1286################################################################################
1341# Begin Source File 1287# Begin Source File
1342 1288
1343SOURCE=.\Trayer.cpp 1289SOURCE=.\Trayer.cpp
1344
1345!IF "$(CFG)" == "PumpKIN - Win32 Release"
1346
1347DEP_CPP_TRAYE=\ 1290DEP_CPP_TRAYE=\
1348 ".\pumpkin.h"\ 1291 ".\pumpkin.h"\
1349 ".\PumpKINDlg.h"\ 1292 ".\PumpKINDlg.h"\
1350 ".\shared-code\BellsNWhistles.h"\ 1293 ".\shared-code\BellsNWhistles.h"\
1351 ".\shared-code\kHelpers.h"\ 1294 ".\shared-code\kHelpers.h"\
1352 ".\stdafx.h"\ 1295 ".\stdafx.h"\
1353 ".\Trayer.h"\ 1296 ".\Trayer.h"\
1354 1297
1355 1298
1299!IF "$(CFG)" == "PumpKIN - Win32 Release"
1300
1301
1356"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ 1302"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\
1357 "$(INTDIR)\pumpkin.pch" 1303 "$(INTDIR)\pumpkin.pch"
1358 1304
1359 1305
1360!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1306!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1361 1307
1362DEP_CPP_TRAYE=\
1363 ".\pumpkin.h"\
1364 ".\PumpKINDlg.h"\
1365 ".\shared-code\BellsNWhistles.h"\
1366 ".\shared-code\kHelpers.h"\
1367 ".\stdafx.h"\
1368 ".\Trayer.h"\
1369
1370 1308
1371"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ 1309"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\
1372 "$(INTDIR)\pumpkin.pch" 1310 "$(INTDIR)\pumpkin.pch"
1373 1311
1374"$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ 1312"$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\
1375 "$(INTDIR)\pumpkin.pch" 1313 "$(INTDIR)\pumpkin.pch"
1376 1314
1377 1315
1378!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1316!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1379 1317
1380DEP_CPP_TRAYE=\
1381 ".\pumpkin.h"\
1382 ".\PumpKINDlg.h"\
1383 ".\shared-code\BellsNWhistles.h"\
1384 ".\shared-code\kHelpers.h"\
1385 ".\stdafx.h"\
1386 ".\Trayer.h"\
1387
1388 1318
1389"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ 1319"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\
1390 "$(INTDIR)\pumpkin.pch" 1320 "$(INTDIR)\pumpkin.pch"
1391 1321
1392 1322
1393!ENDIF 1323!ENDIF
1394 1324
1395# End Source File 1325# End Source File
1396################################################################################ 1326################################################################################
1397# Begin Source File 1327# Begin Source File
1398 1328
1399SOURCE=.\help\pumpkin.cnt 1329SOURCE=.\help\pumpkin.cnt
1400 1330
1401!IF "$(CFG)" == "PumpKIN - Win32 Release" 1331!IF "$(CFG)" == "PumpKIN - Win32 Release"
1402 1332
1403# PROP Exclude_From_Build 1 1333# PROP Exclude_From_Build 1
1404 1334
1405!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1335!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1406 1336
1407# PROP Exclude_From_Build 1 1337# PROP Exclude_From_Build 1
1408 1338
1409!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1339!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1410 1340
1411# PROP Exclude_From_Build 1 1341# PROP Exclude_From_Build 1
1412 1342
1413!ENDIF 1343!ENDIF
1414 1344
1415# End Source File 1345# End Source File
1416################################################################################ 1346################################################################################
1417# Begin Source File 1347# Begin Source File
1418 1348
1419SOURCE=.\PropsSounds.cpp 1349SOURCE=.\PropsSounds.cpp
1420
1421!IF "$(CFG)" == "PumpKIN - Win32 Release"
1422
1423DEP_CPP_PROPSS=\ 1350DEP_CPP_PROPSS=\
1424 ".\PropsSounds.h"\ 1351 ".\PropsSounds.h"\
1425 ".\pumpkin.h"\ 1352 ".\pumpkin.h"\
1426 ".\PumpKINDlg.h"\ 1353 ".\PumpKINDlg.h"\
1427 ".\shared-code\BellsNWhistles.h"\ 1354 ".\shared-code\BellsNWhistles.h"\
1428 ".\shared-code\kHelpers.h"\ 1355 ".\shared-code\kHelpers.h"\
1429 ".\stdafx.h"\ 1356 ".\stdafx.h"\
1430 1357
1431 1358
1359!IF "$(CFG)" == "PumpKIN - Win32 Release"
1360
1361
1432"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ 1362"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\
1433 "$(INTDIR)\pumpkin.pch" 1363 "$(INTDIR)\pumpkin.pch"
1434 1364
1435 1365
1436!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1366!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1437 1367
1438DEP_CPP_PROPSS=\
1439 ".\PropsSounds.h"\
1440 ".\pumpkin.h"\
1441 ".\PumpKINDlg.h"\
1442 ".\shared-code\BellsNWhistles.h"\
1443 ".\shared-code\kHelpers.h"\
1444 ".\stdafx.h"\
1445
1446 1368
1447"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ 1369"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\
1448 "$(INTDIR)\pumpkin.pch" 1370 "$(INTDIR)\pumpkin.pch"
1449 1371
1450"$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ 1372"$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\
1451 "$(INTDIR)\pumpkin.pch" 1373 "$(INTDIR)\pumpkin.pch"
1452 1374
1453 1375
1454!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1376!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1455 1377
1456DEP_CPP_PROPSS=\
1457 ".\PropsSounds.h"\
1458 ".\pumpkin.h"\
1459 ".\PumpKINDlg.h"\
1460 ".\shared-code\BellsNWhistles.h"\
1461 ".\shared-code\kHelpers.h"\
1462 ".\stdafx.h"\
1463
1464 1378
1465"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ 1379"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\
1466 "$(INTDIR)\pumpkin.pch" 1380 "$(INTDIR)\pumpkin.pch"
1467 1381
1468 1382
1469!ENDIF 1383!ENDIF
1470 1384
1471# End Source File 1385# End Source File
1472################################################################################ 1386################################################################################
1473# Begin Source File 1387# Begin Source File
1474 1388
1475SOURCE=.\PropsACL.cpp 1389SOURCE=.\PropsACL.cpp
1476DEP_CPP_PROPSA=\ 1390DEP_CPP_PROPSA=\
1477 ".\ACLTargetCombo.h"\ 1391 ".\ACLTargetCombo.h"\
1478 ".\PropsACL.h"\ 1392 ".\PropsACL.h"\
1479 ".\pumpkin.h"\ 1393 ".\pumpkin.h"\
1480 ".\PumpKINDlg.h"\ 1394 ".\PumpKINDlg.h"\
1481 ".\shared-code\BellsNWhistles.h"\ 1395 ".\shared-code\BellsNWhistles.h"\
1482 ".\shared-code\kHelpers.h"\ 1396 ".\shared-code\kHelpers.h"\
1483 ".\stdafx.h"\ 1397 ".\stdafx.h"\
1484 1398
1485 1399
1486!IF "$(CFG)" == "PumpKIN - Win32 Release" 1400!IF "$(CFG)" == "PumpKIN - Win32 Release"
1487 1401
1488 1402
1489"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ 1403"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\
1490 "$(INTDIR)\pumpkin.pch" 1404 "$(INTDIR)\pumpkin.pch"
1491 1405
1492 1406
1493!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1407!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1494 1408
1495 1409
1496"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ 1410"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\
1497 "$(INTDIR)\pumpkin.pch" 1411 "$(INTDIR)\pumpkin.pch"
1498 1412
1499"$(INTDIR)\PropsACL.sbr" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ 1413"$(INTDIR)\PropsACL.sbr" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\
1500 "$(INTDIR)\pumpkin.pch" 1414 "$(INTDIR)\pumpkin.pch"
1501 1415
1502 1416
1503!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1417!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1504 1418
1505 1419
1506"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ 1420"$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\
1507 "$(INTDIR)\pumpkin.pch" 1421 "$(INTDIR)\pumpkin.pch"
1508 1422
1509 1423
1510!ENDIF 1424!ENDIF
1511 1425
1512# End Source File 1426# End Source File
1513################################################################################ 1427################################################################################
1514# Begin Source File 1428# Begin Source File
1515 1429
1516SOURCE=.\ACLTargetCombo.cpp 1430SOURCE=.\ACLTargetCombo.cpp
1517
1518!IF "$(CFG)" == "PumpKIN - Win32 Release"
1519
1520DEP_CPP_ACLTA=\ 1431DEP_CPP_ACLTA=\
1521 ".\ACLTargetCombo.h"\ 1432 ".\ACLTargetCombo.h"\
1522 ".\pumpkin.h"\ 1433 ".\pumpkin.h"\
1523 ".\PumpKINDlg.h"\ 1434 ".\PumpKINDlg.h"\
1524 ".\shared-code\BellsNWhistles.h"\ 1435 ".\shared-code\BellsNWhistles.h"\
1525 ".\shared-code\kHelpers.h"\ 1436 ".\shared-code\kHelpers.h"\
1526 ".\stdafx.h"\ 1437 ".\stdafx.h"\
1527 1438
1528 1439
1440!IF "$(CFG)" == "PumpKIN - Win32 Release"
1441
1442
1529"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ 1443"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\
1530 "$(INTDIR)\pumpkin.pch" 1444 "$(INTDIR)\pumpkin.pch"
1531 1445
1532 1446
1533!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" 1447!ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug"
1534 1448
1535DEP_CPP_ACLTA=\
1536 ".\ACLTargetCombo.h"\
1537 ".\pumpkin.h"\
1538 ".\PumpKINDlg.h"\
1539 ".\shared-code\BellsNWhistles.h"\
1540 ".\shared-code\kHelpers.h"\
1541 ".\stdafx.h"\
1542
1543 1449
1544"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ 1450"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\
1545 "$(INTDIR)\pumpkin.pch" 1451 "$(INTDIR)\pumpkin.pch"
1546 1452
1547"$(INTDIR)\ACLTargetCombo.sbr" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ 1453"$(INTDIR)\ACLTargetCombo.sbr" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\
1548 "$(INTDIR)\pumpkin.pch" 1454 "$(INTDIR)\pumpkin.pch"
1549 1455
1550 1456
1551!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" 1457!ELSEIF "$(CFG)" == "PumpKIN - Win32 Static"
1552 1458
1553DEP_CPP_ACLTA=\
1554 ".\ACLTargetCombo.h"\
1555 ".\pumpkin.h"\
1556 ".\PumpKINDlg.h"\
1557 ".\shared-code\BellsNWhistles.h"\
1558 ".\shared-code\kHelpers.h"\
1559 ".\stdafx.h"\
1560
1561 1459
1562"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ 1460"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\
1563 "$(INTDIR)\pumpkin.pch" 1461 "$(INTDIR)\pumpkin.pch"
1564 1462
1565 1463
1566!ENDIF 1464!ENDIF
1567 1465
1568# End Source File 1466# End Source File
1569# End Target 1467# End Target
1570################################################################################ 1468################################################################################
1571# Begin Target 1469# Begin Target
1572 1470
1573# Name "Install - Win32 Debug" 1471# Name "Install - Win32 Debug"
1574# Name "Install - Win32 Pure" 1472# Name "Install - Win32 Pure"
1575# Name "Install - Win32 Static" 1473# Name "Install - Win32 Static"
1576# Name "Install - Win32 Canned" 1474# Name "Install - Win32 Canned"
1577 1475
1578!IF "$(CFG)" == "Install - Win32 Debug" 1476!IF "$(CFG)" == "Install - Win32 Debug"
1579 1477
1580!ELSEIF "$(CFG)" == "Install - Win32 Pure" 1478!ELSEIF "$(CFG)" == "Install - Win32 Pure"
1581 1479
1582!ELSEIF "$(CFG)" == "Install - Win32 Static" 1480!ELSEIF "$(CFG)" == "Install - Win32 Static"
1583 1481
1584!ELSEIF "$(CFG)" == "Install - Win32 Canned" 1482!ELSEIF "$(CFG)" == "Install - Win32 Canned"
1585 1483
1586!ENDIF 1484!ENDIF
1587 1485
1588################################################################################ 1486################################################################################
1589# Begin Source File 1487# Begin Source File
1590 1488
1591SOURCE=.\Install\Install.rc 1489SOURCE=.\Install\Install.rc
1592DEP_RSC_INSTA=\ 1490DEP_RSC_INSTA=\
1593 ".\Install\Custom.rch"\ 1491 ".\Install\Custom.rch"\
1594 ".\shared-data\install-icon.ico"\ 1492 ".\shared-data\install-icon.ico"\
1595 1493
1596 1494
1597!IF "$(CFG)" == "Install - Win32 Debug" 1495!IF "$(CFG)" == "Install - Win32 Debug"
1598 1496
1599 1497
1600"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 1498"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
1601 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\ 1499 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\
1602 $(SOURCE) 1500 $(SOURCE)
1603 1501
1604 1502
1605!ELSEIF "$(CFG)" == "Install - Win32 Pure" 1503!ELSEIF "$(CFG)" == "Install - Win32 Pure"
1606 1504
1607 1505
1608"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 1506"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
1609 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\ 1507 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\
1610 $(SOURCE) 1508 $(SOURCE)
1611 1509
1612 1510
1613!ELSEIF "$(CFG)" == "Install - Win32 Static" 1511!ELSEIF "$(CFG)" == "Install - Win32 Static"
1614 1512
1615 1513
1616"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 1514"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
1617 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ 1515 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\
1618 "STATI_K" $(SOURCE) 1516 "STATI_K" $(SOURCE)
1619 1517
1620 1518
1621!ELSEIF "$(CFG)" == "Install - Win32 Canned" 1519!ELSEIF "$(CFG)" == "Install - Win32 Canned"
1622 1520
1623 1521
1624"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 1522"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
1625 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ 1523 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\
1626 "K_ANNED" $(SOURCE) 1524 "K_ANNED" $(SOURCE)
1627 1525
1628 1526
1629!ENDIF 1527!ENDIF
1630 1528
1631# End Source File 1529# End Source File
1632################################################################################ 1530################################################################################
1633# Begin Source File 1531# Begin Source File
1634 1532
1635SOURCE=.\Install\install.cpp 1533SOURCE=.\Install\install.cpp
1636DEP_CPP_INSTAL=\ 1534DEP_CPP_INSTAL=\
1637 ".\shared-code\install.h"\ 1535 ".\shared-code\install.h"\
1638 1536
1639 1537
1640!IF "$(CFG)" == "Install - Win32 Debug" 1538!IF "$(CFG)" == "Install - Win32 Debug"
1641 1539
1642 1540
1643"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 1541"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
1644 $(CPP) $(CPP_PROJ) $(SOURCE) 1542 $(CPP) $(CPP_PROJ) $(SOURCE)
1645 1543
1646 1544
1647!ELSEIF "$(CFG)" == "Install - Win32 Pure" 1545!ELSEIF "$(CFG)" == "Install - Win32 Pure"
1648 1546
1649 1547
1650BuildCmds= \ 1548BuildCmds= \
1651 $(CPP) $(CPP_PROJ) $(SOURCE) \ 1549 $(CPP) $(CPP_PROJ) $(SOURCE) \
1652 1550
1653 1551
1654"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 1552"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
1655 $(BuildCmds) 1553 $(BuildCmds)
1656 1554
1657"$(INTDIR)\install.sbr" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 1555"$(INTDIR)\install.sbr" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
1658 $(BuildCmds) 1556 $(BuildCmds)
1659 1557
1660!ELSEIF "$(CFG)" == "Install - Win32 Static" 1558!ELSEIF "$(CFG)" == "Install - Win32 Static"
1661 1559
1662 1560
1663"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 1561"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
1664 $(CPP) $(CPP_PROJ) $(SOURCE) 1562 $(CPP) $(CPP_PROJ) $(SOURCE)
1665 1563
1666 1564
1667!ELSEIF "$(CFG)" == "Install - Win32 Canned" 1565!ELSEIF "$(CFG)" == "Install - Win32 Canned"
1668 1566
1669 1567
1670"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 1568"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
1671 $(CPP) $(CPP_PROJ) $(SOURCE) 1569 $(CPP) $(CPP_PROJ) $(SOURCE)
1672 1570
1673 1571
1674!ENDIF 1572!ENDIF
1675 1573
1676# End Source File 1574# End Source File
1677# End Target 1575# End Target
1678# End Project 1576# End Project
1679################################################################################ 1577################################################################################
1680################################################################################ 1578################################################################################
1681# Section PumpKIN : {4FD78B34-1FD7-11D0-A9FB-444553540000} 1579# Section PumpKIN : {4FD78B34-1FD7-11D0-A9FB-444553540000}
1682 # 2:11:CPumpKINDlg:1 1580 # 2:11:CPumpKINDlg:1
1683 # 2:11:CRequestDlg:1 1581 # 2:11:CRequestDlg:1
1684# End Section 1582# End Section
1685################################################################################ 1583################################################################################