source: trunk/dll/fm3dll.h@ 395

Last change on this file since 395 was 381, checked in by root, 19 years ago

Add more error.c functions

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