source: trunk/dll/fm3dll.h@ 1120

Last change on this file since 1120 was 1117, checked in by Gregg Young, 17 years ago

Check disk free space before writing data files to prevent traps from being on a full disk (ticket 154)

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