source: trunk/dll/fm3dll.h@ 896

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

Add LIBPATHSTRICT option for mailto

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