source: trunk/dll/fm3dll.h@ 908

Last change on this file since 908 was 907, checked in by Steven Levine, 18 years ago

Avoid out of memory traps in Compare Directories
Rework Compare Directories progress display for 2 second update rate
Start refactoring to reduce dependence on fm3dll.h
Add timer services (IsITimerExpired etc.)

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