source: trunk/dll/fm3dll.h@ 352

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

Add Runtime_Error
Add memory.c functions

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