source: trunk/dll/fm3dll.h@ 1010

Last change on this file since 1010 was 1009, checked in by Steven Levine, 17 years ago

Add xfree xstrdup Fortify support
Add MT capable Fortify scope logic

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