/*--------------------------------------------------------------------------- os2data.h OS/2-specific structures and data to be included in the global data struc- ture. ---------------------------------------------------------------------------*/ #define MAXNAMLEN 256 #define MAXPATHLEN 256 #define MAXLEN 256 /* temporary buffer length */ #define IBUF_LEN 4096 /* input buffer length */ #define INCL_NOPM #define INCL_DOSNLS #define INCL_DOSPROCESS #define INCL_DOSDEVICES #define INCL_DOSDEVIOCTL #define INCL_DOSERRORS #define INCL_DOSMISC #if (defined(OS2DLL) && !defined(DLL)) # undef OS2DLL #endif #ifdef OS2DLL # define INCL_REXXSAA # include #endif #include struct direct { ino_t d_ino; /* a bit of a farce */ int d_reclen; /* more farce */ int d_namlen; /* length of d_name */ char d_name[MAXNAMLEN + 1]; /* null terminated */ /* nonstandard fields */ long d_size; /* size in bytes */ unsigned d_mode; /* MS-DOS or OS/2 file attributes */ unsigned d_time; unsigned d_date; }; /* The fields d_size and d_mode are extensions by me (Kai Uwe Rommel). The * find_first and find_next calls deliver these data without any extra cost. * If these data are needed, the fields save a lot of extra calls to stat() * (each stat() again performs a find_first call !). */ struct _dircontents { char *_d_entry; long _d_size; unsigned _d_mode, _d_time, _d_date; struct _dircontents *_d_next; }; typedef struct _dirdesc { int dd_id; /* uniquely identify each open directory */ long dd_loc; /* where we are in directory entry is this */ struct _dircontents *dd_contents; /* pointer to contents of dir */ struct _dircontents *dd_cp; /* pointer to current position */ } DIR; struct os2Global { #ifndef SFX HDIR hdir; #ifdef __32BIT__ ULONG count; FILEFINDBUF3 find; #else USHORT count; FILEFINDBUF find; #endif #endif /* !SFX */ int created_dir; /* used by mapname(), checkdir() */ int renamed_fullpath; /* ditto */ int fnlen; /* ditto */ #ifdef __32BIT__ ULONG nLabelDrive; /* ditto */ #else USHORT nLabelDrive; #endif int longnameEA; /* checkdir(), close_outfile() */ char *lastpathcomp; /* ditto */ struct direct dp; int lower; USHORT nLastDrive, nResult; DIR *dir; char *dirname, *wildname, matchname[FILNAMSIZ]; int firstcall, have_dirname, dirnamelen; int rootlen; /* length of rootpath */ char *rootpath; /* user's "extract-to" directory */ char *buildpathHPFS; /* full path (so far) to extracted file, */ char *buildpathFAT; /* both HPFS/EA (main) and FAT versions */ char *endHPFS; /* corresponding pointers to end of */ char *endFAT; /* buildpath ('\0') */ #ifdef OS2DLL char buffer[IBUF_LEN]; char output_var[MAXLEN]; char getvar_buf[MAXLEN]; int getvar_len; int output_idx; int stem_len; int putchar_idx; int rexx_error; char *rexx_mes; SHVBLOCK request; #endif }; #define SYSTEM_SPECIFIC_GLOBALS struct os2Global os2; #define SYSTEM_SPECIFIC_CTOR os2GlobalsCtor #ifdef OS2DLL # ifdef API_DOC # define SYSTEM_API_BRIEF REXXBrief # define SYSTEM_API_DETAILS REXXDetails extern char *REXXBrief; extern APIDocStruct REXXDetails[]; # endif #endif