source: trunk/dll/fm3dll.h@ 549

Last change on this file since 549 was 549, checked in by root, 19 years ago

Support additional file systems types (Gregg)
Reorganize menus (Gregg)
Enhance unzip option controls (Gregg)
Remember search options in Seek and Scan (Gregg)
Allow drive flag editing for not ready drives (Gregg)
Correct bitmap loading defects (Steven)
Update documentation (Gregg)
Add newer, better bitmaps (David)
Update Readme to discuss move to Netlabs (Steve)

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