source: trunk/dll/fm3dll.h@ 327

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

Support Hide not selected

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