source: trunk/dll/fm3dll.h@ 1036

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

More fortify changes

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