source: trunk/dll/fm3dll.h@ 960

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

Rework code and resources to support settings menu conditional cascade
Optimize last settings menu save/restore

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