source: trunk/dll/fm3dll.h@ 413

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

Add xfgets, xfgets_bstripcr

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