Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6725 | siemargl | 1 | /* |
2 | Copyright (c) 1990-2009 Info-ZIP. All rights reserved. |
||
3 | |||
4 | See the accompanying file LICENSE, version 2009-Jan-02 or later |
||
5 | (the contents of which are also included in unzip.h) for terms of use. |
||
6 | If, for some reason, all these files are missing, the Info-ZIP license |
||
7 | also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html |
||
8 | */ |
||
9 | |||
10 | /* Tell Microsoft Visual C++ 2005 (and newer) to leave us alone |
||
11 | * and let us use standard C functions the way we're supposed to. |
||
12 | * (These preprocessor symbols must appear before the first system |
||
13 | * header include.) |
||
14 | */ |
||
15 | #if defined(_MSC_VER) && (_MSC_VER >= 1400) |
||
16 | # ifndef _CRT_SECURE_NO_WARNINGS |
||
17 | # define _CRT_SECURE_NO_WARNINGS |
||
18 | # endif |
||
19 | #endif |
||
20 | |||
21 | #include |
||
22 | #include |
||
23 | #ifdef WIN32 |
||
24 | # if defined(__LCC__) |
||
25 | # include |
||
26 | # include |
||
27 | # include |
||
28 | # endif |
||
29 | #include |
||
30 | #else |
||
31 | #include |
||
32 | #include |
||
33 | #include |
||
34 | #include |
||
35 | #include |
||
36 | #include |
||
37 | #include |
||
38 | #endif |
||
39 | #include "dialog.h" |
||
40 | #ifndef UzpMatch |
||
41 | #define UzpMatch match |
||
42 | #endif |
||
43 | #include "../structs.h" |
||
44 | #include "../decs.h" |
||
45 | |||
46 | LPUSERFUNCTIONS lpUserFunctions; |
||
47 | HANDLE hUF = (HANDLE)NULL; |
||
48 | LPDCL lpDCL = NULL; |
||
49 | HANDLE hZUF = (HANDLE)NULL; |
||
50 | HANDLE hDCL = (HANDLE)NULL; |
||
51 | |||
52 | BOOL fDoAll = FALSE; |
||
53 | |||
54 | char ** argv; |
||
55 | |||
56 | HINSTANCE hInst; |
||
57 | HWND hWnd; |
||
58 | |||
59 | #ifndef TCHAR |
||
60 | #define TCHAR char |
||
61 | #endif |
||
62 | |||
63 | #ifndef _MAX_PATH |
||
64 | #define _MAX_PATH 260 |
||
65 | #endif |
||
66 | |||
67 | int WINAPI password(LPSTR p, int n, LPCSTR m, LPCSTR name); |
||
68 | int WINAPI DisplayBuf(TCHAR far *buf, unsigned long size); |
||
69 | int WINAPI GetReplaceDlgRetVal(LPSTR filename, unsigned fnbufsiz); |
||
70 | #ifdef Z_UINT8_DEFINED |
||
71 | void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csiz, |
||
72 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
73 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
74 | TCHAR fCrypt); |
||
75 | #else |
||
76 | void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csiz, |
||
77 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
78 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
79 | TCHAR fCrypt); |
||
80 | #endif |
||
81 | void WINAPI ReceiveDllMessage_NO_INT64(unsigned long ucsize_low, |
||
82 | unsigned long ucsize_high, unsigned long csiz_low, unsigned long csiz_high, |
||
83 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
84 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
85 | TCHAR fCrypt); |
||
86 | |||
87 | char szAppName[_MAX_PATH]; |
||
88 | char szTarget[_MAX_PATH]; |
||
89 | char szThisApp[_MAX_PATH]; |
||
90 | int iReturn; |
||
91 | |||
92 | DLGPROC fpProc; |
||
93 | |||
94 | #ifndef MAX_PATH |
||
95 | #define MAX_PATH _MAX_PATH // maximum path =length |
||
96 | #endif |
||
97 | #define TRUE 1 // true value |
||
98 | #define FALSE 0 // false value |
||
99 | |||
100 | TCHAR zfn[MAX_PATH], // zip filename and path |
||
101 | szHomeDir[MAX_PATH]; // Original directory |
||
102 | |||
103 | /**************************************************************************** |
||
104 | |||
105 | FUNCTION: Replace(HWND, WORD, WPARAM, LPARAM) |
||
106 | |||
107 | PURPOSE: Processes messages for "Replace" dialog box |
||
108 | |||
109 | MESSAGES: |
||
110 | |||
111 | WM_INITDIALOG - initialize dialog box |
||
112 | WM_COMMAND - Input received |
||
113 | |||
114 | ****************************************************************************/ |
||
115 | |||
116 | BOOL WINAPI ReplaceProc(HWND hReplaceDlg, WORD wMessage, |
||
117 | WPARAM wParam, LPARAM lParam) |
||
118 | { |
||
119 | static char __far *lpsz; |
||
120 | TCHAR szTemp[MAX_PATH]; |
||
121 | |||
122 | switch (wMessage) |
||
123 | { |
||
124 | case WM_INITDIALOG: |
||
125 | lpsz = (char __far *)lParam; |
||
126 | wsprintf(szTemp, "Replace %s ?", (LPSTR)lpsz); |
||
127 | SetDlgItemText(hReplaceDlg, IDM_REPLACE_TEXT, szTemp); |
||
128 | return TRUE; |
||
129 | |||
130 | case WM_COMMAND: |
||
131 | switch (LOWORD(wParam)) |
||
132 | { |
||
133 | case IDCANCEL: /* ESC key */ |
||
134 | case IDOK: /* Enter key */ |
||
135 | EndDialog(hReplaceDlg, IDM_REPLACE_NO); |
||
136 | break; |
||
137 | case IDM_REPLACE_ALL: |
||
138 | fDoAll = TRUE; |
||
139 | case IDM_REPLACE_NONE: |
||
140 | case IDM_REPLACE_YES: |
||
141 | case IDM_REPLACE_NO: |
||
142 | EndDialog(hReplaceDlg, wParam); |
||
143 | break; |
||
144 | } |
||
145 | return TRUE; |
||
146 | } |
||
147 | return FALSE; |
||
148 | } |
||
149 | |||
150 | /**************************************************************************** |
||
151 | |||
152 | FUNCTION: GetDirProc(HWND, unsigned, WPARAM, LPARAM) |
||
153 | |||
154 | PURPOSE: Processes messages for "Set Reference Dir Procedure for |
||
155 | Update Archive" dialog box |
||
156 | |||
157 | MESSAGES: |
||
158 | |||
159 | WM_INITDIALOG - initialize dialog box |
||
160 | WM_COMMAND - Input received |
||
161 | |||
162 | ****************************************************************************/ |
||
163 | #ifdef WIN32 |
||
164 | BOOL WINAPI |
||
165 | GetDirProc(HWND hDlg, WORD wMessage, WPARAM wParam, LPARAM lParam) |
||
166 | { |
||
167 | switch (wMessage) { |
||
168 | case WM_INITDIALOG: |
||
169 | /* |
||
170 | Common control identifiers for GetOpenFileName and GetSaveFileName |
||
171 | Control identifier Control Description |
||
172 | cmb2 Drop-down combo box that displays the current drive |
||
173 | or folder, and that allows the user to select a |
||
174 | drive or folder to open |
||
175 | stc4 Label for the cmb2 combo box |
||
176 | lst1 List box that displays the contents of the current drive or folder |
||
177 | stc1 Label for the lst1 list box |
||
178 | edt1 Edit control that displays the name of the current file, or in which the user can type the name of the file to open |
||
179 | stc3 Label for the edt1 edit control |
||
180 | cmb1 Drop-down combo box that displays the list of file type filters |
||
181 | stc2 Label for the cmb1 combo box |
||
182 | chx1 The read-only check box |
||
183 | IDOK The OK command button (push button) |
||
184 | IDCANCEL The Cancel command button (push button) |
||
185 | pshHelp The Help command button (push button) |
||
186 | |||
187 | */ |
||
188 | CommDlg_OpenSave_HideControl(GetParent(hDlg), cmb1); |
||
189 | CommDlg_OpenSave_HideControl(GetParent(hDlg), stc2); |
||
190 | CommDlg_OpenSave_HideControl(GetParent(hDlg), edt1); |
||
191 | CommDlg_OpenSave_HideControl(GetParent(hDlg), stc3); |
||
192 | CommDlg_OpenSave_SetControlText(GetParent(hDlg), |
||
193 | IDOK, "Set"); |
||
194 | break; |
||
195 | default: |
||
196 | break; |
||
197 | } |
||
198 | return DefWindowProc(hDlg, wMessage, wParam, lParam); |
||
199 | } |
||
200 | #else |
||
201 | |||
202 | #ifdef __BORLANDC__ |
||
203 | #pragma argsused |
||
204 | #endif |
||
205 | |||
206 | BOOL WINAPI |
||
207 | GetDirProc(HWND hwndDlg, WORD wMessage, WPARAM wParam, LPARAM lParam) |
||
208 | { |
||
209 | HWND hTemp; |
||
210 | |||
211 | switch (wMessage) { |
||
212 | case WM_INITDIALOG: |
||
213 | hTemp = GetDlgItem(hwndDlg, lst1); |
||
214 | EnableWindow(hTemp, FALSE); |
||
215 | ShowWindow(hTemp, SW_HIDE); |
||
216 | hTemp = GetDlgItem(hwndDlg, edt1); |
||
217 | EnableWindow(hTemp, FALSE); |
||
218 | ShowWindow(hTemp, SW_HIDE); |
||
219 | hTemp = GetDlgItem(hwndDlg, stc2); |
||
220 | EnableWindow(hTemp, FALSE); |
||
221 | ShowWindow(hTemp, SW_HIDE); |
||
222 | hTemp = GetDlgItem(hwndDlg, stc3); |
||
223 | EnableWindow(hTemp, FALSE); |
||
224 | ShowWindow(hTemp, SW_HIDE); |
||
225 | hTemp = GetDlgItem(hwndDlg, cmb1); |
||
226 | EnableWindow(hTemp, FALSE); |
||
227 | ShowWindow(hTemp, SW_HIDE); |
||
228 | |||
229 | break; |
||
230 | case WM_COMMAND: |
||
231 | switch (LOWORD(wParam)) { |
||
232 | case IDCANCEL: |
||
233 | EndDialog(hwndDlg, FALSE); |
||
234 | break; |
||
235 | case IDOK: |
||
236 | getcwd(szTarget, MAX_PATH); |
||
237 | EndDialog(hwndDlg, TRUE); |
||
238 | break; |
||
239 | } |
||
240 | default: |
||
241 | break; |
||
242 | } |
||
243 | return FALSE; |
||
244 | } |
||
245 | #endif /* !WIN32 */ |
||
246 | |||
247 | #ifdef __BORLANDC__ |
||
248 | #pragma argsused |
||
249 | #endif |
||
250 | |||
251 | BOOL FAR PASCAL InitDialogProc (HWND hDlg, WORD wMsg, WORD wParam, LONG lParam) { |
||
252 | BOOL fProcessed = TRUE; |
||
253 | TCHAR szMessage[256]; |
||
254 | |||
255 | RECT rc; |
||
256 | |||
257 | switch (wMsg) { |
||
258 | case WM_INITDIALOG: |
||
259 | |||
260 | hWnd = hDlg; |
||
261 | SetWindowText(hDlg,(LPSTR) szAppName); |
||
262 | SetDlgItemText(hDlg,ID_TARGET,(LPSTR)szTarget); |
||
263 | |||
264 | #ifdef WIN32 |
||
265 | GetCurrentDirectory(MAX_PATH, szHomeDir); |
||
266 | SetCurrentDirectory(szTarget); |
||
267 | #else |
||
268 | getcwd(szHomeDir, MAX_PATH); |
||
269 | chdir(szTarget); |
||
270 | setdisk(toupper(szTarget[0]) - 'A'); |
||
271 | #endif |
||
272 | GetWindowRect(hDlg, &rc); |
||
273 | SetWindowPos(hDlg, NULL, |
||
274 | (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2, |
||
275 | (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 3, |
||
276 | 0, 0, SWP_NOSIZE | SWP_NOZORDER); |
||
277 | |||
278 | break; |
||
279 | |||
280 | case WM_COMMAND: |
||
281 | switch (wParam) { |
||
282 | |||
283 | case ID_BROWSE : |
||
284 | { |
||
285 | #ifndef WIN32 |
||
286 | FARPROC lpGetDirProc; |
||
287 | #endif |
||
288 | char szTemp[MAX_PATH]="mike_~@~*"; |
||
289 | OPENFILENAME ofn; |
||
290 | |||
291 | memset(&ofn, '\0', sizeof(OPENFILENAME)); /* init struct */ |
||
292 | ofn.lStructSize = sizeof(OPENFILENAME); |
||
293 | ofn.hwndOwner = hWnd; |
||
294 | ofn.hInstance = hInst; |
||
295 | ofn.lpstrFilter = NULL; |
||
296 | ofn.nFilterIndex = 1; |
||
297 | |||
298 | ofn.lpstrFile = szTemp; |
||
299 | ofn.nMaxFile = MAX_PATH; |
||
300 | ofn.lpstrFileTitle = NULL; |
||
301 | ofn.nMaxFileTitle = MAX_PATH; /* ignored ! */ |
||
302 | ofn.lpstrTitle = (LPSTR)"Set Extraction Directory"; |
||
303 | ofn.lpstrInitialDir = NULL; |
||
304 | ofn.Flags = OFN_ENABLEHOOK | |
||
305 | #ifdef WIN32 |
||
306 | OFN_EXPLORER| |
||
307 | #endif |
||
308 | OFN_HIDEREADONLY|OFN_NOVALIDATE; |
||
309 | #ifndef WIN32 |
||
310 | lpGetDirProc = MakeProcInstance((FARPROC)GetDirProc, hInst); |
||
311 | #ifndef MSC |
||
312 | (UINT CALLBACK *)ofn.lpfnHook = (UINT CALLBACK *)lpGetDirProc; |
||
313 | #else |
||
314 | ofn.lpfnHook = lpGetDirProc; |
||
315 | #endif |
||
316 | #else |
||
317 | ofn.lpfnHook = (LPOFNHOOKPROC)GetDirProc; |
||
318 | #endif |
||
319 | ofn.lpTemplateName = "GETDIR"; /* see getfiles.dlg */ |
||
320 | if (!GetOpenFileName(&ofn)) |
||
321 | { |
||
322 | break; |
||
323 | } |
||
324 | |||
325 | ofn.lpstrFile[ofn.nFileOffset-1] = '\0'; |
||
326 | #ifdef WIN32 |
||
327 | SetCurrentDirectory(ofn.lpstrFile); |
||
328 | #else |
||
329 | getcwd(szTemp, MAX_PATH); |
||
330 | chdir(ofn.lpstrFile); |
||
331 | setdisk(toupper(ofn.lpstrFile[0]) - 'A'); |
||
332 | #endif |
||
333 | lstrcpy(szTarget,ofn.lpstrFile); |
||
334 | SetDlgItemText(hDlg,ID_TARGET,(LPSTR)szTarget); |
||
335 | } |
||
336 | break; |
||
337 | |||
338 | case IDOK: |
||
339 | #ifdef WIN32 |
||
340 | GetCurrentDirectory(_MAX_PATH,szTarget); |
||
341 | #else |
||
342 | getcwd(szTarget, _MAX_PATH); |
||
343 | #endif |
||
344 | |||
345 | lpDCL->ncflag = 0; |
||
346 | lpDCL->fQuiet = 0; // If not zero, no status messages will come through |
||
347 | lpDCL->ntflag = 0; |
||
348 | lpDCL->nvflag = 0; |
||
349 | lpDCL->nzflag = 0; |
||
350 | lpDCL->ndflag = 1; |
||
351 | lpDCL->naflag = 0; |
||
352 | lpDCL->nfflag = 0; |
||
353 | lpDCL->noflag = 0; |
||
354 | lpDCL->PromptToOverwrite = 1; |
||
355 | lpDCL->ExtractOnlyNewer = 0; |
||
356 | lpDCL->lpszZipFN = zfn; |
||
357 | lpDCL->lpszExtractDir = NULL; |
||
358 | iReturn = Wiz_SingleEntryUnzip(0, NULL, 0, NULL, lpDCL, lpUserFunctions); |
||
359 | |||
360 | /* external return codes for unzip library */ |
||
361 | //#define PK_OK 0 /* no error */ |
||
362 | //#define PK_COOL 0 /* no error */ |
||
363 | //#define PK_WARN 1 /* warning error */ |
||
364 | //#define PK_ERR 2 /* error in zipfile */ |
||
365 | //#define PK_BADERR 3 /* severe error in zipfile */ |
||
366 | //#define PK_MEM 4 /* insufficient memory (during initialization) */ |
||
367 | //#define PK_MEM2 5 /* insufficient memory (password failure) */ |
||
368 | //#define PK_MEM3 6 /* insufficient memory (file decompression) */ |
||
369 | //#define PK_MEM4 7 /* insufficient memory (memory decompression) */ |
||
370 | //#define PK_MEM5 8 /* insufficient memory (not yet used) */ |
||
371 | //#define PK_NOZIP 9 /* zipfile not found */ |
||
372 | //#define PK_PARAM 10 /* bad or illegal parameters specified */ |
||
373 | //#define PK_FIND 11 /* no files found */ |
||
374 | //#define PK_DISK 50 /* disk full */ |
||
375 | //#define PK_EOF 51 /* unexpected EOF */ |
||
376 | |||
377 | //#define IZ_CTRLC 80 /* user hit ^C to terminate */ |
||
378 | //#define IZ_UNSUP 81 /* no files found: all unsup. compr/encrypt. */ |
||
379 | //#define IZ_BADPWD 82 /* no files found: all had bad password */ |
||
380 | |||
381 | /* return codes of password fetches (negative = user abort; positive = error) */ |
||
382 | //#define IZ_PW_ENTERED 0 /* got some password string; use/try it */ |
||
383 | //#define IZ_PW_CANCEL -1 /* no password available (for this entry) */ |
||
384 | //#define IZ_PW_CANCELALL -2 /* no password, skip any further pwd. request */ |
||
385 | //#define IZ_PW_ERROR 5 /* = PK_MEM2 : failure (no mem, no tty, ...) */ |
||
386 | switch (iReturn) { |
||
387 | case PK_OK: |
||
388 | wsprintf(szMessage, "%s", "All files extracted OK"); |
||
389 | break; |
||
390 | case PK_ERR: |
||
391 | wsprintf(szMessage, "%s", "Warning occurred on one or more files"); |
||
392 | break; |
||
393 | case PK_BADERR: |
||
394 | wsprintf(szMessage, "%s", "Error in archive"); |
||
395 | break; |
||
396 | case PK_MEM: |
||
397 | case PK_MEM2: |
||
398 | case PK_MEM3: |
||
399 | case PK_MEM4: |
||
400 | case PK_MEM5: |
||
401 | wsprintf(szMessage, "%s", "Insufficient memory"); |
||
402 | break; |
||
403 | case PK_NOZIP: |
||
404 | wsprintf(szMessage, "%s", "Archive not found"); |
||
405 | break; |
||
406 | case PK_FIND: |
||
407 | wsprintf(szMessage, "%s", "No files found"); |
||
408 | break; |
||
409 | case PK_DISK: |
||
410 | wsprintf(szMessage, "%s", "Disk full"); |
||
411 | break; |
||
412 | case PK_EOF: |
||
413 | wsprintf(szMessage, "%s", "Unexpected end of file"); |
||
414 | break; |
||
415 | case IZ_UNSUP: |
||
416 | wsprintf(szMessage, "%s", "No files found: All unsupported"); |
||
417 | break; |
||
418 | case IZ_BADPWD: |
||
419 | wsprintf(szMessage, "%s", "No files found: Bad password"); |
||
420 | break; |
||
421 | default: |
||
422 | wsprintf(szMessage, "%s", "Unknown error"); |
||
423 | break; |
||
424 | } |
||
425 | MessageBox(hDlg, szMessage, szAppName, MB_OK); |
||
426 | /* Uncomment line below to have SFXWix terminate automatically |
||
427 | when done. |
||
428 | */ |
||
429 | // EndDialog(hDlg, wParam); |
||
430 | |||
431 | break; |
||
432 | case IDCANCEL: |
||
433 | EndDialog(hDlg, wParam); |
||
434 | PostQuitMessage(0); |
||
435 | exit(0); // ..and then quit |
||
436 | break; |
||
437 | } |
||
438 | break; |
||
439 | |||
440 | default: |
||
441 | fProcessed = FALSE; |
||
442 | break; |
||
443 | } |
||
444 | return(fProcessed); |
||
445 | } |
||
446 | |||
447 | |||
448 | #define WasCancelled(hDlg) (!IsWindowEnabled(GetDlgItem(hDlg,IDCANCEL))) |
||
449 | |||
450 | #ifdef __BORLANDC__ |
||
451 | #pragma argsused |
||
452 | #endif |
||
453 | int WINAPI password(LPSTR p, int n, LPCSTR m, LPCSTR name) |
||
454 | { |
||
455 | TCHAR sz[MAX_PATH]; |
||
456 | sprintf(sz, "%s is encrypted", name); |
||
457 | MessageBox(hWnd, sz, "Encryption not supported", MB_OK); |
||
458 | return IZ_PW_CANCELALL; |
||
459 | } |
||
460 | |||
461 | int WINAPI DisplayBuf(TCHAR far *buf, unsigned long size) |
||
462 | { |
||
463 | if ((buf[0] != '\n') && (buf[0] != '\r')) |
||
464 | SetDlgItemText(hWnd, ID_STATUS, buf); |
||
465 | return (unsigned int) size; |
||
466 | } |
||
467 | |||
468 | #ifdef __BORLANDC__ |
||
469 | #pragma argsused |
||
470 | #endif |
||
471 | int WINAPI GetReplaceDlgRetVal(LPSTR filename, unsigned fnbufsiz) |
||
472 | { |
||
473 | #ifndef WIN32 |
||
474 | FARPROC lpfnprocReplace; |
||
475 | #endif |
||
476 | int ReplaceDlgRetVal; /* replace dialog return value */ |
||
477 | |||
478 | #ifdef WIN32 |
||
479 | ReplaceDlgRetVal = DialogBoxParam(hInst, "Replace", |
||
480 | hWnd, (DLGPROC)ReplaceProc, (DWORD)filename); |
||
481 | #else |
||
482 | lpfnprocReplace = MakeProcInstance(ReplaceProc, hInst); |
||
483 | ReplaceDlgRetVal = DialogBoxParam(hInst, "Replace", |
||
484 | hWnd, lpfnprocReplace, (DWORD)filename); |
||
485 | FreeProcInstance(lpfnprocReplace); |
||
486 | #endif |
||
487 | return ReplaceDlgRetVal; |
||
488 | } |
||
489 | |||
490 | #ifdef __BORLANDC__ |
||
491 | #pragma argsused |
||
492 | #endif |
||
493 | #ifdef Z_UINT8_DEFINED |
||
494 | void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csiz, |
||
495 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
496 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
497 | TCHAR fCrypt) |
||
498 | { |
||
499 | } |
||
500 | #else |
||
501 | void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csiz, |
||
502 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
503 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
504 | TCHAR fCrypt) |
||
505 | { |
||
506 | } |
||
507 | #endif |
||
508 | void WINAPI ReceiveDllMessage_NO_INT64(unsigned long ucsize_low, |
||
509 | unsigned long ucsize_high, unsigned long csiz_low, unsigned long csiz_high, |
||
510 | unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, |
||
511 | unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, |
||
512 | TCHAR fCrypt) |
||
513 | { |
||
514 | } |
||
515 | |||
516 | #ifdef __BORLANDC__ |
||
517 | #pragma argsused |
||
518 | #endif |
||
519 | |||
520 | int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, |
||
521 | LPSTR lpszCmdLine, int nCmdShow) |
||
522 | { |
||
523 | TCHAR *ptr = NULL; |
||
524 | hInst = hInstance; |
||
525 | |||
526 | hDCL = GlobalAlloc( GPTR, (DWORD)sizeof(DCL)); |
||
527 | if (!hDCL) |
||
528 | { |
||
529 | return 0; |
||
530 | } |
||
531 | lpDCL = (LPDCL)GlobalLock(hDCL); |
||
532 | if (!lpDCL) |
||
533 | { |
||
534 | return 0; |
||
535 | } |
||
536 | |||
537 | hUF = GlobalAlloc( GPTR, (DWORD)sizeof(USERFUNCTIONS)); |
||
538 | if (!hUF) |
||
539 | { |
||
540 | return 0; |
||
541 | } |
||
542 | lpUserFunctions = (LPUSERFUNCTIONS)GlobalLock(hUF); |
||
543 | |||
544 | if (!lpUserFunctions) |
||
545 | { |
||
546 | return 0; |
||
547 | } |
||
548 | |||
549 | lpUserFunctions->password = password; |
||
550 | lpUserFunctions->print = DisplayBuf; |
||
551 | lpUserFunctions->sound = NULL; |
||
552 | lpUserFunctions->replace = GetReplaceDlgRetVal; |
||
553 | lpUserFunctions->SendApplicationMessage = ReceiveDllMessage; |
||
554 | lpUserFunctions->SendApplicationMessage_i32 = ReceiveDllMessage_NO_INT64; |
||
555 | lpUserFunctions->ServCallBk = NULL; |
||
556 | |||
557 | |||
558 | |||
559 | GetModuleFileName(hInstance,(LPSTR)szThisApp,sizeof(szThisApp)); |
||
560 | lstrcpy(zfn, szThisApp); |
||
561 | |||
562 | ptr = strrchr(szThisApp, '\\'); |
||
563 | if (ptr != NULL) |
||
564 | { |
||
565 | lstrcpy(szAppName, ptr); |
||
566 | ptr[0] = '\0'; |
||
567 | lstrcpy(szTarget, szThisApp); |
||
568 | |||
569 | iReturn = DialogBox(hInstance, MAKEINTRESOURCE(INITDIALOG), |
||
570 | (HWND)NULL, (DLGPROC)InitDialogProc); |
||
571 | DestroyWindow((HWND) INITDIALOG); |
||
572 | |||
573 | #ifdef WIN32 |
||
574 | SetCurrentDirectory(szHomeDir); |
||
575 | #else |
||
576 | getcwd(szTarget, MAX_PATH); |
||
577 | chdir(szHomeDir); |
||
578 | setdisk(toupper(szHomeDir[0]) - 'A'); |
||
579 | #endif |
||
580 | } |
||
581 | PostQuitMessage(0); |
||
582 | return (0); |
||
583 | } |