source: trunk/dll/fm3dll.h@ 926

Last change on this file since 926 was 926, checked in by Gregg Young, 18 years ago

Background color on toolbar now can be change with drag drop; ticket 161. Set command line string length to 2048

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