os2data.h
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:3k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. /*---------------------------------------------------------------------------
  2.   os2data.h
  3.   OS/2-specific structures and data to be included in the global data struc-
  4.   ture.
  5.   ---------------------------------------------------------------------------*/
  6. #define MAXNAMLEN  256
  7. #define MAXPATHLEN 256
  8. #define MAXLEN     256    /* temporary buffer length */
  9. #define IBUF_LEN   4096   /* input buffer length */
  10. #define INCL_NOPM
  11. #define INCL_DOSNLS
  12. #define INCL_DOSPROCESS
  13. #define INCL_DOSDEVICES
  14. #define INCL_DOSDEVIOCTL
  15. #define INCL_DOSERRORS
  16. #define INCL_DOSMISC
  17. #if (defined(OS2DLL) && !defined(DLL))
  18. #  undef OS2DLL
  19. #endif
  20. #ifdef OS2DLL
  21. #  define INCL_REXXSAA
  22. #  include <rexxsaa.h>
  23. #endif
  24. #include <os2.h>
  25. struct direct
  26. {
  27.   ino_t    d_ino;                   /* a bit of a farce */
  28.   int      d_reclen;                /* more farce */
  29.   int      d_namlen;                /* length of d_name */
  30.   char     d_name[MAXNAMLEN + 1];   /* null terminated */
  31.   /* nonstandard fields */
  32.   long     d_size;                  /* size in bytes */
  33.   unsigned d_mode;                  /* MS-DOS or OS/2 file attributes */
  34.   unsigned d_time;
  35.   unsigned d_date;
  36. };
  37. /* The fields d_size and d_mode are extensions by me (Kai Uwe Rommel).  The
  38.  * find_first and find_next calls deliver these data without any extra cost.
  39.  * If these data are needed, the fields save a lot of extra calls to stat()
  40.  * (each stat() again performs a find_first call !).
  41.  */
  42. struct _dircontents
  43. {
  44.   char *_d_entry;
  45.   long _d_size;
  46.   unsigned _d_mode, _d_time, _d_date;
  47.   struct _dircontents *_d_next;
  48. };
  49. typedef struct _dirdesc
  50. {
  51.   int  dd_id;                   /* uniquely identify each open directory */
  52.   long dd_loc;                  /* where we are in directory entry is this */
  53.   struct _dircontents *dd_contents;   /* pointer to contents of dir */
  54.   struct _dircontents *dd_cp;         /* pointer to current position */
  55. }
  56. DIR;
  57. struct os2Global {
  58. #ifndef SFX
  59.    HDIR hdir;
  60. #ifdef __32BIT__
  61.    ULONG count;
  62.    FILEFINDBUF3 find;
  63. #else
  64.    USHORT count;
  65.    FILEFINDBUF find;
  66. #endif
  67. #endif /* !SFX */
  68.   
  69.    int created_dir;        /* used by mapname(), checkdir() */
  70.    int renamed_fullpath;   /* ditto */
  71.    int fnlen;              /* ditto */
  72. #ifdef __32BIT__
  73.    ULONG nLabelDrive;      /* ditto */
  74. #else
  75.    USHORT nLabelDrive;
  76. #endif
  77.    int longnameEA;         /* checkdir(), close_outfile() */
  78.    char *lastpathcomp;     /* ditto */
  79.   
  80.    struct direct dp;
  81.    int lower;
  82.    USHORT nLastDrive, nResult;
  83.   
  84.    DIR *dir;
  85.    char *dirname, *wildname, matchname[FILNAMSIZ];
  86.    int firstcall, have_dirname, dirnamelen;
  87.   
  88.    int rootlen;          /* length of rootpath */
  89.    char *rootpath;       /* user's "extract-to" directory */
  90.    char *buildpathHPFS;  /* full path (so far) to extracted file, */
  91.    char *buildpathFAT;   /*  both HPFS/EA (main) and FAT versions */
  92.    char *endHPFS;        /* corresponding pointers to end of */
  93.    char *endFAT;         /*  buildpath ('') */
  94. #ifdef OS2DLL
  95.    char buffer[IBUF_LEN];
  96.    char output_var[MAXLEN];
  97.    char getvar_buf[MAXLEN];
  98.    int getvar_len;
  99.   
  100.    int output_idx;
  101.    int stem_len;
  102.    int putchar_idx;
  103.    int rexx_error;
  104.    char *rexx_mes;
  105.    SHVBLOCK request;
  106. #endif
  107. };
  108. #define SYSTEM_SPECIFIC_GLOBALS struct os2Global os2;
  109. #define SYSTEM_SPECIFIC_CTOR    os2GlobalsCtor
  110. #ifdef OS2DLL
  111. #  ifdef API_DOC
  112. #    define SYSTEM_API_BRIEF    REXXBrief
  113. #    define SYSTEM_API_DETAILS  REXXDetails
  114.      extern char *REXXBrief;
  115.      extern APIDocStruct REXXDetails[];
  116. #  endif
  117. #endif