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