source: trunk/dll/fm3dll.h@ 772

Last change on this file since 772 was 769, checked in by Steven Levine, 18 years ago

Rework compare directories select/deselect logic
Sanitize CNRITEM_EXISTS usage
Correct BldFullPathName typo

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