source: trunk/dll/fm3dll.h@ 536

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

Renames

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