source: trunk/dll/fm3dll.h @ 748

Last change on this file since 748 was 748, checked in by Steven Levine, 13 years ago

Rework comp.c to to sync with CNRITEM mods
Rework comp.c to remove vast amount of duplicate code
Clean up select.c while auditing for CNRITEM sync
Sync fm3dll.h with comp.c mods

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