summaryrefslogtreecommitdiff
path: root/sal/osl/os2/helpers/dosh.h
diff options
context:
space:
mode:
Diffstat (limited to 'sal/osl/os2/helpers/dosh.h')
-rw-r--r--sal/osl/os2/helpers/dosh.h924
1 files changed, 28 insertions, 896 deletions
diff --git a/sal/osl/os2/helpers/dosh.h b/sal/osl/os2/helpers/dosh.h
index d2e936a57..9f14605d3 100644
--- a/sal/osl/os2/helpers/dosh.h
+++ b/sal/osl/os2/helpers/dosh.h
@@ -1,28 +1,36 @@
-
-/*
- *@@sourcefile dosh.h:
- * header file for dosh.c. See remarks there.
+/*************************************************************************
*
- * Note: Version numbering in this file relates to XWorkplace version
- * numbering.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
- *@@include #define INCL_DOSPROCESS
- *@@include #define INCL_DOSDEVIOCTL // for doshQueryDiskParams only
- *@@include #include <os2.h>
- *@@include #include "helpers\dosh.h"
- */
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
-/* This file Copyright (C) 1997-2001 Ulrich M”ller,
+/* This file Copyright (C) 1997-2006 Ulrich M�ller,
* Dmitry A. Steklenev.
* This file is part of the "XWorkplace helpers" source package.
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, in version 2 as it comes in the
- * "COPYING" file of the XWorkplace main distribution.
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ *
+ * 2009-06-15 published under LGPL3 with Ulrich M�ller permission.
+ *
*/
#if __cplusplus
@@ -32,886 +40,10 @@ extern "C" {
#ifndef DOSH_HEADER_INCLUDED
#define DOSH_HEADER_INCLUDED
- /* ******************************************************************
- *
- * Wrappers
- *
- ********************************************************************/
-
- // if DOSH_STANDARDWRAPPERS is #define'd before including dosh.h,
- // all the following Dos* API calls are redirected to the dosh*
- // counterparts
-
- #ifdef DOSH_STANDARDWRAPPERS
-
- #ifdef INCL_DOSPROCESS
-
- APIRET XWPENTRY doshSleep(ULONG msec);
- #define DosSleep(a) doshSleep((a))
-
- #endif
-
- #ifdef INCL_DOSSEMAPHORES
-
- APIRET XWPENTRY doshCreateMutexSem(PSZ pszName,
- PHMTX phmtx,
- ULONG flAttr,
- BOOL32 fState);
- #define DosCreateMutexSem(a, b, c, d) doshCreateMutexSem((a), (b), (c), (d))
-
- APIRET XWPENTRY doshRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
- #define DosRequestMutexSem(h, t) doshRequestMutexSem((h), (t))
-
- APIRET XWPENTRY doshReleaseMutexSem(HMTX hmtx);
- #define DosReleaseMutexSem(h) doshReleaseMutexSem((h))
-
- #endif
-
- #ifdef INCL_DOSEXCEPTIONS
-
- APIRET XWPENTRY doshSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
- #define DosSetExceptionHandler(a) doshSetExceptionHandler((a))
-
- APIRET XWPENTRY doshUnsetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
- #define DosUnsetExceptionHandler(a) doshUnsetExceptionHandler((a))
-
- #endif
-
- #endif
-
- /* ******************************************************************
- *
- * Miscellaneous
- *
- ********************************************************************/
-
- CHAR doshGetChar(VOID);
-
- BOOL doshQueryShiftState(VOID);
-
- ULONG doshIsWarp4(VOID);
-
- PSZ doshQuerySysErrorMsg(APIRET arc);
-
- ULONG doshQuerySysUptime(VOID);
-
- /* ******************************************************************
- *
- * Memory helpers
- *
- ********************************************************************/
-
- PVOID doshMalloc(ULONG cb,
- APIRET *parc);
-
- APIRET doshAllocArray(ULONG c,
- ULONG cbArrayItem,
- PBYTE *ppv,
- PULONG pcbAllocated);
-
- PVOID doshAllocSharedMem(ULONG ulSize,
- const char* pcszName);
-
- PVOID doshRequestSharedMem(PCSZ pcszName);
-
- /* ******************************************************************
- *
- * Drive helpers
- *
- ********************************************************************/
-
- APIRET doshIsFixedDisk(ULONG ulLogicalDrive,
- PBOOL pfFixed);
-
- #ifdef INCL_DOSDEVIOCTL
-
- // #pragma pack(1)
-
- /*
- * DRIVEPARAMS:
- * structure used for doshQueryDiskParams.
- * removed this, we can directly use BIOSPARAMETERBLOCK
- * V0.9.13 (2001-06-14) [umoeller]
- */
-
- /* typedef struct _DRIVEPARAMS
- {
- BIOSPARAMETERBLOCK bpb;
- // BIOS parameter block. This is the first sector
- // (at byte 0) in each partition. This is defined
- // in the OS2 headers as follows:
-
- typedef struct _BIOSPARAMETERBLOCK {
- 0 USHORT usBytesPerSector;
- // Number of bytes per sector.
- 2 BYTE bSectorsPerCluster;
- // Number of sectors per cluster.
- 3 USHORT usReservedSectors;
- // Number of reserved sectors.
- 5 BYTE cFATs;
- // Number of FATs.
- 6 USHORT cRootEntries;
- // Number of root directory entries.
- 8 USHORT cSectors;
- // Number of sectors.
- 10 BYTE bMedia;
- // Media descriptor.
- 11 USHORT usSectorsPerFAT;
- // Number of secctors per FAT.
- 13 USHORT usSectorsPerTrack;
- // Number of sectors per track.
- 15 USHORT cHeads;
- // Number of heads.
- 17 ULONG cHiddenSectors;
- // Number of hidden sectors.
- 21 ULONG cLargeSectors;
- // Number of large sectors.
- 25 BYTE abReserved[6];
- // Reserved.
- 31 USHORT cCylinders;
- // Number of cylinders defined for the physical
- // device.
- 33 BYTE bDeviceType;
- // Physical layout of the specified device.
- 34 USHORT fsDeviceAttr;
- // A bit field that returns flag information
- // about the specified drive.
- } BIOSPARAMETERBLOCK;
-
- // removed the following fields... these are already
- // in the extended BPB structure, as defined in the
- // Toolkit's BIOSPARAMETERBLOCK struct. Checked this,
- // the definition is the same for the Toolkit 3 and 4.5.
-
- USHORT usCylinders;
- // no. of cylinders
- UCHAR ucDeviceType;
- // device type; according to the IBM Control
- // Program Reference (see DSK_GETDEVICEPARAMS),
- // this value can be:
- // -- 0: 48 TPI low-density diskette drive
- // -- 1: 96 TPI high-density diskette drive
- // -- 2: 3.5-inch 720KB diskette drive
- // -- 3: 8-Inch single-density diskette drive
- // -- 4: 8-Inch double-density diskette drive
- // -- 5: Fixed disk
- // -- 6: Tape drive
- // -- 7: Other (includes 1.44MB 3.5-inch diskette drive
- // and CD-ROMs)
- // -- 8: R/W optical disk
- // -- 9: 3.5-inch 4.0MB diskette drive (2.88MB formatted)
- USHORT usDeviceAttrs;
- // DEVATTR_* flags
- } DRIVEPARAMS, *PDRIVEPARAMS;
- #pragma pack() */
-
- APIRET doshQueryDiskParams(ULONG ulLogicalDrive,
- PBIOSPARAMETERBLOCK pdp);
-
- BYTE doshQueryDriveType(ULONG ulLogicalDrive,
- PBIOSPARAMETERBLOCK pdp,
- BOOL fFixed);
-
- APIRET XWPENTRY doshHasAudioCD(ULONG ulLogicalDrive,
- HFILE hfDrive,
- BOOL fMixedModeCD,
- PBOOL pfAudio);
-
- #endif
-
- VOID XWPENTRY doshEnumDrives(PSZ pszBuffer,
- PCSZ pcszFileSystem,
- BOOL fSkipRemoveables);
- typedef VOID XWPENTRY DOSHENUMDRIVES(PSZ pszBuffer,
- PCSZ pcszFileSystem,
- BOOL fSkipRemoveables);
- typedef DOSHENUMDRIVES *PDOSHENUMDRIVES;
-
CHAR doshQueryBootDrive(VOID);
- #define ERROR_AUDIO_CD_ROM 10000
-
- #define DRVFL_MIXEDMODECD 0x0001
- #define DRVFL_TOUCHFLOPPIES 0x0002
- #define DRVFL_CHECKEAS 0x0004
- #define DRVFL_CHECKLONGNAMES 0x0008
-
- APIRET doshAssertDrive(ULONG ulLogicalDrive,
- ULONG fl);
-
- #ifdef INCL_DOSDEVIOCTL
-
- /*
- *@@ XDISKINFO:
- *
- *@@added V0.9.16 (2002-01-13) [umoeller]
- */
-
- typedef struct _XDISKINFO
- {
- CHAR cDriveLetter; // drive letter
- CHAR cLogicalDrive; // logical drive no.
-
- BOOL fPresent; // if FALSE, drive does not exist
-
- // the following are only valid if fPresent == TRUE
-
- BIOSPARAMETERBLOCK bpb;
- // 0x00 USHORT usBytesPerSector;
- // 0x02 BYTE bSectorsPerCluster;
- // 0x03 USHORT usReservedSectors;
- // 0x05 BYTE cFATs;
- // 0x06 USHORT cRootEntries;
- // 0x08 USHORT cSectors;
- // 0x0a BYTE bMedia;
- // 0x0b USHORT usSectorsPerFAT;
- // 0x0d USHORT usSectorsPerTrack;
- // 0x0f USHORT cHeads;
- // 0x11 ULONG cHiddenSectors;
- // 0x15 ULONG cLargeSectors;
- // 0x19 BYTE abReserved[6];
- // 0x1a USHORT cCylinders;
- // 0x1c BYTE bDeviceType;
- #ifndef DEVTYPE_48TPI
- #define DEVTYPE_48TPI 0x0000
- #define DEVTYPE_96TPI 0x0001
- #define DEVTYPE_35 0x0002
- #define DEVTYPE_8SD 0x0003
- #define DEVTYPE_8DD 0x0004
- #define DEVTYPE_FIXED 0x0005
- #define DEVTYPE_TAPE 0x0006
- #endif
- #define DEVTYPE_OTHER 0x0007
- // includes 1.44 3.5" floppy
- #define DEVTYPE_RWOPTICAL 0x0008
- #define DEVTYPE_35_288MB 0x0009
- // 0x1d USHORT fsDeviceAttr;
- #define DEVATTR_REMOVEABLE 0x0001
- // drive is removeable
- #define DEVATTR_CHANGELINE 0x0002
- // device can determine whether media has
- // been removed since last I/O operation
- #define DEVATTR_GREATER16MB 0x0004
- // physical device driver supports physical
- // addresses > 16 MB
- #define DEVATTR_PARTITIONALREMOVEABLE 0x0008
- // undocumented flag; set for ZIP drives
-
- BYTE bType;
- // do not change these codes, XWorkplace relies
- // on them too to parse WPDisk data
- #define DRVTYPE_HARDDISK 0
- #define DRVTYPE_FLOPPY 1
- #define DRVTYPE_TAPE 2
- #define DRVTYPE_VDISK 3
- #define DRVTYPE_CDROM 4
- #define DRVTYPE_LAN 5
- #define DRVTYPE_PARTITIONABLEREMOVEABLE 6
- #define DRVTYPE_UNKNOWN 255
-
- ULONG flDevice;
- // any combination of the following:
- #define DFL_REMOTE 0x0001
- // drive is remote (not local)
- #define DFL_FIXED 0x0002
- // drive is fixed; otherwise it is removeable!
- // always set for harddisks and zip drives
- #define DFL_PARTITIONABLEREMOVEABLE 0x0004
- // set for zip drives;
- // in that case, DFL_FIXED is set also
- #define DFL_BOOTDRIVE 0x0008
- // drive was booted from
-
- // media flags:
-
- #define DFL_MEDIA_PRESENT 0x1000
- // media is present in drive;
- // -- always set for harddisks,
- // unless the file system is not
- // understood
- // -- always set for remove drives
- // -- always set for A: and B:
- // -- set for CD-ROMS only if data
- // CD-ROM is inserted
- #define DFL_AUDIO_CD 0x2000
- // set for CD-ROMs only, if an audio CD
- // is currently inserted; in that case,
- // DFL_MEDIA_PRESENT is _not_ set
- #define DFL_SUPPORTS_EAS 0x4000
- // drive supports extended attributes
- // (assumption based on DosFSCtl,
- // might not be correct for remote drives;
- // reports correctly for FAT32 though)
- #define DFL_SUPPORTS_LONGNAMES 0x8000
- // drive supports long names; this does not
- // necessarily mean that we support all IFS
- // characters also
-
- // the following are only valid if DFL_MEDIA_PRESENT is set;
- // they are always set for drives A: and B:
-
- CHAR szFileSystem[30];
- // e.g. "FAT" or "HPFS" or "JFS" or "CDFS"
-
- LONG lFileSystem;
- // do not change these codes, XWorkplace relies
- // on them too to parse WPDisk data
- #define FSYS_UNKNOWN 0
- // drive not formatted, or unknown file system
- #define FSYS_FAT 1
- #define FSYS_HPFS_JFS 2
- #define FSYS_CDFS 3
- #define FSYS_CDWFS 6 // not used by WPS!
- // added V0.9.19 (2002-04-25) [umoeller]
- #define FSYS_TVFS 7 // not used by WPS!
- #define FSYS_FAT32_EXT2 8 // not used by WPS!
- #define FSYS_RAMFS 9 // not used by WPS!
- #define FSYS_REMOTE 10
- // NOTE: if this has a negative value, this is
- // the APIRET code from DosQueryFSAttach
-
- // error codes for various operations
- APIRET arcIsFixedDisk,
- arcQueryDiskParams,
- arcQueryMedia,
- arcOpenLongnames;
-
- } XDISKINFO, *PXDISKINFO;
-
- APIRET doshGetDriveInfo(ULONG ulLogicalDrive,
- ULONG fl,
- PXDISKINFO pdi);
-
- #endif
-
- APIRET doshSetLogicalMap(ULONG ulLogicalDrive);
-
- APIRET XWPENTRY doshQueryDiskSize(ULONG ulLogicalDrive, double *pdSize);
- typedef APIRET XWPENTRY DOSHQUERYDISKSIZE(ULONG ulLogicalDrive, double *pdSize);
- typedef DOSHQUERYDISKSIZE *PDOSHQUERYDISKSIZE;
-
- APIRET XWPENTRY doshQueryDiskFree(ULONG ulLogicalDrive, double *pdFree);
- typedef APIRET XWPENTRY DOSHQUERYDISKFREE(ULONG ulLogicalDrive, double *pdFree);
- typedef DOSHQUERYDISKFREE *PDOSHQUERYDISKFREE;
-
- APIRET XWPENTRY doshQueryDiskFSType(ULONG ulLogicalDrive, PSZ pszBuf, ULONG cbBuf);
- typedef APIRET XWPENTRY DOSHQUERYDISKFSTYPE(ULONG ulLogicalDrive, PSZ pszBuf, ULONG cbBuf);
- typedef DOSHQUERYDISKFSTYPE *PDOSHQUERYDISKFSTYPE;
-
- APIRET doshQueryDiskLabel(ULONG ulLogicalDrive,
- PSZ pszVolumeLabel);
-
- APIRET doshSetDiskLabel(ULONG ulLogicalDrive,
- PSZ pszNewLabel);
-
- /* ******************************************************************
- *
- * Module handling helpers
- *
- ********************************************************************/
-
- APIRET doshQueryProcAddr(PCSZ pcszModuleName,
- ULONG ulOrdinal,
- PFN *ppfn);
-
- /*
- *@@ RESOLVEFUNCTION:
- * one of these structures each define
- * a single function import to doshResolveImports.
- *
- *@@added V0.9.3 (2000-04-25) [umoeller]
- */
-
- typedef struct _RESOLVEFUNCTION
- {
- const char *pcszFunctionName;
- PFN *ppFuncAddress;
- } RESOLVEFUNCTION, *PRESOLVEFUNCTION;
-
- typedef const struct _RESOLVEFUNCTION *PCRESOLVEFUNCTION;
-
- APIRET doshResolveImports(PCSZ pcszModuleName,
- HMODULE *phmod,
- PCRESOLVEFUNCTION paResolves,
- ULONG cResolves);
-
- /* ******************************************************************
- *
- * Performance Counters (CPU Load)
- *
- ********************************************************************/
-
- #define CMD_PERF_INFO 0x41
- #define CMD_KI_ENABLE 0x60
- #define CMD_KI_DISABLE 0x61
- #ifndef CMD_KI_RDCNT
- #define CMD_KI_RDCNT 0x63
- typedef APIRET APIENTRY FNDOSPERFSYSCALL(ULONG ulCommand,
- ULONG ulParm1,
- ULONG ulParm2,
- ULONG ulParm3);
- typedef FNDOSPERFSYSCALL *PFNDOSPERFSYSCALL;
- #endif
-
- typedef struct _CPUUTIL
- {
- ULONG ulTimeLow; // low 32 bits of time stamp
- ULONG ulTimeHigh; // high 32 bits of time stamp
- ULONG ulIdleLow; // low 32 bits of idle time
- ULONG ulIdleHigh; // high 32 bits of idle time
- ULONG ulBusyLow; // low 32 bits of busy time
- ULONG ulBusyHigh; // high 32 bits of busy time
- ULONG ulIntrLow; // low 32 bits of interrupt time
- ULONG ulIntrHigh; // high 32 bits of interrupt time
- } CPUUTIL, *PCPUUTIL;
-
- // macro to convert 8-byte (low, high) time value to double
- #define LL2F(high, low) (4294967296.0*(high)+(low))
-
- /*
- *@@ DOSHPERFSYS:
- * structure used with doshPerfOpen.
- *
- *@@added V0.9.7 (2000-12-02) [umoeller]
- *@@changed V0.9.9 (2001-03-14) [umoeller]: added interrupt load
- */
-
- typedef struct _DOSHPERFSYS
- {
- // output: no. of processors on the system
- ULONG cProcessors;
- // output: one CPU load for each CPU
- PLONG palLoads;
-
- // output: one CPU interrupt load for each CPU
- PLONG palIntrs;
-
- // each of the following ptrs points to an array of cProcessors items
- PCPUUTIL paCPUUtils; // CPUUTIL structures
- double *padBusyPrev; // previous "busy" calculations
- double *padTimePrev; // previous "time" calculations
- double *padIntrPrev; // previous "intr" calculations
-
- // private stuff
- HMODULE hmod;
- BOOL fInitialized;
- PFNDOSPERFSYSCALL pDosPerfSysCall;
- } DOSHPERFSYS, *PDOSHPERFSYS;
-
- APIRET doshPerfOpen(PDOSHPERFSYS *ppPerfSys);
-
- APIRET doshPerfGet(PDOSHPERFSYS pPerfSys);
-
- APIRET doshPerfClose(PDOSHPERFSYS *ppPerfSys);
-
- /* ******************************************************************
- *
- * File name parsing
- *
- ********************************************************************/
-
- APIRET doshGetDriveSpec(PCSZ pcszFullFile,
- PSZ pszDrive,
- PULONG pulDriveLen,
- PBOOL pfIsUNC);
-
- PSZ doshGetExtension(PCSZ pcszFilename);
-
- /* ******************************************************************
- *
- * File helpers
- *
- ********************************************************************/
-
- BOOL doshIsFileOnFAT(const char* pcszFileName);
-
- APIRET doshIsValidFileName(const char* pcszFile,
- BOOL fFullyQualified);
-
- BOOL doshMakeRealName(PSZ pszTarget, PSZ pszSource, CHAR cReplace, BOOL fIsFAT);
-
- APIRET doshQueryFileSize(HFILE hFile,
- PULONG pulSize);
-
- APIRET doshQueryPathSize(PCSZ pcszFile,
- PULONG pulSize);
-
- APIRET doshQueryPathAttr(const char* pcszFile,
- PULONG pulAttr);
-
- APIRET doshSetPathAttr(const char* pcszFile,
- ULONG ulAttr);
-
- /* ******************************************************************
- *
- * XFILEs
- *
- ********************************************************************/
-
- /*
- *@@ XFILE:
- *
- *@@added V0.9.16 (2001-10-19) [umoeller]
- */
-
- typedef struct _XFILE
- {
- HFILE hf;
-
- PSZ pszFilename; // as given to doshOpen
- ULONG flOpenMode; // as given to doshOpen
-
- ULONG cbInitial, // intial file size on open (can be 0 if new)
- cbCurrent; // current file size (raised with each write)
-
- PBYTE pbCache; // if != NULL, cached data from doshReadAt
- ULONG cbCache, // size of data in cbCache
- ulReadFrom; // file offset where pbCache was read from
- } XFILE, *PXFILE;
-
- #define XOPEN_READ_EXISTING 0x0001
- #define XOPEN_READWRITE_EXISTING 0x0002
- #define XOPEN_READWRITE_APPEND 0x0003
- #define XOPEN_READWRITE_NEW 0x0004
- #define XOPEN_ACCESS_MASK 0xffff
-
- #define XOPEN_BINARY 0x10000000
-
- APIRET doshOpen(PCSZ pcszFilename,
- ULONG flOpenMode,
- PULONG pcbFile,
- PXFILE *ppFile);
-
- #define DRFL_NOCACHE 0x0001
- #define DRFL_FAILIFLESS 0x0002
-
- APIRET doshReadAt(PXFILE pFile,
- ULONG ulOffset,
- PULONG pcb,
- PBYTE pbData,
- ULONG fl);
-
- APIRET doshWrite(PXFILE pFile,
- ULONG cb,
- PCSZ pbData);
-
- APIRET doshWriteAt(PXFILE pFile,
- ULONG ulOffset,
- ULONG cb,
- PCSZ pbData);
-
- APIRET doshWriteLogEntry(PXFILE pFile,
- const char* pcszFormat,
- ...);
-
- APIRET doshClose(PXFILE *ppFile);
-
- APIRET doshReadText(PXFILE pFile,
- PSZ* ppszContent,
- PULONG pcbRead);
-
- APIRET doshLoadTextFile(PCSZ pcszFile,
- PSZ* ppszContent,
- PULONG pcbRead);
-
- PSZ doshCreateBackupFileName(const char* pszExisting);
-
- APIRET doshCreateTempFileName(PSZ pszTempFileName,
- PCSZ pcszDir,
- PCSZ pcszPrefix,
- PCSZ pcszExt);
-
- APIRET doshWriteTextFile(const char* pszFile,
- const char* pszContent,
- PULONG pulWritten,
- PSZ pszBackup);
-
-
- /* ******************************************************************
- *
- * Directory helpers
- *
- ********************************************************************/
-
- BOOL doshQueryDirExist(PCSZ pcszDir);
-
- APIRET doshCreatePath(PCSZ pcszPath,
- BOOL fHidden);
-
- APIRET doshQueryCurrentDir(PSZ pszBuf);
-
- APIRET doshSetCurrentDir(PCSZ pcszDir);
-
- #define DOSHDELDIR_RECURSE 0x0001
- #define DOSHDELDIR_DELETEFILES 0x0002
-
- APIRET doshDeleteDir(PCSZ pcszDir,
- ULONG flFlags,
- PULONG pulDirs,
- PULONG pulFiles);
-
- APIRET doshCanonicalize(PCSZ pcszFileIn,
- PSZ pszFileOut,
- ULONG cbFileOut);
-
- /* ******************************************************************
- *
- * Process helpers
- *
- ********************************************************************/
-
- ULONG XWPENTRY doshMyPID(VOID);
- typedef ULONG XWPENTRY DOSHMYPID(VOID);
- typedef DOSHMYPID *PDOSHMYPID;
-
- ULONG XWPENTRY doshMyTID(VOID);
- typedef ULONG XWPENTRY DOSHMYTID(VOID);
- typedef DOSHMYTID *PDOSHMYTID;
-
- APIRET doshExecVIO(PCSZ pcszExecWithArgs,
- PLONG plExitCode);
-
- APIRET doshQuickStartSession(PCSZ pcszPath,
- PCSZ pcszParams,
- BOOL fForeground,
- USHORT usPgmCtl,
- BOOL fWait,
- PULONG pulSID,
- PPID ppid,
- PUSHORT pusReturn);
-
- APIRET doshSearchPath(PCSZ pcszPath,
- PCSZ pcszFile,
- PSZ pszExecutable,
- ULONG cbExecutable);
-
- APIRET doshFindExecutable(PCSZ pcszCommand,
- PSZ pszExecutable,
- ULONG cbExecutable,
- PCSZ *papcszExtensions,
- ULONG cExtensions);
-
- /********************************************************************
- *
- * Partition functions
- *
- ********************************************************************/
-
- /*
- *@@ LVMINFO:
- * informational structure created by
- * doshQueryLVMInfo.
- *
- *@@added V0.9.9 (2001-04-07) [umoeller]
- */
-
- typedef struct _LVMINFO
- {
- HMODULE hmodLVM;
-
- } LVMINFO, *PLVMINFO;
-
- /* #define DOSH_PARTITIONS_LIMIT 10
-
- #define PAR_UNUSED 0x00 // Unused
- #define PAR_FAT12SMALL 0x01 // DOS FAT 12-bit < 10 Mb
- #define PAR_XENIXROOT 0x02 // XENIX root
- #define PAR_XENIXUSER 0x03 // XENIX user
- #define PAR_FAT16SMALL 0x04 // DOS FAT 16-bit < 32 Mb
- #define PAR_EXTENDED 0x05 // Extended partition
- #define PAR_FAT16BIG 0x06 // DOS FAT 16-bit > 32 Mb
- #define PAR_HPFS 0x07 // OS/2 HPFS
- #define PAR_AIXBOOT 0x08 // AIX bootable partition
- #define PAR_AIXDATA 0x09 // AIX bootable partition
- #define PAR_BOOTMANAGER 0x0A // OS/2 Boot Manager
- #define PAR_WINDOWS95 0x0B // Windows 95 32-bit FAT
- #define PAR_WINDOWS95LB 0x0C // Windows 95 32-bit FAT with LBA
- #define PAR_VFAT16BIG 0x0E // LBA VFAT (same as 06h but using LBA-mode)
- #define PAR_VFAT16EXT 0x0F // LBA VFAT (same as 05h but using LBA-mode)
- #define PAR_OPUS 0x10 // OPUS
- #define PAR_HID12SMALL 0x11 // OS/2 hidden DOS FAT 12-bit
- #define PAR_COMPAQDIAG 0x12 // Compaq diagnostic
- #define PAR_HID16SMALL 0x14 // OS/2 hidden DOS FAT 16-bit
- #define PAR_HID16BIG 0x16 // OS/2 hidden DOS FAT 16-bit
- #define PAR_HIDHPFS 0x17 // OS/2 hidden HPFS
- #define PAR_WINDOWSSWP 0x18 // AST Windows Swap File
- #define PAR_NECDOS 0x24 // NEC MS-DOS 3.x
- #define PAR_THEOS 0x38 // THEOS
- #define PAR_VENIX 0x40 // VENIX
- #define PAR_RISCBOOT 0x41 // Personal RISC boot
- #define PAR_SFS 0x42 // SFS
- #define PAR_ONTRACK 0x50 // Ontrack
- #define PAR_ONTRACKEXT 0x51 // Ontrack extended partition
- #define PAR_CPM 0x52 // CP/M
- #define PAR_UNIXSYSV 0x63 // UNIX SysV/386
- #define PAR_NOVELL_64 0x64 // Novell
- #define PAR_NOVELL_65 0x65 // Novell
- #define PAR_NOVELL_67 0x67 // Novell
- #define PAR_NOVELL_68 0x68 // Novell
- #define PAR_NOVELL_69 0x69 // Novell
- #define PAR_PCIX 0x75 // PCIX
- #define PAR_MINIX 0x80 // MINIX
- #define PAR_LINUX 0x81 // Linux
- #define PAR_LINUXSWAP 0x82 // Linux Swap Partition
- #define PAR_LINUXFILE 0x83 // Linux File System
- #define PAR_FREEBSD 0xA5 // FreeBSD
- #define PAR_BBT 0xFF // BBT
- */
-
- // one-byte alignment
- #pragma pack(1)
-
- /*
- *@@ PAR_INFO:
- * partition table
- */
-
- typedef struct _PAR_INFO
- {
- BYTE bBootFlag; // 0=not active, 80H = active (boot this partition
- BYTE bBeginHead; // partition begins at this head...
- USHORT rBeginSecCyl; // ...and this sector and cylinder (see below)
- BYTE bFileSysCode; // file system type
- BYTE bEndHead; // partition ends at this head...
- USHORT bEndSecCyl; // ...and this sector and cylinder (see below)
- ULONG lBeginAbsSec; // partition begins at this absolute sector #
- ULONG lTotalSects; // total sectors in this partition
- } PAR_INFO, *PPAR_INFO;
-
- /*
- *@@ MBR_INFO:
- * master boot record table.
- * This has the four primary partitions.
- */
-
- typedef struct _MBR_INFO // MBR
- {
- BYTE aBootCode[0x1BE]; // abBootCode master boot executable code
- PAR_INFO sPrtnInfo[4]; // primary partition entries
- USHORT wPrtnTblSig; // partition table signature (aa55H)
- } MBR_INFO, *PMBR_INFO;
-
- /*
- *@@ SYS_INFO:
- *
- */
-
- typedef struct _SYS_INFO
- {
- BYTE startable;
- BYTE unknown[3];
- BYTE bootable;
- BYTE name[8];
- BYTE reservd[3];
- } SYS_INFO, *PSYS_INFO;
-
- /*
- *@@ SYE_INFO:
- *
- */
-
- typedef struct _SYE_INFO
- {
- BYTE bootable;
- BYTE name[8];
- } SYE_INFO, *PSYE_INFO;
-
- /*
- *@@ EXT_INFO:
- *
- */
-
- typedef struct _EXT_INFO
- {
- BYTE aBootCode[0x18A]; // abBootCode master boot executable code
- SYE_INFO sBmNames[4]; // System Names
- BYTE bReserved[16]; // reserved
- PAR_INFO sPrtnInfo[4]; // partitioms entrys
- USHORT wPrtnTblSig; // partition table signature (aa55H)
- } EXT_INFO, *PEXT_INFO;
-
- typedef struct _PARTITIONINFO *PPARTITIONINFO;
-
- /*
- *@@ PARTITIONINFO:
- * informational structure returned
- * by doshGetPartitionsList. One of
- * these items is created for each
- * bootable partition.
- */
-
- typedef struct _PARTITIONINFO
- {
- BYTE bDisk; // drive number
- CHAR cLetter; // probable drive letter or ' ' if none
- BYTE bFSType; // file system type
- PCSZ pcszFSType; // file system name (as returned by
- // doshType2FSName, can be NULL!)
- BOOL fPrimary; // primary partition?
- BOOL fBootable; // bootable by Boot Manager?
- CHAR szBootName[21]; // Boot Manager name, if (fBootable)
- // extended for LVM names V0.9.20 (2002-08-10) [umoeller]
- ULONG ulSize; // size MBytes
- PPARTITIONINFO pNext; // next info or NULL if last
- } PARTITIONINFO;
-
- UINT doshQueryDiskCount(VOID);
-
- APIRET doshReadSector(USHORT disk,
- void *buff,
- USHORT head,
- USHORT cylinder,
- USHORT sector);
-
- // restore original alignment
- #pragma pack()
-
- const char* doshType2FSName(unsigned char bFSType);
-
- APIRET doshGetBootManager(USHORT *pusDisk,
- USHORT *pusPart,
- PAR_INFO *BmInfo);
-
- typedef struct _PARTITIONSLIST
- {
- PLVMINFO pLVMInfo; // != NULL if LVM is installed
-
- // partitions array
- PPARTITIONINFO pPartitionInfo;
- USHORT cPartitions;
- } PARTITIONSLIST, *PPARTITIONSLIST;
-
- APIRET doshGetPartitionsList(PPARTITIONSLIST *ppList,
- PUSHORT pusContext);
-
- APIRET doshFreePartitionsList(PPARTITIONSLIST ppList);
-
- APIRET doshQueryLVMInfo(PLVMINFO *ppLVMInfo);
-
- APIRET doshReadLVMPartitions(PLVMINFO pInfo,
- PPARTITIONINFO *ppPartitionInfo,
- PUSHORT pcPartitions);
-
- VOID doshFreeLVMInfo(PLVMINFO pInfo);
-
- /* ******************************************************************
- *
- * Wildcard matching
- *
- ********************************************************************/
-
- BOOL doshMatchCase(PCSZ pcszMask,
- PCSZ pcszName);
-
- BOOL doshMatchCaseNoPath(const char *pcszMask,
- const char *pcszName);
-
- BOOL doshMatch(PCSZ pcszMask,
- PCSZ pcszName);
-
#endif
#if __cplusplus
}
#endif
-