source: trunk/dll/fm3dll.h@ 312

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

ARC_TYPE: support preserving comments

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