source: trunk/dll/fm3dll.h@ 302

Last change on this file since 302 was 294, checked in by root, 19 years ago

Rework EditArchiverData
ARC_TYPE: support non-string signatures

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