1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
/***
*io.h - declarations for low-level file handling and I/O functions
*
* Copyright (c) 1985-1993, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file contains the function declarations for the low-level
* file handling and I/O functions.
*
*Revision History:
* 10/20/87 JCR Removed "MSC40_ONLY" entries
* 11/09/87 JCR Multi-thread support
* 12-11-87 JCR Added "_loadds" functionality
* 12-17-87 JCR Added _MTHREAD_ONLY comments
* 12-18-87 JCR Added _FAR_ to declarations
* 02-10-88 JCR Cleaned up white space
* 08-19-88 GJF Modified to also work for the 386 (small model only)
* 05-03-89 JCR Added _INTERNAL_IFSTRIP for relinc usage
* 08-03-89 GJF Cleanup, now specific to OS/2 2.0 (i.e., 386 flat model)
* 08-14-89 GJF Added prototype for _pipe()
* 10-30-89 GJF Fixed copyright
* 11-02-89 JCR Changed "DLL" to "_DLL"
* 11-17-89 GJF read() should take "void *" not "char *", write()
* should take "const void *" not "char *". Also,
* added const to appropriate arg types for access(),
* chmod(), creat(), open() and sopen()
* 03-01-90 GJF Added #ifndef _INC_IO and #include <cruntime.h>
* stuff. Also, removed some (now) useless preprocessor
* directives.
* 03-21-90 GJF Replaced _cdecl with _CALLTYPE1 or _CALLTYPE2 in
* prototypes.
* 05-28-90 SBM Added _commit()
* 01-18-91 GJF ANSI naming.
* 02-25-91 SRW Exposed _get_osfhandle and _open_osfhandle [_WIN32_]
* 08-01-91 GJF No _pipe for Dosx32.
* 08-20-91 JCR C++ and ANSI naming
* 08-26-91 BWM Added _findfirst, etc.
* 09-16-91 BWM Changed find handle type to long.
* 09-28-91 JCR ANSI names: DOSX32=prototypes, WIN32=#defines for now
* 03-30-92 DJM POSIX support.
* 06-23-92 GJF // is non-ANSI comment delimiter.
* 08-06-92 GJF Function calling type and variable type macros.
* 08-25-92 GJF For POSIX build, #ifdef-ed out all but some internally
* used macros (and these are stripped out on release).
* 09-03-92 GJF Merge two changes above.
* 01-21-93 GJF Removed support for C6-386's _cdecl.
* 05-11-93 SKS Increased name buffer in finddata structure to 260 bytes.
*
****/
#ifndef _INC_IO
#ifndef _POSIX_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _INTERNAL_IFSTRIP_
#include <cruntime.h>
#endif /* _INTERNAL_IFSTRIP_ */
/*
* Conditional macro definition for function calling type and variable type
* qualifiers.
*/
#if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )
/*
* Definitions for MS C8-32 (386/486) compiler
*/
#define _CRTAPI1 __cdecl
#define _CRTAPI2 __cdecl
#else
/*
* Other compilers (e.g., MIPS)
*/
#define _CRTAPI1
#define _CRTAPI2
#endif
#ifndef _TIME_T_DEFINED
typedef long time_t; /* time value */
#define _TIME_T_DEFINED /* avoid multiple def's of time_t */
#endif
#ifndef _FSIZE_T_DEFINED
typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
#define _FSIZE_T_DEFINED
#endif
#ifndef _FINDDATA_T_DEFINED
struct _finddata_t {
unsigned attrib;
time_t time_create; /* -1 for FAT file systems */
time_t time_access; /* -1 for FAT file systems */
time_t time_write;
_fsize_t size;
char name[260];
};
#define _FINDDATA_T_DEFINED
#endif
/* File attribute constants for _findfirst() */
#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
#define _A_RDONLY 0x01 /* Read only file */
#define _A_HIDDEN 0x02 /* Hidden file */
#define _A_SYSTEM 0x04 /* System file */
#define _A_SUBDIR 0x10 /* Subdirectory */
#define _A_ARCH 0x20 /* Archive file */
/* function prototypes */
int _CRTAPI1 _access(const char *, int);
int _CRTAPI1 _chmod(const char *, int);
int _CRTAPI1 _chsize(int, long);
int _CRTAPI1 _close(int);
int _CRTAPI1 _commit(int);
int _CRTAPI1 _creat(const char *, int);
int _CRTAPI1 _dup(int);
int _CRTAPI1 _dup2(int, int);
int _CRTAPI1 _eof(int);
long _CRTAPI1 _filelength(int);
long _CRTAPI1 _findfirst(char *, struct _finddata_t *);
int _CRTAPI1 _findnext(long, struct _finddata_t *);
int _CRTAPI1 _findclose(long);
int _CRTAPI1 _isatty(int);
int _CRTAPI1 _locking(int, int, long);
long _CRTAPI1 _lseek(int, long, int);
char * _CRTAPI1 _mktemp(char *);
int _CRTAPI2 _open(const char *, int, ...);
#ifndef _DOSX32_
int _CRTAPI1 _pipe(int *, unsigned int, int);
#endif /* _DOSX32_ */
int _CRTAPI1 _read(int, void *, unsigned int);
int _CRTAPI1 remove(const char *);
int _CRTAPI1 rename(const char *, const char *);
int _CRTAPI1 _setmode(int, int);
int _CRTAPI2 _sopen(const char *, int, int, ...);
long _CRTAPI1 _tell(int);
int _CRTAPI1 _umask(int);
int _CRTAPI1 _unlink(const char *);
int _CRTAPI1 _write(int, const void *, unsigned int);
#ifdef MTHREAD /* _MTHREAD_ONLY */
int _CRTAPI1 _chsize_lk(int,long); /* _MTHREAD_ONLY */
int _CRTAPI1 _close_lk(int); /* _MTHREAD_ONLY */
long _CRTAPI1 _lseek_lk(int, long, int); /* _MTHREAD_ONLY */
int _CRTAPI1 _setmode_lk(int, int); /* _MTHREAD_ONLY */
int _CRTAPI1 _read_lk(int, void *, unsigned int); /* _MTHREAD_ONLY */
int _CRTAPI1 _write_lk(int, const void *, unsigned int); /* _MTHREAD_ONLY */
#else /* not MTHREAD */ /* _MTHREAD_ONLY */
#define _chsize_lk(fh,size) _chsize(fh,size) /* _MTHREAD_ONLY */
#define _close_lk(fh) _close(fh) /* _MTHREAD_ONLY */
#define _lseek_lk(fh,offset,origin) _lseek(fh,offset,origin) /* _MTHREAD_ONLY */
#define _setmode_lk(fh,mode) _setmode(fh,mode) /* _MTHREAD_ONLY */
#define _read_lk(fh,buff,count) _read(fh,buff,count) /* _MTHREAD_ONLY */
#define _write_lk(fh,buff,count) _write(fh,buff,count) /* _MTHREAD_ONLY */
#endif /* _MTHREAD_ONLY */
#ifdef _WIN32_
long _CRTAPI1 _get_osfhandle(int);
int _CRTAPI1 _open_osfhandle(long, int);
#endif /* _WIN32_ */
#if !(__STDC__ || defined(__cplusplus))
/* Non-ANSI names for compatibility */
#ifndef _DOSX32_
#define access _access
#define chmod _chmod
#define chsize _chsize
#define close _close
#define creat _creat
#define dup _dup
#define dup2 _dup2
#define eof _eof
#define filelength _filelength
#define isatty _isatty
#define locking _locking
#define lseek _lseek
#define mktemp _mktemp
#define open _open
#define read _read
#define setmode _setmode
#define sopen _sopen
#define tell _tell
#define umask _umask
#define unlink _unlink
#define write _write
#else
int _CRTAPI1 access(const char *, int);
int _CRTAPI1 chmod(const char *, int);
int _CRTAPI1 chsize(int, long);
int _CRTAPI1 close(int);
int _CRTAPI1 creat(const char *, int);
int _CRTAPI1 dup(int);
int _CRTAPI1 dup2(int, int);
int _CRTAPI1 eof(int);
long _CRTAPI1 filelength(int);
int _CRTAPI1 isatty(int);
int _CRTAPI1 locking(int, int, long);
long _CRTAPI1 lseek(int, long, int);
char * _CRTAPI1 mktemp(char *);
int _CRTAPI2 open(const char *, int, ...);
int _CRTAPI1 read(int, void *, unsigned int);
int _CRTAPI1 setmode(int, int);
int _CRTAPI2 sopen(const char *, int, int, ...);
long _CRTAPI1 tell(int);
int _CRTAPI1 umask(int);
int _CRTAPI1 unlink(const char *);
int _CRTAPI1 write(int, const void *, unsigned int);
#endif
#endif /* __STDC__ */
#ifdef __cplusplus
}
#endif
#else /* _MTHREAD_ONLY */
#define _close_lk(fh) close(fh) /* _MTHREAD_ONLY */
#define _lseek_lk(fh,offset,origin) lseek(fh,offset,origin) /* _MTHREAD_ONLY */
#define _read_lk(fh,buff,count) read(fh,buff,count) /* _MTHREAD_ONLY */
#define _write_lk(fh,buff,count) write(fh,buff,count) /* _MTHREAD_ONLY */
#endif /* _POSIX_ */
#define _INC_IO
#endif /* _INC_IO */
|