author | Michael Krelin <hacker@klever.net> | 2006-02-03 01:05:14 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-02-03 01:05:14 (UTC) |
commit | 51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d (patch) (unidiff) | |
tree | a6693752131aaa39e56ebbca841179a8df4230ef | |
parent | a772d9f284b4c2a909c30ea33a132a487d932600 (diff) | |
download | pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.zip pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.tar.gz pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.tar.bz2 |
made main window resizable
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@146 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | PumpKINDlg.cpp | 84 | ||||
-rw-r--r-- | PumpKINDlg.h | 13 | ||||
-rw-r--r-- | help/pumpkin.rtf | 1 | ||||
-rw-r--r-- | help/pumpkin.xml | 1 | ||||
-rw-r--r-- | pumpkin.clw | 12 | ||||
-rw-r--r-- | pumpkin.mak | 76 | ||||
-rw-r--r-- | pumpkin.rc | 10 |
7 files changed, 124 insertions, 73 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp index 4cb1633..9786ef0 100644 --- a/PumpKINDlg.cpp +++ b/PumpKINDlg.cpp | |||
@@ -1,2079 +1,2159 @@ | |||
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 |
25 | static char THIS_FILE[] = __FILE__; | 25 | static char THIS_FILE[] = __FILE__; |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | IMPLEMENT_DYNAMIC(CXferSocket, CAsyncSocket) | 28 | IMPLEMENT_DYNAMIC(CXferSocket, CAsyncSocket) |
29 | IMPLEMENT_DYNAMIC(CWRQSocket, CXferSocket) | 29 | IMPLEMENT_DYNAMIC(CWRQSocket, CXferSocket) |
30 | IMPLEMENT_DYNAMIC(CRRQSocket, CXferSocket) | 30 | IMPLEMENT_DYNAMIC(CRRQSocket, CXferSocket) |
31 | 31 | ||
32 | ///////////////////////////////////////////////////////////////////////////// | 32 | ///////////////////////////////////////////////////////////////////////////// |
33 | // CAboutDlg dialog used for App About | 33 | // CAboutDlg dialog used for App About |
34 | 34 | ||
35 | class CAboutDlg : public CDialog | 35 | class CAboutDlg : public CDialog |
36 | { | 36 | { |
37 | public: | 37 | public: |
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 |
52 | protected: | 52 | protected: |
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 | ||
59 | CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) | 59 | CAboutDlg::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 | ||
65 | void CAboutDlg::DoDataExchange(CDataExchange* pDX) | 65 | void 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 | ||
72 | BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) | 72 | BEGIN_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 |
76 | END_MESSAGE_MAP() | 76 | END_MESSAGE_MAP() |
77 | 77 | ||
78 | ///////////////////////////////////////////////////////////////////////////// | 78 | ///////////////////////////////////////////////////////////////////////////// |
79 | // CPumpKINDlg dialog | 79 | // CPumpKINDlg dialog |
80 | 80 | ||
81 | CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) | 81 | CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) |
82 | : CDialog(CPumpKINDlg::IDD, pParent) | 82 | : CDialog(CPumpKINDlg::IDD, pParent) |
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 | ||
128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) | 128 | void 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); | ||
133 | DDX_Control(pDX, IDC_PUT, m_PutCtl); | ||
134 | DDX_Control(pDX, IDC_GET, m_GetCtl); | ||
135 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); | ||
132 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); | 136 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); |
133 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); | 137 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); |
134 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 138 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
135 | DDX_Control(pDX, IDC_LOG, m_Log); | 139 | DDX_Control(pDX, IDC_LOG, m_Log); |
136 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); | 140 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); |
137 | //}}AFX_DATA_MAP | 141 | //}}AFX_DATA_MAP |
138 | } | 142 | } |
139 | 143 | ||
140 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | 144 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) |
141 | //{{AFX_MSG_MAP(CPumpKINDlg) | 145 | //{{AFX_MSG_MAP(CPumpKINDlg) |
142 | ON_WM_SYSCOMMAND() | 146 | ON_WM_SYSCOMMAND() |
143 | ON_WM_DESTROY() | 147 | ON_WM_DESTROY() |
144 | ON_WM_PAINT() | 148 | ON_WM_PAINT() |
145 | ON_WM_QUERYDRAGICON() | 149 | ON_WM_QUERYDRAGICON() |
146 | ON_WM_CREATE() | 150 | ON_WM_CREATE() |
147 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) | 151 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) |
148 | ON_WM_TIMER() | 152 | ON_WM_TIMER() |
149 | ON_BN_CLICKED(IDC_EXIT, OnExit) | 153 | ON_BN_CLICKED(IDC_EXIT, OnExit) |
150 | ON_BN_CLICKED(IDC_PUT, OnPut) | 154 | ON_BN_CLICKED(IDC_PUT, OnPut) |
151 | ON_BN_CLICKED(IDC_GET, OnGet) | 155 | ON_BN_CLICKED(IDC_GET, OnGet) |
152 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) | 156 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) |
153 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) | 157 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) |
154 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) | 158 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) |
155 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) | 159 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) |
156 | ON_BN_CLICKED(IDC_ABORT, OnAbort) | 160 | ON_BN_CLICKED(IDC_ABORT, OnAbort) |
157 | ON_WM_CLOSE() | 161 | ON_WM_CLOSE() |
158 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) | 162 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) |
163 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | ||
159 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) | 164 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) |
160 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) | 165 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) |
161 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) | 166 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) |
162 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) | 167 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) |
163 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) | 168 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) |
164 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) | 169 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) |
165 | ON_WM_WINDOWPOSCHANGING() | 170 | ON_WM_WINDOWPOSCHANGING() |
166 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) | 171 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) |
167 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) | 172 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) |
168 | ON_WM_DROPFILES() | 173 | ON_WM_DROPFILES() |
169 | ON_BN_CLICKED(ID_HELP, OnHelp) | 174 | ON_BN_CLICKED(ID_HELP, OnHelp) |
170 | ON_BN_CLICKED(IDC_LISTENING, OnListening) | 175 | ON_BN_CLICKED(IDC_LISTENING, OnListening) |
171 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | 176 | ON_WM_GETMINMAXINFO() |
177 | ON_WM_SIZE() | ||
172 | //}}AFX_MSG_MAP | 178 | //}}AFX_MSG_MAP |
173 | END_MESSAGE_MAP() | 179 | END_MESSAGE_MAP() |
174 | 180 | ||
175 | ///////////////////////////////////////////////////////////////////////////// | 181 | ///////////////////////////////////////////////////////////////////////////// |
176 | // CPumpKINDlg message handlers | 182 | // CPumpKINDlg message handlers |
177 | 183 | ||
178 | BOOL CPumpKINDlg::OnInitDialog() | 184 | BOOL CPumpKINDlg::OnInitDialog() |
179 | { | 185 | { |
180 | CDialog::OnInitDialog(); | 186 | CDialog::OnInitDialog(); |
181 | 187 | ||
182 | // Add "About..." menu item to system menu. | 188 | // Add "About..." menu item to system menu. |
183 | 189 | ||
184 | // IDM_ABOUTBOX must be in the system command range. | 190 | // IDM_ABOUTBOX must be in the system command range. |
185 | ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); | 191 | ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); |
186 | ASSERT(IDM_ABOUTBOX < 0xF000); | 192 | ASSERT(IDM_ABOUTBOX < 0xF000); |
187 | 193 | ||
188 | CMenu* pSysMenu = GetSystemMenu(FALSE); | 194 | CMenu* pSysMenu = GetSystemMenu(FALSE); |
189 | CString strAboutMenu; | 195 | CString strAboutMenu; |
190 | strAboutMenu.LoadString(IDS_ABOUTBOX); | 196 | strAboutMenu.LoadString(IDS_ABOUTBOX); |
191 | if (!strAboutMenu.IsEmpty()) | 197 | if (!strAboutMenu.IsEmpty()) |
192 | { | 198 | { |
193 | pSysMenu->AppendMenu(MF_SEPARATOR); | 199 | pSysMenu->AppendMenu(MF_SEPARATOR); |
194 | pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); | 200 | pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); |
195 | } | 201 | } |
196 | 202 | ||
197 | // Set the icon for this dialog. The framework does this automatically | 203 | // Set the icon for this dialog. The framework does this automatically |
198 | // when the application's main window is not a dialog | 204 | // when the application's main window is not a dialog |
199 | SetIcon(m_hIcon, TRUE); // Set big icon | 205 | SetIcon(m_hIcon, TRUE); // Set big icon |
200 | SetIcon(m_hIcon, FALSE); // Set small icon | 206 | SetIcon(m_hIcon, FALSE); // Set small icon |
201 | 207 | ||
202 | 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)); |
203 | 209 | ||
204 | |||
205 | m_Images.Create(16,16,TRUE,2,1); | 210 | m_Images.Create(16,16,TRUE,2,1); |
206 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); | 211 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); |
207 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); | 212 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); |
208 | ASSERT(m_iRRQ>=0); | 213 | ASSERT(m_iRRQ>=0); |
209 | ASSERT(m_iWRQ>=0); | 214 | ASSERT(m_iWRQ>=0); |
210 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); | 215 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); |
211 | m_List.SetImageList(&m_Images,LVSIL_SMALL); | 216 | m_List.SetImageList(&m_Images,LVSIL_SMALL); |
212 | m_List.SetImageList(&m_Images,LVSIL_STATE); | 217 | m_List.SetImageList(&m_Images,LVSIL_STATE); |
213 | m_List.SetTextColor(RGB(255,255,0));// Yellow | 218 | m_List.SetTextColor(RGB(255,255,0));// Yellow |
214 | m_List.SetTextBkColor(RGB(12,167,0));// Green | 219 | m_List.SetTextBkColor(RGB(12,167,0));// Green |
215 | m_List.SetBkColor(RGB(12,167,0));// Green | 220 | m_List.SetBkColor(RGB(12,167,0));// Green |
216 | CRect listrc; | 221 | CRect listrc; |
217 | m_List.GetClientRect(&listrc); | 222 | m_List.GetClientRect(&listrc); |
218 | 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); |
219 | m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); | 224 | m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); |
220 | 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); |
221 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); | 226 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); |
222 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); | 227 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); |
223 | 228 | ||
224 | LogLine(IDS_LOG_START); | 229 | LogLine(IDS_LOG_START); |
225 | 230 | ||
226 | SetupButtons(); | 231 | SetupButtons(); |
227 | 232 | ||
233 | CRect wrci, wrco; | ||
234 | GetWindowRect(&wrco); | ||
235 | GetClientRect(&wrci); | ||
236 | CRect brc; | ||
237 | m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
238 | m_rightGapButtons = wrci.right-brc.right; | ||
239 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
240 | m_rightGapList = wrci.right-brc.right; | ||
241 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
242 | m_bottomGapListen = wrci.bottom-brc.bottom; | ||
243 | m_Log.GetWindowRect(&brc);ScreenToClient(&brc); | ||
244 | m_bottomGapLog = wrci.bottom-brc.bottom; | ||
245 | m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height(); | ||
246 | |||
228 | CRect rc, drc; | 247 | CRect rc, drc; |
229 | GetWindowRect(rc); | 248 | GetWindowRect(rc); |
230 | GetDesktopWindow()->GetWindowRect(drc); | 249 | GetDesktopWindow()->GetWindowRect(drc); |
231 | 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); |
232 | 251 | ||
233 | if(m_bShown) | 252 | if(m_bShown) |
234 | ShowWindow(SW_SHOW); | 253 | ShowWindow(SW_SHOW); |
235 | else | 254 | else |
236 | ShowWindow(SW_HIDE); | 255 | ShowWindow(SW_HIDE); |
237 | 256 | ||
238 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | 257 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); |
239 | 258 | ||
240 | // CG: The following block was added by the ToolTips component. | 259 | // CG: The following block was added by the ToolTips component. |
241 | { | 260 | { |
242 | // Create the ToolTip control. | 261 | // Create the ToolTip control. |
243 | m_tooltip.Create(this); | 262 | m_tooltip.Create(this); |
244 | m_tooltip.Activate(TRUE); | 263 | m_tooltip.Activate(TRUE); |
245 | 264 | ||
246 | m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); | 265 | m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); |
247 | m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); | 266 | m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); |
248 | m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); | 267 | m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); |
249 | m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); | 268 | m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); |
250 | m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); | 269 | m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); |
251 | m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); | 270 | m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); |
252 | m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP); | 271 | m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP); |
253 | m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG); | 272 | m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG); |
254 | } | 273 | } |
255 | 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 |
256 | } | 275 | } |
257 | 276 | ||
258 | void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam) | 277 | void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam) |
259 | { | 278 | { |
260 | if ((nID & 0xFFF0) == IDM_ABOUTBOX) | 279 | if ((nID & 0xFFF0) == IDM_ABOUTBOX) |
261 | { | 280 | { |
262 | CAboutDlg dlgAbout; | 281 | CAboutDlg dlgAbout; |
263 | dlgAbout.DoModal(); | 282 | dlgAbout.DoModal(); |
264 | } | 283 | } |
265 | else | 284 | else |
266 | { | 285 | { |
267 | CDialog::OnSysCommand(nID, lParam); | 286 | CDialog::OnSysCommand(nID, lParam); |
268 | } | 287 | } |
269 | } | 288 | } |
270 | 289 | ||
271 | void CPumpKINDlg::OnDestroy() | 290 | void CPumpKINDlg::OnDestroy() |
272 | { | 291 | { |
273 | SaveSettings(); | 292 | SaveSettings(); |
274 | 293 | ||
275 | NOTIFYICONDATA nid; | 294 | NOTIFYICONDATA nid; |
276 | memset(&nid,0,sizeof(nid)); | 295 | memset(&nid,0,sizeof(nid)); |
277 | nid.cbSize=sizeof(nid); | 296 | nid.cbSize=sizeof(nid); |
278 | nid.hWnd=m_Trayer->m_hWnd; | 297 | nid.hWnd=m_Trayer->m_hWnd; |
279 | nid.uID=IDC_TRAYICON; | 298 | nid.uID=IDC_TRAYICON; |
280 | nid.uFlags=0; | 299 | nid.uFlags=0; |
281 | VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid)); | 300 | VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid)); |
282 | 301 | ||
283 | WinHelp(0L, HELP_QUIT); | 302 | WinHelp(0L, HELP_QUIT); |
284 | CDialog::OnDestroy(); | 303 | CDialog::OnDestroy(); |
285 | POSITION p = m_LogTimes.GetStartPosition(); | 304 | POSITION p = m_LogTimes.GetStartPosition(); |
286 | while(p){ | 305 | while(p){ |
287 | CTime *t,*tt; | 306 | CTime *t,*tt; |
288 | m_LogTimes.GetNextAssoc(p,t,tt); | 307 | m_LogTimes.GetNextAssoc(p,t,tt); |
289 | ASSERT(t && tt && t==tt); | 308 | ASSERT(t && tt && t==tt); |
290 | delete t; | 309 | delete t; |
291 | } | 310 | } |
292 | // *** Abort and cleanup transfers | 311 | // *** Abort and cleanup transfers |
293 | m_LogTimes.RemoveAll(); | 312 | m_LogTimes.RemoveAll(); |
294 | } | 313 | } |
295 | 314 | ||
296 | // 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 |
297 | // 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, |
298 | // this is automatically done for you by the framework. | 317 | // this is automatically done for you by the framework. |
299 | 318 | ||
300 | void CPumpKINDlg::OnPaint() | 319 | void CPumpKINDlg::OnPaint() |
301 | { | 320 | { |
302 | if (IsIconic()) | 321 | if (IsIconic()) |
303 | { | 322 | { |
304 | CPaintDC dc(this); // device context for painting | 323 | CPaintDC dc(this); // device context for painting |
305 | 324 | ||
306 | SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); | 325 | SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); |
307 | 326 | ||
308 | // Center icon in client rectangle | 327 | // Center icon in client rectangle |
309 | int cxIcon = GetSystemMetrics(SM_CXICON); | 328 | int cxIcon = GetSystemMetrics(SM_CXICON); |
310 | int cyIcon = GetSystemMetrics(SM_CYICON); | 329 | int cyIcon = GetSystemMetrics(SM_CYICON); |
311 | CRect rect; | 330 | CRect rect; |
312 | GetClientRect(&rect); | 331 | GetClientRect(&rect); |
313 | int x = (rect.Width() - cxIcon + 1) / 2; | 332 | int x = (rect.Width() - cxIcon + 1) / 2; |
314 | int y = (rect.Height() - cyIcon + 1) / 2; | 333 | int y = (rect.Height() - cyIcon + 1) / 2; |
315 | 334 | ||
316 | // Draw the icon | 335 | // Draw the icon |
317 | dc.DrawIcon(x, y, m_hIcon); | 336 | dc.DrawIcon(x, y, m_hIcon); |
318 | } | 337 | } |
319 | else | 338 | else |
320 | { | 339 | { |
321 | CPaintDC pDC(this); | 340 | CPaintDC pDC(this); |
322 | CDC bmpDC; | 341 | CDC bmpDC; |
323 | bmpDC.CreateCompatibleDC(&pDC); | 342 | bmpDC.CreateCompatibleDC(&pDC); |
324 | bmpDC.SelectObject(&m_bmpBack); | 343 | bmpDC.SelectObject(&m_bmpBack); |
325 | CRect rc; | 344 | CRect rc; |
326 | GetClientRect(&rc); | 345 | GetClientRect(&rc); |
327 | 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) |
328 | 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) |
329 | 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); |
330 | bmpDC.DeleteDC(); | 349 | bmpDC.DeleteDC(); |
331 | CDialog::OnPaint(); | 350 | CDialog::OnPaint(); |
332 | } | 351 | } |
333 | } | 352 | } |
334 | 353 | ||
335 | // 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 |
336 | // the minimized window. | 355 | // the minimized window. |
337 | HCURSOR CPumpKINDlg::OnQueryDragIcon() | 356 | HCURSOR CPumpKINDlg::OnQueryDragIcon() |
338 | { | 357 | { |
339 | return (HCURSOR) m_hIcon; | 358 | return (HCURSOR) m_hIcon; |
340 | } | 359 | } |
341 | 360 | ||
342 | int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) | 361 | int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) |
343 | { | 362 | { |
344 | if (CDialog::OnCreate(lpCreateStruct) == -1) | 363 | if (CDialog::OnCreate(lpCreateStruct) == -1) |
345 | return -1; | 364 | return -1; |
346 | 365 | ||
347 | if(!m_Listener.SetListen(m_bListen)) { | 366 | if(!m_Listener.SetListen(m_bListen)) { |
348 | m_bListen=FALSE; | 367 | m_bListen=FALSE; |
349 | TRACE0("Failed to create socket\n"); | 368 | TRACE0("Failed to create socket\n"); |
350 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | 369 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); |
351 | } | 370 | } |
352 | 371 | ||
353 | 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)){ |
354 | TRACE0("Failed to create trayer\n"); | 373 | TRACE0("Failed to create trayer\n"); |
355 | return -1; | 374 | return -1; |
356 | } | 375 | } |
357 | 376 | ||
358 | NOTIFYICONDATA nid; | 377 | NOTIFYICONDATA nid; |
359 | memset(&nid,0,sizeof(nid)); | 378 | memset(&nid,0,sizeof(nid)); |
360 | nid.cbSize=sizeof(nid); | 379 | nid.cbSize=sizeof(nid); |
361 | nid.hWnd=m_Trayer->m_hWnd; | 380 | nid.hWnd=m_Trayer->m_hWnd; |
362 | nid.uID=IDC_TRAYICON; | 381 | nid.uID=IDC_TRAYICON; |
363 | nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; | 382 | nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; |
364 | nid.uCallbackMessage=WM_TRAYICON; | 383 | nid.uCallbackMessage=WM_TRAYICON; |
365 | nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); | 384 | nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
366 | // *** Load from resource | 385 | // *** Load from resource |
367 | strcpy(nid.szTip,"PumpKIN"); | 386 | strcpy(nid.szTip,"PumpKIN"); |
368 | VERIFY(Shell_NotifyIcon(NIM_ADD,&nid)); | 387 | VERIFY(Shell_NotifyIcon(NIM_ADD,&nid)); |
369 | 388 | ||
370 | return 0; | 389 | return 0; |
371 | } | 390 | } |
372 | 391 | ||
373 | void CListenSocket::OnReceive(int nErrorCode) | 392 | void CListenSocket::OnReceive(int nErrorCode) |
374 | { | 393 | { |
375 | ASSERT(m_Daddy); | 394 | ASSERT(m_Daddy); |
376 | if(nErrorCode){ | 395 | if(nErrorCode){ |
377 | m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR); | 396 | m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR); |
378 | return; | 397 | return; |
379 | } | 398 | } |
380 | DWORD fionread = 0; | 399 | DWORD fionread = 0; |
381 | VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired | 400 | VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired |
382 | tftp *tftpRQ = tftp::Allocate(fionread); | 401 | tftp *tftpRQ = tftp::Allocate(fionread); |
383 | ASSERT(tftpRQ); | 402 | ASSERT(tftpRQ); |
384 | SOCKADDR_IN sin; | 403 | SOCKADDR_IN sin; |
385 | if(!tftpRQ->Receive(this,fionread,&sin)){ | 404 | if(!tftpRQ->Receive(this,fionread,&sin)){ |
386 | m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR); | 405 | m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR); |
387 | delete tftpRQ; | 406 | delete tftpRQ; |
388 | return; | 407 | return; |
389 | } | 408 | } |
390 | #ifndefNDEBUG | 409 | #ifndefNDEBUG |
391 | CString tmp; | 410 | CString tmp; |
392 | 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); |
393 | TRACE0(tmp); | 412 | TRACE0(tmp); |
394 | #endif | 413 | #endif |
395 | POSITION p = m_Daddy->m_Xfers.GetStartPosition(); | 414 | POSITION p = m_Daddy->m_Xfers.GetStartPosition(); |
396 | while(p){ | 415 | while(p){ |
397 | SOCKET key; | 416 | SOCKET key; |
398 | CXferSocket *sock; | 417 | CXferSocket *sock; |
399 | m_Daddy->m_Xfers.GetNextAssoc(p,key,sock); | 418 | m_Daddy->m_Xfers.GetNextAssoc(p,key,sock); |
400 | ASSERT(sock); | 419 | ASSERT(sock); |
401 | 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){ |
402 | TRACE0("Ignoring request which we are already processing\n"); | 421 | TRACE0("Ignoring request which we are already processing\n"); |
403 | delete tftpRQ; | 422 | delete tftpRQ; |
404 | return; | 423 | return; |
405 | } | 424 | } |
406 | } | 425 | } |
407 | switch(tftpRQ->Opcode()){ | 426 | switch(tftpRQ->Opcode()){ |
408 | case tftp::opRRQ: | 427 | case tftp::opRRQ: |
409 | // Read Request | 428 | // Read Request |
410 | { | 429 | { |
411 | CString tmp; | 430 | CString tmp; |
412 | 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)); |
413 | m_Daddy->LogLine(tmp); | 432 | m_Daddy->LogLine(tmp); |
414 | CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); | 433 | CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); |
415 | ASSERT(s); | 434 | ASSERT(s); |
416 | tftpRQ->GetOptions(&s->m_Options); | 435 | tftpRQ->GetOptions(&s->m_Options); |
417 | if(!s->Create()) | 436 | if(!s->Create()) |
418 | s->Destroy(FALSE); | 437 | s->Destroy(FALSE); |
419 | } | 438 | } |
420 | break; | 439 | break; |
421 | case tftp::opWRQ: | 440 | case tftp::opWRQ: |
422 | // Write Request | 441 | // Write Request |
423 | { | 442 | { |
424 | CString tmp; | 443 | CString tmp; |
425 | 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)); |
426 | m_Daddy->LogLine(tmp); | 445 | m_Daddy->LogLine(tmp); |
427 | CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); | 446 | CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); |
428 | ASSERT(s); | 447 | ASSERT(s); |
429 | tftpRQ->GetOptions(&s->m_Options); | 448 | tftpRQ->GetOptions(&s->m_Options); |
430 | if(!s->Create(NULL,NULL)) | 449 | if(!s->Create(NULL,NULL)) |
431 | s->Destroy(FALSE); | 450 | s->Destroy(FALSE); |
432 | } | 451 | } |
433 | break; | 452 | break; |
434 | default: | 453 | default: |
435 | m_Daddy->LogLine(IDS_LOG_LISTENOPCODE); | 454 | m_Daddy->LogLine(IDS_LOG_LISTENOPCODE); |
436 | delete tftpRQ; | 455 | delete tftpRQ; |
437 | return; | 456 | return; |
438 | } | 457 | } |
439 | delete tftpRQ; | 458 | delete tftpRQ; |
440 | } | 459 | } |
441 | 460 | ||
442 | BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin) | 461 | BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin) |
443 | { | 462 | { |
444 | ASSERT(socket); | 463 | ASSERT(socket); |
445 | int saddrLen = sizeof(SOCKADDR_IN); | 464 | int saddrLen = sizeof(SOCKADDR_IN); |
446 | length = sin ? | 465 | length = sin ? |
447 | socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen) | 466 | socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen) |
448 | : | 467 | : |
449 | socket->Receive(udpBase(),maxLength) | 468 | socket->Receive(udpBase(),maxLength) |
450 | ; | 469 | ; |
451 | if(!length) | 470 | if(!length) |
452 | return FALSE; | 471 | return FALSE; |
453 | if(length==(tftpLength)SOCKET_ERROR) | 472 | if(length==(tftpLength)SOCKET_ERROR) |
454 | return FALSE; | 473 | return FALSE; |
455 | return TRUE; | 474 | return TRUE; |
456 | } | 475 | } |
457 | 476 | ||
458 | UINT tftp::Opcode() | 477 | UINT tftp::Opcode() |
459 | { | 478 | { |
460 | return REVERSEBYTES(opcode); | 479 | return REVERSEBYTES(opcode); |
461 | } | 480 | } |
462 | 481 | ||
463 | CString tftp::rqFileName() | 482 | CString tftp::rqFileName() |
464 | { | 483 | { |
465 | ASSERT(length); | 484 | ASSERT(length); |
466 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); | 485 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); |
467 | CString rv; | 486 | CString rv; |
468 | if(memchr(&data.m_RQ.data,0,length-sizeof(opcode))) | 487 | if(memchr(&data.m_RQ.data,0,length-sizeof(opcode))) |
469 | rv = (LPCTSTR)data.m_RQ.data; | 488 | rv = (LPCTSTR)data.m_RQ.data; |
470 | return rv; | 489 | return rv; |
471 | } | 490 | } |
472 | 491 | ||
473 | CString tftp::rqType() | 492 | CString tftp::rqType() |
474 | { | 493 | { |
475 | ASSERT(length); | 494 | ASSERT(length); |
476 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); | 495 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); |
477 | CString rv; | 496 | CString rv; |
478 | char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); | 497 | char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); |
479 | if(tmp++) | 498 | if(tmp++) |
480 | rv = (LPCTSTR)tmp; | 499 | rv = (LPCTSTR)tmp; |
481 | return rv; | 500 | return rv; |
482 | } | 501 | } |
483 | 502 | ||
484 | UINT tftp::GetOptions(tftp::tftpOptions* ops) | 503 | UINT tftp::GetOptions(tftp::tftpOptions* ops) |
485 | { | 504 | { |
486 | ASSERT(length); | 505 | ASSERT(length); |
487 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK); | 506 | ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK); |
488 | ASSERT(ops); | 507 | ASSERT(ops); |
489 | tftpOptions& o = *ops; | 508 | tftpOptions& o = *ops; |
490 | LPSTR base = (LPSTR)&data.m_RQ.data; | 509 | LPSTR base = (LPSTR)&data.m_RQ.data; |
491 | UINT basePtr = 0; | 510 | UINT basePtr = 0; |
492 | if(Opcode()==opRRQ || Opcode()==opWRQ){ | 511 | if(Opcode()==opRRQ || Opcode()==opWRQ){ |
493 | base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); | 512 | base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); |
494 | if(!base) | 513 | if(!base) |
495 | return 0; | 514 | return 0; |
496 | base++; | 515 | base++; |
497 | basePtr = (base-(LPSTR)&data.m_RQ.data); | 516 | basePtr = (base-(LPSTR)&data.m_RQ.data); |
498 | base = (LPSTR)memchr(base,0,length-basePtr); | 517 | base = (LPSTR)memchr(base,0,length-basePtr); |
499 | if(!base) | 518 | if(!base) |
500 | return 0; | 519 | return 0; |
501 | base++; | 520 | base++; |
502 | basePtr = (base-(LPSTR)&data.m_RQ.data); | 521 | basePtr = (base-(LPSTR)&data.m_RQ.data); |
503 | } | 522 | } |
504 | ops->RemoveAll(); | 523 | ops->RemoveAll(); |
505 | UINT rv = 0; | 524 | UINT rv = 0; |
506 | while(basePtr<(length-sizeof(opcode))){ | 525 | while(basePtr<(length-sizeof(opcode))){ |
507 | CString onam = (LPSTR)&data.m_RQ.data[basePtr]; | 526 | CString onam = (LPSTR)&data.m_RQ.data[basePtr]; |
508 | basePtr+=onam.GetLength()+1; | 527 | basePtr+=onam.GetLength()+1; |
509 | CString oval = (LPSTR)&data.m_RQ.data[basePtr]; | 528 | CString oval = (LPSTR)&data.m_RQ.data[basePtr]; |
510 | basePtr+=oval.GetLength()+1; | 529 | basePtr+=oval.GetLength()+1; |
511 | onam.MakeLower(); | 530 | onam.MakeLower(); |
512 | o[onam]=oval; | 531 | o[onam]=oval; |
513 | rv++; | 532 | rv++; |
514 | } | 533 | } |
515 | return rv; | 534 | return rv; |
516 | } | 535 | } |
517 | 536 | ||
518 | tftp::tftp() | 537 | tftp::tftp() |
519 | { | 538 | { |
520 | length=0; | 539 | length=0; |
521 | } | 540 | } |
522 | 541 | ||
523 | 542 | ||
524 | void CXferSocket::OnSend(int nErrorCode) | 543 | void CXferSocket::OnSend(int nErrorCode) |
525 | { | 544 | { |
526 | if(nErrorCode){ | 545 | if(nErrorCode){ |
527 | ASSERT(m_Daddy); | 546 | ASSERT(m_Daddy); |
528 | m_Daddy->LogLine(IDS_LOG_XFERSEND); | 547 | m_Daddy->LogLine(IDS_LOG_XFERSEND); |
529 | return; | 548 | return; |
530 | } | 549 | } |
531 | if(!m_Queue.IsEmpty()){ | 550 | if(!m_Queue.IsEmpty()){ |
532 | tftp *p = m_Queue.GetHead(); | 551 | tftp *p = m_Queue.GetHead(); |
533 | ASSERT(p); | 552 | ASSERT(p); |
534 | m_Queue.RemoveHead(); | 553 | m_Queue.RemoveHead(); |
535 | if(!p->Send(this,&m_Peer)){ | 554 | if(!p->Send(this,&m_Peer)){ |
536 | ASSERT(m_Daddy); | 555 | ASSERT(m_Daddy); |
537 | m_Daddy->LogLine(IDS_LOG_XFERUDPSEND); | 556 | m_Daddy->LogLine(IDS_LOG_XFERUDPSEND); |
538 | } | 557 | } |
539 | delete p; | 558 | delete p; |
540 | } | 559 | } |
541 | DoSelect(); | 560 | DoSelect(); |
542 | if(m_Queue.IsEmpty()){ | 561 | if(m_Queue.IsEmpty()){ |
543 | switch(state){ | 562 | switch(state){ |
544 | case stateDeny: | 563 | case stateDeny: |
545 | Destroy(FALSE); | 564 | Destroy(FALSE); |
546 | break; | 565 | break; |
547 | case stateFinish: | 566 | case stateFinish: |
548 | Destroy(TRUE); | 567 | Destroy(TRUE); |
549 | break; | 568 | break; |
550 | } | 569 | } |
551 | } | 570 | } |
552 | } | 571 | } |
553 | 572 | ||
554 | BOOL tftp::Send(CAsyncSocket *socket,SOCKADDR_IN* saddr) | 573 | BOOL tftp::Send(CAsyncSocket *socket,SOCKADDR_IN* saddr) |
555 | { | 574 | { |
556 | ASSERT(socket); | 575 | ASSERT(socket); |
557 | int rv = socket->SendTo(udpBase(),length,(SOCKADDR*)saddr,sizeof(SOCKADDR_IN)); | 576 | int rv = socket->SendTo(udpBase(),length,(SOCKADDR*)saddr,sizeof(SOCKADDR_IN)); |
558 | if(rv!=length) | 577 | if(rv!=length) |
559 | return FALSE; | 578 | return FALSE; |
560 | return TRUE; | 579 | return TRUE; |
561 | } | 580 | } |
562 | 581 | ||
563 | void CXferSocket::DoSelect() | 582 | void CXferSocket::DoSelect() |
564 | { | 583 | { |
565 | if(m_Peer.sin_addr.s_addr!=INADDR_NONE) | 584 | if(m_Peer.sin_addr.s_addr!=INADDR_NONE) |
566 | AsyncSelect(FD_CLOSE|FD_READ|(m_Queue.IsEmpty()?0:FD_WRITE)); | 585 | AsyncSelect(FD_CLOSE|FD_READ|(m_Queue.IsEmpty()?0:FD_WRITE)); |
567 | } | 586 | } |
568 | 587 | ||
569 | void CXferSocket::OnReceive(int nErrorCode) | 588 | void CXferSocket::OnReceive(int nErrorCode) |
570 | { | 589 | { |
571 | if(nErrorCode){ | 590 | if(nErrorCode){ |
572 | ASSERT(m_Daddy); | 591 | ASSERT(m_Daddy); |
573 | m_Daddy->LogLine(IDS_LOG_XFERRECEIVE); | 592 | m_Daddy->LogLine(IDS_LOG_XFERRECEIVE); |
574 | return; | 593 | return; |
575 | } | 594 | } |
576 | ASSERT(m_Daddy); | 595 | ASSERT(m_Daddy); |
577 | DWORD fionread = 0; | 596 | DWORD fionread = 0; |
578 | VERIFY(IOCtl(FIONREAD,&fionread)); | 597 | VERIFY(IOCtl(FIONREAD,&fionread)); |
579 | tftp *p = tftp::Allocate(fionread); | 598 | tftp *p = tftp::Allocate(fionread); |
580 | ASSERT(p); | 599 | ASSERT(p); |
581 | SOCKADDR_IN sin; | 600 | SOCKADDR_IN sin; |
582 | if(!p->Receive(this,fionread,&sin)){ | 601 | if(!p->Receive(this,fionread,&sin)){ |
583 | m_Daddy->LogLine(IDS_LOG_XFERUDPRECEIVE); | 602 | m_Daddy->LogLine(IDS_LOG_XFERUDPRECEIVE); |
584 | delete p; | 603 | delete p; |
585 | }else | 604 | }else |
586 | if(m_Peer.sin_addr.s_addr==INADDR_NONE){ | 605 | if(m_Peer.sin_addr.s_addr==INADDR_NONE){ |
587 | m_Peer.sin_addr=sin.sin_addr; | 606 | m_Peer.sin_addr=sin.sin_addr; |
588 | m_Peer.sin_port=sin.sin_port; | 607 | m_Peer.sin_port=sin.sin_port; |
589 | } | 608 | } |
590 | BOOL alive = TRUE; | 609 | BOOL alive = TRUE; |
591 | if(state==stateInit){ | 610 | if(state==stateInit){ |
592 | state=stateXfer; | 611 | state=stateXfer; |
593 | m_Peer.sin_port=sin.sin_port; | 612 | m_Peer.sin_port=sin.sin_port; |
594 | UpdateList(); | 613 | UpdateList(); |
595 | } | 614 | } |
596 | 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){ |
597 | m_Daddy->LogLine(IDS_LOG_XFERSOURCETID); | 616 | m_Daddy->LogLine(IDS_LOG_XFERSOURCETID); |
598 | // *** Bounce it! | 617 | // *** Bounce it! |
599 | }else{ | 618 | }else{ |
600 | alive = OnTFTP(p); | 619 | alive = OnTFTP(p); |
601 | } | 620 | } |
602 | delete p; | 621 | delete p; |
603 | if(alive){ | 622 | if(alive){ |
604 | DoSelect(); | 623 | DoSelect(); |
605 | ResetTimeout(); | 624 | ResetTimeout(); |
606 | } | 625 | } |
607 | } | 626 | } |
608 | 627 | ||
609 | void CXferSocket::SetPeer(SOCKADDR_IN *sin) | 628 | void CXferSocket::SetPeer(SOCKADDR_IN *sin) |
610 | { | 629 | { |
611 | ASSERT(sin); | 630 | ASSERT(sin); |
612 | memmove(&m_Peer,sin,sizeof(m_Peer)); | 631 | memmove(&m_Peer,sin,sizeof(m_Peer)); |
613 | } | 632 | } |
614 | 633 | ||
615 | void CXferSocket::UpdateList() | 634 | void CXferSocket::UpdateList() |
616 | { | 635 | { |
617 | ASSERT(m_Daddy); | 636 | ASSERT(m_Daddy); |
618 | LV_FINDINFO lvf; | 637 | LV_FINDINFO lvf; |
619 | memset(&lvf,0,sizeof(lvf)); | 638 | memset(&lvf,0,sizeof(lvf)); |
620 | lvf.flags=LVFI_PARAM; | 639 | lvf.flags=LVFI_PARAM; |
621 | lvf.lParam=(LPARAM)this; | 640 | lvf.lParam=(LPARAM)this; |
622 | int i = m_Daddy->m_List.FindItem(&lvf); | 641 | int i = m_Daddy->m_List.FindItem(&lvf); |
623 | if(i<0){ | 642 | if(i<0){ |
624 | ASSERT(IsKindOf(RUNTIME_CLASS(CRRQSocket)) || IsKindOf(RUNTIME_CLASS(CWRQSocket))); | 643 | ASSERT(IsKindOf(RUNTIME_CLASS(CRRQSocket)) || IsKindOf(RUNTIME_CLASS(CWRQSocket))); |
625 | 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); |
626 | ASSERT(!(i<0)); | 645 | ASSERT(!(i<0)); |
627 | m_Daddy->m_List.SetItemData(i,(DWORD)this); | 646 | m_Daddy->m_List.SetItemData(i,(DWORD)this); |
628 | } | 647 | } |
629 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemFile,m_FileName); | 648 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemFile,m_FileName); |
630 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemType,m_Type); | 649 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemType,m_Type); |
631 | 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)); |
632 | CString tmp; | 651 | CString tmp; |
633 | tmp.Format(IDS_FMT_BYTES,GetACK()); | 652 | tmp.Format(IDS_FMT_BYTES,GetACK()); |
634 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemBytes,tmp); | 653 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemBytes,tmp); |
635 | if(m_xferSize>=0){ | 654 | if(m_xferSize>=0){ |
636 | tmp.Format(IDS_FMT_BYTES,m_xferSize); | 655 | tmp.Format(IDS_FMT_BYTES,m_xferSize); |
637 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemTSize,tmp); | 656 | m_Daddy->m_List.SetItemText(i,CPumpKINDlg::subitemTSize,tmp); |
638 | } | 657 | } |
639 | } | 658 | } |
640 | 659 | ||
641 | CXferSocket::CXferSocket() | 660 | CXferSocket::CXferSocket() |
642 | : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), | 661 | : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), |
643 | m_blkSize(512), m_timeOut(30), m_xferSize(-1), | 662 | m_blkSize(512), m_timeOut(30), m_xferSize(-1), |
644 | m__blkSize(512), m__timeOut(30) | 663 | m__blkSize(512), m__timeOut(30) |
645 | { | 664 | { |
646 | m_Daddy=NULL; | 665 | m_Daddy=NULL; |
647 | m_Peer.sin_addr.s_addr=INADDR_NONE; | 666 | m_Peer.sin_addr.s_addr=INADDR_NONE; |
648 | m_Peer.sin_family=AF_INET; | 667 | m_Peer.sin_family=AF_INET; |
649 | state=stateNone; | 668 | state=stateNone; |
650 | } | 669 | } |
651 | 670 | ||
652 | ULONG CXferSocket::GetACK() | 671 | ULONG CXferSocket::GetACK() |
653 | { | 672 | { |
654 | return 0; | 673 | return 0; |
655 | } | 674 | } |
656 | 675 | ||
657 | CXferSocket::CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin) | 676 | CXferSocket::CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin) |
658 | : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), | 677 | : m_wndResolver(NULL), m_Retry(NULL), m_bRetry(FALSE), |
659 | m_blkSize(512), m_timeOut(30), m_xferSize(-1), | 678 | m_blkSize(512), m_timeOut(30), m_xferSize(-1), |
660 | m__blkSize(512), m__timeOut(30) | 679 | m__blkSize(512), m__timeOut(30) |
661 | { | 680 | { |
662 | m_Peer.sin_family=AF_INET; | 681 | m_Peer.sin_family=AF_INET; |
663 | state=stateNone; | 682 | state=stateNone; |
664 | ASSERT(daddy); | 683 | ASSERT(daddy); |
665 | m_Daddy=daddy; | 684 | m_Daddy=daddy; |
666 | m_timeOut=m__timeOut=m_Daddy->m_TFTPTimeOut.GetTotalSeconds(); | 685 | m_timeOut=m__timeOut=m_Daddy->m_TFTPTimeOut.GetTotalSeconds(); |
667 | if(sin){ | 686 | if(sin){ |
668 | m_Peer.sin_addr.s_addr=sin->sin_addr.s_addr; | 687 | m_Peer.sin_addr.s_addr=sin->sin_addr.s_addr; |
669 | m_Peer.sin_port=sin->sin_port; | 688 | m_Peer.sin_port=sin->sin_port; |
670 | }else | 689 | }else |
671 | m_Peer.sin_addr.s_addr=INADDR_NONE; | 690 | m_Peer.sin_addr.s_addr=INADDR_NONE; |
672 | m_FileName=fileName; | 691 | m_FileName=fileName; |
673 | m_Type=type; | 692 | m_Type=type; |
674 | } | 693 | } |
675 | 694 | ||
676 | BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) | 695 | BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) |
677 | { | 696 | { |
678 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) | 697 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) |
679 | return FALSE; | 698 | return FALSE; |
680 | ASSERT(m_Daddy); | 699 | ASSERT(m_Daddy); |
681 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); | 700 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); |
682 | m_Daddy->m_Xfers[m_hSocket]=this; | 701 | m_Daddy->m_Xfers[m_hSocket]=this; |
683 | CString lFile = localFile?localFile:m_FileName; | 702 | CString lFile = localFile?localFile:m_FileName; |
684 | TurnSlashes(lFile,TRUE); | 703 | TurnSlashes(lFile,TRUE); |
685 | UpdateList(); | 704 | UpdateList(); |
686 | if(!localFile){// Check only for incoming requests | 705 | if(!localFile){// Check only for incoming requests |
687 | if(CheckBadRelativeness(m_FileName)){ | 706 | if(CheckBadRelativeness(m_FileName)){ |
688 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 707 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
689 | return TRUE; | 708 | return TRUE; |
690 | } | 709 | } |
691 | 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); |
692 | if(atar<0) | 711 | if(atar<0) |
693 | atar = m_Daddy->m_RRQMode; | 712 | atar = m_Daddy->m_RRQMode; |
694 | switch(atar){ | 713 | switch(atar){ |
695 | case CPumpKINDlg::rrqGiveAll: | 714 | case CPumpKINDlg::rrqGiveAll: |
696 | break; | 715 | break; |
697 | case CPumpKINDlg::rrqAlwaysConfirm: | 716 | case CPumpKINDlg::rrqAlwaysConfirm: |
698 | if(ConfirmRequest()) | 717 | if(ConfirmRequest()) |
699 | break; | 718 | break; |
700 | default: | 719 | default: |
701 | TRACE1("Unexpected access target: %d\n",atar); | 720 | TRACE1("Unexpected access target: %d\n",atar); |
702 | case CPumpKINDlg::rrqDenyAll: | 721 | case CPumpKINDlg::rrqDenyAll: |
703 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 722 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
704 | return TRUE; | 723 | return TRUE; |
705 | } | 724 | } |
706 | } | 725 | } |
707 | CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile); | 726 | CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile); |
708 | CFileException e; | 727 | CFileException e; |
709 | if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){ | 728 | if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){ |
710 | if(localFile){ | 729 | if(localFile){ |
711 | CString tmp; | 730 | CString tmp; |
712 | tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn); | 731 | tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn); |
713 | m_Daddy->LogLine(tmp); | 732 | m_Daddy->LogLine(tmp); |
714 | return FALSE; | 733 | return FALSE; |
715 | } | 734 | } |
716 | Deny(&e); | 735 | Deny(&e); |
717 | return TRUE; | 736 | return TRUE; |
718 | } | 737 | } |
719 | m_xferSize=m_File.GetLength();// *** HANDLE EXCEPTION | 738 | m_xferSize=m_File.GetLength();// *** HANDLE EXCEPTION |
720 | if(hostName){ | 739 | if(hostName){ |
721 | m_HostName=hostName; | 740 | m_HostName=hostName; |
722 | 741 | ||
723 | CString tmp; | 742 | CString tmp; |
724 | tmp.Format(IDS_LOG_SENDING,m_FileName,m_HostName); | 743 | tmp.Format(IDS_LOG_SENDING,m_FileName,m_HostName); |
725 | m_Daddy->LogLine(tmp); | 744 | m_Daddy->LogLine(tmp); |
726 | 745 | ||
727 | CString inAddr = hostName; | 746 | CString inAddr = hostName; |
728 | int at = inAddr.Find('@'); | 747 | int at = inAddr.Find('@'); |
729 | if(at>=0) | 748 | if(at>=0) |
730 | inAddr=inAddr.Mid(at+1); | 749 | inAddr=inAddr.Mid(at+1); |
731 | 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){ |
732 | ASSERT(!m_wndResolver); | 751 | ASSERT(!m_wndResolver); |
733 | m_wndResolver = new CResolver(this); | 752 | m_wndResolver = new CResolver(this); |
734 | ASSERT(m_wndResolver); | 753 | ASSERT(m_wndResolver); |
735 | return m_wndResolver->Resolve(); | 754 | return m_wndResolver->Resolve(); |
736 | } | 755 | } |
737 | else | 756 | else |
738 | OnHostKnown(); | 757 | OnHostKnown(); |
739 | }else{ | 758 | }else{ |
740 | tftp::tftpOptions o; | 759 | tftp::tftpOptions o; |
741 | CString v; | 760 | CString v; |
742 | if(m_Options.Lookup(tftpoBSize,v)){ | 761 | if(m_Options.Lookup(tftpoBSize,v)){ |
743 | m__blkSize=atoi(v); | 762 | m__blkSize=atoi(v); |
744 | if(m__blkSize){ | 763 | if(m__blkSize){ |
745 | m_blkSize=m__blkSize; | 764 | m_blkSize=m__blkSize; |
746 | v.Format("%u",m_blkSize); | 765 | v.Format("%u",m_blkSize); |
747 | o[tftpoBSize]=v; | 766 | o[tftpoBSize]=v; |
748 | } | 767 | } |
749 | } | 768 | } |
750 | if(m_Options.Lookup(tftpoTSize,v)){ | 769 | if(m_Options.Lookup(tftpoTSize,v)){ |
751 | v.Format("%lu",m_xferSize); | 770 | v.Format("%lu",m_xferSize); |
752 | o[tftpoTSize]=v; | 771 | o[tftpoTSize]=v; |
753 | } | 772 | } |
754 | if(m_Options.Lookup(tftpoTOut,v)){ | 773 | if(m_Options.Lookup(tftpoTOut,v)){ |
755 | m__timeOut=atoi(v); | 774 | m__timeOut=atoi(v); |
756 | if(m__timeOut){ | 775 | if(m__timeOut){ |
757 | m_timeOut=m__timeOut; | 776 | m_timeOut=m__timeOut; |
758 | v.Format("%u",m_timeOut); | 777 | v.Format("%u",m_timeOut); |
759 | o[tftpoTOut]=v; | 778 | o[tftpoTOut]=v; |
760 | } | 779 | } |
761 | } | 780 | } |
762 | state = stateXfer; | 781 | state = stateXfer; |
763 | m_ACK=0; | 782 | m_ACK=0; |
764 | if(o.GetCount()){ | 783 | if(o.GetCount()){ |
765 | tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&o)); | 784 | tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&o)); |
766 | ASSERT(p); | 785 | ASSERT(p); |
767 | p->SetOpcode(tftp::opOACK); | 786 | p->SetOpcode(tftp::opOACK); |
768 | p->data.m_OACK.Set(&o); | 787 | p->data.m_OACK.Set(&o); |
769 | PostTFTP(p,TRUE); | 788 | PostTFTP(p,TRUE); |
770 | }else | 789 | }else |
771 | DoXfer(); | 790 | DoXfer(); |
772 | } | 791 | } |
773 | return TRUE; | 792 | return TRUE; |
774 | } | 793 | } |
775 | 794 | ||
776 | CRRQSocket::CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) | 795 | CRRQSocket::CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) |
777 | : CXferSocket(daddy,fileName,type,sin) | 796 | : CXferSocket(daddy,fileName,type,sin) |
778 | { | 797 | { |
779 | m_ACK=0; | 798 | m_ACK=0; |
780 | m_LastSlack=0; | 799 | m_LastSlack=0; |
781 | } | 800 | } |
782 | 801 | ||
783 | UINT tftp::tftpERROR::tftpSize(LPCTSTR msg) | 802 | UINT tftp::tftpERROR::tftpSize(LPCTSTR msg) |
784 | { | 803 | { |
785 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpERROR::tftpErrorCode)+strlen(msg)+1; | 804 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpERROR::tftpErrorCode)+strlen(msg)+1; |
786 | } | 805 | } |
787 | 806 | ||
788 | tftp* tftp::Allocate(UINT tftpSize) | 807 | tftp* tftp::Allocate(UINT tftpSize) |
789 | { | 808 | { |
790 | ASSERT(tftpSize); | 809 | ASSERT(tftpSize); |
791 | tftp* rv = (tftp*) new BYTE[tftpSlackSize+tftpSize]; | 810 | tftp* rv = (tftp*) new BYTE[tftpSlackSize+tftpSize]; |
792 | ASSERT(rv); | 811 | ASSERT(rv); |
793 | rv->length=tftpSize; | 812 | rv->length=tftpSize; |
794 | return rv; | 813 | return rv; |
795 | } | 814 | } |
796 | 815 | ||
797 | void tftp::errSet(UINT code,LPCTSTR msg) | 816 | void tftp::errSet(UINT code,LPCTSTR msg) |
798 | { | 817 | { |
799 | ASSERT(this); | 818 | ASSERT(this); |
800 | ASSERT(length>=data.m_ERROR.tftpSize(msg)); | 819 | ASSERT(length>=data.m_ERROR.tftpSize(msg)); |
801 | strcpy((char*)data.m_ERROR.data,msg); | 820 | strcpy((char*)data.m_ERROR.data,msg); |
802 | data.m_ERROR.SetCode(code); | 821 | data.m_ERROR.SetCode(code); |
803 | } | 822 | } |
804 | 823 | ||
805 | void CXferSocket::PostTFTP(tftp* p,BOOL retryable) | 824 | void CXferSocket::PostTFTP(tftp* p,BOOL retryable) |
806 | { | 825 | { |
807 | ASSERT(p); | 826 | ASSERT(p); |
808 | m_Queue.AddTail(p); | 827 | m_Queue.AddTail(p); |
809 | DoSelect(); | 828 | DoSelect(); |
810 | if(!m_bRetry){ | 829 | if(!m_bRetry){ |
811 | if(retryable) | 830 | if(retryable) |
812 | SetTry(p); | 831 | SetTry(p); |
813 | else | 832 | else |
814 | SetTry(); | 833 | SetTry(); |
815 | } | 834 | } |
816 | ResetTimeout(); | 835 | ResetTimeout(); |
817 | } | 836 | } |
818 | 837 | ||
819 | void CXferSocket::Deny(UINT errCode,UINT errID) | 838 | void CXferSocket::Deny(UINT errCode,UINT errID) |
820 | { | 839 | { |
821 | PostError(errCode,errID); | 840 | PostError(errCode,errID); |
822 | state=stateDeny; | 841 | state=stateDeny; |
823 | } | 842 | } |
824 | 843 | ||
825 | void CRRQSocket::DoXfer() | 844 | void CRRQSocket::DoXfer() |
826 | { | 845 | { |
827 | tftp *p = tftp::Allocate(tftp::tftpDATA::tftpSize(m_blkSize)); | 846 | tftp *p = tftp::Allocate(tftp::tftpDATA::tftpSize(m_blkSize)); |
828 | ASSERT(p); | 847 | ASSERT(p); |
829 | p->SetOpcode(tftp::opDATA); | 848 | p->SetOpcode(tftp::opDATA); |
830 | TRY{ | 849 | TRY{ |
831 | m_File.Seek(m_ACK*m_blkSize,CFile::begin); | 850 | m_File.Seek(m_ACK*m_blkSize,CFile::begin); |
832 | 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); |
833 | p->data.m_DATA.SetBlock(m_ACK+1); | 852 | p->data.m_DATA.SetBlock(m_ACK+1); |
834 | p->length=p->length-m_blkSize+bytes; | 853 | p->length=p->length-m_blkSize+bytes; |
835 | m_LastSlack = m_blkSize-bytes; | 854 | m_LastSlack = m_blkSize-bytes; |
836 | PostTFTP(p); | 855 | PostTFTP(p); |
837 | if(bytes<m_blkSize){ | 856 | if(bytes<m_blkSize){ |
838 | state=stateFinish; | 857 | state=stateFinish; |
839 | ASSERT(m_Daddy); | 858 | ASSERT(m_Daddy); |
840 | CString tmp; | 859 | CString tmp; |
841 | tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName); | 860 | tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName); |
842 | m_Daddy->LogLine(tmp); | 861 | m_Daddy->LogLine(tmp); |
843 | } | 862 | } |
844 | }CATCH(CFileException,e){ | 863 | }CATCH(CFileException,e){ |
845 | Deny(e); | 864 | Deny(e); |
846 | }END_CATCH | 865 | }END_CATCH |
847 | } | 866 | } |
848 | 867 | ||
849 | UINT tftp::tftpDATA::tftpSize(UINT blkSize) | 868 | UINT tftp::tftpDATA::tftpSize(UINT blkSize) |
850 | { | 869 | { |
851 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpDATA) | 870 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpDATA) |
852 | -sizeof(BYTE)+blkSize; | 871 | -sizeof(BYTE)+blkSize; |
853 | } | 872 | } |
854 | 873 | ||
855 | void CXferSocket::Deny(CFileException* e) | 874 | void CXferSocket::Deny(CFileException* e) |
856 | { | 875 | { |
857 | PostError(e); | 876 | PostError(e); |
858 | state=stateDeny; | 877 | state=stateDeny; |
859 | } | 878 | } |
860 | 879 | ||
861 | void CXferSocket::PostError(UINT errCode,UINT errID) | 880 | void CXferSocket::PostError(UINT errCode,UINT errID) |
862 | { | 881 | { |
863 | CString msg; | 882 | CString msg; |
864 | msg.LoadString(errID); | 883 | msg.LoadString(errID); |
865 | ASSERT(m_Daddy); | 884 | ASSERT(m_Daddy); |
866 | /*// *** | 885 | /*// *** |
867 | CString tmp; | 886 | CString tmp; |
868 | tmp.Format(IDS_LOG_SENTTFTPERROR,errCode,(LPCTSTR)msg); | 887 | tmp.Format(IDS_LOG_SENTTFTPERROR,errCode,(LPCTSTR)msg); |
869 | m_Daddy->LogLine(tmp); | 888 | m_Daddy->LogLine(tmp); |
870 | */ | 889 | */ |
871 | tftp* err = tftp::Allocate(tftp::tftpERROR::tftpSize(msg)); | 890 | tftp* err = tftp::Allocate(tftp::tftpERROR::tftpSize(msg)); |
872 | err->SetOpcode(tftp::opERROR); | 891 | err->SetOpcode(tftp::opERROR); |
873 | err->errSet(errCode,msg); | 892 | err->errSet(errCode,msg); |
874 | PostTFTP(err); | 893 | PostTFTP(err); |
875 | } | 894 | } |
876 | 895 | ||
877 | void CXferSocket::PostError(CFileException* e) | 896 | void CXferSocket::PostError(CFileException* e) |
878 | { | 897 | { |
879 | UINT eCode; | 898 | UINT eCode; |
880 | UINT eMsgID; | 899 | UINT eMsgID; |
881 | switch(e->m_cause){ | 900 | switch(e->m_cause){ |
882 | case CFileException::fileNotFound: | 901 | case CFileException::fileNotFound: |
883 | eCode=tftp::errNotFound; | 902 | eCode=tftp::errNotFound; |
884 | eMsgID=IDS_TFTP_ERROR_NOTFOUND; | 903 | eMsgID=IDS_TFTP_ERROR_NOTFOUND; |
885 | break; | 904 | break; |
886 | case CFileException::accessDenied: | 905 | case CFileException::accessDenied: |
887 | eCode=tftp::errAccessViolation; | 906 | eCode=tftp::errAccessViolation; |
888 | eMsgID=IDS_TFTP_ERROR_ACCESS; | 907 | eMsgID=IDS_TFTP_ERROR_ACCESS; |
889 | break; | 908 | break; |
890 | case CFileException::directoryFull: | 909 | case CFileException::directoryFull: |
891 | eCode=tftp::errDiskFull; | 910 | eCode=tftp::errDiskFull; |
892 | eMsgID=IDS_TFTP_ERROR_DIRFULL; | 911 | eMsgID=IDS_TFTP_ERROR_DIRFULL; |
893 | break; | 912 | break; |
894 | case CFileException::sharingViolation: | 913 | case CFileException::sharingViolation: |
895 | eCode=tftp::errAccessViolation; | 914 | eCode=tftp::errAccessViolation; |
896 | eMsgID=IDS_TFTP_ERROR_SHARING; | 915 | eMsgID=IDS_TFTP_ERROR_SHARING; |
897 | break; | 916 | break; |
898 | case CFileException::diskFull: | 917 | case CFileException::diskFull: |
899 | eCode=tftp::errDiskFull; | 918 | eCode=tftp::errDiskFull; |
900 | eMsgID=IDS_TFTP_ERROR_DISKFULL; | 919 | eMsgID=IDS_TFTP_ERROR_DISKFULL; |
901 | break; | 920 | break; |
902 | default: | 921 | default: |
903 | eCode=tftp::errUndefined; | 922 | eCode=tftp::errUndefined; |
904 | eMsgID=IDS_TFTP_ERROR_UNDEFINED; | 923 | eMsgID=IDS_TFTP_ERROR_UNDEFINED; |
905 | break; | 924 | break; |
906 | } | 925 | } |
907 | PostError(eCode,eMsgID); | 926 | PostError(eCode,eMsgID); |
908 | } | 927 | } |
909 | 928 | ||
910 | ULONG CRRQSocket::GetACK(void) | 929 | ULONG CRRQSocket::GetACK(void) |
911 | { | 930 | { |
912 | return (m_ACK*m_blkSize)-m_LastSlack; | 931 | return (m_ACK*m_blkSize)-m_LastSlack; |
913 | } | 932 | } |
914 | 933 | ||
915 | BOOL CRRQSocket::OnTFTP(tftp* p) | 934 | BOOL CRRQSocket::OnTFTP(tftp* p) |
916 | { | 935 | { |
917 | BOOL rv = TRUE; | 936 | BOOL rv = TRUE; |
918 | switch(p->Opcode()){ | 937 | switch(p->Opcode()){ |
919 | case tftp::opOACK: | 938 | case tftp::opOACK: |
920 | m_ACK=0; | 939 | m_ACK=0; |
921 | ASSERT(state!=stateFinish); | 940 | ASSERT(state!=stateFinish); |
922 | { | 941 | { |
923 | tftp::tftpOptions o; | 942 | tftp::tftpOptions o; |
924 | if(p->GetOptions(&o)){ | 943 | if(p->GetOptions(&o)){ |
925 | CString v; | 944 | CString v; |
926 | if(o.Lookup(tftpoBSize,v)){ | 945 | if(o.Lookup(tftpoBSize,v)){ |
927 | m_blkSize=atoi(v); | 946 | m_blkSize=atoi(v); |
928 | if(!m_blkSize){// *** More sanity checks | 947 | if(!m_blkSize){// *** More sanity checks |
929 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); | 948 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); |
930 | rv = TRUE; | 949 | rv = TRUE; |
931 | break; | 950 | break; |
932 | } | 951 | } |
933 | } | 952 | } |
934 | if(o.Lookup(tftpoTOut,v)){ | 953 | if(o.Lookup(tftpoTOut,v)){ |
935 | m_timeOut=atoi(v); | 954 | m_timeOut=atoi(v); |
936 | if(!m_timeOut){// *** More sanity checks | 955 | if(!m_timeOut){// *** More sanity checks |
937 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); | 956 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); |
938 | rv = TRUE; | 957 | rv = TRUE; |
939 | break; | 958 | break; |
940 | } | 959 | } |
941 | } | 960 | } |
942 | if(o.Lookup(tftpoXResume,v)){ | 961 | if(o.Lookup(tftpoXResume,v)){ |
943 | m_ACK=atoi(v); | 962 | m_ACK=atoi(v); |
944 | } | 963 | } |
945 | } | 964 | } |
946 | UpdateList(); | 965 | UpdateList(); |
947 | DoXfer(); | 966 | DoXfer(); |
948 | } | 967 | } |
949 | break; | 968 | break; |
950 | case tftp::opACK: | 969 | case tftp::opACK: |
951 | m_ACK=p->data.m_ACK.Block(); | 970 | m_ACK=p->data.m_ACK.Block(); |
952 | if(state!=stateFinish){ | 971 | if(state!=stateFinish){ |
953 | UpdateList(); | 972 | UpdateList(); |
954 | DoXfer(); | 973 | DoXfer(); |
955 | } | 974 | } |
956 | break; | 975 | break; |
957 | case tftp::opERROR: | 976 | case tftp::opERROR: |
958 | { | 977 | { |
959 | ASSERT(m_Daddy); | 978 | ASSERT(m_Daddy); |
960 | CString tmp; | 979 | CString tmp; |
961 | tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); | 980 | tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); |
962 | m_Daddy->LogLine(tmp); | 981 | m_Daddy->LogLine(tmp); |
963 | } | 982 | } |
964 | Destroy(FALSE); | 983 | Destroy(FALSE); |
965 | rv = FALSE; | 984 | rv = FALSE; |
966 | break; | 985 | break; |
967 | default: | 986 | default: |
968 | { | 987 | { |
969 | ASSERT(m_Daddy); | 988 | ASSERT(m_Daddy); |
970 | CString tmp; | 989 | CString tmp; |
971 | tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); | 990 | tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); |
972 | m_Daddy->LogLine(tmp); | 991 | m_Daddy->LogLine(tmp); |
973 | // *** Self destruct maybe?? | 992 | // *** Self destruct maybe?? |
974 | } | 993 | } |
975 | break; | 994 | break; |
976 | } | 995 | } |
977 | return rv; | 996 | return rv; |
978 | } | 997 | } |
979 | 998 | ||
980 | BOOL CWRQSocket::OnTFTP(tftp* p) | 999 | BOOL CWRQSocket::OnTFTP(tftp* p) |
981 | { | 1000 | { |
982 | switch(p->Opcode()){ | 1001 | switch(p->Opcode()){ |
983 | case tftp::opOACK: | 1002 | case tftp::opOACK: |
984 | ASSERT(state!=stateFinish); | 1003 | ASSERT(state!=stateFinish); |
985 | { | 1004 | { |
986 | if(m_bResume) | 1005 | if(m_bResume) |
987 | m_ACK=m_File.GetLength()/m_blkSize; | 1006 | m_ACK=m_File.GetLength()/m_blkSize; |
988 | else | 1007 | else |
989 | m_ACK=0; | 1008 | m_ACK=0; |
990 | tftp::tftpOptions o; | 1009 | tftp::tftpOptions o; |
991 | if(p->GetOptions(&o)){ | 1010 | if(p->GetOptions(&o)){ |
992 | CString v; | 1011 | CString v; |
993 | if(o.Lookup(tftpoBSize,v)){ | 1012 | if(o.Lookup(tftpoBSize,v)){ |
994 | m_blkSize=atoi(v); | 1013 | m_blkSize=atoi(v); |
995 | if(!m_blkSize){// *** More sanity checks | 1014 | if(!m_blkSize){// *** More sanity checks |
996 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); | 1015 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); |
997 | return TRUE; | 1016 | return TRUE; |
998 | } | 1017 | } |
999 | } | 1018 | } |
1000 | if(o.Lookup(tftpoTOut,v)){ | 1019 | if(o.Lookup(tftpoTOut,v)){ |
1001 | m_timeOut=atoi(v); | 1020 | m_timeOut=atoi(v); |
1002 | if(!m_timeOut){// *** More sanity checks | 1021 | if(!m_timeOut){// *** More sanity checks |
1003 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); | 1022 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); |
1004 | return TRUE; | 1023 | return TRUE; |
1005 | } | 1024 | } |
1006 | } | 1025 | } |
1007 | if(o.Lookup(tftpoTSize,v)){ | 1026 | if(o.Lookup(tftpoTSize,v)){ |
1008 | m_xferSize=atoi(v); | 1027 | m_xferSize=atoi(v); |
1009 | } | 1028 | } |
1010 | } | 1029 | } |
1011 | UpdateList(); | 1030 | UpdateList(); |
1012 | DoXfer(); | 1031 | DoXfer(); |
1013 | } | 1032 | } |
1014 | break; | 1033 | break; |
1015 | case tftp::opDATA: | 1034 | case tftp::opDATA: |
1016 | { | 1035 | { |
1017 | UINTblock = p->data.m_DATA.Block(); | 1036 | UINTblock = p->data.m_DATA.Block(); |
1018 | TRY{ | 1037 | TRY{ |
1019 | m_File.Seek((block-1)*m_blkSize,CFile::begin); | 1038 | m_File.Seek((block-1)*m_blkSize,CFile::begin); |
1020 | int bytes = p->length-sizeof(p->data.m_DATA.block)-(tftpHdrSize-tftpSlackSize); | 1039 | int bytes = p->length-sizeof(p->data.m_DATA.block)-(tftpHdrSize-tftpSlackSize); |
1021 | if(bytes){ | 1040 | if(bytes){ |
1022 | m_File.Write(p->data.m_DATA.data,bytes); | 1041 | m_File.Write(p->data.m_DATA.data,bytes); |
1023 | // *** Move to the other place where we can do it not that often | 1042 | // *** Move to the other place where we can do it not that often |
1024 | m_File.SetLength(m_File.GetPosition()); | 1043 | m_File.SetLength(m_File.GetPosition()); |
1025 | } | 1044 | } |
1026 | if(bytes<m_blkSize){ | 1045 | if(bytes<m_blkSize){ |
1027 | state=stateFinish; | 1046 | state=stateFinish; |
1028 | ASSERT(m_Daddy); | 1047 | ASSERT(m_Daddy); |
1029 | CString tmp; | 1048 | CString tmp; |
1030 | tmp.Format(IDS_LOG_XFERWRQFINISHED,(LPCTSTR)m_FileName); | 1049 | tmp.Format(IDS_LOG_XFERWRQFINISHED,(LPCTSTR)m_FileName); |
1031 | m_Daddy->LogLine(tmp); | 1050 | m_Daddy->LogLine(tmp); |
1032 | } | 1051 | } |
1033 | m_ACK=block; | 1052 | m_ACK=block; |
1034 | m_LastSlack=m_blkSize-bytes; | 1053 | m_LastSlack=m_blkSize-bytes; |
1035 | UpdateList(); | 1054 | UpdateList(); |
1036 | DoXfer(); | 1055 | DoXfer(); |
1037 | }CATCH(CFileException,e){ | 1056 | }CATCH(CFileException,e){ |
1038 | Deny(e); | 1057 | Deny(e); |
1039 | }END_CATCH | 1058 | }END_CATCH |
1040 | } | 1059 | } |
1041 | break; | 1060 | break; |
1042 | case tftp::opERROR: | 1061 | case tftp::opERROR: |
1043 | { | 1062 | { |
1044 | ASSERT(m_Daddy); | 1063 | ASSERT(m_Daddy); |
1045 | CString tmp; | 1064 | CString tmp; |
1046 | tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); | 1065 | tmp.Format(IDS_LOG_GOTTFTPERROR,p->data.m_ERROR.Code(),(LPCTSTR)p->errMessage()); |
1047 | m_Daddy->LogLine(tmp); | 1066 | m_Daddy->LogLine(tmp); |
1048 | } | 1067 | } |
1049 | Destroy(FALSE); | 1068 | Destroy(FALSE); |
1050 | return FALSE; | 1069 | return FALSE; |
1051 | default: | 1070 | default: |
1052 | { | 1071 | { |
1053 | ASSERT(m_Daddy); | 1072 | ASSERT(m_Daddy); |
1054 | CString tmp; | 1073 | CString tmp; |
1055 | tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); | 1074 | tmp.Format(IDS_LOG_XFEROPCODE,p->Opcode()); |
1056 | m_Daddy->LogLine(tmp); | 1075 | m_Daddy->LogLine(tmp); |
1057 | // *** Self destruct maybe?? | 1076 | // *** Self destruct maybe?? |
1058 | } | 1077 | } |
1059 | break; | 1078 | break; |
1060 | } | 1079 | } |
1061 | return TRUE; | 1080 | return TRUE; |
1062 | } | 1081 | } |
1063 | 1082 | ||
1064 | void tftp::SetOpcode(WORD op) | 1083 | void tftp::SetOpcode(WORD op) |
1065 | { | 1084 | { |
1066 | opcode = REVERSEBYTES(op); | 1085 | opcode = REVERSEBYTES(op); |
1067 | } | 1086 | } |
1068 | void tftp::tftpDATA::SetBlock(WORD b) | 1087 | void tftp::tftpDATA::SetBlock(WORD b) |
1069 | { | 1088 | { |
1070 | block=REVERSEBYTES(b); | 1089 | block=REVERSEBYTES(b); |
1071 | } | 1090 | } |
1072 | WORD tftp::tftpDATA::Block() | 1091 | WORD tftp::tftpDATA::Block() |
1073 | { | 1092 | { |
1074 | return REVERSEBYTES(block); | 1093 | return REVERSEBYTES(block); |
1075 | } | 1094 | } |
1076 | WORD tftp::tftpACK::Block() | 1095 | WORD tftp::tftpACK::Block() |
1077 | { | 1096 | { |
1078 | return REVERSEBYTES(block); | 1097 | return REVERSEBYTES(block); |
1079 | } | 1098 | } |
1080 | void tftp::tftpACK::SetBlock(WORD b) | 1099 | void tftp::tftpACK::SetBlock(WORD b) |
1081 | { | 1100 | { |
1082 | block = REVERSEBYTES(b); | 1101 | block = REVERSEBYTES(b); |
1083 | } | 1102 | } |
1084 | WORD tftp::tftpERROR::Code() | 1103 | WORD tftp::tftpERROR::Code() |
1085 | { | 1104 | { |
1086 | return REVERSEBYTES(code); | 1105 | return REVERSEBYTES(code); |
1087 | } | 1106 | } |
1088 | void tftp::tftpERROR::SetCode(WORD c) | 1107 | void tftp::tftpERROR::SetCode(WORD c) |
1089 | { | 1108 | { |
1090 | code = REVERSEBYTES(c); | 1109 | code = REVERSEBYTES(c); |
1091 | } | 1110 | } |
1092 | 1111 | ||
1093 | 1112 | ||
1094 | CString tftp::errMessage() | 1113 | CString tftp::errMessage() |
1095 | { | 1114 | { |
1096 | CString rv; | 1115 | CString rv; |
1097 | if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code))) | 1116 | if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code))) |
1098 | rv = (LPCTSTR)data.m_ERROR.data; | 1117 | rv = (LPCTSTR)data.m_ERROR.data; |
1099 | return rv; | 1118 | return rv; |
1100 | } | 1119 | } |
1101 | 1120 | ||
1102 | void CXferSocket::Destroy(BOOL success) | 1121 | void CXferSocket::Destroy(BOOL success) |
1103 | { | 1122 | { |
1104 | if(m_wndResolver){ | 1123 | if(m_wndResolver){ |
1105 | delete m_wndResolver; | 1124 | delete m_wndResolver; |
1106 | m_wndResolver=NULL; | 1125 | m_wndResolver=NULL; |
1107 | } | 1126 | } |
1108 | SetTry(); | 1127 | SetTry(); |
1109 | m_Daddy->m_bnw.StartSound( | 1128 | m_Daddy->m_bnw.StartSound( |
1110 | success | 1129 | success |
1111 | ? m_Daddy->m_bnwSuccess | 1130 | ? m_Daddy->m_bnwSuccess |
1112 | : m_Daddy->m_bnwAbort | 1131 | : m_Daddy->m_bnwAbort |
1113 | ); | 1132 | ); |
1114 | if(m_File.m_hFile!=CFile::hFileNull){ | 1133 | if(m_File.m_hFile!=CFile::hFileNull){ |
1115 | TRY{ | 1134 | TRY{ |
1116 | m_File.Close(); | 1135 | m_File.Close(); |
1117 | }CATCH(CFileException,e){ | 1136 | }CATCH(CFileException,e){ |
1118 | TRACE0("Error closing file\n"); | 1137 | TRACE0("Error closing file\n"); |
1119 | }END_CATCH | 1138 | }END_CATCH |
1120 | } | 1139 | } |
1121 | ASSERT(m_Daddy); | 1140 | ASSERT(m_Daddy); |
1122 | m_Daddy->KillTimer(m_hSocket); | 1141 | m_Daddy->KillTimer(m_hSocket); |
1123 | m_Daddy->m_Xfers.RemoveKey(m_hSocket); | 1142 | m_Daddy->m_Xfers.RemoveKey(m_hSocket); |
1124 | LV_FINDINFO lvf; | 1143 | LV_FINDINFO lvf; |
1125 | memset(&lvf,0,sizeof(lvf)); | 1144 | memset(&lvf,0,sizeof(lvf)); |
1126 | lvf.flags=LVFI_PARAM; | 1145 | lvf.flags=LVFI_PARAM; |
1127 | lvf.lParam=(LPARAM)this; | 1146 | lvf.lParam=(LPARAM)this; |
1128 | int i = m_Daddy->m_List.FindItem(&lvf); | 1147 | int i = m_Daddy->m_List.FindItem(&lvf); |
1129 | if(i>=0) | 1148 | if(i>=0) |
1130 | m_Daddy->m_List.DeleteItem(i); | 1149 | m_Daddy->m_List.DeleteItem(i); |
1131 | delete this; | 1150 | delete this; |
1132 | } | 1151 | } |
1133 | 1152 | ||
1134 | void CPumpKINDlg::LogLineToScreen(LPCTSTR str) | 1153 | void CPumpKINDlg::LogLineToScreen(LPCTSTR str) |
1135 | { | 1154 | { |
1136 | ASSERT(m_LogLength); | 1155 | ASSERT(m_LogLength); |
1137 | while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ | 1156 | while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ |
1138 | CTime *t = (CTime*)m_Log.GetItemData(0); | 1157 | CTime *t = (CTime*)m_Log.GetItemData(0); |
1139 | if(((DWORD)t)!=LB_ERR){ | 1158 | if(((DWORD)t)!=LB_ERR){ |
1140 | ASSERT(t); | 1159 | ASSERT(t); |
1141 | m_LogTimes.RemoveKey(t); | 1160 | m_LogTimes.RemoveKey(t); |
1142 | delete t; | 1161 | delete t; |
1143 | } | 1162 | } |
1144 | m_Log.DeleteString(0); | 1163 | m_Log.DeleteString(0); |
1145 | } | 1164 | } |
1146 | int i = m_Log.AddString(str); | 1165 | int i = m_Log.AddString(str); |
1147 | ASSERT(i!=LB_ERR); | 1166 | ASSERT(i!=LB_ERR); |
1148 | CTime *t = new CTime(CTime::GetCurrentTime()); | 1167 | CTime *t = new CTime(CTime::GetCurrentTime()); |
1149 | m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t)); | 1168 | m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t)); |
1150 | m_Log.SetCurSel(i); | 1169 | m_Log.SetCurSel(i); |
1151 | } | 1170 | } |
1152 | 1171 | ||
1153 | void CPumpKINDlg::LogLine(UINT msgID) | 1172 | void CPumpKINDlg::LogLine(UINT msgID) |
1154 | { | 1173 | { |
1155 | CString tmp; | 1174 | CString tmp; |
1156 | tmp.Format(msgID); | 1175 | tmp.Format(msgID); |
1157 | LogLine(tmp); | 1176 | LogLine(tmp); |
1158 | } | 1177 | } |
1159 | 1178 | ||
1160 | void CXferSocket::TurnSlashes(CString& fn,BOOL bBack) | 1179 | void CXferSocket::TurnSlashes(CString& fn,BOOL bBack) |
1161 | { | 1180 | { |
1162 | ints = fn.Find(bBack?'/':'\\'); | 1181 | ints = fn.Find(bBack?'/':'\\'); |
1163 | while(s>=0){ | 1182 | while(s>=0){ |
1164 | fn.SetAt(s,bBack?'\\':'/'); | 1183 | fn.SetAt(s,bBack?'\\':'/'); |
1165 | s = fn.Find(bBack?'/':'\\'); | 1184 | s = fn.Find(bBack?'/':'\\'); |
1166 | } | 1185 | } |
1167 | } | 1186 | } |
1168 | 1187 | ||
1169 | CString CXferSocket::ApplyRoot(LPCTSTR fileName) | 1188 | CString CXferSocket::ApplyRoot(LPCTSTR fileName) |
1170 | { | 1189 | { |
1171 | ASSERT(m_Daddy); | 1190 | ASSERT(m_Daddy); |
1172 | CString fn = fileName; | 1191 | CString fn = fileName; |
1173 | CString rv = m_Daddy->m_TFTPRoot; | 1192 | CString rv = m_Daddy->m_TFTPRoot; |
1174 | if(rv.IsEmpty()) | 1193 | if(rv.IsEmpty()) |
1175 | rv = "."; | 1194 | rv = "."; |
1176 | if(rv[rv.GetLength()-1]!='\\') | 1195 | if(rv[rv.GetLength()-1]!='\\') |
1177 | rv+="\\"; | 1196 | rv+="\\"; |
1178 | while((!fn.IsEmpty()) && fn[0]=='\\') | 1197 | while((!fn.IsEmpty()) && fn[0]=='\\') |
1179 | fn=fn.Mid(1); | 1198 | fn=fn.Mid(1); |
1180 | rv+=fn; | 1199 | rv+=fn; |
1181 | return rv; | 1200 | return rv; |
1182 | } | 1201 | } |
1183 | 1202 | ||
1184 | void CPumpKINDlg::OnOptions() | 1203 | void CPumpKINDlg::OnOptions() |
1185 | { | 1204 | { |
1186 | CPropertySheet cps(IDS_TITLE_OPTIONS,this); | 1205 | CPropertySheet cps(IDS_TITLE_OPTIONS,this); |
1187 | CPropsServer server; | 1206 | CPropsServer server; |
1188 | CPropsNetwork network; | 1207 | CPropsNetwork network; |
1189 | CPropsSounds sounds; | 1208 | CPropsSounds sounds; |
1190 | CPropsACL acl; | 1209 | CPropsACL acl; |
1191 | 1210 | ||
1192 | server.m_RRQMode=m_RRQMode; | 1211 | server.m_RRQMode=m_RRQMode; |
1193 | server.m_TFTPRoot=m_TFTPRoot; | 1212 | server.m_TFTPRoot=m_TFTPRoot; |
1194 | server.m_TFTPSubdirs=m_bTFTPSubdirs; | 1213 | server.m_TFTPSubdirs=m_bTFTPSubdirs; |
1195 | server.m_WRQMode=m_WRQMode; | 1214 | server.m_WRQMode=m_WRQMode; |
1196 | server.m_PromptTimeOut=m_PromptTimeOut; | 1215 | server.m_PromptTimeOut=m_PromptTimeOut; |
1197 | server.m_LogFile=m_LogFile; | 1216 | server.m_LogFile=m_LogFile; |
1198 | 1217 | ||
1199 | network.m_ListenPort=m_ListenPort; | 1218 | network.m_ListenPort=m_ListenPort; |
1200 | network.m_SpeakPort=m_SpeakPort; | 1219 | network.m_SpeakPort=m_SpeakPort; |
1201 | network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); | 1220 | network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); |
1202 | network.m_BlockSize=m_BlockSize; | 1221 | network.m_BlockSize=m_BlockSize; |
1203 | 1222 | ||
1204 | sounds.m_Request = m_bnwRequest; | 1223 | sounds.m_Request = m_bnwRequest; |
1205 | sounds.m_Success = m_bnwSuccess; | 1224 | sounds.m_Success = m_bnwSuccess; |
1206 | sounds.m_Abort = m_bnwAbort; | 1225 | sounds.m_Abort = m_bnwAbort; |
1207 | 1226 | ||
1208 | acl.m_rulist = m_aclRules; | 1227 | acl.m_rulist = m_aclRules; |
1209 | 1228 | ||
1210 | cps.AddPage(&server); | 1229 | cps.AddPage(&server); |
1211 | cps.AddPage(&network); | 1230 | cps.AddPage(&network); |
1212 | cps.AddPage(&sounds); | 1231 | cps.AddPage(&sounds); |
1213 | cps.AddPage(&acl); | 1232 | cps.AddPage(&acl); |
1214 | if(cps.DoModal()==IDOK){ | 1233 | if(cps.DoModal()==IDOK){ |
1215 | m_RRQMode=server.m_RRQMode; | 1234 | m_RRQMode=server.m_RRQMode; |
1216 | m_TFTPRoot=server.m_TFTPRoot; | 1235 | m_TFTPRoot=server.m_TFTPRoot; |
1217 | m_bTFTPSubdirs=server.m_TFTPSubdirs; | 1236 | m_bTFTPSubdirs=server.m_TFTPSubdirs; |
1218 | m_WRQMode=server.m_WRQMode; | 1237 | m_WRQMode=server.m_WRQMode; |
1219 | m_PromptTimeOut=server.m_PromptTimeOut; | 1238 | m_PromptTimeOut=server.m_PromptTimeOut; |
1220 | m_LogFile=server.m_LogFile; | 1239 | m_LogFile=server.m_LogFile; |
1221 | 1240 | ||
1222 | m_ListenPort=network.m_ListenPort; | 1241 | m_ListenPort=network.m_ListenPort; |
1223 | m_SpeakPort=network.m_SpeakPort; | 1242 | m_SpeakPort=network.m_SpeakPort; |
1224 | m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); | 1243 | m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); |
1225 | m_BlockSize=network.m_BlockSize; | 1244 | m_BlockSize=network.m_BlockSize; |
1226 | 1245 | ||
1227 | m_bnwRequest = sounds.m_Request; | 1246 | m_bnwRequest = sounds.m_Request; |
1228 | m_bnwSuccess = sounds.m_Success; | 1247 | m_bnwSuccess = sounds.m_Success; |
1229 | m_bnwAbort = sounds.m_Abort; | 1248 | m_bnwAbort = sounds.m_Abort; |
1230 | 1249 | ||
1231 | m_aclRules = acl.m_rulist; | 1250 | m_aclRules = acl.m_rulist; |
1232 | 1251 | ||
1233 | m_lastlogerr.Empty(); | 1252 | m_lastlogerr.Empty(); |
1234 | } | 1253 | } |
1235 | } | 1254 | } |
1236 | 1255 | ||
1237 | BOOL CRRQSocket::ConfirmRequest() | 1256 | BOOL CRRQSocket::ConfirmRequest() |
1238 | { | 1257 | { |
1239 | CConfirmRRQDlg cd(NULL); | 1258 | CConfirmRRQDlg cd(NULL); |
1240 | cd.m_Daddy=this; | 1259 | cd.m_Daddy=this; |
1241 | cd.m_File=m_FileName; | 1260 | cd.m_File=m_FileName; |
1242 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); | 1261 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); |
1243 | if(cd.DoModal()==IDOK) | 1262 | if(cd.DoModal()==IDOK) |
1244 | return TRUE; | 1263 | return TRUE; |
1245 | return FALSE; | 1264 | return FALSE; |
1246 | } | 1265 | } |
1247 | 1266 | ||
1248 | CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) | 1267 | CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) |
1249 | : CXferSocket(daddy,fileName,type,sin) | 1268 | : CXferSocket(daddy,fileName,type,sin) |
1250 | { | 1269 | { |
1251 | state=stateNone; | 1270 | state=stateNone; |
1252 | m_ACK=0; | 1271 | m_ACK=0; |
1253 | m_LastSlack=0; | 1272 | m_LastSlack=0; |
1254 | m_bResume=FALSE; | 1273 | m_bResume=FALSE; |
1255 | } | 1274 | } |
1256 | 1275 | ||
1257 | BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) | 1276 | BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) |
1258 | { | 1277 | { |
1259 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) | 1278 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) |
1260 | return FALSE; | 1279 | return FALSE; |
1261 | ASSERT(m_Daddy); | 1280 | ASSERT(m_Daddy); |
1262 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); | 1281 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); |
1263 | m_Daddy->m_Xfers[m_hSocket]=this; | 1282 | m_Daddy->m_Xfers[m_hSocket]=this; |
1264 | UpdateList(); | 1283 | UpdateList(); |
1265 | CString lf; | 1284 | CString lf; |
1266 | if(!localFile) { | 1285 | if(!localFile) { |
1267 | lf = m_FileName; | 1286 | lf = m_FileName; |
1268 | TurnSlashes(lf,TRUE); | 1287 | TurnSlashes(lf,TRUE); |
1269 | } | 1288 | } |
1270 | CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); | 1289 | CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); |
1271 | if(!localFile){// This is an incoming request.. | 1290 | if(!localFile){// This is an incoming request.. |
1272 | if(CheckBadRelativeness(m_FileName)){ | 1291 | if(CheckBadRelativeness(m_FileName)){ |
1273 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 1292 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
1274 | return TRUE; | 1293 | return TRUE; |
1275 | } | 1294 | } |
1276 | BOOL exists; | 1295 | BOOL exists; |
1277 | if(!_access((LPCTSTR)fn,0)) | 1296 | if(!_access((LPCTSTR)fn,0)) |
1278 | m_Rename=exists=TRUE; | 1297 | m_Rename=exists=TRUE; |
1279 | else | 1298 | else |
1280 | m_Rename=exists=FALSE; | 1299 | m_Rename=exists=FALSE; |
1281 | int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opWRQ,m_Peer.sin_addr.s_addr); | 1300 | int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opWRQ,m_Peer.sin_addr.s_addr); |
1282 | if(atar<0) | 1301 | if(atar<0) |
1283 | atar=m_Daddy->m_WRQMode; | 1302 | atar=m_Daddy->m_WRQMode; |
1284 | switch(atar){ | 1303 | switch(atar){ |
1285 | case CPumpKINDlg::wrqTakeAll: | 1304 | case CPumpKINDlg::wrqTakeAll: |
1286 | if(exists){ | 1305 | if(exists){ |
1287 | if(!RenameFile(fn)){ | 1306 | if(!RenameFile(fn)){ |
1288 | Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); | 1307 | Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); |
1289 | return TRUE; | 1308 | return TRUE; |
1290 | } | 1309 | } |
1291 | } | 1310 | } |
1292 | break; | 1311 | break; |
1293 | case CPumpKINDlg::wrqConfirmIfExists: | 1312 | case CPumpKINDlg::wrqConfirmIfExists: |
1294 | if(!exists) | 1313 | if(!exists) |
1295 | break; | 1314 | break; |
1296 | case CPumpKINDlg::wrqAlwaysConfirm: | 1315 | case CPumpKINDlg::wrqAlwaysConfirm: |
1297 | if(exists) | 1316 | if(exists) |
1298 | m_bResume=TRUE; | 1317 | m_bResume=TRUE; |
1299 | if(ConfirmRequest()){ | 1318 | if(ConfirmRequest()){ |
1300 | if(m_Rename){ | 1319 | if(m_Rename){ |
1301 | RenameFile(fn); | 1320 | RenameFile(fn); |
1302 | if(SaveAs(fn)) | 1321 | if(SaveAs(fn)) |
1303 | break; | 1322 | break; |
1304 | }else | 1323 | }else |
1305 | break; | 1324 | break; |
1306 | } | 1325 | } |
1307 | default: | 1326 | default: |
1308 | TRACE1("Unexpected access target: %d\n",atar); | 1327 | TRACE1("Unexpected access target: %d\n",atar); |
1309 | case CPumpKINDlg::wrqDenyAll: | 1328 | case CPumpKINDlg::wrqDenyAll: |
1310 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 1329 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
1311 | return TRUE; | 1330 | return TRUE; |
1312 | } | 1331 | } |
1313 | } | 1332 | } |
1314 | CFileException e; | 1333 | CFileException e; |
1315 | if(!m_File.Open( | 1334 | if(!m_File.Open( |
1316 | fn, | 1335 | fn, |
1317 | m_bResume | 1336 | m_bResume |
1318 | ?(CFile::modeWrite|CFile::shareDenyWrite) | 1337 | ?(CFile::modeWrite|CFile::shareDenyWrite) |
1319 | :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), | 1338 | :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), |
1320 | &e | 1339 | &e |
1321 | )){ | 1340 | )){ |
1322 | if(localFile){// Outgoing request | 1341 | if(localFile){// Outgoing request |
1323 | CString tmp; | 1342 | CString tmp; |
1324 | tmp.Format(IDS_LOG_FAILEDTOOPEN,fn); | 1343 | tmp.Format(IDS_LOG_FAILEDTOOPEN,fn); |
1325 | m_Daddy->LogLine(tmp); | 1344 | m_Daddy->LogLine(tmp); |
1326 | return FALSE; | 1345 | return FALSE; |
1327 | }else{ | 1346 | }else{ |
1328 | Deny(&e); | 1347 | Deny(&e); |
1329 | return TRUE; | 1348 | return TRUE; |
1330 | } | 1349 | } |
1331 | } | 1350 | } |
1332 | if(hostName){ | 1351 | if(hostName){ |
1333 | m_HostName=hostName; | 1352 | m_HostName=hostName; |
1334 | 1353 | ||
1335 | CString tmp; | 1354 | CString tmp; |
1336 | tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName); | 1355 | tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName); |
1337 | m_Daddy->LogLine(tmp); | 1356 | m_Daddy->LogLine(tmp); |
1338 | 1357 | ||
1339 | CString inAddr = hostName; | 1358 | CString inAddr = hostName; |
1340 | int at = inAddr.Find('@'); | 1359 | int at = inAddr.Find('@'); |
1341 | if(at>=0) | 1360 | if(at>=0) |
1342 | inAddr=inAddr.Mid(at+1); | 1361 | inAddr=inAddr.Mid(at+1); |
1343 | if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){ | 1362 | if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){ |
1344 | ASSERT(!m_wndResolver); | 1363 | ASSERT(!m_wndResolver); |
1345 | m_wndResolver = new CResolver(this); | 1364 | m_wndResolver = new CResolver(this); |
1346 | ASSERT(m_wndResolver); | 1365 | ASSERT(m_wndResolver); |
1347 | return m_wndResolver->Resolve(); | 1366 | return m_wndResolver->Resolve(); |
1348 | }else{ | 1367 | }else{ |
1349 | OnHostKnown(); | 1368 | OnHostKnown(); |
1350 | return TRUE; | 1369 | return TRUE; |
1351 | } | 1370 | } |
1352 | } | 1371 | } |
1353 | CString v; | 1372 | CString v; |
1354 | tftp::tftpOptions oack; | 1373 | tftp::tftpOptions oack; |
1355 | if(m_Options.Lookup(tftpoTSize,v)){ | 1374 | if(m_Options.Lookup(tftpoTSize,v)){ |
1356 | m_xferSize=atol(v); | 1375 | m_xferSize=atol(v); |
1357 | if(!m_xferSize){ | 1376 | if(!m_xferSize){ |
1358 | Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE); | 1377 | Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE); |
1359 | return TRUE; | 1378 | return TRUE; |
1360 | } | 1379 | } |
1361 | } | 1380 | } |
1362 | if(m_Options.Lookup(tftpoBSize,v)){ | 1381 | if(m_Options.Lookup(tftpoBSize,v)){ |
1363 | m_blkSize=atoi(v); | 1382 | m_blkSize=atoi(v); |
1364 | if(!m_blkSize){// *** Do more about sanity check | 1383 | if(!m_blkSize){// *** Do more about sanity check |
1365 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); | 1384 | Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); |
1366 | return TRUE; | 1385 | return TRUE; |
1367 | } | 1386 | } |
1368 | v.Format("%u",m_blkSize); | 1387 | v.Format("%u",m_blkSize); |
1369 | oack[tftpoBSize]=v; | 1388 | oack[tftpoBSize]=v; |
1370 | } | 1389 | } |
1371 | if(m_Options.Lookup(tftpoTOut,v)){ | 1390 | if(m_Options.Lookup(tftpoTOut,v)){ |
1372 | m_timeOut=atoi(v); | 1391 | m_timeOut=atoi(v); |
1373 | if(!m_timeOut){// *** Do more about sanity check | 1392 | if(!m_timeOut){// *** Do more about sanity check |
1374 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); | 1393 | Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); |
1375 | return TRUE; | 1394 | return TRUE; |
1376 | } | 1395 | } |
1377 | v.Format("%u",m_timeOut); | 1396 | v.Format("%u",m_timeOut); |
1378 | oack[tftpoTOut]=v; | 1397 | oack[tftpoTOut]=v; |
1379 | } | 1398 | } |
1380 | if(m_Options.Lookup(tftpoXResume,v) && m_bResume){ | 1399 | if(m_Options.Lookup(tftpoXResume,v) && m_bResume){ |
1381 | m_ACK=m_File.GetLength()/m_blkSize; | 1400 | m_ACK=m_File.GetLength()/m_blkSize; |
1382 | v.Format("%u",m_ACK); | 1401 | v.Format("%u",m_ACK); |
1383 | oack[tftpoXResume]=v; | 1402 | oack[tftpoXResume]=v; |
1384 | }else | 1403 | }else |
1385 | m_ACK=0; | 1404 | m_ACK=0; |
1386 | state=stateXfer; | 1405 | state=stateXfer; |
1387 | if(oack.GetCount()){ | 1406 | if(oack.GetCount()){ |
1388 | tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack)); | 1407 | tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack)); |
1389 | ASSERT(p); | 1408 | ASSERT(p); |
1390 | p->SetOpcode(tftp::opOACK); | 1409 | p->SetOpcode(tftp::opOACK); |
1391 | p->data.m_OACK.Set(&oack); | 1410 | p->data.m_OACK.Set(&oack); |
1392 | PostTFTP(p,TRUE); | 1411 | PostTFTP(p,TRUE); |
1393 | }else | 1412 | }else |
1394 | DoXfer(); | 1413 | DoXfer(); |
1395 | return TRUE; | 1414 | return TRUE; |
1396 | } | 1415 | } |
1397 | 1416 | ||
1398 | BOOL CWRQSocket::ConfirmRequest() | 1417 | BOOL CWRQSocket::ConfirmRequest() |
1399 | { | 1418 | { |
1400 | CConfirmWRQDlg cd(NULL); | 1419 | CConfirmWRQDlg cd(NULL); |
1401 | cd.m_Daddy=this; | 1420 | cd.m_Daddy=this; |
1402 | cd.m_File=m_FileName; | 1421 | cd.m_File=m_FileName; |
1403 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); | 1422 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); |
1404 | switch(cd.DoModal()){ | 1423 | switch(cd.DoModal()){ |
1405 | case IDOK: | 1424 | case IDOK: |
1406 | m_Rename=FALSE; | 1425 | m_Rename=FALSE; |
1407 | m_bResume=FALSE; | 1426 | m_bResume=FALSE; |
1408 | return TRUE; | 1427 | return TRUE; |
1409 | case IDC_RENAME: | 1428 | case IDC_RENAME: |
1410 | m_bResume=FALSE; | 1429 | m_bResume=FALSE; |
1411 | m_Rename=TRUE; | 1430 | m_Rename=TRUE; |
1412 | return TRUE; | 1431 | return TRUE; |
1413 | case IDC_RESUME: | 1432 | case IDC_RESUME: |
1414 | m_Rename=FALSE; | 1433 | m_Rename=FALSE; |
1415 | m_bResume=TRUE; | 1434 | m_bResume=TRUE; |
1416 | return TRUE; | 1435 | return TRUE; |
1417 | case IDCANCEL: | 1436 | case IDCANCEL: |
1418 | return FALSE; | 1437 | return FALSE; |
1419 | } | 1438 | } |
1420 | return FALSE; | 1439 | return FALSE; |
1421 | } | 1440 | } |
1422 | 1441 | ||
1423 | BOOL CWRQSocket::RenameFile(CString& fn) | 1442 | BOOL CWRQSocket::RenameFile(CString& fn) |
1424 | { | 1443 | { |
1425 | CString renamed = fn; | 1444 | CString renamed = fn; |
1426 | if(fn.IsEmpty()) | 1445 | if(fn.IsEmpty()) |
1427 | return FALSE; | 1446 | return FALSE; |
1428 | if(fn[fn.GetLength()-1]==')'){ | 1447 | if(fn[fn.GetLength()-1]==')'){ |
1429 | int op = fn.ReverseFind('('); | 1448 | int op = fn.ReverseFind('('); |
1430 | if(op>0 && fn[op-1]==' '){ | 1449 | if(op>0 && fn[op-1]==' '){ |
1431 | if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty()) | 1450 | if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty()) |
1432 | renamed = renamed.Left(op-1); | 1451 | renamed = renamed.Left(op-1); |
1433 | } | 1452 | } |
1434 | } | 1453 | } |
1435 | CString testFN; | 1454 | CString testFN; |
1436 | for(UINT tmp=0;tmp<32768;tmp++){ | 1455 | for(UINT tmp=0;tmp<32768;tmp++){ |
1437 | testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp); | 1456 | testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp); |
1438 | if(!_access((LPCTSTR)testFN,0)) | 1457 | if(!_access((LPCTSTR)testFN,0)) |
1439 | continue; | 1458 | continue; |
1440 | fn=testFN; | 1459 | fn=testFN; |
1441 | return TRUE; | 1460 | return TRUE; |
1442 | } | 1461 | } |
1443 | return FALSE; | 1462 | return FALSE; |
1444 | } | 1463 | } |
1445 | 1464 | ||
1446 | BOOL CWRQSocket::SaveAs(CString& fn) | 1465 | BOOL CWRQSocket::SaveAs(CString& fn) |
1447 | { | 1466 | { |
1448 | CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy); | 1467 | CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy); |
1449 | CString title; | 1468 | CString title; |
1450 | title.LoadString(IDS_RENAME_TITLE); | 1469 | title.LoadString(IDS_RENAME_TITLE); |
1451 | cfd.m_ofn.lpstrTitle=(LPCTSTR)title; | 1470 | cfd.m_ofn.lpstrTitle=(LPCTSTR)title; |
1452 | if(cfd.DoModal()!=IDOK) | 1471 | if(cfd.DoModal()!=IDOK) |
1453 | return FALSE; | 1472 | return FALSE; |
1454 | fn = cfd.GetPathName(); | 1473 | fn = cfd.GetPathName(); |
1455 | return TRUE; | 1474 | return TRUE; |
1456 | } | 1475 | } |
1457 | 1476 | ||
1458 | void CWRQSocket::DoXfer() | 1477 | void CWRQSocket::DoXfer() |
1459 | { | 1478 | { |
1460 | tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize()); | 1479 | tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize()); |
1461 | ASSERT(p); | 1480 | ASSERT(p); |
1462 | p->SetOpcode(tftp::opACK); | 1481 | p->SetOpcode(tftp::opACK); |
1463 | p->data.m_ACK.SetBlock(m_ACK); | 1482 | p->data.m_ACK.SetBlock(m_ACK); |
1464 | TRACE1("WRQ-ACK-%u\n",m_ACK); | 1483 | TRACE1("WRQ-ACK-%u\n",m_ACK); |
1465 | PostTFTP(p,TRUE);// *** ??? Hope this is right | 1484 | PostTFTP(p,TRUE);// *** ??? Hope this is right |
1466 | } | 1485 | } |
1467 | 1486 | ||
1468 | UINT tftp::tftpACK::tftpSize() | 1487 | UINT tftp::tftpACK::tftpSize() |
1469 | { | 1488 | { |
1470 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpACK); | 1489 | return tftpHdrSize-tftpSlackSize+sizeof(tftp::tftpACK); |
1471 | } | 1490 | } |
1472 | 1491 | ||
1473 | ULONG CWRQSocket::GetACK() | 1492 | ULONG CWRQSocket::GetACK() |
1474 | { | 1493 | { |
1475 | return (m_ACK*m_blkSize)-m_LastSlack; | 1494 | return (m_ACK*m_blkSize)-m_LastSlack; |
1476 | } | 1495 | } |
1477 | 1496 | ||
1478 | void CXferSocket::ResetTimeout() | 1497 | void CXferSocket::ResetTimeout() |
1479 | { | 1498 | { |
1480 | ASSERT(m_Daddy); | 1499 | ASSERT(m_Daddy); |
1481 | m_Daddy->m_Retrier->KillTimer(m_hSocket); | 1500 | m_Daddy->m_Retrier->KillTimer(m_hSocket); |
1482 | if(m_Retry) | 1501 | if(m_Retry) |
1483 | m_Daddy->m_Retrier->SetTimer(m_hSocket,min(60,m_Daddy->m_RetryTimeOut.GetTotalSeconds())*1000,NULL); | 1502 | m_Daddy->m_Retrier->SetTimer(m_hSocket,min(60,m_Daddy->m_RetryTimeOut.GetTotalSeconds())*1000,NULL); |
1484 | if(!m_bRetry){ | 1503 | if(!m_bRetry){ |
1485 | m_Daddy->KillTimer(m_hSocket); | 1504 | m_Daddy->KillTimer(m_hSocket); |
1486 | m_Daddy->SetTimer(m_hSocket,min(60,m_timeOut)*1000,NULL); | 1505 | m_Daddy->SetTimer(m_hSocket,min(60,m_timeOut)*1000,NULL); |
1487 | } | 1506 | } |
1488 | } | 1507 | } |
1489 | 1508 | ||
1490 | void CXferSocket::Abort() | 1509 | void CXferSocket::Abort() |
1491 | { | 1510 | { |
1492 | ASSERT(m_Daddy); | 1511 | ASSERT(m_Daddy); |
1493 | CString tmp; | 1512 | CString tmp; |
1494 | tmp.Format(IDS_LOG_XFERABORTED,(LPCTSTR)m_FileName); | 1513 | tmp.Format(IDS_LOG_XFERABORTED,(LPCTSTR)m_FileName); |
1495 | m_Daddy->LogLine(tmp); | 1514 | m_Daddy->LogLine(tmp); |
1496 | Destroy(FALSE); | 1515 | Destroy(FALSE); |
1497 | } | 1516 | } |
1498 | 1517 | ||
1499 | void CPumpKINDlg::OnTimer(UINT nIDEvent) | 1518 | void CPumpKINDlg::OnTimer(UINT nIDEvent) |
1500 | { | 1519 | { |
1501 | CXferSocket *socket; | 1520 | CXferSocket *socket; |
1502 | if(m_Xfers.Lookup(nIDEvent,socket)){ | 1521 | if(m_Xfers.Lookup(nIDEvent,socket)){ |
1503 | CString tmp; | 1522 | CString tmp; |
1504 | tmp.Format(IDS_LOG_TIMEDOUT,socket->m_FileName); | 1523 | tmp.Format(IDS_LOG_TIMEDOUT,socket->m_FileName); |
1505 | LogLine(tmp); | 1524 | LogLine(tmp); |
1506 | socket->Abort(); | 1525 | socket->Abort(); |
1507 | }else{ | 1526 | }else{ |
1508 | TRACE0("Failed to find timed out socket!\n"); | 1527 | TRACE0("Failed to find timed out socket!\n"); |
1509 | } | 1528 | } |
1510 | CDialog::OnTimer(nIDEvent); | 1529 | CDialog::OnTimer(nIDEvent); |
1511 | } | 1530 | } |
1512 | 1531 | ||
1513 | void CPumpKINDlg::OnExit() | 1532 | void CPumpKINDlg::OnExit() |
1514 | { | 1533 | { |
1515 | if(!m_Xfers.IsEmpty()){ | 1534 | if(!m_Xfers.IsEmpty()){ |
1516 | CString title,text; | 1535 | CString title,text; |
1517 | title.LoadString(IDS_CONFIRMEXIT_TITLE); | 1536 | title.LoadString(IDS_CONFIRMEXIT_TITLE); |
1518 | text.LoadString(IDS_CONFIRMEXIT_TEXT); | 1537 | text.LoadString(IDS_CONFIRMEXIT_TEXT); |
1519 | if(MessageBox(text,title,MB_ICONQUESTION|MB_YESNO)!=IDYES) | 1538 | if(MessageBox(text,title,MB_ICONQUESTION|MB_YESNO)!=IDYES) |
1520 | return; | 1539 | return; |
1521 | } | 1540 | } |
1522 | m_bExiting=TRUE; | 1541 | m_bExiting=TRUE; |
1523 | EndDialog(IDOK); | 1542 | EndDialog(IDOK); |
1524 | } | 1543 | } |
1525 | 1544 | ||
1526 | void CPumpKINDlg::OnPut() | 1545 | void CPumpKINDlg::OnPut() |
1527 | { | 1546 | { |
1528 | CRequestDlg crd(NULL); | 1547 | CRequestDlg crd(NULL); |
1529 | crd.m_Put=TRUE; | 1548 | crd.m_Put=TRUE; |
1530 | crd.m_BSize=m_BlockSize; | 1549 | crd.m_BSize=m_BlockSize; |
1531 | if(crd.DoModal()==IDOK){ | 1550 | if(crd.DoModal()==IDOK){ |
1532 | CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); | 1551 | CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); |
1533 | if(crd.m_BSize) | 1552 | if(crd.m_BSize) |
1534 | socket->m__blkSize=crd.m_BSize; | 1553 | socket->m__blkSize=crd.m_BSize; |
1535 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) | 1554 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) |
1536 | socket->Destroy(); | 1555 | socket->Destroy(); |
1537 | } | 1556 | } |
1538 | } | 1557 | } |
1539 | 1558 | ||
1540 | void CPumpKINDlg::OnGet() | 1559 | void CPumpKINDlg::OnGet() |
1541 | { | 1560 | { |
1542 | CRequestDlg crd(NULL); | 1561 | CRequestDlg crd(NULL); |
1543 | crd.m_Put=FALSE; | 1562 | crd.m_Put=FALSE; |
1544 | crd.m_BSize=m_BlockSize; | 1563 | crd.m_BSize=m_BlockSize; |
1545 | if(crd.DoModal()==IDOK){ | 1564 | if(crd.DoModal()==IDOK){ |
1546 | CWRQSocket *socket = new CWRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); | 1565 | CWRQSocket *socket = new CWRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); |
1547 | if(crd.m_BSize) | 1566 | if(crd.m_BSize) |
1548 | socket->m__blkSize=crd.m_BSize; | 1567 | socket->m__blkSize=crd.m_BSize; |
1549 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) | 1568 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) |
1550 | socket->Destroy(); | 1569 | socket->Destroy(); |
1551 | } | 1570 | } |
1552 | } | 1571 | } |
1553 | 1572 | ||
1554 | void CPumpKINDlg::SetupButtons() | 1573 | void CPumpKINDlg::SetupButtons() |
1555 | { | 1574 | { |
1556 | m_AbortCtl.EnableWindow(m_List.GetSelectedCount()>0); | 1575 | m_AbortCtl.EnableWindow(m_List.GetSelectedCount()>0); |
1557 | } | 1576 | } |
1558 | 1577 | ||
1559 | void CPumpKINDlg::OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult) | 1578 | void CPumpKINDlg::OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult) |
1560 | { | 1579 | { |
1561 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; | 1580 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; |
1562 | SetupButtons(); | 1581 | SetupButtons(); |
1563 | *pResult = 0; | 1582 | *pResult = 0; |
1564 | } | 1583 | } |
1565 | 1584 | ||
1566 | void CPumpKINDlg::OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult) | 1585 | void CPumpKINDlg::OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult) |
1567 | { | 1586 | { |
1568 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; | 1587 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; |
1569 | SetupButtons(); | 1588 | SetupButtons(); |
1570 | *pResult = 0; | 1589 | *pResult = 0; |
1571 | } | 1590 | } |
1572 | 1591 | ||
1573 | void CPumpKINDlg::OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult) | 1592 | void CPumpKINDlg::OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult) |
1574 | { | 1593 | { |
1575 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; | 1594 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; |
1576 | SetupButtons(); | 1595 | SetupButtons(); |
1577 | *pResult = 0; | 1596 | *pResult = 0; |
1578 | } | 1597 | } |
1579 | 1598 | ||
1580 | void CPumpKINDlg::OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult) | 1599 | void CPumpKINDlg::OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult) |
1581 | { | 1600 | { |
1582 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; | 1601 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; |
1583 | SetupButtons(); | 1602 | SetupButtons(); |
1584 | *pResult = 0; | 1603 | *pResult = 0; |
1585 | } | 1604 | } |
1586 | 1605 | ||
1587 | void CPumpKINDlg::OnAbort() | 1606 | void CPumpKINDlg::OnAbort() |
1588 | { | 1607 | { |
1589 | if(!m_List.GetSelectedCount()) | 1608 | if(!m_List.GetSelectedCount()) |
1590 | return; | 1609 | return; |
1591 | intitems = m_List.GetItemCount(); | 1610 | intitems = m_List.GetItemCount(); |
1592 | for(int tmp=0;tmp<items;tmp++){ | 1611 | for(int tmp=0;tmp<items;tmp++){ |
1593 | if(!(m_List.GetItemState(tmp,LVIS_SELECTED)&LVIS_SELECTED)) | 1612 | if(!(m_List.GetItemState(tmp,LVIS_SELECTED)&LVIS_SELECTED)) |
1594 | continue; | 1613 | continue; |
1595 | CXferSocket *xfer = (CXferSocket*) m_List.GetItemData(tmp); | 1614 | CXferSocket *xfer = (CXferSocket*) m_List.GetItemData(tmp); |
1596 | ASSERT(xfer); | 1615 | ASSERT(xfer); |
1597 | xfer->Abort(); | 1616 | xfer->Abort(); |
1598 | } | 1617 | } |
1599 | } | 1618 | } |
1600 | 1619 | ||
1601 | void CXferSocket::OnFailedToResolve() | 1620 | void CXferSocket::OnFailedToResolve() |
1602 | { | 1621 | { |
1603 | TRACE0("Resolve failed\n"); | 1622 | TRACE0("Resolve failed\n"); |
1604 | delete m_wndResolver; | 1623 | delete m_wndResolver; |
1605 | m_wndResolver=NULL; | 1624 | m_wndResolver=NULL; |
1606 | ASSERT(m_Daddy); | 1625 | ASSERT(m_Daddy); |
1607 | CString tmp; | 1626 | CString tmp; |
1608 | tmp.Format(IDS_LOG_RESOLVEFAILED,m_HostName); | 1627 | tmp.Format(IDS_LOG_RESOLVEFAILED,m_HostName); |
1609 | m_Daddy->LogLine(tmp); | 1628 | m_Daddy->LogLine(tmp); |
1610 | Abort(); | 1629 | Abort(); |
1611 | } | 1630 | } |
1612 | 1631 | ||
1613 | void CXferSocket::OnResolved() | 1632 | void CXferSocket::OnResolved() |
1614 | { | 1633 | { |
1615 | delete m_wndResolver; | 1634 | delete m_wndResolver; |
1616 | m_wndResolver=NULL; | 1635 | m_wndResolver=NULL; |
1617 | TRACE0("Resolved\n"); | 1636 | TRACE0("Resolved\n"); |
1618 | m_Peer.sin_addr.s_addr = *(DWORD*)(((hostent*)m_ResolveBuff)->h_addr); | 1637 | m_Peer.sin_addr.s_addr = *(DWORD*)(((hostent*)m_ResolveBuff)->h_addr); |
1619 | } | 1638 | } |
1620 | 1639 | ||
1621 | void CRRQSocket::OnResolved() | 1640 | void CRRQSocket::OnResolved() |
1622 | { | 1641 | { |
1623 | CXferSocket::OnResolved(); | 1642 | CXferSocket::OnResolved(); |
1624 | OnHostKnown(); | 1643 | OnHostKnown(); |
1625 | } | 1644 | } |
1626 | 1645 | ||
1627 | void CRRQSocket::OnHostKnown() | 1646 | void CRRQSocket::OnHostKnown() |
1628 | { | 1647 | { |
1629 | ASSERT(m_Daddy); | 1648 | ASSERT(m_Daddy); |
1630 | m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); | 1649 | m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); |
1631 | tftp::tftpOptions o; | 1650 | tftp::tftpOptions o; |
1632 | CString v; | 1651 | CString v; |
1633 | ASSERT(m_xferSize>=0); | 1652 | ASSERT(m_xferSize>=0); |
1634 | v.Format("%lu",m_xferSize); | 1653 | v.Format("%lu",m_xferSize); |
1635 | o[tftpoTSize] = v; | 1654 | o[tftpoTSize] = v; |
1636 | ASSERT(m__blkSize); | 1655 | ASSERT(m__blkSize); |
1637 | v.Format("%u",m__blkSize); | 1656 | v.Format("%u",m__blkSize); |
1638 | o[tftpoBSize] = v; | 1657 | o[tftpoBSize] = v; |
1639 | ASSERT(m__timeOut); | 1658 | ASSERT(m__timeOut); |
1640 | v.Format("%u",m__timeOut); | 1659 | v.Format("%u",m__timeOut); |
1641 | o[tftpoTOut] = v; | 1660 | o[tftpoTOut] = v; |
1642 | o[tftpoXResume] = "0"; | 1661 | o[tftpoXResume] = "0"; |
1643 | tftp*p = tftp::Allocate(tftp::tftpWRQ::tftpSize(m_FileName,m_Type,&o)); | 1662 | tftp*p = tftp::Allocate(tftp::tftpWRQ::tftpSize(m_FileName,m_Type,&o)); |
1644 | ASSERT(p); | 1663 | ASSERT(p); |
1645 | p->SetOpcode(tftp::opWRQ); | 1664 | p->SetOpcode(tftp::opWRQ); |
1646 | p->data.m_WRQ.Set(m_FileName,m_Type,&o); | 1665 | p->data.m_WRQ.Set(m_FileName,m_Type,&o); |
1647 | PostTFTP(p,TRUE); | 1666 | PostTFTP(p,TRUE); |
1648 | state=stateInit; | 1667 | state=stateInit; |
1649 | UpdateList(); | 1668 | UpdateList(); |
1650 | } | 1669 | } |
1651 | 1670 | ||
1652 | UINT tftp::tftpRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1671 | UINT tftp::tftpRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1653 | { | 1672 | { |
1654 | UINT rv = tftpHdrSize-tftpSlackSize+strlen(file)+1+strlen(type)+1; | 1673 | UINT rv = tftpHdrSize-tftpSlackSize+strlen(file)+1+strlen(type)+1; |
1655 | if(ops){ | 1674 | if(ops){ |
1656 | tftpOptions& o = *ops; | 1675 | tftpOptions& o = *ops; |
1657 | POSITION p = o.GetStartPosition(); | 1676 | POSITION p = o.GetStartPosition(); |
1658 | while(p){ | 1677 | while(p){ |
1659 | CString n,v; | 1678 | CString n,v; |
1660 | o.GetNextAssoc(p,n,v); | 1679 | o.GetNextAssoc(p,n,v); |
1661 | rv+=n.GetLength()+1+v.GetLength()+1; | 1680 | rv+=n.GetLength()+1+v.GetLength()+1; |
1662 | } | 1681 | } |
1663 | } | 1682 | } |
1664 | return rv; | 1683 | return rv; |
1665 | } | 1684 | } |
1666 | UINT tftp::tftpRRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1685 | UINT tftp::tftpRRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1667 | { | 1686 | { |
1668 | return tftp::tftpRQ::tftpSize(file,type,ops); | 1687 | return tftp::tftpRQ::tftpSize(file,type,ops); |
1669 | } | 1688 | } |
1670 | UINT tftp::tftpWRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1689 | UINT tftp::tftpWRQ::tftpSize(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1671 | { | 1690 | { |
1672 | return tftp::tftpRQ::tftpSize(file,type,ops); | 1691 | return tftp::tftpRQ::tftpSize(file,type,ops); |
1673 | } | 1692 | } |
1674 | UINT tftp::tftpOACK::tftpSize(tftp::tftpOptions* ops) | 1693 | UINT tftp::tftpOACK::tftpSize(tftp::tftpOptions* ops) |
1675 | { | 1694 | { |
1676 | UINT rv = tftpHdrSize-tftpSlackSize; | 1695 | UINT rv = tftpHdrSize-tftpSlackSize; |
1677 | if(ops){ | 1696 | if(ops){ |
1678 | tftpOptions& o = *ops; | 1697 | tftpOptions& o = *ops; |
1679 | POSITION p = o.GetStartPosition(); | 1698 | POSITION p = o.GetStartPosition(); |
1680 | while(p){ | 1699 | while(p){ |
1681 | CString n,v; | 1700 | CString n,v; |
1682 | o.GetNextAssoc(p,n,v); | 1701 | o.GetNextAssoc(p,n,v); |
1683 | rv+=n.GetLength()+1+v.GetLength()+1; | 1702 | rv+=n.GetLength()+1+v.GetLength()+1; |
1684 | } | 1703 | } |
1685 | } | 1704 | } |
1686 | return rv; | 1705 | return rv; |
1687 | } | 1706 | } |
1688 | void tftp::tftpRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1707 | void tftp::tftpRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1689 | { | 1708 | { |
1690 | // MAY BE DANGEROUS! | 1709 | // MAY BE DANGEROUS! |
1691 | UINT ptr = 0; | 1710 | UINT ptr = 0; |
1692 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; | 1711 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; |
1693 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; | 1712 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; |
1694 | if(ops){ | 1713 | if(ops){ |
1695 | tftpOptions& o = *ops; | 1714 | tftpOptions& o = *ops; |
1696 | POSITION p = o.GetStartPosition(); | 1715 | POSITION p = o.GetStartPosition(); |
1697 | while(p){ | 1716 | while(p){ |
1698 | CString n,v; | 1717 | CString n,v; |
1699 | o.GetNextAssoc(p,n,v); | 1718 | o.GetNextAssoc(p,n,v); |
1700 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; | 1719 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; |
1701 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; | 1720 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; |
1702 | } | 1721 | } |
1703 | } | 1722 | } |
1704 | } | 1723 | } |
1705 | void tftp::tftpRRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1724 | void tftp::tftpRRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1706 | { | 1725 | { |
1707 | // MAY BE DANGEROUS! | 1726 | // MAY BE DANGEROUS! |
1708 | UINT ptr = 0; | 1727 | UINT ptr = 0; |
1709 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; | 1728 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; |
1710 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; | 1729 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; |
1711 | if(ops){ | 1730 | if(ops){ |
1712 | tftpOptions& o = *ops; | 1731 | tftpOptions& o = *ops; |
1713 | POSITION p = o.GetStartPosition(); | 1732 | POSITION p = o.GetStartPosition(); |
1714 | while(p){ | 1733 | while(p){ |
1715 | CString n,v; | 1734 | CString n,v; |
1716 | o.GetNextAssoc(p,n,v); | 1735 | o.GetNextAssoc(p,n,v); |
1717 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; | 1736 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; |
1718 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; | 1737 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; |
1719 | } | 1738 | } |
1720 | } | 1739 | } |
1721 | } | 1740 | } |
1722 | void tftp::tftpWRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) | 1741 | void tftp::tftpWRQ::Set(LPCTSTR file,LPCTSTR type,tftp::tftpOptions* ops) |
1723 | { | 1742 | { |
1724 | // MAY BE DANGEROUS! | 1743 | // MAY BE DANGEROUS! |
1725 | UINT ptr = 0; | 1744 | UINT ptr = 0; |
1726 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; | 1745 | strcpy((LPTSTR)&data[ptr],file); ptr+=strlen(file)+1; |
1727 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; | 1746 | strcpy((LPTSTR)&data[ptr],type); ptr+=strlen(type)+1; |
1728 | if(ops){ | 1747 | if(ops){ |
1729 | tftpOptions& o = *ops; | 1748 | tftpOptions& o = *ops; |
1730 | POSITION p = o.GetStartPosition(); | 1749 | POSITION p = o.GetStartPosition(); |
1731 | while(p){ | 1750 | while(p){ |
1732 | CString n,v; | 1751 | CString n,v; |
1733 | o.GetNextAssoc(p,n,v); | 1752 | o.GetNextAssoc(p,n,v); |
1734 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; | 1753 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; |
1735 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; | 1754 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; |
1736 | } | 1755 | } |
1737 | } | 1756 | } |
1738 | } | 1757 | } |
1739 | void tftp::tftpOACK::Set(tftpOptions* ops) | 1758 | void tftp::tftpOACK::Set(tftpOptions* ops) |
1740 | { | 1759 | { |
1741 | ASSERT(ops); | 1760 | ASSERT(ops); |
1742 | UINT ptr = 0; | 1761 | UINT ptr = 0; |
1743 | tftpOptions& o = *ops; | 1762 | tftpOptions& o = *ops; |
1744 | POSITION p = o.GetStartPosition(); | 1763 | POSITION p = o.GetStartPosition(); |
1745 | while(p){ | 1764 | while(p){ |
1746 | CString n,v; | 1765 | CString n,v; |
1747 | o.GetNextAssoc(p,n,v); | 1766 | o.GetNextAssoc(p,n,v); |
1748 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; | 1767 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)n); ptr+=n.GetLength()+1; |
1749 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; | 1768 | strcpy((LPTSTR)&data[ptr],(LPCTSTR)v); ptr+=v.GetLength()+1; |
1750 | } | 1769 | } |
1751 | } | 1770 | } |
1752 | 1771 | ||
1753 | void CWRQSocket::OnResolved() | 1772 | void CWRQSocket::OnResolved() |
1754 | { | 1773 | { |
1755 | CXferSocket::OnResolved(); | 1774 | CXferSocket::OnResolved(); |
1756 | OnHostKnown(); | 1775 | OnHostKnown(); |
1757 | } | 1776 | } |
1758 | 1777 | ||
1759 | void CWRQSocket::OnHostKnown() | 1778 | void CWRQSocket::OnHostKnown() |
1760 | { | 1779 | { |
1761 | ASSERT(m_Daddy); | 1780 | ASSERT(m_Daddy); |
1762 | m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); | 1781 | m_Peer.sin_port=htons(m_Daddy->m_SpeakPort); |
1763 | tftp::tftpOptions o; | 1782 | tftp::tftpOptions o; |
1764 | CString v; | 1783 | CString v; |
1765 | o[tftpoTSize]="0"; | 1784 | o[tftpoTSize]="0"; |
1766 | if(m__blkSize){ | 1785 | if(m__blkSize){ |
1767 | v.Format("%u",m__blkSize); | 1786 | v.Format("%u",m__blkSize); |
1768 | o[tftpoBSize]=v; | 1787 | o[tftpoBSize]=v; |
1769 | } | 1788 | } |
1770 | if(m__timeOut){ | 1789 | if(m__timeOut){ |
1771 | v.Format("%u",m__timeOut); | 1790 | v.Format("%u",m__timeOut); |
1772 | o[tftpoTOut]=v; | 1791 | o[tftpoTOut]=v; |
1773 | } | 1792 | } |
1774 | tftp*p = tftp::Allocate(tftp::tftpRRQ::tftpSize(m_FileName,m_Type,&o)); | 1793 | tftp*p = tftp::Allocate(tftp::tftpRRQ::tftpSize(m_FileName,m_Type,&o)); |
1775 | ASSERT(p); | 1794 | ASSERT(p); |
1776 | p->SetOpcode(tftp::opRRQ); | 1795 | p->SetOpcode(tftp::opRRQ); |
1777 | p->data.m_RRQ.Set(m_FileName,m_Type,&o); | 1796 | p->data.m_RRQ.Set(m_FileName,m_Type,&o); |
1778 | PostTFTP(p,TRUE); | 1797 | PostTFTP(p,TRUE); |
1779 | state=stateInit; | 1798 | state=stateInit; |
1780 | UpdateList(); | 1799 | UpdateList(); |
1781 | } | 1800 | } |
1782 | 1801 | ||
1783 | void CPumpKINDlg::OnClose() | 1802 | void CPumpKINDlg::OnClose() |
1784 | { | 1803 | { |
1785 | OnTrayShowpumpkinwindow(); | 1804 | OnTrayShowpumpkinwindow(); |
1786 | } | 1805 | } |
1787 | 1806 | ||
1788 | void CPumpKINDlg::OnTrayShowpumpkinwindow() | 1807 | void CPumpKINDlg::OnTrayShowpumpkinwindow() |
1789 | { | 1808 | { |
1790 | if(IsWindowVisible()){ | 1809 | if(IsWindowVisible()){ |
1791 | m_bShown=FALSE; | 1810 | m_bShown=FALSE; |
1792 | ShowWindow(SW_HIDE); | 1811 | ShowWindow(SW_HIDE); |
1793 | }else{ | 1812 | }else{ |
1794 | m_bShown=TRUE; | 1813 | m_bShown=TRUE; |
1795 | ShowWindow(SW_SHOW); | 1814 | ShowWindow(SW_SHOW); |
1796 | SetForegroundWindow(); | 1815 | SetForegroundWindow(); |
1797 | SetFocus(); | 1816 | SetFocus(); |
1798 | } | 1817 | } |
1799 | } | 1818 | } |
1800 | 1819 | ||
1801 | void CPumpKINDlg::OnTrayExit() | 1820 | void CPumpKINDlg::OnTrayExit() |
1802 | { | 1821 | { |
1803 | OnExit(); | 1822 | OnExit(); |
1804 | } | 1823 | } |
1805 | 1824 | ||
1806 | void CPumpKINDlg::OnTrayAboutpumpkin() | 1825 | void CPumpKINDlg::OnTrayAboutpumpkin() |
1807 | { | 1826 | { |
1808 | CAboutDlg dlgAbout; | 1827 | CAboutDlg dlgAbout; |
1809 | dlgAbout.DoModal(); | 1828 | dlgAbout.DoModal(); |
1810 | } | 1829 | } |
1811 | 1830 | ||
1812 | void CPumpKINDlg::OnTrayFetchfile() | 1831 | void CPumpKINDlg::OnTrayFetchfile() |
1813 | { | 1832 | { |
1814 | OnGet(); | 1833 | OnGet(); |
1815 | } | 1834 | } |
1816 | 1835 | ||
1817 | void CPumpKINDlg::OnTrayHelp() | 1836 | void CPumpKINDlg::OnTrayHelp() |
1818 | { | 1837 | { |
1819 | OnHelp(); | 1838 | OnHelp(); |
1820 | } | 1839 | } |
1821 | 1840 | ||
1822 | void CPumpKINDlg::OnTrayOptions() | 1841 | void CPumpKINDlg::OnTrayOptions() |
1823 | { | 1842 | { |
1824 | OnOptions(); | 1843 | OnOptions(); |
1825 | } | 1844 | } |
1826 | 1845 | ||
1827 | void CPumpKINDlg::OnTraySendfile() | 1846 | void CPumpKINDlg::OnTraySendfile() |
1828 | { | 1847 | { |
1829 | OnPut(); | 1848 | OnPut(); |
1830 | } | 1849 | } |
1831 | 1850 | ||
1832 | void CPumpKINDlg::LoadSettings() | 1851 | void CPumpKINDlg::LoadSettings() |
1833 | { | 1852 | { |
1834 | CWinApp *app = AfxGetApp(); | 1853 | CWinApp *app = AfxGetApp(); |
1835 | ASSERT(app); | 1854 | ASSERT(app); |
1836 | m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen); | 1855 | m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen); |
1837 | m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); | 1856 | m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); |
1838 | m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); | 1857 | m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); |
1839 | m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); | 1858 | m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); |
1840 | m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); | 1859 | m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); |
1841 | m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); | 1860 | m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); |
1842 | m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); | 1861 | m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); |
1843 | m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); | 1862 | m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); |
1844 | m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); | 1863 | m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); |
1845 | m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); | 1864 | m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); |
1846 | m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); | 1865 | m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); |
1847 | m_LogFile=app->GetProfileString("General","LogFile",m_LogFile); | 1866 | m_LogFile=app->GetProfileString("General","LogFile",m_LogFile); |
1848 | m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); | 1867 | m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); |
1849 | m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); | 1868 | m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); |
1850 | m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); | 1869 | m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); |
1851 | m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); | 1870 | m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); |
1852 | m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); | 1871 | m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); |
1853 | if(m_TFTPRoot.IsEmpty()){ | 1872 | if(m_TFTPRoot.IsEmpty()){ |
1854 | DWORD dL = ::GetCurrentDirectory(0,NULL); | 1873 | DWORD dL = ::GetCurrentDirectory(0,NULL); |
1855 | VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); | 1874 | VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); |
1856 | m_TFTPRoot.ReleaseBuffer(); | 1875 | m_TFTPRoot.ReleaseBuffer(); |
1857 | } | 1876 | } |
1858 | ::SetCurrentDirectory(m_TFTPRoot); | 1877 | ::SetCurrentDirectory(m_TFTPRoot); |
1859 | m_aclRules.LoadProfile(app); | 1878 | m_aclRules.LoadProfile(app); |
1860 | } | 1879 | } |
1861 | 1880 | ||
1862 | void CPumpKINDlg::SaveSettings() | 1881 | void CPumpKINDlg::SaveSettings() |
1863 | { | 1882 | { |
1864 | CWinApp *app = AfxGetApp(); | 1883 | CWinApp *app = AfxGetApp(); |
1865 | ASSERT(app); | 1884 | ASSERT(app); |
1866 | app->WriteProfileInt("TFTPSettings","Listen",m_bListen); | 1885 | app->WriteProfileInt("TFTPSettings","Listen",m_bListen); |
1867 | app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); | 1886 | app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); |
1868 | app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); | 1887 | app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); |
1869 | app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); | 1888 | app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); |
1870 | app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); | 1889 | app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); |
1871 | app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); | 1890 | app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); |
1872 | app->WriteProfileInt("UISettings","LogLength",m_LogLength); | 1891 | app->WriteProfileInt("UISettings","LogLength",m_LogLength); |
1873 | app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); | 1892 | app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); |
1874 | app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); | 1893 | app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); |
1875 | app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); | 1894 | app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); |
1876 | app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); | 1895 | app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); |
1877 | app->WriteProfileString("General","LogFile",m_LogFile); | 1896 | app->WriteProfileString("General","LogFile",m_LogFile); |
1878 | app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); | 1897 | app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); |
1879 | app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); | 1898 | app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); |
1880 | app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); | 1899 | app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); |
1881 | app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); | 1900 | app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); |
1882 | app->WriteProfileInt("UISettings","Visble",m_bShown); | 1901 | app->WriteProfileInt("UISettings","Visble",m_bShown); |
1883 | m_aclRules.SaveProfile(app); | 1902 | m_aclRules.SaveProfile(app); |
1884 | } | 1903 | } |
1885 | 1904 | ||
1886 | void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) | 1905 | void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) |
1887 | { | 1906 | { |
1888 | CDialog::OnWindowPosChanging(lpwndpos); | 1907 | CDialog::OnWindowPosChanging(lpwndpos); |
1889 | if(!m_bExiting){ | 1908 | if(!m_bExiting){ |
1890 | if(m_bShown){ | 1909 | if(m_bShown){ |
1891 | lpwndpos->flags&=~SWP_HIDEWINDOW; | 1910 | lpwndpos->flags&=~SWP_HIDEWINDOW; |
1892 | lpwndpos->flags|=SWP_SHOWWINDOW; | 1911 | lpwndpos->flags|=SWP_SHOWWINDOW; |
1893 | }else{ | 1912 | }else{ |
1894 | lpwndpos->flags&=~SWP_SHOWWINDOW; | 1913 | lpwndpos->flags&=~SWP_SHOWWINDOW; |
1895 | lpwndpos->flags|=SWP_HIDEWINDOW; | 1914 | lpwndpos->flags|=SWP_HIDEWINDOW; |
1896 | if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu)) | 1915 | if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu)) |
1897 | GetDesktopWindow()->SetForegroundWindow(); | 1916 | GetDesktopWindow()->SetForegroundWindow(); |
1898 | } | 1917 | } |
1899 | } | 1918 | } |
1900 | } | 1919 | } |
1901 | 1920 | ||
1902 | CString CXferSocket::ApplyRootGently(LPCTSTR fn) | 1921 | CString CXferSocket::ApplyRootGently(LPCTSTR fn) |
1903 | { | 1922 | { |
1904 | CString f = fn; | 1923 | CString f = fn; |
1905 | CString rv = f; | 1924 | CString rv = f; |
1906 | if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0) | 1925 | if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0) |
1907 | rv = ApplyRoot(f); | 1926 | rv = ApplyRoot(f); |
1908 | return rv; | 1927 | return rv; |
1909 | } | 1928 | } |
1910 | 1929 | ||
1911 | BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file) | 1930 | BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file) |
1912 | { | 1931 | { |
1913 | CString tmp = file; | 1932 | CString tmp = file; |
1914 | if(tmp.IsEmpty()) | 1933 | if(tmp.IsEmpty()) |
1915 | return FALSE; | 1934 | return FALSE; |
1916 | if(tmp.Find("..")>=0) | 1935 | if(tmp.Find("..")>=0) |
1917 | return TRUE; | 1936 | return TRUE; |
1918 | if(tmp.Find(":")>=0) | 1937 | if(tmp.Find(":")>=0) |
1919 | return TRUE; | 1938 | return TRUE; |
1920 | if((!m_Daddy->m_bTFTPSubdirs) && m_FileName.Find('\\')>=0) | 1939 | if((!m_Daddy->m_bTFTPSubdirs) && m_FileName.Find('\\')>=0) |
1921 | return TRUE; | 1940 | return TRUE; |
1922 | return FALSE; | 1941 | return FALSE; |
1923 | } | 1942 | } |
1924 | 1943 | ||
1925 | void CAboutDlg::OnKlevernet() | 1944 | void CAboutDlg::OnKlevernet() |
1926 | { | 1945 | { |
1927 | CString url; | 1946 | CString url; |
1928 | url.LoadString(IDS_KLEVERNET_URL); | 1947 | url.LoadString(IDS_KLEVERNET_URL); |
1929 | ShellExecute(::GetDesktopWindow(),"open",url,NULL,NULL,SW_SHOWMAXIMIZED); | 1948 | ShellExecute(::GetDesktopWindow(),"open",url,NULL,NULL,SW_SHOWMAXIMIZED); |
1930 | } | 1949 | } |
1931 | 1950 | ||
1932 | BOOL CPumpKINDlg::PreTranslateMessage(MSG* pMsg) | 1951 | BOOL CPumpKINDlg::PreTranslateMessage(MSG* pMsg) |
1933 | { | 1952 | { |
1934 | // CG: The following block was added by the ToolTips component. | 1953 | // CG: The following block was added by the ToolTips component. |
1935 | { | 1954 | { |
1936 | // Let the ToolTip process this message. | 1955 | // Let the ToolTip process this message. |
1937 | m_tooltip.RelayEvent(pMsg); | 1956 | m_tooltip.RelayEvent(pMsg); |
1938 | 1957 | ||
1939 | return CDialog::PreTranslateMessage(pMsg); | 1958 | return CDialog::PreTranslateMessage(pMsg); |
1940 | } | 1959 | } |
1941 | } | 1960 | } |
1942 | 1961 | ||
1943 | void CPumpKINDlg::OnSelchangeLog() | 1962 | void CPumpKINDlg::OnSelchangeLog() |
1944 | { | 1963 | { |
1945 | int sel = m_Log.GetCurSel(); | 1964 | int sel = m_Log.GetCurSel(); |
1946 | if(sel==LB_ERR){ | 1965 | if(sel==LB_ERR){ |
1947 | TRACE0("Error retrieving selection\n"); | 1966 | TRACE0("Error retrieving selection\n"); |
1948 | }else{ | 1967 | }else{ |
1949 | CTime *t = (CTime*)m_Log.GetItemData(sel); | 1968 | CTime *t = (CTime*)m_Log.GetItemData(sel); |
1950 | ASSERT(t); | 1969 | ASSERT(t); |
1951 | m_tooltip.UpdateTipText(t->Format(IDS_LOGTIMEFORMAT),&m_Log); | 1970 | m_tooltip.UpdateTipText(t->Format(IDS_LOGTIMEFORMAT),&m_Log); |
1952 | } | 1971 | } |
1953 | } | 1972 | } |
1954 | 1973 | ||
1955 | void CPumpKINDlg::OnTrayOpenfilesfolder() | 1974 | void CPumpKINDlg::OnTrayOpenfilesfolder() |
1956 | { | 1975 | { |
1957 | ShellExecute(::GetDesktopWindow(),NULL,m_TFTPRoot,NULL,NULL,SW_SHOWDEFAULT); | 1976 | ShellExecute(::GetDesktopWindow(),NULL,m_TFTPRoot,NULL,NULL,SW_SHOWDEFAULT); |
1958 | } | 1977 | } |
1959 | 1978 | ||
1960 | void CPumpKINDlg::OnDropFiles(HDROP hDropInfo) | 1979 | void CPumpKINDlg::OnDropFiles(HDROP hDropInfo) |
1961 | { | 1980 | { |
1962 | UINT files = ::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0); | 1981 | UINT files = ::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0); |
1963 | ASSERT(files); | 1982 | ASSERT(files); |
1964 | for(UINT file=0;file<files;file++){ | 1983 | for(UINT file=0;file<files;file++){ |
1965 | CString theFile; | 1984 | CString theFile; |
1966 | UINT fileNameLength = ::DragQueryFile(hDropInfo,file,NULL,0); | 1985 | UINT fileNameLength = ::DragQueryFile(hDropInfo,file,NULL,0); |
1967 | ASSERT(fileNameLength); | 1986 | ASSERT(fileNameLength); |
1968 | VERIFY(::DragQueryFile(hDropInfo,file,theFile.GetBuffer(fileNameLength+5),fileNameLength+4)<=fileNameLength); | 1987 | VERIFY(::DragQueryFile(hDropInfo,file,theFile.GetBuffer(fileNameLength+5),fileNameLength+4)<=fileNameLength); |
1969 | theFile.ReleaseBuffer(); | 1988 | theFile.ReleaseBuffer(); |
1970 | // Send it over! | 1989 | // Send it over! |
1971 | CRequestDlg crd(NULL); | 1990 | CRequestDlg crd(NULL); |
1972 | crd.m_Drop=TRUE; | 1991 | crd.m_Drop=TRUE; |
1973 | crd.m_Put=TRUE; | 1992 | crd.m_Put=TRUE; |
1974 | crd.m_BSize=m_BlockSize; | 1993 | crd.m_BSize=m_BlockSize; |
1975 | crd.m_LocalFile=theFile; | 1994 | crd.m_LocalFile=theFile; |
1976 | if(crd.DoModal()==IDOK){ | 1995 | if(crd.DoModal()==IDOK){ |
1977 | CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); | 1996 | CRRQSocket *socket = new CRRQSocket(this,crd.m_RemoteFile,crd.m_Type,NULL); |
1978 | if(crd.m_BSize) | 1997 | if(crd.m_BSize) |
1979 | socket->m__blkSize=crd.m_BSize; | 1998 | socket->m__blkSize=crd.m_BSize; |
1980 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) | 1999 | if(!socket->Create(crd.m_LocalFile,crd.m_Host)) |
1981 | socket->Destroy(); | 2000 | socket->Destroy(); |
1982 | } | 2001 | } |
1983 | } | 2002 | } |
1984 | ::DragFinish(hDropInfo); | 2003 | ::DragFinish(hDropInfo); |
1985 | } | 2004 | } |
1986 | 2005 | ||
1987 | void CPumpKINDlg::OnCancel() | 2006 | void CPumpKINDlg::OnCancel() |
1988 | { | 2007 | { |
1989 | OnClose(); | 2008 | OnClose(); |
1990 | } | 2009 | } |
1991 | 2010 | ||
1992 | CPumpKINDlg::~CPumpKINDlg() | 2011 | CPumpKINDlg::~CPumpKINDlg() |
1993 | { | 2012 | { |
1994 | delete m_Trayer; | 2013 | delete m_Trayer; |
1995 | delete m_Retrier; | 2014 | delete m_Retrier; |
1996 | } | 2015 | } |
1997 | 2016 | ||
1998 | void CXferSocket::OnRetry() | 2017 | void CXferSocket::OnRetry() |
1999 | { | 2018 | { |
2000 | if(!m_Retry){ | 2019 | if(!m_Retry){ |
2001 | TRACE("Retrying unretriable..\n"); | 2020 | TRACE("Retrying unretriable..\n"); |
2002 | return; | 2021 | return; |
2003 | } | 2022 | } |
2004 | TRACE0("Retrying..\n"); | 2023 | TRACE0("Retrying..\n"); |
2005 | m_bRetry=TRUE; | 2024 | m_bRetry=TRUE; |
2006 | PostTFTP(tftp::Copy(m_Retry)); | 2025 | PostTFTP(tftp::Copy(m_Retry)); |
2007 | m_bRetry=FALSE; | 2026 | m_bRetry=FALSE; |
2008 | } | 2027 | } |
2009 | 2028 | ||
2010 | tftp* tftp::Copy(tftp *src) | 2029 | tftp* tftp::Copy(tftp *src) |
2011 | { | 2030 | { |
2012 | ASSERT(src); | 2031 | ASSERT(src); |
2013 | ASSERT(src->length); | 2032 | ASSERT(src->length); |
2014 | tftp* rv = Allocate(src->length); | 2033 | tftp* rv = Allocate(src->length); |
2015 | ASSERT(rv); | 2034 | ASSERT(rv); |
2016 | memmove(rv,src,tftpSlackSize+src->length); | 2035 | memmove(rv,src,tftpSlackSize+src->length); |
2017 | return rv; | 2036 | return rv; |
2018 | } | 2037 | } |
2019 | 2038 | ||
2020 | void CXferSocket::SetTry(tftp *p) | 2039 | void CXferSocket::SetTry(tftp *p) |
2021 | { | 2040 | { |
2022 | if(m_Retry) | 2041 | if(m_Retry) |
2023 | delete m_Retry; | 2042 | delete m_Retry; |
2024 | m_Retry=p?tftp::Copy(p):NULL; | 2043 | m_Retry=p?tftp::Copy(p):NULL; |
2025 | } | 2044 | } |
2026 | 2045 | ||
2027 | void CPumpKINDlg::OnHelp() | 2046 | void CPumpKINDlg::OnHelp() |
2028 | { | 2047 | { |
2029 | AfxGetApp()->WinHelp(0,HELP_FINDER); | 2048 | AfxGetApp()->WinHelp(0,HELP_FINDER); |
2030 | } | 2049 | } |
2031 | 2050 | ||
2032 | BOOL CListenSocket::SetListen(BOOL b) { | 2051 | BOOL CListenSocket::SetListen(BOOL b) { |
2033 | ASSERT(m_Daddy); | 2052 | ASSERT(m_Daddy); |
2034 | if(b==m_bListen) | 2053 | if(b==m_bListen) |
2035 | return TRUE; | 2054 | return TRUE; |
2036 | if(b) { | 2055 | if(b) { |
2037 | if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM)) | 2056 | if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM)) |
2038 | return FALSE; | 2057 | return FALSE; |
2039 | return m_bListen=TRUE; | 2058 | return m_bListen=TRUE; |
2040 | }else{ | 2059 | }else{ |
2041 | Close(); m_bListen=FALSE; | 2060 | Close(); m_bListen=FALSE; |
2042 | return TRUE; | 2061 | return TRUE; |
2043 | } | 2062 | } |
2044 | } | 2063 | } |
2045 | 2064 | ||
2046 | void CPumpKINDlg::OnListening() | 2065 | void CPumpKINDlg::OnListening() |
2047 | { | 2066 | { |
2048 | if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) { | 2067 | if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) { |
2049 | TRACE0("Failed to create socket\n"); | 2068 | TRACE0("Failed to create socket\n"); |
2050 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | 2069 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); |
2051 | } | 2070 | } |
2052 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | 2071 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); |
2053 | m_bListen=m_Listener.m_bListen; | 2072 | m_bListen=m_Listener.m_bListen; |
2054 | } | 2073 | } |
2055 | 2074 | ||
2056 | void CPumpKINDlg::OnTrayListen() | 2075 | void CPumpKINDlg::OnTrayListen() |
2057 | { | 2076 | { |
2058 | if(!m_Listener.SetListen(!m_Listener.m_bListen)) { | 2077 | if(!m_Listener.SetListen(!m_Listener.m_bListen)) { |
2059 | TRACE0("Failed to create socket\n"); | 2078 | TRACE0("Failed to create socket\n"); |
2060 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | 2079 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); |
2061 | } | 2080 | } |
2062 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | 2081 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); |
2063 | m_bListen=m_Listener.m_bListen; | 2082 | m_bListen=m_Listener.m_bListen; |
2064 | } | 2083 | } |
2065 | 2084 | ||
2066 | void CPumpKINDlg::LogLine(LPCTSTR str) | 2085 | void CPumpKINDlg::LogLine(LPCTSTR str) |
2067 | { | 2086 | { |
2068 | LogLineToScreen(str); | 2087 | LogLineToScreen(str); |
2069 | if(!m_LogFile.IsEmpty()) { | 2088 | if(!m_LogFile.IsEmpty()) { |
2070 | if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { | 2089 | if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { |
2071 | if(m_lastlogerr!=m_LogFile) { | 2090 | if(m_lastlogerr!=m_LogFile) { |
2072 | CString tmp; | 2091 | CString tmp; |
2073 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); | 2092 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); |
2074 | LogLineToScreen(tmp); | 2093 | LogLineToScreen(tmp); |
2075 | m_lastlogerr=m_LogFile; | 2094 | m_lastlogerr=m_LogFile; |
2076 | } | 2095 | } |
2077 | } | 2096 | } |
2078 | } | 2097 | } |
2079 | } | 2098 | } |
2099 | |||
2100 | void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) | ||
2101 | { | ||
2102 | CDialog::OnGetMinMaxInfo(lpMMI); | ||
2103 | if(m_MinSize.cx>0 && m_MinSize.cy>0){ | ||
2104 | lpMMI->ptMinTrackSize.x = m_MinSize.cx; | ||
2105 | lpMMI->ptMinTrackSize.y = m_MinSize.cy; | ||
2106 | } | ||
2107 | } | ||
2108 | |||
2109 | void CPumpKINDlg::OnSize(UINT nType, int cx, int cy) | ||
2110 | { | ||
2111 | CDialog::OnSize(nType, cx, cy); | ||
2112 | if(nType==SIZE_RESTORED) | ||
2113 | RecalcLayout(cx,cy); | ||
2114 | } | ||
2115 | |||
2116 | void CPumpKINDlg::RecalcLayout(int,int) | ||
2117 | { | ||
2118 | CRect wrc; | ||
2119 | GetClientRect(&wrc); | ||
2120 | AdjustButton(m_GetCtl,wrc); | ||
2121 | AdjustButton(m_PutCtl,wrc); | ||
2122 | AdjustButton(m_AbortCtl,wrc); | ||
2123 | AdjustButton(m_HelpCtl,wrc); | ||
2124 | AdjustButton(m_ExitCtl,wrc); | ||
2125 | AdjustButton(m_OptionsCtl,wrc); | ||
2126 | CRect brc; | ||
2127 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2128 | m_List.SetWindowPos( | ||
2129 | 0, | ||
2130 | brc.left, brc.top, | ||
2131 | wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top, | ||
2132 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2133 | m_Log.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2134 | m_Log.SetWindowPos( | ||
2135 | 0, | ||
2136 | brc.left, brc.top, | ||
2137 | wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top, | ||
2138 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2139 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2140 | m_ListenCtl.SetWindowPos( | ||
2141 | 0, | ||
2142 | wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen, | ||
2143 | 0,0, | ||
2144 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2145 | int i = m_Log.GetCount(); | ||
2146 | if(i!=LB_ERR) | ||
2147 | m_Log.SetCurSel(i-1); | ||
2148 | } | ||
2149 | |||
2150 | void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc) | ||
2151 | { | ||
2152 | CRect brc; | ||
2153 | w.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2154 | w.SetWindowPos( | ||
2155 | 0, | ||
2156 | wrc.right-brc.Width()-m_rightGapButtons, brc.top, | ||
2157 | 0, 0, | ||
2158 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2159 | } | ||
diff --git a/PumpKINDlg.h b/PumpKINDlg.h index b247c56..c5469f1 100644 --- a/PumpKINDlg.h +++ b/PumpKINDlg.h | |||
@@ -1,487 +1,500 @@ | |||
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]; |
41 | public: | 41 | public: |
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]; |
47 | public: | 47 | public: |
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]; |
53 | public: | 53 | public: |
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; } |
99 | public: | 99 | public: |
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 | ||
116 | struct acl_rule { | 116 | struct 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 | ||
205 | class acl_rules_t : public CArray<acl_rule,acl_rule&> { | 205 | class acl_rules_t : public CArray<acl_rule,acl_rule&> { |
206 | public: | 206 | public: |
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 | ||
257 | class CPumpKINDlg; | 257 | class CPumpKINDlg; |
258 | class CListenSocket : public CAsyncSocket{ | 258 | class CListenSocket : public CAsyncSocket{ |
259 | public: | 259 | public: |
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; |
271 | class CResolver; | 271 | class CResolver; |
272 | class CXferSocket : public CAsyncSocket{ | 272 | class CXferSocket : public CAsyncSocket{ |
273 | public: | 273 | public: |
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(); |
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 | }; |
323 | class CWRQSocket : public CXferSocket { | 323 | class CWRQSocket : public CXferSocket { |
324 | public: | 324 | public: |
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 | }; |
342 | class CRRQSocket : public CXferSocket { | 342 | class CRRQSocket : public CXferSocket { |
343 | public: | 343 | public: |
344 | void OnHostKnown(); | 344 | void OnHostKnown(); |
345 | virtual void OnResolved(); | 345 | virtual void OnResolved(); |
346 | BOOL ConfirmRequest(); | 346 | BOOL ConfirmRequest(); |
347 | WORD m_LastSlack; | 347 | WORD m_LastSlack; |
348 | UINT m_ACK; | 348 | UINT m_ACK; |
349 | BOOL OnTFTP(tftp* p); | 349 | BOOL OnTFTP(tftp* p); |
350 | ULONG GetACK(void); | 350 | ULONG GetACK(void); |
351 | void DoXfer(); | 351 | void DoXfer(); |
352 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); | 352 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); |
353 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); | 353 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); |
354 | 354 | ||
355 | DECLARE_DYNAMIC(CRRQSocket) | 355 | DECLARE_DYNAMIC(CRRQSocket) |
356 | }; | 356 | }; |
357 | 357 | ||
358 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; | 358 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; |
359 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; | 359 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; |
360 | 360 | ||
361 | ///////////////////////////////////////////////////////////////////////////// | 361 | ///////////////////////////////////////////////////////////////////////////// |
362 | // CPumpKINDlg dialog | 362 | // CPumpKINDlg dialog |
363 | 363 | ||
364 | class CTrayer; | 364 | class CTrayer; |
365 | class CRetrier; | 365 | class CRetrier; |
366 | class CPumpKINDlg : public CDialog | 366 | class CPumpKINDlg : public CDialog |
367 | { | 367 | { |
368 | // Construction | 368 | // Construction |
369 | public: | 369 | public: |
370 | void AdjustButton(CWnd& w,CRect& wrc); | ||
371 | void RecalcLayout(int,int); | ||
372 | CSize m_MinSize; | ||
373 | UINT m_bottomGapLog; | ||
374 | UINT m_bottomGapListen; | ||
375 | UINT m_rightGapList; | ||
376 | UINT m_rightGapButtons; | ||
370 | CString m_lastlogerr; | 377 | CString m_lastlogerr; |
371 | void LogLine(LPCTSTR str); | 378 | void LogLine(LPCTSTR str); |
372 | CString m_LogFile; | 379 | CString m_LogFile; |
373 | BOOL m_bListen; | 380 | BOOL m_bListen; |
374 | acl_rules_t m_aclRules; | 381 | acl_rules_t m_aclRules; |
375 | CString m_bnwRequest; | 382 | CString m_bnwRequest; |
376 | CString m_bnwSuccess; | 383 | CString m_bnwSuccess; |
377 | CString m_bnwAbort; | 384 | CString m_bnwAbort; |
378 | CBellsNWhistles m_bnw; | 385 | CBellsNWhistles m_bnw; |
379 | CTrayer *m_Trayer; | 386 | CTrayer *m_Trayer; |
380 | CTimeSpan m_RetryTimeOut; | 387 | CTimeSpan m_RetryTimeOut; |
381 | virtual ~CPumpKINDlg(); | 388 | virtual ~CPumpKINDlg(); |
382 | CRetrier* m_Retrier; | 389 | CRetrier* m_Retrier; |
383 | virtual BOOL PreTranslateMessage(MSG* pMsg); | 390 | virtual BOOL PreTranslateMessage(MSG* pMsg); |
384 | BOOL m_bShown; | 391 | BOOL m_bShown; |
385 | BOOL m_bExiting; | 392 | BOOL m_bExiting; |
386 | void SaveSettings(); | 393 | void SaveSettings(); |
387 | void LoadSettings(); | 394 | void LoadSettings(); |
388 | void SetupButtons(); | 395 | void SetupButtons(); |
389 | BITMAP m_bitmapBack; | 396 | BITMAP m_bitmapBack; |
390 | CBitmap m_bmpBack; | 397 | CBitmap m_bmpBack; |
391 | UINT m_PromptTimeOut; | 398 | UINT m_PromptTimeOut; |
392 | UINT m_SpeakPort; | 399 | UINT m_SpeakPort; |
393 | void LogLine(UINT msgID); | 400 | void LogLine(UINT msgID); |
394 | CTimeMap m_LogTimes; | 401 | CTimeMap m_LogTimes; |
395 | void LogLineToFile(LPCTSTR str); | 402 | void LogLineToFile(LPCTSTR str); |
396 | void LogLineToScreen(LPCTSTR str); | 403 | void LogLineToScreen(LPCTSTR str); |
397 | int m_LogLength; | 404 | int m_LogLength; |
398 | enum{ | 405 | enum{ |
399 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize | 406 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize |
400 | }; | 407 | }; |
401 | int m_iWRQ; | 408 | int m_iWRQ; |
402 | int m_iRRQ; | 409 | int m_iRRQ; |
403 | CImageList m_Images; | 410 | CImageList m_Images; |
404 | CTIDMap m_Xfers; | 411 | CTIDMap m_Xfers; |
405 | CTimeSpan m_TFTPTimeOut; | 412 | CTimeSpan m_TFTPTimeOut; |
406 | enum{ | 413 | enum{ |
407 | rrqGiveAll=acl_rule::rrqGrant, | 414 | rrqGiveAll=acl_rule::rrqGrant, |
408 | rrqAlwaysConfirm=acl_rule::rrqPrompt, | 415 | rrqAlwaysConfirm=acl_rule::rrqPrompt, |
409 | rrqDenyAll=acl_rule::rrqDeny, | 416 | rrqDenyAll=acl_rule::rrqDeny, |
410 | rrqFallback=acl_rule::rrqNone, | 417 | rrqFallback=acl_rule::rrqNone, |
411 | rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm | 418 | rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm |
412 | }; | 419 | }; |
413 | enum{ | 420 | enum{ |
414 | wrqTakeAll=acl_rule::wrqGrant, | 421 | wrqTakeAll=acl_rule::wrqGrant, |
415 | wrqConfirmIfExists=acl_rule::wrqPromptIfExists, | 422 | wrqConfirmIfExists=acl_rule::wrqPromptIfExists, |
416 | wrqAlwaysConfirm=acl_rule::wrqPrompt, | 423 | wrqAlwaysConfirm=acl_rule::wrqPrompt, |
417 | wrqDenyAll=acl_rule::wrqDeny, | 424 | wrqDenyAll=acl_rule::wrqDeny, |
418 | wrqFallback=acl_rule::wrqNone, | 425 | wrqFallback=acl_rule::wrqNone, |
419 | wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm | 426 | wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm |
420 | }; | 427 | }; |
421 | UINT m_RRQMode; | 428 | UINT m_RRQMode; |
422 | UINT m_WRQMode; | 429 | UINT m_WRQMode; |
423 | BOOL m_bTFTPSubdirs; | 430 | BOOL m_bTFTPSubdirs; |
424 | CString m_TFTPRoot; | 431 | CString m_TFTPRoot; |
425 | UINT m_ListenPort; | 432 | UINT m_ListenPort; |
426 | UINT m_BlockSize; | 433 | UINT m_BlockSize; |
427 | CListenSocket m_Listener; | 434 | CListenSocket m_Listener; |
428 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor | 435 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor |
429 | 436 | ||
430 | // Dialog Data | 437 | // Dialog Data |
431 | //{{AFX_DATA(CPumpKINDlg) | 438 | //{{AFX_DATA(CPumpKINDlg) |
432 | enum { IDD = IDD_PUMPKIN_DIALOG }; | 439 | enum { IDD = IDD_PUMPKIN_DIALOG }; |
440 | CButtonm_HelpCtl; | ||
441 | CButtonm_PutCtl; | ||
442 | CButtonm_GetCtl; | ||
443 | CButtonm_ExitCtl; | ||
433 | CButtonm_ListenCtl; | 444 | CButtonm_ListenCtl; |
434 | CButtonm_AbortCtl; | 445 | CButtonm_AbortCtl; |
435 | CButtonm_OptionsCtl; | 446 | CButtonm_OptionsCtl; |
436 | CListBoxm_Log; | 447 | CListBoxm_Log; |
437 | CListCtrlm_List; | 448 | CListCtrlm_List; |
438 | //}}AFX_DATA | 449 | //}}AFX_DATA |
439 | 450 | ||
440 | // ClassWizard generated virtual function overrides | 451 | // ClassWizard generated virtual function overrides |
441 | //{{AFX_VIRTUAL(CPumpKINDlg) | 452 | //{{AFX_VIRTUAL(CPumpKINDlg) |
442 | protected: | 453 | protected: |
443 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support | 454 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support |
444 | //}}AFX_VIRTUAL | 455 | //}}AFX_VIRTUAL |
445 | 456 | ||
446 | // Implementation | 457 | // Implementation |
447 | protected: | 458 | protected: |
448 | CToolTipCtrl m_tooltip; | 459 | CToolTipCtrl m_tooltip; |
449 | HICON m_hIcon; | 460 | HICON m_hIcon; |
450 | 461 | ||
451 | // Generated message map functions | 462 | // Generated message map functions |
452 | //{{AFX_MSG(CPumpKINDlg) | 463 | //{{AFX_MSG(CPumpKINDlg) |
453 | virtual BOOL OnInitDialog(); | 464 | virtual BOOL OnInitDialog(); |
454 | afx_msg void OnSysCommand(UINT nID, LPARAM lParam); | 465 | afx_msg void OnSysCommand(UINT nID, LPARAM lParam); |
455 | afx_msg void OnDestroy(); | 466 | afx_msg void OnDestroy(); |
456 | afx_msg void OnPaint(); | 467 | afx_msg void OnPaint(); |
457 | afx_msg HCURSOR OnQueryDragIcon(); | 468 | afx_msg HCURSOR OnQueryDragIcon(); |
458 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); | 469 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); |
459 | afx_msg void OnOptions(); | 470 | afx_msg void OnOptions(); |
460 | afx_msg void OnTimer(UINT nIDEvent); | 471 | afx_msg void OnTimer(UINT nIDEvent); |
461 | afx_msg void OnExit(); | 472 | afx_msg void OnExit(); |
462 | afx_msg void OnPut(); | 473 | afx_msg void OnPut(); |
463 | afx_msg void OnGet(); | 474 | afx_msg void OnGet(); |
464 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); | 475 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); |
465 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 476 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
466 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 477 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
467 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); | 478 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); |
468 | afx_msg void OnAbort(); | 479 | afx_msg void OnAbort(); |
469 | afx_msg void OnClose(); | 480 | afx_msg void OnClose(); |
470 | afx_msg void OnTrayShowpumpkinwindow(); | 481 | afx_msg void OnTrayShowpumpkinwindow(); |
471 | afx_msg void OnTrayListen(); | 482 | afx_msg void OnTrayListen(); |
472 | afx_msg void OnTrayExit(); | 483 | afx_msg void OnTrayExit(); |
473 | afx_msg void OnTrayAboutpumpkin(); | 484 | afx_msg void OnTrayAboutpumpkin(); |
474 | afx_msg void OnTrayFetchfile(); | 485 | afx_msg void OnTrayFetchfile(); |
475 | afx_msg void OnTrayHelp(); | 486 | afx_msg void OnTrayHelp(); |
476 | afx_msg void OnTrayOptions(); | 487 | afx_msg void OnTrayOptions(); |
477 | afx_msg void OnTraySendfile(); | 488 | afx_msg void OnTraySendfile(); |
478 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); | 489 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); |
479 | afx_msg void OnSelchangeLog(); | 490 | afx_msg void OnSelchangeLog(); |
480 | afx_msg void OnTrayOpenfilesfolder(); | 491 | afx_msg void OnTrayOpenfilesfolder(); |
481 | afx_msg void OnDropFiles(HDROP hDropInfo); | 492 | afx_msg void OnDropFiles(HDROP hDropInfo); |
482 | virtual void OnCancel(); | 493 | virtual void OnCancel(); |
483 | afx_msg void OnHelp(); | 494 | afx_msg void OnHelp(); |
484 | afx_msg void OnListening(); | 495 | afx_msg void OnListening(); |
496 | afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); | ||
497 | afx_msg void OnSize(UINT nType, int cx, int cy); | ||
485 | //}}AFX_MSG | 498 | //}}AFX_MSG |
486 | DECLARE_MESSAGE_MAP() | 499 | DECLARE_MESSAGE_MAP() |
487 | }; | 500 | }; |
diff --git a/help/pumpkin.rtf b/help/pumpkin.rtf index abdca4f..505cbf2 100644 --- a/help/pumpkin.rtf +++ b/help/pumpkin.rtf | |||
@@ -1,138 +1,139 @@ | |||
1 | {\rtf1\ansi | 1 | {\rtf1\ansi |
2 | @{\footnote | 2 | @{\footnote |
3 | THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT. | 3 | THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT. |
4 | DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD | 4 | DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD |
5 | } | 5 | } |
6 | {\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl; | 6 | {\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl; |
7 | \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; | 7 | \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; |
8 | \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; | 8 | \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; |
9 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; | 9 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; |
10 | \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} | 10 | \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} |
11 | 11 | ||
12 | \pard\plain\keepn | 12 | \pard\plain\keepn |
13 | #{\footnote About} | 13 | #{\footnote About} |
14 | ${\footnote About PumpKIN} | 14 | ${\footnote About PumpKIN} |
15 | K{\footnote about} | 15 | K{\footnote about} |
16 | { \f1\fs18\b\sb120 About {\b PumpKIN}} | 16 | { \f1\fs18\b\sb120 About {\b PumpKIN}} |
17 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} is a program designed to send and receive files over the net while having {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} session running using {\i TFTP} ({\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}) protocol. It includes full-functional {\i TFTP} server/client so it may be useful for maintaining {\uldb CISCO}{\v %!ExecFile("http://www.cisco.com/")} routers and other network equipment. | 17 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} is a program designed to send and receive files over the net while having {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} session running using {\i TFTP} ({\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}) protocol. It includes full-functional {\i TFTP} server/client so it may be useful for maintaining {\uldb CISCO}{\v %!ExecFile("http://www.cisco.com/")} routers and other network equipment. |
18 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 | 18 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 |
19 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} | 19 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} |
20 | { | 20 | { |
21 | \par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1997-2006 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} | 21 | \par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1997-2006 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} |
22 | \par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | 22 | \par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: |
23 | \par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | 23 | \par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. |
24 | \par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 24 | \par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
25 | } | 25 | } |
26 | \page | 26 | \page |
27 | 27 | ||
28 | \pard\plain | 28 | \pard\plain |
29 | #{\footnote News} | 29 | #{\footnote News} |
30 | ${\footnote What's New} | 30 | ${\footnote What's New} |
31 | \par\pard\plain\f1\fs24\qc\cf2\b 2.7 - | 31 | \par\pard\plain\f1\fs24\qc\cf2\b 2.7 - |
32 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added acess lists based on request IP address and TFTP opcode for automating access policy | 32 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added acess lists based on request IP address and TFTP opcode for automating access policy |
33 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added possibility to start/stop TFTP server, while keeping client functionality intact | 33 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added possibility to start/stop TFTP server, while keeping client functionality intact |
34 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Logging to file | 34 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Logging to file |
35 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Resizable main window | ||
35 | \par\pard\plain\f1\fs24\qc\cf2\b 2.6 - August 6th, 2005 | 36 | \par\pard\plain\f1\fs24\qc\cf2\b 2.6 - August 6th, 2005 |
36 | \par\pard\plain\fi0\li0\f1\fs18 \bullet more robust solution to the backslash/slash dilemma | 37 | \par\pard\plain\fi0\li0\f1\fs18 \bullet more robust solution to the backslash/slash dilemma |
37 | \par\pard\plain\fi0\li0\f1\fs18 \bullet A bit more elaborate error reporting | 38 | \par\pard\plain\fi0\li0\f1\fs18 \bullet A bit more elaborate error reporting |
38 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed uninstall procedure so that it works on XP | 39 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed uninstall procedure so that it works on XP |
39 | \par\pard\plain\f1\fs24\qc\cf2\b 2.5 - July 11th, 2004 | 40 | \par\pard\plain\f1\fs24\qc\cf2\b 2.5 - July 11th, 2004 |
40 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source. | 41 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source. |
41 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes | 42 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes |
42 | \par\pard\plain\f1\fs24\qc\cf2\b 2.0 - June 13th, 1998 | 43 | \par\pard\plain\f1\fs24\qc\cf2\b 2.0 - June 13th, 1998 |
43 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Sounds customization. Now you can customize {\b PumpKIN} bells and whistles or turn them off completely. | 44 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Sounds customization. Now you can customize {\b PumpKIN} bells and whistles or turn them off completely. |
44 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Previous version of {\b PumpKIN} had a bug causing it to misbehave when you're requesting file from remote {\i tftp} server using {\b IP Address} (as opposed to {\b hostname}). | 45 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Previous version of {\b PumpKIN} had a bug causing it to misbehave when you're requesting file from remote {\i tftp} server using {\b IP Address} (as opposed to {\b hostname}). |
45 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b PumpKIN} to log outgoing request in reverse (i.e. {\i Requesting 'hostname' from 'filename'}) fixed. | 46 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b PumpKIN} to log outgoing request in reverse (i.e. {\i Requesting 'hostname' from 'filename'}) fixed. |
46 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Something else that you may not notice and I can not remember. | 47 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Something else that you may not notice and I can not remember. |
47 | \par\pard\plain\f1\fs24\qc\cf2\b 1.5 - February 12th, 1998 | 48 | \par\pard\plain\f1\fs24\qc\cf2\b 1.5 - February 12th, 1998 |
48 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer. | 49 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer. |
49 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Support for {\b block size}, {\b trasnfer size} and {\b transfer timeout} options as described in {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")}, {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")} and {\uldb {\b RFC1784}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1784.txt")}. I'm not sure if there are any other {\i TFTP} implementations supporting this, but at least it makes sense if you use {\b PumpKIN} on both ends. | 50 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Support for {\b block size}, {\b trasnfer size} and {\b transfer timeout} options as described in {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")}, {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")} and {\uldb {\b RFC1784}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1784.txt")}. I'm not sure if there are any other {\i TFTP} implementations supporting this, but at least it makes sense if you use {\b PumpKIN} on both ends. |
50 | \par\pard\plain\fi0\li0\f1\fs18 \bullet New Install program | 51 | \par\pard\plain\fi0\li0\f1\fs18 \bullet New Install program |
51 | \page | 52 | \page |
52 | 53 | ||
53 | \pard\plain\keepn | 54 | \pard\plain\keepn |
54 | #{\footnote Using} | 55 | #{\footnote Using} |
55 | ${\footnote Using PumpKIN} | 56 | ${\footnote Using PumpKIN} |
56 | { \f1\fs18\b\sb120 Using {\b PumpKIN}} | 57 | { \f1\fs18\b\sb120 Using {\b PumpKIN}} |
57 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} conversation. It uses open sessions to determine IP address of your party. Also you may use it as a {\i TFTP} client/server by itself. To get/put files from/to {\i TFTP} server you need to enter host name/IP address manually in the {\uldb Request Dialog}{\v Request}. | 58 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} conversation. It uses open sessions to determine IP address of your party. Also you may use it as a {\i TFTP} client/server by itself. To get/put files from/to {\i TFTP} server you need to enter host name/IP address manually in the {\uldb Request Dialog}{\v Request}. |
58 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click {\b Abort xfer} button. | 59 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click {\b Abort xfer} button. |
59 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You may want to hide {\b PumpKIN} window and leave it as a tray icon only. Just click the \{bmct pumpkin.bmp\} icon in the tray or simply close the window. | 60 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You may want to hide {\b PumpKIN} window and leave it as a tray icon only. Just click the \{bmct pumpkin.bmp\} icon in the tray or simply close the window. |
60 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Use {\uldb Options}{\v Options} button to set {\b PumpKIN} options. | 61 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Use {\uldb Options}{\v Options} button to set {\b PumpKIN} options. |
61 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can start and stop {\b PumpKIN}'s {\i TFTP} server by checking and unchecking the {\b Server is running} checkbox in the lower right corner of main {\b PumpKIN} window. | 62 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can start and stop {\b PumpKIN}'s {\i TFTP} server by checking and unchecking the {\b Server is running} checkbox in the lower right corner of main {\b PumpKIN} window. |
62 | \page | 63 | \page |
63 | 64 | ||
64 | \pard\plain\keepn | 65 | \pard\plain\keepn |
65 | #{\footnote ConfirmRRQ} | 66 | #{\footnote ConfirmRRQ} |
66 | ${\footnote Confirm Read Request Dialog} | 67 | ${\footnote Confirm Read Request Dialog} |
67 | { \f1\fs18\b\sb120 Confirm Read Request Dialog} | 68 | { \f1\fs18\b\sb120 Confirm Read Request Dialog} |
68 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 When the file is requested from your {\i TFTP} server you may choose to {\b Grant Access} to this file or to {\b Deny Access}. If you hesitate to answer for {\uldb {\b Confirmation timeout}}{\v ConfirmationTimeout} ({\i default - 30 seconds}) {\b PumpKIN} defaults to denial of all requests. | 69 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 When the file is requested from your {\i TFTP} server you may choose to {\b Grant Access} to this file or to {\b Deny Access}. If you hesitate to answer for {\uldb {\b Confirmation timeout}}{\v ConfirmationTimeout} ({\i default - 30 seconds}) {\b PumpKIN} defaults to denial of all requests. |
69 | \page | 70 | \page |
70 | 71 | ||
71 | \pard\plain\keepn | 72 | \pard\plain\keepn |
72 | #{\footnote ConfirmWRQ} | 73 | #{\footnote ConfirmWRQ} |
73 | ${\footnote Confirm Write Request Dialog} | 74 | ${\footnote Confirm Write Request Dialog} |
74 | { \f1\fs18\b\sb120 Confirm Write Request Dialog} | 75 | { \f1\fs18\b\sb120 Confirm Write Request Dialog} |
75 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the {\b Rename} option. If you already have file with such name you may chose to {\b resume} transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use {\b PumpKIN} on both ends. If you are still unsure for {\uldb {\b Confirmation timeout}}{\v ConfirmationTimeOut} ({\i default - 30 seconds}) {\b PumpKIN} will make safe decision for you (deny). | 76 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the {\b Rename} option. If you already have file with such name you may chose to {\b resume} transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use {\b PumpKIN} on both ends. If you are still unsure for {\uldb {\b Confirmation timeout}}{\v ConfirmationTimeOut} ({\i default - 30 seconds}) {\b PumpKIN} will make safe decision for you (deny). |
76 | \page | 77 | \page |
77 | 78 | ||
78 | \pard\plain\keepn | 79 | \pard\plain\keepn |
79 | #{\footnote Request} | 80 | #{\footnote Request} |
80 | ${\footnote Request Dialog} | 81 | ${\footnote Request Dialog} |
81 | { \f1\fs18\b\sb120 Request Dialog} | 82 | { \f1\fs18\b\sb120 Request Dialog} |
82 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Request dialog is aimed to let you form read or write request. You may set the following options:\pard | 83 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 Request dialog is aimed to let you form read or write request. You may set the following options:\pard |
83 | \par \fi0\li0 \bullet {\b Local File} - You can change the name of the file you're sending (or destination in case you're receiving) right here. You may also use {\b Browse} button to select the file. | 84 | \par \fi0\li0 \bullet {\b Local File} - You can change the name of the file you're sending (or destination in case you're receiving) right here. You may also use {\b Browse} button to select the file. |
84 | \par \fi0\li0 \bullet {\b Remote File} Specifies the name of file on the remote host you're requesting (in case of read request) or the name of file you want your file to appear as (in case of write request). | 85 | \par \fi0\li0 \bullet {\b Remote File} Specifies the name of file on the remote host you're requesting (in case of read request) or the name of file you want your file to appear as (in case of write request). |
85 | \par \fi0\li0 \bullet {\b Remote Host} is your party's host or {\i TFTP} server you're requesting file from/sending file to. To refresh the list of your talk windows use {\b REFRESH} button. | 86 | \par \fi0\li0 \bullet {\b Remote Host} is your party's host or {\i TFTP} server you're requesting file from/sending file to. To refresh the list of your talk windows use {\b REFRESH} button. |
86 | \par \fi0\li0 \bullet {\b Type} is the type of transfer as defined in {\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}. Doesn't mean much, really. Defined types are '{\i octet}' or '{\i netascii}'. Default is '{\i octet}'. | 87 | \par \fi0\li0 \bullet {\b Type} is the type of transfer as defined in {\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}. Doesn't mean much, really. Defined types are '{\i octet}' or '{\i netascii}'. Default is '{\i octet}'. |
87 | \par \fi0\li0 \bullet {\b Block Size} - Use this block size if remote is {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")}-compliant. If remote doesn't support this option {\b PumpKIN} will fallback to 512 bytes per block.\pard | 88 | \par \fi0\li0 \bullet {\b Block Size} - Use this block size if remote is {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")}-compliant. If remote doesn't support this option {\b PumpKIN} will fallback to 512 bytes per block.\pard |
88 | \page | 89 | \page |
89 | 90 | ||
90 | \pard\plain\keepn | 91 | \pard\plain\keepn |
91 | #{\footnote Options} | 92 | #{\footnote Options} |
92 | ${\footnote Options} | 93 | ${\footnote Options} |
93 | { \f1\fs18\b\sb120 Options} | 94 | { \f1\fs18\b\sb120 Options} |
94 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} options property sheet consists of two tabs. For more information see {\uldb {\b Network}}{\v NetworkOptions} and {\b Server} options. | 95 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} options property sheet consists of two tabs. For more information see {\uldb {\b Network}}{\v NetworkOptions} and {\b Server} options. |
95 | \page | 96 | \page |
96 | 97 | ||
97 | \pard\plain\keepn | 98 | \pard\plain\keepn |
98 | #{\footnote NetworkOptions} | 99 | #{\footnote NetworkOptions} |
99 | ${\footnote Network Options} | 100 | ${\footnote Network Options} |
100 | { \f1\fs18\b\sb120 Network Options}\pard | 101 | { \f1\fs18\b\sb120 Network Options}\pard |
101 | \par \fi0\li0 \bullet {\b UDP Ports}\pard | 102 | \par \fi0\li0 \bullet {\b UDP Ports}\pard |
102 | \par \fi0\li0 \bullet {\b Listen for incoming connections on port} - specifies the port we're listening to. The default as defined in {\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")} is 69. | 103 | \par \fi0\li0 \bullet {\b Listen for incoming connections on port} - specifies the port we're listening to. The default as defined in {\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")} is 69. |
103 | \par \fi0\li0 \bullet {\b Send outgoing requests to port} - specifies the port we're going to send all requests to.\pard | 104 | \par \fi0\li0 \bullet {\b Send outgoing requests to port} - specifies the port we're going to send all requests to.\pard |
104 | \par \fi0\li0 \bullet {\b Default Connection timeout} - if there's no activity for specified time, transfer is considered to be dead and terminated. {\b PumpKIN} tries to propagate this value to remote as described in {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")} and {\uldb {\b RFC1784}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1784.txt")} if possible. | 105 | \par \fi0\li0 \bullet {\b Default Connection timeout} - if there's no activity for specified time, transfer is considered to be dead and terminated. {\b PumpKIN} tries to propagate this value to remote as described in {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")} and {\uldb {\b RFC1784}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1784.txt")} if possible. |
105 | \par \fi0\li0 \bullet {\b Default Block Size} - {\b PumpKIN} tries to negotiate block size with remote using this value unless specified explicitly in request. If remote doesn't support {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")} and {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")}{\b PumpKIN} falls back to 512 bytes per block.\pard | 106 | \par \fi0\li0 \bullet {\b Default Block Size} - {\b PumpKIN} tries to negotiate block size with remote using this value unless specified explicitly in request. If remote doesn't support {\uldb {\b RFC1782}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1782.txt")} and {\uldb {\b RFC1783}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1783.txt")}{\b PumpKIN} falls back to 512 bytes per block.\pard |
106 | \page | 107 | \page |
107 | 108 | ||
108 | \pard\plain\keepn | 109 | \pard\plain\keepn |
109 | #{\footnote ServerOptions} | 110 | #{\footnote ServerOptions} |
110 | ${\footnote Server Options} | 111 | ${\footnote Server Options} |
111 | { \f1\fs18\b\sb120 Server Options}\pard | 112 | { \f1\fs18\b\sb120 Server Options}\pard |
112 | \par \fi0\li0 \bullet {\b TFTP Filesystem root} - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start {\b PumpKIN} for the first time from. | 113 | \par \fi0\li0 \bullet {\b TFTP Filesystem root} - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start {\b PumpKIN} for the first time from. |
113 | \par \fi0\li0 \bullet {\b Allow access to subdirectories} - specifies whether you want allow access to the whole subtree of {\b TFTP Root} or only to the directory itself. | 114 | \par \fi0\li0 \bullet {\b Allow access to subdirectories} - specifies whether you want allow access to the whole subtree of {\b TFTP Root} or only to the directory itself. |
114 | \par \fi0\li0 \bullet {\b Read Request Behavior} - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here. | 115 | \par \fi0\li0 \bullet {\b Read Request Behavior} - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here. |
115 | \par \fi0\li0 \bullet {\b Write Request Behavior} - You may chose to {\b take all files} ({\i not recommended}), to {\b prompt only if file exists already}, {\b Always prompt} or {\b Deny all requests}. | 116 | \par \fi0\li0 \bullet {\b Write Request Behavior} - You may chose to {\b take all files} ({\i not recommended}), to {\b prompt only if file exists already}, {\b Always prompt} or {\b Deny all requests}. |
116 | \par \fi0\li0 \bullet {#{\footnote ConfirmationTimeOut}}{\b Confirmation timeout} - this is the time {\b PumpKIN} will wait for you to accept or deny request before it will give up and take default action which is always deny. | 117 | \par \fi0\li0 \bullet {#{\footnote ConfirmationTimeOut}}{\b Confirmation timeout} - this is the time {\b PumpKIN} will wait for you to accept or deny request before it will give up and take default action which is always deny. |
117 | \par \fi0\li0 \bullet {\b Log file} - If you want to enable logging to file, set the destination file here.\pard | 118 | \par \fi0\li0 \bullet {\b Log file} - If you want to enable logging to file, set the destination file here.\pard |
118 | \page | 119 | \page |
119 | 120 | ||
120 | \pard\plain\keepn | 121 | \pard\plain\keepn |
121 | #{\footnote SoundsOptions} | 122 | #{\footnote SoundsOptions} |
122 | ${\footnote Sounds Options} | 123 | ${\footnote Sounds Options} |
123 | { \f1\fs18\b\sb120 Sounds} | 124 | { \f1\fs18\b\sb120 Sounds} |
124 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can customize {\b PumpKIN} sounds notifications here. There are three customizable sounds defined - {\b Incoming request}, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. {\b xfer Aborted} - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. {\b xfer Finished} means that your file was successfully transmitted. | 125 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can customize {\b PumpKIN} sounds notifications here. There are three customizable sounds defined - {\b Incoming request}, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. {\b xfer Aborted} - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. {\b xfer Finished} means that your file was successfully transmitted. |
125 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can select any {\b .wav} file or one of the predefined sounds from the dropdown list. | 126 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can select any {\b .wav} file or one of the predefined sounds from the dropdown list. |
126 | \page | 127 | \page |
127 | 128 | ||
128 | \pard\plain\keepn | 129 | \pard\plain\keepn |
129 | #{\footnote ACL} | 130 | #{\footnote ACL} |
130 | ${\footnote Access Lists} | 131 | ${\footnote Access Lists} |
131 | { \f1\fs18\b\sb120 Access Lists} | 132 | { \f1\fs18\b\sb120 Access Lists} |
132 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can slightly automate your access policies by setting up read/write request behavior for different incoming requests. | 133 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can slightly automate your access policies by setting up read/write request behavior for different incoming requests. |
133 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 The rule consists of {\b request type}, source network ({\b ip} and {\b netmask}) and {\b action} to take (see also {\uldb Server Options}{\v ServerOptions}). | 134 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 The rule consists of {\b request type}, source network ({\b ip} and {\b netmask}) and {\b action} to take (see also {\uldb Server Options}{\v ServerOptions}). |
134 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 When {\b PumpKIN} receives request it goes through the list of rules and bases its decision on the first matching rule. To rearrange order of rules, select the rule you wish to move and use up and down arrows buttons on the right. To remove rule, use the cross button. | 135 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 When {\b PumpKIN} receives request it goes through the list of rules and bases its decision on the first matching rule. To rearrange order of rules, select the rule you wish to move and use up and down arrows buttons on the right. To remove rule, use the cross button. |
135 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 To add a new rule fill in the information about {\b request type}, source {\b address} and {\b netmask} and desired action. Then click on the 'Add new rule' button. | 136 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 To add a new rule fill in the information about {\b request type}, source {\b address} and {\b netmask} and desired action. Then click on the 'Add new rule' button. |
136 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 If you wish to amend the rule, select it in the rules list, change parameters below and click the 'Replace rule' button. | 137 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 If you wish to amend the rule, select it in the rules list, change parameters below and click the 'Replace rule' button. |
137 | \page | 138 | \page |
138 | } \ No newline at end of file | 139 | } \ No newline at end of file |
diff --git a/help/pumpkin.xml b/help/pumpkin.xml index 46e3bbc..5c951bb 100644 --- a/help/pumpkin.xml +++ b/help/pumpkin.xml | |||
@@ -1,106 +1,107 @@ | |||
1 | <?xml version="1.0"?> | 1 | <?xml version="1.0"?> |
2 | <winhelp> | 2 | <winhelp> |
3 | <topic id="About" title="About PumpKIN" keywords="about"> | 3 | <topic id="About" title="About PumpKIN" keywords="about"> |
4 | <heading scroll="no">About <kin>PumpKIN</kin></heading> | 4 | <heading scroll="no">About <kin>PumpKIN</kin></heading> |
5 | <p><kin>PumpKIN</kin> is a program designed to send and receive files over the net while having <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> session running using <term>TFTP</term> (<rfc num="1350"/>) protocol. It includes full-functional <term>TFTP</term> server/client so it may be useful for maintaining <a href="http://www.cisco.com/">CISCO</a> routers and other network equipment.</p> | 5 | <p><kin>PumpKIN</kin> is a program designed to send and receive files over the net while having <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> session running using <term>TFTP</term> (<rfc num="1350"/>) protocol. It includes full-functional <term>TFTP</term> server/client so it may be useful for maintaining <a href="http://www.cisco.com/">CISCO</a> routers and other network equipment.</p> |
6 | <p/> | 6 | <p/> |
7 | <p><b><i>Enjoy!</i></b></p> | 7 | <p><b><i>Enjoy!</i></b></p> |
8 | <license years="1997-2006"/> | 8 | <license years="1997-2006"/> |
9 | <credist/> | 9 | <credist/> |
10 | </topic> | 10 | </topic> |
11 | <topic id="News" title="What's New"> | 11 | <topic id="News" title="What's New"> |
12 | <newsfor version="2.7" date=""> | 12 | <newsfor version="2.7" date=""> |
13 | <ni>Added acess lists based on request IP address and TFTP opcode for automating access policy</ni> | 13 | <ni>Added acess lists based on request IP address and TFTP opcode for automating access policy</ni> |
14 | <ni>Added possibility to start/stop TFTP server, while keeping client functionality intact</ni> | 14 | <ni>Added possibility to start/stop TFTP server, while keeping client functionality intact</ni> |
15 | <ni>Logging to file</ni> | 15 | <ni>Logging to file</ni> |
16 | <ni>Resizable main window</ni> | ||
16 | </newsfor> | 17 | </newsfor> |
17 | <newsfor version="2.6" date="August 6th, 2005"> | 18 | <newsfor version="2.6" date="August 6th, 2005"> |
18 | <ni>more robust solution to the backslash/slash dilemma</ni> | 19 | <ni>more robust solution to the backslash/slash dilemma</ni> |
19 | <ni>A bit more elaborate error reporting</ni> | 20 | <ni>A bit more elaborate error reporting</ni> |
20 | <ni>Fixed uninstall procedure so that it works on XP</ni> | 21 | <ni>Fixed uninstall procedure so that it works on XP</ni> |
21 | </newsfor> | 22 | </newsfor> |
22 | <newsfor version="2.5" date="July 11th, 2004"> | 23 | <newsfor version="2.5" date="July 11th, 2004"> |
23 | <ni>Change of <a href="#About">license</a> and opening the source.</ni> | 24 | <ni>Change of <a href="#About">license</a> and opening the source.</ni> |
24 | <ni>Minor cosmetic changes</ni> | 25 | <ni>Minor cosmetic changes</ni> |
25 | </newsfor> | 26 | </newsfor> |
26 | <newsfor version="2.0" date="June 13th, 1998"> | 27 | <newsfor version="2.0" date="June 13th, 1998"> |
27 | <ni>Sounds customization. Now you can customize <kin>PumpKIN</kin> bells and whistles or turn them off completely.</ni> | 28 | <ni>Sounds customization. Now you can customize <kin>PumpKIN</kin> bells and whistles or turn them off completely.</ni> |
28 | <ni>Previous version of <kin>PumpKIN</kin> had a bug causing it to misbehave when you're requesting file from remote <term>tftp</term> server using <b>IP Address</b> (as opposed to <b>hostname</b>).</ni> | 29 | <ni>Previous version of <kin>PumpKIN</kin> had a bug causing it to misbehave when you're requesting file from remote <term>tftp</term> server using <b>IP Address</b> (as opposed to <b>hostname</b>).</ni> |
29 | <ni>Typo causing <kin>PumpKIN</kin> to log outgoing request in reverse (i.e. <i>Requesting 'hostname' from 'filename'</i>) fixed.</ni> | 30 | <ni>Typo causing <kin>PumpKIN</kin> to log outgoing request in reverse (i.e. <i>Requesting 'hostname' from 'filename'</i>) fixed.</ni> |
30 | <ni>Something else that you may not notice and I can not remember.</ni> | 31 | <ni>Something else that you may not notice and I can not remember.</ni> |
31 | </newsfor> | 32 | </newsfor> |
32 | <newsfor version="1.5" date="February 12th, 1998"> | 33 | <newsfor version="1.5" date="February 12th, 1998"> |
33 | <ni>Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer.</ni> | 34 | <ni>Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer.</ni> |
34 | <ni>Support for <b>block size</b>, <b>trasnfer size</b> and <b>transfer timeout</b> options as described in <rfc num="1782"/>, <rfc num="1783"/> and <rfc num="1784"/>. I'm not sure if there are any other <term>TFTP</term> implementations supporting this, but at least it makes sense if you use <kin>PumpKIN</kin> on both ends.</ni> | 35 | <ni>Support for <b>block size</b>, <b>trasnfer size</b> and <b>transfer timeout</b> options as described in <rfc num="1782"/>, <rfc num="1783"/> and <rfc num="1784"/>. I'm not sure if there are any other <term>TFTP</term> implementations supporting this, but at least it makes sense if you use <kin>PumpKIN</kin> on both ends.</ni> |
35 | <ni>New Install program</ni> | 36 | <ni>New Install program</ni> |
36 | </newsfor> | 37 | </newsfor> |
37 | </topic> | 38 | </topic> |
38 | <topic id="Using" title="Using PumpKIN"> | 39 | <topic id="Using" title="Using PumpKIN"> |
39 | <heading scroll="no">Using <kin>PumpKIN</kin></heading> | 40 | <heading scroll="no">Using <kin>PumpKIN</kin></heading> |
40 | <p>This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> conversation. It uses open sessions to determine IP address of your party. Also you may use it as a <term>TFTP</term> client/server by itself. To get/put files from/to <term>TFTP</term> server you need to enter host name/IP address manually in the <a href="#Request">Request Dialog</a>.</p> | 41 | <p>This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> conversation. It uses open sessions to determine IP address of your party. Also you may use it as a <term>TFTP</term> client/server by itself. To get/put files from/to <term>TFTP</term> server you need to enter host name/IP address manually in the <a href="#Request">Request Dialog</a>.</p> |
41 | <p>To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click <b>Abort xfer</b> button.</p> | 42 | <p>To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click <b>Abort xfer</b> button.</p> |
42 | <p>You may want to hide <kin>PumpKIN</kin> window and leave it as a tray icon only. Just click the <image source="pumpkin.bmp"/> icon in the tray or simply close the window.</p> | 43 | <p>You may want to hide <kin>PumpKIN</kin> window and leave it as a tray icon only. Just click the <image source="pumpkin.bmp"/> icon in the tray or simply close the window.</p> |
43 | <p>Use <a href="#Options">Options</a> button to set <kin>PumpKIN</kin> options.</p> | 44 | <p>Use <a href="#Options">Options</a> button to set <kin>PumpKIN</kin> options.</p> |
44 | <p>You can start and stop <kin>PumpKIN</kin>'s <term>TFTP</term> server by checking and unchecking the <b>Server is running</b> checkbox in the lower right corner of main <kin>PumpKIN</kin> window.</p> | 45 | <p>You can start and stop <kin>PumpKIN</kin>'s <term>TFTP</term> server by checking and unchecking the <b>Server is running</b> checkbox in the lower right corner of main <kin>PumpKIN</kin> window.</p> |
45 | </topic> | 46 | </topic> |
46 | <topic id="ConfirmRRQ" title="Confirm Read Request Dialog"> | 47 | <topic id="ConfirmRRQ" title="Confirm Read Request Dialog"> |
47 | <heading scroll="no">Confirm Read Request Dialog</heading> | 48 | <heading scroll="no">Confirm Read Request Dialog</heading> |
48 | <p>When the file is requested from your <term>TFTP</term> server you may choose to <b>Grant Access</b> to this file or to <b>Deny Access</b>. If you hesitate to answer for <a href="#ConfirmationTimeout"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> defaults to denial of all requests.</p> | 49 | <p>When the file is requested from your <term>TFTP</term> server you may choose to <b>Grant Access</b> to this file or to <b>Deny Access</b>. If you hesitate to answer for <a href="#ConfirmationTimeout"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> defaults to denial of all requests.</p> |
49 | </topic> | 50 | </topic> |
50 | <topic id="ConfirmWRQ" title="Confirm Write Request Dialog"> | 51 | <topic id="ConfirmWRQ" title="Confirm Write Request Dialog"> |
51 | <heading scroll="no">Confirm Write Request Dialog</heading> | 52 | <heading scroll="no">Confirm Write Request Dialog</heading> |
52 | <p>Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the <b>Rename</b> option. If you already have file with such name you may chose to <b>resume</b> transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use <kin>PumpKIN</kin> on both ends. If you are still unsure for <a href="#ConfirmationTimeOut"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> will make safe decision for you (deny).</p> | 53 | <p>Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the <b>Rename</b> option. If you already have file with such name you may chose to <b>resume</b> transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use <kin>PumpKIN</kin> on both ends. If you are still unsure for <a href="#ConfirmationTimeOut"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> will make safe decision for you (deny).</p> |
53 | </topic> | 54 | </topic> |
54 | <topic id="Request" title="Request Dialog"> | 55 | <topic id="Request" title="Request Dialog"> |
55 | <heading scroll="no">Request Dialog</heading> | 56 | <heading scroll="no">Request Dialog</heading> |
56 | <p>Request dialog is aimed to let you form read or write request. You may set the following options:</p> | 57 | <p>Request dialog is aimed to let you form read or write request. You may set the following options:</p> |
57 | <ul> | 58 | <ul> |
58 | <li><b>Local File</b> - You can change the name of the file you're sending (or destination in case you're receiving) right here. You may also use <b>Browse</b> button to select the file.</li> | 59 | <li><b>Local File</b> - You can change the name of the file you're sending (or destination in case you're receiving) right here. You may also use <b>Browse</b> button to select the file.</li> |
59 | <li><b>Remote File</b> Specifies the name of file on the remote host you're requesting (in case of read request) or the name of file you want your file to appear as (in case of write request).</li> | 60 | <li><b>Remote File</b> Specifies the name of file on the remote host you're requesting (in case of read request) or the name of file you want your file to appear as (in case of write request).</li> |
60 | <li><b>Remote Host</b> is your party's host or <term>TFTP</term> server you're requesting file from/sending file to. To refresh the list of your talk windows use <b>REFRESH</b> button.</li> | 61 | <li><b>Remote Host</b> is your party's host or <term>TFTP</term> server you're requesting file from/sending file to. To refresh the list of your talk windows use <b>REFRESH</b> button.</li> |
61 | <li><b>Type</b> is the type of transfer as defined in <rfc num="1350"/>. Doesn't mean much, really. Defined types are '<i>octet</i>' or '<i>netascii</i>'. Default is '<i>octet</i>'.</li> | 62 | <li><b>Type</b> is the type of transfer as defined in <rfc num="1350"/>. Doesn't mean much, really. Defined types are '<i>octet</i>' or '<i>netascii</i>'. Default is '<i>octet</i>'.</li> |
62 | <li><b>Block Size</b> - Use this block size if remote is <rfc num="1783"/>-compliant. If remote doesn't support this option <kin>PumpKIN</kin> will fallback to 512 bytes per block.</li> | 63 | <li><b>Block Size</b> - Use this block size if remote is <rfc num="1783"/>-compliant. If remote doesn't support this option <kin>PumpKIN</kin> will fallback to 512 bytes per block.</li> |
63 | </ul> | 64 | </ul> |
64 | </topic> | 65 | </topic> |
65 | <topic id="Options" title="Options"> | 66 | <topic id="Options" title="Options"> |
66 | <heading scroll="no">Options</heading> | 67 | <heading scroll="no">Options</heading> |
67 | <p><kin>PumpKIN</kin> options property sheet consists of two tabs. For more information see <a href="#NetworkOptions"><b>Network</b></a> and <a herf="#ServerOptions"><b>Server</b></a> options.</p> | 68 | <p><kin>PumpKIN</kin> options property sheet consists of two tabs. For more information see <a href="#NetworkOptions"><b>Network</b></a> and <a herf="#ServerOptions"><b>Server</b></a> options.</p> |
68 | </topic> | 69 | </topic> |
69 | <topic id="NetworkOptions" title="Network Options"> | 70 | <topic id="NetworkOptions" title="Network Options"> |
70 | <heading scroll="no">Network Options</heading> | 71 | <heading scroll="no">Network Options</heading> |
71 | <ul> | 72 | <ul> |
72 | <li><b>UDP Ports</b> | 73 | <li><b>UDP Ports</b> |
73 | <ul> | 74 | <ul> |
74 | <li><b>Listen for incoming connections on port</b> - specifies the port we're listening to. The default as defined in <rfc num="1350"/> is 69.</li> | 75 | <li><b>Listen for incoming connections on port</b> - specifies the port we're listening to. The default as defined in <rfc num="1350"/> is 69.</li> |
75 | <li><b>Send outgoing requests to port</b> - specifies the port we're going to send all requests to.</li> | 76 | <li><b>Send outgoing requests to port</b> - specifies the port we're going to send all requests to.</li> |
76 | </ul> | 77 | </ul> |
77 | </li> | 78 | </li> |
78 | <li><b>Default Connection timeout</b> - if there's no activity for specified time, transfer is considered to be dead and terminated. <kin>PumpKIN</kin> tries to propagate this value to remote as described in <rfc num="1782"/> and <rfc num="1784"/> if possible.</li> | 79 | <li><b>Default Connection timeout</b> - if there's no activity for specified time, transfer is considered to be dead and terminated. <kin>PumpKIN</kin> tries to propagate this value to remote as described in <rfc num="1782"/> and <rfc num="1784"/> if possible.</li> |
79 | <li><b>Default Block Size</b> - <kin>PumpKIN</kin> tries to negotiate block size with remote using this value unless specified explicitly in request. If remote doesn't support <rfc num="1782"/> and <rfc num="1783"/> <kin>PumpKIN</kin> falls back to 512 bytes per block.</li> | 80 | <li><b>Default Block Size</b> - <kin>PumpKIN</kin> tries to negotiate block size with remote using this value unless specified explicitly in request. If remote doesn't support <rfc num="1782"/> and <rfc num="1783"/> <kin>PumpKIN</kin> falls back to 512 bytes per block.</li> |
80 | </ul> | 81 | </ul> |
81 | </topic> | 82 | </topic> |
82 | <topic id="ServerOptions" title="Server Options"> | 83 | <topic id="ServerOptions" title="Server Options"> |
83 | <heading scroll="no">Server Options</heading> | 84 | <heading scroll="no">Server Options</heading> |
84 | <ul> | 85 | <ul> |
85 | <li><b>TFTP Filesystem root</b> - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start <kin>PumpKIN</kin> for the first time from.</li> | 86 | <li><b>TFTP Filesystem root</b> - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start <kin>PumpKIN</kin> for the first time from.</li> |
86 | <li><b>Allow access to subdirectories</b> - specifies whether you want allow access to the whole subtree of <b>TFTP Root</b> or only to the directory itself.</li> | 87 | <li><b>Allow access to subdirectories</b> - specifies whether you want allow access to the whole subtree of <b>TFTP Root</b> or only to the directory itself.</li> |
87 | <li><b>Read Request Behavior</b> - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here.</li> | 88 | <li><b>Read Request Behavior</b> - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here.</li> |
88 | <li><b>Write Request Behavior</b> - You may chose to <b>take all files</b> (<i>not recommended</i>), to <b>prompt only if file exists already</b>, <b>Always prompt</b> or <b>Deny all requests</b>.</li> | 89 | <li><b>Write Request Behavior</b> - You may chose to <b>take all files</b> (<i>not recommended</i>), to <b>prompt only if file exists already</b>, <b>Always prompt</b> or <b>Deny all requests</b>.</li> |
89 | <li><a name="ConfirmationTimeOut"/><b>Confirmation timeout</b> - this is the time <kin>PumpKIN</kin> will wait for you to accept or deny request before it will give up and take default action which is always deny.</li> | 90 | <li><a name="ConfirmationTimeOut"/><b>Confirmation timeout</b> - this is the time <kin>PumpKIN</kin> will wait for you to accept or deny request before it will give up and take default action which is always deny.</li> |
90 | <li><b>Log file</b> - If you want to enable logging to file, set the destination file here.</li> | 91 | <li><b>Log file</b> - If you want to enable logging to file, set the destination file here.</li> |
91 | </ul> | 92 | </ul> |
92 | </topic> | 93 | </topic> |
93 | <topic id="SoundsOptions" title="Sounds Options"> | 94 | <topic id="SoundsOptions" title="Sounds Options"> |
94 | <heading scroll="no">Sounds</heading> | 95 | <heading scroll="no">Sounds</heading> |
95 | <p>You can customize <kin>PumpKIN</kin> sounds notifications here. There are three customizable sounds defined - <b>Incoming request</b>, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. <b>xfer Aborted</b> - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. <b>xfer Finished</b> means that your file was successfully transmitted.</p> | 96 | <p>You can customize <kin>PumpKIN</kin> sounds notifications here. There are three customizable sounds defined - <b>Incoming request</b>, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. <b>xfer Aborted</b> - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. <b>xfer Finished</b> means that your file was successfully transmitted.</p> |
96 | <p>You can select any <b>.wav</b> file or one of the predefined sounds from the dropdown list.</p> | 97 | <p>You can select any <b>.wav</b> file or one of the predefined sounds from the dropdown list.</p> |
97 | </topic> | 98 | </topic> |
98 | <topic id="ACL" title="Access Lists"> | 99 | <topic id="ACL" title="Access Lists"> |
99 | <heading scroll="no">Access Lists</heading> | 100 | <heading scroll="no">Access Lists</heading> |
100 | <p>You can slightly automate your access policies by setting up read/write request behavior for different incoming requests.</p> | 101 | <p>You can slightly automate your access policies by setting up read/write request behavior for different incoming requests.</p> |
101 | <p>The rule consists of <b>request type</b>, source network (<b>ip</b> and <b>netmask</b>) and <b>action</b> to take (see also <a href="#ServerOptions">Server Options</a>).</p> | 102 | <p>The rule consists of <b>request type</b>, source network (<b>ip</b> and <b>netmask</b>) and <b>action</b> to take (see also <a href="#ServerOptions">Server Options</a>).</p> |
102 | <p>When <kin>PumpKIN</kin> receives request it goes through the list of rules and bases its decision on the first matching rule. To rearrange order of rules, select the rule you wish to move and use up and down arrows buttons on the right. To remove rule, use the cross button.</p> | 103 | <p>When <kin>PumpKIN</kin> receives request it goes through the list of rules and bases its decision on the first matching rule. To rearrange order of rules, select the rule you wish to move and use up and down arrows buttons on the right. To remove rule, use the cross button.</p> |
103 | <p>To add a new rule fill in the information about <b>request type</b>, source <b>address</b> and <b>netmask</b> and desired action. Then click on the 'Add new rule' button.</p> | 104 | <p>To add a new rule fill in the information about <b>request type</b>, source <b>address</b> and <b>netmask</b> and desired action. Then click on the 'Add new rule' button.</p> |
104 | <p>If you wish to amend the rule, select it in the rules list, change parameters below and click the 'Replace rule' button.</p> | 105 | <p>If you wish to amend the rule, select it in the rules list, change parameters below and click the 'Replace rule' button.</p> |
105 | </topic> | 106 | </topic> |
106 | </winhelp> | 107 | </winhelp> |
diff --git a/pumpkin.clw b/pumpkin.clw index 5344bfd..213d8c1 100644 --- a/pumpkin.clw +++ b/pumpkin.clw | |||
@@ -1,327 +1,327 @@ | |||
1 | ; CLW file contains information for the MFC ClassWizard | 1 | ; CLW file contains information for the MFC ClassWizard |
2 | 2 | ||
3 | [General Info] | 3 | [General Info] |
4 | Version=1 | 4 | Version=1 |
5 | LastClass=CPropsServer | 5 | LastClass=CPumpKINDlg |
6 | LastTemplate=CComboBox | 6 | LastTemplate=CComboBox |
7 | NewFileInclude1=#include "stdafx.h" | 7 | NewFileInclude1=#include "stdafx.h" |
8 | NewFileInclude2=#include "PumpKIN.h" | 8 | NewFileInclude2=#include "PumpKIN.h" |
9 | 9 | ||
10 | ClassCount=14 | 10 | ClassCount=14 |
11 | Class1=CPumpKINApp | 11 | Class1=CPumpKINApp |
12 | Class2=CPumpKINDlg | 12 | Class2=CPumpKINDlg |
13 | Class3=CAboutDlg | 13 | Class3=CAboutDlg |
14 | 14 | ||
15 | ResourceCount=10 | 15 | ResourceCount=10 |
16 | Resource1=IDD_REQUEST | 16 | Resource1=IDD_REQUEST |
17 | Resource2=IDD_PROPS_NETWORK | 17 | Resource2=IDD_PROPS_NETWORK |
18 | Resource3=IDD_CONFIRM_RRQ | 18 | Resource3=IDD_CONFIRM_RRQ |
19 | Resource4=IDD_ABOUTBOX | 19 | Resource4=IDD_PROPS_SERVER |
20 | Class4=CPropsServer | 20 | Class4=CPropsServer |
21 | Class5=CPropsNetwork | 21 | Class5=CPropsNetwork |
22 | Resource5=IDD_CONFIRM_WRQ | 22 | Resource5=IDD_CONFIRM_WRQ |
23 | Resource6=IDD_PROPS_ACL | 23 | Resource6=IDD_PROPS_ACL |
24 | Class6=CConfirmRRQDlg | 24 | Class6=CConfirmRRQDlg |
25 | Class7=CConfirmWRQDlg | 25 | Class7=CConfirmWRQDlg |
26 | Resource7=IDD_PUMPKIN_DIALOG | 26 | Resource7=IDD_ABOUTBOX |
27 | Class8=CRequestDlg | 27 | Class8=CRequestDlg |
28 | Class9=CResolver | 28 | Class9=CResolver |
29 | Class10=CRetrier | 29 | Class10=CRetrier |
30 | Class11=CTrayer | 30 | Class11=CTrayer |
31 | Resource8=IDD_PROPS_SOUNDS | 31 | Resource8=IDD_PROPS_SOUNDS |
32 | Class12=CPropsSounds | 32 | Class12=CPropsSounds |
33 | Resource9=IDM_POPUPS | 33 | Resource9=IDM_POPUPS |
34 | Class13=CPropsACL | 34 | Class13=CPropsACL |
35 | Class14=CACLTargetCombo | 35 | Class14=CACLTargetCombo |
36 | Resource10=IDD_PROPS_SERVER | 36 | Resource10=IDD_PUMPKIN_DIALOG |
37 | 37 | ||
38 | [CLS:CPumpKINApp] | 38 | [CLS:CPumpKINApp] |
39 | Type=0 | 39 | Type=0 |
40 | HeaderFile=PumpKIN.h | 40 | HeaderFile=PumpKIN.h |
41 | ImplementationFile=PumpKIN.cpp | 41 | ImplementationFile=PumpKIN.cpp |
42 | Filter=N | 42 | Filter=N |
43 | 43 | ||
44 | [CLS:CPumpKINDlg] | 44 | [CLS:CPumpKINDlg] |
45 | Type=0 | 45 | Type=0 |
46 | HeaderFile=PumpKINDlg.h | 46 | HeaderFile=PumpKINDlg.h |
47 | ImplementationFile=PumpKINDlg.cpp | 47 | ImplementationFile=PumpKINDlg.cpp |
48 | Filter=W | 48 | Filter=W |
49 | BaseClass=CDialog | 49 | BaseClass=CDialog |
50 | VirtualFilter=dWC | 50 | VirtualFilter=dWC |
51 | LastObject=CPumpKINDlg | 51 | LastObject=CPumpKINDlg |
52 | 52 | ||
53 | [CLS:CAboutDlg] | 53 | [CLS:CAboutDlg] |
54 | Type=0 | 54 | Type=0 |
55 | HeaderFile=PumpKINDlg.h | 55 | HeaderFile=PumpKINDlg.h |
56 | ImplementationFile=PumpKINDlg.cpp | 56 | ImplementationFile=PumpKINDlg.cpp |
57 | Filter=D | 57 | Filter=D |
58 | BaseClass=CDialog | 58 | BaseClass=CDialog |
59 | VirtualFilter=dWC | 59 | VirtualFilter=dWC |
60 | LastObject=CAboutDlg | 60 | LastObject=CAboutDlg |
61 | 61 | ||
62 | [DLG:IDD_ABOUTBOX] | 62 | [DLG:IDD_ABOUTBOX] |
63 | Type=1 | 63 | Type=1 |
64 | Class=CAboutDlg | 64 | Class=CAboutDlg |
65 | ControlCount=5 | 65 | ControlCount=5 |
66 | Control1=IDC_STATIC,static,1342177283 | 66 | Control1=IDC_STATIC,static,1342177283 |
67 | Control2=IDC_STATIC,static,1342308480 | 67 | Control2=IDC_STATIC,static,1342308480 |
68 | Control3=IDC_STATIC,static,1342308352 | 68 | Control3=IDC_STATIC,static,1342308352 |
69 | Control4=IDOK,button,1342373889 | 69 | Control4=IDOK,button,1342373889 |
70 | Control5=IDC_KLEVERNET,button,1342242816 | 70 | Control5=IDC_KLEVERNET,button,1342242816 |
71 | 71 | ||
72 | [DLG:IDD_PUMPKIN_DIALOG] | 72 | [DLG:IDD_PUMPKIN_DIALOG] |
73 | Type=1 | 73 | Type=1 |
74 | Class=CPumpKINDlg | 74 | Class=CPumpKINDlg |
75 | ControlCount=10 | 75 | ControlCount=10 |
76 | Control1=IDC_CONNECTIONS,SysListView32,1350631681 | 76 | Control1=IDC_CONNECTIONS,SysListView32,1350631681 |
77 | Control2=IDC_GET,button,1342259200 | 77 | Control2=IDC_GET,button,1342259200 |
78 | Control3=IDC_PUT,button,1342259200 | 78 | Control3=IDC_PUT,button,1342259200 |
79 | Control4=IDC_ABORT,button,1342259200 | 79 | Control4=IDC_ABORT,button,1342259200 |
80 | Control5=IDC_OPTIONS,button,1342259200 | 80 | Control5=IDC_OPTIONS,button,1342259200 |
81 | Control6=IDC_EXIT,button,1342259200 | 81 | Control6=IDC_EXIT,button,1342259200 |
82 | Control7=ID_HELP,button,1342259200 | 82 | Control7=ID_HELP,button,1342259200 |
83 | Control8=IDC_LOG,listbox,1353728129 | 83 | Control8=IDC_LOG,listbox,1353728385 |
84 | Control9=IDCANCEL,button,1073741824 | 84 | Control9=IDCANCEL,button,1073741824 |
85 | Control10=IDC_LISTENING,button,1342275619 | 85 | Control10=IDC_LISTENING,button,1342275619 |
86 | 86 | ||
87 | [DLG:IDD_PROPS_SERVER] | 87 | [DLG:IDD_PROPS_SERVER] |
88 | Type=1 | 88 | Type=1 |
89 | Class=CPropsServer | 89 | Class=CPropsServer |
90 | ControlCount=18 | 90 | ControlCount=18 |
91 | Control1=IDC_STATIC,button,1342177287 | 91 | Control1=IDC_STATIC,button,1342177287 |
92 | Control2=IDC_TFTPROOT,edit,1350631552 | 92 | Control2=IDC_TFTPROOT,edit,1350631552 |
93 | Control3=IDC_BROWSE,button,1342242880 | 93 | Control3=IDC_BROWSE,button,1342242880 |
94 | Control4=IDC_TFTPSUBDIRS,button,1342242819 | 94 | Control4=IDC_TFTPSUBDIRS,button,1342242819 |
95 | Control5=IDC_STATIC,button,1342177287 | 95 | Control5=IDC_STATIC,button,1342177287 |
96 | Control6=IDC_RRQ_GIVEALL,button,1342324745 | 96 | Control6=IDC_RRQ_GIVEALL,button,1342324745 |
97 | Control7=IDC_RRQ_ALWAYSCONFIRM,button,1342193673 | 97 | Control7=IDC_RRQ_ALWAYSCONFIRM,button,1342193673 |
98 | Control8=IDC_RRQ_DENYALL,button,1342193673 | 98 | Control8=IDC_RRQ_DENYALL,button,1342193673 |
99 | Control9=IDC_STATIC,button,1342308359 | 99 | Control9=IDC_STATIC,button,1342308359 |
100 | Control10=IDC_WRQ_TAKEALL,button,1342308361 | 100 | Control10=IDC_WRQ_TAKEALL,button,1342308361 |
101 | Control11=IDC_WRQ_PROMPTEXISTING,button,1342177289 | 101 | Control11=IDC_WRQ_PROMPTEXISTING,button,1342177289 |
102 | Control12=IDC_WRQ_ALWAYSCONFIRM,button,1342177289 | 102 | Control12=IDC_WRQ_ALWAYSCONFIRM,button,1342177289 |
103 | Control13=IDC_WRQ_DENYALL,button,1342177289 | 103 | Control13=IDC_WRQ_DENYALL,button,1342177289 |
104 | Control14=IDC_STATIC,static,1342308609 | 104 | Control14=IDC_STATIC,static,1342308609 |
105 | Control15=IDC_PROMPTTIMEOUT,msctls_trackbar32,1342242823 | 105 | Control15=IDC_PROMPTTIMEOUT,msctls_trackbar32,1342242823 |
106 | Control16=IDC_STATIC,button,1342177287 | 106 | Control16=IDC_STATIC,button,1342177287 |
107 | Control17=IDC_LOGFILE,edit,1350631552 | 107 | Control17=IDC_LOGFILE,edit,1350631552 |
108 | Control18=IDC_LOGFILE_BROWSE,button,1342242880 | 108 | Control18=IDC_LOGFILE_BROWSE,button,1342242880 |
109 | 109 | ||
110 | [DLG:IDD_PROPS_NETWORK] | 110 | [DLG:IDD_PROPS_NETWORK] |
111 | Type=1 | 111 | Type=1 |
112 | Class=CPropsNetwork | 112 | Class=CPropsNetwork |
113 | ControlCount=15 | 113 | ControlCount=15 |
114 | Control1=IDC_STATIC,button,1342177287 | 114 | Control1=IDC_STATIC,button,1342177287 |
115 | Control2=IDC_STATIC,static,1342308354 | 115 | Control2=IDC_STATIC,static,1342308354 |
116 | Control3=IDC_LISTENPORT,edit,1350631552 | 116 | Control3=IDC_LISTENPORT,edit,1350631552 |
117 | Control4=IDC_LISTENSPIN,msctls_updown32,1342177463 | 117 | Control4=IDC_LISTENSPIN,msctls_updown32,1342177463 |
118 | Control5=IDC_STATIC,static,1342308354 | 118 | Control5=IDC_STATIC,static,1342308354 |
119 | Control6=IDC_SPEAKPORT,edit,1350631552 | 119 | Control6=IDC_SPEAKPORT,edit,1350631552 |
120 | Control7=IDC_SPEAKSPIN,msctls_updown32,1342177463 | 120 | Control7=IDC_SPEAKSPIN,msctls_updown32,1342177463 |
121 | Control8=IDC_STATIC,static,1342308352 | 121 | Control8=IDC_STATIC,static,1342308352 |
122 | Control9=IDC_TIMEOUT,edit,1350639744 | 122 | Control9=IDC_TIMEOUT,edit,1350639744 |
123 | Control10=IDC_TIMESPIN,msctls_updown32,1342177463 | 123 | Control10=IDC_TIMESPIN,msctls_updown32,1342177463 |
124 | Control11=IDC_STATIC,static,1342308352 | 124 | Control11=IDC_STATIC,static,1342308352 |
125 | Control12=IDC_STATIC,static,1342308352 | 125 | Control12=IDC_STATIC,static,1342308352 |
126 | Control13=IDC_STATIC,static,1342308352 | 126 | Control13=IDC_STATIC,static,1342308352 |
127 | Control14=IDC_BLOCKSIZE,edit,1350639744 | 127 | Control14=IDC_BLOCKSIZE,edit,1350639744 |
128 | Control15=IDC_BSIZESPIN,msctls_updown32,1342177463 | 128 | Control15=IDC_BSIZESPIN,msctls_updown32,1342177463 |
129 | 129 | ||
130 | [CLS:CPropsServer] | 130 | [CLS:CPropsServer] |
131 | Type=0 | 131 | Type=0 |
132 | HeaderFile=PropsServer.h | 132 | HeaderFile=PropsServer.h |
133 | ImplementationFile=PropsServer.cpp | 133 | ImplementationFile=PropsServer.cpp |
134 | BaseClass=CPropertyPage | 134 | BaseClass=CPropertyPage |
135 | Filter=D | 135 | Filter=D |
136 | VirtualFilter=idWC | 136 | VirtualFilter=idWC |
137 | LastObject=IDC_LOGFILE_BROWSE | 137 | LastObject=CPropsServer |
138 | 138 | ||
139 | [CLS:CPropsNetwork] | 139 | [CLS:CPropsNetwork] |
140 | Type=0 | 140 | Type=0 |
141 | HeaderFile=PropsNetwork.h | 141 | HeaderFile=PropsNetwork.h |
142 | ImplementationFile=PropsNetwork.cpp | 142 | ImplementationFile=PropsNetwork.cpp |
143 | BaseClass=CPropertyPage | 143 | BaseClass=CPropertyPage |
144 | Filter=D | 144 | Filter=D |
145 | VirtualFilter=idWC | 145 | VirtualFilter=idWC |
146 | LastObject=IDC_BLOCKSIZE | 146 | LastObject=IDC_BLOCKSIZE |
147 | 147 | ||
148 | [DLG:IDD_CONFIRM_RRQ] | 148 | [DLG:IDD_CONFIRM_RRQ] |
149 | Type=1 | 149 | Type=1 |
150 | Class=CConfirmRRQDlg | 150 | Class=CConfirmRRQDlg |
151 | ControlCount=9 | 151 | ControlCount=9 |
152 | Control1=IDOK,button,1342242817 | 152 | Control1=IDOK,button,1342242817 |
153 | Control2=IDCANCEL,button,1342242816 | 153 | Control2=IDCANCEL,button,1342242816 |
154 | Control3=IDC_STATIC,static,1342308352 | 154 | Control3=IDC_STATIC,static,1342308352 |
155 | Control4=IDC_HOST,static,1350701313 | 155 | Control4=IDC_HOST,static,1350701313 |
156 | Control5=IDC_STATIC,static,1342308353 | 156 | Control5=IDC_STATIC,static,1342308353 |
157 | Control6=IDC_FILE,static,1350701313 | 157 | Control6=IDC_FILE,static,1350701313 |
158 | Control7=IDC_STATIC,static,1342177296 | 158 | Control7=IDC_STATIC,static,1342177296 |
159 | Control8=IDC_STATIC,static,1342177283 | 159 | Control8=IDC_STATIC,static,1342177283 |
160 | Control9=IDC_STATIC,static,1342177283 | 160 | Control9=IDC_STATIC,static,1342177283 |
161 | 161 | ||
162 | [DLG:IDD_CONFIRM_WRQ] | 162 | [DLG:IDD_CONFIRM_WRQ] |
163 | Type=1 | 163 | Type=1 |
164 | Class=CConfirmWRQDlg | 164 | Class=CConfirmWRQDlg |
165 | ControlCount=11 | 165 | ControlCount=11 |
166 | Control1=IDOK,button,1342242817 | 166 | Control1=IDOK,button,1342242817 |
167 | Control2=IDC_RENAME,button,1342242816 | 167 | Control2=IDC_RENAME,button,1342242816 |
168 | Control3=IDCANCEL,button,1342242816 | 168 | Control3=IDCANCEL,button,1342242816 |
169 | Control4=IDC_STATIC,static,1342308352 | 169 | Control4=IDC_STATIC,static,1342308352 |
170 | Control5=IDC_HOST,static,1350701313 | 170 | Control5=IDC_HOST,static,1350701313 |
171 | Control6=IDC_STATIC,static,1342308353 | 171 | Control6=IDC_STATIC,static,1342308353 |
172 | Control7=IDC_FILE,static,1350701313 | 172 | Control7=IDC_FILE,static,1350701313 |
173 | Control8=IDC_STATIC,static,1342177296 | 173 | Control8=IDC_STATIC,static,1342177296 |
174 | Control9=IDC_STATIC,static,1342177283 | 174 | Control9=IDC_STATIC,static,1342177283 |
175 | Control10=IDC_STATIC,static,1342177283 | 175 | Control10=IDC_STATIC,static,1342177283 |
176 | Control11=IDC_RESUME,button,1342242816 | 176 | Control11=IDC_RESUME,button,1342242816 |
177 | 177 | ||
178 | [CLS:CConfirmRRQDlg] | 178 | [CLS:CConfirmRRQDlg] |
179 | Type=0 | 179 | Type=0 |
180 | HeaderFile=ConfirmRRQDlg.h | 180 | HeaderFile=ConfirmRRQDlg.h |
181 | ImplementationFile=ConfirmRRQDlg.cpp | 181 | ImplementationFile=ConfirmRRQDlg.cpp |
182 | BaseClass=CDialog | 182 | BaseClass=CDialog |
183 | Filter=D | 183 | Filter=D |
184 | VirtualFilter=dWC | 184 | VirtualFilter=dWC |
185 | LastObject=CConfirmRRQDlg | 185 | LastObject=CConfirmRRQDlg |
186 | 186 | ||
187 | [CLS:CConfirmWRQDlg] | 187 | [CLS:CConfirmWRQDlg] |
188 | Type=0 | 188 | Type=0 |
189 | HeaderFile=ConfirmWRQDlg.h | 189 | HeaderFile=ConfirmWRQDlg.h |
190 | ImplementationFile=ConfirmWRQDlg.cpp | 190 | ImplementationFile=ConfirmWRQDlg.cpp |
191 | BaseClass=CDialog | 191 | BaseClass=CDialog |
192 | Filter=D | 192 | Filter=D |
193 | VirtualFilter=dWC | 193 | VirtualFilter=dWC |
194 | LastObject=IDC_RESUME | 194 | LastObject=IDC_RESUME |
195 | 195 | ||
196 | [DLG:IDD_REQUEST] | 196 | [DLG:IDD_REQUEST] |
197 | Type=1 | 197 | Type=1 |
198 | Class=CRequestDlg | 198 | Class=CRequestDlg |
199 | ControlCount=15 | 199 | ControlCount=15 |
200 | Control1=IDC_STATIC,static,1342308608 | 200 | Control1=IDC_STATIC,static,1342308608 |
201 | Control2=IDC_LOCALFILE,edit,1350631552 | 201 | Control2=IDC_LOCALFILE,edit,1350631552 |
202 | Control3=IDC_BROWSE,button,1342242880 | 202 | Control3=IDC_BROWSE,button,1342242880 |
203 | Control4=IDC_STATIC,static,1342308608 | 203 | Control4=IDC_STATIC,static,1342308608 |
204 | Control5=IDC_REMOTEFILE,edit,1350631552 | 204 | Control5=IDC_REMOTEFILE,edit,1350631552 |
205 | Control6=IDC_STATIC,static,1342308608 | 205 | Control6=IDC_STATIC,static,1342308608 |
206 | Control7=IDC_TALKS,combobox,1344341313 | 206 | Control7=IDC_TALKS,combobox,1344341313 |
207 | Control8=IDC_REFRESH,button,1342271232 | 207 | Control8=IDC_REFRESH,button,1342271232 |
208 | Control9=IDC_STATIC,static,1342308352 | 208 | Control9=IDC_STATIC,static,1342308352 |
209 | Control10=IDC_TYPE,combobox,1344356418 | 209 | Control10=IDC_TYPE,combobox,1344356418 |
210 | Control11=IDC_STATIC,static,1342308352 | 210 | Control11=IDC_STATIC,static,1342308352 |
211 | Control12=IDC_BSIZE,combobox,1344339970 | 211 | Control12=IDC_BSIZE,combobox,1344339970 |
212 | Control13=IDOK,button,1342242817 | 212 | Control13=IDOK,button,1342242817 |
213 | Control14=IDCANCEL,button,1342242816 | 213 | Control14=IDCANCEL,button,1342242816 |
214 | Control15=IDC_STATIC,static,1342177297 | 214 | Control15=IDC_STATIC,static,1342177297 |
215 | 215 | ||
216 | [CLS:CRequestDlg] | 216 | [CLS:CRequestDlg] |
217 | Type=0 | 217 | Type=0 |
218 | HeaderFile=RequestDlg.h | 218 | HeaderFile=RequestDlg.h |
219 | ImplementationFile=RequestDlg.cpp | 219 | ImplementationFile=RequestDlg.cpp |
220 | BaseClass=CDialog | 220 | BaseClass=CDialog |
221 | Filter=W | 221 | Filter=W |
222 | VirtualFilter=dWC | 222 | VirtualFilter=dWC |
223 | LastObject=CRequestDlg | 223 | LastObject=CRequestDlg |
224 | 224 | ||
225 | [CLS:CResolver] | 225 | [CLS:CResolver] |
226 | Type=0 | 226 | Type=0 |
227 | HeaderFile=Resolver.h | 227 | HeaderFile=Resolver.h |
228 | ImplementationFile=Resolver.cpp | 228 | ImplementationFile=Resolver.cpp |
229 | BaseClass=CWnd | 229 | BaseClass=CWnd |
230 | Filter=W | 230 | Filter=W |
231 | LastObject=CResolver | 231 | LastObject=CResolver |
232 | VirtualFilter=WC | 232 | VirtualFilter=WC |
233 | 233 | ||
234 | [MNU:IDM_POPUPS] | 234 | [MNU:IDM_POPUPS] |
235 | Type=1 | 235 | Type=1 |
236 | Class=CPumpKINDlg | 236 | Class=CPumpKINDlg |
237 | Command1=ID_TRAY_SENDFILE | 237 | Command1=ID_TRAY_SENDFILE |
238 | Command2=ID_TRAY_FETCHFILE | 238 | Command2=ID_TRAY_FETCHFILE |
239 | Command3=ID_TRAY_OPTIONS | 239 | Command3=ID_TRAY_OPTIONS |
240 | Command4=ID_TRAY_LISTEN | 240 | Command4=ID_TRAY_LISTEN |
241 | Command5=ID_TRAY_SHOWPUMPKINWINDOW | 241 | Command5=ID_TRAY_SHOWPUMPKINWINDOW |
242 | Command6=ID_TRAY_OPENFILESFOLDER | 242 | Command6=ID_TRAY_OPENFILESFOLDER |
243 | Command7=ID_TRAY_HELP | 243 | Command7=ID_TRAY_HELP |
244 | Command8=ID_TRAY_ABOUTPUMPKIN | 244 | Command8=ID_TRAY_ABOUTPUMPKIN |
245 | Command9=ID_TRAY_EXIT | 245 | Command9=ID_TRAY_EXIT |
246 | CommandCount=9 | 246 | CommandCount=9 |
247 | 247 | ||
248 | [CLS:CRetrier] | 248 | [CLS:CRetrier] |
249 | Type=0 | 249 | Type=0 |
250 | HeaderFile=Retrier.h | 250 | HeaderFile=Retrier.h |
251 | ImplementationFile=Retrier.cpp | 251 | ImplementationFile=Retrier.cpp |
252 | BaseClass=CWnd | 252 | BaseClass=CWnd |
253 | Filter=W | 253 | Filter=W |
254 | LastObject=CRetrier | 254 | LastObject=CRetrier |
255 | VirtualFilter=WC | 255 | VirtualFilter=WC |
256 | 256 | ||
257 | [CLS:CTrayer] | 257 | [CLS:CTrayer] |
258 | Type=0 | 258 | Type=0 |
259 | HeaderFile=Trayer.h | 259 | HeaderFile=Trayer.h |
260 | ImplementationFile=Trayer.cpp | 260 | ImplementationFile=Trayer.cpp |
261 | BaseClass=CWnd | 261 | BaseClass=CWnd |
262 | Filter=W | 262 | Filter=W |
263 | LastObject=CTrayer | 263 | LastObject=CTrayer |
264 | VirtualFilter=WC | 264 | VirtualFilter=WC |
265 | 265 | ||
266 | [DLG:IDD_PROPS_SOUNDS] | 266 | [DLG:IDD_PROPS_SOUNDS] |
267 | Type=1 | 267 | Type=1 |
268 | Class=CPropsSounds | 268 | Class=CPropsSounds |
269 | ControlCount=12 | 269 | ControlCount=12 |
270 | Control1=IDC_STATIC,static,1342308352 | 270 | Control1=IDC_STATIC,static,1342308352 |
271 | Control2=IDC_RING,combobox,1344340290 | 271 | Control2=IDC_RING,combobox,1344340290 |
272 | Control3=IDC_RING_BROWSE,button,1342242880 | 272 | Control3=IDC_RING_BROWSE,button,1342242880 |
273 | Control4=IDC_RING_PLAY,button,1342242880 | 273 | Control4=IDC_RING_PLAY,button,1342242880 |
274 | Control5=IDC_STATIC,static,1342308352 | 274 | Control5=IDC_STATIC,static,1342308352 |
275 | Control6=IDC_FINISHED,combobox,1344340290 | 275 | Control6=IDC_FINISHED,combobox,1344340290 |
276 | Control7=IDC_FINISHED_BROWSE,button,1342242880 | 276 | Control7=IDC_FINISHED_BROWSE,button,1342242880 |
277 | Control8=IDC_FINISHED_PLAY,button,1342242880 | 277 | Control8=IDC_FINISHED_PLAY,button,1342242880 |
278 | Control9=IDC_STATIC,static,1342308352 | 278 | Control9=IDC_STATIC,static,1342308352 |
279 | Control10=IDC_ABORTED,combobox,1344340290 | 279 | Control10=IDC_ABORTED,combobox,1344340290 |
280 | Control11=IDC_ABORTED_BROWSE,button,1342242880 | 280 | Control11=IDC_ABORTED_BROWSE,button,1342242880 |
281 | Control12=IDC_ABORTED_PLAY,button,1342242880 | 281 | Control12=IDC_ABORTED_PLAY,button,1342242880 |
282 | 282 | ||
283 | [CLS:CPropsSounds] | 283 | [CLS:CPropsSounds] |
284 | Type=0 | 284 | Type=0 |
285 | HeaderFile=PropsSounds.h | 285 | HeaderFile=PropsSounds.h |
286 | ImplementationFile=PropsSounds.cpp | 286 | ImplementationFile=PropsSounds.cpp |
287 | BaseClass=CPropertyPage | 287 | BaseClass=CPropertyPage |
288 | Filter=D | 288 | Filter=D |
289 | LastObject=CPropsSounds | 289 | LastObject=CPropsSounds |
290 | VirtualFilter=idWC | 290 | VirtualFilter=idWC |
291 | 291 | ||
292 | [DLG:IDD_PROPS_ACL] | 292 | [DLG:IDD_PROPS_ACL] |
293 | Type=1 | 293 | Type=1 |
294 | Class=CPropsACL | 294 | Class=CPropsACL |
295 | ControlCount=14 | 295 | ControlCount=14 |
296 | Control1=IDC_ACL_LIST,SysListView32,1350631425 | 296 | Control1=IDC_ACL_LIST,SysListView32,1350631425 |
297 | Control2=IDC_ACL_UP,button,1342246720 | 297 | Control2=IDC_ACL_UP,button,1342246720 |
298 | Control3=IDC_ACL_DOWN,button,1342246720 | 298 | Control3=IDC_ACL_DOWN,button,1342246720 |
299 | Control4=IDC_ACL_REMOVE,button,1342246720 | 299 | Control4=IDC_ACL_REMOVE,button,1342246720 |
300 | Control5=IDC_STATIC,static,1342308352 | 300 | Control5=IDC_STATIC,static,1342308352 |
301 | Control6=IDC_ACL_XFER,combobox,1344339971 | 301 | Control6=IDC_ACL_XFER,combobox,1344339971 |
302 | Control7=IDC_STATIC,static,1342308352 | 302 | Control7=IDC_STATIC,static,1342308352 |
303 | Control8=IDC_ACL_ADDR,edit,1350631552 | 303 | Control8=IDC_ACL_ADDR,edit,1350631552 |
304 | Control9=IDC_STATIC,static,1342308352 | 304 | Control9=IDC_STATIC,static,1342308352 |
305 | Control10=IDC_ACL_NETMASK,edit,1350631552 | 305 | Control10=IDC_ACL_NETMASK,edit,1350631552 |
306 | Control11=IDC_STATIC,static,1342308352 | 306 | Control11=IDC_STATIC,static,1342308352 |
307 | Control12=IDC_ACL_RULE,combobox,1344339971 | 307 | Control12=IDC_ACL_RULE,combobox,1344339971 |
308 | Control13=IDC_ACL_ADD,button,1342242816 | 308 | Control13=IDC_ACL_ADD,button,1342242816 |
309 | Control14=IDC_ACL_REPLACE,button,1342242816 | 309 | Control14=IDC_ACL_REPLACE,button,1342242816 |
310 | 310 | ||
311 | [CLS:CPropsACL] | 311 | [CLS:CPropsACL] |
312 | Type=0 | 312 | Type=0 |
313 | HeaderFile=PropsACL.h | 313 | HeaderFile=PropsACL.h |
314 | ImplementationFile=PropsACL.cpp | 314 | ImplementationFile=PropsACL.cpp |
315 | BaseClass=CPropertyPage | 315 | BaseClass=CPropertyPage |
316 | Filter=D | 316 | Filter=D |
317 | LastObject=CPropsACL | 317 | LastObject=CPropsACL |
318 | VirtualFilter=idWC | 318 | VirtualFilter=idWC |
319 | 319 | ||
320 | [CLS:CACLTargetCombo] | 320 | [CLS:CACLTargetCombo] |
321 | Type=0 | 321 | Type=0 |
322 | HeaderFile=ACLTargetCombo.h | 322 | HeaderFile=ACLTargetCombo.h |
323 | ImplementationFile=ACLTargetCombo.cpp | 323 | ImplementationFile=ACLTargetCombo.cpp |
324 | BaseClass=CComboBox | 324 | BaseClass=CComboBox |
325 | Filter=W | 325 | Filter=W |
326 | LastObject=CACLTargetCombo | 326 | LastObject=CACLTargetCombo |
327 | 327 | ||
diff --git a/pumpkin.mak b/pumpkin.mak index 7d2ec22..a22a6fa 100644 --- a/pumpkin.mak +++ b/pumpkin.mak | |||
@@ -1,1729 +1,1685 @@ | |||
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)" == "" |
7 | CFG=Install - Win32 Debug | 7 | CFG=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" |
35 | NULL= | 35 | NULL= |
36 | !ELSE | 36 | !ELSE |
37 | NULL=nul | 37 | NULL=nul |
38 | !ENDIF | 38 | !ENDIF |
39 | ################################################################################ | 39 | ################################################################################ |
40 | # Begin Project | 40 | # Begin Project |
41 | # PROP Target_Last_Scanned "Install - Win32 Canned" | 41 | # PROP Target_Last_Scanned "PumpKIN - Win32 Debug" |
42 | CPP=cl.exe | 42 | CPP=cl.exe |
43 | RSC=rc.exe | 43 | RSC=rc.exe |
44 | MTL=mktyplib.exe | 44 | MTL=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 "" |
58 | OUTDIR=.\Release | 58 | OUTDIR=.\Release |
59 | INTDIR=.\Release | 59 | INTDIR=.\Release |
60 | # Begin Custom Macros | 60 | # Begin Custom Macros |
61 | OutDir=.\Release | 61 | OutDir=.\Release |
62 | TargetName=pumpkin | 62 | TargetName=pumpkin |
63 | # End Custom Macros | 63 | # End Custom Macros |
64 | 64 | ||
65 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ | 65 | ALL : "$(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 | ||
68 | CLEAN : | 68 | CLEAN : |
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 |
97 | CPP_PROJ=/nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 97 | CPP_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 |
100 | CPP_OBJS=.\Release/ | 100 | CPP_OBJS=.\Release/ |
101 | CPP_SBRS=.\. | 101 | CPP_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 |
104 | MTL_PROJ=/nologo /D "NDEBUG" /win32 | 104 | MTL_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" |
107 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" /d "_AFXDLL" | 107 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" /d "_AFXDLL" |
108 | BSC32=bscmake.exe | 108 | BSC32=bscmake.exe |
109 | # ADD BASE BSC32 /nologo | 109 | # ADD BASE BSC32 /nologo |
110 | # ADD BSC32 /nologo | 110 | # ADD BSC32 /nologo |
111 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 111 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
112 | BSC32_SBRS= \ | 112 | BSC32_SBRS= \ |
113 | 113 | ||
114 | LINK32=link.exe | 114 | LINK32=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 |
117 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ | 117 | LINK32_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" |
119 | LINK32_OBJS= \ | 119 | LINK32_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 |
142 | OutDir=.\Release | 142 | OutDir=.\Release |
143 | TargetName=pumpkin | 143 | TargetName=pumpkin |
144 | InputPath=.\Release\pumpkin.exe | 144 | InputPath=.\Release\pumpkin.exe |
145 | SOURCE=$(InputPath) | 145 | SOURCE=$(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 "" |
164 | OUTDIR=.\Debug | 164 | OUTDIR=.\Debug |
165 | INTDIR=.\Debug | 165 | INTDIR=.\Debug |
166 | # Begin Custom Macros | 166 | # Begin Custom Macros |
167 | OutDir=.\Debug | 167 | OutDir=.\Debug |
168 | TargetName=pumpkin | 168 | TargetName=pumpkin |
169 | # End Custom Macros | 169 | # End Custom Macros |
170 | 170 | ||
171 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.bsc" "$(OUTDIR)\pumpkin.ex_"\ | 171 | ALL : "$(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 | ||
175 | CLEAN : | 175 | CLEAN : |
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 |
223 | CPP_PROJ=/nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\ | 223 | CPP_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 |
226 | CPP_OBJS=.\Debug/ | 226 | CPP_OBJS=.\Debug/ |
227 | CPP_SBRS=.\Debug/ | 227 | CPP_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 |
230 | MTL_PROJ=/nologo /D "_DEBUG" /win32 | 230 | MTL_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" |
233 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL" | 233 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL" |
234 | BSC32=bscmake.exe | 234 | BSC32=bscmake.exe |
235 | # ADD BASE BSC32 /nologo | 235 | # ADD BASE BSC32 /nologo |
236 | # ADD BSC32 /nologo | 236 | # ADD BSC32 /nologo |
237 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 237 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
238 | BSC32_SBRS= \ | 238 | BSC32_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 | ||
259 | LINK32=link.exe | 259 | LINK32=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 |
262 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\ | 262 | LINK32_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" |
264 | LINK32_OBJS= \ | 264 | LINK32_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 |
287 | OutDir=.\Debug | 287 | OutDir=.\Debug |
288 | TargetName=pumpkin | 288 | TargetName=pumpkin |
289 | InputPath=.\Debug\pumpkin.exe | 289 | InputPath=.\Debug\pumpkin.exe |
290 | SOURCE=$(InputPath) | 290 | SOURCE=$(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 "" |
309 | OUTDIR=.\Releast | 309 | OUTDIR=.\Releast |
310 | INTDIR=.\Releast | 310 | INTDIR=.\Releast |
311 | # Begin Custom Macros | 311 | # Begin Custom Macros |
312 | OutDir=.\Releast | 312 | OutDir=.\Releast |
313 | TargetName=pumpkin | 313 | TargetName=pumpkin |
314 | # End Custom Macros | 314 | # End Custom Macros |
315 | 315 | ||
316 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ | 316 | ALL : "$(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 | ||
319 | CLEAN : | 319 | CLEAN : |
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 |
348 | CPP_PROJ=/nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 348 | CPP_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 |
350 | CPP_OBJS=.\Releast/ | 350 | CPP_OBJS=.\Releast/ |
351 | CPP_SBRS=.\. | 351 | CPP_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 |
354 | MTL_PROJ=/nologo /D "NDEBUG" /win32 | 354 | MTL_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" |
357 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" | 357 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" |
358 | BSC32=bscmake.exe | 358 | BSC32=bscmake.exe |
359 | # ADD BASE BSC32 /nologo | 359 | # ADD BASE BSC32 /nologo |
360 | # ADD BSC32 /nologo | 360 | # ADD BSC32 /nologo |
361 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 361 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
362 | BSC32_SBRS= \ | 362 | BSC32_SBRS= \ |
363 | 363 | ||
364 | LINK32=link.exe | 364 | LINK32=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 |
367 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ | 367 | LINK32_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" |
369 | LINK32_OBJS= \ | 369 | LINK32_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 |
392 | OutDir=.\Releast | 392 | OutDir=.\Releast |
393 | TargetName=pumpkin | 393 | TargetName=pumpkin |
394 | InputPath=.\Releast\pumpkin.exe | 394 | InputPath=.\Releast\pumpkin.exe |
395 | SOURCE=$(InputPath) | 395 | SOURCE=$(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" |
414 | OUTDIR=.\Install\Debug | 414 | OUTDIR=.\Install\Debug |
415 | INTDIR=.\Install\Debug | 415 | INTDIR=.\Install\Debug |
416 | 416 | ||
417 | ALL : "$(OUTDIR)\Install.exe" | 417 | ALL : "$(OUTDIR)\Install.exe" |
418 | 418 | ||
419 | CLEAN : | 419 | CLEAN : |
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 |
433 | CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ | 433 | CPP_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 |
435 | CPP_OBJS=.\Install\Debug/ | 435 | CPP_OBJS=.\Install\Debug/ |
436 | CPP_SBRS=.\. | 436 | CPP_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 |
439 | MTL_PROJ=/nologo /D "_DEBUG" /win32 | 439 | MTL_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" |
442 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG" | 442 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG" |
443 | BSC32=bscmake.exe | 443 | BSC32=bscmake.exe |
444 | # ADD BASE BSC32 /nologo | 444 | # ADD BASE BSC32 /nologo |
445 | # ADD BSC32 /nologo | 445 | # ADD BSC32 /nologo |
446 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" | 446 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" |
447 | BSC32_SBRS= \ | 447 | BSC32_SBRS= \ |
448 | 448 | ||
449 | LINK32=link.exe | 449 | LINK32=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 |
452 | LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ | 452 | LINK32_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" |
456 | LINK32_OBJS= \ | 456 | LINK32_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" |
477 | OUTDIR=.\Install\Pure | 477 | OUTDIR=.\Install\Pure |
478 | INTDIR=.\Install\Pure | 478 | INTDIR=.\Install\Pure |
479 | 479 | ||
480 | ALL : "$(OUTDIR)\Install.exe" "$(OUTDIR)\Install.bsc" | 480 | ALL : "$(OUTDIR)\Install.exe" "$(OUTDIR)\Install.bsc" |
481 | 481 | ||
482 | CLEAN : | 482 | CLEAN : |
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 |
494 | CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 494 | CPP_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 |
496 | CPP_OBJS=.\Install\Pure/ | 496 | CPP_OBJS=.\Install\Pure/ |
497 | CPP_SBRS=.\Install\Pure/ | 497 | CPP_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 |
500 | MTL_PROJ=/nologo /D "NDEBUG" /win32 | 500 | MTL_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" |
503 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" | 503 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" |
504 | BSC32=bscmake.exe | 504 | BSC32=bscmake.exe |
505 | # ADD BASE BSC32 /nologo | 505 | # ADD BASE BSC32 /nologo |
506 | # ADD BSC32 /nologo | 506 | # ADD BSC32 /nologo |
507 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" | 507 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" |
508 | BSC32_SBRS= \ | 508 | BSC32_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 | ||
516 | LINK32=link.exe | 516 | LINK32=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 |
519 | LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ | 519 | LINK32_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" |
523 | LINK32_OBJS= \ | 523 | LINK32_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" |
544 | OUTDIR=.\Install\Static | 544 | OUTDIR=.\Install\Static |
545 | INTDIR=.\Install\Static | 545 | INTDIR=.\Install\Static |
546 | 546 | ||
547 | ALL : "$(OUTDIR)\Install.exe" | 547 | ALL : "$(OUTDIR)\Install.exe" |
548 | 548 | ||
549 | CLEAN : | 549 | CLEAN : |
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 |
559 | CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 559 | CPP_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 |
561 | CPP_OBJS=.\Install\Static/ | 561 | CPP_OBJS=.\Install\Static/ |
562 | CPP_SBRS=.\. | 562 | CPP_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 |
565 | MTL_PROJ=/nologo /D "NDEBUG" /win32 | 565 | MTL_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" |
568 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "STATI_K" | 568 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "STATI_K" |
569 | BSC32=bscmake.exe | 569 | BSC32=bscmake.exe |
570 | # ADD BASE BSC32 /nologo | 570 | # ADD BASE BSC32 /nologo |
571 | # ADD BSC32 /nologo | 571 | # ADD BSC32 /nologo |
572 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" | 572 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" |
573 | BSC32_SBRS= \ | 573 | BSC32_SBRS= \ |
574 | 574 | ||
575 | LINK32=link.exe | 575 | LINK32=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 |
578 | LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ | 578 | LINK32_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" |
582 | LINK32_OBJS= \ | 582 | LINK32_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" |
603 | OUTDIR=.\Install\Canned | 603 | OUTDIR=.\Install\Canned |
604 | INTDIR=.\Install\Canned | 604 | INTDIR=.\Install\Canned |
605 | 605 | ||
606 | ALL : "$(OUTDIR)\Install.exe" | 606 | ALL : "$(OUTDIR)\Install.exe" |
607 | 607 | ||
608 | CLEAN : | 608 | CLEAN : |
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 |
618 | CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 618 | CPP_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 |
620 | CPP_OBJS=.\Install\Canned/ | 620 | CPP_OBJS=.\Install\Canned/ |
621 | CPP_SBRS=.\. | 621 | CPP_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 |
624 | MTL_PROJ=/nologo /D "NDEBUG" /win32 | 624 | MTL_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" |
627 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "K_ANNED" | 627 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" /d "K_ANNED" |
628 | BSC32=bscmake.exe | 628 | BSC32=bscmake.exe |
629 | # ADD BASE BSC32 /nologo | 629 | # ADD BASE BSC32 /nologo |
630 | # ADD BSC32 /nologo | 630 | # ADD BSC32 /nologo |
631 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" | 631 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" |
632 | BSC32_SBRS= \ | 632 | BSC32_SBRS= \ |
633 | 633 | ||
634 | LINK32=link.exe | 634 | LINK32=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 |
637 | LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ | 637 | LINK32_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" |
641 | LINK32_OBJS= \ | 641 | LINK32_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 | ||
688 | SOURCE=.\PumpKIN.cpp | 688 | SOURCE=.\PumpKIN.cpp |
689 | 689 | ||
690 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 690 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
691 | 691 | ||
692 | DEP_CPP_PUMPK=\ | 692 | DEP_CPP_PUMPK=\ |
693 | ".\pumpkin.h"\ | 693 | ".\pumpkin.h"\ |
694 | ".\PumpKINDlg.h"\ | 694 | ".\PumpKINDlg.h"\ |
695 | ".\shared-code\BellsNWhistles.h"\ | 695 | ".\shared-code\BellsNWhistles.h"\ |
696 | ".\shared-code\kHelpers.h"\ | 696 | ".\shared-code\kHelpers.h"\ |
697 | ".\stdafx.h"\ | 697 | ".\stdafx.h"\ |
698 | 698 | ||
699 | 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 | ||
706 | DEP_CPP_PUMPK=\ | 706 | DEP_CPP_PUMPK=\ |
707 | ".\pumpkin.h"\ | 707 | ".\pumpkin.h"\ |
708 | ".\PumpKINDlg.h"\ | 708 | ".\PumpKINDlg.h"\ |
709 | ".\shared-code\BellsNWhistles.h"\ | ||
709 | ".\shared-code\kHelpers.h"\ | 710 | ".\shared-code\kHelpers.h"\ |
710 | ".\stdafx.h"\ | 711 | ".\stdafx.h"\ |
711 | 712 | ||
712 | 713 | ||
713 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 714 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
714 | "$(INTDIR)\pumpkin.pch" | 715 | "$(INTDIR)\pumpkin.pch" |
715 | 716 | ||
716 | "$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 717 | "$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
717 | "$(INTDIR)\pumpkin.pch" | 718 | "$(INTDIR)\pumpkin.pch" |
718 | 719 | ||
719 | 720 | ||
720 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 721 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
721 | 722 | ||
722 | DEP_CPP_PUMPK=\ | 723 | DEP_CPP_PUMPK=\ |
723 | ".\pumpkin.h"\ | 724 | ".\pumpkin.h"\ |
724 | ".\PumpKINDlg.h"\ | 725 | ".\PumpKINDlg.h"\ |
725 | ".\shared-code\BellsNWhistles.h"\ | 726 | ".\shared-code\BellsNWhistles.h"\ |
726 | ".\shared-code\kHelpers.h"\ | 727 | ".\shared-code\kHelpers.h"\ |
727 | ".\stdafx.h"\ | 728 | ".\stdafx.h"\ |
728 | 729 | ||
729 | 730 | ||
730 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 731 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
731 | "$(INTDIR)\pumpkin.pch" | 732 | "$(INTDIR)\pumpkin.pch" |
732 | 733 | ||
733 | 734 | ||
734 | !ENDIF | 735 | !ENDIF |
735 | 736 | ||
736 | # End Source File | 737 | # End Source File |
737 | ################################################################################ | 738 | ################################################################################ |
738 | # Begin Source File | 739 | # Begin Source File |
739 | 740 | ||
740 | SOURCE=.\PumpKINDlg.cpp | 741 | SOURCE=.\PumpKINDlg.cpp |
741 | |||
742 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
743 | |||
744 | DEP_CPP_PUMPKI=\ | 742 | DEP_CPP_PUMPKI=\ |
745 | ".\ACLTargetCombo.h"\ | 743 | ".\ACLTargetCombo.h"\ |
746 | ".\ConfirmRRQDlg.h"\ | 744 | ".\ConfirmRRQDlg.h"\ |
747 | ".\ConfirmWRQDlg.h"\ | 745 | ".\ConfirmWRQDlg.h"\ |
748 | ".\PropsACL.h"\ | 746 | ".\PropsACL.h"\ |
749 | ".\PropsNetwork.h"\ | 747 | ".\PropsNetwork.h"\ |
750 | ".\PropsServer.h"\ | 748 | ".\PropsServer.h"\ |
751 | ".\PropsSounds.h"\ | 749 | ".\PropsSounds.h"\ |
752 | ".\pumpkin.h"\ | 750 | ".\pumpkin.h"\ |
753 | ".\PumpKINDlg.h"\ | 751 | ".\PumpKINDlg.h"\ |
754 | ".\RequestDlg.h"\ | 752 | ".\RequestDlg.h"\ |
755 | ".\Resolver.h"\ | 753 | ".\Resolver.h"\ |
756 | ".\Retrier.h"\ | 754 | ".\Retrier.h"\ |
757 | ".\shared-code\BellsNWhistles.h"\ | 755 | ".\shared-code\BellsNWhistles.h"\ |
758 | ".\shared-code\kHelpers.h"\ | 756 | ".\shared-code\kHelpers.h"\ |
759 | ".\stdafx.h"\ | 757 | ".\stdafx.h"\ |
760 | ".\Trayer.h"\ | 758 | ".\Trayer.h"\ |
761 | 759 | ||
762 | 760 | ||
761 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
762 | |||
763 | |||
763 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 764 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
764 | "$(INTDIR)\pumpkin.pch" | 765 | "$(INTDIR)\pumpkin.pch" |
765 | 766 | ||
766 | 767 | ||
767 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 768 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
768 | 769 | ||
769 | DEP_CPP_PUMPKI=\ | ||
770 | ".\ACLTargetCombo.h"\ | ||
771 | ".\ConfirmRRQDlg.h"\ | ||
772 | ".\ConfirmWRQDlg.h"\ | ||
773 | ".\PropsACL.h"\ | ||
774 | ".\PropsNetwork.h"\ | ||
775 | ".\PropsServer.h"\ | ||
776 | ".\PropsSounds.h"\ | ||
777 | ".\pumpkin.h"\ | ||
778 | ".\PumpKINDlg.h"\ | ||
779 | ".\RequestDlg.h"\ | ||
780 | ".\Resolver.h"\ | ||
781 | ".\Retrier.h"\ | ||
782 | ".\shared-code\BellsNWhistles.h"\ | ||
783 | ".\shared-code\kHelpers.h"\ | ||
784 | ".\stdafx.h"\ | ||
785 | ".\Trayer.h"\ | ||
786 | |||
787 | 770 | ||
788 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 771 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
789 | "$(INTDIR)\pumpkin.pch" | 772 | "$(INTDIR)\pumpkin.pch" |
790 | 773 | ||
791 | "$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 774 | "$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
792 | "$(INTDIR)\pumpkin.pch" | 775 | "$(INTDIR)\pumpkin.pch" |
793 | 776 | ||
794 | 777 | ||
795 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 778 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
796 | 779 | ||
797 | DEP_CPP_PUMPKI=\ | ||
798 | ".\ACLTargetCombo.h"\ | ||
799 | ".\ConfirmRRQDlg.h"\ | ||
800 | ".\ConfirmWRQDlg.h"\ | ||
801 | ".\PropsACL.h"\ | ||
802 | ".\PropsNetwork.h"\ | ||
803 | ".\PropsServer.h"\ | ||
804 | ".\PropsSounds.h"\ | ||
805 | ".\pumpkin.h"\ | ||
806 | ".\PumpKINDlg.h"\ | ||
807 | ".\RequestDlg.h"\ | ||
808 | ".\Resolver.h"\ | ||
809 | ".\Retrier.h"\ | ||
810 | ".\shared-code\BellsNWhistles.h"\ | ||
811 | ".\shared-code\kHelpers.h"\ | ||
812 | ".\stdafx.h"\ | ||
813 | ".\Trayer.h"\ | ||
814 | |||
815 | 780 | ||
816 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 781 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
817 | "$(INTDIR)\pumpkin.pch" | 782 | "$(INTDIR)\pumpkin.pch" |
818 | 783 | ||
819 | 784 | ||
820 | !ENDIF | 785 | !ENDIF |
821 | 786 | ||
822 | # End Source File | 787 | # End Source File |
823 | ################################################################################ | 788 | ################################################################################ |
824 | # Begin Source File | 789 | # Begin Source File |
825 | 790 | ||
826 | SOURCE=.\StdAfx.cpp | 791 | SOURCE=.\StdAfx.cpp |
827 | DEP_CPP_STDAF=\ | 792 | DEP_CPP_STDAF=\ |
828 | ".\shared-code\BellsNWhistles.h"\ | 793 | ".\shared-code\BellsNWhistles.h"\ |
829 | ".\shared-code\kHelpers.h"\ | 794 | ".\shared-code\kHelpers.h"\ |
830 | ".\stdafx.h"\ | 795 | ".\stdafx.h"\ |
831 | 796 | ||
832 | 797 | ||
833 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 798 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
834 | 799 | ||
835 | # ADD CPP /Yc"stdafx.h" | 800 | # ADD CPP /Yc"stdafx.h" |
836 | 801 | ||
837 | BuildCmds= \ | 802 | BuildCmds= \ |
838 | $(CPP) /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 803 | $(CPP) /nologo /Zp1 /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ |
839 | "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/"\ | 804 | "_AFXDLL" /D "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/"\ |
840 | /c $(SOURCE) \ | 805 | /c $(SOURCE) \ |
841 | 806 | ||
842 | 807 | ||
843 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 808 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
844 | $(BuildCmds) | 809 | $(BuildCmds) |
845 | 810 | ||
846 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 811 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
847 | $(BuildCmds) | 812 | $(BuildCmds) |
848 | 813 | ||
849 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 814 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
850 | 815 | ||
851 | # ADD CPP /Yc"stdafx.h" | 816 | # ADD CPP /Yc"stdafx.h" |
852 | 817 | ||
853 | BuildCmds= \ | 818 | BuildCmds= \ |
854 | $(CPP) /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\ | 819 | $(CPP) /nologo /Zp1 /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D\ |
855 | "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\ | 820 | "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/pumpkin.pch"\ |
856 | /Yc"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ | 821 | /Yc"stdafx.h" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ |
857 | 822 | ||
858 | 823 | ||
859 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 824 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
860 | $(BuildCmds) | 825 | $(BuildCmds) |
861 | 826 | ||
862 | "$(INTDIR)\StdAfx.sbr" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 827 | "$(INTDIR)\StdAfx.sbr" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
863 | $(BuildCmds) | 828 | $(BuildCmds) |
864 | 829 | ||
865 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 830 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
866 | $(BuildCmds) | 831 | $(BuildCmds) |
867 | 832 | ||
868 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 833 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
869 | 834 | ||
870 | # ADD BASE CPP /Yc"stdafx.h" | 835 | # ADD BASE CPP /Yc"stdafx.h" |
871 | # ADD CPP /Yc"stdafx.h" | 836 | # ADD CPP /Yc"stdafx.h" |
872 | 837 | ||
873 | BuildCmds= \ | 838 | BuildCmds= \ |
874 | $(CPP) /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ | 839 | $(CPP) /nologo /Zp1 /MT /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ |
875 | "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/" /c $(SOURCE) \ | 840 | "_MBCS" /Fp"$(INTDIR)/pumpkin.pch" /Yc"stdafx.h" /Fo"$(INTDIR)/" /c $(SOURCE) \ |
876 | 841 | ||
877 | 842 | ||
878 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 843 | "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
879 | $(BuildCmds) | 844 | $(BuildCmds) |
880 | 845 | ||
881 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 846 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
882 | $(BuildCmds) | 847 | $(BuildCmds) |
883 | 848 | ||
884 | !ENDIF | 849 | !ENDIF |
885 | 850 | ||
886 | # End Source File | 851 | # End Source File |
887 | ################################################################################ | 852 | ################################################################################ |
888 | # Begin Source File | 853 | # Begin Source File |
889 | 854 | ||
890 | SOURCE=.\pumpkin.rc | 855 | SOURCE=.\pumpkin.rc |
891 | DEP_RSC_PUMPKIN=\ | 856 | DEP_RSC_PUMPKIN=\ |
892 | ".\res\down.ico"\ | 857 | ".\res\down.ico"\ |
893 | ".\res\failed.wav"\ | 858 | ".\res\failed.wav"\ |
894 | ".\res\finished.wav"\ | 859 | ".\res\finished.wav"\ |
895 | ".\res\PumpKIN.ico"\ | 860 | ".\res\PumpKIN.ico"\ |
896 | ".\res\pumpkin.rc2"\ | 861 | ".\res\pumpkin.rc2"\ |
897 | ".\res\remove.ico"\ | 862 | ".\res\remove.ico"\ |
898 | ".\res\ring.wav"\ | 863 | ".\res\ring.wav"\ |
899 | ".\res\rrq.ico"\ | 864 | ".\res\rrq.ico"\ |
900 | ".\res\up.ico"\ | 865 | ".\res\up.ico"\ |
901 | ".\res\wrq.ico"\ | 866 | ".\res\wrq.ico"\ |
902 | ".\shared-data\browse-icon.ico"\ | 867 | ".\shared-data\browse-icon.ico"\ |
903 | ".\shared-data\klever-background.bmp"\ | 868 | ".\shared-data\klever-background.bmp"\ |
904 | ".\shared-data\play-icon.ico"\ | 869 | ".\shared-data\play-icon.ico"\ |
905 | 870 | ||
906 | 871 | ||
907 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 872 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
908 | 873 | ||
909 | 874 | ||
910 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" | 875 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" |
911 | $(RSC) $(RSC_PROJ) $(SOURCE) | 876 | $(RSC) $(RSC_PROJ) $(SOURCE) |
912 | 877 | ||
913 | 878 | ||
914 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 879 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
915 | 880 | ||
916 | 881 | ||
917 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" | 882 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" |
918 | $(RSC) $(RSC_PROJ) $(SOURCE) | 883 | $(RSC) $(RSC_PROJ) $(SOURCE) |
919 | 884 | ||
920 | 885 | ||
921 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 886 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
922 | 887 | ||
923 | 888 | ||
924 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" | 889 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" |
925 | $(RSC) $(RSC_PROJ) $(SOURCE) | 890 | $(RSC) $(RSC_PROJ) $(SOURCE) |
926 | 891 | ||
927 | 892 | ||
928 | !ENDIF | 893 | !ENDIF |
929 | 894 | ||
930 | # End Source File | 895 | # End Source File |
931 | ################################################################################ | 896 | ################################################################################ |
932 | # Begin Source File | 897 | # Begin Source File |
933 | 898 | ||
934 | SOURCE=.\help\pumpkin.hpj | 899 | SOURCE=.\help\pumpkin.hpj |
935 | 900 | ||
936 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 901 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
937 | 902 | ||
938 | # Begin Custom Build - Making help files... | 903 | # Begin Custom Build - Making help files... |
939 | OutDir=.\Release | 904 | OutDir=.\Release |
940 | ProjDir=. | 905 | ProjDir=. |
941 | TargetName=pumpkin | 906 | TargetName=pumpkin |
942 | InputPath=.\help\pumpkin.hpj | 907 | InputPath=.\help\pumpkin.hpj |
943 | 908 | ||
944 | BuildCmds= \ | 909 | BuildCmds= \ |
945 | "$(ProjDir)\makehelp.bat" \ | 910 | "$(ProjDir)\makehelp.bat" \ |
946 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ | 911 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ |
947 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ | 912 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ |
948 | 913 | ||
949 | 914 | ||
950 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 915 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
951 | $(BuildCmds) | 916 | $(BuildCmds) |
952 | 917 | ||
953 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 918 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
954 | $(BuildCmds) | 919 | $(BuildCmds) |
955 | 920 | ||
956 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 921 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
957 | $(BuildCmds) | 922 | $(BuildCmds) |
958 | 923 | ||
959 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 924 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
960 | $(BuildCmds) | 925 | $(BuildCmds) |
961 | # End Custom Build | 926 | # End Custom Build |
962 | 927 | ||
963 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 928 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
964 | 929 | ||
965 | # Begin Custom Build - Making help files... | 930 | # Begin Custom Build - Making help files... |
966 | OutDir=.\Debug | 931 | OutDir=.\Debug |
967 | ProjDir=. | 932 | ProjDir=. |
968 | TargetName=pumpkin | 933 | TargetName=pumpkin |
969 | InputPath=.\help\pumpkin.hpj | 934 | InputPath=.\help\pumpkin.hpj |
970 | 935 | ||
971 | BuildCmds= \ | 936 | BuildCmds= \ |
972 | "$(ProjDir)\makehelp.bat" \ | 937 | "$(ProjDir)\makehelp.bat" \ |
973 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ | 938 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ |
974 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ | 939 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ |
975 | 940 | ||
976 | 941 | ||
977 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 942 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
978 | $(BuildCmds) | 943 | $(BuildCmds) |
979 | 944 | ||
980 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 945 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
981 | $(BuildCmds) | 946 | $(BuildCmds) |
982 | 947 | ||
983 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 948 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
984 | $(BuildCmds) | 949 | $(BuildCmds) |
985 | 950 | ||
986 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 951 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
987 | $(BuildCmds) | 952 | $(BuildCmds) |
988 | # End Custom Build | 953 | # End Custom Build |
989 | 954 | ||
990 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 955 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
991 | 956 | ||
992 | # Begin Custom Build - Making help files... | 957 | # Begin Custom Build - Making help files... |
993 | OutDir=.\Releast | 958 | OutDir=.\Releast |
994 | ProjDir=. | 959 | ProjDir=. |
995 | TargetName=pumpkin | 960 | TargetName=pumpkin |
996 | InputPath=.\help\pumpkin.hpj | 961 | InputPath=.\help\pumpkin.hpj |
997 | 962 | ||
998 | BuildCmds= \ | 963 | BuildCmds= \ |
999 | "$(ProjDir)\makehelp.bat" \ | 964 | "$(ProjDir)\makehelp.bat" \ |
1000 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ | 965 | compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ |
1001 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ | 966 | compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ |
1002 | 967 | ||
1003 | 968 | ||
1004 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 969 | "$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
1005 | $(BuildCmds) | 970 | $(BuildCmds) |
1006 | 971 | ||
1007 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 972 | "$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
1008 | $(BuildCmds) | 973 | $(BuildCmds) |
1009 | 974 | ||
1010 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 975 | "$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
1011 | $(BuildCmds) | 976 | $(BuildCmds) |
1012 | 977 | ||
1013 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 978 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
1014 | $(BuildCmds) | 979 | $(BuildCmds) |
1015 | # End Custom Build | 980 | # End Custom Build |
1016 | 981 | ||
1017 | !ENDIF | 982 | !ENDIF |
1018 | 983 | ||
1019 | # End Source File | 984 | # End Source File |
1020 | ################################################################################ | 985 | ################################################################################ |
1021 | # Begin Source File | 986 | # Begin Source File |
1022 | 987 | ||
1023 | SOURCE=.\PropsServer.cpp | 988 | SOURCE=.\PropsServer.cpp |
1024 | 989 | ||
1025 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 990 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1026 | 991 | ||
1027 | DEP_CPP_PROPS=\ | 992 | DEP_CPP_PROPS=\ |
1028 | ".\PropsServer.h"\ | 993 | ".\PropsServer.h"\ |
1029 | ".\pumpkin.h"\ | 994 | ".\pumpkin.h"\ |
1030 | ".\shared-code\BellsNWhistles.h"\ | 995 | ".\shared-code\BellsNWhistles.h"\ |
1031 | ".\shared-code\kHelpers.h"\ | 996 | ".\shared-code\kHelpers.h"\ |
1032 | ".\stdafx.h"\ | 997 | ".\stdafx.h"\ |
1033 | 998 | ||
1034 | 999 | ||
1035 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1000 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
1036 | "$(INTDIR)\pumpkin.pch" | 1001 | "$(INTDIR)\pumpkin.pch" |
1037 | 1002 | ||
1038 | 1003 | ||
1039 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1004 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1040 | 1005 | ||
1041 | DEP_CPP_PROPS=\ | 1006 | DEP_CPP_PROPS=\ |
1042 | ".\PropsServer.h"\ | 1007 | ".\PropsServer.h"\ |
1043 | ".\pumpkin.h"\ | 1008 | ".\pumpkin.h"\ |
1009 | ".\shared-code\BellsNWhistles.h"\ | ||
1044 | ".\shared-code\kHelpers.h"\ | 1010 | ".\shared-code\kHelpers.h"\ |
1045 | ".\stdafx.h"\ | 1011 | ".\stdafx.h"\ |
1046 | 1012 | ||
1047 | 1013 | ||
1048 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1014 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
1049 | "$(INTDIR)\pumpkin.pch" | 1015 | "$(INTDIR)\pumpkin.pch" |
1050 | 1016 | ||
1051 | "$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1017 | "$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
1052 | "$(INTDIR)\pumpkin.pch" | 1018 | "$(INTDIR)\pumpkin.pch" |
1053 | 1019 | ||
1054 | 1020 | ||
1055 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1021 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1056 | 1022 | ||
1057 | DEP_CPP_PROPS=\ | 1023 | DEP_CPP_PROPS=\ |
1058 | ".\PropsServer.h"\ | 1024 | ".\PropsServer.h"\ |
1059 | ".\pumpkin.h"\ | 1025 | ".\pumpkin.h"\ |
1060 | ".\shared-code\BellsNWhistles.h"\ | 1026 | ".\shared-code\BellsNWhistles.h"\ |
1061 | ".\shared-code\kHelpers.h"\ | 1027 | ".\shared-code\kHelpers.h"\ |
1062 | ".\stdafx.h"\ | 1028 | ".\stdafx.h"\ |
1063 | 1029 | ||
1064 | 1030 | ||
1065 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1031 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
1066 | "$(INTDIR)\pumpkin.pch" | 1032 | "$(INTDIR)\pumpkin.pch" |
1067 | 1033 | ||
1068 | 1034 | ||
1069 | !ENDIF | 1035 | !ENDIF |
1070 | 1036 | ||
1071 | # End Source File | 1037 | # End Source File |
1072 | ################################################################################ | 1038 | ################################################################################ |
1073 | # Begin Source File | 1039 | # Begin Source File |
1074 | 1040 | ||
1075 | SOURCE=.\PropsNetwork.cpp | 1041 | SOURCE=.\PropsNetwork.cpp |
1076 | DEP_CPP_PROPSN=\ | 1042 | DEP_CPP_PROPSN=\ |
1077 | ".\PropsNetwork.h"\ | 1043 | ".\PropsNetwork.h"\ |
1078 | ".\pumpkin.h"\ | 1044 | ".\pumpkin.h"\ |
1079 | ".\shared-code\BellsNWhistles.h"\ | 1045 | ".\shared-code\BellsNWhistles.h"\ |
1080 | ".\shared-code\kHelpers.h"\ | 1046 | ".\shared-code\kHelpers.h"\ |
1081 | ".\stdafx.h"\ | 1047 | ".\stdafx.h"\ |
1082 | 1048 | ||
1083 | 1049 | ||
1084 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1050 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1085 | 1051 | ||
1086 | 1052 | ||
1087 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1053 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1088 | "$(INTDIR)\pumpkin.pch" | 1054 | "$(INTDIR)\pumpkin.pch" |
1089 | 1055 | ||
1090 | 1056 | ||
1091 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1057 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1092 | 1058 | ||
1093 | 1059 | ||
1094 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1060 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1095 | "$(INTDIR)\pumpkin.pch" | 1061 | "$(INTDIR)\pumpkin.pch" |
1096 | 1062 | ||
1097 | "$(INTDIR)\PropsNetwork.sbr" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1063 | "$(INTDIR)\PropsNetwork.sbr" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1098 | "$(INTDIR)\pumpkin.pch" | 1064 | "$(INTDIR)\pumpkin.pch" |
1099 | 1065 | ||
1100 | 1066 | ||
1101 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1067 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1102 | 1068 | ||
1103 | 1069 | ||
1104 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1070 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1105 | "$(INTDIR)\pumpkin.pch" | 1071 | "$(INTDIR)\pumpkin.pch" |
1106 | 1072 | ||
1107 | 1073 | ||
1108 | !ENDIF | 1074 | !ENDIF |
1109 | 1075 | ||
1110 | # End Source File | 1076 | # End Source File |
1111 | ################################################################################ | 1077 | ################################################################################ |
1112 | # Begin Source File | 1078 | # Begin Source File |
1113 | 1079 | ||
1114 | SOURCE=.\ConfirmRRQDlg.cpp | 1080 | SOURCE=.\ConfirmRRQDlg.cpp |
1115 | 1081 | ||
1116 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1082 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1117 | 1083 | ||
1118 | DEP_CPP_CONFI=\ | 1084 | DEP_CPP_CONFI=\ |
1119 | ".\ConfirmRRQDlg.h"\ | 1085 | ".\ConfirmRRQDlg.h"\ |
1120 | ".\pumpkin.h"\ | 1086 | ".\pumpkin.h"\ |
1121 | ".\PumpKINDlg.h"\ | 1087 | ".\PumpKINDlg.h"\ |
1122 | ".\shared-code\BellsNWhistles.h"\ | 1088 | ".\shared-code\BellsNWhistles.h"\ |
1123 | ".\shared-code\kHelpers.h"\ | 1089 | ".\shared-code\kHelpers.h"\ |
1124 | ".\stdafx.h"\ | 1090 | ".\stdafx.h"\ |
1125 | 1091 | ||
1126 | 1092 | ||
1127 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1093 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1128 | "$(INTDIR)\pumpkin.pch" | 1094 | "$(INTDIR)\pumpkin.pch" |
1129 | 1095 | ||
1130 | 1096 | ||
1131 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1097 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1132 | 1098 | ||
1133 | DEP_CPP_CONFI=\ | 1099 | DEP_CPP_CONFI=\ |
1134 | ".\ConfirmRRQDlg.h"\ | 1100 | ".\ConfirmRRQDlg.h"\ |
1135 | ".\pumpkin.h"\ | 1101 | ".\pumpkin.h"\ |
1136 | ".\PumpKINDlg.h"\ | 1102 | ".\PumpKINDlg.h"\ |
1103 | ".\shared-code\BellsNWhistles.h"\ | ||
1137 | ".\shared-code\kHelpers.h"\ | 1104 | ".\shared-code\kHelpers.h"\ |
1138 | ".\stdafx.h"\ | 1105 | ".\stdafx.h"\ |
1139 | 1106 | ||
1140 | 1107 | ||
1141 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1108 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1142 | "$(INTDIR)\pumpkin.pch" | 1109 | "$(INTDIR)\pumpkin.pch" |
1143 | 1110 | ||
1144 | "$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1111 | "$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1145 | "$(INTDIR)\pumpkin.pch" | 1112 | "$(INTDIR)\pumpkin.pch" |
1146 | 1113 | ||
1147 | 1114 | ||
1148 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1115 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1149 | 1116 | ||
1150 | DEP_CPP_CONFI=\ | 1117 | DEP_CPP_CONFI=\ |
1151 | ".\ConfirmRRQDlg.h"\ | 1118 | ".\ConfirmRRQDlg.h"\ |
1152 | ".\pumpkin.h"\ | 1119 | ".\pumpkin.h"\ |
1153 | ".\PumpKINDlg.h"\ | 1120 | ".\PumpKINDlg.h"\ |
1154 | ".\shared-code\BellsNWhistles.h"\ | 1121 | ".\shared-code\BellsNWhistles.h"\ |
1155 | ".\shared-code\kHelpers.h"\ | 1122 | ".\shared-code\kHelpers.h"\ |
1156 | ".\stdafx.h"\ | 1123 | ".\stdafx.h"\ |
1157 | 1124 | ||
1158 | 1125 | ||
1159 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1126 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1160 | "$(INTDIR)\pumpkin.pch" | 1127 | "$(INTDIR)\pumpkin.pch" |
1161 | 1128 | ||
1162 | 1129 | ||
1163 | !ENDIF | 1130 | !ENDIF |
1164 | 1131 | ||
1165 | # End Source File | 1132 | # End Source File |
1166 | ################################################################################ | 1133 | ################################################################################ |
1167 | # Begin Source File | 1134 | # Begin Source File |
1168 | 1135 | ||
1169 | SOURCE=.\ConfirmWRQDlg.cpp | 1136 | SOURCE=.\ConfirmWRQDlg.cpp |
1170 | 1137 | ||
1171 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1138 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1172 | 1139 | ||
1173 | DEP_CPP_CONFIR=\ | 1140 | DEP_CPP_CONFIR=\ |
1174 | ".\ConfirmWRQDlg.h"\ | 1141 | ".\ConfirmWRQDlg.h"\ |
1175 | ".\pumpkin.h"\ | 1142 | ".\pumpkin.h"\ |
1176 | ".\PumpKINDlg.h"\ | 1143 | ".\PumpKINDlg.h"\ |
1177 | ".\shared-code\BellsNWhistles.h"\ | 1144 | ".\shared-code\BellsNWhistles.h"\ |
1178 | ".\shared-code\kHelpers.h"\ | 1145 | ".\shared-code\kHelpers.h"\ |
1179 | ".\stdafx.h"\ | 1146 | ".\stdafx.h"\ |
1180 | 1147 | ||
1181 | 1148 | ||
1182 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1149 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1183 | "$(INTDIR)\pumpkin.pch" | 1150 | "$(INTDIR)\pumpkin.pch" |
1184 | 1151 | ||
1185 | 1152 | ||
1186 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1153 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1187 | 1154 | ||
1188 | DEP_CPP_CONFIR=\ | 1155 | DEP_CPP_CONFIR=\ |
1189 | ".\ConfirmWRQDlg.h"\ | 1156 | ".\ConfirmWRQDlg.h"\ |
1190 | ".\pumpkin.h"\ | 1157 | ".\pumpkin.h"\ |
1191 | ".\PumpKINDlg.h"\ | 1158 | ".\PumpKINDlg.h"\ |
1159 | ".\shared-code\BellsNWhistles.h"\ | ||
1192 | ".\shared-code\kHelpers.h"\ | 1160 | ".\shared-code\kHelpers.h"\ |
1193 | ".\stdafx.h"\ | 1161 | ".\stdafx.h"\ |
1194 | 1162 | ||
1195 | 1163 | ||
1196 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1164 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1197 | "$(INTDIR)\pumpkin.pch" | 1165 | "$(INTDIR)\pumpkin.pch" |
1198 | 1166 | ||
1199 | "$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1167 | "$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1200 | "$(INTDIR)\pumpkin.pch" | 1168 | "$(INTDIR)\pumpkin.pch" |
1201 | 1169 | ||
1202 | 1170 | ||
1203 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1171 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1204 | 1172 | ||
1205 | DEP_CPP_CONFIR=\ | 1173 | DEP_CPP_CONFIR=\ |
1206 | ".\ConfirmWRQDlg.h"\ | 1174 | ".\ConfirmWRQDlg.h"\ |
1207 | ".\pumpkin.h"\ | 1175 | ".\pumpkin.h"\ |
1208 | ".\PumpKINDlg.h"\ | 1176 | ".\PumpKINDlg.h"\ |
1209 | ".\shared-code\BellsNWhistles.h"\ | 1177 | ".\shared-code\BellsNWhistles.h"\ |
1210 | ".\shared-code\kHelpers.h"\ | 1178 | ".\shared-code\kHelpers.h"\ |
1211 | ".\stdafx.h"\ | 1179 | ".\stdafx.h"\ |
1212 | 1180 | ||
1213 | 1181 | ||
1214 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1182 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1215 | "$(INTDIR)\pumpkin.pch" | 1183 | "$(INTDIR)\pumpkin.pch" |
1216 | 1184 | ||
1217 | 1185 | ||
1218 | !ENDIF | 1186 | !ENDIF |
1219 | 1187 | ||
1220 | # End Source File | 1188 | # End Source File |
1221 | ################################################################################ | 1189 | ################################################################################ |
1222 | # Begin Source File | 1190 | # Begin Source File |
1223 | 1191 | ||
1224 | SOURCE=.\RequestDlg.cpp | 1192 | SOURCE=.\RequestDlg.cpp |
1225 | DEP_CPP_REQUE=\ | 1193 | DEP_CPP_REQUE=\ |
1226 | ".\pumpkin.h"\ | 1194 | ".\pumpkin.h"\ |
1227 | ".\RequestDlg.h"\ | 1195 | ".\RequestDlg.h"\ |
1228 | ".\shared-code\BellsNWhistles.h"\ | 1196 | ".\shared-code\BellsNWhistles.h"\ |
1229 | ".\shared-code\kHelpers.h"\ | 1197 | ".\shared-code\kHelpers.h"\ |
1230 | ".\stdafx.h"\ | 1198 | ".\stdafx.h"\ |
1231 | 1199 | ||
1232 | 1200 | ||
1233 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1201 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1234 | 1202 | ||
1235 | 1203 | ||
1236 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1204 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1237 | "$(INTDIR)\pumpkin.pch" | 1205 | "$(INTDIR)\pumpkin.pch" |
1238 | 1206 | ||
1239 | 1207 | ||
1240 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1208 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1241 | 1209 | ||
1242 | 1210 | ||
1243 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1211 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1244 | "$(INTDIR)\pumpkin.pch" | 1212 | "$(INTDIR)\pumpkin.pch" |
1245 | 1213 | ||
1246 | "$(INTDIR)\RequestDlg.sbr" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1214 | "$(INTDIR)\RequestDlg.sbr" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1247 | "$(INTDIR)\pumpkin.pch" | 1215 | "$(INTDIR)\pumpkin.pch" |
1248 | 1216 | ||
1249 | 1217 | ||
1250 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1218 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1251 | 1219 | ||
1252 | 1220 | ||
1253 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1221 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1254 | "$(INTDIR)\pumpkin.pch" | 1222 | "$(INTDIR)\pumpkin.pch" |
1255 | 1223 | ||
1256 | 1224 | ||
1257 | !ENDIF | 1225 | !ENDIF |
1258 | 1226 | ||
1259 | # End Source File | 1227 | # End Source File |
1260 | ################################################################################ | 1228 | ################################################################################ |
1261 | # Begin Source File | 1229 | # Begin Source File |
1262 | 1230 | ||
1263 | SOURCE=.\Resolver.cpp | 1231 | SOURCE=.\Resolver.cpp |
1264 | 1232 | ||
1265 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1233 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1266 | 1234 | ||
1267 | DEP_CPP_RESOL=\ | 1235 | DEP_CPP_RESOL=\ |
1268 | ".\pumpkin.h"\ | 1236 | ".\pumpkin.h"\ |
1269 | ".\PumpKINDlg.h"\ | 1237 | ".\PumpKINDlg.h"\ |
1270 | ".\Resolver.h"\ | 1238 | ".\Resolver.h"\ |
1271 | ".\shared-code\BellsNWhistles.h"\ | 1239 | ".\shared-code\BellsNWhistles.h"\ |
1272 | ".\shared-code\kHelpers.h"\ | 1240 | ".\shared-code\kHelpers.h"\ |
1273 | ".\stdafx.h"\ | 1241 | ".\stdafx.h"\ |
1274 | 1242 | ||
1275 | 1243 | ||
1276 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1244 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1277 | "$(INTDIR)\pumpkin.pch" | 1245 | "$(INTDIR)\pumpkin.pch" |
1278 | 1246 | ||
1279 | 1247 | ||
1280 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1248 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1281 | 1249 | ||
1282 | DEP_CPP_RESOL=\ | 1250 | DEP_CPP_RESOL=\ |
1283 | ".\pumpkin.h"\ | 1251 | ".\pumpkin.h"\ |
1284 | ".\PumpKINDlg.h"\ | 1252 | ".\PumpKINDlg.h"\ |
1285 | ".\Resolver.h"\ | 1253 | ".\Resolver.h"\ |
1254 | ".\shared-code\BellsNWhistles.h"\ | ||
1286 | ".\shared-code\kHelpers.h"\ | 1255 | ".\shared-code\kHelpers.h"\ |
1287 | ".\stdafx.h"\ | 1256 | ".\stdafx.h"\ |
1288 | 1257 | ||
1289 | 1258 | ||
1290 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1259 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1291 | "$(INTDIR)\pumpkin.pch" | 1260 | "$(INTDIR)\pumpkin.pch" |
1292 | 1261 | ||
1293 | "$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1262 | "$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1294 | "$(INTDIR)\pumpkin.pch" | 1263 | "$(INTDIR)\pumpkin.pch" |
1295 | 1264 | ||
1296 | 1265 | ||
1297 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1266 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1298 | 1267 | ||
1299 | DEP_CPP_RESOL=\ | 1268 | DEP_CPP_RESOL=\ |
1300 | ".\pumpkin.h"\ | 1269 | ".\pumpkin.h"\ |
1301 | ".\PumpKINDlg.h"\ | 1270 | ".\PumpKINDlg.h"\ |
1302 | ".\Resolver.h"\ | 1271 | ".\Resolver.h"\ |
1303 | ".\shared-code\BellsNWhistles.h"\ | 1272 | ".\shared-code\BellsNWhistles.h"\ |
1304 | ".\shared-code\kHelpers.h"\ | 1273 | ".\shared-code\kHelpers.h"\ |
1305 | ".\stdafx.h"\ | 1274 | ".\stdafx.h"\ |
1306 | 1275 | ||
1307 | 1276 | ||
1308 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1277 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1309 | "$(INTDIR)\pumpkin.pch" | 1278 | "$(INTDIR)\pumpkin.pch" |
1310 | 1279 | ||
1311 | 1280 | ||
1312 | !ENDIF | 1281 | !ENDIF |
1313 | 1282 | ||
1314 | # End Source File | 1283 | # End Source File |
1315 | ################################################################################ | 1284 | ################################################################################ |
1316 | # Begin Source File | 1285 | # Begin Source File |
1317 | 1286 | ||
1318 | SOURCE=.\Retrier.cpp | 1287 | SOURCE=.\Retrier.cpp |
1319 | 1288 | ||
1320 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1289 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1321 | 1290 | ||
1322 | DEP_CPP_RETRI=\ | 1291 | DEP_CPP_RETRI=\ |
1323 | ".\pumpkin.h"\ | 1292 | ".\pumpkin.h"\ |
1324 | ".\PumpKINDlg.h"\ | 1293 | ".\PumpKINDlg.h"\ |
1325 | ".\Retrier.h"\ | 1294 | ".\Retrier.h"\ |
1326 | ".\shared-code\BellsNWhistles.h"\ | 1295 | ".\shared-code\BellsNWhistles.h"\ |
1327 | ".\shared-code\kHelpers.h"\ | 1296 | ".\shared-code\kHelpers.h"\ |
1328 | ".\stdafx.h"\ | 1297 | ".\stdafx.h"\ |
1329 | 1298 | ||
1330 | 1299 | ||
1331 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1300 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1332 | "$(INTDIR)\pumpkin.pch" | 1301 | "$(INTDIR)\pumpkin.pch" |
1333 | 1302 | ||
1334 | 1303 | ||
1335 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1304 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1336 | 1305 | ||
1337 | DEP_CPP_RETRI=\ | 1306 | DEP_CPP_RETRI=\ |
1338 | ".\pumpkin.h"\ | 1307 | ".\pumpkin.h"\ |
1339 | ".\PumpKINDlg.h"\ | 1308 | ".\PumpKINDlg.h"\ |
1340 | ".\Retrier.h"\ | 1309 | ".\Retrier.h"\ |
1310 | ".\shared-code\BellsNWhistles.h"\ | ||
1341 | ".\shared-code\kHelpers.h"\ | 1311 | ".\shared-code\kHelpers.h"\ |
1342 | ".\stdafx.h"\ | 1312 | ".\stdafx.h"\ |
1343 | 1313 | ||
1344 | 1314 | ||
1345 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1315 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1346 | "$(INTDIR)\pumpkin.pch" | 1316 | "$(INTDIR)\pumpkin.pch" |
1347 | 1317 | ||
1348 | "$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1318 | "$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1349 | "$(INTDIR)\pumpkin.pch" | 1319 | "$(INTDIR)\pumpkin.pch" |
1350 | 1320 | ||
1351 | 1321 | ||
1352 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1322 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1353 | 1323 | ||
1354 | DEP_CPP_RETRI=\ | 1324 | DEP_CPP_RETRI=\ |
1355 | ".\pumpkin.h"\ | 1325 | ".\pumpkin.h"\ |
1356 | ".\PumpKINDlg.h"\ | 1326 | ".\PumpKINDlg.h"\ |
1357 | ".\Retrier.h"\ | 1327 | ".\Retrier.h"\ |
1358 | ".\shared-code\BellsNWhistles.h"\ | 1328 | ".\shared-code\BellsNWhistles.h"\ |
1359 | ".\shared-code\kHelpers.h"\ | 1329 | ".\shared-code\kHelpers.h"\ |
1360 | ".\stdafx.h"\ | 1330 | ".\stdafx.h"\ |
1361 | 1331 | ||
1362 | 1332 | ||
1363 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1333 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1364 | "$(INTDIR)\pumpkin.pch" | 1334 | "$(INTDIR)\pumpkin.pch" |
1365 | 1335 | ||
1366 | 1336 | ||
1367 | !ENDIF | 1337 | !ENDIF |
1368 | 1338 | ||
1369 | # End Source File | 1339 | # End Source File |
1370 | ################################################################################ | 1340 | ################################################################################ |
1371 | # Begin Source File | 1341 | # Begin Source File |
1372 | 1342 | ||
1373 | SOURCE=.\Trayer.cpp | 1343 | SOURCE=.\Trayer.cpp |
1374 | 1344 | ||
1375 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1345 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1376 | 1346 | ||
1377 | DEP_CPP_TRAYE=\ | 1347 | DEP_CPP_TRAYE=\ |
1378 | ".\pumpkin.h"\ | 1348 | ".\pumpkin.h"\ |
1379 | ".\PumpKINDlg.h"\ | 1349 | ".\PumpKINDlg.h"\ |
1380 | ".\shared-code\BellsNWhistles.h"\ | 1350 | ".\shared-code\BellsNWhistles.h"\ |
1381 | ".\shared-code\kHelpers.h"\ | 1351 | ".\shared-code\kHelpers.h"\ |
1382 | ".\stdafx.h"\ | 1352 | ".\stdafx.h"\ |
1383 | ".\Trayer.h"\ | 1353 | ".\Trayer.h"\ |
1384 | 1354 | ||
1385 | 1355 | ||
1386 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1356 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1387 | "$(INTDIR)\pumpkin.pch" | 1357 | "$(INTDIR)\pumpkin.pch" |
1388 | 1358 | ||
1389 | 1359 | ||
1390 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1360 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1391 | 1361 | ||
1392 | DEP_CPP_TRAYE=\ | 1362 | DEP_CPP_TRAYE=\ |
1393 | ".\pumpkin.h"\ | 1363 | ".\pumpkin.h"\ |
1394 | ".\PumpKINDlg.h"\ | 1364 | ".\PumpKINDlg.h"\ |
1365 | ".\shared-code\BellsNWhistles.h"\ | ||
1395 | ".\shared-code\kHelpers.h"\ | 1366 | ".\shared-code\kHelpers.h"\ |
1396 | ".\stdafx.h"\ | 1367 | ".\stdafx.h"\ |
1397 | ".\Trayer.h"\ | 1368 | ".\Trayer.h"\ |
1398 | 1369 | ||
1399 | 1370 | ||
1400 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1371 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1401 | "$(INTDIR)\pumpkin.pch" | 1372 | "$(INTDIR)\pumpkin.pch" |
1402 | 1373 | ||
1403 | "$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1374 | "$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1404 | "$(INTDIR)\pumpkin.pch" | 1375 | "$(INTDIR)\pumpkin.pch" |
1405 | 1376 | ||
1406 | 1377 | ||
1407 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1378 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1408 | 1379 | ||
1409 | DEP_CPP_TRAYE=\ | 1380 | DEP_CPP_TRAYE=\ |
1410 | ".\pumpkin.h"\ | 1381 | ".\pumpkin.h"\ |
1411 | ".\PumpKINDlg.h"\ | 1382 | ".\PumpKINDlg.h"\ |
1412 | ".\shared-code\BellsNWhistles.h"\ | 1383 | ".\shared-code\BellsNWhistles.h"\ |
1413 | ".\shared-code\kHelpers.h"\ | 1384 | ".\shared-code\kHelpers.h"\ |
1414 | ".\stdafx.h"\ | 1385 | ".\stdafx.h"\ |
1415 | ".\Trayer.h"\ | 1386 | ".\Trayer.h"\ |
1416 | 1387 | ||
1417 | 1388 | ||
1418 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1389 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1419 | "$(INTDIR)\pumpkin.pch" | 1390 | "$(INTDIR)\pumpkin.pch" |
1420 | 1391 | ||
1421 | 1392 | ||
1422 | !ENDIF | 1393 | !ENDIF |
1423 | 1394 | ||
1424 | # End Source File | 1395 | # End Source File |
1425 | ################################################################################ | 1396 | ################################################################################ |
1426 | # Begin Source File | 1397 | # Begin Source File |
1427 | 1398 | ||
1428 | SOURCE=.\help\pumpkin.cnt | 1399 | SOURCE=.\help\pumpkin.cnt |
1429 | 1400 | ||
1430 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1401 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1431 | 1402 | ||
1432 | # PROP Exclude_From_Build 1 | 1403 | # PROP Exclude_From_Build 1 |
1433 | 1404 | ||
1434 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1405 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1435 | 1406 | ||
1436 | # PROP Exclude_From_Build 1 | 1407 | # PROP Exclude_From_Build 1 |
1437 | 1408 | ||
1438 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1409 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1439 | 1410 | ||
1440 | # PROP Exclude_From_Build 1 | 1411 | # PROP Exclude_From_Build 1 |
1441 | 1412 | ||
1442 | !ENDIF | 1413 | !ENDIF |
1443 | 1414 | ||
1444 | # End Source File | 1415 | # End Source File |
1445 | ################################################################################ | 1416 | ################################################################################ |
1446 | # Begin Source File | 1417 | # Begin Source File |
1447 | 1418 | ||
1448 | SOURCE=.\PropsSounds.cpp | 1419 | SOURCE=.\PropsSounds.cpp |
1449 | 1420 | ||
1450 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1421 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1451 | 1422 | ||
1452 | DEP_CPP_PROPSS=\ | 1423 | DEP_CPP_PROPSS=\ |
1453 | ".\PropsSounds.h"\ | 1424 | ".\PropsSounds.h"\ |
1454 | ".\pumpkin.h"\ | 1425 | ".\pumpkin.h"\ |
1455 | ".\PumpKINDlg.h"\ | 1426 | ".\PumpKINDlg.h"\ |
1456 | ".\shared-code\BellsNWhistles.h"\ | 1427 | ".\shared-code\BellsNWhistles.h"\ |
1457 | ".\shared-code\kHelpers.h"\ | 1428 | ".\shared-code\kHelpers.h"\ |
1458 | ".\stdafx.h"\ | 1429 | ".\stdafx.h"\ |
1459 | 1430 | ||
1460 | 1431 | ||
1461 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1432 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1462 | "$(INTDIR)\pumpkin.pch" | 1433 | "$(INTDIR)\pumpkin.pch" |
1463 | 1434 | ||
1464 | 1435 | ||
1465 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1436 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1466 | 1437 | ||
1467 | DEP_CPP_PROPSS=\ | 1438 | DEP_CPP_PROPSS=\ |
1468 | ".\PropsSounds.h"\ | 1439 | ".\PropsSounds.h"\ |
1469 | ".\pumpkin.h"\ | 1440 | ".\pumpkin.h"\ |
1470 | ".\PumpKINDlg.h"\ | 1441 | ".\PumpKINDlg.h"\ |
1442 | ".\shared-code\BellsNWhistles.h"\ | ||
1471 | ".\shared-code\kHelpers.h"\ | 1443 | ".\shared-code\kHelpers.h"\ |
1472 | ".\stdafx.h"\ | 1444 | ".\stdafx.h"\ |
1473 | 1445 | ||
1474 | 1446 | ||
1475 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1447 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1476 | "$(INTDIR)\pumpkin.pch" | 1448 | "$(INTDIR)\pumpkin.pch" |
1477 | 1449 | ||
1478 | "$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1450 | "$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1479 | "$(INTDIR)\pumpkin.pch" | 1451 | "$(INTDIR)\pumpkin.pch" |
1480 | 1452 | ||
1481 | 1453 | ||
1482 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1454 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1483 | 1455 | ||
1484 | DEP_CPP_PROPSS=\ | 1456 | DEP_CPP_PROPSS=\ |
1485 | ".\PropsSounds.h"\ | 1457 | ".\PropsSounds.h"\ |
1486 | ".\pumpkin.h"\ | 1458 | ".\pumpkin.h"\ |
1487 | ".\PumpKINDlg.h"\ | 1459 | ".\PumpKINDlg.h"\ |
1488 | ".\shared-code\BellsNWhistles.h"\ | 1460 | ".\shared-code\BellsNWhistles.h"\ |
1489 | ".\shared-code\kHelpers.h"\ | 1461 | ".\shared-code\kHelpers.h"\ |
1490 | ".\stdafx.h"\ | 1462 | ".\stdafx.h"\ |
1491 | 1463 | ||
1492 | 1464 | ||
1493 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1465 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1494 | "$(INTDIR)\pumpkin.pch" | 1466 | "$(INTDIR)\pumpkin.pch" |
1495 | 1467 | ||
1496 | 1468 | ||
1497 | !ENDIF | 1469 | !ENDIF |
1498 | 1470 | ||
1499 | # End Source File | 1471 | # End Source File |
1500 | ################################################################################ | 1472 | ################################################################################ |
1501 | # Begin Source File | 1473 | # Begin Source File |
1502 | 1474 | ||
1503 | SOURCE=.\PropsACL.cpp | 1475 | SOURCE=.\PropsACL.cpp |
1504 | |||
1505 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1506 | |||
1507 | DEP_CPP_PROPSA=\ | 1476 | DEP_CPP_PROPSA=\ |
1508 | ".\ACLTargetCombo.h"\ | 1477 | ".\ACLTargetCombo.h"\ |
1509 | ".\PropsACL.h"\ | 1478 | ".\PropsACL.h"\ |
1510 | ".\pumpkin.h"\ | 1479 | ".\pumpkin.h"\ |
1511 | ".\PumpKINDlg.h"\ | 1480 | ".\PumpKINDlg.h"\ |
1512 | ".\shared-code\BellsNWhistles.h"\ | 1481 | ".\shared-code\BellsNWhistles.h"\ |
1513 | ".\shared-code\kHelpers.h"\ | 1482 | ".\shared-code\kHelpers.h"\ |
1514 | ".\stdafx.h"\ | 1483 | ".\stdafx.h"\ |
1515 | 1484 | ||
1516 | 1485 | ||
1486 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1487 | |||
1488 | |||
1517 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | 1489 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ |
1518 | "$(INTDIR)\pumpkin.pch" | 1490 | "$(INTDIR)\pumpkin.pch" |
1519 | 1491 | ||
1520 | 1492 | ||
1521 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1493 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1522 | 1494 | ||
1523 | DEP_CPP_PROPSA=\ | ||
1524 | ".\ACLTargetCombo.h"\ | ||
1525 | ".\PropsACL.h"\ | ||
1526 | ".\pumpkin.h"\ | ||
1527 | ".\PumpKINDlg.h"\ | ||
1528 | ".\shared-code\kHelpers.h"\ | ||
1529 | ".\stdafx.h"\ | ||
1530 | |||
1531 | 1495 | ||
1532 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | 1496 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ |
1533 | "$(INTDIR)\pumpkin.pch" | 1497 | "$(INTDIR)\pumpkin.pch" |
1534 | 1498 | ||
1535 | "$(INTDIR)\PropsACL.sbr" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | 1499 | "$(INTDIR)\PropsACL.sbr" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ |
1536 | "$(INTDIR)\pumpkin.pch" | 1500 | "$(INTDIR)\pumpkin.pch" |
1537 | 1501 | ||
1538 | 1502 | ||
1539 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1503 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1540 | 1504 | ||
1541 | DEP_CPP_PROPSA=\ | ||
1542 | ".\ACLTargetCombo.h"\ | ||
1543 | ".\PropsACL.h"\ | ||
1544 | ".\pumpkin.h"\ | ||
1545 | ".\PumpKINDlg.h"\ | ||
1546 | ".\shared-code\BellsNWhistles.h"\ | ||
1547 | ".\shared-code\kHelpers.h"\ | ||
1548 | ".\stdafx.h"\ | ||
1549 | |||
1550 | 1505 | ||
1551 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | 1506 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ |
1552 | "$(INTDIR)\pumpkin.pch" | 1507 | "$(INTDIR)\pumpkin.pch" |
1553 | 1508 | ||
1554 | 1509 | ||
1555 | !ENDIF | 1510 | !ENDIF |
1556 | 1511 | ||
1557 | # End Source File | 1512 | # End Source File |
1558 | ################################################################################ | 1513 | ################################################################################ |
1559 | # Begin Source File | 1514 | # Begin Source File |
1560 | 1515 | ||
1561 | SOURCE=.\ACLTargetCombo.cpp | 1516 | SOURCE=.\ACLTargetCombo.cpp |
1562 | 1517 | ||
1563 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1518 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1564 | 1519 | ||
1565 | DEP_CPP_ACLTA=\ | 1520 | DEP_CPP_ACLTA=\ |
1566 | ".\ACLTargetCombo.h"\ | 1521 | ".\ACLTargetCombo.h"\ |
1567 | ".\pumpkin.h"\ | 1522 | ".\pumpkin.h"\ |
1568 | ".\PumpKINDlg.h"\ | 1523 | ".\PumpKINDlg.h"\ |
1569 | ".\shared-code\BellsNWhistles.h"\ | 1524 | ".\shared-code\BellsNWhistles.h"\ |
1570 | ".\shared-code\kHelpers.h"\ | 1525 | ".\shared-code\kHelpers.h"\ |
1571 | ".\stdafx.h"\ | 1526 | ".\stdafx.h"\ |
1572 | 1527 | ||
1573 | 1528 | ||
1574 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | 1529 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ |
1575 | "$(INTDIR)\pumpkin.pch" | 1530 | "$(INTDIR)\pumpkin.pch" |
1576 | 1531 | ||
1577 | 1532 | ||
1578 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1533 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1579 | 1534 | ||
1580 | DEP_CPP_ACLTA=\ | 1535 | DEP_CPP_ACLTA=\ |
1581 | ".\ACLTargetCombo.h"\ | 1536 | ".\ACLTargetCombo.h"\ |
1582 | ".\pumpkin.h"\ | 1537 | ".\pumpkin.h"\ |
1583 | ".\PumpKINDlg.h"\ | 1538 | ".\PumpKINDlg.h"\ |
1539 | ".\shared-code\BellsNWhistles.h"\ | ||
1584 | ".\shared-code\kHelpers.h"\ | 1540 | ".\shared-code\kHelpers.h"\ |
1585 | ".\stdafx.h"\ | 1541 | ".\stdafx.h"\ |
1586 | 1542 | ||
1587 | 1543 | ||
1588 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | 1544 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ |
1589 | "$(INTDIR)\pumpkin.pch" | 1545 | "$(INTDIR)\pumpkin.pch" |
1590 | 1546 | ||
1591 | "$(INTDIR)\ACLTargetCombo.sbr" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | 1547 | "$(INTDIR)\ACLTargetCombo.sbr" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ |
1592 | "$(INTDIR)\pumpkin.pch" | 1548 | "$(INTDIR)\pumpkin.pch" |
1593 | 1549 | ||
1594 | 1550 | ||
1595 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1551 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1596 | 1552 | ||
1597 | DEP_CPP_ACLTA=\ | 1553 | DEP_CPP_ACLTA=\ |
1598 | ".\ACLTargetCombo.h"\ | 1554 | ".\ACLTargetCombo.h"\ |
1599 | ".\pumpkin.h"\ | 1555 | ".\pumpkin.h"\ |
1600 | ".\PumpKINDlg.h"\ | 1556 | ".\PumpKINDlg.h"\ |
1601 | ".\shared-code\BellsNWhistles.h"\ | 1557 | ".\shared-code\BellsNWhistles.h"\ |
1602 | ".\shared-code\kHelpers.h"\ | 1558 | ".\shared-code\kHelpers.h"\ |
1603 | ".\stdafx.h"\ | 1559 | ".\stdafx.h"\ |
1604 | 1560 | ||
1605 | 1561 | ||
1606 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | 1562 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ |
1607 | "$(INTDIR)\pumpkin.pch" | 1563 | "$(INTDIR)\pumpkin.pch" |
1608 | 1564 | ||
1609 | 1565 | ||
1610 | !ENDIF | 1566 | !ENDIF |
1611 | 1567 | ||
1612 | # End Source File | 1568 | # End Source File |
1613 | # End Target | 1569 | # End Target |
1614 | ################################################################################ | 1570 | ################################################################################ |
1615 | # Begin Target | 1571 | # Begin Target |
1616 | 1572 | ||
1617 | # Name "Install - Win32 Debug" | 1573 | # Name "Install - Win32 Debug" |
1618 | # Name "Install - Win32 Pure" | 1574 | # Name "Install - Win32 Pure" |
1619 | # Name "Install - Win32 Static" | 1575 | # Name "Install - Win32 Static" |
1620 | # Name "Install - Win32 Canned" | 1576 | # Name "Install - Win32 Canned" |
1621 | 1577 | ||
1622 | !IF "$(CFG)" == "Install - Win32 Debug" | 1578 | !IF "$(CFG)" == "Install - Win32 Debug" |
1623 | 1579 | ||
1624 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" | 1580 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" |
1625 | 1581 | ||
1626 | !ELSEIF "$(CFG)" == "Install - Win32 Static" | 1582 | !ELSEIF "$(CFG)" == "Install - Win32 Static" |
1627 | 1583 | ||
1628 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" | 1584 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" |
1629 | 1585 | ||
1630 | !ENDIF | 1586 | !ENDIF |
1631 | 1587 | ||
1632 | ################################################################################ | 1588 | ################################################################################ |
1633 | # Begin Source File | 1589 | # Begin Source File |
1634 | 1590 | ||
1635 | SOURCE=.\Install\Install.rc | 1591 | SOURCE=.\Install\Install.rc |
1636 | DEP_RSC_INSTA=\ | 1592 | DEP_RSC_INSTA=\ |
1637 | ".\Install\Custom.rch"\ | 1593 | ".\Install\Custom.rch"\ |
1638 | ".\shared-data\install-icon.ico"\ | 1594 | ".\shared-data\install-icon.ico"\ |
1639 | 1595 | ||
1640 | 1596 | ||
1641 | !IF "$(CFG)" == "Install - Win32 Debug" | 1597 | !IF "$(CFG)" == "Install - Win32 Debug" |
1642 | 1598 | ||
1643 | 1599 | ||
1644 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" | 1600 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" |
1645 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\ | 1601 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\ |
1646 | $(SOURCE) | 1602 | $(SOURCE) |
1647 | 1603 | ||
1648 | 1604 | ||
1649 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" | 1605 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" |
1650 | 1606 | ||
1651 | 1607 | ||
1652 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" | 1608 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" |
1653 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\ | 1609 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\ |
1654 | $(SOURCE) | 1610 | $(SOURCE) |
1655 | 1611 | ||
1656 | 1612 | ||
1657 | !ELSEIF "$(CFG)" == "Install - Win32 Static" | 1613 | !ELSEIF "$(CFG)" == "Install - Win32 Static" |
1658 | 1614 | ||
1659 | 1615 | ||
1660 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" | 1616 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" |
1661 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ | 1617 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ |
1662 | "STATI_K" $(SOURCE) | 1618 | "STATI_K" $(SOURCE) |
1663 | 1619 | ||
1664 | 1620 | ||
1665 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" | 1621 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" |
1666 | 1622 | ||
1667 | 1623 | ||
1668 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" | 1624 | "$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" |
1669 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ | 1625 | $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG" /d\ |
1670 | "K_ANNED" $(SOURCE) | 1626 | "K_ANNED" $(SOURCE) |
1671 | 1627 | ||
1672 | 1628 | ||
1673 | !ENDIF | 1629 | !ENDIF |
1674 | 1630 | ||
1675 | # End Source File | 1631 | # End Source File |
1676 | ################################################################################ | 1632 | ################################################################################ |
1677 | # Begin Source File | 1633 | # Begin Source File |
1678 | 1634 | ||
1679 | SOURCE=.\Install\install.cpp | 1635 | SOURCE=.\Install\install.cpp |
1680 | DEP_CPP_INSTAL=\ | 1636 | DEP_CPP_INSTAL=\ |
1681 | ".\shared-code\install.h"\ | 1637 | ".\shared-code\install.h"\ |
1682 | 1638 | ||
1683 | 1639 | ||
1684 | !IF "$(CFG)" == "Install - Win32 Debug" | 1640 | !IF "$(CFG)" == "Install - Win32 Debug" |
1685 | 1641 | ||
1686 | 1642 | ||
1687 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" | 1643 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" |
1688 | $(CPP) $(CPP_PROJ) $(SOURCE) | 1644 | $(CPP) $(CPP_PROJ) $(SOURCE) |
1689 | 1645 | ||
1690 | 1646 | ||
1691 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" | 1647 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" |
1692 | 1648 | ||
1693 | 1649 | ||
1694 | BuildCmds= \ | 1650 | BuildCmds= \ |
1695 | $(CPP) $(CPP_PROJ) $(SOURCE) \ | 1651 | $(CPP) $(CPP_PROJ) $(SOURCE) \ |
1696 | 1652 | ||
1697 | 1653 | ||
1698 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" | 1654 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" |
1699 | $(BuildCmds) | 1655 | $(BuildCmds) |
1700 | 1656 | ||
1701 | "$(INTDIR)\install.sbr" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" | 1657 | "$(INTDIR)\install.sbr" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" |
1702 | $(BuildCmds) | 1658 | $(BuildCmds) |
1703 | 1659 | ||
1704 | !ELSEIF "$(CFG)" == "Install - Win32 Static" | 1660 | !ELSEIF "$(CFG)" == "Install - Win32 Static" |
1705 | 1661 | ||
1706 | 1662 | ||
1707 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" | 1663 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" |
1708 | $(CPP) $(CPP_PROJ) $(SOURCE) | 1664 | $(CPP) $(CPP_PROJ) $(SOURCE) |
1709 | 1665 | ||
1710 | 1666 | ||
1711 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" | 1667 | !ELSEIF "$(CFG)" == "Install - Win32 Canned" |
1712 | 1668 | ||
1713 | 1669 | ||
1714 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" | 1670 | "$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" |
1715 | $(CPP) $(CPP_PROJ) $(SOURCE) | 1671 | $(CPP) $(CPP_PROJ) $(SOURCE) |
1716 | 1672 | ||
1717 | 1673 | ||
1718 | !ENDIF | 1674 | !ENDIF |
1719 | 1675 | ||
1720 | # End Source File | 1676 | # End Source File |
1721 | # End Target | 1677 | # End Target |
1722 | # End Project | 1678 | # End Project |
1723 | ################################################################################ | 1679 | ################################################################################ |
1724 | ################################################################################ | 1680 | ################################################################################ |
1725 | # Section PumpKIN : {4FD78B34-1FD7-11D0-A9FB-444553540000} | 1681 | # Section PumpKIN : {4FD78B34-1FD7-11D0-A9FB-444553540000} |
1726 | # 2:11:CPumpKINDlg:1 | 1682 | # 2:11:CPumpKINDlg:1 |
1727 | # 2:11:CRequestDlg:1 | 1683 | # 2:11:CRequestDlg:1 |
1728 | # End Section | 1684 | # End Section |
1729 | ################################################################################ | 1685 | ################################################################################ |
@@ -1,686 +1,686 @@ | |||
1 | //Microsoft Developer Studio generated resource script. | 1 | //Microsoft Developer Studio generated resource script. |
2 | // | 2 | // |
3 | #include "resource.h" | 3 | #include "resource.h" |
4 | 4 | ||
5 | #define APSTUDIO_READONLY_SYMBOLS | 5 | #define APSTUDIO_READONLY_SYMBOLS |
6 | ///////////////////////////////////////////////////////////////////////////// | 6 | ///////////////////////////////////////////////////////////////////////////// |
7 | // | 7 | // |
8 | // Generated from the TEXTINCLUDE 2 resource. | 8 | // Generated from the TEXTINCLUDE 2 resource. |
9 | // | 9 | // |
10 | #include "afxres.h" | 10 | #include "afxres.h" |
11 | 11 | ||
12 | ///////////////////////////////////////////////////////////////////////////// | 12 | ///////////////////////////////////////////////////////////////////////////// |
13 | #undef APSTUDIO_READONLY_SYMBOLS | 13 | #undef APSTUDIO_READONLY_SYMBOLS |
14 | 14 | ||
15 | ///////////////////////////////////////////////////////////////////////////// | 15 | ///////////////////////////////////////////////////////////////////////////// |
16 | // English (U.S.) resources | 16 | // English (U.S.) resources |
17 | 17 | ||
18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) | 18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) |
19 | #ifdef _WIN32 | 19 | #ifdef _WIN32 |
20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US | 20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US |
21 | #pragma code_page(1252) | 21 | #pragma code_page(1252) |
22 | #endif //_WIN32 | 22 | #endif //_WIN32 |
23 | 23 | ||
24 | #ifdef APSTUDIO_INVOKED | 24 | #ifdef APSTUDIO_INVOKED |
25 | ///////////////////////////////////////////////////////////////////////////// | 25 | ///////////////////////////////////////////////////////////////////////////// |
26 | // | 26 | // |
27 | // TEXTINCLUDE | 27 | // TEXTINCLUDE |
28 | // | 28 | // |
29 | 29 | ||
30 | 1 TEXTINCLUDE DISCARDABLE | 30 | 1 TEXTINCLUDE DISCARDABLE |
31 | BEGIN | 31 | BEGIN |
32 | "resource.h\0" | 32 | "resource.h\0" |
33 | END | 33 | END |
34 | 34 | ||
35 | 2 TEXTINCLUDE DISCARDABLE | 35 | 2 TEXTINCLUDE DISCARDABLE |
36 | BEGIN | 36 | BEGIN |
37 | "#include ""afxres.h""\r\n" | 37 | "#include ""afxres.h""\r\n" |
38 | "\0" | 38 | "\0" |
39 | END | 39 | END |
40 | 40 | ||
41 | 3 TEXTINCLUDE DISCARDABLE | 41 | 3 TEXTINCLUDE DISCARDABLE |
42 | BEGIN | 42 | BEGIN |
43 | "#define _AFX_NO_SPLITTER_RESOURCES\r\n" | 43 | "#define _AFX_NO_SPLITTER_RESOURCES\r\n" |
44 | "#define _AFX_NO_OLE_RESOURCES\r\n" | 44 | "#define _AFX_NO_OLE_RESOURCES\r\n" |
45 | "#define _AFX_NO_TRACKER_RESOURCES\r\n" | 45 | "#define _AFX_NO_TRACKER_RESOURCES\r\n" |
46 | "#define _AFX_NO_PROPERTY_RESOURCES\r\n" | 46 | "#define _AFX_NO_PROPERTY_RESOURCES\r\n" |
47 | "\r\n" | 47 | "\r\n" |
48 | "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" | 48 | "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" |
49 | "#ifdef _WIN32\r\n" | 49 | "#ifdef _WIN32\r\n" |
50 | "LANGUAGE 9, 1\r\n" | 50 | "LANGUAGE 9, 1\r\n" |
51 | "#pragma code_page(1252)\r\n" | 51 | "#pragma code_page(1252)\r\n" |
52 | "#endif\r\n" | 52 | "#endif\r\n" |
53 | "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n" | 53 | "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n" |
54 | "#include ""afxres.rc"" // Standard components\r\n" | 54 | "#include ""afxres.rc"" // Standard components\r\n" |
55 | "#endif\0" | 55 | "#endif\0" |
56 | END | 56 | END |
57 | 57 | ||
58 | #endif // APSTUDIO_INVOKED | 58 | #endif // APSTUDIO_INVOKED |
59 | 59 | ||
60 | 60 | ||
61 | ///////////////////////////////////////////////////////////////////////////// | 61 | ///////////////////////////////////////////////////////////////////////////// |
62 | // | 62 | // |
63 | // Icon | 63 | // Icon |
64 | // | 64 | // |
65 | 65 | ||
66 | // Icon with lowest ID value placed first to ensure application icon | 66 | // Icon with lowest ID value placed first to ensure application icon |
67 | // remains consistent on all systems. | 67 | // remains consistent on all systems. |
68 | IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" | 68 | IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" |
69 | IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" | 69 | IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" |
70 | IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" | 70 | IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" |
71 | IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" | 71 | IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" |
72 | IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" | 72 | IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" |
73 | IDI_UP ICON DISCARDABLE "res\\up.ico" | 73 | IDI_UP ICON DISCARDABLE "res\\up.ico" |
74 | IDI_DOWN ICON DISCARDABLE "res\\down.ico" | 74 | IDI_DOWN ICON DISCARDABLE "res\\down.ico" |
75 | IDI_REMOVE ICON DISCARDABLE "res\\remove.ico" | 75 | IDI_REMOVE ICON DISCARDABLE "res\\remove.ico" |
76 | 76 | ||
77 | ///////////////////////////////////////////////////////////////////////////// | 77 | ///////////////////////////////////////////////////////////////////////////// |
78 | // | 78 | // |
79 | // Dialog | 79 | // Dialog |
80 | // | 80 | // |
81 | 81 | ||
82 | IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 | 82 | IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 |
83 | STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 83 | STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU |
84 | CAPTION "About PumpKIN" | 84 | CAPTION "About PumpKIN" |
85 | FONT 8, "MS Sans Serif" | 85 | FONT 8, "MS Sans Serif" |
86 | BEGIN | 86 | BEGIN |
87 | ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 | 87 | ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 |
88 | LTEXT "PumpKIN, Version 2.7",IDC_STATIC,40,15,119,8, | 88 | LTEXT "PumpKIN, Version 2.7",IDC_STATIC,40,15,119,8, |
89 | SS_NOPREFIX | 89 | SS_NOPREFIX |
90 | LTEXT "Copyright © 1997-2006 Klever Group",IDC_STATIC,40,30, | 90 | LTEXT "Copyright © 1997-2006 Klever Group",IDC_STATIC,40,30, |
91 | 170,8 | 91 | 170,8 |
92 | DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP | 92 | DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP |
93 | PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 | 93 | PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 |
94 | END | 94 | END |
95 | 95 | ||
96 | IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 193 | 96 | IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 193 |
97 | STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | | 97 | STYLE DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
98 | WS_SYSMENU | ||
99 | EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | 98 | EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW |
100 | CAPTION " PumpKIN" | 99 | CAPTION " PumpKIN" |
101 | FONT 8, "MS Sans Serif" | 100 | FONT 8, "MS Sans Serif" |
102 | BEGIN | 101 | BEGIN |
103 | CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | | 102 | CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | |
104 | LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, | 103 | LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, |
105 | WS_EX_DLGMODALFRAME | 104 | WS_EX_DLGMODALFRAME |
106 | PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, | 105 | PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, |
107 | WS_EX_CLIENTEDGE | 106 | WS_EX_CLIENTEDGE |
108 | PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, | 107 | PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, |
109 | WS_EX_CLIENTEDGE | 108 | WS_EX_CLIENTEDGE |
110 | PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, | 109 | PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, |
111 | WS_EX_CLIENTEDGE | 110 | WS_EX_CLIENTEDGE |
112 | PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, | 111 | PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, |
113 | WS_EX_CLIENTEDGE | 112 | WS_EX_CLIENTEDGE |
114 | PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE | 113 | PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE |
115 | PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE | 114 | PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE |
116 | LISTBOX IDC_LOG,7,115,348,65,LBS_USETABSTOPS | LBS_NOSEL | | 115 | LISTBOX IDC_LOG,7,115,348,64,LBS_USETABSTOPS | |
117 | WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME | 116 | LBS_NOINTEGRALHEIGHT | LBS_NOSEL | WS_VSCROLL | |
117 | WS_HSCROLL,WS_EX_DLGMODALFRAME | ||
118 | PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP | 118 | PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP |
119 | CONTROL "&Server is running",IDC_LISTENING,"Button", | 119 | CONTROL "&Server is running",IDC_LISTENING,"Button", |
120 | BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_FLAT | WS_TABSTOP,286, | 120 | BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_FLAT | WS_TABSTOP,286, |
121 | 180,69,11,WS_EX_TRANSPARENT | WS_EX_STATICEDGE | 121 | 181,69,11,WS_EX_TRANSPARENT | WS_EX_STATICEDGE |
122 | END | 122 | END |
123 | 123 | ||
124 | IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 300, 201 | 124 | IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 300, 201 |
125 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 125 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
126 | CAPTION "Server" | 126 | CAPTION "Server" |
127 | FONT 8, "MS Sans Serif" | 127 | FONT 8, "MS Sans Serif" |
128 | BEGIN | 128 | BEGIN |
129 | GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, | 129 | GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, |
130 | 286,38 | 130 | 286,38 |
131 | EDITTEXT IDC_TFTPROOT,13,16,256,13,ES_AUTOHSCROLL | 131 | EDITTEXT IDC_TFTPROOT,13,16,256,13,ES_AUTOHSCROLL |
132 | PUSHBUTTON "&B",IDC_BROWSE,274,16,13,13,BS_ICON | 132 | PUSHBUTTON "&B",IDC_BROWSE,274,16,13,13,BS_ICON |
133 | CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, | 133 | CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, |
134 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 | 134 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 |
135 | GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,243,56 | 135 | GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,243,56 |
136 | CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", | 136 | CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", |
137 | BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,63,53,10 | 137 | BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,63,53,10 |
138 | CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, | 138 | CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, |
139 | "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,43,75,91,10 | 139 | "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,43,75,91,10 |
140 | CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", | 140 | CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", |
141 | BS_AUTORADIOBUTTON | BS_NOTIFY,73,87,70,10 | 141 | BS_AUTORADIOBUTTON | BS_NOTIFY,73,87,70,10 |
142 | GROUPBOX "Write Request Behavior",IDC_STATIC,7,106,243,56, | 142 | GROUPBOX "Write Request Behavior",IDC_STATIC,7,106,243,56, |
143 | WS_GROUP | 143 | WS_GROUP |
144 | CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", | 144 | CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", |
145 | BS_AUTORADIOBUTTON | WS_GROUP,13,116,55,10 | 145 | BS_AUTORADIOBUTTON | WS_GROUP,13,116,55,10 |
146 | CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", | 146 | CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", |
147 | BS_AUTORADIOBUTTON,43,126,73,10 | 147 | BS_AUTORADIOBUTTON,43,126,73,10 |
148 | CONTROL "Always pro&mpt before accepting file", | 148 | CONTROL "Always pro&mpt before accepting file", |
149 | IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,73,136, | 149 | IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,73,136, |
150 | 139,10 | 150 | 139,10 |
151 | CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", | 151 | CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", |
152 | BS_AUTORADIOBUTTON,103,146,70,10 | 152 | BS_AUTORADIOBUTTON,103,146,70,10 |
153 | CTEXT "Confirmation &timeout",IDC_STATIC,253,52,40,19, | 153 | CTEXT "Confirmation &timeout",IDC_STATIC,253,52,40,19, |
154 | SS_NOTIFY | 154 | SS_NOTIFY |
155 | CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", | 155 | CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", |
156 | TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,272,72, | 156 | TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,272,72, |
157 | 21,90 | 157 | 21,90 |
158 | GROUPBOX "Log file (leave empty to disable logging to file)", | 158 | GROUPBOX "Log file (leave empty to disable logging to file)", |
159 | IDC_STATIC,7,165,286,29 | 159 | IDC_STATIC,7,165,286,29 |
160 | EDITTEXT IDC_LOGFILE,13,175,256,13,ES_AUTOHSCROLL | 160 | EDITTEXT IDC_LOGFILE,13,175,256,13,ES_AUTOHSCROLL |
161 | PUSHBUTTON "",IDC_LOGFILE_BROWSE,274,175,13,13,BS_ICON | 161 | PUSHBUTTON "",IDC_LOGFILE_BROWSE,274,175,13,13,BS_ICON |
162 | END | 162 | END |
163 | 163 | ||
164 | IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 300, 201 | 164 | IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 300, 201 |
165 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 165 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
166 | CAPTION "Network" | 166 | CAPTION "Network" |
167 | FONT 8, "MS Sans Serif" | 167 | FONT 8, "MS Sans Serif" |
168 | BEGIN | 168 | BEGIN |
169 | GROUPBOX "UDP Ports",IDC_STATIC,7,7,286,40 | 169 | GROUPBOX "UDP Ports",IDC_STATIC,7,7,286,40 |
170 | RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, | 170 | RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, |
171 | 18,135,8 | 171 | 18,135,8 |
172 | EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL | 172 | EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL |
173 | CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | | 173 | CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | |
174 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 174 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
175 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 | 175 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 |
176 | RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 | 176 | RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 |
177 | EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL | 177 | EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL |
178 | CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | | 178 | CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | |
179 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 179 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
180 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 | 180 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 |
181 | LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 | 181 | LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 |
182 | EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER | 182 | EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER |
183 | CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP | | 183 | CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP | |
184 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 184 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
185 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13 | 185 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13 |
186 | LTEXT "Default block size:",IDC_STATIC,7,66,59,8 | 186 | LTEXT "Default block size:",IDC_STATIC,7,66,59,8 |
187 | LTEXT "seconds",IDC_STATIC,154,52,28,8 | 187 | LTEXT "seconds",IDC_STATIC,154,52,28,8 |
188 | LTEXT "bytes",IDC_STATIC,154,66,18,8 | 188 | LTEXT "bytes",IDC_STATIC,154,66,18,8 |
189 | EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER | 189 | EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER |
190 | CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP | | 190 | CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP | |
191 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 191 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
192 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13 | 192 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13 |
193 | END | 193 | END |
194 | 194 | ||
195 | IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79 | 195 | IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79 |
196 | STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | | 196 | STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | |
197 | WS_CAPTION | 197 | WS_CAPTION |
198 | EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | 198 | EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE |
199 | CAPTION " PumpKIN - Confirm Read Request" | 199 | CAPTION " PumpKIN - Confirm Read Request" |
200 | FONT 8, "MS Sans Serif", 0, 0, 0x1 | 200 | FONT 8, "MS Sans Serif", 0, 0, 0x1 |
201 | BEGIN | 201 | BEGIN |
202 | DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14 | 202 | DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14 |
203 | PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14 | 203 | PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14 |
204 | LTEXT "The host",IDC_STATIC,77,7,29,8 | 204 | LTEXT "The host",IDC_STATIC,77,7,29,8 |
205 | CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY | | 205 | CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY | |
206 | SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | | 206 | SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | |
207 | WS_EX_CLIENTEDGE | 207 | WS_EX_CLIENTEDGE |
208 | CTEXT "is requesting the file",IDC_STATIC,23,29,135,8 | 208 | CTEXT "is requesting the file",IDC_STATIC,23,29,135,8 |
209 | CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN | | 209 | CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN | |
210 | WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | 210 | WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE |
211 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1 | 211 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1 |
212 | ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20 | 212 | ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20 |
213 | ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20 | 213 | ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20 |
214 | END | 214 | END |
215 | 215 | ||
216 | IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95 | 216 | IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95 |
217 | STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION | 217 | STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION |
218 | EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | 218 | EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE |
219 | CAPTION " PumpKIN - Confirm Write Request" | 219 | CAPTION " PumpKIN - Confirm Write Request" |
220 | FONT 8, "MS Sans Serif", 0, 0, 0x1 | 220 | FONT 8, "MS Sans Serif", 0, 0, 0x1 |
221 | BEGIN | 221 | BEGIN |
222 | DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14 | 222 | DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14 |
223 | PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14 | 223 | PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14 |
224 | PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14 | 224 | PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14 |
225 | LTEXT "The host",IDC_STATIC,87,7,29,8 | 225 | LTEXT "The host",IDC_STATIC,87,7,29,8 |
226 | CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY | | 226 | CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY | |
227 | SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | | 227 | SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | |
228 | WS_EX_CLIENTEDGE | 228 | WS_EX_CLIENTEDGE |
229 | CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135, | 229 | CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135, |
230 | 8 | 230 | 8 |
231 | CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN | | 231 | CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN | |
232 | WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | 232 | WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE |
233 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1 | 233 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1 |
234 | ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20 | 234 | ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20 |
235 | ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20 | 235 | ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20 |
236 | PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14 | 236 | PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14 |
237 | END | 237 | END |
238 | 238 | ||
239 | IDD_REQUEST DIALOGEX 0, 0, 191, 161 | 239 | IDD_REQUEST DIALOGEX 0, 0, 191, 161 |
240 | STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION | | 240 | STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION | |
241 | WS_SYSMENU | 241 | WS_SYSMENU |
242 | EXSTYLE WS_EX_CLIENTEDGE | 242 | EXSTYLE WS_EX_CLIENTEDGE |
243 | CAPTION "Request" | 243 | CAPTION "Request" |
244 | FONT 8, "MS Sans Serif", 0, 0, 0x1 | 244 | FONT 8, "MS Sans Serif", 0, 0, 0x1 |
245 | BEGIN | 245 | BEGIN |
246 | LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY | 246 | LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY |
247 | EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL, | 247 | EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL, |
248 | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | 248 | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE |
249 | PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE | 249 | PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE |
250 | LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY | 250 | LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY |
251 | EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL, | 251 | EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL, |
252 | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | 252 | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE |
253 | LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY | 253 | LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY |
254 | COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL | | 254 | COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL | |
255 | CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL | | 255 | CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL | |
256 | WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | 256 | WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE |
257 | PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66, | 257 | PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66, |
258 | BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY, | 258 | BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY, |
259 | WS_EX_CLIENTEDGE | 259 | WS_EX_CLIENTEDGE |
260 | LTEXT "&Type:",IDC_STATIC,58,34,19,8 | 260 | LTEXT "&Type:",IDC_STATIC,58,34,19,8 |
261 | COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 261 | COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
262 | CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP | 262 | CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP |
263 | LTEXT "&Block:",IDC_STATIC,127,34,21,8 | 263 | LTEXT "&Block:",IDC_STATIC,127,34,21,8 |
264 | COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | | 264 | COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | |
265 | WS_TABSTOP | 265 | WS_TABSTOP |
266 | DEFPUSHBUTTON "OK",IDOK,35,140,50,14 | 266 | DEFPUSHBUTTON "OK",IDOK,35,140,50,14 |
267 | PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 | 267 | PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 |
268 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 | 268 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 |
269 | END | 269 | END |
270 | 270 | ||
271 | IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 300, 201 | 271 | IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 300, 201 |
272 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 272 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
273 | CAPTION "Sounds" | 273 | CAPTION "Sounds" |
274 | FONT 8, "MS Sans Serif" | 274 | FONT 8, "MS Sans Serif" |
275 | BEGIN | 275 | BEGIN |
276 | LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 | 276 | LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 |
277 | COMBOBOX IDC_RING,70,7,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 277 | COMBOBOX IDC_RING,70,7,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
278 | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 278 | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
279 | PUSHBUTTON "browse",IDC_RING_BROWSE,263,7,13,13,BS_ICON | 279 | PUSHBUTTON "browse",IDC_RING_BROWSE,263,7,13,13,BS_ICON |
280 | PUSHBUTTON "play",IDC_RING_PLAY,280,7,13,13,BS_ICON | 280 | PUSHBUTTON "play",IDC_RING_PLAY,280,7,13,13,BS_ICON |
281 | LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 | 281 | LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 |
282 | COMBOBOX IDC_FINISHED,70,22,188,100,CBS_DROPDOWN | | 282 | COMBOBOX IDC_FINISHED,70,22,188,100,CBS_DROPDOWN | |
283 | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 283 | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
284 | PUSHBUTTON "browse",IDC_FINISHED_BROWSE,263,22,13,13,BS_ICON | 284 | PUSHBUTTON "browse",IDC_FINISHED_BROWSE,263,22,13,13,BS_ICON |
285 | PUSHBUTTON "play",IDC_FINISHED_PLAY,280,22,13,13,BS_ICON | 285 | PUSHBUTTON "play",IDC_FINISHED_PLAY,280,22,13,13,BS_ICON |
286 | LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 | 286 | LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 |
287 | COMBOBOX IDC_ABORTED,70,37,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 287 | COMBOBOX IDC_ABORTED,70,37,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
288 | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 288 | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
289 | PUSHBUTTON "browse",IDC_ABORTED_BROWSE,263,37,13,13,BS_ICON | 289 | PUSHBUTTON "browse",IDC_ABORTED_BROWSE,263,37,13,13,BS_ICON |
290 | PUSHBUTTON "play",IDC_ABORTED_PLAY,280,37,13,13,BS_ICON | 290 | PUSHBUTTON "play",IDC_ABORTED_PLAY,280,37,13,13,BS_ICON |
291 | END | 291 | END |
292 | 292 | ||
293 | IDD_PROPS_ACL DIALOG DISCARDABLE 0, 0, 300, 201 | 293 | IDD_PROPS_ACL DIALOG DISCARDABLE 0, 0, 300, 201 |
294 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 294 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
295 | CAPTION "Access Lists" | 295 | CAPTION "Access Lists" |
296 | FONT 8, "MS Sans Serif" | 296 | FONT 8, "MS Sans Serif" |
297 | BEGIN | 297 | BEGIN |
298 | CONTROL "List1",IDC_ACL_LIST,"SysListView32",LVS_REPORT | | 298 | CONTROL "List1",IDC_ACL_LIST,"SysListView32",LVS_REPORT | |
299 | WS_BORDER | WS_TABSTOP,7,7,258,110 | 299 | WS_BORDER | WS_TABSTOP,7,7,258,110 |
300 | PUSHBUTTON "&Up",IDC_ACL_UP,273,7,20,30,BS_ICON | BS_CENTER | | 300 | PUSHBUTTON "&Up",IDC_ACL_UP,273,7,20,30,BS_ICON | BS_CENTER | |
301 | BS_VCENTER | 301 | BS_VCENTER |
302 | PUSHBUTTON "&Down",IDC_ACL_DOWN,273,87,20,30,BS_ICON | BS_CENTER | | 302 | PUSHBUTTON "&Down",IDC_ACL_DOWN,273,87,20,30,BS_ICON | BS_CENTER | |
303 | BS_VCENTER | 303 | BS_VCENTER |
304 | PUSHBUTTON "&Remove",IDC_ACL_REMOVE,273,47,20,30,BS_ICON | | 304 | PUSHBUTTON "&Remove",IDC_ACL_REMOVE,273,47,20,30,BS_ICON | |
305 | BS_CENTER | BS_VCENTER | 305 | BS_CENTER | BS_VCENTER |
306 | LTEXT "If",IDC_STATIC,13,128,8,8 | 306 | LTEXT "If",IDC_STATIC,13,128,8,8 |
307 | COMBOBOX IDC_ACL_XFER,21,125,48,67,CBS_DROPDOWNLIST | WS_VSCROLL | | 307 | COMBOBOX IDC_ACL_XFER,21,125,48,67,CBS_DROPDOWNLIST | WS_VSCROLL | |
308 | WS_TABSTOP | 308 | WS_TABSTOP |
309 | LTEXT "request comes from the address in the network", | 309 | LTEXT "request comes from the address in the network", |
310 | IDC_STATIC,71,128,122,8 | 310 | IDC_STATIC,71,128,122,8 |
311 | EDITTEXT IDC_ACL_ADDR,47,143,80,12,ES_AUTOHSCROLL | 311 | EDITTEXT IDC_ACL_ADDR,47,143,80,12,ES_AUTOHSCROLL |
312 | LTEXT "with netmask",IDC_STATIC,129,145,41,8 | 312 | LTEXT "with netmask",IDC_STATIC,129,145,41,8 |
313 | EDITTEXT IDC_ACL_NETMASK,173,143,80,12,ES_AUTOHSCROLL | 313 | EDITTEXT IDC_ACL_NETMASK,173,143,80,12,ES_AUTOHSCROLL |
314 | LTEXT "then",IDC_STATIC,124,160,15,8 | 314 | LTEXT "then",IDC_STATIC,124,160,15,8 |
315 | COMBOBOX IDC_ACL_RULE,143,158,123,117,CBS_DROPDOWNLIST | | 315 | COMBOBOX IDC_ACL_RULE,143,158,123,117,CBS_DROPDOWNLIST | |
316 | WS_VSCROLL | WS_TABSTOP | 316 | WS_VSCROLL | WS_TABSTOP |
317 | PUSHBUTTON "&Add new rule",IDC_ACL_ADD,7,178,130,16 | 317 | PUSHBUTTON "&Add new rule",IDC_ACL_ADD,7,178,130,16 |
318 | PUSHBUTTON "&Replace rule",IDC_ACL_REPLACE,152,178,130,16 | 318 | PUSHBUTTON "&Replace rule",IDC_ACL_REPLACE,152,178,130,16 |
319 | END | 319 | END |
320 | 320 | ||
321 | 321 | ||
322 | #ifndef _MAC | 322 | #ifndef _MAC |
323 | ///////////////////////////////////////////////////////////////////////////// | 323 | ///////////////////////////////////////////////////////////////////////////// |
324 | // | 324 | // |
325 | // Version | 325 | // Version |
326 | // | 326 | // |
327 | 327 | ||
328 | VS_VERSION_INFO VERSIONINFO | 328 | VS_VERSION_INFO VERSIONINFO |
329 | FILEVERSION 2,7,0,0 | 329 | FILEVERSION 2,7,0,0 |
330 | PRODUCTVERSION 2,7,0,0 | 330 | PRODUCTVERSION 2,7,0,0 |
331 | FILEFLAGSMASK 0x3fL | 331 | FILEFLAGSMASK 0x3fL |
332 | #ifdef _DEBUG | 332 | #ifdef _DEBUG |
333 | FILEFLAGS 0x1L | 333 | FILEFLAGS 0x1L |
334 | #else | 334 | #else |
335 | FILEFLAGS 0x0L | 335 | FILEFLAGS 0x0L |
336 | #endif | 336 | #endif |
337 | FILEOS 0x4L | 337 | FILEOS 0x4L |
338 | FILETYPE 0x1L | 338 | FILETYPE 0x1L |
339 | FILESUBTYPE 0x0L | 339 | FILESUBTYPE 0x0L |
340 | BEGIN | 340 | BEGIN |
341 | BLOCK "StringFileInfo" | 341 | BLOCK "StringFileInfo" |
342 | BEGIN | 342 | BEGIN |
343 | BLOCK "040904b0" | 343 | BLOCK "040904b0" |
344 | BEGIN | 344 | BEGIN |
345 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" | 345 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" |
346 | VALUE "FileDescription", "PumpKIN, tftp client/daemon\0" | 346 | VALUE "FileDescription", "PumpKIN, tftp client/daemon\0" |
347 | VALUE "FileVersion", "2, 7, 0, 0\0" | 347 | VALUE "FileVersion", "2, 7, 0, 0\0" |
348 | VALUE "InternalName", "PUMPKIN\0" | 348 | VALUE "InternalName", "PUMPKIN\0" |
349 | VALUE "LegalCopyright", "Copyright © 1997-2006 Klever Group (http://www.klever.net)\0" | 349 | VALUE "LegalCopyright", "Copyright © 1997-2006 Klever Group (http://www.klever.net)\0" |
350 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" | 350 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" |
351 | VALUE "OriginalFilename", "PUMPKIN.EXE\0" | 351 | VALUE "OriginalFilename", "PUMPKIN.EXE\0" |
352 | VALUE "ProductName", "PumpKIN\0" | 352 | VALUE "ProductName", "PumpKIN\0" |
353 | VALUE "ProductVersion", "2, 7, 0, 0\0" | 353 | VALUE "ProductVersion", "2, 7, 0, 0\0" |
354 | END | 354 | END |
355 | END | 355 | END |
356 | BLOCK "VarFileInfo" | 356 | BLOCK "VarFileInfo" |
357 | BEGIN | 357 | BEGIN |
358 | VALUE "Translation", 0x409, 1200 | 358 | VALUE "Translation", 0x409, 1200 |
359 | END | 359 | END |
360 | END | 360 | END |
361 | 361 | ||
362 | #endif // !_MAC | 362 | #endif // !_MAC |
363 | 363 | ||
364 | 364 | ||
365 | ///////////////////////////////////////////////////////////////////////////// | 365 | ///////////////////////////////////////////////////////////////////////////// |
366 | // | 366 | // |
367 | // DESIGNINFO | 367 | // DESIGNINFO |
368 | // | 368 | // |
369 | 369 | ||
370 | #ifdef APSTUDIO_INVOKED | 370 | #ifdef APSTUDIO_INVOKED |
371 | GUIDELINES DESIGNINFO DISCARDABLE | 371 | GUIDELINES DESIGNINFO DISCARDABLE |
372 | BEGIN | 372 | BEGIN |
373 | IDD_ABOUTBOX, DIALOG | 373 | IDD_ABOUTBOX, DIALOG |
374 | BEGIN | 374 | BEGIN |
375 | LEFTMARGIN, 7 | 375 | LEFTMARGIN, 7 |
376 | RIGHTMARGIN, 210 | 376 | RIGHTMARGIN, 210 |
377 | TOPMARGIN, 7 | 377 | TOPMARGIN, 7 |
378 | BOTTOMMARGIN, 67 | 378 | BOTTOMMARGIN, 67 |
379 | END | 379 | END |
380 | 380 | ||
381 | IDD_PUMPKIN_DIALOG, DIALOG | 381 | IDD_PUMPKIN_DIALOG, DIALOG |
382 | BEGIN | 382 | BEGIN |
383 | LEFTMARGIN, 7 | 383 | LEFTMARGIN, 7 |
384 | RIGHTMARGIN, 355 | 384 | RIGHTMARGIN, 355 |
385 | TOPMARGIN, 7 | 385 | TOPMARGIN, 7 |
386 | BOTTOMMARGIN, 186 | 386 | BOTTOMMARGIN, 186 |
387 | HORZGUIDE, 115 | 387 | HORZGUIDE, 115 |
388 | END | 388 | END |
389 | 389 | ||
390 | IDD_PROPS_SERVER, DIALOG | 390 | IDD_PROPS_SERVER, DIALOG |
391 | BEGIN | 391 | BEGIN |
392 | LEFTMARGIN, 7 | 392 | LEFTMARGIN, 7 |
393 | RIGHTMARGIN, 293 | 393 | RIGHTMARGIN, 293 |
394 | TOPMARGIN, 7 | 394 | TOPMARGIN, 7 |
395 | BOTTOMMARGIN, 194 | 395 | BOTTOMMARGIN, 194 |
396 | END | 396 | END |
397 | 397 | ||
398 | IDD_PROPS_NETWORK, DIALOG | 398 | IDD_PROPS_NETWORK, DIALOG |
399 | BEGIN | 399 | BEGIN |
400 | LEFTMARGIN, 7 | 400 | LEFTMARGIN, 7 |
401 | RIGHTMARGIN, 293 | 401 | RIGHTMARGIN, 293 |
402 | TOPMARGIN, 7 | 402 | TOPMARGIN, 7 |
403 | BOTTOMMARGIN, 194 | 403 | BOTTOMMARGIN, 194 |
404 | END | 404 | END |
405 | 405 | ||
406 | IDD_CONFIRM_RRQ, DIALOG | 406 | IDD_CONFIRM_RRQ, DIALOG |
407 | BEGIN | 407 | BEGIN |
408 | LEFTMARGIN, 7 | 408 | LEFTMARGIN, 7 |
409 | RIGHTMARGIN, 174 | 409 | RIGHTMARGIN, 174 |
410 | TOPMARGIN, 7 | 410 | TOPMARGIN, 7 |
411 | BOTTOMMARGIN, 72 | 411 | BOTTOMMARGIN, 72 |
412 | END | 412 | END |
413 | 413 | ||
414 | IDD_CONFIRM_WRQ, DIALOG | 414 | IDD_CONFIRM_WRQ, DIALOG |
415 | BEGIN | 415 | BEGIN |
416 | LEFTMARGIN, 7 | 416 | LEFTMARGIN, 7 |
417 | RIGHTMARGIN, 194 | 417 | RIGHTMARGIN, 194 |
418 | TOPMARGIN, 7 | 418 | TOPMARGIN, 7 |
419 | BOTTOMMARGIN, 88 | 419 | BOTTOMMARGIN, 88 |
420 | END | 420 | END |
421 | 421 | ||
422 | IDD_REQUEST, DIALOG | 422 | IDD_REQUEST, DIALOG |
423 | BEGIN | 423 | BEGIN |
424 | LEFTMARGIN, 7 | 424 | LEFTMARGIN, 7 |
425 | RIGHTMARGIN, 184 | 425 | RIGHTMARGIN, 184 |
426 | TOPMARGIN, 7 | 426 | TOPMARGIN, 7 |
427 | BOTTOMMARGIN, 154 | 427 | BOTTOMMARGIN, 154 |
428 | END | 428 | END |
429 | 429 | ||
430 | IDD_PROPS_SOUNDS, DIALOG | 430 | IDD_PROPS_SOUNDS, DIALOG |
431 | BEGIN | 431 | BEGIN |
432 | LEFTMARGIN, 7 | 432 | LEFTMARGIN, 7 |
433 | RIGHTMARGIN, 293 | 433 | RIGHTMARGIN, 293 |
434 | TOPMARGIN, 7 | 434 | TOPMARGIN, 7 |
435 | BOTTOMMARGIN, 194 | 435 | BOTTOMMARGIN, 194 |
436 | END | 436 | END |
437 | 437 | ||
438 | IDD_PROPS_ACL, DIALOG | 438 | IDD_PROPS_ACL, DIALOG |
439 | BEGIN | 439 | BEGIN |
440 | LEFTMARGIN, 7 | 440 | LEFTMARGIN, 7 |
441 | RIGHTMARGIN, 293 | 441 | RIGHTMARGIN, 293 |
442 | TOPMARGIN, 7 | 442 | TOPMARGIN, 7 |
443 | BOTTOMMARGIN, 194 | 443 | BOTTOMMARGIN, 194 |
444 | HORZGUIDE, 117 | 444 | HORZGUIDE, 117 |
445 | HORZGUIDE, 125 | 445 | HORZGUIDE, 125 |
446 | END | 446 | END |
447 | END | 447 | END |
448 | #endif // APSTUDIO_INVOKED | 448 | #endif // APSTUDIO_INVOKED |
449 | 449 | ||
450 | 450 | ||
451 | ///////////////////////////////////////////////////////////////////////////// | 451 | ///////////////////////////////////////////////////////////////////////////// |
452 | // | 452 | // |
453 | // Bitmap | 453 | // Bitmap |
454 | // | 454 | // |
455 | 455 | ||
456 | IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" | 456 | IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" |
457 | 457 | ||
458 | ///////////////////////////////////////////////////////////////////////////// | 458 | ///////////////////////////////////////////////////////////////////////////// |
459 | // | 459 | // |
460 | // WAVE | 460 | // WAVE |
461 | // | 461 | // |
462 | 462 | ||
463 | IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav" | 463 | IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav" |
464 | IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav" | 464 | IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav" |
465 | IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav" | 465 | IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav" |
466 | 466 | ||
467 | ///////////////////////////////////////////////////////////////////////////// | 467 | ///////////////////////////////////////////////////////////////////////////// |
468 | // | 468 | // |
469 | // Dialog Info | 469 | // Dialog Info |
470 | // | 470 | // |
471 | 471 | ||
472 | IDD_REQUEST DLGINIT | 472 | IDD_REQUEST DLGINIT |
473 | BEGIN | 473 | BEGIN |
474 | IDC_TYPE, 0x403, 6, 0 | 474 | IDC_TYPE, 0x403, 6, 0 |
475 | 0x636f, 0x6574, 0x0074, | 475 | 0x636f, 0x6574, 0x0074, |
476 | IDC_TYPE, 0x403, 9, 0 | 476 | IDC_TYPE, 0x403, 9, 0 |
477 | 0x656e, 0x6174, 0x6373, 0x6969, "\000" | 477 | 0x656e, 0x6174, 0x6373, 0x6969, "\000" |
478 | IDC_BSIZE, 0x403, 4, 0 | 478 | IDC_BSIZE, 0x403, 4, 0 |
479 | 0x3135, 0x0032, | 479 | 0x3135, 0x0032, |
480 | IDC_BSIZE, 0x403, 5, 0 | 480 | IDC_BSIZE, 0x403, 5, 0 |
481 | 0x3031, 0x3432, "\000" | 481 | 0x3031, 0x3432, "\000" |
482 | IDC_BSIZE, 0x403, 5, 0 | 482 | IDC_BSIZE, 0x403, 5, 0 |
483 | 0x3032, 0x3834, "\000" | 483 | 0x3032, 0x3834, "\000" |
484 | IDC_BSIZE, 0x403, 5, 0 | 484 | IDC_BSIZE, 0x403, 5, 0 |
485 | 0x3034, 0x3639, "\000" | 485 | 0x3034, 0x3639, "\000" |
486 | IDC_BSIZE, 0x403, 5, 0 | 486 | IDC_BSIZE, 0x403, 5, 0 |
487 | 0x3138, 0x3239, "\000" | 487 | 0x3138, 0x3239, "\000" |
488 | 0 | 488 | 0 |
489 | END | 489 | END |
490 | 490 | ||
491 | IDD_PROPS_ACL DLGINIT | 491 | IDD_PROPS_ACL DLGINIT |
492 | BEGIN | 492 | BEGIN |
493 | IDC_ACL_XFER, 0x403, 5, 0 | 493 | IDC_ACL_XFER, 0x403, 5, 0 |
494 | 0x6572, 0x6461, "\000" | 494 | 0x6572, 0x6461, "\000" |
495 | IDC_ACL_XFER, 0x403, 6, 0 | 495 | IDC_ACL_XFER, 0x403, 6, 0 |
496 | 0x7277, 0x7469, 0x0065, | 496 | 0x7277, 0x7469, 0x0065, |
497 | IDC_ACL_RULE, 0x403, 12, 0 | 497 | IDC_ACL_RULE, 0x403, 12, 0 |
498 | 0x6361, 0x6563, 0x7470, 0x6620, 0x6c69, 0x0065, | 498 | 0x6361, 0x6563, 0x7470, 0x6620, 0x6c69, 0x0065, |
499 | IDC_ACL_RULE, 0x403, 33, 0 | 499 | IDC_ACL_RULE, 0x403, 33, 0 |
500 | 0x6361, 0x6563, 0x7470, 0x6120, 0x646e, 0x7220, 0x6e65, 0x6d61, 0x2065, | 500 | 0x6361, 0x6563, 0x7470, 0x6120, 0x646e, 0x7220, 0x6e65, 0x6d61, 0x2065, |
501 | 0x6669, 0x6620, 0x6c69, 0x2065, 0x7865, 0x7369, 0x7374, "\000" | 501 | 0x6669, 0x6620, 0x6c69, 0x2065, 0x7865, 0x7369, 0x7374, "\000" |
502 | IDC_ACL_RULE, 0x403, 12, 0 | 502 | IDC_ACL_RULE, 0x403, 12, 0 |
503 | 0x6572, 0x656a, 0x7463, 0x6620, 0x6c69, 0x0065, | 503 | 0x6572, 0x656a, 0x7463, 0x6620, 0x6c69, 0x0065, |
504 | IDC_ACL_RULE, 0x403, 31, 0 | 504 | IDC_ACL_RULE, 0x403, 31, 0 |
505 | 0x6166, 0x6c6c, 0x6162, 0x6b63, 0x7420, 0x206f, 0x6874, 0x2065, 0x6c67, | 505 | 0x6166, 0x6c6c, 0x6162, 0x6b63, 0x7420, 0x206f, 0x6874, 0x2065, 0x6c67, |
506 | 0x626f, 0x6c61, 0x7320, 0x7465, 0x6974, 0x676e, "\000" | 506 | 0x626f, 0x6c61, 0x7320, 0x7465, 0x6974, 0x676e, "\000" |
507 | 0 | 507 | 0 |
508 | END | 508 | END |
509 | 509 | ||
510 | 510 | ||
511 | ///////////////////////////////////////////////////////////////////////////// | 511 | ///////////////////////////////////////////////////////////////////////////// |
512 | // | 512 | // |
513 | // Menu | 513 | // Menu |
514 | // | 514 | // |
515 | 515 | ||
516 | IDM_POPUPS MENU DISCARDABLE | 516 | IDM_POPUPS MENU DISCARDABLE |
517 | BEGIN | 517 | BEGIN |
518 | POPUP "&Tray" | 518 | POPUP "&Tray" |
519 | BEGIN | 519 | BEGIN |
520 | MENUITEM "&Send File", ID_TRAY_SENDFILE | 520 | MENUITEM "&Send File", ID_TRAY_SENDFILE |
521 | MENUITEM "F&etch file", ID_TRAY_FETCHFILE | 521 | MENUITEM "F&etch file", ID_TRAY_FETCHFILE |
522 | MENUITEM "&Options", ID_TRAY_OPTIONS | 522 | MENUITEM "&Options", ID_TRAY_OPTIONS |
523 | MENUITEM "&Listen to requests", ID_TRAY_LISTEN | 523 | MENUITEM "&Listen to requests", ID_TRAY_LISTEN |
524 | MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW | 524 | MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW |
525 | MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER | 525 | MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER |
526 | MENUITEM SEPARATOR | 526 | MENUITEM SEPARATOR |
527 | MENUITEM "&Help Topics", ID_TRAY_HELP | 527 | MENUITEM "&Help Topics", ID_TRAY_HELP |
528 | MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN | 528 | MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN |
529 | MENUITEM SEPARATOR | 529 | MENUITEM SEPARATOR |
530 | MENUITEM "E&xit", ID_TRAY_EXIT | 530 | MENUITEM "E&xit", ID_TRAY_EXIT |
531 | END | 531 | END |
532 | END | 532 | END |
533 | 533 | ||
534 | 534 | ||
535 | ///////////////////////////////////////////////////////////////////////////// | 535 | ///////////////////////////////////////////////////////////////////////////// |
536 | // | 536 | // |
537 | // String Table | 537 | // String Table |
538 | // | 538 | // |
539 | 539 | ||
540 | STRINGTABLE DISCARDABLE | 540 | STRINGTABLE DISCARDABLE |
541 | BEGIN | 541 | BEGIN |
542 | IDS_ABOUTBOX "&About PumpKIN..." | 542 | IDS_ABOUTBOX "&About PumpKIN..." |
543 | IDS_FMT_BYTES "%lu" | 543 | IDS_FMT_BYTES "%lu" |
544 | IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." | 544 | IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." |
545 | IDS_TFTP_ERROR_ACCESS "Access violation" | 545 | IDS_TFTP_ERROR_ACCESS "Access violation" |
546 | IDS_TFTP_ERROR_NOTFOUND "File not found" | 546 | IDS_TFTP_ERROR_NOTFOUND "File not found" |
547 | IDS_TFTP_ERROR_DIRFULL "Directory is full" | 547 | IDS_TFTP_ERROR_DIRFULL "Directory is full" |
548 | IDS_TFTP_ERROR_SHARING "Sharing violation" | 548 | IDS_TFTP_ERROR_SHARING "Sharing violation" |
549 | IDS_TFTP_ERROR_DISKFULL "Disk full" | 549 | IDS_TFTP_ERROR_DISKFULL "Disk full" |
550 | IDS_TFTP_ERROR_UNDEFINED "Undefined error" | 550 | IDS_TFTP_ERROR_UNDEFINED "Undefined error" |
551 | IDS_LOG_START "PumpKIN started" | 551 | IDS_LOG_START "PumpKIN started" |
552 | IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections" | 552 | IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections" |
553 | END | 553 | END |
554 | 554 | ||
555 | STRINGTABLE DISCARDABLE | 555 | STRINGTABLE DISCARDABLE |
556 | BEGIN | 556 | BEGIN |
557 | IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection" | 557 | IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection" |
558 | IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s" | 558 | IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s" |
559 | IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request" | 559 | IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request" |
560 | IDS_LOG_XFERUDPSEND "UDP packet send failed" | 560 | IDS_LOG_XFERUDPSEND "UDP packet send failed" |
561 | IDS_LOG_XFERRECEIVE "Error on xfer socket" | 561 | IDS_LOG_XFERRECEIVE "Error on xfer socket" |
562 | IDS_LOG_XFERSEND "Error on xfer socket" | 562 | IDS_LOG_XFERSEND "Error on xfer socket" |
563 | IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed" | 563 | IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed" |
564 | IDS_LOG_XFERSOURCETID "Packet from unexpected source" | 564 | IDS_LOG_XFERSOURCETID "Packet from unexpected source" |
565 | IDS_LOG_SENTTFTPERROR ":%u: %s" | 565 | IDS_LOG_SENTTFTPERROR ":%u: %s" |
566 | IDS_LOG_GOTTFTPERROR "TFTP:%u: %s" | 566 | IDS_LOG_GOTTFTPERROR "TFTP:%u: %s" |
567 | IDS_LOG_XFEROPCODE "Invalid opcode (%u) during transfer received" | 567 | IDS_LOG_XFEROPCODE "Invalid opcode (%u) during transfer received" |
568 | IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed" | 568 | IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed" |
569 | IDS_TITLE_OPTIONS "Options" | 569 | IDS_TITLE_OPTIONS "Options" |
570 | IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s" | 570 | IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s" |
571 | IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file" | 571 | IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file" |
572 | IDS_RENAME_TITLE "Save As" | 572 | IDS_RENAME_TITLE "Save As" |
573 | END | 573 | END |
574 | 574 | ||
575 | STRINGTABLE DISCARDABLE | 575 | STRINGTABLE DISCARDABLE |
576 | BEGIN | 576 | BEGIN |
577 | IDS_LOG_TIMEDOUT "Transmission of '%s' is timed out" | 577 | IDS_LOG_TIMEDOUT "Transmission of '%s' is timed out" |
578 | IDS_CONFIRMEXIT_TITLE "Exit" | 578 | IDS_CONFIRMEXIT_TITLE "Exit" |
579 | IDS_CONFIRMEXIT_TEXT "File transmission is currently in progress. Are you sure you want to exit?" | 579 | IDS_CONFIRMEXIT_TEXT "File transmission is currently in progress. Are you sure you want to exit?" |
580 | IDS_LOG_XFERWRQFINISHED "Transfer of '%s' has successfully completed" | 580 | IDS_LOG_XFERWRQFINISHED "Transfer of '%s' has successfully completed" |
581 | IDS_LOG_XFERABORTED "Transfer of '%s' was aborted" | 581 | IDS_LOG_XFERABORTED "Transfer of '%s' was aborted" |
582 | IDS_TITLE_PUTREQUEST "Send file" | 582 | IDS_TITLE_PUTREQUEST "Send file" |
583 | IDS_TITLE_GETREQUEST "Fetch file" | 583 | IDS_TITLE_GETREQUEST "Fetch file" |
584 | IDS_WTALKHEADING "Talk with " | 584 | IDS_WTALKHEADING "Talk with " |
585 | IDS_TITLE_BROWSEFILE "Browse" | 585 | IDS_TITLE_BROWSEFILE "Browse" |
586 | IDS_LOG_RESOLVEFAILED "Failed to resolve host address for '%s'" | 586 | IDS_LOG_RESOLVEFAILED "Failed to resolve host address for '%s'" |
587 | IDS_LOG_FAILEDLOCALFILE "Failed to open local file '%s'" | 587 | IDS_LOG_FAILEDLOCALFILE "Failed to open local file '%s'" |
588 | IDS_LOG_FAILEDTOOPEN "Failed to open '%s'" | 588 | IDS_LOG_FAILEDTOOPEN "Failed to open '%s'" |
589 | IDS_OTALXHEADING "Open Talks: talking to " | 589 | IDS_OTALXHEADING "Open Talks: talking to " |
590 | IDS_REGISTRYKEY "Klever Group" | 590 | IDS_REGISTRYKEY "Klever Group" |
591 | IDS_KLEVERNET_URL "http://www.klever.net/" | 591 | IDS_KLEVERNET_URL "http://www.klever.net/" |
592 | IDS_LOGTIMEFORMAT "%H:%M:%S %B %d" | 592 | IDS_LOGTIMEFORMAT "%H:%M:%S %B %d" |
593 | END | 593 | END |
594 | 594 | ||
595 | STRINGTABLE DISCARDABLE | 595 | STRINGTABLE DISCARDABLE |
596 | BEGIN | 596 | BEGIN |
597 | ID_TRAY_HELP "Read the help on PumpKIN" | 597 | ID_TRAY_HELP "Read the help on PumpKIN" |
598 | ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator" | 598 | ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator" |
599 | ID_TRAY_EXIT "Close PumpKIN" | 599 | ID_TRAY_EXIT "Close PumpKIN" |
600 | ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete" | 600 | ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete" |
601 | ID_TRAY_FETCHFILE "Fetch file from remote computer" | 601 | ID_TRAY_FETCHFILE "Fetch file from remote computer" |
602 | ID_TRAY_OPTIONS "Set PumpKIN options" | 602 | ID_TRAY_OPTIONS "Set PumpKIN options" |
603 | ID_TRAY_SHOWPUMPKINWINDOW "Show main window" | 603 | ID_TRAY_SHOWPUMPKINWINDOW "Show main window" |
604 | ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder" | 604 | ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder" |
605 | ID_TRAY_LISTEN "Listen for incoming requests" | 605 | ID_TRAY_LISTEN "Listen for incoming requests" |
606 | END | 606 | END |
607 | 607 | ||
608 | STRINGTABLE DISCARDABLE | 608 | STRINGTABLE DISCARDABLE |
609 | BEGIN | 609 | BEGIN |
610 | IDC_CONNECTIONS "Active transfers" | 610 | IDC_CONNECTIONS "Active transfers" |
611 | IDC_LOG "PumpKIN Activity Log" | 611 | IDC_LOG "PumpKIN Activity Log" |
612 | IDC_GET "Fetch file from remote server" | 612 | IDC_GET "Fetch file from remote server" |
613 | IDC_PUT "Send file over the net" | 613 | IDC_PUT "Send file over the net" |
614 | IDC_ABORT "Abort transfer currently in progress" | 614 | IDC_ABORT "Abort transfer currently in progress" |
615 | IDC_EXIT "Close PumpKIN" | 615 | IDC_EXIT "Close PumpKIN" |
616 | END | 616 | END |
617 | 617 | ||
618 | STRINGTABLE DISCARDABLE | 618 | STRINGTABLE DISCARDABLE |
619 | BEGIN | 619 | BEGIN |
620 | IDC_OPTIONS "Set PumpKIN options" | 620 | IDC_OPTIONS "Set PumpKIN options" |
621 | IDC_REFRESH "Refresh talks list" | 621 | IDC_REFRESH "Refresh talks list" |
622 | IDC_BROWSE "Browse" | 622 | IDC_BROWSE "Browse" |
623 | END | 623 | END |
624 | 624 | ||
625 | STRINGTABLE DISCARDABLE | 625 | STRINGTABLE DISCARDABLE |
626 | BEGIN | 626 | BEGIN |
627 | ID_HELP "Read help on PumpKIN" | 627 | ID_HELP "Read help on PumpKIN" |
628 | END | 628 | END |
629 | 629 | ||
630 | STRINGTABLE DISCARDABLE | 630 | STRINGTABLE DISCARDABLE |
631 | BEGIN | 631 | BEGIN |
632 | IDS_DROPFILES_TITLE "Drop Files" | 632 | IDS_DROPFILES_TITLE "Drop Files" |
633 | IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted" | 633 | IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted" |
634 | IDS_LOG_REQUESTING "Requesting '%s' from '%s'" | 634 | IDS_LOG_REQUESTING "Requesting '%s' from '%s'" |
635 | IDS_LOG_SENDING "Sending '%s' to '%s'" | 635 | IDS_LOG_SENDING "Sending '%s' to '%s'" |
636 | IDS_WTALKAT "@" | 636 | IDS_WTALKAT "@" |
637 | IDS_OTALXAT " at " | 637 | IDS_OTALXAT " at " |
638 | IDS_TFTP_ERROR_TSIZE "Invalid transfer size" | 638 | IDS_TFTP_ERROR_TSIZE "Invalid transfer size" |
639 | IDS_TFTP_ERROR_BSIZE "Invalid block size" | 639 | IDS_TFTP_ERROR_BSIZE "Invalid block size" |
640 | IDS_TFTP_ERROR_TOUT "Invalid timeout" | 640 | IDS_TFTP_ERROR_TOUT "Invalid timeout" |
641 | IDS_SELECT_TFTPROOT "Select TFTP filesystem root.." | 641 | IDS_SELECT_TFTPROOT "Select TFTP filesystem root.." |
642 | IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||" | 642 | IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||" |
643 | IDS_TITLE_WAV "Select sound.." | 643 | IDS_TITLE_WAV "Select sound.." |
644 | IDS_BOX_CANTBIND "Failed to create listening socket. The port may be in use by another application." | 644 | IDS_BOX_CANTBIND "Failed to create listening socket. The port may be in use by another application." |
645 | IDS_NO_XFER_OP "No request type specified." | 645 | IDS_NO_XFER_OP "No request type specified." |
646 | IDS_INVALID_IP "Invalid IP address." | 646 | IDS_INVALID_IP "Invalid IP address." |
647 | IDS_INVALID_NETMASK "Invalid netmask." | 647 | IDS_INVALID_NETMASK "Invalid netmask." |
648 | END | 648 | END |
649 | 649 | ||
650 | STRINGTABLE DISCARDABLE | 650 | STRINGTABLE DISCARDABLE |
651 | BEGIN | 651 | BEGIN |
652 | AFX_IDS_APP_TITLE "PUMPKIN" | 652 | AFX_IDS_APP_TITLE "PUMPKIN" |
653 | END | 653 | END |
654 | 654 | ||
655 | STRINGTABLE DISCARDABLE | 655 | STRINGTABLE DISCARDABLE |
656 | BEGIN | 656 | BEGIN |
657 | IDS_INVALID_RULE "Invalid access rule." | 657 | IDS_INVALID_RULE "Invalid access rule." |
658 | IDS_LOG_LOGERROR "Error logging to '%s'" | 658 | IDS_LOG_LOGERROR "Error logging to '%s'" |
659 | END | 659 | END |
660 | 660 | ||
661 | #endif // English (U.S.) resources | 661 | #endif // English (U.S.) resources |
662 | ///////////////////////////////////////////////////////////////////////////// | 662 | ///////////////////////////////////////////////////////////////////////////// |
663 | 663 | ||
664 | 664 | ||
665 | 665 | ||
666 | #ifndef APSTUDIO_INVOKED | 666 | #ifndef APSTUDIO_INVOKED |
667 | ///////////////////////////////////////////////////////////////////////////// | 667 | ///////////////////////////////////////////////////////////////////////////// |
668 | // | 668 | // |
669 | // Generated from the TEXTINCLUDE 3 resource. | 669 | // Generated from the TEXTINCLUDE 3 resource. |
670 | // | 670 | // |
671 | #define _AFX_NO_SPLITTER_RESOURCES | 671 | #define _AFX_NO_SPLITTER_RESOURCES |
672 | #define _AFX_NO_OLE_RESOURCES | 672 | #define _AFX_NO_OLE_RESOURCES |
673 | #define _AFX_NO_TRACKER_RESOURCES | 673 | #define _AFX_NO_TRACKER_RESOURCES |
674 | #define _AFX_NO_PROPERTY_RESOURCES | 674 | #define _AFX_NO_PROPERTY_RESOURCES |
675 | 675 | ||
676 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) | 676 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) |
677 | #ifdef _WIN32 | 677 | #ifdef _WIN32 |
678 | LANGUAGE 9, 1 | 678 | LANGUAGE 9, 1 |
679 | #pragma code_page(1252) | 679 | #pragma code_page(1252) |
680 | #endif | 680 | #endif |
681 | #include "res\PumpKIN.rc2" // non-Microsoft Visual C++ edited resources | 681 | #include "res\PumpKIN.rc2" // non-Microsoft Visual C++ edited resources |
682 | #include "afxres.rc" // Standard components | 682 | #include "afxres.rc" // Standard components |
683 | #endif | 683 | #endif |
684 | ///////////////////////////////////////////////////////////////////////////// | 684 | ///////////////////////////////////////////////////////////////////////////// |
685 | #endif // not APSTUDIO_INVOKED | 685 | #endif // not APSTUDIO_INVOKED |
686 | 686 | ||