Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6725 | siemargl | 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 |
||
40 | #endif |
||
41 | |||
42 | #include |
||
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 |