source: trunk/dll/fm3dll.h@ 827

Last change on this file since 827 was 826, checked in by Gregg Young, 18 years ago

Add xDosSetPathInfo to work around FILESTATUSx buffer crossing 64k boundry

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