source: trunk/dll/fm3dll.h@ 1069

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

Fixes trap on viewing multiple files from an archive Ticket 248. Also includes initial code for using TMP directory for Temp files.

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