source: trunk/dll/fm3dll.h @ 875

Last change on this file since 875 was 875, checked in by Gregg Young, 13 years ago

Used global variable to link presparams to main menu window for both drop down and pop up menus

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 51.9 KB
Line 
1
2/***********************************************************************
3
4  $Id: fm3dll.h 875 2007-11-23 23:14:45Z gyoung $
5
6  Common definitions
7
8  Copyright (c) 1993-98 M. Kimes
9  Copyright (c) 2001, 2007 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
68***********************************************************************/
69
70#if defined(__IBMC__)
71#if __IBMC__ != 430
72#error VAC365 required for long long support
73#endif
74#if !defined(_LONG_LONG)
75#error Long long support not enabled
76#endif
77#endif
78
79#ifdef DEFINE_GLOBALS
80#pragma data_seg(GLOBAL1)
81#endif
82
83#define PP_MAX    PP_MENUDISABLEBGNDCOLORINDEX
84#define PP_MAXBUF 384
85
86#ifndef MM_PORTHOLEINIT
87#define MM_PORTHOLEINIT   0x01fb
88#endif
89#ifndef MS_POPUP
90#define MS_POPUP          0x00000010L
91#endif
92#ifndef CCS_MINIICONS
93#define CCS_MINIICONS     0x0800
94#endif
95#ifndef CRA_SOURCE
96#define CRA_SOURCE        0x00004000
97#endif
98#ifndef CV_EXACTMATCH
99#define CV_EXACTMATCH     0x10000000
100#endif
101#ifndef CBN_SETFOCUS
102#define CBN_SETFOCUS      20
103#endif
104#ifndef CBN_KILLFOCUS
105#define CBN_KILLFOCUS     21
106#endif
107#ifndef CN_VERIFYEDIT
108#define CN_VERIFYEDIT     134
109#endif
110#ifndef CN_PICKUP
111#define CN_PICKUP         135
112#endif
113#ifndef CN_DROPNOTIFY
114#define CN_DROPNOTIFY     136
115#endif
116#ifndef CN_GRIDRESIZED
117#define CN_GRIDRESIZED    137
118#endif
119#ifndef BKS_MERLINSTYLE
120#define BKS_MERLINSTYLE   0x0800
121#endif
122
123// PMBITMAP_INCLUDED - IBM Toolkit
124// INCL_GPIBITMAPS - OpenWatcom Toolkit
125#if !defined(PMBITMAP_INCLUDED) && !defined(INCL_GPIBITMAPS)
126typedef struct _RGB2            /* rgb2 */
127{
128  BYTE bBlue;                   /* Blue component of the color definition */
129  BYTE bGreen;                  /* Green component of the color definition */
130  BYTE bRed;                    /* Red component of the color definition  */
131  BYTE fcOptions;               /* Reserved, must be zero                 */
132}
133RGB2;
134typedef RGB2 *PRGB2;
135#endif
136
137 /**************************************************/
138 /* Lazy Drag API's.                               */
139 /**************************************************/
140BOOL APIENTRY DrgLazyDrag(HWND hwndSource,
141                          PDRAGINFO pdinfo,
142                          PDRAGIMAGE pdimg, ULONG cdimg, PVOID pRsvd);
143
144BOOL APIENTRY DrgCancelLazyDrag(VOID);
145
146BOOL APIENTRY DrgLazyDrop(HWND hwndTarget,
147                          ULONG ulOperation, PPOINTL pptlDrop);
148
149PDRAGINFO APIENTRY DrgQueryDraginfoPtr(PDRAGINFO pRsvd);
150
151PDRAGINFO APIENTRY DrgQueryDraginfoPtrFromHwnd(HWND hwndSource);
152
153PDRAGINFO APIENTRY DrgQueryDraginfoPtrFromDragitem(PDRAGITEM pditem);
154
155ULONG APIENTRY DrgQueryDragStatus(VOID);
156
157PDRAGINFO APIENTRY DrgReallocDraginfo(PDRAGINFO pdinfoOld, ULONG cditem);
158
159 /* Drag Status Flags */
160#define DGS_DRAGINPROGRESS         0x0001       /* Standard Drag in Progress. */
161#define DGS_LAZYDRAGINPROGRESS     0x0002       /* Lazy Drag in Progress.     */
162
163#define LINES_PER_ARCSIG        21      // Lines in each archiver.bb2 definition
164#define CON_COLS                6
165#define INSTDATA(h)             WinQueryWindowPtr((h),QWL_USER)
166#define DIR_SPLITBAR_OFFSET     18 * 12 /* Pixel offset of details splitbar */
167#define CONTAINER_COLUMNS       13      /* Number of columns in details view */
168#define RGBFROMPARTS(r,g,b)     (((r) * 65536) + ((g) * 256) + (b))
169
170#define EXTRA_RECORD_BYTES      (sizeof(CNRITEM) - sizeof(MINIRECORDCORE))
171#define EXTRA_ARCRECORD_BYTES   (sizeof(ARCITEM) - sizeof(MINIRECORDCORE))
172
173#define ALLATTRS                (FILE_NORMAL | FILE_DIRECTORY | FILE_ARCHIVED |\
174                                 FILE_HIDDEN | FILE_READONLY | FILE_SYSTEM)
175#define LISTTEMPROOT            "$FM2LI$T."
176
177#include "fm3dll2.h"                    // SHL
178
179#define UM_PAINT            (WM_USER)
180#define UM_SETUP            (WM_USER + 1)
181#define UM_RESCAN           (WM_USER + 2)
182#define UM_INITIALSIZE      (WM_USER + 3)
183#define UM_CONTROL          (WM_USER + 4)
184#define UM_COMMAND          (WM_USER + 5)
185#define UM_SIZE             (WM_USER + 6)
186#define UM_FOCUSME          (WM_USER + 7)
187#define UM_FIXEDITNAME      (WM_USER + 8)
188#define UM_UPDATERECORD     (WM_USER + 9)
189#define UM_SETDIR           (WM_USER + 10)
190#define UM_CONTAINER_FILLED (WM_USER + 11)
191#define UM_STRETCH          (WM_USER + 12)
192#define UM_LOADFILE         (WM_USER + 13)
193#define UM_MOUSEMOVE        (WM_USER + 14)
194#define UM_ENTER            (WM_USER + 15)
195#define UM_CLOSE            (WM_USER + 16)
196#define UM_ACTION           (WM_USER + 17)
197#define UM_MASSACTION       (WM_USER + 18)
198#define UM_UPDATERECORDLIST (WM_USER + 19)
199#define UM_FILESMENU        (WM_USER + 20)
200#define UM_SELECT           (WM_USER + 21)
201#define UM_VIEWSMENU        (WM_USER + 22)
202#define UM_CONTAINERHWND    (WM_USER + 23)
203#define UM_OPENWINDOWFORME  (WM_USER + 24)
204#define UM_FOLDUP           (WM_USER + 25)
205#define UM_INITMENU         (WM_USER + 26)
206#define UM_COMPARE          (WM_USER + 27)
207#define UM_EXPAND           (WM_USER + 28)
208#define UM_REPLACEFOCUS     (WM_USER + 29)
209#define UM_UNDO             (WM_USER + 30)
210#define UM_RENDER           (WM_USER + 31)
211#define UM_BUTTON2DOWN      (WM_USER + 32)
212#define UM_BUTTON2UP        (WM_USER + 33)
213#define UM_COLLECTFROMFILE  (WM_USER + 34)
214#define UM_TIMER            (WM_USER + 35)
215#define UM_HELPON           (WM_USER + 36)
216#define UM_SETUP2           (WM_USER + 37)
217#define UM_SETUP3           (WM_USER + 38)
218#define UM_CONTEXTMENU      (WM_USER + 39)
219#define UM_FILLUSERLIST     (WM_USER + 40)
220#define UM_CONTAINERDIR     (WM_USER + 41)
221#define UM_SETUP4           (WM_USER + 42)
222#define UM_FILLSETUPLIST    (WM_USER + 43)
223#define UM_ARRANGEICONS     (WM_USER + 44)
224#define UM_SETUP5           (WM_USER + 45)
225#define UM_NOTIFY           (WM_USER + 46)
226#define UM_INSERTRECORD     (WM_USER + 47)
227#define UM_ADDTOMENU        (WM_USER + 48)
228#define UM_COLLECT          (WM_USER + 49)
229#define UM_RESTOREDC        (WM_USER + 50)
230#define UM_MINIMIZE         (WM_USER + 51)
231#define UM_MAXIMIZE         (WM_USER + 52)
232#define UM_BUTTON1MOTIONSTART (WM_USER + 53)
233#define UM_SETUP6           (WM_USER + 54)
234#define UM_FILLBUTTONLIST   (WM_USER + 55)
235#define UM_SETUSERLISTNAME  (WM_USER + 56)
236#define UM_FILTER           (WM_USER + 57)
237#define UM_SORTRECORD       (WM_USER + 58)
238#define UM_SIZE2            (WM_USER + 59)
239#define UM_RESTORE          (WM_USER + 60)
240#define UM_TOPDIR           (WM_USER + 61)
241#define UM_SHOWME           (WM_USER + 62)
242#define UM_RESCAN2          (WM_USER + 63)
243#define UM_BUILDDRIVEBAR    (WM_USER + 64)
244#define UM_THREADUSE        (WM_USER + 65)
245#define UM_DRIVECMD         (WM_USER + 66)
246#define UM_ADVISEFOCUS      (WM_USER + 67)
247#define UM_FIXCNRMLE        (WM_USER + 68)
248#define UM_FLESH            (WM_USER + 69)
249#define UM_FILLCMDLIST      (WM_USER + 70)
250#define UM_CLICKED          (WM_USER + 71)
251#define UM_CLICKED3         (WM_USER + 72)
252#define UM_HIDENOTSELECTED  (WM_USER + 73)
253
254typedef struct
255{
256  USHORT size;
257  USHORT dummy;
258  CHAR szCurrentPath1[CCHMAXPATH];
259  CHAR szCurrentPath2[CCHMAXPATH];
260}
261WALK2;
262
263typedef struct LINKDIRS
264{
265  CHAR *path;
266  struct LINKDIRS *next;
267}
268LINKDIRS;
269
270typedef struct
271{
272  USHORT size;
273  USHORT numcolors;
274  USHORT flags;
275  USHORT currentcolor;
276  ULONG prompt;
277  long *colors;
278  ULONG descriptions;
279  long *origs;
280}
281COLORS;
282
283typedef struct LINKCMDS
284{
285  CHAR *cl;
286  CHAR *title;
287  ULONG flags;
288  struct LINKCMDS *next;
289  struct LINKCMDS *prev;
290}
291LINKCMDS;
292
293typedef struct
294{
295  CHAR szMask[CCHMAXPATH];
296  CHAR szMaskCopy[CCHMAXPATH];
297  CHAR *pszMasks[26];
298  ULONG attrFile;
299  ULONG antiattr;
300  BOOL fNoAttribs;
301  BOOL fShowDirs;
302  BOOL fNoDirs;
303  BOOL fIsTree;
304  BOOL fIsSeeAll;
305  BOOL fFilesIncluded;
306  BOOL fText;
307  CHAR szText[256];
308  CHAR prompt[80];
309}
310MASK;
311
312typedef struct
313{
314  CHAR *title;                  /* title of dialog */
315  CHAR *prompt;                 /* prompt to user */
316  CHAR *ret;                    /* buffer out, default in */
317  CHAR *help;                   /* help text */
318  INT inputlen;                 /* max len of ret */
319}
320STRINGINPARMS;
321
322typedef struct
323{
324  CHAR *source;
325  CHAR target[CCHMAXPATH];
326  BOOL rename;
327  BOOL skip;
328  BOOL dontask;
329  BOOL overold;
330  BOOL overnew;
331  BOOL overwrite;
332}
333MOVEIT;
334
335typedef struct HOLDFEA
336{
337  PFEA2 pfea;
338  CHAR *name;
339  CHAR *value;
340  BYTE fEA;
341  BYTE cbName;
342  USHORT cbValue;
343  struct HOLDFEA *next;
344}
345HOLDFEA;
346
347typedef struct
348{
349  HWND hwnd;
350  HWND hwndS;
351  USHORT type;
352  USHORT id;
353  INT flags;
354  struct __arc_type__ *info;
355  CHAR **list;
356  ULONG *ulitemID;
357  ULONGLONG *cbFile;
358  CHAR targetpath[CCHMAXPATH + 6];
359  CHAR arcname[CCHMAXPATH];
360  CHAR runfile[CCHMAXPATH];
361}
362LISTINFO;
363
364typedef struct
365{
366  USHORT size;
367  USHORT dummy;
368  CHAR directory[CCHMAXPATH];
369  HWND hwndParent;
370  HWND hwndFrame;
371  HWND hwndClient;
372  HWND hwndCnr;
373  LISTINFO *li;
374}
375WORKER;
376
377typedef struct
378{
379  USHORT size;
380  USHORT flags;
381  USHORT cmd;
382  USHORT dummy;
383  CHAR *prompt;
384  CHAR **list;
385}
386CHECKLIST;
387
388typedef struct
389{
390  ULONG flags;
391  CHAR *commandline;
392  CHAR path[CCHMAXPATH];
393  CHAR environment[1001];
394  CHAR tempprompt[128];
395  CHAR title[80];
396  BOOL dropped;
397}
398EXECARGS;
399
400#pragma pack(1)
401
402// Compare directory flags
403#define CNRITEM_SMALLER   0x00010000    // file exists in both containers and this one is smaller
404#define CNRITEM_LARGER    0x00020000
405#define CNRITEM_NEWER     0x00040000
406#define CNRITEM_OLDER     0x00080000
407#define CNRITEM_EXISTS    0x00100000    // file exists in both containers
408
409#define RECFLAGS_ENV      0x00000001
410#define RECFLAGS_NODRAG   0x00000002
411#define RECFLAGS_NODROP   0x00000004
412#define RECFLAGS_UNDERENV 0x00000008
413
414#define ARCFLAGS_REALDIR    0x00000001
415#define ARCFLAGS_PSEUDODIR  0x00000002
416
417#define CBLIST_TO_EASIZE(cb) ((cb) > 4 ? (cb) / 2 : 0)  // FILEFINDBUF4L.cbList to logical EA size
418
419typedef struct _CNRITEM
420{                               /* CONTAINER RECORD STRUCTURE */
421  MINIRECORDCORE rc;            /* Base information */
422  HWND hwndCnr;                 /* The container holding this record */
423  PSZ pszFileName;              // Points to buffer holding full pathname or NullStr
424  PSZ pszDisplayName;           // Points to displayable part of path name  - used by CFA_STRING
425  CHAR *pszSubject;             // Points subject buffer or Nullstr - used by fm/2 and by CFA_STRING
426  CHAR *pszDispAttr;            // Points to szDispAttr - required by CFA_STRING
427  CDATE date;                   /* Last write date of file */
428  CTIME time;                   /* Last write time of file */
429  CDATE ladate;                 /* Last access date of file */
430  CTIME latime;                 /* Last access time of file */
431  CDATE crdate;                 /* Creation date of file */
432  CTIME crtime;                 /* Creation time of file */
433  CHAR *pszLongName;            // Points to long name buffer - used by code and by CFA_STRING
434  CHAR *pszFmtFileSize;         // Comma formatted file size for large file support
435  ULONGLONG cbFile;             /* File size */
436  ULONGLONG easize;             // Size of EAs - dirsize uses this - hack cough
437  ULONG attrFile;               /* Attributes of this file */
438  ULONG flags;
439}
440CNRITEM, *PCNRITEM;
441
442typedef struct _ARCITEM
443{                               // ARCHIVE CONTAINER RECORD STRUCTURE
444  MINIRECORDCORE rc;            // Base information
445  HWND hwndCnr;                 /* Container holding this record */
446  PSZ pszFileName;              // Points to full path name or NullStr
447  PSZ pszDisplayName;           // Points to displayable part of path name  - used by CFA_STRING
448  CHAR szDate[40];              // File's assembled date
449  PSZ pszDate;                  // Pointer to date
450  CDATE date;                   // if we know date format
451  CTIME time;                   // if we know time format
452  ULONGLONG cbFile;             // File's original size
453  ULONGLONG cbComp;             // File's compressed size
454  ULONG flags;
455}
456ARCITEM, *PARCITEM;
457
458#pragma pack()
459
460typedef struct
461{
462  ULONG attrFile;
463  ULONGLONG cbFile;
464  ULONGLONG easize;
465  FDATE date;
466  FTIME time;
467  FDATE ladate;
468  FTIME latime;
469  FDATE crdate;
470  FTIME crtime;
471  CHAR fname[1];
472}
473FILELIST;
474
475typedef struct __arc_type__
476{
477  CHAR *id;                     // User id
478  CHAR *ext;                    // Extension (without leading dot)
479  LONG file_offset;             // Offset to signature (0..n)
480  CHAR *list;                   // List command
481  CHAR *extract;                // Extract command
482  CHAR *exwdirs;                // Extract with directories command
483  CHAR *test;                   // Test command
484  CHAR *create;                 // Create without directories
485  CHAR *move;                   // Move into archive without directories
486  CHAR *createrecurse;          // Create with recurse and directories
487  CHAR *createwdirs;            // Create with directories
488  CHAR *movewdirs;              // Move into archive with directories
489  CHAR *delete;                 // Delete from archive
490  CHAR *signature;              // Archiver signature
491  CHAR *startlist;              // Listing start marker (blank means no start marker)
492  CHAR *endlist;                // Listing end marker (blank means next blank line or EOF)
493  INT siglen;                   // Signature length in bytes
494  INT osizepos;                 // Original file size position (0..n) or -1
495  INT nsizepos;                 // Compressed file size position or -1
496  INT fdpos;                    // File date position or -1
497  INT fdflds;                   // File date element count (typically 3) or -1
498  INT fnpos;                    // File name position or -1 if last
499  INT datetype;                 // Date field format
500  UINT comment_line_num;        // Comment start in old sig file (1..n), 0 if none
501  UINT defn_line_num;           // Definition start in old sig file (1..n), 0 if none
502  BOOL nameislast;              // Name is last item on line
503  BOOL nameisnext;              // File name is on next line
504  BOOL nameisfirst;             // File name is first item on line
505  struct __arc_type__ *next;
506  struct __arc_type__ *prev;
507}
508ARC_TYPE;
509
510typedef struct
511{
512  USHORT size;
513  ARC_TYPE *info;
514  CHAR *arcname;
515  CHAR masks[257];
516  CHAR command[257];
517  CHAR extractdir[CCHMAXPATH];
518  INT ret;
519}
520EXTRDATA;
521
522typedef struct
523{
524  ARC_TYPE *info;
525  CHAR listname[CCHMAXPATH];
526  CHAR arcname[CCHMAXPATH];
527  CHAR *errmsg;
528}
529ARCDUMP;
530
531typedef struct DIRCNRDATA
532{
533  USHORT size;
534  USHORT id;
535  INT type;
536  ULONG flWindowAttr;
537  HWND hwndParent;
538  HWND hwndCnr;
539  HWND hwndObject;
540  HWND hwndFrame;
541  HWND hwndClient;
542  HWND hwndLastMenu;
543  HWND hwndExtract;
544  HWND hwndLastDirCnr;
545  HWND hwndRestore;
546  CHAR directory[CCHMAXPATH];
547  CHAR previous[CCHMAXPATH];
548  ULONG fg, bg, hifg, hibg, border;
549  PFNWP oldproc;
550  CHAR font[CCHMAXPATH];
551  MASK mask;
552  ULONGLONG ullTotalBytes;
553  ULONGLONG selectedbytes;
554  ULONG selectedfiles;
555  ULONG totalfiles;
556  BOOL cnremphasized;
557  BOOL dontclose;
558  ARC_TYPE *info;
559  CHAR arcname[CCHMAXPATH];
560  CHAR command[257];
561  CHAR stopflag;
562  CHAR workdir[CCHMAXPATH];
563  CHAR lastfilename[CCHMAXPATH];
564  BOOL namecanchange;
565  BOOL fmoving;
566  BOOL amextracted;
567  INT lasthelp;
568  INT sortFlags;
569  BOOL detailsladate, detailslatime, detailscrdate, detailscrtime,
570    detailslongname, detailsea, detailssize, detailssubject,
571    detailslwdate, detailslwtime, detailsattr, detailsicon;
572  CHAR **lastselection;
573  USHORT shiftstate;
574  USHORT suspendview;
575  CHAR szCommonName[CCHMAXPATH];
576  ULONG lasttime;
577  BOOL arcfilled;
578  HMTX filling;
579  BOOL firsttree;
580  ULONG lastattr;
581  ULONG ulItemsToUnHilite;
582}
583DIRCNRDATA;
584
585typedef struct
586{
587  USHORT size;
588  HWND hwndCnr;
589  CHAR directory[CCHMAXPATH];
590  BOOL collapsefirst;
591  DIRCNRDATA *dcd;
592}
593SHOWREC;
594
595typedef struct
596{
597  USHORT size;
598  USHORT dummy;
599  CHAR file1[CCHMAXPATH];
600  CHAR file2[CCHMAXPATH];
601  HWND hwndParent;
602  HWND hwndList;
603  HWND hwndReport;
604  HWND hwndHelp;
605}
606FCOMPARE;
607
608typedef struct COMPARE
609{
610  USHORT size;
611  HWND hwnd;
612  HWND hwndParent;
613  CHAR leftdir[CCHMAXPATH + 2];
614  CHAR rightdir[CCHMAXPATH + 2];
615  BOOL forcescroll;
616  BOOL filling;
617  BOOL includesubdirs;
618  INT action;
619  INT selleft;
620  INT selright;
621  INT totalleft;
622  INT totalright;
623  CHAR rightlist[CCHMAXPATH];   // Snapshot file name
624  BOOL reset;
625  HWND hwndCalling;
626  struct COMPARE *cmp;          // callers compare defintion
627  struct DIRCNRDATA dcd;
628}
629COMPARE;
630
631/* init.c */
632VOID FindSwapperDat(VOID);
633BOOL InitFM3DLL(HAB hab, int argc, char **argv);
634HWND StartFM3(HAB hab, INT argc, CHAR ** argv);
635
636/* filldir.c */
637VOID EmptyCnr(HWND hwnd);
638const PSZ FileAttrToString(ULONG fileAttr);
639VOID FillDirCnr(HWND hwndCnr, CHAR *pszDirectory, DIRCNRDATA *pdcd,
640                PULONGLONG pullBytes);
641VOID FillTreeCnr(HWND hwndCnr, HWND hwndParent);
642VOID ProcessDirectory(const HWND hwndCnr, const PCNRITEM pciParent,
643                      const CHAR *szDirBase, const BOOL filestoo,
644                      const BOOL recurse, const BOOL partial,
645                      CHAR *stopflag, DIRCNRDATA *pdcd,
646                      PULONG pullTotalFiles, PULONGLONG pullTotalBytes);
647ULONGLONG FillInRecordFromFFB(HWND hwndCnr, PCNRITEM pci,
648                              const PSZ pszDirectory,
649                              const PFILEFINDBUF4L pffb, const BOOL partial,
650                              DIRCNRDATA *pdcd);
651ULONGLONG FillInRecordFromFSA(HWND hwndCnr, PCNRITEM pci,
652                              const PSZ pszFileName, const PFILESTATUS4L pfsa4,
653                              const BOOL partial, DIRCNRDATA *pdcd);
654VOID FreeCnrItem(HWND hwnd, PCNRITEM pci);
655VOID FreeCnrItemList(HWND hwnd, PCNRITEM pciFirst);
656VOID FreeCnrItemData(PCNRITEM pci);
657INT RemoveCnrItems(HWND hwnd, PCNRITEM pci, USHORT usCnt, USHORT usFlags);
658
659/* flesh.c */
660BOOL Stubby(HWND hwndCnr, PCNRITEM pciParent);
661BOOL Flesh(HWND hwndCnr, PCNRITEM pciParent);
662BOOL FleshEnv(HWND hwndCnr, PCNRITEM pciParent);
663BOOL UnFlesh(HWND hwndCnr, PCNRITEM pciParent);
664
665/* error.c */
666VOID DbgMsg(PCSZ pszSrcFile, UINT uSrcLineNo, PCSZ pszFmt, ...);
667INT Dos_Error(ULONG mb_type, ULONG ulRC, HWND hwndOwner,
668              PCSZ pszSrcFile, UINT uSrcLineNo, PCSZ pszFmt, ...);
669INT Dos_Error2(ULONG mb_type, ULONG ulRC, HWND hwndOwner, PCSZ pszSrcFile,
670               UINT uSrcLineNo, UINT idMsg);
671ULONG GetMSecTimer(void);
672VOID Runtime_Error(PCSZ pszSrcFile, UINT uSrcLineNo, PCSZ pszFmt, ...);
673VOID Runtime_Error2(PCSZ pszSrcFile, UINT uSrcLineNo, UINT idMsg);
674APIRET saymsg(ULONG mb_type, HWND hwnd, PCSZ pszTitle, PCSZ pszFmt, ...);
675VOID Win_Error(HWND hwndErr, HWND hwndOwner,
676               PCSZ pszSrcFile, UINT uSrcLineNo, PCSZ pszFmt, ...);
677VOID Win_Error2(HWND hwndErr, HWND hwndOwner, PCSZ pszSrcFile,
678                UINT uSrcLineNo, UINT idMsg);
679VOID Win_Error_NoMsgBox(HWND hwndErr, HWND hwndOwner,
680                        PCSZ pszSrcFile, UINT uSrcLineNo, PCSZ pszFmt, ...);
681
682/* valid.c */
683INT CheckDrive(CHAR Drive, CHAR * FileSystem, ULONG * type);
684int TestDates(char *file1, char *file2);
685BOOL IsNewer(char *file1, char *file2);
686BOOL IsRoot(CHAR * filename);
687BOOL IsFileSame(CHAR * filename1, CHAR * filename2);
688INT IsFile(CHAR * filename);
689BOOL IsFullName(CHAR * filename);
690BOOL IsValidDir(CHAR * test);
691BOOL IsValidDrive(CHAR drive);
692CHAR *MakeValidDir(CHAR * path);
693BOOL IsExecutable(CHAR * filename);
694VOID FillInDriveFlags(VOID * dummy);
695VOID DriveFlagsOne(INT x);
696VOID ArgDriveFlags(INT argc, CHAR ** argv);
697CHAR *assign_ignores(CHAR * s);
698BOOL needs_quoting(CHAR * f);
699BOOL IsBinary(CHAR * str, ULONG len);
700BOOL TestBinary(CHAR * filename);
701BOOL ParentIsDesktop(HWND hwnd, HWND hwndParent);
702BOOL IsDesktop(HAB hab, HWND hwnd);
703char *IsVowel(char a);
704VOID GetDesktopName(CHAR * objectpath, ULONG size);
705char *RootName(char *filename);
706APIRET MakeFullName(char *filename);
707
708/* misc.c */
709BOOL IsFm2Window(HWND hwnd, BOOL chkTid);
710VOID SetShiftState(VOID);
711void EmphasizeButton(HWND hwnd, BOOL on);
712void DrawTargetEmphasis(HWND hwnd, BOOL on);
713void BoxWindow(HWND hwnd, HPS hps, LONG color);
714VOID PaintRecessedWindow(HWND hwnd, HPS hps, BOOL outtie, BOOL dbl);
715void PaintSTextWindow(HWND hwnd, HPS hps);
716BOOL AdjustCnrColVis(HWND hwndCnr, CHAR * title, BOOL visible, BOOL toggle);
717BOOL AdjustCnrColRO(HWND hwndCnr, CHAR * title, BOOL readonly, BOOL toggle);
718VOID AdjustCnrColsForFSType(HWND hwndCnr, CHAR * directory, DIRCNRDATA * dcd);
719VOID AdjustCnrColsForPref(HWND hwndCnr, CHAR * directory, DIRCNRDATA * dcd,
720                          BOOL compare);
721BOOL SetCnrCols(HWND hwndCnr, BOOL compare);
722MRESULT CnrDirectEdit(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
723BOOL SetMenuCheck(HWND hwndMenu, USHORT id, BOOL * bool, BOOL toggle,
724                  CHAR * savename);
725VOID disable_menuitem(HWND hwndMenu, USHORT id, BOOL enable);
726BOOL ViewHelp(CHAR * filename);
727VOID CloseHelp(VOID);
728INT ExecFile(HWND hwnd, CHAR * filename);
729VOID SetDetailsSwitches(HWND hwnd, DIRCNRDATA * dcd);
730VOID AdjustDetailsSwitches(HWND hwnd, HWND hwndMenu, USHORT cmd,
731                           CHAR * directory, CHAR * keyroot, DIRCNRDATA * dcd,
732                           BOOL compare);
733VOID SetConditionalCascade(HWND hwndMenu, USHORT id, USHORT def);
734VOID SetSortChecks(HWND hwndMenu, INT sortflags);
735VOID SetupCommandMenu(HWND hwndMenu, HWND hwndCnr);
736VOID LoadDetailsSwitches(CHAR * keyroot, DIRCNRDATA * dcd);
737HWND FindDirCnr(HWND hwndParent);
738VOID HeapThread(VOID * dummy);
739VOID FixSwitchList(HWND hwnd, CHAR * text);
740VOID QuickPopup(HWND hwnd, DIRCNRDATA * dcd, HWND hwndMenu, USHORT id);
741PMINIRECORDCORE CurrentRecord(HWND hwndCnr);
742BOOL PostMsg(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
743VOID OpenEdit(HWND hwnd);
744VOID PortholeInit(HWND hwndNew, MPARAM mp1, MPARAM mp2);
745HWND CheckMenu(HWND hwnd, HWND * hwndMenu, USHORT id);
746SHORT AddToListboxBottom(HWND hwnd, CHAR * str);
747VOID SetSysMenu(HWND hwndSysMenu);
748VOID LoadLibPath(CHAR * str, LONG len);
749void SaySort(HWND hwnd, INT sortflags, BOOL archive);
750void SayView(HWND hwnd, ULONG flWindowAttr);
751void SayFilter(HWND hwnd, MASK * mask, BOOL archive);
752void SetViewMenu(HWND hwndMenu, ULONG flWindowAttr);
753char *GetCmdSpec(BOOL dos);
754void Broadcast(HAB hab, HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
755void SetupWinList(HWND hwndMenu, HWND hwndTop, HWND hwndFrame);
756BOOL SwitchCommand(HWND hwndMenu, USHORT cmd);
757
758/* mainwnd.c */
759ULONG CountDirCnrs(HWND hwndParent);
760HWND TopWindow(HWND hwndParent, HWND exclude);
761HWND TopWindowName(HWND hwndParent, HWND exclude, CHAR * ret);
762HWND FindDirCnrByName(CHAR * directory, BOOL restore);
763MRESULT EXPENTRY MainWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
764VOID GetNextWindowPos(HWND hwndClient, PSWP pswp, ULONG * ulCntR,
765                      ULONG * ulNumMinChildrenR);
766VOID TileChildren(HWND hwndClient, BOOL absolute);
767VOID FillClient(HWND hwndClient, PSWP pswp, PRECTL prectl, BOOL avoidtree);
768MRESULT EXPENTRY ToolBackProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
769MRESULT EXPENTRY DriveBackProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
770MRESULT EXPENTRY ChildButtonProc(HWND hwnd, ULONG msg, MPARAM mp1,
771                                 MPARAM mp2);
772MRESULT EXPENTRY DriveProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
773MRESULT EXPENTRY BubbleProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
774INT SaveDirCnrState(HWND hwndClient, CHAR * name);
775MRESULT EXPENTRY LEDProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
776MRESULT EXPENTRY StatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
777VOID BuildDriveBarButtons(HWND hwndT);
778VOID ResizeDrives(HWND hwndT, long xwidth);
779BOOL CloseChildren(HWND hwndClient);
780VOID BuildTools(HWND hwndT, BOOL resize);
781void BubbleHelp(HWND hwnd, BOOL other, BOOL data, BOOL above, char *help);
782VOID MakeBubble(HWND hwnd, BOOL above, CHAR * help);
783MRESULT EXPENTRY MainWMCommand(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
784VOID MakeMainObjWin(VOID * args);
785
786/* mainwnd2.c */
787MRESULT EXPENTRY MainWndProc2(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
788MRESULT EXPENTRY FileListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
789HWND StartFM32(HAB hab, INT argc, CHAR ** argv);
790
791/* treecnr.c */
792MRESULT EXPENTRY TreeStatProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
793MRESULT EXPENTRY TreeClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
794                                   MPARAM mp2);
795HWND StartTreeCnr(HWND hwndParent, ULONG flags);
796MRESULT EXPENTRY TreeObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
797VOID ShowTreeRec(HWND hwndCnr, CHAR * dirname, BOOL collapsefirst,
798                 BOOL maketop);
799MRESULT EXPENTRY OpenButtonProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
800
801/* dircnrs.c */
802MRESULT EXPENTRY DirClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
803                                  MPARAM mp2);
804HWND StartDirCnr(HWND hwndParent, CHAR * directory, HWND hwndRestore,
805                 ULONG flags);
806MRESULT EXPENTRY DirTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
807MRESULT EXPENTRY DirFolderProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
808MRESULT EXPENTRY DirMaxProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
809MRESULT EXPENTRY DirObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
810
811/* presparm.c */
812VOID StoreWndPresParams(HWND hwnd, CHAR * tagname, HINI prof);
813
814#ifdef INCL_GPI
815VOID SetPresParams(HWND hwnd, RGB2 * back, RGB2 * fore, RGB2 * border,
816                   CHAR * font);
817#endif
818VOID CopyPresParams(HWND target, HWND source);
819VOID IfNoParam(HWND hwnd, CHAR * keyroot, ULONG size, PVOID attrvalue);
820VOID PresParamChanged(HWND hwnd, CHAR * keyroot, MPARAM mp1, MPARAM mp2);
821VOID RestorePresParams(HWND hwnd, CHAR * keyroot);
822
823/* dirs.c */
824APIRET save_dir2(CHAR * curdir);
825APIRET save_dir(CHAR * curdir);
826APIRET switch_to(CHAR * s);
827
828/* strips.c */
829VOID chop_at_crnl(PSZ pszSrc);
830PSZ convert_nl_to_nul(PSZ pszSrc);
831void strip_lead_char(char *pszStripChars, char *pszSrc);
832void strip_trail_char(char *pszStripChars, char *pszSrc);
833
834#define lstrip(s)         strip_lead_char(" \t",(s))
835#define rstrip(s)         strip_trail_char(" \t",(s))
836#define stripcr(s)        strip_trail_char("\r\n",(s))
837// Strip leading and trailing white
838#define bstrip(s)         (strip_lead_char(" \t",(s)),strip_trail_char(" \t",(s)))
839// Strip leading and trailing white and trail cr/nl
840#define bstripcr(s)       (strip_lead_char(" \t",(s)),strip_trail_char("\r\n \t",(s)))
841
842/* delims.c */
843char *skip_delim(char *a, register char *delim);
844char *to_delim(char *a, register char *delim);
845
846/* copyf.c */
847BOOL AdjustWildcardName(CHAR * oldname, CHAR * newname);
848CHAR default_disk(VOID);
849APIRET docopyf(INT type, CHAR * oldname, CHAR * newname, ...);
850
851#define COPY 0
852#define MOVE 1
853#define WPSCOPY 2
854#define WPSMOVE 4
855INT unlinkf(CHAR * string, ...);
856INT unlink_allf(CHAR * string, ...);
857INT wipeallf(CHAR * string, ...);
858INT make_deleteable(CHAR * filename);
859CHAR *TruncName(CHAR * oldname, CHAR * buffer);
860CHAR *GetLongName(CHAR * oldname, CHAR * buffer);
861BOOL WriteLongName(CHAR * filename, CHAR * longname);
862
863/* mkdir.c */
864APIRET SetDir(HWND hwndClient, HWND hwnd, CHAR * dir, INT flags);
865APIRET MassMkdir(HWND hwndClient, CHAR * dir);
866BOOL PMMkDir(HWND hwnd, CHAR * filename, BOOL copy);
867void SetTargetDir(HWND hwnd, BOOL justshow);
868
869/* srchpath.c */
870INT RunFM2Util(CHAR *appname, CHAR *filename);
871CHAR *first_path(CHAR * path, CHAR * ret);
872CHAR *searchapath(CHAR * path, CHAR * filename);
873CHAR *searchpath(CHAR * filename);
874
875/* literal.c */
876UINT literal(PSZ pszBuf);
877BOOL wildcard(const PSZ pszBuf, const PSZ pszWildCard,
878              const BOOL fNotFileSpec);
879PSZ fixup(const PCH pachInBuf, PSZ pszOutBuf, const UINT cBufBytes,
880          const UINT cInBytes);
881
882/* stristr.c */
883CHAR *stristr(const CHAR * t, const CHAR * s);
884CHAR *strnistr(register CHAR * t, CHAR * s, LONG len);
885CHAR *strnstr(register CHAR * t, CHAR * s, LONG len);
886CHAR *findstring(CHAR * findthis, ULONG lenthis, CHAR * findin,
887                 ULONG lenin, BOOL insensitive);
888
889/* avl.c */
890ARC_TYPE *quick_find_type(CHAR * filespec, ARC_TYPE * topsig);
891ARC_TYPE *find_type(CHAR * filespec, ARC_TYPE * topsig);
892INT load_archivers(VOID);
893BOOL ArcDateTime(CHAR * dt, INT type, CDATE * cdate, CTIME * ctime);
894
895/* avv.c */
896VOID rewrite_archiverbb2(CHAR * archiverbb2);
897MRESULT EXPENTRY ArcReviewDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
898                                  MPARAM mp2);
899VOID EditArchiverDefinition(HWND hwnd);
900
901/* systemf.c */
902BOOL ShowSession(HWND hwnd, PID pid);
903INT ExecOnList(HWND hwnd, CHAR * command, INT flags, CHAR * tpath,
904               CHAR ** list, CHAR * prompt);
905INT runemf2(INT type, HWND hwnd, CHAR * directory, CHAR * environment,
906            CHAR * formatstring, ...);
907HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env,
908          PROGTYPE * progt, ULONG fl, char *formatstring, ...);
909#define RUNTYPE_MASK  0xf
910#define SYNCHRONOUS   1
911#define ASYNCHRONOUS  2
912#define DETACHED      3
913#define SEPARATE      4
914#define SEPARATEKEEP  5
915#define WINDOWED      16
916#define MAXIMIZED     32
917#define MINIMIZED     64
918#define FULLSCREEN    128
919#define INVISIBLE     256
920#define BACKGROUND    512
921#define WAIT          1024
922#define PROMPT        2048
923#define KEEP          4096
924#define ONCE          8192
925#define DIEAFTER      16384
926#define SEAMLESS      32768
927#define CHILD         65536
928
929/* cmdline.c */
930BOOL add_cmdline(CHAR * cmdline, BOOL big);
931VOID save_cmdlines(BOOL big);
932MRESULT EXPENTRY CmdLineDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
933MRESULT EXPENTRY CmdLine2DlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
934                                 MPARAM mp2);
935
936/* makelist.c */
937INT AddToList(CHAR * string, CHAR *** list, INT * numfiles, INT * numalloced);
938INT AddToFileList(CHAR * string, FILEFINDBUF4L * ffb4, FILELIST *** list,
939                  INT * numfiles, INT * numalloced);
940CHAR **BuildList(HWND hwndCnr);
941VOID FreeListInfo(LISTINFO * li);
942VOID FreeList(CHAR ** list);
943VOID SortList(LISTINFO * li);
944CHAR **BuildArcList(HWND hwndCnr);
945CHAR **RemoveFromList(CHAR ** list, CHAR * item);
946CHAR **CombineLists(CHAR ** prime, CHAR ** add);
947
948/* chklist.c */
949VOID PosOverOkay(HWND hwnd);
950VOID CenterOverWindow(HWND hwnd);
951BOOL PopupMenu(HWND hwndParent, HWND hwndOwner, HWND hwndMenu);
952MRESULT EXPENTRY CheckListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
953MRESULT EXPENTRY DropListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
954
955/* eas.c */
956VOID HexDump(HWND hwnd, CHAR * value, ULONG cbValue);
957HOLDFEA *GetFileEAs(CHAR * filename, BOOL ishandle, BOOL silentfail);
958VOID Free_FEAList(HOLDFEA * pFEA);
959MRESULT EXPENTRY DisplayEAsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
960PVOID SaveEA(CHAR * filename, HOLDFEA * current, CHAR * newdata,
961             BOOL silentfail);
962
963/* inis.c */
964MRESULT EXPENTRY IniProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
965HWND StartIniEditor(HWND hwnd, CHAR * filename, INT flags);
966
967/* subj.c */
968INT Subject(HWND hwnd, CHAR * filename);
969
970/* dirsize.c */
971MRESULT EXPENTRY DirSizeProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
972
973/* getnames.c */
974BOOL insert_filename(HWND hwnd, CHAR * filename, INT loadit, BOOL newok);
975BOOL export_filename(HWND hwnd, CHAR * filename, INT overwrite);
976MRESULT EXPENTRY CustomFileDlg(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
977
978/* input.c */
979MRESULT EXPENTRY InputDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
980
981/* select.c */
982VOID UnHilite(HWND hwndCnr, BOOL all, CHAR *** list, ULONG ulItemsToUnHilite);
983VOID SelectList(HWND hwndCnr, BOOL partial, BOOL deselect, BOOL clearfirst,
984                PCNRITEM pciParent, CHAR * filename, CHAR ** list);
985VOID SelectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask, CHAR * text,
986               BOOL arc);
987VOID DeselectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask,
988                 CHAR * text, BOOL arc);
989VOID Deselect(HWND hwndCnr);
990VOID HideAll(HWND hwndCnr);
991VOID RemoveAll(HWND hwndCnr, ULONGLONG * ullTotalBytes, ULONG * totalfiles);
992VOID MarkAll(HWND hwndCnr, BOOL quitit, BOOL target, BOOL source);
993VOID SetMask(CHAR * str, MASK * mask);
994VOID ExpandAll(HWND hwndCnr, BOOL expand, PCNRITEM pciParent);
995VOID InvertAll(HWND hwndCnr);
996VOID SpecialSelect(HWND hwndCnrS, HWND hwndCnrD, INT action, BOOL reset);
997VOID SpecialSelect2(HWND hwndParent, INT action);
998
999/* viewer.c */
1000MRESULT EXPENTRY MLEEditorProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1001HWND StartMLEEditor(HWND hwnd, INT flags, CHAR * filename, HWND hwndRestore);
1002
1003/* codepage.c */
1004INT PickCodepage(HWND hwnd);
1005
1006/* fonts.c */
1007VOID SetFont(HWND hwnd);
1008FATTRS *SetMLEFont(HWND hwndMLE, FATTRS * fattrs, ULONG flags);
1009VOID SetPresParamFromFattrs(HWND hwnd, FATTRS * fattrs,
1010                            SHORT sNominalPointSize, FIXED fxPointSize);
1011
1012/* saveclip.c */
1013BOOL SaveToClip(HWND hwnd, CHAR * text, BOOL append);
1014VOID ListToClipboard(HWND hwnd, CHAR ** list, BOOL append);
1015CHAR **ListFromClipboard(HWND hwnd);
1016BOOL SaveToClipHab(HAB hab, CHAR * text, BOOL append);
1017VOID ListToClipboardHab(HAB hab, CHAR ** list, BOOL append);
1018CHAR **ListFromClipboardHab(HAB hab);
1019MRESULT EXPENTRY SaveListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1020                                 MPARAM mp2);
1021MRESULT EXPENTRY SaveAllListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1022                                    MPARAM mp2);
1023
1024/* filter.c */
1025INT APIENTRY Filter(PMINIRECORDCORE rmini, PVOID arg);
1026BOOL FilterAttrs(PCNRITEM pci, MASK * mask);
1027VOID save_masks(VOID);
1028MRESULT EXPENTRY PickMaskDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1029                                 MPARAM mp2);
1030
1031/* archive.c */
1032MRESULT EXPENTRY ArchiveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1033MRESULT EXPENTRY SBoxDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1034
1035/* extract.c */
1036MRESULT EXPENTRY ExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1037
1038/* walkem.c */
1039VOID load_udirs(VOID);
1040VOID save_udirs(VOID);
1041BOOL add_udir(BOOL userdirs, PSZ inpath);
1042BOOL remove_udir(PSZ path);
1043BOOL remove_ldir(PSZ path);
1044VOID fill_setups_list(VOID);
1045VOID load_setups(VOID);
1046VOID save_setups(VOID);
1047INT add_setup(PSZ stateName);
1048INT remove_setup(PSZ stateName);
1049VOID FillPathListBox(HWND hwnd, HWND hwnddrive, HWND hwnddir, PSZ path,
1050                     BOOL nounwriteable);
1051MRESULT EXPENTRY WalkDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1052MRESULT EXPENTRY WalkAllDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1053MRESULT EXPENTRY WalkCopyDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1054                                 MPARAM mp2);
1055MRESULT EXPENTRY WalkMoveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1056                                 MPARAM mp2);
1057MRESULT EXPENTRY WalkExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1058                                    MPARAM mp2);
1059MRESULT EXPENTRY WalkTargetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1060                                   MPARAM mp2);
1061MRESULT EXPENTRY WalkTwoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1062MRESULT EXPENTRY WalkTwoCmpDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1063                                   MPARAM mp2);
1064MRESULT EXPENTRY WalkTwoSetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1065                                   MPARAM mp2);
1066
1067/* arccnrs.c */
1068MRESULT EXPENTRY ArcClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1069                                  MPARAM mp2);
1070HWND StartArcCnr(HWND hwndParent, HWND hwndCaller, CHAR * arcname, INT flags,
1071                 ARC_TYPE * sinfo);
1072MRESULT EXPENTRY ArcTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1073MRESULT EXPENTRY ArcFolderProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1074MRESULT EXPENTRY ArcObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1075PSZ BldQuotedFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName);
1076PSZ BldQuotedFileName(PSZ pszQuotedFileName, PSZ pszFileName);
1077
1078/* assoc.c */
1079INT ExecAssociation(HWND hwnd, CHAR * datafile);
1080VOID EditAssociations(HWND hwnd);
1081VOID load_associations(VOID);
1082VOID save_associations(VOID);
1083
1084/*draglist.c */
1085HWND DoFileDrag(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd, CHAR * arcfile,
1086                CHAR * directory, BOOL moveok);
1087HWND DragOne(HWND hwndCnr, HWND hwndObj, CHAR * filename, BOOL moveok);
1088HWND DragList(HWND hwnd, HWND hwndObj, CHAR ** list, BOOL moveok);
1089BOOL PickUp(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd);
1090
1091/* droplist.c */
1092void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, char *text);
1093BOOL AcceptOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2);
1094BOOL GetOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2, char *buffer, ULONG buflen);
1095BOOL FullDrgName(PDRAGITEM pDItem, CHAR * buffer, ULONG buflen);
1096BOOL TwoDrgNames(PDRAGITEM pDItem, CHAR * buffer1, ULONG buflen1,
1097                 char *buffer2, ULONG buflen2);
1098LISTINFO *DoFileDrop(HWND hwndCnr, CHAR * directory, BOOL arcfilesok,
1099                     MPARAM mp1, MPARAM mp2);
1100VOID FreeDragInfoData (HWND hwnd, PDRAGINFO pDInfo);
1101BOOL CheckPmDrgLimit(PDRAGINFO pDInfo);
1102
1103/* shadow.c */
1104HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
1105                            CHAR * cnr);
1106HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path,
1107                         CHAR * cnr);
1108HOBJECT CreateFolderObject(CHAR * objtitle, CHAR * cnr);
1109HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path,
1110                           BOOL executable, CHAR * cnr);
1111VOID MakeShadows(HWND hwnd, CHAR ** list, ULONG Shadows, CHAR * cnr,
1112                 CHAR * foldername);
1113VOID OpenObject(CHAR * filename, CHAR * type, HWND hwnd);
1114BOOL RunSeamless(CHAR * exename, CHAR * args, HWND hwnd);
1115
1116/* printer.c */
1117BOOL PrinterReady(CHAR * printdevname);
1118BOOL SayPrinterReady(HWND hwnd);
1119VOID PrintListThread(VOID * arg);
1120MRESULT EXPENTRY PrintDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1121
1122/* attribs.c */
1123MRESULT EXPENTRY AttrListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1124                                 MPARAM mp2);
1125
1126/* rename.c */
1127MRESULT EXPENTRY RenameProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1128
1129/* comp.c */
1130PSZ BldFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName);
1131MRESULT EXPENTRY CFileDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1132MRESULT EXPENTRY CompareDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1133
1134/* findrec.c */
1135PCNRITEM FindCnrRecord(HWND hwndCnr, CHAR * filename, PCNRITEM pciParent,
1136                       BOOL partial, BOOL partmatch, BOOL noenv);
1137PCNRITEM FindParentRecord(HWND hwndCnr, PCNRITEM pciC);
1138VOID ShowCnrRecord(HWND hwndCnr, PMINIRECORDCORE pmi);
1139
1140/* update.c */
1141HPOINTER SelectDriveIcon(PCNRITEM pci);
1142PCNRITEM UpdateCnrRecord(HWND hwndCnr, CHAR * filename, BOOL partial,
1143                         DIRCNRDATA * dcd);
1144BOOL UpdateCnrList(HWND hwndCnr, CHAR ** filename, INT howmany, BOOL partial,
1145                   DIRCNRDATA * dcd);
1146
1147/* info.c */
1148MRESULT EXPENTRY DrvInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1149MRESULT EXPENTRY FileInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1150MRESULT EXPENTRY SetDrvProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1151
1152#if defined(__IBMC__)
1153/* fsopen.c */
1154FILE *_fsopen(CHAR * filename, CHAR * mode, INT sharemode, ...);
1155#endif
1156
1157/* seticon.c */
1158MRESULT EXPENTRY SetIconDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1159
1160/* objcnr.c */
1161MRESULT EXPENTRY ObjCnrDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1162
1163/* sortcnr.c */
1164SHORT APIENTRY SortTreeCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1165                           PVOID pStorage);
1166SHORT APIENTRY SortDirCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1167                          PVOID pStorage);
1168SHORT APIENTRY SortCollectorCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1169                                PVOID pStorage);
1170SHORT SortCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, INT Sortflags);
1171
1172/* collect.c */
1173MRESULT EXPENTRY CollectorClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1174                                        MPARAM mp2);
1175MRESULT EXPENTRY CollectorTextProc(HWND hwnd, ULONG msg, MPARAM mp1,
1176                                   MPARAM mp2);
1177HWND StartCollector(HWND hwndParent, INT flags);
1178MRESULT EXPENTRY CollectorObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1179                                     MPARAM mp2);
1180
1181/* command.c */
1182VOID RunCommand(HWND hwnd, INT cx);
1183VOID EditCommands(HWND hwnd);
1184CHAR *command_title(INT cx);
1185VOID load_commands(VOID);
1186
1187/* instant.c */
1188MRESULT EXPENTRY InstantDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1189
1190/* undel.c */
1191MRESULT EXPENTRY UndeleteDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1192                                 MPARAM mp2);
1193
1194/* killproc.c */
1195MRESULT EXPENTRY KillDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1196
1197/* sysinfo.c */
1198MRESULT EXPENTRY SysInfoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1199
1200/* objwin.c */
1201MRESULT EXPENTRY ObjectWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1202VOID MakeObjWin(VOID * args);
1203
1204/* progstup.c */
1205MRESULT EXPENTRY ProgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1206
1207/* key.c */
1208MRESULT EXPENTRY AboutDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1209
1210/* notify.c */
1211MRESULT EXPENTRY NotifyWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1212HWND Notify(char *text);
1213HWND DoNotify(char *text);
1214VOID NotifyError(CHAR * filename, APIRET error);
1215VOID StartNotes(CHAR * s);
1216BOOL AddNote(CHAR * note);
1217VOID EndNote(VOID);
1218VOID ShowNote(VOID);
1219VOID HideNote(VOID);
1220
1221/* winlist.c */
1222VOID WindowList(HWND hwnd);
1223
1224/* viewinf.c */
1225MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1226
1227/* notebook.c */
1228MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1229
1230/* commafmt.c */
1231size_t commafmt(PSZ pszBuf, UINT cBufSize, LONG lNumber);
1232size_t CommaFmtUL(char *pszBuf, UINT cBufSize, ULONG ullNumber,
1233                  CHAR chPreferred);
1234size_t CommaFmtULL(char *pszBuf, UINT cBufSize, ULONGLONG ullNumber,
1235                   CHAR chPreferred);
1236
1237/* autoview.c */
1238BOOL WriteEA(HWND hwnd, CHAR * filename, CHAR * eaname, USHORT type,
1239             CHAR * data);
1240BOOL PutComments(HWND hwnd, CHAR * filename, CHAR * comments);
1241MRESULT EXPENTRY AutoViewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1242ULONG CreateHexDump(CHAR * value, ULONG cbValue, CHAR * ret, ULONG retlen,
1243                    ULONG startval, BOOL longlead);
1244
1245/* menu.c */
1246BOOL AddToMenu(CHAR * filename, HWND hwndMenu);
1247
1248/* worker.c */
1249VOID MassAction(VOID * args);
1250VOID Action(VOID * args);
1251
1252/* fm2cmd.c */
1253BOOL FM2Command(CHAR * directory, CHAR * command);
1254
1255/* seeall.c */
1256MRESULT EXPENTRY SeeAllWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1257MRESULT EXPENTRY SeeStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1258HWND StartSeeAll(HWND hwndParent, BOOL standalone, CHAR * startpath);
1259
1260/* newview.c */
1261MRESULT EXPENTRY ViewWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1262MRESULT EXPENTRY ViewStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1263HWND StartViewer(HWND hwndParent, USHORT flags, CHAR * filename,
1264                 HWND hwndRestore);
1265
1266/* colors.c */
1267MRESULT EXPENTRY ColorDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1268
1269/* defview.c */
1270BOOL ShowMultimedia(CHAR * filename);
1271VOID DefaultView(HWND hwnd, HWND hwndFrame, HWND hwndParent, SWP * swp,
1272                 ULONG flags, CHAR * filename);
1273VOID DefaultViewKeys(HWND hwnd, HWND hwndFrame, HWND hwndParent,
1274                     SWP * swp, CHAR * filename);
1275#define QuickView(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,0,f)
1276#define QuickEdit(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,8,f)
1277
1278/* catalog.c */
1279MRESULT EXPENTRY CatalogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1280
1281/* uudecode.c */
1282int UUD(char *filename, char *outname);
1283MRESULT EXPENTRY MergeDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1284
1285/* loadbmp.c */
1286HBITMAP LoadBitmapFromFileNum(USHORT id);
1287HBITMAP LoadBitmapFromFile(CHAR * pszFileName);
1288
1289/* remap.c */
1290MRESULT EXPENTRY RemapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1291
1292/* timer.c */
1293BOOL StartTimer(void);
1294void StopTimer(void);
1295
1296/* grep2.c */
1297MRESULT EXPENTRY GrepDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1298
1299/* common.c */
1300MRESULT EXPENTRY CommonFrameWndProc(USHORT id,
1301                                    HWND hwnd,
1302                                    ULONG msg, MPARAM mp1, MPARAM mp2);
1303MRESULT EXPENTRY CommonTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1304void CommonTextPaint(HWND hwnd, HPS hps);
1305void CommonCreateTextChildren(HWND hwnd, char *class, USHORT * ids);
1306void CommonDriveCmd(HWND hwnd, char *drive, USHORT cmd);
1307void CommonCreateMainChildren(HWND hwnd, SWP * swp);
1308MRESULT EXPENTRY CommonMainWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1309                                   MPARAM mp2);
1310MRESULT EXPENTRY CommonTextButton(HWND hwnd, ULONG msg, MPARAM mp1,
1311                                  MPARAM mp2);
1312MRESULT EXPENTRY CommonCnrProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1313HWND OpenDirCnr(HWND hwnd, HWND hwndParent, HWND hwndRestore,
1314                BOOL noautotile, char *directory);
1315VOID IncrThreadUsage(VOID);
1316VOID DecrThreadUsage(VOID);
1317
1318/* string.c */
1319BOOL LoadStrings(char *filename);
1320char *GetPString(ULONG id);
1321BOOL StringsLoaded(void);
1322
1323/* wrappers.c */
1324APIRET xDosFindFirst(PSZ pszFileSpec,
1325                     PHDIR phdir,
1326                     ULONG  flAttribute,
1327                     PVOID  pfindbuf,
1328                     ULONG  cbBuf,
1329                     PULONG pcFileNames,
1330                     ULONG  ulInfoLevel);
1331APIRET xDosFindNext(HDIR   hDir,
1332                    PVOID  pfindbuf,
1333                    ULONG  cbfindbuf,
1334                    PULONG pcFilenames,
1335                    ULONG  ulInfoLevel);        // 06 Oct 07 SHL Added
1336APIRET xDosSetPathInfo(PSZ   pszPathName,
1337                       ULONG ulInfoLevel,
1338                       PVOID pInfoBuf,
1339                       ULONG cbInfoBuf,
1340                       ULONG flOptions);
1341PSZ xfgets(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1342           UINT uiLineNumber);
1343PSZ xfgets_bstripcr(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1344                    UINT uiLineNumber);
1345FILE *xfopen(PCSZ pszFileName, PCSZ pszMode, PCSZ pszSrcFile,
1346             UINT uiLineNumber);
1347FILE *xfsopen(PCSZ pszFileName, PCSZ pszMode, INT fSharemode, PCSZ pszSrcFile,
1348              UINT uiLineNumber);
1349VOID xfree(PVOID pv);
1350PVOID xmalloc(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1351PVOID xmallocz(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1352PVOID xrealloc(PVOID pvIn, size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1353PVOID xstrdup(PCSZ pszIn, PCSZ pszSrcFile, UINT uiLineNumber);
1354
1355//=====================================================================
1356
1357#ifdef DEFINE_GLOBALS
1358#define DATADEF
1359#else
1360#define DATADEF extern
1361#endif
1362
1363DATADEF ARC_TYPE *arcsighead;
1364DATADEF BOOL arcsigsloaded;
1365DATADEF BOOL arcsigsmodified;
1366DATADEF UINT arcsigs_header_lines;      // Header comments line count in archiver.bb2
1367DATADEF UINT arcsigs_trailer_line_num;  // Trailer comments start line number (1..n)
1368
1369DATADEF USHORT nodes, shiftstate;
1370DATADEF HEV CompactSem;
1371DATADEF HWND hwndMain, hwndTree, hwndStatus, hwndStatus2, hwndTrash,
1372  hwndButtonlist, hwndDrivelist, hwndStatelist, hwndUserlist,
1373  hwndAutoview, hwndAttr, hwndDate, hwndName, hwndBack,
1374  hwndLED, hwndLEDHdr, hwndAutoMLE, hwndCmdlist;
1375DATADEF HBITMAP hbmLEDon, hbmLEDoff;
1376DATADEF CHAR ArcTempRoot[9], ThousandsSeparator[2];
1377DATADEF HPOINTER hptrArrow, hptrBusy, hptrLast, hptrDir, hptrFile, hptrRemote,
1378  hptrFloppy, hptrDrive, hptrRemovable, hptrCDROM,hptrVirtual,hptrRamdisk,
1379  hptrFinger, hptrApp, hptrDunno, hptrSystem, hptrHidden,
1380  hptrReadonly, hptrNS, hptrZipstrm, hptrArc, hptrArt, hptrEW,
1381  hptrCommon, hptrEnv;
1382DATADEF PFNWP PFNWPCnr, PFNWPFrame, PFNWPButton, PFNWPStatic, PFNWPMLE;
1383DATADEF BOOL fLoadSubject, fLoadLongnames, fForceUpper, fForceLower,
1384  fSyncUpdates, fAutoTile, fDontMoveMouse, loadedudirs,
1385  fUnHilite, fWorkPlace, fConfirmDelete, fToolbar,
1386  fToolsChanged, MenuInvisible, fFreeTree, fFollowTree,
1387  fNoIconsFiles, fNoIconsDirs, fVerify, fDCOpens,
1388  fLinkSetsIcon, fSaveState, fTextTools, fCopyDefault,
1389  fToolTitles, fLogFile, fRealIdle, fNoSaveState, fUseQSysState,
1390  fSplitStatus, fArcStuffVisible, fUseMCI, fAmAV2,
1391  fNoTreeGap, fDummy, fVTreeOpensWPS, fUseQProcStat,
1392  fStartMinimized, fStartMaximized, fRemoteBug, fReminimize,
1393  fDragndropDlg, fMinOnOpen, fUserComboBox,
1394  fQuickArcFind, fNoRemovableScan, fAutoView, fDataMin,
1395  fDataToFore, fDataShowDrives, fDataInclRemote,
1396  fExternalArcboxes, fExternalViewer, fExternalCollector,
1397  fExternalINIs, fDefaultDeletePerm, fIniExisted, fUseNewViewer,
1398  fTileBackwards, fFolderAfterExtract, fUserListSwitches,
1399  fGuessType, fAutoAddDirs, fUdirsChanged, fSelectedAlways,
1400  fToolbarHelp, fComments, fMoreButtons, fNoSearch, fOtherHelp,
1401  fKeepCmdLine, fAmClosing, fSeparateParms, fTopDir,
1402  fLookInDir, fSwitchTree, fSwitchTreeOnFocus, fDrivebar,
1403  fSwitchTreeExpand, fCollapseFirst, fFilesInTree, fNoDead,
1404  fThreadNotes, fOkayMinimize, fRunning, fDullMin, fBlueLED,
1405  fViewChild, fShowEnv, fLeaveTree, fNoFoldMenu, fSubjectInLeftPane,
1406  fCustomFileDlg, fSaveMiniCmds, fSaveBigCmds, fNoTileUpdate,
1407  fFM2Deletes, fAutoAddAllDirs, fConfirmTarget, fChangeTarget,
1408  fFirstTime, fShowTarget, fNoFinger, fDrivebarHelp, fCheckMM,
1409  fSubjectLengthMax, fNoLargeFileSupport;
1410DATADEF BOOL detailsladate, detailslatime, detailscrdate, detailscrtime,
1411  detailslongname, detailsea, detailssize, detailssubject,
1412  detailslwdate, detailslwtime, detailsattr, detailsicon;
1413DATADEF PID mypid;
1414DATADEF INT driveflags[26], driveserial[26];
1415DATADEF ULONG NoBrokenNotify, fwsAnimate, OS2ver[2], DriveLines;
1416DATADEF HINI fmprof;
1417DATADEF HELPINIT hini;
1418DATADEF HWND hwndHelp, LastDir, AboutBox, DirMenu, FileMenu, TreeMenu,
1419  ArcMenu, DirCnrMenu, TreeCnrMenu, ArcCnrMenu,
1420  CollectorCnrMenu, CollectorFileMenu, CollectorDirMenu,
1421  Collector, MainPopupMenu, DataHwnd, AutoMenu, hwndBubble,
1422  hwndToolback, MainObjectHwnd, hwndMainMenu;
1423#ifdef DEFINE_GLOBALS
1424#pragma data_seg(GLOBAL2)
1425#endif
1426DATADEF CHAR *DEBUG_STRING, *FM3Str, *FM2Str, *NullStr, *Default, *Settings,
1427  *DRM_OS2FILE, *DRM_FM2ARCMEMBER, *DRF_FM2ARCHIVE,
1428  *DRMDRFLIST, *DRMDRFOS2FILE, *DRMDRFFM2ARC,
1429  *DRM_FM2INIRECORD, *DRF_FM2INI, *SUBJECT, *LONGNAME,
1430  *HPFS, *JFS, *CDFS, *FAT32, *HPFS386, *NDFS32, *CBSIFS, *ISOFS, *RAMFS, *NTFS,
1431  *WPProgram, *FM3Folder, *FM3Tools;
1432DATADEF RGB2 RGBGREY, RGBBLACK;
1433DATADEF CHAR archiverbb2[CCHMAXPATH], StopPrinting, profile[CCHMAXPATH];
1434DATADEF CHAR appname[12], realappname[12];
1435DATADEF CHAR editor[CCHMAXPATH], viewer[CCHMAXPATH],
1436  virus[CCHMAXPATH], printer[CCHMAXPATH],
1437  compare[CCHMAXPATH], extractpath[CCHMAXPATH],
1438  lastextractpath[CCHMAXPATH], lasttoolbox[CCHMAXPATH],
1439  HomePath[CCHMAXPATH], SwapperDat[CCHMAXPATH],
1440  binview[CCHMAXPATH], bined[CCHMAXPATH],
1441  dircompare[CCHMAXPATH], szDefArc[CCHMAXPATH],
1442  ftprun[CCHMAXPATH], httprun[CCHMAXPATH], targetdir[CCHMAXPATH];
1443DATADEF HMODULE FM3DllHandle, FM3ModHandle;
1444DATADEF CHAR *quicktool[50];
1445DATADEF BOOL qtloaded;
1446DATADEF INT sortFlags, TreesortFlags, CollectorsortFlags;
1447DATADEF INT butxsize, butysize;
1448DATADEF FILE *LogFileHandle;
1449
1450#define FILESTOGET_MIN  256
1451#define FILESTOGET_MAX  4096
1452
1453DATADEF ULONG ulCnrType, FilesToGet, AutoviewHeight, TreeWidth, FM3UL, SubjectDisplayWidth;
1454DATADEF long prnwidth, prnlength, prntmargin, prnbmargin, prnlmargin,
1455  prnrmargin, prnspacing, prntabspaces;
1456DATADEF BOOL prnpagenums, prnformat, prnformfeedbefore, prnformfeedafter,
1457  prnalt;
1458DATADEF LINKDIRS *udirhead, *ldirhead;
1459DATADEF LINKCMDS *cmdhead, *cmdtail;
1460DATADEF BOOL cmdloaded;
1461DATADEF CHAR *WC_OBJECTWINDOW, *WC_BUBBLE, *WC_TOOLBUTTONS, *WC_DRIVEBUTTONS, *WC_DIRCONTAINER,
1462  *WC_DIRSTATUS, *WC_TREECONTAINER, *WC_TREEOPENBUTTON, *WC_TREESTATUS, *WC_MAINWND,
1463  *WC_MAINWND2, *WC_AUTOVIEW, *WC_LED, *WC_COLLECTOR, *WC_COLSTATUS, *WC_STATUS, *WC_TOOLBACK,
1464  *WC_DRIVEBACK, *WC_ARCCONTAINER, *WC_ARCSTATUS, *WC_MLEEDITOR, *WC_INIEDITOR, *WC_SEEALL,
1465  *WC_NEWVIEW, *WC_SEESTATUS, *WC_VIEWSTATUS, *WC_ERRORWND, *WC_MINITIME, *WC_DATABAR;
1466
1467#ifdef DEFINE_GLOBALS
1468#pragma data_seg(GLOBAL3)
1469#endif
1470DATADEF LONG standardcolors[16];
1471
1472#ifdef INCL_MMIOOS2
1473#pragma pack(4)
1474/* definitions for MMPM/2 imports */
1475typedef DWORD(APIENTRY MMIOIDENTIFYFILE) (PSZ, PMMIOINFO, PMMFORMATINFO,
1476                                          PFOURCC, DWORD, DWORD);
1477typedef MMIOIDENTIFYFILE *PMMIOIDENTIFYFILE;
1478typedef DWORD(APIENTRY MMIOOPEN)( PSZ, PMMIOINFO, DWORD);
1479typedef MMIOOPEN *PMMIOOPEN;
1480typedef WORD (APIENTRY MMIOGETINFO)( HMMIO, PMMIOINFO, WORD);
1481typedef MMIOGETINFO *PMMIOGETINFO;
1482typedef WORD (APIENTRY MMIOCLOSE)( HMMIO, WORD);
1483typedef MMIOCLOSE *PMMIOCLOSE;
1484
1485#pragma pack()
1486#endif
1487
1488#ifdef DEFINE_GLOBALS
1489#pragma data_seg(GLOBAL4)
1490#endif
1491DATADEF HSWITCH switches[499];
1492DATADEF ULONG numswitches;
1493
1494#define priority_idle()     DosSetPriority(PRTYS_THREAD,PRTYC_IDLETIME,30L,0L)
1495#define priority_normal()   DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,0L,0L)
1496#define priority_tweaked()  DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,1L,0L)
1497#define priority_bumped()   DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,3L,0L)
1498#define priority_critical() DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,2L,0L)
1499#define priority_max()      DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,31L,0L)
1500#define SysVal(value)       WinQuerySysValue(HWND_DESKTOP, (value))
Note: See TracBrowser for help on using the repository browser.