source: trunk/dll/fm3dll.h@ 918

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

Fix CheckApp_QuoteAddExe to return a pointer on the stack instead of a string. Use MAXCOMLINESTRG for command line length.

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