source: trunk/dll/fm3dll.h@ 1077

Last change on this file since 1077 was 1076, checked in by Gregg Young, 17 years ago

Remove fUseTmp

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 44.3 KB
Line 
1
2/***********************************************************************
3
4 $Id: fm3dll.h 1076 2008-07-18 05:01:16Z gyoung $
5
6 Common definitions
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2001, 2008 Steven H. Levine
10
11 12 Feb 03 SHL Add CBLIST_TO_EASIZE
12 11 Jun 03 SHL Add JFS and FAT32 support
13 06 Jan 04 SHL Drop hundfmt
14 01 Aug 04 SHL Optimze strippers
15 01 Aug 04 SHL Drop avv local functions
16 23 May 05 SHL Split datamin to datamin.h
17 24 May 05 SHL Rework Win_Error usage
18 25 May 05 SHL Require VAC 3.65
19 25 May 05 SHL Rename comnam to szCommonName
20 25 May 05 SHL Rework for FillInRecordFromFFB
21 25 May 05 SHL Add CommaFmtULL CommaFmtUL
22 28 May 05 SHL Drop local functions
23 06 Jun 05 SHL Use QWL_USER
24 11 Aug 05 SHL Renames
25 29 May 06 SHL Rework EditArchiverDefinition
26 16 Jun 06 SHL ARC_TYPE: support non-string signatures
27 26 Jun 06 SHL ARC_TYPE: support preserving comments
28 28 Jun 06 SHL DIRCNRDATA: drop unused
29 05 Jul 06 SHL Support Hide not selected
30 13 Jul 06 SHL Add Runtime_Error
31 22 Jul 06 SHL Add memory.c functions
32 26 Jul 06 SHL Add strips.c functions
33 26 Jul 06 SHL Add more error.c functions
34 29 Jul 06 SHL Add xfgets, xfgets_bstripcr
35 22 Oct 06 GKY Add NDFS32 support
36 03 Nov 06 SHL Renames
37 17 Jan 07 SHL Resize extractdir
38 17 Feb 07 GKY Add more file system types
39 17 Feb 07 GKY Add SelectDriveIcon to streamline update.c
40 18 Mar 07 GKY Add MM import typedefines for fix for files misindentified as multimedia
41 30 Mar 07 GKY Defined golbals for removing GetPString for window class names
42 06 Apr 07 GKY Work around PM DragInfo and DrgFreeDISH limits NumItemsToUnhilite & DeleteDragitemStrHandles
43 06 Apr 07 GKY Add some error checking in drag/drop
44 19 Apr 07 SHL Rework DeleteDragitemStrHandles to be FreeDragInfoData
45 19 Apr 07 SHL Add DbgMsg. Sync with AcceptOneDrop GetOneDrop mods.
46 21 Apr 07 GKY Find FM2Utils by path or utils directory eliminate fAddUtils global
47 23 Apr 07 SHL Add Win_Error_NoMsgBox
48 12 May 07 SHL Add ulItemsToUnHilite to DIRCNRDATA, pass to Unhilite as arg
49 05 Jun 07 SHL Update for OpenWatcom
50 10 Jun 07 GKY Add CheckPmDrgLimit including IsFm2Window as part of work around PM drag limit
51 16 Jun 07 GKY Add CheckPmDrgLimit including IsFm2Window as part of work around PM drag limit
52 16 Jun 07 SHL Update more for OpenWatcom
53 22 Jul 07 GKY Update CNRITEM to optimize RAM usage
54 23 Jul 07 SHL More CNRITEM updates (ticket#24)
55 01 Aug 07 SHL More CNRITEM and ARCITEM updates (ticket#24)
56 14 Aug 07 SHL Add GetMSecTimer
57 14 Aug 07 SHL Delete obsoletes
58 16 Aug 07 SHL Update for ticket# 109 - status update
59 18 Aug 07 SHL Update for ticket# 31 - states length
60 19 Aug 07 SHL Move FILESTOGET_MIN/MAX here
61 19 Aug 07 SHL Update SaveDirCnrState return
62 21 Aug 07 GKY Make Subject column in dircnr sizable and movable from the right to the left pane
63 01 Sep 07 GKY Add xDosSetPathInfo to fix case where FS3 buffer crosses 64k boundary
64 04 Nov 07 GKY Add pszFmtFileSize to CNRITEM to display large file sizes
65 10 Nov 07 GKY Add ThousandSeparator variable for file sizes NLS tseparator.
66 22 Nov 07 GKY Use CopyPresParams in CheckMenu to fix presparam inconsistencies in menus
67 17 Dec 07 GKY Add variables for using WPURLDEFAULTSETTINGS as the fall back for ftphttprun
68 29 Dec 07 GKY Add remove_first_occurence_of_character
69 30 Dec 07 GKY Change TestDates to TestFDates can compare by filename or FDATE/FTIME data
70 30 Dec 07 GKY Add TestCDates to compare CNRITEMs by CDATE/CTIME data
71 04 Jan 08 SHL Allow standalone usage
72 05 Jan 08 SHL Move comp.c definitions to comp.h
73 05 Jan 08 SHL Move dircnr.c definitions to dircnr.h
74 05 Jan 08 SHL Move makelist.c definitions to makelist.h
75 05 Jan 08 SHL Move error.c definitions to errutil.h
76 05 Jan 08 SHL Move string.c definitions to strutil.h
77 10 Jan 08 SHL Add UM_FIRSTTIME
78 12 Jan 08 SHL Localize SpecialSelect to comp.c
79 14 Feb 08 SHL Refactor CfgDlgProc to notebook.h
80 29 Feb 08 GKY Refactor global command line variables to notebook.h
81 22 Jun 08 GKY Changed some variable types to fix compiler warnings
82 11 Jul 08 JBS Ticket 230: Simplified code and eliminated some local variables by incorporating
83 all the details view settings (both the global variables and those in the
84 DIRCNRDATA struct) into a new struct: DETAILS_SETTINGS.
85 16 JUL 08 GKY Use TMP directory for temp files
86
87***********************************************************************/
88
89#if !defined(FM3DLL_H)
90
91#define FM3DLL_H
92
93#include <stdio.h> // FILE
94#include <time.h> // time_t
95
96#if !defined(OS2_INCLUDED)
97#define INCL_WINSTDDRAG
98#define INCL_WINSTDCNR
99#define INCL_WINPROGRAMLIST
100#define INCL_WINHELP
101#define INCL_LONGLONG // 05 Jan 08 SHL fixme to be gone eventually
102#include <os2.h>
103#else
104#if !defined(INCL_WINSTDDRAG)
105#error INCL_WINSTDDRAG required
106#endif
107#if !defined(INCL_WINSTDCNR)
108#error INCL_WINSTDCNR required
109#endif
110#if !defined(INCL_WINPROGRAMLIST)
111#error INCL_WINPROGRAMLIST required
112#endif
113#if !defined(INCL_WINHELP)
114#error INCL_WINHELP required
115#endif
116#if !defined(INCL_LONGLONG)
117#error INCL_LONGLONG required
118#endif
119#endif // OS2_INCLUDED
120
121#if defined(__IBMC__)
122#if __IBMC__ != 430
123#error VAC365 required for long long support
124#endif
125#if !defined(_LONG_LONG)
126#error Long long support not enabled
127#endif
128#endif
129
130#include "dircnrs.h" // 05 Jan 08 SHL fixme to be gone when DIRCNRDATA refs gone
131#include "makelist.h" // 05 Jan 08 SHL fixme to be gone when LISTINFO refs gone
132#include "command.h" // 01 Mar 08 GKY fixme to be gone when LINKCMDS refs gone
133
134#ifdef DEFINE_GLOBALS
135#pragma data_seg(GLOBAL1)
136#endif
137
138#define PP_MAX PP_MENUDISABLEBGNDCOLORINDEX
139#define PP_MAXBUF 384
140
141#ifndef MM_PORTHOLEINIT
142#define MM_PORTHOLEINIT 0x01fb
143#endif
144#ifndef MS_POPUP
145#define MS_POPUP 0x00000010L
146#endif
147#ifndef CCS_MINIICONS
148#define CCS_MINIICONS 0x0800
149#endif
150#ifndef CRA_SOURCE
151#define CRA_SOURCE 0x00004000
152#endif
153#ifndef CV_EXACTMATCH
154#define CV_EXACTMATCH 0x10000000
155#endif
156#ifndef CBN_SETFOCUS
157#define CBN_SETFOCUS 20
158#endif
159#ifndef CBN_KILLFOCUS
160#define CBN_KILLFOCUS 21
161#endif
162#ifndef CN_VERIFYEDIT
163#define CN_VERIFYEDIT 134
164#endif
165#ifndef CN_PICKUP
166#define CN_PICKUP 135
167#endif
168#ifndef CN_DROPNOTIFY
169#define CN_DROPNOTIFY 136
170#endif
171#ifndef CN_GRIDRESIZED
172#define CN_GRIDRESIZED 137
173#endif
174#ifndef BKS_MERLINSTYLE
175#define BKS_MERLINSTYLE 0x0800
176#endif
177
178// PMBITMAP_INCLUDED - IBM Toolkit
179// INCL_GPIBITMAPS - OpenWatcom Toolkit
180#if !defined(PMBITMAP_INCLUDED) && !defined(INCL_GPIBITMAPS)
181typedef struct _RGB2 /* rgb2 */
182{
183 BYTE bBlue; /* Blue component of the color definition */
184 BYTE bGreen; /* Green component of the color definition */
185 BYTE bRed; /* Red component of the color definition */
186 BYTE fcOptions; /* Reserved, must be zero */
187}
188RGB2;
189typedef RGB2 *PRGB2;
190#endif
191
192/**************************************************/
193/* Lazy Drag API's. */
194/**************************************************/
195
196BOOL APIENTRY DrgLazyDrag(HWND hwndSource,
197 PDRAGINFO pdinfo,
198 PDRAGIMAGE pdimg, ULONG cdimg, PVOID pRsvd);
199
200BOOL APIENTRY DrgCancelLazyDrag(VOID);
201
202BOOL APIENTRY DrgLazyDrop(HWND hwndTarget,
203 ULONG ulOperation, PPOINTL pptlDrop);
204
205PDRAGINFO APIENTRY DrgQueryDraginfoPtr(PDRAGINFO pRsvd);
206
207PDRAGINFO APIENTRY DrgQueryDraginfoPtrFromHwnd(HWND hwndSource);
208
209PDRAGINFO APIENTRY DrgQueryDraginfoPtrFromDragitem(PDRAGITEM pditem);
210
211ULONG APIENTRY DrgQueryDragStatus(VOID);
212
213PDRAGINFO APIENTRY DrgReallocDraginfo(PDRAGINFO pdinfoOld, ULONG cditem);
214
215 /* Drag Status Flags */
216#define DGS_DRAGINPROGRESS 0x0001 /* Standard Drag in Progress. */
217#define DGS_LAZYDRAGINPROGRESS 0x0002 /* Lazy Drag in Progress. */
218
219#define LINES_PER_ARCSIG 21 // Lines in each archiver.bb2 definition
220#define CON_COLS 6
221#define INSTDATA(h) WinQueryWindowPtr((h),QWL_USER)
222#define DIR_SPLITBAR_OFFSET 18 * 12 /* Pixel offset of details splitbar */
223#define CONTAINER_COLUMNS 13 /* Number of columns in details view */
224#define RGBFROMPARTS(r,g,b) (((r) * 65536) + ((g) * 256) + (b))
225
226#define EXTRA_RECORD_BYTES (sizeof(CNRITEM) - sizeof(MINIRECORDCORE))
227#define EXTRA_ARCRECORD_BYTES (sizeof(ARCITEM) - sizeof(MINIRECORDCORE))
228
229#define ALLATTRS (FILE_NORMAL | FILE_DIRECTORY | FILE_ARCHIVED |\
230 FILE_HIDDEN | FILE_READONLY | FILE_SYSTEM)
231#define LISTTEMPROOT "$FM2LI$T."
232
233#include "fm3dll2.h"
234
235#define UM_PAINT (WM_USER)
236#define UM_SETUP (WM_USER + 1)
237#define UM_RESCAN (WM_USER + 2)
238#define UM_INITIALSIZE (WM_USER + 3)
239#define UM_CONTROL (WM_USER + 4)
240#define UM_COMMAND (WM_USER + 5)
241#define UM_SIZE (WM_USER + 6)
242#define UM_FOCUSME (WM_USER + 7)
243#define UM_FIXEDITNAME (WM_USER + 8)
244#define UM_UPDATERECORD (WM_USER + 9)
245#define UM_SETDIR (WM_USER + 10)
246#define UM_CONTAINER_FILLED (WM_USER + 11)
247#define UM_STRETCH (WM_USER + 12)
248#define UM_LOADFILE (WM_USER + 13)
249#define UM_MOUSEMOVE (WM_USER + 14)
250#define UM_ENTER (WM_USER + 15)
251#define UM_CLOSE (WM_USER + 16)
252#define UM_ACTION (WM_USER + 17)
253#define UM_MASSACTION (WM_USER + 18)
254#define UM_UPDATERECORDLIST (WM_USER + 19)
255#define UM_FILESMENU (WM_USER + 20)
256#define UM_SELECT (WM_USER + 21)
257#define UM_VIEWSMENU (WM_USER + 22)
258#define UM_CONTAINERHWND (WM_USER + 23)
259#define UM_OPENWINDOWFORME (WM_USER + 24)
260#define UM_FOLDUP (WM_USER + 25)
261#define UM_INITMENU (WM_USER + 26)
262#define UM_COMPARE (WM_USER + 27)
263#define UM_EXPAND (WM_USER + 28)
264#define UM_REPLACEFOCUS (WM_USER + 29)
265#define UM_UNDO (WM_USER + 30)
266#define UM_RENDER (WM_USER + 31)
267#define UM_BUTTON2DOWN (WM_USER + 32)
268#define UM_BUTTON2UP (WM_USER + 33)
269#define UM_COLLECTFROMFILE (WM_USER + 34)
270#define UM_TIMER (WM_USER + 35)
271#define UM_HELPON (WM_USER + 36)
272#define UM_SETUP2 (WM_USER + 37)
273#define UM_SETUP3 (WM_USER + 38)
274#define UM_CONTEXTMENU (WM_USER + 39)
275#define UM_FILLUSERLIST (WM_USER + 40)
276#define UM_CONTAINERDIR (WM_USER + 41)
277#define UM_SETUP4 (WM_USER + 42)
278#define UM_FILLSETUPLIST (WM_USER + 43)
279#define UM_ARRANGEICONS (WM_USER + 44)
280#define UM_SETUP5 (WM_USER + 45)
281#define UM_NOTIFY (WM_USER + 46)
282#define UM_INSERTRECORD (WM_USER + 47)
283#define UM_ADDTOMENU (WM_USER + 48)
284#define UM_COLLECT (WM_USER + 49)
285#define UM_RESTOREDC (WM_USER + 50)
286#define UM_MINIMIZE (WM_USER + 51)
287#define UM_MAXIMIZE (WM_USER + 52)
288#define UM_BUTTON1MOTIONSTART (WM_USER + 53)
289#define UM_SETUP6 (WM_USER + 54)
290#define UM_FILLBUTTONLIST (WM_USER + 55)
291#define UM_SETUSERLISTNAME (WM_USER + 56)
292#define UM_FILTER (WM_USER + 57)
293#define UM_SORTRECORD (WM_USER + 58)
294#define UM_SIZE2 (WM_USER + 59)
295#define UM_RESTORE (WM_USER + 60)
296#define UM_TOPDIR (WM_USER + 61)
297#define UM_SHOWME (WM_USER + 62)
298#define UM_RESCAN2 (WM_USER + 63)
299#define UM_BUILDDRIVEBAR (WM_USER + 64)
300#define UM_THREADUSE (WM_USER + 65)
301#define UM_DRIVECMD (WM_USER + 66)
302#define UM_ADVISEFOCUS (WM_USER + 67)
303#define UM_FIXCNRMLE (WM_USER + 68)
304#define UM_FLESH (WM_USER + 69)
305#define UM_FILLCMDLIST (WM_USER + 70)
306#define UM_CLICKED (WM_USER + 71)
307#define UM_CLICKED3 (WM_USER + 72)
308#define UM_HIDENOTSELECTED (WM_USER + 73)
309#define UM_FIRSTTIME (WM_USER + 74)
310
311typedef struct
312{
313 USHORT size;
314 USHORT dummy;
315 CHAR szCurrentPath1[CCHMAXPATH];
316 CHAR szCurrentPath2[CCHMAXPATH];
317}
318WALK2;
319
320typedef struct LINKDIRS
321{
322 CHAR *path;
323 struct LINKDIRS *next;
324}
325LINKDIRS;
326
327typedef struct
328{
329 USHORT size;
330 USHORT numcolors;
331 USHORT flags;
332 USHORT currentcolor;
333 ULONG prompt;
334 long *colors;
335 ULONG descriptions;
336 long *origs;
337}
338COLORS;
339
340typedef struct
341{
342 CHAR *title; /* title of dialog */
343 CHAR *prompt; /* prompt to user */
344 CHAR *ret; /* buffer out, default in */
345 CHAR *help; /* help text */
346 INT inputlen; /* max len of ret */
347}
348STRINGINPARMS;
349
350typedef struct
351{
352 CHAR *source;
353 CHAR target[CCHMAXPATH];
354 BOOL rename;
355 BOOL skip;
356 BOOL dontask;
357 BOOL overold;
358 BOOL overnew;
359 BOOL overwrite;
360}
361MOVEIT;
362
363typedef struct HOLDFEA
364{
365 PFEA2 pfea;
366 CHAR *name;
367 CHAR *value;
368 BYTE fEA;
369 BYTE cbName;
370 USHORT cbValue;
371 struct HOLDFEA *next;
372}
373HOLDFEA;
374
375typedef struct
376{
377 USHORT size;
378 USHORT dummy;
379 CHAR directory[CCHMAXPATH];
380 HWND hwndParent;
381 HWND hwndFrame;
382 HWND hwndClient;
383 HWND hwndCnr;
384 LISTINFO *li;
385}
386WORKER;
387
388typedef struct
389{
390 USHORT size;
391 ULONG flags;
392 ULONG cmd;
393 USHORT dummy;
394 CHAR *prompt;
395 CHAR **list;
396}
397CHECKLIST;
398
399typedef struct
400{
401 ULONG flags;
402 CHAR *commandline;
403 CHAR path[CCHMAXPATH];
404 CHAR environment[1001];
405 CHAR tempprompt[128];
406 CHAR title[80];
407 BOOL dropped;
408}
409EXECARGS;
410
411#pragma pack(1)
412
413// Compare directory flags
414#define CNRITEM_SMALLER 0x00010000 // file exists in both containers and this one is smaller
415#define CNRITEM_LARGER 0x00020000
416#define CNRITEM_NEWER 0x00040000
417#define CNRITEM_OLDER 0x00080000
418#define CNRITEM_EXISTS 0x00100000 // file exists in both containers
419
420#define RECFLAGS_ENV 0x00000001
421#define RECFLAGS_NODRAG 0x00000002
422#define RECFLAGS_NODROP 0x00000004
423#define RECFLAGS_UNDERENV 0x00000008
424
425#define ARCFLAGS_REALDIR 0x00000001
426#define ARCFLAGS_PSEUDODIR 0x00000002
427
428typedef struct _ARCITEM
429{ // ARCHIVE CONTAINER RECORD STRUCTURE
430 MINIRECORDCORE rc; // Base information
431 HWND hwndCnr; /* Container holding this record */
432 PSZ pszFileName; // Points to full path name or NullStr
433 PSZ pszDisplayName; // Points to displayable part of path name - used by CFA_STRING
434 CHAR szDate[40]; // File's assembled date
435 PSZ pszDate; // Pointer to date
436 CDATE date; // if we know date format
437 CTIME time; // if we know time format
438 ULONGLONG cbFile; // File's original size
439 ULONGLONG cbComp; // File's compressed size
440 ULONG flags;
441}
442ARCITEM, *PARCITEM;
443
444#pragma pack()
445
446typedef struct
447{
448 USHORT size;
449 ARC_TYPE *info;
450 CHAR *arcname;
451 CHAR masks[257];
452 CHAR command[257];
453 CHAR extractdir[CCHMAXPATH];
454 INT ret;
455}
456EXTRDATA;
457
458/* init.c */
459VOID FindSwapperDat(VOID);
460BOOL InitFM3DLL(HAB hab, int argc, char **argv);
461HWND StartFM3(HAB hab, INT argc, CHAR ** argv);
462
463/* flesh.c */
464BOOL Stubby(HWND hwndCnr, PCNRITEM pciParent);
465BOOL Flesh(HWND hwndCnr, PCNRITEM pciParent);
466BOOL FleshEnv(HWND hwndCnr, PCNRITEM pciParent);
467BOOL UnFlesh(HWND hwndCnr, PCNRITEM pciParent);
468
469/* valid.c */
470INT CheckDrive(CHAR Drive, CHAR * FileSystem, ULONG * type);
471int TestFDates(char *file1, char *file2, FDATE *datevar1, FTIME *timevar1,
472 FDATE *datevar2, FTIME *timevar2);
473int TestCDates(CDATE *datevar1, CTIME *timevar1, CDATE *datevar2, CTIME *timevar2);
474BOOL IsNewer(char *file1, char *file2);
475BOOL IsRoot(CHAR * filename);
476BOOL IsFileSame(CHAR * filename1, CHAR * filename2);
477INT IsFile(CHAR * filename);
478BOOL IsFullName(CHAR * filename);
479BOOL IsValidDir(CHAR * test);
480BOOL IsValidDrive(CHAR drive);
481CHAR *MakeValidDir(CHAR * path);
482BOOL IsExecutable(CHAR * filename);
483VOID FillInDriveFlags(VOID * dummy);
484VOID DriveFlagsOne(INT x);
485VOID ArgDriveFlags(INT argc, CHAR ** argv);
486CHAR *assign_ignores(CHAR * s);
487BOOL needs_quoting(CHAR * f);
488BOOL IsBinary(CHAR * str, ULONG len);
489BOOL TestBinary(CHAR * filename);
490BOOL ParentIsDesktop(HWND hwnd, HWND hwndParent);
491BOOL IsDesktop(HAB hab, HWND hwnd);
492char *IsVowel(char a);
493VOID GetDesktopName(CHAR * objectpath, ULONG size);
494char *RootName(char *filename);
495APIRET MakeFullName(char *filename);
496
497/* misc.c */
498BOOL IsFm2Window(HWND hwnd, BOOL chkTid);
499VOID SetShiftState(VOID);
500void EmphasizeButton(HWND hwnd, BOOL on);
501void DrawTargetEmphasis(HWND hwnd, BOOL on);
502void BoxWindow(HWND hwnd, HPS hps, LONG color);
503VOID PaintRecessedWindow(HWND hwnd, HPS hps, BOOL outtie, BOOL dbl);
504void PaintSTextWindow(HWND hwnd, HPS hps);
505BOOL AdjustCnrColVis(HWND hwndCnr, CHAR * title, BOOL visible, BOOL toggle);
506BOOL AdjustCnrColRO(HWND hwndCnr, CHAR * title, BOOL readonly, BOOL toggle);
507VOID AdjustCnrColsForFSType(HWND hwndCnr, CHAR * directory, DETAILS_SETTINGS * pds);
508VOID AdjustCnrColsForPref(HWND hwndCnr, CHAR * directory, DETAILS_SETTINGS * pds,
509 BOOL compare);
510BOOL SetCnrCols(HWND hwndCnr, BOOL compare);
511MRESULT CnrDirectEdit(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
512BOOL SetMenuCheck(HWND hwndMenu, USHORT id, BOOL * bool, BOOL toggle,
513 CHAR * savename);
514VOID disable_menuitem(HWND hwndMenu, USHORT id, BOOL enable);
515BOOL ViewHelp(CHAR * filename);
516VOID CloseHelp(VOID);
517INT ExecFile(HWND hwnd, CHAR * filename);
518VOID SetDetailsSwitches(HWND hwnd, DETAILS_SETTINGS * pds);
519VOID AdjustDetailsSwitches(HWND hwnd, HWND hwndMenu, USHORT cmd,
520 CHAR * directory, CHAR * keyroot, DETAILS_SETTINGS * pds,
521 BOOL compare);
522VOID SetConditionalCascade(HWND hwndMenu, USHORT id, USHORT def);
523VOID SetSortChecks(HWND hwndMenu, INT sortflags);
524VOID SetupCommandMenu(HWND hwndMenu, HWND hwndCnr);
525VOID LoadDetailsSwitches(CHAR * keyroot, DETAILS_SETTINGS * pds);
526HWND FindDirCnr(HWND hwndParent);
527VOID HeapThread(VOID * dummy);
528VOID FixSwitchList(HWND hwnd, CHAR * text);
529VOID QuickPopup(HWND hwnd, DIRCNRDATA * dcd, HWND hwndMenu, USHORT id);
530PMINIRECORDCORE CurrentRecord(HWND hwndCnr);
531BOOL PostMsg(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
532VOID OpenEdit(HWND hwnd);
533VOID PortholeInit(HWND hwndNew, MPARAM mp1, MPARAM mp2);
534HWND CheckMenu(HWND hwnd, HWND * hwndMenu, USHORT id);
535SHORT AddToListboxBottom(HWND hwnd, CHAR * str);
536VOID SetSysMenu(HWND hwndSysMenu);
537VOID LoadLibPath(CHAR * str, LONG len);
538void SaySort(HWND hwnd, INT sortflags, BOOL archive);
539void SayView(HWND hwnd, ULONG flWindowAttr);
540void SayFilter(HWND hwnd, MASK * mask, BOOL archive);
541void SetViewMenu(HWND hwndMenu, ULONG flWindowAttr);
542char *GetCmdSpec(BOOL dos);
543void Broadcast(HAB hab, HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
544void SetupWinList(HWND hwndMenu, HWND hwndTop, HWND hwndFrame);
545BOOL SwitchCommand(HWND hwndMenu, USHORT cmd);
546
547/* mainwnd.c */
548ULONG CountDirCnrs(HWND hwndParent);
549HWND TopWindow(HWND hwndParent, HWND exclude);
550HWND TopWindowName(HWND hwndParent, HWND exclude, CHAR * ret);
551HWND FindDirCnrByName(CHAR * directory, BOOL restore);
552MRESULT EXPENTRY MainWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
553VOID GetNextWindowPos(HWND hwndClient, PSWP pswp, ULONG * ulCntR,
554 ULONG * ulNumMinChildrenR);
555VOID TileChildren(HWND hwndClient, BOOL absolute);
556VOID FillClient(HWND hwndClient, PSWP pswp, PRECTL prectl, BOOL avoidtree);
557MRESULT EXPENTRY ToolBackProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
558MRESULT EXPENTRY DriveBackProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
559MRESULT EXPENTRY ChildButtonProc(HWND hwnd, ULONG msg, MPARAM mp1,
560 MPARAM mp2);
561MRESULT EXPENTRY DriveProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
562MRESULT EXPENTRY BubbleProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
563INT SaveDirCnrState(HWND hwndClient, CHAR * name);
564MRESULT EXPENTRY LEDProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
565MRESULT EXPENTRY StatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
566VOID BuildDriveBarButtons(HWND hwndT);
567VOID ResizeDrives(HWND hwndT, long xwidth);
568BOOL CloseChildren(HWND hwndClient);
569VOID BuildTools(HWND hwndT, BOOL resize);
570void BubbleHelp(HWND hwnd, BOOL other, BOOL data, BOOL above, char *help);
571VOID MakeBubble(HWND hwnd, BOOL above, CHAR * help);
572MRESULT EXPENTRY MainWMCommand(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
573VOID MakeMainObjWin(VOID * args);
574
575/* mainwnd2.c */
576MRESULT EXPENTRY MainWndProc2(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
577MRESULT EXPENTRY FileListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
578HWND StartFM32(HAB hab, INT argc, CHAR ** argv);
579
580/* treecnr.c */
581MRESULT EXPENTRY TreeStatProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
582MRESULT EXPENTRY TreeClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
583 MPARAM mp2);
584HWND StartTreeCnr(HWND hwndParent, ULONG flags);
585MRESULT EXPENTRY TreeObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
586VOID ShowTreeRec(HWND hwndCnr, CHAR * dirname, BOOL collapsefirst,
587 BOOL maketop);
588MRESULT EXPENTRY OpenButtonProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
589
590/* presparm.c */
591VOID StoreWndPresParams(HWND hwnd, CHAR * tagname, HINI prof);
592
593#ifdef INCL_GPI
594VOID SetPresParams(HWND hwnd, RGB2 * back, RGB2 * fore, RGB2 * border,
595 CHAR * font);
596#endif
597VOID CopyPresParams(HWND target, HWND source);
598VOID IfNoParam(HWND hwnd, CHAR * keyroot, ULONG size, PVOID attrvalue);
599VOID PresParamChanged(HWND hwnd, CHAR * keyroot, MPARAM mp1, MPARAM mp2);
600VOID RestorePresParams(HWND hwnd, CHAR * keyroot);
601VOID SavePresParams(HWND hwnd, CHAR * keyroot);
602
603/* dirs.c */
604APIRET save_dir2(CHAR * curdir);
605APIRET save_dir(CHAR * curdir);
606APIRET switch_to(CHAR * s);
607
608/* strips.c */
609VOID chop_at_crnl(PSZ pszSrc);
610PSZ convert_nl_to_nul(PSZ pszSrc);
611void strip_lead_char(char *pszStripChars, char *pszSrc);
612void strip_trail_char(char *pszStripChars, char *pszSrc);
613VOID remove_first_occurence_of_character(char *pszRemoveChar, char *pszSrc);
614VOID remove_last_occurence_of_character(char *pszRemoveChar, char *pszSrc);
615
616#define lstrip(s) strip_lead_char(" \t",(s))
617#define rstrip(s) strip_trail_char(" \t",(s))
618#define stripcr(s) strip_trail_char("\r\n",(s))
619// Strip leading and trailing white
620#define bstrip(s) (strip_lead_char(" \t",(s)),strip_trail_char(" \t",(s)))
621// Strip leading and trailing white and trail cr/nl
622#define bstripcr(s) (strip_lead_char(" \t",(s)),strip_trail_char("\r\n \t",(s)))
623
624/* delims.c */
625char *skip_delim(char *a, register char *delim);
626char *to_delim(char *a, register char *delim);
627
628/* copyf.c */
629BOOL AdjustWildcardName(CHAR * oldname, CHAR * newname);
630CHAR default_disk(VOID);
631APIRET docopyf(INT type, CHAR * oldname, CHAR * newname, ...);
632
633#define COPY 0
634#define MOVE 1
635#define WPSCOPY 2
636#define WPSMOVE 4
637INT unlinkf(CHAR * string, ...);
638INT unlink_allf(CHAR * string, ...);
639INT wipeallf(CHAR * string, ...);
640INT make_deleteable(CHAR * filename);
641CHAR *TruncName(CHAR * oldname, CHAR * buffer);
642CHAR *GetLongName(CHAR * oldname, CHAR * buffer);
643BOOL WriteLongName(CHAR * filename, CHAR * longname);
644
645/* mkdir.c */
646APIRET SetDir(HWND hwndClient, HWND hwnd, CHAR * dir, INT flags);
647APIRET MassMkdir(HWND hwndClient, CHAR * dir);
648BOOL PMMkDir(HWND hwnd, CHAR * filename, BOOL copy);
649void SetTargetDir(HWND hwnd, BOOL justshow);
650
651/* srchpath.c */
652INT RunFM2Util(CHAR *appname, CHAR *filename);
653CHAR *first_path(CHAR * path, CHAR * ret);
654CHAR *searchapath(CHAR * path, CHAR * filename);
655CHAR *searchpath(CHAR * filename);
656
657/* literal.c */
658UINT literal(PSZ pszBuf);
659BOOL wildcard(const PSZ pszBuf, const PSZ pszWildCard,
660 const BOOL fNotFileSpec);
661PSZ fixup(const PCH pachInBuf, PSZ pszOutBuf, const UINT cBufBytes,
662 const UINT cInBytes);
663
664/* stristr.c */
665CHAR *stristr(const CHAR * t, const CHAR * s);
666CHAR *strnistr(register CHAR * t, CHAR * s, LONG len);
667CHAR *strnstr(register CHAR * t, CHAR * s, LONG len);
668CHAR *findstring(CHAR * findthis, ULONG lenthis, CHAR * findin,
669 ULONG lenin, BOOL insensitive);
670
671/* avv.c */
672VOID rewrite_archiverbb2(CHAR * archiverbb2);
673MRESULT EXPENTRY ArcReviewDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
674 MPARAM mp2);
675VOID EditArchiverDefinition(HWND hwnd);
676
677/* systemf.c */
678BOOL ShowSession(HWND hwnd, PID pid);
679INT ExecOnList(HWND hwnd, CHAR * command, INT flags, CHAR * tpath,
680 CHAR ** list, CHAR * prompt, PCSZ pszCallingFile, UINT uiLineNumber);
681INT runemf2(INT type, HWND hwnd, PCSZ pszCallingFile, UINT uiLineNumber,
682 CHAR * directory, CHAR * environment,
683 CHAR * formatstring, ...);
684HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env,
685 PROGTYPE * progt, ULONG fl, char *formatstring, ...);
686#define RUNTYPE_MASK 0xf
687#define SYNCHRONOUS 1
688#define ASYNCHRONOUS 2
689#define DETACHED 3
690#define SEPARATE 4
691#define SEPARATEKEEP 5
692#define WINDOWED 16
693#define MAXIMIZED 32
694#define MINIMIZED 64
695#define FULLSCREEN 128
696#define INVISIBLE 256
697#define BACKGROUND 512
698#define WAIT 1024
699#define PROMPT 2048
700#define KEEP 4096
701#define ONCE 8192
702#define DIEAFTER 16384
703#define SEAMLESS 32768
704#define CHILD 65536
705
706/* cmdline.c */
707BOOL add_cmdline(CHAR * cmdline, BOOL big);
708VOID save_cmdlines(BOOL big);
709MRESULT EXPENTRY CmdLineDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
710MRESULT EXPENTRY CmdLine2DlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
711 MPARAM mp2);
712
713/* chklist.c */
714VOID PosOverOkay(HWND hwnd);
715VOID CenterOverWindow(HWND hwnd);
716BOOL PopupMenu(HWND hwndParent, HWND hwndOwner, HWND hwndMenu);
717MRESULT EXPENTRY CheckListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
718MRESULT EXPENTRY DropListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
719
720/* eas.c */
721VOID HexDump(HWND hwnd, CHAR * value, ULONG cbValue);
722HOLDFEA *GetFileEAs(CHAR * filename, BOOL ishandle, BOOL silentfail);
723VOID Free_FEAList(HOLDFEA * pFEA);
724MRESULT EXPENTRY DisplayEAsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
725PVOID SaveEA(CHAR * filename, HOLDFEA * current, CHAR * newdata,
726 BOOL silentfail);
727
728/* inis.c */
729MRESULT EXPENTRY IniProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
730HWND StartIniEditor(HWND hwnd, CHAR * filename, INT flags);
731
732/* subj.c */
733INT Subject(HWND hwnd, CHAR * filename);
734
735/* dirsize.c */
736MRESULT EXPENTRY DirSizeProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
737
738/* getnames.c */
739BOOL insert_filename(HWND hwnd, CHAR * filename, INT loadit, BOOL newok);
740BOOL export_filename(HWND hwnd, CHAR * filename, INT overwrite);
741MRESULT EXPENTRY CustomFileDlg(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
742
743/* input.c */
744MRESULT EXPENTRY InputDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
745
746/* select.c */
747VOID UnHilite(HWND hwndCnr, BOOL all, CHAR *** list, ULONG ulItemsToUnHilite);
748VOID SelectList(HWND hwndCnr, BOOL partial, BOOL deselect, BOOL clearfirst,
749 PCNRITEM pciParent, CHAR * filename, CHAR ** list);
750VOID SelectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask, CHAR * text,
751 BOOL arc);
752VOID DeselectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask,
753 CHAR * text, BOOL arc);
754VOID Deselect(HWND hwndCnr);
755VOID HideAll(HWND hwndCnr);
756VOID RemoveAll(HWND hwndCnr, ULONGLONG * ullTotalBytes, ULONG * totalfiles);
757VOID MarkAll(HWND hwndCnr, BOOL quitit, BOOL target, BOOL source);
758VOID SetMask(CHAR * str, MASK * mask);
759VOID ExpandAll(HWND hwndCnr, BOOL expand, PCNRITEM pciParent);
760VOID InvertAll(HWND hwndCnr);
761VOID SpecialSelect2(HWND hwndParent, INT action);
762
763/* viewer.c */
764MRESULT EXPENTRY MLEEditorProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
765HWND StartMLEEditor(HWND hwnd, INT flags, CHAR * filename, HWND hwndRestore);
766
767/* codepage.c */
768INT PickCodepage(HWND hwnd);
769
770/* fonts.c */
771VOID SetFont(HWND hwnd);
772FATTRS *SetMLEFont(HWND hwndMLE, FATTRS * fattrs, ULONG flags);
773VOID SetPresParamFromFattrs(HWND hwnd, FATTRS * fattrs,
774 SHORT sNominalPointSize, FIXED fxPointSize);
775
776/* saveclip.c */
777BOOL SaveToClip(HWND hwnd, CHAR * text, BOOL append);
778VOID ListToClipboard(HWND hwnd, CHAR ** list, BOOL append);
779CHAR **ListFromClipboard(HWND hwnd);
780BOOL SaveToClipHab(HAB hab, CHAR * text, BOOL append);
781VOID ListToClipboardHab(HAB hab, CHAR ** list, BOOL append);
782CHAR **ListFromClipboardHab(HAB hab);
783MRESULT EXPENTRY SaveListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
784 MPARAM mp2);
785MRESULT EXPENTRY SaveAllListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
786 MPARAM mp2);
787
788/* filter.c */
789INT APIENTRY Filter(PMINIRECORDCORE rmini, PVOID arg);
790BOOL FilterAttrs(PCNRITEM pci, MASK * mask);
791VOID save_masks(VOID);
792MRESULT EXPENTRY PickMaskDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
793 MPARAM mp2);
794
795/* archive.c */
796MRESULT EXPENTRY ArchiveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
797MRESULT EXPENTRY SBoxDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
798
799/* extract.c */
800MRESULT EXPENTRY ExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
801
802/* walkem.c */
803VOID load_udirs(VOID);
804VOID save_udirs(VOID);
805BOOL add_udir(BOOL userdirs, PSZ inpath);
806BOOL remove_udir(PSZ path);
807BOOL remove_ldir(PSZ path);
808VOID free_udirs(VOID);
809VOID free_ldir(VOID);
810VOID fill_setups_list(VOID);
811VOID load_setups(VOID);
812VOID save_setups(VOID);
813INT add_setup(PSZ stateName);
814INT remove_setup(PSZ stateName);
815VOID FillPathListBox(HWND hwnd, HWND hwnddrive, HWND hwnddir, PSZ path,
816 BOOL nounwriteable);
817MRESULT EXPENTRY WalkDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
818MRESULT EXPENTRY WalkAllDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
819MRESULT EXPENTRY WalkCopyDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
820 MPARAM mp2);
821MRESULT EXPENTRY WalkMoveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
822 MPARAM mp2);
823MRESULT EXPENTRY WalkExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
824 MPARAM mp2);
825MRESULT EXPENTRY WalkTargetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
826 MPARAM mp2);
827MRESULT EXPENTRY WalkTwoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
828MRESULT EXPENTRY WalkTwoCmpDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
829 MPARAM mp2);
830MRESULT EXPENTRY WalkTwoSetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
831 MPARAM mp2);
832
833/* assoc.c */
834INT ExecAssociation(HWND hwnd, CHAR * datafile);
835VOID EditAssociations(HWND hwnd);
836VOID load_associations(VOID);
837VOID save_associations(VOID);
838VOID free_associations(VOID);
839
840/*draglist.c */
841HWND DoFileDrag(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd, CHAR * arcfile,
842 CHAR * directory, BOOL moveok);
843HWND DragOne(HWND hwndCnr, HWND hwndObj, CHAR * filename, BOOL moveok);
844HWND DragList(HWND hwnd, HWND hwndObj, CHAR ** list, BOOL moveok);
845BOOL PickUp(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd);
846
847/* droplist.c */
848void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, char *text);
849BOOL AcceptOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2);
850BOOL GetOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2, char *buffer, ULONG buflen);
851BOOL FullDrgName(PDRAGITEM pDItem, CHAR * buffer, ULONG buflen);
852BOOL TwoDrgNames(PDRAGITEM pDItem, CHAR * buffer1, ULONG buflen1,
853 char *buffer2, ULONG buflen2);
854LISTINFO *DoFileDrop(HWND hwndCnr, CHAR * directory, BOOL arcfilesok,
855 MPARAM mp1, MPARAM mp2);
856VOID FreeDragInfoData (HWND hwnd, PDRAGINFO pDInfo);
857BOOL CheckPmDrgLimit(PDRAGINFO pDInfo);
858
859/* shadow.c */
860HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
861 CHAR * cnr);
862HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path,
863 CHAR * cnr);
864HOBJECT CreateFolderObject(CHAR * objtitle, CHAR * cnr);
865HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path,
866 BOOL executable, CHAR * cnr);
867VOID MakeShadows(HWND hwnd, CHAR ** list, ULONG Shadows, CHAR * cnr,
868 CHAR * foldername);
869VOID OpenObject(CHAR * filename, CHAR * type, HWND hwnd);
870BOOL RunSeamless(CHAR * exename, CHAR * args, HWND hwnd);
871
872/* printer.c */
873BOOL PrinterReady(CHAR * printdevname);
874BOOL SayPrinterReady(HWND hwnd);
875VOID PrintListThread(VOID * arg);
876MRESULT EXPENTRY PrintDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
877
878/* attribs.c */
879MRESULT EXPENTRY AttrListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
880 MPARAM mp2);
881
882/* rename.c */
883MRESULT EXPENTRY RenameProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
884
885/* findrec.c */
886PCNRITEM FindCnrRecord(HWND hwndCnr, CHAR * filename, PCNRITEM pciParent,
887 BOOL partial, BOOL partmatch, BOOL noenv);
888PCNRITEM FindParentRecord(HWND hwndCnr, PCNRITEM pciC);
889VOID ShowCnrRecord(HWND hwndCnr, PMINIRECORDCORE pmi);
890
891/* update.c */
892HPOINTER SelectDriveIcon(PCNRITEM pci);
893PCNRITEM UpdateCnrRecord(HWND hwndCnr, CHAR * filename, BOOL partial,
894 DIRCNRDATA * dcd);
895BOOL UpdateCnrList(HWND hwndCnr, CHAR ** filename, INT howmany, BOOL partial,
896 DIRCNRDATA * dcd);
897
898/* info.c */
899MRESULT EXPENTRY DrvInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
900MRESULT EXPENTRY FileInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
901MRESULT EXPENTRY SetDrvProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
902
903#if defined(__IBMC__)
904/* fsopen.c */
905FILE *_fsopen(CHAR * filename, CHAR * mode, INT sharemode, ...);
906#endif
907
908/* seticon.c */
909MRESULT EXPENTRY SetIconDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
910
911/* objcnr.c */
912MRESULT EXPENTRY ObjCnrDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
913
914/* sortcnr.c */
915SHORT APIENTRY SortTreeCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
916 PVOID pStorage);
917SHORT APIENTRY SortDirCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
918 PVOID pStorage);
919SHORT APIENTRY SortCollectorCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
920 PVOID pStorage);
921SHORT SortCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, INT Sortflags);
922
923/* collect.c */
924MRESULT EXPENTRY CollectorClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
925 MPARAM mp2);
926MRESULT EXPENTRY CollectorTextProc(HWND hwnd, ULONG msg, MPARAM mp1,
927 MPARAM mp2);
928HWND StartCollector(HWND hwndParent, INT flags);
929MRESULT EXPENTRY CollectorObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
930 MPARAM mp2);
931
932/* instant.c */
933MRESULT EXPENTRY InstantDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
934
935/* undel.c */
936MRESULT EXPENTRY UndeleteDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
937 MPARAM mp2);
938
939/* killproc.c */
940MRESULT EXPENTRY KillDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
941
942/* sysinfo.c */
943MRESULT EXPENTRY SysInfoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
944
945/* objwin.c */
946MRESULT EXPENTRY ObjectWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
947VOID MakeObjWin(VOID * args);
948
949/* progstup.c */
950MRESULT EXPENTRY ProgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
951
952/* key.c */
953MRESULT EXPENTRY AboutDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
954
955/* notify.c */
956MRESULT EXPENTRY NotifyWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
957HWND Notify(char *text);
958HWND DoNotify(char *text);
959VOID NotifyError(CHAR * filename, APIRET error);
960VOID StartNotes(CHAR * s);
961BOOL AddNote(CHAR * note);
962VOID EndNote(VOID);
963VOID ShowNote(VOID);
964VOID HideNote(VOID);
965
966/* winlist.c */
967VOID WindowList(HWND hwnd);
968
969/* viewinf.c */
970MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
971
972/* commafmt.c */
973size_t commafmt(PSZ pszBuf, UINT cBufSize, LONG lNumber);
974size_t CommaFmtUL(char *pszBuf, UINT cBufSize, ULONG ullNumber,
975 CHAR chPreferred);
976size_t CommaFmtULL(char *pszBuf, UINT cBufSize, ULONGLONG ullNumber,
977 CHAR chPreferred);
978
979/* autoview.c */
980BOOL WriteEA(HWND hwnd, CHAR * filename, CHAR * eaname, USHORT type,
981 CHAR * data);
982BOOL PutComments(HWND hwnd, CHAR * filename, CHAR * comments);
983MRESULT EXPENTRY AutoViewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
984ULONG CreateHexDump(CHAR * value, ULONG cbValue, CHAR * ret, ULONG retlen,
985 ULONG startval, BOOL longlead);
986
987/* menu.c */
988BOOL AddToMenu(CHAR * filename, HWND hwndMenu);
989
990/* worker.c */
991VOID MassAction(VOID * args);
992VOID Action(VOID * args);
993
994/* fm2cmd.c */
995BOOL FM2Command(CHAR * directory, CHAR * command);
996
997/* seeall.c */
998MRESULT EXPENTRY SeeAllWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
999MRESULT EXPENTRY SeeStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1000HWND StartSeeAll(HWND hwndParent, BOOL standalone, CHAR * startpath);
1001
1002/* newview.c */
1003MRESULT EXPENTRY ViewWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1004MRESULT EXPENTRY ViewStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1005HWND StartViewer(HWND hwndParent, USHORT flags, CHAR * filename,
1006 HWND hwndRestore);
1007
1008/* colors.c */
1009MRESULT EXPENTRY ColorDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1010
1011/* defview.c */
1012BOOL ShowMultimedia(CHAR * filename);
1013VOID DefaultView(HWND hwnd, HWND hwndFrame, HWND hwndParent, SWP * swp,
1014 ULONG flags, CHAR * filename);
1015VOID DefaultViewKeys(HWND hwnd, HWND hwndFrame, HWND hwndParent,
1016 SWP * swp, CHAR * filename);
1017#define QuickView(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,0,f)
1018#define QuickEdit(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,8,f)
1019
1020/* catalog.c */
1021MRESULT EXPENTRY CatalogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1022
1023/* uudecode.c */
1024int UUD(char *filename, char *outname);
1025MRESULT EXPENTRY MergeDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1026
1027/* loadbmp.c */
1028HBITMAP LoadBitmapFromFileNum(USHORT id);
1029HBITMAP LoadBitmapFromFile(CHAR * pszFileName);
1030
1031/* remap.c */
1032MRESULT EXPENTRY RemapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1033
1034/* timer.c */
1035BOOL StartTimer(void);
1036void StopTimer(void);
1037
1038/* grep2.c */
1039MRESULT EXPENTRY GrepDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1040
1041/* common.c */
1042MRESULT EXPENTRY CommonFrameWndProc(USHORT id,
1043 HWND hwnd,
1044 ULONG msg, MPARAM mp1, MPARAM mp2);
1045MRESULT EXPENTRY CommonTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1046void CommonTextPaint(HWND hwnd, HPS hps);
1047void CommonCreateTextChildren(HWND hwnd, char *class, USHORT * ids);
1048void CommonDriveCmd(HWND hwnd, char *drive, USHORT cmd);
1049void CommonCreateMainChildren(HWND hwnd, SWP * swp);
1050MRESULT EXPENTRY CommonMainWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1051 MPARAM mp2);
1052MRESULT EXPENTRY CommonTextButton(HWND hwnd, ULONG msg, MPARAM mp1,
1053 MPARAM mp2);
1054MRESULT EXPENTRY CommonCnrProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1055HWND OpenDirCnr(HWND hwnd, HWND hwndParent, HWND hwndRestore,
1056 BOOL noautotile, char *directory);
1057VOID IncrThreadUsage(VOID);
1058VOID DecrThreadUsage(VOID);
1059
1060/* wrappers.c */
1061APIRET xDosFindFirst(PSZ pszFileSpec,
1062 PHDIR phdir,
1063 ULONG flAttribute,
1064 PVOID pfindbuf,
1065 ULONG cbBuf,
1066 PULONG pcFileNames,
1067 ULONG ulInfoLevel);
1068APIRET xDosFindNext(HDIR hDir,
1069 PVOID pfindbuf,
1070 ULONG cbfindbuf,
1071 PULONG pcFilenames,
1072 ULONG ulInfoLevel); // 06 Oct 07 SHL Added
1073APIRET xDosSetPathInfo(PSZ pszPathName,
1074 ULONG ulInfoLevel,
1075 PVOID pInfoBuf,
1076 ULONG cbInfoBuf,
1077 ULONG flOptions);
1078PSZ xfgets(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1079 UINT uiLineNumber);
1080PSZ xfgets_bstripcr(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1081 UINT uiLineNumber);
1082FILE *xfopen(PCSZ pszFileName, PCSZ pszMode, PCSZ pszSrcFile,
1083 UINT uiLineNumber);
1084FILE *xfsopen(PCSZ pszFileName, PCSZ pszMode, INT fSharemode, PCSZ pszSrcFile,
1085 UINT uiLineNumber);
1086VOID xfree(PVOID pv, PCSZ pszSrcFile, UINT uiLineNumber);
1087PVOID xmalloc(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1088PVOID xmallocz(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1089PVOID xrealloc(PVOID pvIn, size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1090PVOID xstrdup(PCSZ pszIn, PCSZ pszSrcFile, UINT uiLineNumber);
1091
1092//=====================================================================
1093
1094#ifdef DEFINE_GLOBALS
1095#define DATADEF
1096#else
1097#define DATADEF extern
1098#endif
1099
1100DATADEF ARC_TYPE *arcsighead;
1101DATADEF BOOL arcsigsloaded;
1102DATADEF BOOL arcsigsmodified;
1103DATADEF UINT arcsigs_header_lines; // Header comments line count in archiver.bb2
1104DATADEF UINT arcsigs_trailer_line_num; // Trailer comments start line number (1..n)
1105
1106DATADEF USHORT nodes, shiftstate;
1107DATADEF HEV CompactSem;
1108DATADEF HWND hwndMain, hwndTree, hwndStatus, hwndStatus2, hwndTrash,
1109 hwndButtonlist, hwndDrivelist, hwndStatelist, hwndUserlist,
1110 hwndAutoview, hwndAttr, hwndDate, hwndName, hwndBack,
1111 hwndLED, hwndLEDHdr, hwndAutoMLE, hwndCmdlist;
1112DATADEF HBITMAP hbmLEDon, hbmLEDoff;
1113DATADEF CHAR ArcTempRoot[CCHMAXPATH], ThousandsSeparator[2], *pTmpDir;
1114DATADEF HPOINTER hptrArrow, hptrBusy, hptrLast, hptrDir, hptrFile, hptrRemote,
1115 hptrFloppy, hptrDrive, hptrRemovable, hptrCDROM,hptrVirtual,hptrRamdisk,
1116 hptrFinger, hptrApp, hptrDunno, hptrSystem, hptrHidden,
1117 hptrReadonly, hptrNS, hptrZipstrm, hptrArc, hptrArt, hptrEW,
1118 hptrCommon, hptrEnv;
1119DATADEF PFNWP PFNWPCnr, PFNWPFrame, PFNWPButton, PFNWPStatic, PFNWPMLE;
1120DATADEF BOOL fLoadSubject, fLoadLongnames, fForceUpper, fForceLower,
1121 fSyncUpdates, fAutoTile, fDontMoveMouse, loadedudirs,
1122 fUnHilite, fWorkPlace, fConfirmDelete, fToolbar,
1123 fToolsChanged, MenuInvisible, fFreeTree, fFollowTree,
1124 fNoIconsFiles, fNoIconsDirs, fVerify, fDCOpens,
1125 fLinkSetsIcon, fSaveState, fTextTools, fCopyDefault,
1126 fToolTitles, fLogFile, fRealIdle, fNoSaveState, fUseQSysState,
1127 fSplitStatus, fArcStuffVisible, fUseMCI, fAmAV2,
1128 fNoTreeGap, fDummy, fVTreeOpensWPS, fUseQProcStat,
1129 fStartMinimized, fStartMaximized, fRemoteBug, fReminimize,
1130 fDragndropDlg, fMinOnOpen, fUserComboBox,
1131 fQuickArcFind, fNoRemovableScan, fAutoView, fDataMin,
1132 fDataToFore, fDataShowDrives, fDataInclRemote,
1133 fExternalArcboxes, fExternalViewer, fExternalCollector,
1134 fExternalINIs, fDefaultDeletePerm, fIniExisted, fUseNewViewer,
1135 fTileBackwards, fFolderAfterExtract, fUserListSwitches,
1136 fGuessType, fAutoAddDirs, fUdirsChanged, fSelectedAlways,
1137 fToolbarHelp, fComments, fMoreButtons, fNoSearch, fOtherHelp,
1138 fKeepCmdLine, fAmClosing, fSeparateParms, fTopDir,
1139 fLookInDir, fSwitchTree, fSwitchTreeOnFocus, fDrivebar,
1140 fSwitchTreeExpand, fCollapseFirst, fFilesInTree, fNoDead,
1141 fThreadNotes, fOkayMinimize, fRunning, fDullMin, fBlueLED,
1142 fViewChild, fShowEnv, fLeaveTree, fNoFoldMenu,
1143 fCustomFileDlg, fSaveMiniCmds, fSaveBigCmds, fNoTileUpdate,
1144 fFM2Deletes, fAutoAddAllDirs, fConfirmTarget, fChangeTarget,
1145 fFirstTime, fShowTarget, fNoFinger, fDrivebarHelp, fCheckMM,
1146 fNoLargeFileSupport, fNoMailtoMailRun,
1147 fHttpRunWPSDefault, fFtpRunWPSDefault, fLibPathStrictMailRun,
1148 fLibPathStrictHttpRun, fLibPathStrictFtpRun, fCancelAction, fTrashCan;
1149DATADEF DETAILS_SETTINGS dsDirCnrDefault;
1150DATADEF PID mypid;
1151DATADEF INT driveflags[26], driveserial[26];
1152DATADEF ULONG NoBrokenNotify, fwsAnimate, OS2ver[2], DriveLines;
1153DATADEF HINI fmprof;
1154DATADEF HELPINIT hini;
1155DATADEF HWND hwndHelp, LastDir, AboutBox, DirMenu, FileMenu, TreeMenu,
1156 ArcMenu, DirCnrMenu, TreeCnrMenu, ArcCnrMenu,
1157 CollectorCnrMenu, CollectorFileMenu, CollectorDirMenu,
1158 Collector, MainPopupMenu, DataHwnd, AutoMenu, hwndBubble,
1159 hwndToolback, MainObjectHwnd, hwndMainMenu;
1160
1161#ifdef DEFINE_GLOBALS
1162#pragma data_seg(GLOBAL2)
1163#endif
1164
1165DATADEF CHAR *FM3Str, *FM2Str, *NullStr, *Default, *Settings,
1166 *DRM_OS2FILE, *DRM_FM2ARCMEMBER, *DRF_FM2ARCHIVE,
1167 *DRMDRFLIST, *DRMDRFOS2FILE, *DRMDRFFM2ARC,
1168 *DRM_FM2INIRECORD, *DRF_FM2INI, *SUBJECT, *LONGNAME,
1169 *HPFS, *JFS, *CDFS, *FAT32, *HPFS386, *NDFS32, *CBSIFS, *ISOFS, *RAMFS, *NTFS,
1170 *WPProgram, *FM3Folder, *FM3Tools;
1171DATADEF RGB2 RGBGREY, RGBBLACK;
1172DATADEF CHAR archiverbb2[CCHMAXPATH], StopPrinting, profile[CCHMAXPATH], extractpath[CCHMAXPATH],
1173 lastextractpath[CCHMAXPATH];
1174DATADEF CHAR appname[12], realappname[12];
1175DATADEF CHAR lasttoolbox[CCHMAXPATH], HomePath[CCHMAXPATH],
1176 SwapperDat[CCHMAXPATH], printer[CCHMAXPATH], szDefArc[CCHMAXPATH];
1177DATADEF HMODULE FM3DllHandle, FM3ModHandle;
1178DATADEF CHAR *quicktool[50];
1179DATADEF BOOL qtloaded;
1180DATADEF INT sortFlags, TreesortFlags, CollectorsortFlags;
1181DATADEF INT butxsize, butysize;
1182DATADEF FILE *LogFileHandle;
1183
1184#define FILESTOGET_MIN 256
1185#define FILESTOGET_MAX 4096
1186
1187DATADEF ULONG ulCnrType, FilesToGet, AutoviewHeight, TreeWidth, FM3UL;
1188DATADEF long prnwidth, prnlength, prntmargin, prnbmargin, prnlmargin,
1189 prnrmargin, prnspacing, prntabspaces;
1190DATADEF BOOL prnpagenums, prnformat, prnformfeedbefore, prnformfeedafter,
1191 prnalt;
1192DATADEF LINKDIRS *udirhead, *ldirhead;
1193DATADEF LINKCMDS *cmdhead, *cmdtail;
1194DATADEF BOOL cmdloaded;
1195DATADEF CHAR *WC_OBJECTWINDOW, *WC_BUBBLE, *WC_TOOLBUTTONS, *WC_DRIVEBUTTONS, *WC_DIRCONTAINER,
1196 *WC_DIRSTATUS, *WC_TREECONTAINER, *WC_TREEOPENBUTTON, *WC_TREESTATUS, *WC_MAINWND,
1197 *WC_MAINWND2, *WC_AUTOVIEW, *WC_LED, *WC_COLLECTOR, *WC_COLSTATUS, *WC_STATUS, *WC_TOOLBACK,
1198 *WC_DRIVEBACK, *WC_ARCCONTAINER, *WC_ARCSTATUS, *WC_MLEEDITOR, *WC_INIEDITOR, *WC_SEEALL,
1199 *WC_NEWVIEW, *WC_SEESTATUS, *WC_VIEWSTATUS, *WC_ERRORWND, *WC_MINITIME, *WC_DATABAR;
1200
1201#ifdef DEFINE_GLOBALS
1202#pragma data_seg(GLOBAL3)
1203#endif
1204
1205DATADEF BOOL fWantFirstTimeInit;
1206DATADEF LONG standardcolors[16];
1207
1208#ifdef INCL_MMIOOS2
1209#pragma pack(4)
1210/* definitions for MMPM/2 imports */
1211typedef DWORD(APIENTRY MMIOIDENTIFYFILE) (PSZ, PMMIOINFO, PMMFORMATINFO,
1212 PFOURCC, DWORD, DWORD);
1213typedef MMIOIDENTIFYFILE *PMMIOIDENTIFYFILE;
1214typedef DWORD(APIENTRY MMIOOPEN)( PSZ, PMMIOINFO, DWORD);
1215typedef MMIOOPEN *PMMIOOPEN;
1216typedef WORD (APIENTRY MMIOGETINFO)( HMMIO, PMMIOINFO, WORD);
1217typedef MMIOGETINFO *PMMIOGETINFO;
1218typedef WORD (APIENTRY MMIOCLOSE)( HMMIO, WORD);
1219typedef MMIOCLOSE *PMMIOCLOSE;
1220
1221#pragma pack()
1222#endif
1223
1224#ifdef DEFINE_GLOBALS
1225#pragma data_seg(GLOBAL4)
1226#endif
1227
1228DATADEF HSWITCH switches[499];
1229DATADEF ULONG numswitches;
1230
1231#define priority_idle() DosSetPriority(PRTYS_THREAD,PRTYC_IDLETIME,30L,0L)
1232#define priority_normal() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,0L,0L)
1233#define priority_tweaked() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,1L,0L)
1234#define priority_bumped() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,3L,0L)
1235#define priority_critical() DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,2L,0L)
1236#define priority_max() DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,31L,0L)
1237#define SysVal(value) WinQuerySysValue(HWND_DESKTOP, (value))
1238
1239#endif // FM3DLL_H
Note: See TracBrowser for help on using the repository browser.