Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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