source: trunk/dll/fm3dll.h@ 834

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

Improved file filtering logic to match last extention for file associations (types) (reverse character by character matching) and optionally search for complete strings within a file name (strstr matching).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 51.1 KB
Line 
1
2/***********************************************************************
3
4 $Id: fm3dll.h 834 2007-09-12 19:20:07Z 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);
875/*BOOL wildcard2(const PSZ pszBuf, const PSZ pszWildCard,
876 const BOOL fNotFileSpec);*/
877PSZ fixup(const PCH pachInBuf, PSZ pszOutBuf, const UINT cBufBytes,
878 const UINT cInBytes);
879
880/* stristr.c */
881CHAR *stristr(const CHAR * t, const CHAR * s);
882CHAR *strnistr(register CHAR * t, CHAR * s, LONG len);
883CHAR *strnstr(register CHAR * t, CHAR * s, LONG len);
884CHAR *findstring(CHAR * findthis, ULONG lenthis, CHAR * findin,
885 ULONG lenin, BOOL insensitive);
886
887/* avl.c */
888ARC_TYPE *quick_find_type(CHAR * filespec, ARC_TYPE * topsig);
889ARC_TYPE *find_type(CHAR * filespec, ARC_TYPE * topsig);
890INT load_archivers(VOID);
891BOOL ArcDateTime(CHAR * dt, INT type, CDATE * cdate, CTIME * ctime);
892
893/* avv.c */
894VOID rewrite_archiverbb2(CHAR * archiverbb2);
895MRESULT EXPENTRY ArcReviewDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
896 MPARAM mp2);
897VOID EditArchiverDefinition(HWND hwnd);
898
899/* systemf.c */
900BOOL ShowSession(HWND hwnd, PID pid);
901INT ExecOnList(HWND hwnd, CHAR * command, INT flags, CHAR * tpath,
902 CHAR ** list, CHAR * prompt);
903INT runemf2(INT type, HWND hwnd, CHAR * directory, CHAR * environment,
904 CHAR * formatstring, ...);
905HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env,
906 PROGTYPE * progt, ULONG fl, char *formatstring, ...);
907#define RUNTYPE_MASK 0xf
908#define SYNCHRONOUS 1
909#define ASYNCHRONOUS 2
910#define DETACHED 3
911#define SEPARATE 4
912#define SEPARATEKEEP 5
913#define WINDOWED 16
914#define MAXIMIZED 32
915#define MINIMIZED 64
916#define FULLSCREEN 128
917#define INVISIBLE 256
918#define BACKGROUND 512
919#define WAIT 1024
920#define PROMPT 2048
921#define KEEP 4096
922#define ONCE 8192
923#define DIEAFTER 16384
924#define SEAMLESS 32768
925#define CHILD 65536
926
927/* cmdline.c */
928BOOL add_cmdline(CHAR * cmdline, BOOL big);
929VOID save_cmdlines(BOOL big);
930MRESULT EXPENTRY CmdLineDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
931MRESULT EXPENTRY CmdLine2DlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
932 MPARAM mp2);
933
934/* makelist.c */
935INT AddToList(CHAR * string, CHAR *** list, INT * numfiles, INT * numalloced);
936INT AddToFileList(CHAR * string, FILEFINDBUF4 * ffb4, FILELIST *** list,
937 INT * numfiles, INT * numalloced);
938CHAR **BuildList(HWND hwndCnr);
939VOID FreeListInfo(LISTINFO * li);
940VOID FreeList(CHAR ** list);
941VOID SortList(LISTINFO * li);
942CHAR **BuildArcList(HWND hwndCnr);
943CHAR **RemoveFromList(CHAR ** list, CHAR * item);
944CHAR **CombineLists(CHAR ** prime, CHAR ** add);
945
946/* chklist.c */
947VOID PosOverOkay(HWND hwnd);
948VOID CenterOverWindow(HWND hwnd);
949BOOL PopupMenu(HWND hwndParent, HWND hwndOwner, HWND hwndMenu);
950MRESULT EXPENTRY CheckListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
951MRESULT EXPENTRY DropListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
952
953/* eas.c */
954VOID HexDump(HWND hwnd, CHAR * value, ULONG cbValue);
955HOLDFEA *GetFileEAs(CHAR * filename, BOOL ishandle, BOOL silentfail);
956VOID Free_FEAList(HOLDFEA * pFEA);
957MRESULT EXPENTRY DisplayEAsProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
958PVOID SaveEA(CHAR * filename, HOLDFEA * current, CHAR * newdata,
959 BOOL silentfail);
960
961/* inis.c */
962MRESULT EXPENTRY IniProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
963HWND StartIniEditor(HWND hwnd, CHAR * filename, INT flags);
964
965/* subj.c */
966INT Subject(HWND hwnd, CHAR * filename);
967
968/* dirsize.c */
969MRESULT EXPENTRY DirSizeProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
970
971/* getnames.c */
972BOOL insert_filename(HWND hwnd, CHAR * filename, INT loadit, BOOL newok);
973BOOL export_filename(HWND hwnd, CHAR * filename, INT overwrite);
974MRESULT EXPENTRY CustomFileDlg(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
975
976/* input.c */
977MRESULT EXPENTRY InputDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
978
979/* select.c */
980VOID UnHilite(HWND hwndCnr, BOOL all, CHAR *** list, ULONG ulItemsToUnHilite);
981VOID SelectList(HWND hwndCnr, BOOL partial, BOOL deselect, BOOL clearfirst,
982 PCNRITEM pciParent, CHAR * filename, CHAR ** list);
983VOID SelectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask, CHAR * text,
984 BOOL arc);
985VOID DeselectAll(HWND hwndCnr, BOOL files, BOOL dirs, CHAR * mask,
986 CHAR * text, BOOL arc);
987VOID Deselect(HWND hwndCnr);
988VOID HideAll(HWND hwndCnr);
989VOID RemoveAll(HWND hwndCnr, ULONGLONG * ullTotalBytes, ULONG * totalfiles);
990VOID MarkAll(HWND hwndCnr, BOOL quitit, BOOL target, BOOL source);
991VOID SetMask(CHAR * str, MASK * mask);
992VOID ExpandAll(HWND hwndCnr, BOOL expand, PCNRITEM pciParent);
993VOID InvertAll(HWND hwndCnr);
994VOID SpecialSelect(HWND hwndCnrS, HWND hwndCnrD, INT action, BOOL reset);
995VOID SpecialSelect2(HWND hwndParent, INT action);
996
997/* viewer.c */
998MRESULT EXPENTRY MLEEditorProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
999HWND StartMLEEditor(HWND hwnd, INT flags, CHAR * filename, HWND hwndRestore);
1000
1001/* codepage.c */
1002INT PickCodepage(HWND hwnd);
1003
1004/* fonts.c */
1005VOID SetFont(HWND hwnd);
1006FATTRS *SetMLEFont(HWND hwndMLE, FATTRS * fattrs, ULONG flags);
1007VOID SetPresParamFromFattrs(HWND hwnd, FATTRS * fattrs,
1008 SHORT sNominalPointSize, FIXED fxPointSize);
1009
1010/* saveclip.c */
1011BOOL SaveToClip(HWND hwnd, CHAR * text, BOOL append);
1012VOID ListToClipboard(HWND hwnd, CHAR ** list, BOOL append);
1013CHAR **ListFromClipboard(HWND hwnd);
1014BOOL SaveToClipHab(HAB hab, CHAR * text, BOOL append);
1015VOID ListToClipboardHab(HAB hab, CHAR ** list, BOOL append);
1016CHAR **ListFromClipboardHab(HAB hab);
1017MRESULT EXPENTRY SaveListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1018 MPARAM mp2);
1019MRESULT EXPENTRY SaveAllListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1020 MPARAM mp2);
1021
1022/* filter.c */
1023INT APIENTRY Filter(PMINIRECORDCORE rmini, PVOID arg);
1024BOOL FilterAttrs(PCNRITEM pci, MASK * mask);
1025VOID save_masks(VOID);
1026MRESULT EXPENTRY PickMaskDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1027 MPARAM mp2);
1028
1029/* archive.c */
1030MRESULT EXPENTRY ArchiveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1031MRESULT EXPENTRY SBoxDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1032
1033/* extract.c */
1034MRESULT EXPENTRY ExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1035
1036/* walkem.c */
1037VOID load_udirs(VOID);
1038VOID save_udirs(VOID);
1039BOOL add_udir(BOOL userdirs, PSZ inpath);
1040BOOL remove_udir(PSZ path);
1041BOOL remove_ldir(PSZ path);
1042VOID fill_setups_list(VOID);
1043VOID load_setups(VOID);
1044VOID save_setups(VOID);
1045INT add_setup(PSZ stateName);
1046INT remove_setup(PSZ stateName);
1047VOID FillPathListBox(HWND hwnd, HWND hwnddrive, HWND hwnddir, PSZ path,
1048 BOOL nounwriteable);
1049MRESULT EXPENTRY WalkDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1050MRESULT EXPENTRY WalkAllDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1051MRESULT EXPENTRY WalkCopyDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1052 MPARAM mp2);
1053MRESULT EXPENTRY WalkMoveDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1054 MPARAM mp2);
1055MRESULT EXPENTRY WalkExtractDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1056 MPARAM mp2);
1057MRESULT EXPENTRY WalkTargetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1058 MPARAM mp2);
1059MRESULT EXPENTRY WalkTwoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1060MRESULT EXPENTRY WalkTwoCmpDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1061 MPARAM mp2);
1062MRESULT EXPENTRY WalkTwoSetDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1063 MPARAM mp2);
1064
1065/* arccnrs.c */
1066MRESULT EXPENTRY ArcClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1067 MPARAM mp2);
1068HWND StartArcCnr(HWND hwndParent, HWND hwndCaller, CHAR * arcname, INT flags,
1069 ARC_TYPE * sinfo);
1070MRESULT EXPENTRY ArcTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1071MRESULT EXPENTRY ArcFolderProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1072MRESULT EXPENTRY ArcObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1073PSZ BldQuotedFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName);
1074PSZ BldQuotedFileName(PSZ pszQuotedFileName, PSZ pszFileName);
1075
1076/* assoc.c */
1077INT ExecAssociation(HWND hwnd, CHAR * datafile);
1078VOID EditAssociations(HWND hwnd);
1079VOID load_associations(VOID);
1080VOID save_associations(VOID);
1081
1082/*draglist.c */
1083HWND DoFileDrag(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd, CHAR * arcfile,
1084 CHAR * directory, BOOL moveok);
1085HWND DragOne(HWND hwndCnr, HWND hwndObj, CHAR * filename, BOOL moveok);
1086HWND DragList(HWND hwnd, HWND hwndObj, CHAR ** list, BOOL moveok);
1087BOOL PickUp(HWND hwndCnr, HWND hwndObj, PCNRDRAGINIT pcd);
1088
1089/* droplist.c */
1090void DropHelp(MPARAM mp1, MPARAM mp2, HWND hwnd, char *text);
1091BOOL AcceptOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2);
1092BOOL GetOneDrop(HWND hwnd, MPARAM mp1, MPARAM mp2, char *buffer, ULONG buflen);
1093BOOL FullDrgName(PDRAGITEM pDItem, CHAR * buffer, ULONG buflen);
1094BOOL TwoDrgNames(PDRAGITEM pDItem, CHAR * buffer1, ULONG buflen1,
1095 char *buffer2, ULONG buflen2);
1096LISTINFO *DoFileDrop(HWND hwndCnr, CHAR * directory, BOOL arcfilesok,
1097 MPARAM mp1, MPARAM mp2);
1098VOID FreeDragInfoData (HWND hwnd, PDRAGINFO pDInfo);
1099BOOL CheckPmDrgLimit(PDRAGINFO pDInfo);
1100
1101/* shadow.c */
1102HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
1103 CHAR * cnr);
1104HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path,
1105 CHAR * cnr);
1106HOBJECT CreateFolderObject(CHAR * objtitle, CHAR * cnr);
1107HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path,
1108 BOOL executable, CHAR * cnr);
1109VOID MakeShadows(HWND hwnd, CHAR ** list, ULONG Shadows, CHAR * cnr,
1110 CHAR * foldername);
1111VOID OpenObject(CHAR * filename, CHAR * type, HWND hwnd);
1112BOOL RunSeamless(CHAR * exename, CHAR * args, HWND hwnd);
1113
1114/* printer.c */
1115BOOL PrinterReady(CHAR * printdevname);
1116BOOL SayPrinterReady(HWND hwnd);
1117VOID PrintListThread(VOID * arg);
1118MRESULT EXPENTRY PrintDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1119
1120/* attribs.c */
1121MRESULT EXPENTRY AttrListDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1122 MPARAM mp2);
1123
1124/* rename.c */
1125MRESULT EXPENTRY RenameProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1126
1127/* comp.c */
1128PSZ BldFullPathName(PSZ pszFullPathName, PSZ pszPathName, PSZ pszFileName);
1129MRESULT EXPENTRY CFileDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1130MRESULT EXPENTRY CompareDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1131
1132/* findrec.c */
1133PCNRITEM FindCnrRecord(HWND hwndCnr, CHAR * filename, PCNRITEM pciParent,
1134 BOOL partial, BOOL partmatch, BOOL noenv);
1135PCNRITEM FindParentRecord(HWND hwndCnr, PCNRITEM pciC);
1136VOID ShowCnrRecord(HWND hwndCnr, PMINIRECORDCORE pmi);
1137
1138/* update.c */
1139HPOINTER SelectDriveIcon(PCNRITEM pci);
1140PCNRITEM UpdateCnrRecord(HWND hwndCnr, CHAR * filename, BOOL partial,
1141 DIRCNRDATA * dcd);
1142BOOL UpdateCnrList(HWND hwndCnr, CHAR ** filename, INT howmany, BOOL partial,
1143 DIRCNRDATA * dcd);
1144
1145/* info.c */
1146MRESULT EXPENTRY DrvInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1147MRESULT EXPENTRY FileInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1148MRESULT EXPENTRY SetDrvProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1149
1150#if defined(__IBMC__)
1151/* fsopen.c */
1152FILE *_fsopen(CHAR * filename, CHAR * mode, INT sharemode, ...);
1153#endif
1154
1155/* seticon.c */
1156MRESULT EXPENTRY SetIconDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1157
1158/* objcnr.c */
1159MRESULT EXPENTRY ObjCnrDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1160
1161/* sortcnr.c */
1162SHORT APIENTRY SortTreeCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1163 PVOID pStorage);
1164SHORT APIENTRY SortDirCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1165 PVOID pStorage);
1166SHORT APIENTRY SortCollectorCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2,
1167 PVOID pStorage);
1168SHORT SortCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, INT Sortflags);
1169
1170/* collect.c */
1171MRESULT EXPENTRY CollectorClientWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1172 MPARAM mp2);
1173MRESULT EXPENTRY CollectorTextProc(HWND hwnd, ULONG msg, MPARAM mp1,
1174 MPARAM mp2);
1175HWND StartCollector(HWND hwndParent, INT flags);
1176MRESULT EXPENTRY CollectorObjWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1177 MPARAM mp2);
1178
1179/* command.c */
1180VOID RunCommand(HWND hwnd, INT cx);
1181VOID EditCommands(HWND hwnd);
1182CHAR *command_title(INT cx);
1183VOID load_commands(VOID);
1184
1185/* instant.c */
1186MRESULT EXPENTRY InstantDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1187
1188/* undel.c */
1189MRESULT EXPENTRY UndeleteDlgProc(HWND hwnd, ULONG msg, MPARAM mp1,
1190 MPARAM mp2);
1191
1192/* killproc.c */
1193MRESULT EXPENTRY KillDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1194
1195/* sysinfo.c */
1196MRESULT EXPENTRY SysInfoDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1197
1198/* objwin.c */
1199MRESULT EXPENTRY ObjectWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1200VOID MakeObjWin(VOID * args);
1201
1202/* progstup.c */
1203MRESULT EXPENTRY ProgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1204
1205/* key.c */
1206MRESULT EXPENTRY AboutDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1207
1208/* notify.c */
1209MRESULT EXPENTRY NotifyWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1210HWND Notify(char *text);
1211HWND DoNotify(char *text);
1212VOID NotifyError(CHAR * filename, APIRET error);
1213VOID StartNotes(CHAR * s);
1214BOOL AddNote(CHAR * note);
1215VOID EndNote(VOID);
1216VOID ShowNote(VOID);
1217VOID HideNote(VOID);
1218
1219/* winlist.c */
1220VOID WindowList(HWND hwnd);
1221
1222/* viewinf.c */
1223MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1224
1225/* notebook.c */
1226MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1227
1228/* commafmt.c */
1229size_t commafmt(PSZ pszBuf, UINT cBufSize, LONG lNumber);
1230size_t CommaFmtUL(char *pszBuf, UINT cBufSize, ULONG ullNumber,
1231 CHAR chPreferred);
1232size_t CommaFmtULL(char *pszBuf, UINT cBufSize, ULONGLONG ullNumber,
1233 CHAR chPreferred);
1234
1235/* autoview.c */
1236BOOL WriteEA(HWND hwnd, CHAR * filename, CHAR * eaname, USHORT type,
1237 CHAR * data);
1238BOOL PutComments(HWND hwnd, CHAR * filename, CHAR * comments);
1239MRESULT EXPENTRY AutoViewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1240ULONG CreateHexDump(CHAR * value, ULONG cbValue, CHAR * ret, ULONG retlen,
1241 ULONG startval, BOOL longlead);
1242
1243/* menu.c */
1244BOOL AddToMenu(CHAR * filename, HWND hwndMenu);
1245
1246/* worker.c */
1247VOID MassAction(VOID * args);
1248VOID Action(VOID * args);
1249
1250/* fm2cmd.c */
1251BOOL FM2Command(CHAR * directory, CHAR * command);
1252
1253/* seeall.c */
1254MRESULT EXPENTRY SeeAllWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1255MRESULT EXPENTRY SeeStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1256HWND StartSeeAll(HWND hwndParent, BOOL standalone, CHAR * startpath);
1257
1258/* newview.c */
1259MRESULT EXPENTRY ViewWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1260MRESULT EXPENTRY ViewStatusProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1261HWND StartViewer(HWND hwndParent, USHORT flags, CHAR * filename,
1262 HWND hwndRestore);
1263
1264/* colors.c */
1265MRESULT EXPENTRY ColorDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1266
1267/* defview.c */
1268BOOL ShowMultimedia(CHAR * filename);
1269VOID DefaultView(HWND hwnd, HWND hwndFrame, HWND hwndParent, SWP * swp,
1270 ULONG flags, CHAR * filename);
1271VOID DefaultViewKeys(HWND hwnd, HWND hwndFrame, HWND hwndParent,
1272 SWP * swp, CHAR * filename);
1273#define QuickView(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,0,f)
1274#define QuickEdit(h,f) DefaultView(h,(HWND)0,(HWND)0,NULL,8,f)
1275
1276/* catalog.c */
1277MRESULT EXPENTRY CatalogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1278
1279/* uudecode.c */
1280int UUD(char *filename, char *outname);
1281MRESULT EXPENTRY MergeDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1282
1283/* loadbmp.c */
1284HBITMAP LoadBitmapFromFileNum(USHORT id);
1285HBITMAP LoadBitmapFromFile(CHAR * pszFileName);
1286
1287/* remap.c */
1288MRESULT EXPENTRY RemapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1289
1290/* timer.c */
1291BOOL StartTimer(void);
1292void StopTimer(void);
1293
1294/* grep2.c */
1295MRESULT EXPENTRY GrepDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1296
1297/* common.c */
1298MRESULT EXPENTRY CommonFrameWndProc(USHORT id,
1299 HWND hwnd,
1300 ULONG msg, MPARAM mp1, MPARAM mp2);
1301MRESULT EXPENTRY CommonTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1302void CommonTextPaint(HWND hwnd, HPS hps);
1303void CommonCreateTextChildren(HWND hwnd, char *class, USHORT * ids);
1304void CommonDriveCmd(HWND hwnd, char *drive, USHORT cmd);
1305void CommonCreateMainChildren(HWND hwnd, SWP * swp);
1306MRESULT EXPENTRY CommonMainWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
1307 MPARAM mp2);
1308MRESULT EXPENTRY CommonTextButton(HWND hwnd, ULONG msg, MPARAM mp1,
1309 MPARAM mp2);
1310MRESULT EXPENTRY CommonCnrProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
1311HWND OpenDirCnr(HWND hwnd, HWND hwndParent, HWND hwndRestore,
1312 BOOL noautotile, char *directory);
1313VOID IncrThreadUsage(VOID);
1314VOID DecrThreadUsage(VOID);
1315
1316/* string.c */
1317BOOL LoadStrings(char *filename);
1318char *GetPString(ULONG id);
1319BOOL StringsLoaded(void);
1320
1321/* wrappers.c */
1322APIRET APIENTRY xDosSetPathInfo(PSZ pszPathName,
1323 ULONG ulInfoLevel,
1324 PVOID pInfoBuf,
1325 ULONG cbInfoBuf,
1326 ULONG flOptions);
1327PSZ xfgets(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1328 UINT uiLineNumber);
1329PSZ xfgets_bstripcr(PSZ pszBuf, size_t cMaxBytes, FILE * fp, PCSZ pszSrcFile,
1330 UINT uiLineNumber);
1331FILE *xfopen(PCSZ pszFileName, PCSZ pszMode, PCSZ pszSrcFile,
1332 UINT uiLineNumber);
1333FILE *xfsopen(PCSZ pszFileName, PCSZ pszMode, INT fSharemode, PCSZ pszSrcFile,
1334 UINT uiLineNumber);
1335VOID xfree(PVOID pv);
1336PVOID xmalloc(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1337PVOID xmallocz(size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1338PVOID xrealloc(PVOID pvIn, size_t cBytes, PCSZ pszSrcFile, UINT uiLineNumber);
1339PVOID xstrdup(PCSZ pszIn, PCSZ pszSrcFile, UINT uiLineNumber);
1340
1341//=====================================================================
1342
1343#ifdef DEFINE_GLOBALS
1344#define DATADEF
1345#else
1346#define DATADEF extern
1347#endif
1348
1349DATADEF ARC_TYPE *arcsighead;
1350DATADEF BOOL arcsigsloaded;
1351DATADEF BOOL arcsigsmodified;
1352DATADEF UINT arcsigs_header_lines; // Header comments line count in archiver.bb2
1353DATADEF UINT arcsigs_trailer_line_num; // Trailer comments start line number (1..n)
1354
1355DATADEF USHORT nodes, shiftstate;
1356DATADEF HEV CompactSem;
1357DATADEF HWND hwndMain, hwndTree, hwndStatus, hwndStatus2, hwndTrash,
1358 hwndButtonlist, hwndDrivelist, hwndStatelist, hwndUserlist,
1359 hwndAutoview, hwndAttr, hwndDate, hwndName, hwndBack,
1360 hwndLED, hwndLEDHdr, hwndAutoMLE, hwndCmdlist;
1361DATADEF HBITMAP hbmLEDon, hbmLEDoff;
1362DATADEF CHAR ArcTempRoot[9];
1363DATADEF HPOINTER hptrArrow, hptrBusy, hptrLast, hptrDir, hptrFile, hptrRemote,
1364 hptrFloppy, hptrDrive, hptrRemovable, hptrCDROM,hptrVirtual,hptrRamdisk,
1365 hptrFinger, hptrApp, hptrDunno, hptrSystem, hptrHidden,
1366 hptrReadonly, hptrNS, hptrZipstrm, hptrArc, hptrArt, hptrEW,
1367 hptrCommon, hptrEnv;
1368DATADEF PFNWP PFNWPCnr, PFNWPFrame, PFNWPButton, PFNWPStatic, PFNWPMLE;
1369DATADEF BOOL fLoadSubject, fLoadLongnames, fForceUpper, fForceLower,
1370 fSyncUpdates, fAutoTile, fDontMoveMouse, loadedudirs,
1371 fUnHilite, fWorkPlace, fConfirmDelete, fToolbar,
1372 fToolsChanged, MenuInvisible, fFreeTree, fFollowTree,
1373 fNoIconsFiles, fNoIconsDirs, fVerify, fDCOpens,
1374 fLinkSetsIcon, fSaveState, fTextTools, fCopyDefault,
1375 fToolTitles, fLogFile, fRealIdle, fNoSaveState, fUseQSysState,
1376 fSplitStatus, fArcStuffVisible, fUseMCI, fAmAV2,
1377 fNoTreeGap, fDummy, fVTreeOpensWPS, fUseQProcStat,
1378 fStartMinimized, fStartMaximized, fRemoteBug, fReminimize,
1379 fDragndropDlg, fMinOnOpen, fUserComboBox,
1380 fQuickArcFind, fNoRemovableScan, fAutoView, fDataMin,
1381 fDataToFore, fDataShowDrives, fDataInclRemote,
1382 fExternalArcboxes, fExternalViewer, fExternalCollector,
1383 fExternalINIs, fDefaultDeletePerm, fIniExisted, fUseNewViewer,
1384 fTileBackwards, fFolderAfterExtract, fUserListSwitches,
1385 fGuessType, fAutoAddDirs, fUdirsChanged, fSelectedAlways,
1386 fToolbarHelp, fComments, fMoreButtons, fNoSearch, fOtherHelp,
1387 fKeepCmdLine, fAmClosing, fSeparateParms, fTopDir,
1388 fLookInDir, fSwitchTree, fSwitchTreeOnFocus, fDrivebar,
1389 fSwitchTreeExpand, fCollapseFirst, fFilesInTree, fNoDead,
1390 fThreadNotes, fOkayMinimize, fRunning, fDullMin, fBlueLED,
1391 fViewChild, fShowEnv, fLeaveTree, fNoFoldMenu, fSubjectInLeftPane,
1392 fCustomFileDlg, fSaveMiniCmds, fSaveBigCmds, fNoTileUpdate,
1393 fFM2Deletes, fAutoAddAllDirs, fConfirmTarget, fChangeTarget,
1394 fFirstTime, fShowTarget, fNoFinger, fDrivebarHelp, fCheckMM,
1395 fSubjectLengthMax;
1396DATADEF BOOL detailsladate, detailslatime, detailscrdate, detailscrtime,
1397 detailslongname, detailsea, detailssize, detailssubject,
1398 detailslwdate, detailslwtime, detailsattr, detailsicon;
1399DATADEF PID mypid;
1400DATADEF INT driveflags[26], driveserial[26];
1401DATADEF ULONG NoBrokenNotify, fwsAnimate, OS2ver[2], DriveLines;
1402DATADEF HINI fmprof;
1403DATADEF HELPINIT hini;
1404DATADEF HWND hwndHelp, LastDir, AboutBox, DirMenu, FileMenu, TreeMenu,
1405 ArcMenu, DirCnrMenu, TreeCnrMenu, ArcCnrMenu,
1406 CollectorCnrMenu, CollectorFileMenu, CollectorDirMenu,
1407 Collector, MainPopupMenu, DataHwnd, AutoMenu, hwndBubble,
1408 hwndToolback, MainObjectHwnd;
1409#ifdef DEFINE_GLOBALS
1410#pragma data_seg(GLOBAL2)
1411#endif
1412DATADEF CHAR *DEBUG_STRING, *FM3Str, *FM2Str, *NullStr, *Default, *Settings,
1413 *DRM_OS2FILE, *DRM_FM2ARCMEMBER, *DRF_FM2ARCHIVE,
1414 *DRMDRFLIST, *DRMDRFOS2FILE, *DRMDRFFM2ARC,
1415 *DRM_FM2INIRECORD, *DRF_FM2INI, *SUBJECT, *LONGNAME,
1416 *HPFS, *JFS, *CDFS, *FAT32, *HPFS386, *NDFS32, *CBSIFS, *ISOFS, *RAMFS, *NTFS,
1417 *WPProgram, *FM3Folder, *FM3Tools;
1418DATADEF RGB2 RGBGREY, RGBBLACK;
1419DATADEF CHAR archiverbb2[CCHMAXPATH], StopPrinting, profile[CCHMAXPATH];
1420DATADEF CHAR appname[12], realappname[12];
1421DATADEF CHAR editor[CCHMAXPATH], viewer[CCHMAXPATH],
1422 virus[CCHMAXPATH], printer[CCHMAXPATH],
1423 compare[CCHMAXPATH], extractpath[CCHMAXPATH],
1424 lastextractpath[CCHMAXPATH], lasttoolbox[CCHMAXPATH],
1425 HomePath[CCHMAXPATH], SwapperDat[CCHMAXPATH],
1426 binview[CCHMAXPATH], bined[CCHMAXPATH],
1427 dircompare[CCHMAXPATH], szDefArc[CCHMAXPATH],
1428 ftprun[CCHMAXPATH], httprun[CCHMAXPATH], targetdir[CCHMAXPATH];
1429DATADEF HMODULE FM3DllHandle, FM3ModHandle;
1430DATADEF CHAR *quicktool[50];
1431DATADEF BOOL qtloaded;
1432DATADEF INT sortFlags, TreesortFlags, CollectorsortFlags;
1433DATADEF INT butxsize, butysize;
1434DATADEF FILE *LogFileHandle;
1435
1436#define FILESTOGET_MIN 256
1437#define FILESTOGET_MAX 4096
1438
1439DATADEF ULONG ulCnrType, FilesToGet, AutoviewHeight, TreeWidth, FM3UL, SubjectDisplayWidth;
1440DATADEF long prnwidth, prnlength, prntmargin, prnbmargin, prnlmargin,
1441 prnrmargin, prnspacing, prntabspaces;
1442DATADEF BOOL prnpagenums, prnformat, prnformfeedbefore, prnformfeedafter,
1443 prnalt;
1444DATADEF LINKDIRS *udirhead, *ldirhead;
1445DATADEF LINKCMDS *cmdhead, *cmdtail;
1446DATADEF BOOL cmdloaded;
1447DATADEF CHAR *WC_OBJECTWINDOW, *WC_BUBBLE, *WC_TOOLBUTTONS, *WC_DRIVEBUTTONS, *WC_DIRCONTAINER,
1448 *WC_DIRSTATUS, *WC_TREECONTAINER, *WC_TREEOPENBUTTON, *WC_TREESTATUS, *WC_MAINWND,
1449 *WC_MAINWND2, *WC_AUTOVIEW, *WC_LED, *WC_COLLECTOR, *WC_COLSTATUS, *WC_STATUS, *WC_TOOLBACK,
1450 *WC_DRIVEBACK, *WC_ARCCONTAINER, *WC_ARCSTATUS, *WC_MLEEDITOR, *WC_INIEDITOR, *WC_SEEALL,
1451 *WC_NEWVIEW, *WC_SEESTATUS, *WC_VIEWSTATUS, *WC_ERRORWND, *WC_MINITIME, *WC_DATABAR;
1452
1453#ifdef DEFINE_GLOBALS
1454#pragma data_seg(GLOBAL3)
1455#endif
1456DATADEF LONG standardcolors[16];
1457
1458#ifdef INCL_MMIOOS2
1459#pragma pack(4)
1460/* definitions for MMPM/2 imports */
1461typedef DWORD(APIENTRY MMIOIDENTIFYFILE) (PSZ, PMMIOINFO, PMMFORMATINFO,
1462 PFOURCC, DWORD, DWORD);
1463typedef MMIOIDENTIFYFILE *PMMIOIDENTIFYFILE;
1464typedef DWORD(APIENTRY MMIOOPEN)( PSZ, PMMIOINFO, DWORD);
1465typedef MMIOOPEN *PMMIOOPEN;
1466typedef WORD (APIENTRY MMIOGETINFO)( HMMIO, PMMIOINFO, WORD);
1467typedef MMIOGETINFO *PMMIOGETINFO;
1468typedef WORD (APIENTRY MMIOCLOSE)( HMMIO, WORD);
1469typedef MMIOCLOSE *PMMIOCLOSE;
1470
1471#pragma pack()
1472#endif
1473
1474#ifdef DEFINE_GLOBALS
1475#pragma data_seg(GLOBAL4)
1476#endif
1477DATADEF HSWITCH switches[499];
1478DATADEF ULONG numswitches;
1479
1480#define priority_idle() DosSetPriority(PRTYS_THREAD,PRTYC_IDLETIME,30L,0L)
1481#define priority_normal() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,0L,0L)
1482#define priority_tweaked() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,1L,0L)
1483#define priority_bumped() DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,3L,0L)
1484#define priority_critical() DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,2L,0L)
1485#define priority_max() DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,31L,0L)
1486#define SysVal(value) WinQuerySysValue(HWND_DESKTOP, (value))
Note: See TracBrowser for help on using the repository browser.