home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / h.z / DOS.H < prev    next >
C/C++ Source or Header  |  1996-11-06  |  8KB  |  219 lines

  1. /*
  2.  *  dos.h       Defines the structs and unions used to handle the input and
  3.  *              output registers for the DOS and 386 DOS Extender interface
  4.  *              routines.
  5.  *
  6.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  7.  */
  8. #ifndef _DOS_H_INCLUDED
  9. #define _DOS_H_INCLUDED
  10. #if !defined(_ENABLE_AUTODEPEND)
  11.   #pragma read_only_file;
  12. #endif
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16.  
  17. #ifndef _COMDEF_H_INCLUDED
  18.  #include <_comdef.h>
  19. #endif
  20. #if defined(_M_IX86) && !defined(_I86_H_INCLUDED)
  21.  #include <i86.h>
  22. #endif
  23.  
  24. #if defined(__DOS__) && defined(__386__)
  25.  #define _DOSFAR _WCFAR
  26. #else
  27.  #define _DOSFAR _WCI86FAR
  28. #endif
  29.  
  30. #if defined(_M_IX86)
  31.   #pragma pack(__push,1);
  32. #else
  33.   #pragma pack(__push,8);
  34. #endif
  35.  
  36. #ifndef _WCHAR_T_DEFINED
  37. #define _WCHAR_T_DEFINED
  38. #define _WCHAR_T_DEFINED_
  39. #ifdef __cplusplus
  40. typedef long char wchar_t;
  41. #else
  42. typedef unsigned short wchar_t;
  43. #endif
  44. #endif
  45.  
  46. /* dosexterror struct */
  47.  
  48. struct _DOSERROR {
  49.         int exterror;
  50.         char errclass;
  51.         char action;
  52.         char locus;
  53. };
  54. #ifndef __cplusplus
  55. struct DOSERROR {
  56.         int exterror;
  57.         char class;
  58.         char action;
  59.         char locus;
  60. };
  61. #endif
  62.  
  63. struct dosdate_t {
  64.         unsigned char day;      /* 1-31 */
  65.         unsigned char month;    /* 1-12 */
  66.         unsigned short year;    /* 1980-2099 */
  67.         unsigned char dayofweek;/* 0-6 (0=Sunday) */
  68. };
  69. #define _dosdate_t dosdate_t
  70.  
  71. struct dostime_t {
  72.         unsigned char hour;     /* 0-23 */
  73.         unsigned char minute;   /* 0-59 */
  74.         unsigned char second;   /* 0-59 */
  75.         unsigned char hsecond;  /* 1/100 second; 0-99 */
  76. };
  77. #define _dostime_t dostime_t
  78.  
  79. struct find_t {
  80.         char reserved[21];      /* reserved for use by DOS    */
  81.         char attrib;            /* attribute byte for file    */
  82.         unsigned short wr_time; /* time of last write to file */
  83.         unsigned short wr_date; /* date of last write to file */
  84.         unsigned long  size;    /* length of file in bytes    */
  85. #if defined(__OS2__) || defined(__NT__)
  86.         char name[256];         /* null-terminated filename   */
  87. #else
  88.         char name[13];          /* null-terminated filename   */
  89. #endif
  90. };
  91. struct _wfind_t {
  92.         char reserved[21];      /* reserved for use by DOS    */
  93.         char attrib;            /* attribute byte for file    */
  94.         unsigned short wr_time; /* time of last write to file */
  95.         unsigned short wr_date; /* date of last write to file */
  96.         unsigned long  size;    /* length of file in bytes    */
  97. #if defined(__OS2__) || defined(__NT__)
  98.     wchar_t name[256];    /* null-terminated filename   */
  99. #else
  100.     wchar_t name[13];    /* null-terminated filename   */
  101. #endif
  102. };
  103. #define _find_t find_t
  104.  
  105. /* Critical error handler equates for _hardresume result parameter */
  106.  
  107. #define _HARDERR_IGNORE 0       /* Ignore the error */
  108. #define _HARDERR_RETRY  1       /* Retry the operation */
  109. #define _HARDERR_ABORT  2       /* Abort the program */
  110. #define _HARDERR_FAIL   3       /* Fail the system call in progress */
  111.  
  112. /* File attribute constants for attribute field */
  113.  
  114. #define _A_NORMAL       0x00    /* Normal file - read/write permitted */
  115. #define _A_RDONLY       0x01    /* Read-only file */
  116. #define _A_HIDDEN       0x02    /* Hidden file */
  117. #define _A_SYSTEM       0x04    /* System file */
  118. #define _A_VOLID        0x08    /* Volume-ID entry */
  119. #define _A_SUBDIR       0x10    /* Subdirectory */
  120. #define _A_ARCH         0x20    /* Archive file */
  121.  
  122. #ifndef _DISKFREE_T_DEFINED
  123. #define _DISKFREE_T_DEFINED
  124. #define _DISKFREE_T_DEFINED_
  125. struct _diskfree_t {
  126.         unsigned total_clusters;
  127.         unsigned avail_clusters;
  128.         unsigned sectors_per_cluster;
  129.         unsigned bytes_per_sector;
  130. };
  131. #define diskfree_t _diskfree_t
  132. #endif
  133.  
  134. _WCRTLINK extern int      bdos( int __dosfn, unsigned int __dx, 
  135.                 unsigned int __al);
  136. _WCRTLINK extern void     _chain_intr( register void 
  137.                       (_WCINTERRUPT _DOSFAR *__handler)() );
  138. #if defined(__NT__) || ( defined(__OS2__) && (defined(__386__)||defined(__PPC__)) )
  139. _WCRTLINK extern unsigned _dos_allocmem( unsigned __size, void **__storage );
  140. #else
  141. _WCRTLINK extern unsigned _dos_allocmem( unsigned __size, 
  142.                      unsigned short *__seg );
  143. #endif
  144. _WCRTLINK extern unsigned _dos_close( int __handle );
  145. _WCRTLINK extern unsigned _dos_commit( int __handle );
  146. _WCRTLINK extern unsigned _dos_creat( const char *__path, 
  147.                       unsigned __attr, int *__handle );
  148. _WCRTLINK extern unsigned _dos_creatnew( const char *__path, 
  149.                      unsigned __attr, int *__handle );
  150. _WCRTLINK extern unsigned _dos_findfirst( const char *__path, 
  151.                       unsigned __attr, 
  152.                       struct find_t *__buf );
  153. _WCRTLINK extern unsigned _dos_findnext( struct find_t *__buf );
  154. _WCRTLINK extern unsigned _dos_findclose( struct find_t *__buf );
  155. #if defined(__NT__) || ( defined(__OS2__) && (defined(__386__)||defined(__PPC__)) )
  156. _WCRTLINK extern unsigned _dos_freemem( void *__storage );
  157. #else
  158. _WCRTLINK extern unsigned _dos_freemem( unsigned short __seg );
  159. #endif
  160. _WCRTLINK extern void     _dos_getdate( struct dosdate_t *__date );
  161. _WCRTLINK extern unsigned _dos_getdiskfree( unsigned __drive, 
  162.                         struct _diskfree_t *__diskspace );
  163. _WCRTLINK extern unsigned _getdiskfree( unsigned __drive, 
  164.                     struct _diskfree_t *__diskspace );
  165. _WCRTLINK extern void     _dos_getdrive( unsigned *__drive );
  166. _WCRTLINK extern unsigned _getdrive( void );
  167. _WCRTLINK extern unsigned _dos_getfileattr( const char *__path, 
  168.                         unsigned *__attr );
  169. _WCRTLINK extern unsigned _dos_getftime( int __handle, unsigned short *__date,
  170.                      unsigned short *__time );
  171. _WCRTLINK extern void     _dos_gettime( struct dostime_t *__time );
  172. _WCRTLINK extern void     (_WCINTERRUPT _DOSFAR *_dos_getvect( int __intnum ))();
  173. _WCRTLINK extern void     _dos_keep( unsigned __retcode, unsigned __memsize );
  174.  
  175. _WCRTLINK extern unsigned _dos_open( const char *__path, unsigned __mode, 
  176.                      int *__handle );
  177. _WCRTLINK extern unsigned _dos_read( int __handle, void _DOSFAR *__buf, 
  178.                      unsigned __count, unsigned *__bytes );
  179. _WCRTLINK extern unsigned _dos_setblock( unsigned __size, unsigned short __seg,
  180.                      unsigned  *__maxsize );
  181. _WCRTLINK extern unsigned _dos_setdate( struct dosdate_t *__date );
  182. _WCRTLINK extern void     _dos_setdrive( unsigned __drivenum, 
  183.                      unsigned *__drives );
  184. _WCRTLINK extern unsigned _dos_setfileattr( const char *__path, 
  185.                         unsigned __attr );
  186. _WCRTLINK extern unsigned _dos_setftime( int __handle, unsigned short __date, 
  187.                      unsigned short __time );
  188. _WCRTLINK extern unsigned _dos_settime( struct dostime_t *__time );
  189. _WCRTLINK extern void     _dos_setvect( int __intnum, void 
  190.                        (_WCINTERRUPT _DOSFAR *__handler)() );
  191. _WCRTLINK extern unsigned _dos_write( int __handle, void const _DOSFAR *__buf,
  192.                       unsigned __count, unsigned *__bytes );
  193. _WCRTLINK extern int      dosexterr( struct _DOSERROR * );
  194. _WCRTLINK extern void     _harderr( register int (_DOSFAR *__func)(
  195.                     unsigned __deverr, unsigned __errcode,
  196.                     unsigned _DOSFAR *__devhdr));
  197. _WCRTLINK extern void     _hardresume( int __result );
  198. _WCRTLINK extern void     _hardretn( int __error );
  199. #if defined(_M_IX86)
  200. _WCRTLINK extern int      intdos( union REGS *, union REGS * );
  201. _WCRTLINK extern int      intdosx( union REGS *, union REGS *, struct SREGS * );
  202. #endif
  203. _WCRTLINK extern void     sleep( unsigned __seconds );
  204.  
  205. _WCRTLINK extern unsigned _wdos_findfirst( const wchar_t *__path, 
  206.                        unsigned __attr, 
  207.                        struct _wfind_t *__buf );
  208. _WCRTLINK extern unsigned _wdos_findnext( struct _wfind_t *__buf );
  209. _WCRTLINK extern unsigned _wdos_findclose( struct _wfind_t *__buf );
  210.  
  211. #pragma pack(__pop);
  212.  
  213. #undef _DOSFAR
  214.  
  215. #ifdef __cplusplus
  216. };
  217. #endif
  218. #endif
  219.