]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/Install/inczip/os2data.h
merged 2.2 branch
[wxWidgets.git] / utils / Install / inczip / os2data.h
diff --git a/utils/Install/inczip/os2data.h b/utils/Install/inczip/os2data.h
new file mode 100644 (file)
index 0000000..726baa9
--- /dev/null
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------
+
+  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 <rexxsaa.h>
+#endif
+
+#include <os2.h>
+
+
+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