source: trunk/dll/fm3dll.h@ 377

Last change on this file since 377 was 365, checked in by root, 19 years ago

Add strips.c functions

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