175 lines
5.1 KiB
C
175 lines
5.1 KiB
C
/*************************************************************************
|
|
**
|
|
** OLE 2.0 Property Set Utilities
|
|
**
|
|
** wn_dos.h
|
|
**
|
|
** This file contains file contains data structure defintions,
|
|
** function prototypes, constants, etc. for Windows 3.x form of
|
|
** DOS calls. This is used by the SUMINFO OLE 2.0 Property Set
|
|
** utilities used to manage the Summary Info property set.
|
|
**
|
|
** (c) Copyright Microsoft Corp. 1990 - 1992 All Rights Reserved
|
|
**
|
|
*************************************************************************/
|
|
|
|
#ifndef WN_DOS_H
|
|
#define WN_DOS_H
|
|
|
|
#include <dos.h>
|
|
|
|
#define WIN 1
|
|
|
|
#define cbMaxFile 146 //from inc\path.h
|
|
#define SEEK_FROM_BEGINNING 0
|
|
#define SEEK_FROM_END 2
|
|
#define chDOSPath ('\\') // FUTURE: not used all places it could be
|
|
#define chDOSWildAll '*' /* DOS File name wild card. */
|
|
#define chDOSWildSingle '?'
|
|
|
|
|
|
|
|
// Close, seek, delete, rename, flush, get attributes, read, write
|
|
/* RPC TEMP
|
|
int FCloseOsfnWin(WORD);
|
|
#define FCloseOsfn(osfn) FCloseOsfnWin(osfn)
|
|
long DwSeekDwWin(WORD,LONG,WORD);
|
|
#define DwSeekDw(osfn, dwSeek, bSeekFrom) DwSeekDwWin(osfn, dwSeek, bSeekFrom)
|
|
EC EcDeleteSzFfnameWin(char *);
|
|
#define EcDeleteSzFfname(szFile) EcDeleteSzFfnameWin(szFile)
|
|
EC EcRenameSzFfnameWin(char *,char *);
|
|
#define EcRenameSzFfname(szFileCur,szFileNew) EcRenameSzFfnameWin(szFileCur,szFileNew)
|
|
int FFlushOsfnWin(int);
|
|
#define FFlushOsfn(osfn) FFlushOsfnWin(osfn)
|
|
WORD DaGetFileModeSzWin(char *);
|
|
#define DaGetFileModeSz(szFile) DaGetFileModeSzWin(szFile)
|
|
int CbReadOsfnWin(int, void far *, UINT);
|
|
int CbWriteOsfnWin(int, void far *, UINT);
|
|
#define CbWriteOsfn(osfn,lpch,cbWrite) CbWriteOsfnWin(osfn,lpch,cbWrite)
|
|
*/
|
|
#define WinOpenFile(sz,ofs,n) OpenFile(sz,ofs,n)
|
|
#define SeekHfile(f,off,kind) _llseek(f,off,kind)
|
|
#define CbReadOsfn(osfn,lpch,cbRead) CbReadOsfnWin(osfn,lpch,cbRead)
|
|
#define CbReadHfile(f,buf,n) _lread(f,buf,n)
|
|
#define CbReadOsfnWin(f,buf,n) CbReadHfile(f,buf,n)
|
|
#define EcFindFirst4dm(a,b,c) _dos_findfirst((const char *)(b),c,(struct find_t*)a)
|
|
#define EcFindNext4dm(a) _dos_findnext((struct find_t*)a)
|
|
#define FHfileToSffsDate(handle,date,time) _dos_getftime(handle, (unsigned *)(date), (unsigned *)(time))
|
|
#define SeekHfile(f, off, kind) _llseek(f,off,kind)
|
|
|
|
/* buffer structure to be used with EcFindFirst() and EcFindNext() */
|
|
typedef struct _SFFS
|
|
{ /* Search Find File Structure */
|
|
uchar buff[21]; // dos search info
|
|
uchar wAttr;
|
|
union
|
|
{
|
|
unsigned short timeVariable; /*RPC47*/
|
|
BF time:16;
|
|
struct
|
|
{
|
|
BF sec : 5;
|
|
BF mint: 6;
|
|
BF hr : 5;
|
|
};
|
|
};
|
|
union
|
|
{
|
|
unsigned short dateVariable;
|
|
BF date:16;
|
|
struct
|
|
{
|
|
BF dom : 5;
|
|
BF mon : 4;
|
|
BF yr : 7;
|
|
};
|
|
};
|
|
ulong cbFile;
|
|
uchar szFileName[13];
|
|
} SFFS;
|
|
|
|
// find first file/find next file
|
|
#define PszFromPsffs(psffs) ((psffs)->szFileName)
|
|
#define CopySzFilePsffs(psffs,sz) OemToAnsi((char HUGE *)&((psffs)->szFileName[0]),(char HUGE *)(sz))
|
|
#define CbSzFilePsffs(psffs) CbSz((psffs)->szFileName)
|
|
#define CbFileSizePsffs(psffs) (psffs)->cbFile
|
|
#define AttribPsffs(psffs) (psffs)->wAttr
|
|
#define EcFindFirstCore(psffs, sz, wAttr) EcFindFirst(psffs, sz, wAttr) /*RPC22*/
|
|
#define FDotPsffs(psffs) ((psffs)->szFileName[0]=='.') /*RPC23*/
|
|
#define AppendSzWild(sz) {int i=_fstrlen((char FAR *)(sz)); sz[i]='*'; sz[i+1]='.'; sz[i+2]='*'; sz[i+3]='\0';}
|
|
// disk free space
|
|
|
|
unsigned long LcbDiskFreeSpaceWin(int);
|
|
#define LcbDiskFreeSpace(chDrive) LcbDiskFreeSpaceWin(chDrive)
|
|
|
|
// date and time /*RPC39*/
|
|
/*
|
|
typedef struct _TIM { // Time structure returned by OsTime
|
|
CHAR minutes, hour, hsec, sec;
|
|
} TIM;
|
|
|
|
typedef struct _DAT { // Date structure returned by OsDate
|
|
int year;
|
|
CHAR month, day, dayOfWeek;
|
|
} DAT;
|
|
*/
|
|
#define TIM dostime_t /*RPC39*/
|
|
#define DAT dosdate_t
|
|
#define OsTimeWin(TIM) _dos_gettime(TIM)
|
|
#define OsDateWin(DAT) _dos_getdate(DAT)
|
|
|
|
|
|
/* DOS File Attributes */
|
|
#define DA_NORMAL 0x00
|
|
#define DA_READONLY 0x01
|
|
#define DA_HIDDEN 0x02
|
|
#define DA_SYSTEM 0x04
|
|
#define DA_VOLUME 0x08
|
|
#define DA_SUBDIR 0x10
|
|
#define DA_ARCHIVE 0x20
|
|
#define DA_NIL 0xFFFF /* Error DA */
|
|
#define dosxSharing 32 /* Extended error code for sharing viol. */
|
|
#define nErrNoAcc 5 /* OpenFile error code for Access Denied */
|
|
#define nErrFnf 2 /* OpenFile error code for File Not Found */
|
|
|
|
/* Components of the Open mode for OpenSzFfname (DOS FUNC 3DH) */
|
|
#define MASK_fINH 0x80
|
|
#define MASK_bSHARE 0x70
|
|
#define MASK_bACCESS 0x07
|
|
|
|
#define bSHARE_DENYRDWR 0x10
|
|
#define bSHARE_DENYWR 0x20
|
|
#define bSHARE_DENYNONE 0x40
|
|
|
|
/* Seek-from type codes passed to DOS function 42H */
|
|
|
|
#define SF_BEGINNING 0 /* Seek from beginning of file */
|
|
#define SF_CURRENT 1 /* Seek from current file pointer */
|
|
#define SF_END 2 /* Seek from end of file */
|
|
|
|
|
|
typedef struct _DOSDTTM /* DOS DaTe TiMe */
|
|
{
|
|
union
|
|
{
|
|
long lDOSDttm;
|
|
struct
|
|
{
|
|
BF day: 5;
|
|
BF month: 4;
|
|
BF year: 7;
|
|
BF sec: 5;
|
|
BF mint: 6;
|
|
BF hours: 5;
|
|
} S1;
|
|
} U1;
|
|
} DOSDTTM;
|
|
|
|
int FOsfnIsFile(int);
|
|
|
|
void DateStamp(int, LONG *, int);
|
|
int DosxError(void);
|
|
int ShellExec(int, int);
|
|
|
|
#endif //WN_DOS_H
|