- Timestamp:
- Nov 23, 2003, 12:31:59 AM (23 years ago)
- Location:
- trunk/src/emx
- Files:
-
- 1 added
- 1 deleted
- 59 edited
-
include/emx/io.h (modified) (3 diffs, 1 prop)
-
include/emx/syscalls.h (modified) (1 diff, 1 prop)
-
include/stdio.h (modified) (1 diff, 1 prop)
-
src/lib/app/iodata.c (deleted)
-
src/lib/app/stdio.c (modified) (2 diffs, 1 prop)
-
src/lib/io/_fbuf.c (modified) (3 diffs, 1 prop)
-
src/lib/io/_fd.c (modified) (2 diffs, 1 prop)
-
src/lib/io/_fdinit.c (modified) (2 diffs, 1 prop)
-
src/lib/io/_flushst.c (modified) (1 diff, 1 prop)
-
src/lib/io/_imphand.c (modified) (1 diff, 1 prop)
-
src/lib/io/_isterm.c (modified) (1 diff, 1 prop)
-
src/lib/io/_newstre.c (modified) (2 diffs, 1 prop)
-
src/lib/io/_rmtmp.c (modified) (1 diff, 1 prop)
-
src/lib/io/_vsopen.c (modified) (6 diffs, 1 prop)
-
src/lib/io/chsize.c (modified) (2 diffs, 1 prop)
-
src/lib/io/close.c (modified) (1 diff, 1 prop)
-
src/lib/io/dup.c (modified) (1 diff, 1 prop)
-
src/lib/io/dup2.c (modified) (1 diff, 1 prop)
-
src/lib/io/eof.c (modified) (1 diff, 1 prop)
-
src/lib/io/fcloseal.c (modified) (2 diffs, 1 prop)
-
src/lib/io/fcntl.c (modified) (4 diffs, 1 prop)
-
src/lib/io/fdopen.c (modified) (1 diff, 1 prop)
-
src/lib/io/fflush.c (modified) (1 diff, 1 prop)
-
src/lib/io/flushall.c (modified) (1 diff, 1 prop)
-
src/lib/io/fseek.c (modified) (2 diffs, 1 prop)
-
src/lib/io/ftell.c (modified) (3 diffs, 1 prop)
-
src/lib/io/ftruncat.c (modified) (2 diffs, 1 prop)
-
src/lib/io/ioctl.c (modified) (2 diffs, 1 prop)
-
src/lib/io/isatty.c (modified) (2 diffs, 1 prop)
-
src/lib/io/lseek.c (modified) (1 diff, 1 prop)
-
src/lib/io/pipe.c (modified) (1 diff, 1 prop)
-
src/lib/io/popen.c (modified) (3 diffs, 1 prop)
-
src/lib/io/read.c (modified) (7 diffs, 1 prop)
-
src/lib/io/readv.c (modified) (2 diffs, 1 prop)
-
src/lib/io/select.c (modified) (2 diffs, 1 prop)
-
src/lib/io/setmode.c (modified) (2 diffs, 1 prop)
-
src/lib/io/tell.c (modified) (1 diff, 1 prop)
-
src/lib/io/tmpnam.c (modified) (1 diff, 1 prop)
-
src/lib/io/write.c (modified) (9 diffs, 1 prop)
-
src/lib/io/writev.c (modified) (2 diffs, 1 prop)
-
src/lib/libc.def (modified) (1 diff, 1 prop)
-
src/lib/startup/startup.c (modified) (6 diffs, 1 prop)
-
src/lib/sys/__chsize.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__close.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__dup.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__dup2.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__fcntl.c (modified) (6 diffs, 1 prop)
-
src/lib/sys/__fstat.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__ftruncate.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__imphandle.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__initdll.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__ioctl1.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__ioctl2.c (modified) (3 diffs, 1 prop)
-
src/lib/sys/__lseek.c (modified) (3 diffs, 1 prop)
-
src/lib/sys/__open.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__pipe.c (modified) (2 diffs, 1 prop)
-
src/lib/sys/__read.c (modified) (1 diff, 1 prop)
-
src/lib/sys/__write.c (modified) (1 diff, 1 prop)
-
src/lib/sys/filehandles.c (added)
-
src/lib/sys/syscalls.h (modified) (2 diffs, 1 prop)
-
version.smak (modified) (1 diff, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/include/emx/io.h
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 18 18 #endif 19 19 20 /* Low-level i/o */ 21 20 /** @defgroup libc_ioflags Low Level I/O Flags 21 * These low level I/O flags are kept in the fFlags member of the LIBCFH 22 * structure. The O_* flags are defined in sys/fcntl.h, the F_* flags are 23 * internal to LIBC and defined in emx/io.h. 24 * @{ 25 */ 26 /* O_RDONLY 0x00000000 */ 27 /* O_WRONLY 0x00000001 */ 28 /* O_RDWR 0x00000002 */ 22 29 /* O_ACCMODE 0x00000003 */ 23 /* O_N DELAY0x00000004 */30 /* O_N 0x00000004 */ 24 31 /* O_APPEND 0x00000008 */ 25 /* O_TEXT 0x00000010 */ 26 #define F_EOF 0x00000020 27 #define F_TERMIO 0x00000040 28 #define F_DEV 0x00000080 29 /* O_BINARY 0x00000100 */ 32 /* emx O_TEXT 0x00000010 */ 33 /* emx O_SIZE 0x00000020 */ 34 /* free 0x00000040 */ 35 /* O_(F)SYNC 0x00000080 */ 36 /* O_SYNC 0x00000080 */ 37 /* emx O_BINARY 0x00000100 */ 30 38 /* O_CREAT 0x00000200 */ 31 39 /* O_TRUNC 0x00000400 */ 32 40 /* O_EXCL 0x00000800 */ 33 /* O_NOINHERIT 0x00001000 */ 34 /* O_SYNC 0x00002000 */ 35 /* O_NOCTTY 0x00004000 */ 36 /* O_SIZE 0x00008000 */ 37 #define F_SOCKET 0x10000000 38 #define F_PIPE 0x20000000 39 #define F_WRCRPEND 0x40000000 40 #define F_CRLF 0x80000000 41 /* emx O_NOINHERIT 0x00001000 */ 42 /* free 0x00002000 */ 43 /* free 0x00004000 */ 44 /* O_NOCTTY 0x00008000 */ 45 #define F_EOF 0x01000000 46 #define F_TERMIO 0x02000000 47 #define F_WRCRPEND 0x04000000 48 #define F_CRLF 0x08000000 49 /** Filetype mask. */ 50 #define F_TYPEMASK 0xf0000000 51 /** Type - Regular file. */ 52 #define F_FILE 0x10000000 53 /** Type - Characater device. */ 54 #define F_DEV 0x20000000 55 /** Type - Pipe. */ 56 #define F_PIPE 0x30000000 57 /** Type - Socket. */ 58 #define F_SOCKET 0x40000000 59 /** @} */ 41 60 42 61 /* stdio */ … … 157 176 }; 158 177 159 extern struct streamvec _streamvec_head; 160 161 extern int _io_ninherit; 162 extern struct fdvec _fdvec_head; 163 164 /* This is currently used only in the multi-thread libraries. We 165 can't use and reallocate a single array because rmutex semaphores 166 cannot be moved. */ 167 168 struct streamvec2 169 { 170 struct _file2 *vec; 171 struct streamvec2 *next; 172 int n; 173 }; 174 175 extern struct streamvec2 _streamvec2_head; 178 extern struct streamvec *_streamvec_head; 179 extern int _io_ninherit; 180 extern struct fdvec _fdvec_head; 176 181 177 182 #if defined (_SYS_RMUTEX_H) … … 203 208 #endif /* defined (_SYS_RMUTEX_H) */ 204 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 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 205 319 206 320 int _endbuf1 (struct _FILE *); 207 321 void _fbuf (struct _FILE *); 208 int *_fd_flags (int); 209 int *_fd_init (int); 210 int *_fd_lookahead (int); 322 #define _fd_flags(a) please do not use this use this! ##a 323 #define _fd_init(a) please do not use this use this! ##a 324 #define _fd_lookahead(a) please do not use this use this! ##a 211 325 struct _FILE *_openstream (struct _FILE *, __const__ char *, __const__ char *, 212 326 int, int); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/include/emx/syscalls.h
-
Property cvs2svn:cvs-rev
changed from
1.6to1.7
r870 r871 180 180 int __mkdir (__const__ char *name); 181 181 int __newthread (int tid); 182 int __open (__const__ char *name, int flags, off_t size); 182 struct __libc_FileHandle; 183 int __open (__const__ char *name, int flags, off_t size, unsigned fLibc, struct __libc_FileHandle **pFH); 183 184 int __pause (void); 184 int __pipe (int *two_handles, int pipe_size);185 int __pipee); 185 186 int __profil (__const__ struct _profil *p); 186 187 int __ptrace (int request, int pid, int addr, int data); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/include/stdio.h
-
Property cvs2svn:cvs-rev
changed from
1.7to1.8
r870 r871 197 197 198 198 __BEGIN_DECLS 199 extern FILE _streamv[]; 199 extern FILE *__stdinp; 200 extern FILE *__stdoutp; 201 extern FILE *__stderrp; 200 202 __END_DECLS 201 202 #define __stdinp (&_streamv[0])203 #define __stdoutp (&_streamv[1])204 #define __stderrp (&_streamv[2])205 203 206 204 #endif /* bird: EMX specific FILE stuff ends. */ -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/app/stdio.c
-
Property cvs2svn:cvs-rev
changed from
1.6to1.7
r870 r871 10 10 #include <emx/startup.h> 11 11 12 /* See app/iodata.c. */13 12 14 extern int _nfiles; 15 extern int _files[]; 13 /******************************************************************************* 14 * Global Variables * 15 *******************************************************************************/ 16 /** Preallocated streams 17 * (public since stdin,stdout,stderr references this thru #defines.) */ 18 static FILE gaPreFiles[_NFILES] = {{0}}; 16 19 17 _rmutex _streamv_rmutex; /* See io/_newstre.c */ 20 /** Vector entry for preallocated streams. */ 21 static struct streamvec gPreStreamVec = {&gaPreFiles[0], NULL, _NFILES}; 22 23 /** More structures for preallocated streams. */ 24 static struct _file2 gaPreFile2s[_NFILES]; 25 26 /** The buffer for stdin. */ 27 static char gachStdIn[BUFSIZ]; 28 29 /** Mutex protecting the stream vector. */ 30 _rmutex _streamv_rmutex; /* See io/_newstre.c */ 31 32 /* 33 * (These variables must be initialized as no extended dictionary 34 * entries are built for COMDEF.) 35 */ 36 37 /** Head of the stream vector. */ 38 struct streamvec *_streamvec_head = NULL; 39 40 /** Standard input stream pointer. */ 41 FILE *__stdinp = &gaPreFiles[0]; 42 /** Standard output stream pointer. */ 43 FILE *__stdoutp = &gaPreFiles[1]; 44 /** Standard error stream pointer. */ 45 FILE *__stderrp = &gaPreFiles[2]; 18 46 19 47 20 /* These variables must be initialized as no extended dictionary 21 entries are built for COMDEF. */ 48 /** 49 * Initialize the streams -- this function will be called by 50 * _CRT_init() via the __crtinit1__ set vector. 51 */ 52 void _init_streams(void); 53 void _init_streams(void) 54 { 55 struct _FILE *pFile; 56 struct _file2 *pFile2; 57 int i; 58 static char fInited = 0; 22 59 23 FILE _streamv[_NFILES] = {{0}}; 60 /* 61 * Paranoia! 62 */ 63 if (fInited) 64 return; 65 fInited = 1; 24 66 25 struct streamvec _streamvec_head = {_streamv, NULL, _NFILES}; 67 /* 68 * Init the _more and _owner pointers. 69 */ 70 pFile = &gaPreFiles[0]; 71 pFile2 = &gaPreFile2s[0]; 72 for (i = 0; i < _NFILES; i++, pFile++, pFile2++) 73 { 74 pFile2->owner = pFile; /* obsolete? */ 75 pFile->_more = pFile2; 76 } 26 77 27 /* If we don't preallocate the first entry, _CRT_init() will call 28 malloc() which breaks fork() because the heap object of the EXE 29 file won't be used. */ 78 /* 79 * Create the mutex protecting the stream list and insert the table. 80 * ASSUME: we're ALONE at this point. 81 */ 82 gPreStreamVec.next = _streamvec_head; 83 _streamvec_head = &gPreStreamVec; 84 _rmutex_checked_create(&_streamv_rmutex, 0); 30 85 31 static struct _file2 _streamv2[_NFILES]; 86 /* 87 * As far as I know there is no reason to initiate a bunch of streams 88 * here as EM used to do. All that is required is the three standard 89 * streams. 90 */ 91 for (i = 0; i < 3; i++) 92 { 93 PLIBCFH pFH = __libc_FH(i); 94 if (pFH) 95 { 96 /* 97 * Common init - recall everything is ZERO. 98 */ 99 gaPreFiles[i]._flags |= _IOOPEN; 100 gaPreFiles[i]._handle = i; 101 gaPreFiles[i]._flush = _flushstream; 102 if (_setmore(&gaPreFiles[i], 0)) 103 abort(); 32 104 33 struct streamvec2 _streamvec2_head = {_streamv2, NULL, _NFILES}; 105 /* 106 * Specific init. 107 */ 108 switch (i) 109 { 110 case 0: 111 /* stdin is always buffered. */ 112 gaPreFiles[0]._flags |= _IOREAD | _IOFBF | _IOBUFUSER; 113 gaPreFiles[0]._ptr = gachStdIn; 114 gaPreFiles[0]._buffer = gachStdIn; 115 gaPreFiles[0]._buf_size = BUFSIZ; 116 break; 34 117 35 /* The buffer for stdin. */ 118 case 1: 119 /* stdout is buffered unless it's connected to a device. */ 120 gaPreFiles[1]._flags |= _IOWRT | _IOBUFNONE 121 | ((pFH->fFlags & F_TYPEMASK) == F_DEV ? _IONBF : _IOFBF); 122 break; 36 123 37 static char ibuf[BUFSIZ]; 38 39 40 /* Initialize the streams -- this function will be called by 41 _CRT_init() via the __crtinit1__ set vector. */ 42 43 void _init_streams (void); 44 void _init_streams (void) 45 { 46 int i; 47 48 _rmutex_checked_create (&_streamv_rmutex, 0); 49 50 for (i = 0; i < _nfiles && i < _streamvec_head.n; ++i) 51 { 52 _streamv[i]._flags = 0; 53 /* O_TEXT is set by init_files() for all valid handles. */ 54 if (_files[i] != 0) 55 { 56 _streamv[i]._flags |= _IOOPEN; 57 _streamv[i]._ptr = NULL; 58 _streamv[i]._buffer = NULL; 59 _streamv[i]._rcount = 0; 60 _streamv[i]._wcount = 0; 61 _streamv[i]._handle = i; 62 _streamv[i]._buf_size = 0; 63 _streamv[i]._tmpidx = 0; 64 _streamv[i]._pid = 0; 65 _streamv[i]._flush = _flushstream; 66 _streamv[i]._ungetc_count = 0; 67 switch (i) 68 { 69 case 0: 70 71 /* stdin is always buffered. */ 72 73 _streamv[0]._flags |= _IOREAD | _IOFBF | _IOBUFUSER; 74 _streamv[0]._ptr = ibuf; 75 _streamv[0]._buffer = ibuf; 76 _streamv[0]._buf_size = BUFSIZ; 77 break; 78 79 case 1: 80 81 /* stdout is buffered unless it's connected to a 82 device. */ 83 84 _streamv[i]._flags |= (_IOWRT | _IOBUFNONE 85 | ((_files[i] & F_DEV) 86 ? _IONBF : _IOFBF)); 87 break; 88 89 case 2: 90 91 /* stderr is always unbuffered. */ 92 93 _streamv[i]._flags |= _IOWRT | _IOBUFNONE | _IONBF; 94 break; 95 96 default: 97 98 /* All other streams are buffered unless connected to a 99 device. */ 100 101 _streamv[i]._flags |= (_IORW | _IOBUFNONE 102 | ((_files[i] & F_DEV) 103 ? _IONBF : _IOFBF)); 104 break; 124 case 2: 125 /* stderr is always unbuffered. */ 126 gaPreFiles[2]._flags |= _IOWRT | _IOBUFNONE | _IONBF; 127 break; 105 128 } 106 if (_setmore (&_streamv[i], 0) != 0)107 abort ();108 129 } 109 } 130 } 110 131 } 111 132 … … 116 137 print something. (ISO 9899-1990 lets this undefined.) */ 117 138 118 void _exit_streams (void);119 void _exit_streams (void)139 void _exit_streams(void); 140 void _exit_streams(void) 120 141 { 121 flushall();122 _rmtmp();142 (); 143 (); 123 144 } 124 145 125 _CRT_INIT1 (_init_streams)126 _CRT_EXIT1 (_exit_streams)146 _CRT_INIT1(_init_streams) 147 _CRT_EXIT1(_exit_streams) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_fbuf.c
-
Property cvs2svn:cvs-rev
changed from
1.2to1.3
r870 r871 1 /* _fbuf.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* _fbuf.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyrithg (c) 2003 by knut st. osmundsen */ 2 3 3 4 #include "libc-alias.h" … … 5 6 #include <stdlib.h> 6 7 #include <emx/io.h> 8 7 9 8 10 /* Assign a buffer to a stream (which must not have a buffer) */ … … 13 15 stream->_buffer = NULL; 14 16 else 15 stream->_buffer = malloc (BUFSIZ); 17 { 18 PLIBCFH pFH = __libc_FH(stream->_handle); 19 if (pFH && ( (pFH->fFlags & F_TYPEMASK) == F_DEV 20 || (pFH->fFlags & F_TYPEMASK) == F_SOCKET)) 21 stream->_buffer = _lmalloc(BUFSIZ); 22 else 23 stream->_buffer = _hmalloc(BUFSIZ); 24 } 16 25 if (stream->_buffer == NULL) 17 26 { -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_fd.c
-
Property cvs2svn:cvs-rev
changed from
1.2to1.3
r870 r871 1 2 1 3 /* _fd.c (emx+gcc) -- Copyright (c) 1996 by Eberhard Mattes */ 2 4 … … 4 6 #include <emx/io.h> 5 7 6 /* See app/iodata.c. */7 8 8 extern int _nfiles; 9 extern int _files[]; 10 extern int _lookahead[]; 11 12 /* Return pointer to flags word for the file descriptor HANDLE. 13 Return NULL on error. */ 14 15 int *_fd_flags (int handle) 9 /** 10 * @returns pointer to flags word for the file descriptor HANDLE. 11 * @returns NULL on error. 12 * @deprecated 13 */ 14 int *_fd_flags(int fh) 16 15 { 17 struct fdvec *p; 18 19 if (handle < 0) 16 PLIBCFH pFH; 17 pFH = __libc_FH(fh); 18 if (!pFH) 19 return &pFH->fFlags; 20 20 return NULL; 21 22 /* We want this case to be fast. Note that _fdvec_head.n == _nfiles23 and _fdvec_head.flags == _files! */24 25 if (handle < _nfiles)26 return &_files[handle];27 28 handle -= _nfiles;29 p = _fdvec_head.next;30 while (p != NULL && handle >= p->n)31 {32 handle -= p->n;33 p = p->next;34 }35 if (p == NULL)36 return NULL;37 return &p->flags[handle];38 21 } 39 22 40 23 41 /* Return pointer to lookahead word for the file descriptor HANDLE. 42 Return NULL on error. 24 /** 25 * @returns pointer to lookahead word for the file descriptor HANDLE. 26 * @returns NULL on error. 27 * @remark select() does this inline. 28 * @depricated 29 */ 30 int *_fd_lookahead(int fh) 31 { 32 PLIBCFH pFH; 33 pFH = __libc_FH(fh); 34 if (!pFH) 35 return &pFH->iLookAhead; 36 return NULL; 37 } 43 38 44 Note: select() does this inline. */ 45 46 int *_fd_lookahead (int handle) 47 { 48 struct fdvec *p; 49 50 if (handle < 0) 51 return NULL; 52 53 /* We want this case to be fast. Note that _fdvec_head.n == _nfiles 54 and _fdvec_head.lookahead == _lookahead! */ 55 56 if (handle < _nfiles) 57 return &_lookahead[handle]; 58 59 handle -= _nfiles; 60 p = _fdvec_head.next; 61 while (p != NULL && handle >= p->n) 62 { 63 handle -= p->n; 64 p = p->next; 65 } 66 if (p == NULL) 67 return NULL; 68 return &p->lookahead[handle]; 69 } 39 #endif -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_fdinit.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 1 2 /* _fdinit.c (emx+gcc) -- Copyright (c) 1996-1997 by Eberhard Mattes */ 2 3 … … 119 120 return &p->flags[handle]; 120 121 } 122 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_flushst.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 49 49 else /* New or flushed buffer */ 50 50 { 51 int *pflags = _fd_flags(fh);51 (fh); 52 52 w = 0; 53 if (p flags != NULL && (*pflags & O_APPEND))53 if (plags & O_APPEND)) 54 54 lseek (fh, 0, SEEK_END); 55 55 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_imphand.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 3 3 #include "libc-alias.h" 4 4 #include <io.h> 5 #include <fcntl.h>6 #include <errno.h>7 #include <sys/ioctl.h>8 #include <emx/io.h>9 5 #include <emx/syscalls.h> 10 11 extern int _fmode_bin;12 6 13 7 int _imphandle (int handle) 14 8 { 15 int fd, rc, ht, *pflags; 16 17 if (handle < 0) 18 { 19 errno = EBADF; 20 return -1; 21 } 22 23 fd = __imphandle (handle); 24 if (fd == -1) 25 return -1; 26 pflags = _fd_init (fd); 27 if (pflags == NULL) 28 { 29 /* `fd' has been relocated and is now out of range. */ 30 31 __dup2 (fd, handle); 32 __close (fd); 33 errno = EBADF; 34 return -1; 35 } 36 37 *pflags = O_RDWR; /* TODO */ 38 if (_fmode_bin == 0) 39 *pflags |= O_TEXT; 40 rc = __ioctl1 (fd, 0); 41 if (rc != -1 && (rc & 0x80)) 42 *pflags |= F_DEV; 43 rc = __ioctl2 (fd, FGETHTYPE, (int)&ht); 44 if (rc >= 0) 45 { 46 if (HT_ISDEV (ht)) 47 *pflags |= F_DEV; 48 if (ht == HT_UPIPE || ht == HT_NPIPE) 49 *pflags |= F_PIPE; 50 } 51 return fd; 9 return __imphandle(handle); 52 10 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_isterm.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 3 3 #include "libc-alias.h" 4 4 #include <io.h> 5 6 5 7 #include <emx/syscalls.h> 6 8 7 int _isterm (int handle)9 int _isterm(int handle) 8 10 { 9 int j;11 ; 10 12 11 if (!isatty (handle)) 12 return 0; 13 j = __ioctl1 (handle, 0); 14 if (j < 0) 15 return 0; 16 return ((j & 0x03) ? 1 : 0); 13 /* 14 * Get filehandle. 15 */ 16 pFH = __libc_FH(handle); 17 if (!pFH) 18 { 19 errno = EBADF; 20 return 0; 21 } 22 23 /* 24 * Is it a atty? 25 */ 26 if (!isatty(handle)) 27 return 0; 28 29 /* 30 * If it's a device we assume is a terminal... 31 * (Hope that's correct interpretation of the __ioctl1() call...) 32 */ 33 return (pFH->fFlags & F_TYPEMASK) == F_DEV; 17 34 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_newstre.c
-
Property cvs2svn:cvs-rev
changed from
1.2to1.3
r870 r871 1 /* _newstre.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* _newstre.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmundsen */ 2 3 3 4 #include "libc-alias.h" … … 7 8 #include <sys/fmutex.h> /* For <sys/rmutex.h> */ 8 9 #include <sys/rmutex.h> 10 9 11 #include <emx/io.h> 10 12 11 13 #define INC 32 14 12 15 13 16 FILE *_newstream (void) 14 17 { 15 int i; 16 struct streamvec *sv, *last = NULL; 18 int i; 19 struct streamvec *pSV; 20 struct streamvec *pSVNew; 17 21 18 STREAMV_LOCK; 19 for (sv = &_streamvec_head; sv != NULL; sv = sv->next) 22 /* 23 * Search thru the list of streams. 24 */ 25 STREAMV_LOCK; 26 for (pSV = _streamvec_head; pSV != NULL; pSV = pSV->next) 20 27 { 21 last = sv; 22 for (i = 0; i < sv->n; ++i) 23 if (!(sv->vec[i]._flags & (_IOOPEN|_IONEW))) 24 { 25 sv->vec[i]._flags = _IONEW; 26 27 /* Initialize new members to support dynamically linked 28 old executables with, say, -lvideo. See also below. */ 29 30 sv->vec[i]._more = 0; 31 sv->vec[i]._mbstate = 0; 32 33 STREAMV_UNLOCK; 34 return &sv->vec[i]; 35 } 36 } 37 38 /* Enlarge our tables. As the entries must not move, we add another 39 segment. */ 40 41 sv = malloc (sizeof (*sv)); 42 if (sv != NULL) 43 { 44 struct _FILE *fv; 45 46 fv = malloc (INC * sizeof (*fv)); 47 if (fv == NULL) 48 free (sv); 49 else 28 for (i = 0; i < pSV->n; ++i) 50 29 { 51 for (i = 0; i < INC; ++i) 52 fv[i]._flags = 0; 53 sv->next = NULL; 54 sv->vec = fv; 55 sv->n = INC; 56 57 /* See above. */ 58 fv[0]._flags = _IONEW; 59 fv[0]._more = 0; 60 fv[0]._mbstate = 0; 61 62 last->next = sv; /* Done as last step, see fflush() */ 63 64 STREAMV_UNLOCK; 65 return &fv[0]; 66 } 67 } 68 69 STREAMV_UNLOCK; 70 return NULL; 71 } 72 73 int _setmore (FILE *stream, int lock) 74 { 75 int i; 76 struct _file2 *p; 77 struct streamvec2 *sv2, *last = NULL; 78 79 stream->_mbstate = 0; 80 stream->_more = NULL; 81 if (lock) 82 STREAMV_LOCK; 83 p = NULL; 84 for (sv2 = &_streamvec2_head; sv2 != NULL; sv2 = sv2->next) 85 { 86 last = sv2; 87 for (i = 0; i < sv2->n; ++i) 88 if (sv2->vec[i].owner == NULL) 89 { 90 p = &sv2->vec[i]; 91 goto super_break; 92 } 93 } 94 super_break: 95 if (p == NULL) 96 { 97 sv2 = malloc (sizeof (*sv2)); 98 if (sv2 != NULL) 99 { 100 struct _file2 *fv2; 101 102 fv2 = malloc (INC * sizeof (*fv2)); 103 if (fv2 == NULL) 104 free (sv2); 105 else 30 if (!(pSV->vec[i]._flags & (_IOOPEN|_IONEW))) 106 31 { 107 for (i = 0; i < INC; ++i) 108 fv2[i].owner = NULL; 109 sv2->next = NULL; 110 sv2->vec = fv2; 111 sv2->n = INC; 112 last->next = sv2; 113 p = &sv2->vec[0]; 32 pSV->vec[i]._flags = _IONEW; 33 STREAMV_UNLOCK; 34 return &pSV->vec[i]; 114 35 } 115 36 } 116 37 } 117 if (p != NULL)118 p->owner = stream;119 if (lock)120 38 STREAMV_UNLOCK; 121 if (p == NULL || _rmutex_create (&p->rsem, 0) != 0) 39 40 /* 41 * Enlarge our table. 42 * (As the entries must not move, we add another segment.) 43 */ 44 pSVNew = _hcalloc(1, sizeof(*pSV) + 15 45 + INC * sizeof(struct _FILE) 46 + 15 47 + INC * sizeof(struct _file2)); 48 if (pSVNew) 122 49 { 123 /* Note that stream->_more is NULL. */ 50 struct _FILE *pFile; 51 struct _file2 *pFile2; 124 52 125 _closestream (stream); 126 if (p != NULL) 127 p->owner = NULL; 128 return -1; 53 /* 54 * Init the structures in the segment. 55 * Remember everything is ZEROed by calloc()! 56 */ 57 pSVNew->vec = pFile = (struct _FILE *)ALIGN(pSVNew + 1, 16); 58 pFile2 = (struct _file2 *)ALIGN(&pFile[INC], 16); 59 pSVNew->vec = pFile; 60 pSVNew->n = INC; 61 for (i = 0; i < INC; i++, pFile++, pFile2++) 62 { 63 pFile2->owner = pFile; /* obsolete? */ 64 pFile->_more = pFile2; 65 } 66 67 /* 68 * Allocate the first one. 69 */ 70 pFile = &pSV->vec[0]; 71 pFile->_flags = _IONEW; 72 73 /* 74 * Insert the new chunk. 75 */ 76 STREAMV_LOCK; 77 if (_streamvec_head) 78 { 79 for (pSV = _streamvec_head; pSV; pSV = pSV->next) 80 if (!pSV->next) 81 { 82 pSV->next = pSVNew; 83 break; 84 } 85 } 86 else 87 /* Someone fopen'ed something before streams were initated. */ 88 _streamvec_head = pSVNew; 89 STREAMV_UNLOCK; 90 return pFile; 129 91 } 130 stream->_more = p; 131 return 0;92 93 ; 132 94 } 133 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 134 129 void _setdummymore (FILE *stream, struct _file2 *more) 135 130 { 136 stream->_mbstate = 0;137 stream->_more = more;138 more->owner = stream;139 _rmutex_dummy(&more->rsem);131 stream->_mbstate = 0; 132 stream->_more = more; 133 more->owner = stream; 134 (&more->rsem); 140 135 } 141 136 142 void _closestream (FILE *stream) 137 138 /** 139 * Closes a stream freeing the associated mutex semaphore. 140 * 141 * @param stream Stream to close. 142 */ 143 void _closestream(FILE *stream) 143 144 { 144 if (stream->_more != NULL && stream->_more->owner == stream) 145 { 146 _rmutex_close (&stream->_more->rsem); 147 stream->_more->owner = NULL; 148 } 149 stream->_flags = 0; 145 if ( stream->_more != NULL 146 && stream->_more->owner == stream) /* paranoia */ 147 _rmutex_close(&stream->_more->rsem); 148 stream->_flags = 0; 150 149 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_rmtmp.c
-
Property cvs2svn:cvs-rev
changed from
1.2to1.3
r870 r871 17 17 18 18 n = 0; 19 for (sv = &_streamvec_head; sv != NULL; sv = sv->next)19 for (sv = _streamvec_head; sv != NULL; sv = sv->next) 20 20 for (i = 0; i < sv->n; ++i) 21 21 if ((sv->vec[i]._flags & _IOOPEN) && (sv->vec[i]._flags & _IOTMP) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/_vsopen.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 38 38 * 16 - 23 __open flags, _SO_* 39 39 */ 40 int fFlags;41 int *pfFlags;42 int saved_errno;43 int bits;44 char chDummy;45 int fCtrlZKludge = 0;46 off_t cbInitial;40 int fFlags; 41 42 int saved_errno; 43 ; 44 ; 45 ; 46 ; 47 47 48 48 /* … … 58 58 * Build fFlags. 59 59 */ 60 bits = fOpen & (O_ACCMODE|O_NDELAY|O_APPEND); 61 if (fOpen & O_BINARY) 62 /* do nothing */; 63 else if (fOpen & O_TEXT) 64 bits |= O_TEXT; 65 else if (_fmode_bin == 0) /* neither O_TEXT nor O_BINARY given */ 66 bits |= O_TEXT; 60 fLibc = fOpen & (O_ACCMODE|O_NDELAY|O_APPEND|O_SYNC/*|O_DIRECT*/|O_NOINHERIT); 61 if ( !(fOpen & O_BINARY) 62 && ((fOpen & O_TEXT) || !_fmode_bin)) 63 fLibc |= O_TEXT; 67 64 68 if (( bits& O_TEXT) && (fOpen & O_APPEND) && (fOpen & O_ACCMODE) == O_WRONLY)65 if (( & O_TEXT) && (fOpen & O_APPEND) && (fOpen & O_ACCMODE) == O_WRONLY) 69 66 { 70 67 /* The caller requests to open a text file for appending in … … 113 110 */ 114 111 saved_errno = errno; 115 hFile = __open(pszName, fFlags, cbInitial );112 hFile = __open(pszName, fFlags, cbInitial); 116 113 if (hFile < 0 && fCtrlZKludge && errno == EACCES) 117 114 { … … 120 117 fCtrlZKludge = 0; 121 118 fFlags = (fFlags & ~O_ACCMODE) | (fOpen & O_ACCMODE); 122 hFile = __open(pszName, fFlags, cbInitial );119 hFile = __open(pszName, fFlags, cbInitial); 123 120 } 124 121 if (hFile < 0) 125 122 return -1; 123 126 124 127 125 /* 128 126 * Check what we got a handle to. 129 127 */ 130 if (__ioctl1(hFile, 0) & 0x80) 131 { 132 bits |= F_DEV; 128 if ((fLibc & F_TYPEMASK) == F_DEV) 133 129 fOpen &= ~O_APPEND; 134 }135 130 136 131 /* 137 132 * For text files we shall remove eventual ending Ctrl-Z. 138 133 */ 139 if (!(bits & F_DEV) && (bits & O_TEXT)) 134 if ( (fLibc & F_TYPEMASK) != F_DEV 135 && (fLibc & O_TEXT)) 140 136 { 141 137 off_t cbSize; … … 163 159 fFlags = (fFlags & ~O_ACCMODE) | (fOpen & O_ACCMODE); 164 160 fFlags &= ~_SO_EXCL; /* Ignore O_EXCL */ 165 hFile = __open(pszName, fFlags, cbInitial );161 hFile = __open(pszName, fFlags, cbInitial); 166 162 if (hFile < 0) 167 163 return -1; … … 169 165 170 166 /* 171 * Set file bits.172 */173 pfFlags = _fd_init(hFile);174 if (!pfFlags)175 {176 __close(hFile);177 errno = EMFILE;178 return -1;179 }180 *pfFlags = bits;181 182 /*183 167 * When opening a file for appending, move to the end of the file. 184 168 * This is required for passing the file to a child process. 185 169 */ 186 if (!(bits & F_DEV) && (bits & O_APPEND)) 170 if ( (fLibc & F_TYPEMASK) == F_FILE 171 && (fLibc & O_APPEND)) 187 172 __lseek(hFile, 0L, SEEK_END); 188 173 errno = saved_errno; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/chsize.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 10 10 int _STD(chsize) (int handle, off_t length) 11 11 { 12 12 13 off_t n; 13 off_t i;14 int j, *pflags;15 char zeros[4096];16 14 17 if ((pflags = _fd_flags (handle)) == NULL || (*pflags & F_DEV)) 15 pFH = __libc_FH(handle); 16 if ( !pFH 17 || (pFH->fFlags & F_DEV) 18 || pFH->pOps) 18 19 { 19 20 errno = EBADF; … … 27 28 if (n < length) 28 29 { 30 31 32 29 33 memset (zeros, 0, sizeof (zeros)); 30 34 if (__lseek (handle, n, SEEK_SET) == -1) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/close.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* close.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* close.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #include <io.h> 5 #include <errno.h>6 6 #include <emx/io.h> 7 #include <emx/syscalls.h>8 7 9 int _STD(close) (int handle)8 int _STD(close)) 10 9 { 11 if (_fd_flags (handle) == NULL)12 {13 errno = EBADF;14 return -1;15 }16 return __close (handle);10 11 12 13 ; 14 15 ; 17 16 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/dup.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* dup.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* dup.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #include <io.h> 5 #include <errno.h>6 #include <emx/io.h>7 6 #include <emx/syscalls.h> 8 7 9 int _STD(dup) (int handle)8 int _STD(dup)) 10 9 { 11 int new, *pflags1, *pflags2, *pla1, *pla2; 12 13 if ((pflags1 = _fd_flags (handle)) == NULL 14 || (pla1 = _fd_lookahead (handle)) == NULL) 15 { 16 errno = EBADF; 17 return -1; 18 } 19 new = __dup (handle); 20 if (new < 0) 21 return new; 22 if ((pflags2 = _fd_init (new)) == NULL 23 || (pla2 = _fd_lookahead (new)) == NULL) 24 { 25 close (new); 26 errno = EMFILE; 27 return -1; 28 } 29 *pflags2 = *pflags1; 30 *pla2 = *pla1; 31 return new; 10 return __dup(fh); 32 11 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/dup2.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* dup2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* dup2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #include <io.h> 5 #include <errno.h>6 #include <emx/io.h>7 6 #include <emx/syscalls.h> 8 7 9 int _STD(dup2) (int handle1, int handle2)8 int _STD(dup2)(int handle1, int handle2) 10 9 { 11 int *pflags1, *pflags2, *pla1, *pla2;12 13 if ((pflags1 = _fd_flags (handle1)) == NULL14 || (pla1 = _fd_lookahead (handle1)) == NULL15 || handle2 < 0)16 {17 errno = EBADF;18 return -1;19 }20 10 /* TODO: Block signals */ 21 if (__dup2 (handle1, handle2) < 0)11 if (__dup2(handle1, handle2) < 0) 22 12 return -1; 23 24 if ((pflags2 = _fd_init (handle2)) == NULL25 || (pla2 = _fd_lookahead (handle2)) == NULL)26 {27 /* TODO: Unfortunately, the original HANDLE2, if there was one,28 is now closed. */29 close (handle2);30 errno = EMFILE;31 return -1;32 }33 34 *pflags2 = *pflags1;35 *pla2 = *pla1;36 13 return handle2; 37 14 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/eof.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 8 8 int _STD(eof) (int handle) 9 9 { 10 int *pflags;10 ; 11 11 off_t cur, len; 12 12 13 if ((pflags = _fd_flags (handle)) == NULL) 14 { 13 /* 14 * Get filehandle. 15 */ 16 pFH = __libc_FH(handle); 17 if (!pFH) 18 { 15 19 errno = EBADF; 16 20 return -1; 17 }18 if ( *pflags & F_EOF) /* Ctrl-Z reached */21 } 22 if (lags & F_EOF) /* Ctrl-Z reached */ 19 23 return 1; 20 24 cur = tell (handle); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/fcloseal.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 7 7 int _fcloseall (void) 8 8 { 9 int i, n , start;9 int i, n; 10 10 char ok; 11 11 struct streamvec *sv; 12 12 13 13 n = 0; ok = 1; 14 for (sv = &_streamvec_head; sv != NULL; sv = sv->next)14 for (sv = _streamvec_head; sv != NULL; sv = sv->next) 15 15 { 16 if (sv->vec == _streamv) 17 start = 3; /* Keep stdin, stdout, stderr */ 18 else 19 start = 0; 20 for (i = start; i < sv->n; ++i) 16 for (i = sv->vec == stdin ? 3 : 0; /* Keep stdin, stdout, stderr */ 17 i < sv->n; 18 ++i) 21 19 if (sv->vec[i]._flags & _IOOPEN) 22 20 { … … 26 24 ok = 0; 27 25 } 28 start = 0;29 26 } 30 27 return (ok ? n : EOF); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/fcntl.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 1 /* fcntl.c (emx+gcc) -- Copyright (c) 1992-1998 by Eberhard Mattes */ 1 /* fcntl.c (emx+gcc) -- Copyright (c) 1992-1998 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 28 29 29 30 /* TODO: Use sysconf()? */ 31 30 32 31 33 if (handle2 < 0 || handle2 >= _POSIX_OPEN_MAX) … … 63 65 { 64 66 va_list va; 65 int ht, arg, *pflags; 67 int arg; 68 PLIBCFH pFH; 66 69 67 if ((pflags = _fd_flags (handle)) == NULL) 68 { 70 /* 71 * Get filehandle. 72 */ 73 pFH = __libc_FH(handle); 74 if (!pFH) 75 { 69 76 errno = EBADF; 70 77 return -1; 71 } 78 } 79 80 /** @todo Let __fcntl handle the flags. */ 81 72 82 switch (request) 73 83 { 74 84 case F_GETFL: 75 /* Check for valid handle. We don't call __fcntl() because 76 emx.exe does not implement F_GETFL (emx.dll and rsx.exe 77 do). */ 78 79 if (__ioctl2 (handle, FGETHTYPE, (int)&ht) != 0) 80 return -1; 81 return *pflags & FLAGS; 82 85 return __fcntl(handle, request, 0); 83 86 case F_SETFL: 84 87 va_start (va, request); … … 89 92 if (__fcntl (handle, request, arg) == -1) 90 93 return -1; 91 SETBITS ( *pflags, FLAGS, arg);94 SETBITS (lags, FLAGS, arg); 92 95 return 0; 93 96 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/fdopen.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 19 19 int omode; 20 20 21 if ( _fd_flags (handle) == NULL)21 if () 22 22 { 23 23 errno = EBADF; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/fflush.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 73 73 if (stream == NULL) 74 74 { 75 for (sv = &_streamvec_head; sv != NULL; sv = sv->next)75 for (sv = _streamvec_head; sv != NULL; sv = sv->next) 76 76 for (n = 0; n < sv->n; ++n) 77 77 if ((sv->vec[n]._flags & (_IOOPEN|_IOWRT)) == (_IOOPEN|_IOWRT)) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/flushall.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 18 18 19 19 n = 0; 20 for (sv = &_streamvec_head; sv != NULL; sv = sv->next)20 for (sv = _streamvec_head; sv != NULL; sv = sv->next) 21 21 for (i = 0; i < sv->n; ++i) 22 22 if ((sv->vec[i]._flags & _IOOPEN) && STREAM_LOCK_NOWAIT (&sv->vec[i])) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/fseek.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 13 13 int _fseek_nolock (FILE *stream, off_t offset, int origin) 14 14 { 15 off_t cur_pos; 16 int fflush_result, *pflags; 15 off_t cur_pos; 16 int fflush_result; 17 PLIBCFH pFH; 17 18 18 19 if (!(stream->_flags & _IOOPEN) || origin < 0 || origin > 2 … … 55 56 origin = SEEK_SET; 56 57 } 57 text_mode = ( (pflags = _fd_flags(stream->_handle)) != NULL58 && ( *pflags & F_CRLF));58 text_mode = ( (stream->_handle)) != NULL 59 && (lags & F_CRLF)); 59 60 n = stream->_ptr - stream->_buffer; 60 61 if (text_mode) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/ftell.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 13 13 off_t _ftell_nolock (FILE *stream) 14 14 { 15 off_t pos;16 int * pflags;15 off_t pos; 16 ; 17 17 18 18 if (stream->_flags & _IOSPECIAL) … … 30 30 pos += stream->_ptr - stream->_buffer; 31 31 if (!(stream->_flags & _IOSPECIAL) 32 && (p flags = _fd_flags(stream->_handle)) != NULL33 && ( *pflags & O_TEXT))32 && (p (stream->_handle)) != NULL 33 && (lags & O_TEXT)) 34 34 { 35 35 const char *p; … … 58 58 if (!(stream->_flags & _IOSPECIAL) 59 59 && stream->_ungetc_count == 0 60 && (p flags = _fd_flags(stream->_handle)) != NULL61 && ( *pflags & F_CRLF))60 && (p (stream->_handle)) != NULL 61 && (lags & F_CRLF)) 62 62 { 63 63 const char *p; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/ftruncat.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 1 /* ftruncat.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* ftruncat.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 9 10 int _STD(ftruncate) (int handle, off_t length) 10 11 { 11 int *pflags;12 ; 12 13 13 if ((pflags = _fd_flags (handle)) == NULL || (*pflags & F_DEV)) 14 /* 15 * Get filehandle. 16 */ 17 pFH = __libc_FH(handle); 18 if (!pFH) 14 19 { 15 errno = EBADF;16 return -1;20 errno = EBADF; 21 return -1; 17 22 } 18 return __ftruncate (handle, length); 23 /** @todo check this api with latest specs - there is a zero fill extension now IIRC. */ 24 if ((pFH->fFlags & F_TYPEMASK) != F_FILE) 25 { 26 errno = EBADF; 27 return -1; 28 } 29 return __ftruncate (handle, length); 19 30 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/ioctl.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 1 /* ioctl.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* ioctl.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 19 20 int _STD(ioctl) (int handle, unsigned long request, ...) 20 21 { 21 va_list va; 22 int rc, saved_errno, arg, *int_ptr, *pflags, *pla; 23 const struct termio *tp; 22 va_list va; 23 PLIBCFH pFH; 24 int rc, saved_errno, arg, *int_ptr; 25 const struct termio *tp; 24 26 25 if ((pflags = _fd_flags (handle)) == NULL) 27 /* 28 * Get filehandle. 29 */ 30 pFH = __libc_FH(handle); 31 if (!pFH) 26 32 { 27 errno = EBADF;28 return -1;33 errno = EBADF; 34 return -1; 29 35 } 30 saved_errno = errno; errno = 0;31 va_start (va, request);32 arg = va_arg (va, int);33 va_end (va);34 rc = __ioctl2 (handle, request, arg);35 if (rc >= 0 && errno == 0)36 switch (__IOCLW(request))37 {38 case __IOCLW(TCSETAF):39 case __IOCLW(TCSETAW):40 case __IOCLW(TCSETA):41 va_start (va, request);42 tp = va_arg (va, const struct termio *);43 va_end (va);44 if (tp->c_lflag & IDEFAULT)45 *pflags &= ~F_TERMIO;46 else47 *pflags |= F_TERMIO;48 break;49 36 50 case __IOCLW(_TCSANOW): 51 case __IOCLW(_TCSADRAIN): 52 case __IOCLW(_TCSAFLUSH): 53 *pflags |= F_TERMIO; 54 break; 37 /* 38 * Make syscall. 39 */ 40 saved_errno = errno; errno = 0; 41 va_start (va, request); 42 arg = va_arg(va, int); 43 va_end (va); 44 rc = __ioctl2(handle, request, arg); 55 45 56 case __IOCLW(FIONREAD): 57 if ((pla = _fd_lookahead (handle)) != NULL && *pla >= 0) 58 { 59 va_start (va, request); 60 int_ptr = va_arg (va, int *); 61 va_end (va); 62 ++(*int_ptr); 63 } 64 break; 46 /* 47 * On success do small touches of our own. 48 */ 49 /** @todo fFlags can be handled by the syscall just as well as here..*/ 50 if (rc >= 0 && errno == 0) 51 { 52 switch (__IOCLW(request)) 53 { 54 case __IOCLW(TCSETAF): 55 case __IOCLW(TCSETAW): 56 case __IOCLW(TCSETA): 57 va_start(va, request); 58 tp = va_arg(va, const struct termio *); 59 va_end(va); 60 if (tp->c_lflag & IDEFAULT) 61 pFH->fFlags &= ~F_TERMIO; 62 else 63 pFH->fFlags |= F_TERMIO; 64 break; 65 65 66 case __IOCLW(FIONBIO): 67 va_start (va, request); 68 int_ptr = va_arg (va, int *); 69 va_end (va); 70 if (*int_ptr) 71 *pflags |= O_NDELAY; 72 else 73 *pflags &= ~O_NDELAY; 74 break; 75 } 76 if (errno == 0) 77 errno = saved_errno; 78 return rc; 66 case __IOCLW(_TCSANOW): 67 case __IOCLW(_TCSADRAIN): 68 case __IOCLW(_TCSAFLUSH): 69 pFH->fFlags |= F_TERMIO; 70 break; 71 72 case __IOCLW(FIONREAD): 73 if (pFH->iLookAhead >= 0) 74 { 75 va_start(va, request); 76 int_ptr = va_arg(va, int *); 77 va_end(va); 78 ++(*int_ptr); 79 } 80 break; 81 82 case __IOCLW(FIONBIO): 83 va_start(va, request); 84 int_ptr = va_arg(va, int *); 85 va_end(va); 86 if (*int_ptr) 87 pFH->fFlags |= O_NDELAY; 88 else 89 pFH->fFlags &= ~O_NDELAY; 90 break; 91 } /* switch */ 92 } 93 if (errno == 0) 94 errno = saved_errno; 95 return rc; 79 96 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/isatty.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* isatty.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* isatty.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 6 7 #include <emx/io.h> 7 8 8 int _STD(isatty) (int handle)9 int _STD(isatty)(int handle) 9 10 { 10 int *pflags;11 ; 11 12 12 if ((pflags = _fd_flags (handle)) == NULL) 13 /* 14 * Get filehandle. 15 */ 16 pFH = __libc_FH(handle); 17 if (!pFH) 13 18 { 14 errno = EBADF;15 return 0;19 errno = EBADF; 20 return 0; 16 21 } 17 else 18 return ( (*pflags & F_DEV) ? 1 : 0);22 23 return (; 19 24 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/lseek.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 9 9 off_t _STD(lseek) (int handle, off_t offset, int origin) 10 10 { 11 int *pflags, *pla;12 off_t n, cur;11 ; 12 ; 13 13 14 if ((pflags = _fd_flags (handle)) == NULL 15 || (pla = _fd_lookahead (handle)) == NULL) 14 /* 15 * Get filehandle. 16 */ 17 pFH = __libc_FH(handle); 18 if (!pFH) 16 19 { 17 errno = EBADF;18 return -1;20 errno = EBADF; 21 return -1; 19 22 } 20 if (origin == SEEK_CUR && (*pla >= 0 || (*pflags & F_EOF))) 21 --offset; 22 if (offset < 0) 23 24 if ( origin == SEEK_CUR 25 && ( pFH->iLookAhead >= 0 26 || (pFH->fFlags & F_EOF)) ) 27 --offset; 28 #if 0 /* not needed on OS/2 I think... */ 29 if (offset < 0) 23 30 { 24 /* DOS doesn't return an error for seek before beginning of file */ 25 if (origin == SEEK_SET) 31 off_t cur; 32 /* DOS doesn't return an error for seek before beginning of file */ 33 if (origin == SEEK_SET) 26 34 { 27 errno = EINVAL;28 return -1;35 errno = EINVAL; 36 return -1; 29 37 } 30 cur = __lseek (handle, 0, SEEK_CUR); 31 if (cur == -1L) 38 cur = __lseek(handle, 0, SEEK_CUR); 39 if (cur == -1L) 40 return -1; 41 n = __lseek(handle, 0, origin); 42 if (n + offset < 0) 43 { 44 __lseek(handle, cur, SEEK_SET); 45 errno = EINVAL; 46 return -1; 47 } 48 offset += n; 49 origin = SEEK_SET; 50 } 51 #endif 52 n = __lseek(handle, offset, origin); 53 if (n == -1) 32 54 return -1; 33 n = __lseek (handle, 0, origin); 34 if (n + offset < 0) 35 { 36 __lseek (handle, cur, SEEK_SET); 37 errno = EINVAL; 38 return -1; 39 } 40 offset += n; origin = SEEK_SET; 41 } 42 n = __lseek (handle, offset, origin); 43 if (n == -1) 44 return -1; 45 else 55 else 46 56 { 47 *pflags &= ~F_EOF;/* Clear Ctrl-Z flag */48 *pla = -1;/* Clear lookahead */49 return n;57 /* Clear Ctrl-Z flag */ 58 /* Clear lookahead */ 59 return n; 50 60 } 51 61 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/pipe.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 9 9 10 10 extern int _fmode_bin; 11 int _pipe_size;12 11 13 int _STD(pipe) (int *two_handles) 12 /** The default pipe size. */ 13 int _pipe_size; 14 15 int _STD(pipe)(int *two_handles) 14 16 { 15 int *pflags1, *pflags2;17 ; 16 18 17 if (__pipe (two_handles, (_pipe_size != 0 ? _pipe_size : 8192)) != 0) 18 return -1; 19 pflags1 = _fd_init (two_handles[0]); 20 if (pflags1 == NULL) 21 pflags2 = NULL; 22 else 23 pflags2 = _fd_init (two_handles[1]); 24 if (pflags2 == NULL) 19 if (__pipe(two_handles, _pipe_size != 0 ? _pipe_size : 8192, &pFHRead, &pFHWrite) != 0) 20 return -1; 21 22 /** @todo move _fmode_bin check to __pipe()? */ 23 if (!_fmode_bin) 25 24 { 26 __close (two_handles[0]); 27 __close (two_handles[1]); 28 errno = EMFILE; 29 return -1; 25 pFHRead->fFlags |= O_TEXT; 26 pFHWrite->fFlags |= O_TEXT; 30 27 } 31 *pflags1 = O_RDONLY | F_PIPE; 32 *pflags2 = O_WRONLY | F_PIPE; 33 if (_fmode_bin == 0) 34 { 35 *pflags1 |= O_TEXT; 36 *pflags2 |= O_TEXT; 37 } 38 return 0; 28 29 return 0; 39 30 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/popen.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 29 29 const char *sh, *base, *opt; 30 30 31 fcntl (pipe_local, F_SETFD, 1);31 fcntl (pipe_local, F_SETFD, ); 32 32 org_private = fcntl (handle, F_GETFD, 0); 33 33 if (org_private == -1) … … 36 36 if (org_handle == -1) 37 37 return NULL; 38 fcntl (org_handle, F_SETFD, 1); 38 fcntl (org_handle, F_SETFD, FD_CLOEXEC); 39 39 40 i = dup2 (pipe_remote, handle); 40 41 if (i != handle) … … 96 97 if (pipe (ph) == -1) 97 98 return NULL; 98 if (fcntl (ph[0], F_SETFD, 1) == -1)99 if (fcntl (ph[0], F_SETFD, ) == -1) 99 100 return NULL; 100 if (fcntl (ph[1], F_SETFD, 1) == -1)101 if (fcntl (ph[1], F_SETFD, ) == -1) 101 102 return NULL; 102 103 if (mode[0] == 'r') -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/read.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 13 13 unless O_NDELAY is in effect. */ 14 14 15 static int read_lookahead (int handle, void *buf, size_t nbyte, int *pla)15 static int read_lookahead (int handle, void *buf, size_t nbyte, ) 16 16 { 17 17 int i, n, la, saved_errno; … … 19 19 20 20 i = 0; dst = buf; saved_errno = errno; 21 if (nbyte > 0 && (la = __lxchg ( pla, -1)) != -1)21 if (nbyte > 0 && (la = __lxchg (, -1)) != -1) 22 22 { 23 23 *dst = (char)la; … … 40 40 ssize_t _STD(read) (int handle, void *buf, size_t nbyte) 41 41 { 42 int n, *pflags, *pla; 43 size_t j, k; 44 char *dst, c; 42 int n; 43 PLIBCFH pFH; 44 size_t j, k; 45 char *dst, c; 45 46 46 if ((pflags = _fd_flags (handle)) == NULL 47 || (pla = _fd_lookahead (handle)) == NULL) 47 /* 48 * Get filehandle. 49 */ 50 pFH = __libc_FH(handle); 51 if (!pFH) 48 52 { 49 53 errno = EBADF; … … 51 55 } 52 56 53 *pflags &= ~F_CRLF; /* No CR/LF pair translated to newline */54 if (nbyte > 0 && ( *pflags & F_EOF))57 lags &= ~F_CRLF; /* No CR/LF pair translated to newline */ 58 if (nbyte > 0 && (lags & F_EOF)) 55 59 return 0; 56 60 dst = buf; 57 n = read_lookahead (handle, dst, nbyte, p la);61 n = read_lookahead (handle, dst, nbyte, p); 58 62 if (n == -1) 59 63 return -1; 60 if (( *pflags & O_TEXT) && !(*pflags & F_TERMIO) && n > 0)64 if ((lags & F_TERMIO) && n > 0) 61 65 { 62 66 /* special processing for text mode */ 63 if (!(*pflags & (F_PIPE|F_SOCKET|F_DEV)) && dst[n-1] == 0x1a && 64 eof (handle)) 67 if ( (pFH->fFlags & F_TYPEMASK) == F_FILE 68 && dst[n-1] == 0x1a 69 && eof (handle)) 65 70 { 66 71 /* remove last Ctrl-Z in text files */ 67 72 --n; 68 *pflags |= F_EOF;73 lags |= F_EOF; 69 74 if (n == 0) 70 75 return 0; … … 77 82 78 83 int saved_errno = errno; 79 j = read_lookahead (handle, &c, 1, p la); /* look ahead */84 j = read_lookahead (handle, &c, 1, p); /* look ahead */ 80 85 if (j == -1 && errno == EAGAIN) 81 86 { 82 *pla= '\r';87 = '\r'; 83 88 return -1; 84 89 } … … 87 92 { 88 93 dst[0] = '\n'; /* yes -> replace with LF */ 89 *pflags |= F_CRLF;94 lags |= F_CRLF; 90 95 } 91 96 else 92 *pla = (unsigned char)c;/* no -> save the 2nd char */97 /* no -> save the 2nd char */ 93 98 } 94 99 else … … 104 109 for F_CRLF logic. */ 105 110 106 *pla= '\r';111 = '\r'; 107 112 --n; 108 113 } 109 114 if (k != n) 110 *pflags |= F_CRLF;115 lags |= F_CRLF; 111 116 n = k; 112 117 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/readv.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 13 13 int _STD(readv) (int handle, const struct iovec *iov, int iovcnt) 14 14 { 15 15 16 int i, n; 16 17 size_t total, len; … … 35 36 36 37 mp = NULL; 37 if (total <= 0x1000 00)38 if (total <= 0x1000) 38 39 buf = alloca (total); 39 40 else -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/select.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 13 13 fd_set *exceptfds, struct timeval *timeout) 14 14 { 15 struct _select args; 16 15 /** @todo rewrite select */ 16 struct _select args = {0,0,0,0,0}; 17 #if 0 17 18 args.nfds = nfds; 18 19 args.readfds = readfds; … … 68 69 } 69 70 } 71 70 72 return __select (&args); 71 73 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/setmode.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* setmode.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ 1 /* setmode.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 9 10 int _STD(setmode) (int handle, int mode) 10 11 { 11 int old_mode, *pflags; 12 PLIBCFH pFH; 13 int old_mode; 12 14 13 if ((pflags = _fd_flags (handle)) == NULL) 15 /* 16 * Get filehandle. 17 */ 18 pFH = __libc_FH(handle); 19 if (!pFH) 14 20 { 15 errno = EBADF;16 return -1;21 errno = EBADF; 22 return -1; 17 23 } 18 old_mode = ((*pflags & O_TEXT) ? O_TEXT : O_BINARY); 19 if (mode == O_BINARY) 20 *pflags &= ~O_TEXT; 21 else if (mode == O_TEXT) 22 *pflags |= O_TEXT; 23 else 24 25 /* 26 * O_BINARY isn't normally stored in the fFlags member. 27 */ 28 old_mode = (pFH->fFlags & O_TEXT) ? O_TEXT : O_BINARY; 29 if (mode == O_BINARY) 30 pFH->fFlags &= ~O_TEXT; 31 else if (mode == O_TEXT) 32 pFH->fFlags = (pFH->fFlags & ~O_BINARY) | O_TEXT; /* paranoia */ 33 else 24 34 { 25 errno = EINVAL;26 return -1;35 errno = EINVAL; 36 return -1; 27 37 } 28 return old_mode;38 return old_mode; 29 39 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/tell.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 7 7 #include <emx/syscalls.h> 8 8 9 off_t _STD(tell) (int handle)9 off_t _STD(tell)(int handle) 10 10 { 11 int *pflags, *pla;12 off_tn;11 ; 12 n; 13 13 14 if ((pflags = _fd_flags (handle)) == NULL15 || (pla = _fd_lookahead (handle)) == NULL)14 15 ) 16 16 { 17 errno = EBADF;18 return -1;17 errno = EBADF; 18 return -1; 19 19 } 20 n = __lseek (handle, 0L, SEEK_CUR); 21 if (n == -1) 20 n = __lseek(handle, 0L, SEEK_CUR); 21 if (n == -1) 22 return n; 23 if (pFH->iLookAhead >= 0 || (pFH->fFlags & F_EOF)) 24 --n; 22 25 return n; 23 if (*pla >= 0 || (*pflags & F_EOF))24 --n;25 return n;26 26 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/tmpnam.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 10 10 char *_STD(tmpnam) (char *string) 11 11 { 12 struct _thread *tp = _thread ();13 14 12 if (string == NULL) 15 string = tp->_th_tmpnam_buf; 13 { 14 struct _thread *tp = _thread (); 15 string = tp->_th_tmpnam_buf; 16 } 16 17 if (_tmpidxnam (string) >= 0) 17 18 return string; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/write.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 35 35 Return -1 on error. */ 36 36 37 static int write_text (int handle, const char *src, size_t nbyte, int *pflags)37 static int write_text (int handle, const char *src, size_t nbyte, ) 38 38 { 39 39 int out_cnt, lf_cnt, lf_cnt_1, buf_cnt, n; … … 44 44 out_cnt = lf_cnt = lf_cnt_1 = buf_cnt = 0; 45 45 buf_pos = 0; i = 0; 46 if ( *pflags & F_WRCRPEND)46 if (lags & F_WRCRPEND) 47 47 { 48 48 if (*src == '\n') … … 60 60 pipe. */ 61 61 62 *pflags &= ~F_WRCRPEND;62 lags &= ~F_WRCRPEND; 63 63 } 64 64 } … … 79 79 } 80 80 if (buf_cnt != 0) WRTBUF; 81 *pflags &= ~F_WRCRPEND;81 lags &= ~F_WRCRPEND; 82 82 return out_cnt - lf_cnt; 83 83 … … 118 118 if (splitp) 119 119 { 120 if ( *pflags & (F_DEV|F_SOCKET|F_PIPE))121 *pflags |= F_WRCRPEND;120 if () 121 lags |= F_WRCRPEND; 122 122 else 123 123 { … … 133 133 } 134 134 else 135 *pflags &= ~F_WRCRPEND;135 lags &= ~F_WRCRPEND; 136 136 return out_cnt - lf_cnt_1; 137 137 } … … 140 140 int _STD(write) (int handle, const void *buf, size_t nbyte) 141 141 { 142 int n, *pflags; 142 PLIBCFH pFH; 143 int n; 143 144 const char *src; 144 145 145 if ((pflags = _fd_flags (handle)) == NULL) 146 { 147 errno = EBADF; return -1; 148 } 149 if ((*pflags & (F_DEV|F_SOCKET|F_PIPE|O_APPEND)) == O_APPEND) 146 /* 147 * Get filehandle 148 */ 149 pFH = __libc_FH(handle); 150 if (!pFH) 151 { 152 errno = EBADF; 153 return -1; 154 } 155 156 if ((pFH->fFlags & (F_TYPEMASK | O_APPEND)) == (O_APPEND | F_FILE)) 150 157 __lseek (handle, 0, SEEK_END); 151 158 if (nbyte == 0) /* Avoid truncation of file */ 152 159 return 0; 153 160 src = buf; 154 if ((*pflags & O_TEXT) && ((*pflags & F_WRCRPEND) 155 || memchr (src, '\n', nbyte) != NULL)) 156 n = write_text (handle, src, nbyte, pflags); 161 if ( (pFH->fFlags & O_TEXT) 162 && ( (pFH->fFlags & F_WRCRPEND) 163 || memchr (src, '\n', nbyte) != NULL)) 164 n = write_text (handle, src, nbyte, pFH); 157 165 else 158 166 n = __write (handle, src, nbyte); … … 174 182 data to be written. */ 175 183 176 if ((*pflags & F_DEV) && *src == CTRL_Z) 184 if ( (pFH->fFlags & F_TYPEMASK) == F_DEV 185 && *src == CTRL_Z) 177 186 return 0; 178 187 … … 180 189 EAGAIN. */ 181 190 182 if ((*pflags & (F_DEV|F_SOCKET|F_PIPE)) 183 && (*pflags & O_NONBLOCK)) 191 if ( (pFH->fFlags & O_NONBLOCK) 192 && ( (pFH->fFlags & F_TYPEMASK) == F_DEV 193 || (pFH->fFlags & F_TYPEMASK) == F_SOCKET /* ???? */ 194 || (pFH->fFlags & F_TYPEMASK) == F_PIPE) ) 184 195 { 185 196 errno = EAGAIN; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/io/writev.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 13 13 int _STD(writev) (int handle, const struct iovec *iov, int iovcnt) 14 14 { 15 15 16 int i, n; 16 17 size_t total, len; … … 35 36 36 37 mp = NULL; 37 if (total <= 0x1000 00)38 if (total <= 0x1000) 38 39 buf = alloca (total); 39 40 else -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/libc.def
-
Property cvs2svn:cvs-rev
changed from
1.24to1.25
r870 r871 19 19 EXPORTS 20 20 ; data 21 "__std_daylight" @1 22 "__fdvec_head" @2 23 "__files" @3 24 "__fmode_bin" @4 25 "__io_ninherit" @5 26 "__lookahead" @6 27 "__mb_cur_max" @7 28 "__org_environ" @8 29 "__osmajor" @9 30 "__osminor" @10 31 "__pipe_size" @11 32 "__std_environ" @12 33 "__streamv" @13 34 "__streamv_rmutex" @14 35 "__streamvec2_head" @15 36 "__streamvec_head" @16 37 "__sys_clock0_ms" @17 38 "__sys_heap_fmutex" @18 39 "__sys_heap_obj_count" @19 40 "__sys_heap_objs" @20 41 "__sys_heap_size" @21 42 "__sys_ino" @22 43 "__sys_pid" @23 44 "__sys_ppid" @24 45 "__um_high_heap" @25 46 "__sys_thread_table" @26 47 "__sys_top_heap_obj" @27 48 "__sys_uflags" @28 49 "__sys_umask" @29 50 "__sys_xreg" @30 51 "__std_timezone" @31 52 "__tmpidx" @32 53 "__tzi" @33 54 "__std_tzname" @34 55 "__tzset_flag" @35 56 "__um_regular_heap" @36 57 "__um_tiled_heap" @37 58 "_optarg" @38 59 "_opterr" @39 60 "_optind" @40 61 "_optmode" @41 62 "_optopt" @42 63 "_optswchar" @43 64 "__atexit_n" @44 65 "__atexit_v" @45 66 "__thread_tab" @46 67 "___digits" @47 68 "___locale" @48 69 "___locale_C" @49 70 "___locale_collate" @50 71 "___locale_ctype" @51 72 "___locale_lconv" @52 73 "___locale_time" @53 74 "__um_low_heap" @54 75 "__rand48_add" @55 76 "__rand48_mult" @56 77 "__rand48_seed" @57 21 "___digits" @1 22 "___locale" @2 23 "___locale_C" @3 24 "___locale_collate" @4 25 "___locale_ctype" @5 26 "___locale_lconv" @6 27 "___locale_time" @7 28 "___stderrp" @8 29 "___stdinp" @9 30 "___stdoutp" @10 31 "__atexit_n" @11 32 "__atexit_v" @12 33 "__fmode_bin" @13 34 "__mb_cur_max" @14 35 "__org_environ" @15 36 "__osmajor" @16 37 "__osminor" @17 38 "__pipe_size" @18 39 "__rand48_add" @19 40 "__rand48_mult" @20 41 "__rand48_seed" @21 42 "__std_daylight" @22 43 "__std_environ" @23 44 "__std_timezone" @24 45 "__std_tzname" @25 46 "__streamv_rmutex" @26 47 "__streamvec_head" @27 48 "__thread_tab" @28 49 "__tmpidx" @29 50 "__tzi" @30 51 "__tzset_flag" @31 52 "__um_high_heap" @32 53 "__um_low_heap" @33 54 "__um_regular_heap" @34 55 "__um_tiled_heap" @35 56 "_optarg" @36 57 "_opterr" @37 58 "_optind" @38 59 "_optmode" @39 60 "_optopt" @40 61 "_optswchar" @41 62 78 63 79 64 ; code 80 "__CRT_init" @100 81 "__CRT_term" @101 82 "___init" @102 83 "___init_app" @103 84 "___init_dll" @104 85 "__fd_flags" @105 86 "__fd_init" @106 87 "__fd_lookahead" @107 88 "__init1_fdinit" @108 89 "__init1_tmp" @109 90 "__std_posix_memalign" @110 91 "__lrealloc" @111 92 "__init_streams" @112 93 "___initthread" @113 94 "__emxload_connect" @114 95 "__emxload_disconnect" @115 96 "__emxload_do_connect" @116 97 "__emxload_do_disconnect" @117 98 "__emxload_do_receive" @118 99 "__emxload_do_request" @119 100 "__emxload_do_wait" @120 101 "__emxload_env" @121 102 "__emxload_list_get" @122 103 "__emxload_list_start" @123 104 "__emxload_prog" @124 105 "__emxload_request" @125 106 "__emxload_stop" @126 107 "__emxload_this" @127 108 "__emxload_unload" @128 109 "__sys_init_thread" @129 110 "__HUGE_VAL" @130 111 "__LHUGE_VAL" @131 112 "__abspath" @132 113 "___alloc_thread" @133 114 "__assert" @134 115 "__year_day" @135 116 "__tmalloc" @136 117 "___atod" @137 118 "__std_fprintf" @138 119 "__std_printf" @139 120 "__std_malloc" @140 121 "__std_free" @141 122 "__std_realloc" @142 123 "__std_calloc" @143 124 "__std_strdup" @144 125 "__um_addmem_nolock" @145 126 "__umalloc" @146 127 "__um_alloc_no_lock" @147 128 "__linitheap" @148 129 "__um_crumb_free_maybe_lock" @149 130 "__um_default_alloc" @150 131 "__um_default_expand" @151 132 "__um_default_release" @152 133 "__um_default_shrink" @153 134 "__um_find_bucket" @154 135 "__um_free_maybe_lock" @155 136 "__um_init_default_regular_heap" @156 137 "__um_init_default_tiled_heap" @157 138 "__um_lump_alloc" @158 139 "__um_lump_coalesce_free" @159 140 "__um_lump_free_maybe_lock" @160 141 "__um_lump_link_heap" @161 142 "__um_lump_make_free" @162 143 "__um_lump_unlink_bucket" @163 144 "__um_lump_unlink_heap" @164 145 "__um_realloc" @165 146 "__um_seg_addmem" @166 147 "__um_seg_setmem" @167 148 "__std_strcat" @168 149 "__std_strchr" @169 150 "__std_strcmp" @170 151 "__std_strcoll" @171 152 "__std_strcpy" @172 153 "__std_strcspn" @173 154 "__std_strerror" @174 155 "__std_strftime" @175 156 "__std_stricmp" @176 157 "__std_strlen" @177 158 "__std_strlwr" @178 159 "__std_strncat" @179 160 "__std_strncmp" @180 161 "__std_strncpy" @181 162 "__std_strnicmp" @182 163 "__std_strnset" @183 164 "__std_strpbrk" @184 165 "__std_strptime" @185 166 "__std_strrchr" @186 167 "__std_strrev" @187 168 "__std_strset" @188 169 "__std_strspn" @189 170 "__std_strstr" @190 171 "__std_strtod" @191 172 "__std_strtof" @192 173 "__std_strtok" @193 174 "__std_strtol" @194 175 "__std_strtold" @195 176 "__std_strtoul" @196 177 "__std_strupr" @197 178 "__std_strxfrm" @198 179 "__std_abort" @199 180 "__std_abs" @200 181 "__std_access" @201 182 "__std_acos" @202 183 "__std_asctime" @203 184 "__std_asin" @204 185 "__std_atan" @205 186 "__std_atan2" @206 187 "__std_atexit" @207 188 "__std_atof" @208 189 "__std_atofl" @209 190 "__std_atoi" @210 191 "__std_atol" @211 192 "__std_atoll" @212 193 "__std_bcmp" @213 194 "__std_bcopy" @214 195 "__std_brk" @215 196 "__std_bsearch" @216 197 "__std_bzero" @217 198 "__std_cbrt" @218 199 "__std_ceil" @219 200 "__std_chdir" @220 201 "__std_chdrive" @221 202 "__std_chmod" @222 203 "__std_chsize" @223 204 "__std_clearerr" @224 205 "__std_clock" @225 206 "__std_close" @226 207 "__std_closedir" @227 208 "__std_cos" @228 209 "__std_cosh" @229 210 "__std_creat" @230 211 "__std_ctime" @231 212 "__std_cuserid" @232 213 "__std_difftime" @233 214 "__std_div" @234 215 "__std_dup" @235 216 "__std_dup2" @236 217 "__std_endpwent" @237 218 "__std_eof" @238 219 "__std_execl" @239 220 "__std_execle" @240 221 "__std_execlp" @241 222 "__std_execlpe" @242 223 "__std_execv" @243 224 "__std_execve" @244 225 "__std_execvp" @245 226 "__std_execvpe" @246 227 "__std_exit" @247 228 "__std_exp" @248 229 "__std_expand" @249 230 "__std_fabs" @250 231 "__std_fclose" @251 232 "__std_fcntl" @252 233 "__std_fdopen" @253 234 "__std_feof" @254 235 "__std_ferror" @255 236 "__std_fflush" @256 237 "__std_ffs" @257 238 "__std_fgetc" @258 239 "__std_fgetchar" @259 240 "__std_fgetpos" @260 241 "__std_fgets" @261 242 "__std_filelength" @262 243 "__std_fileno" @263 244 "__std_flock" @264 245 "__std_floor" @265 246 "__std_flushall" @266 247 "__std_fmod" @267 248 "__std_fnmatch" @268 249 "__std_fopen" @269 250 "__std_fork" @270 251 "__std_fpathconf" @271 252 "__std_fputc" @272 253 "__std_fputchar" @273 254 "__std_fputs" @274 255 "__std_fread" @275 256 "__std_freopen" @276 257 "__std_frexp" @277 258 "__std_fscanf" @278 259 "__std_fseek" @279 260 "__std_fsetpos" @280 261 "__std_fstat" @281 262 "__std_fsync" @282 263 "__std_ftell" @283 264 "__std_ftime" @284 265 "__std_ftruncate" @285 266 "__std_ftw" @286 267 "__std_fwrite" @287 268 "__std_gcvt" @288 269 "__std_getchar" @289 270 "__std_getcwd" @290 271 "__std_getenv" @291 272 "__std_getgid" @292 273 "__std_getgrnam" @293 274 "__std_getgroups" @294 275 "__std_getlogin" @295 276 "__std_getopt" @296 277 "__std_getpagesize" @297 278 "__std_getpass" @298 279 "__std_getpgrp" @299 280 "__std_getpid" @300 281 "__std_getppid" @301 282 "__std_getpw" @302 283 "__std_getpwent" @303 284 "__std_getpwnam" @304 285 "__std_getpwuid" @305 286 "__std_gets" @306 287 "__std_gettimeofday" @307 288 "__std_getuid" @308 289 "__std_getw" @309 290 "__std_getwd" @310 291 "__std_gmtime" @311 292 "__std_index" @312 293 "__std_ioctl" @313 294 "__std_isatty" @314 295 "__std_kill" @315 296 "__std_labs" @316 297 "__std_ldexp" @317 298 "__std_ldiv" @318 299 "__std_localtime" @319 300 "__std_log" @320 301 "__std_log10" @321 302 "__std_longjmp" @322 303 "__std_lseek" @323 304 "__std_mblen" @324 305 "__std_mbstowcs" @325 306 "__std_mbtowc" @326 307 "__std_memccpy" @327 308 "__std_memchr" @328 309 "__std_memcmp" @329 310 "__std_memcpy" @330 311 "__std_memicmp" @331 312 "__std_memmove" @332 313 "__std_memset" @333 314 "__std_mkdir" @334 315 "__std_mkstemp" @335 316 "__std_mktemp" @336 317 "__std_mktime" @337 318 "__std_modf" @338 319 "__std_open" @339 320 "__std_opendir" @340 321 "__std_pathconf" @341 322 "__std_pause" @342 323 "__std_pclose" @343 324 "__std_perror" @344 325 "__std_pipe" @345 326 "__std_popen" @346 327 "__std_pow" @347 328 "__std_putchar" @348 329 "__std_putenv" @349 330 "__std_puts" @350 331 "__std_putw" @351 332 "__std_qsort" @352 333 "__std_raise" @353 334 "__std_rand" @354 335 "__std_read" @355 336 "__std_readdir" @356 337 "__std_readv" @357 338 "__std_remove" @358 339 "__std_rename" @359 340 "__std_rewind" @360 341 "__std_rewinddir" @361 342 "__std_rindex" @362 343 "__std_rmdir" @363 344 "__std_sbrk" @364 345 "__std_scanf" @365 346 "__std_seekdir" @366 347 "__std_select" @367 348 "__std_setbuf" @368 349 "__std_setbuffer" @369 350 "__std_setgid" @370 351 "__std_setjmp" @371 352 "__std_setmode" @372 353 "__std_setpgid" @373 354 "__std_setpwent" @374 355 "__std_setsid" @375 356 "__std_settimeofday" @376 357 "__std_setuid" @377 358 "__std_setvbuf" @378 359 "__std_sigaction" @379 360 "__std_sigaddset" @380 361 "__std_sigdelset" @381 362 "__std_sigemptyset" @382 363 "__std_sigfillset" @383 364 "__std_sigismember" @384 365 "__std_signal" @385 366 "__std_sigpending" @386 367 "__std_sigprocmask" @387 368 "__std_sigsuspend" @388 369 "__std_sin" @389 370 "__std_sinh" @390 371 "__std_sleep" @391 372 "__std_snprintf" @392 373 "__std_sopen" @393 374 "__std_spawnl" @394 375 "__std_spawnle" @395 376 "__std_spawnlp" @396 377 "__std_spawnlpe" @397 378 "__std_spawnv" @398 379 "__std_spawnve" @399 380 "__std_spawnvp" @400 381 "__std_spawnvpe" @401 382 "__std_sprintf" @402 383 "__std_sqrt" @403 384 "__std_srand" @404 385 "__std_sscanf" @405 386 "__std_stat" @406 387 "__std_swab" @407 388 "__std_sysconf" @408 389 "__std_sys_errlist" @409 390 "__std_sys_nerr" @410 391 "__std_system" @411 392 "__std_tan" @412 393 "__std_tanh" @413 394 "__std_tell" @414 395 "__std_telldir" @415 396 "__std_time" @416 397 "__std_times" @417 398 "__std_tmpfile" @418 399 "__std_tmpnam" @419 400 "__std_truncate" @420 401 "__std_ttyname" @421 402 "__std_tzset" @422 403 "__std_ulimit" @423 404 "__std_umask" @424 405 "__std_uname" @425 406 "__std_ungetc" @426 407 "__std_unlink" @427 408 "__std_utime" @428 409 "__std_utimes" @429 410 "__std_vfprintf" @430 411 "__std_vfscanf" @431 412 "__std_vprintf" @432 413 "__std_vscanf" @433 414 "__std_vsnprintf" @434 415 "__std_vsprintf" @435 416 "__std_vsscanf" @436 417 "__std_wait" @437 418 "__std_waitpid" @438 419 "__std_wcstombs" @439 420 "__std_wctomb" @440 421 "__std_write" @441 422 "__std_writev" @442 423 "__stream_read" @443 424 "__stream_write" @444 425 "__strncpy" @445 426 "__std_strtoll" @446 427 "__std_strtoull" @447 428 "__beginthread" @448 429 "__bi_add_bb" @449 430 "__bi_cmp_bb" @450 431 "__bi_cmp_pow2" @451 432 "__bi_div_add_back" @452 433 "__bi_div_estimate" @453 434 "__bi_div_rem_bb" @454 435 "__bi_div_rem_bw" @455 436 "__bi_div_rem_pow2" @456 437 "__bi_div_subtract" @457 438 "__bi_fls" @458 439 "__bi_hdiv_rem_b" @459 440 "__bi_mul_bb" @460 441 "__bi_mul_bw" @461 442 "__bi_pow5" @462 443 "__bi_set_b" @463 444 "__bi_set_d" @464 445 "__bi_set_w" @465 446 "__bi_shl_b" @466 447 "__bi_shl_w" @467 448 "__bi_shr_b" @468 449 "__bi_sub_mul_bw" @469 450 "__bi_wdiv_rem_pow2" @470 451 "__std_cbrtl" @471 452 "__std_cfgetispeed" @472 453 "__std_cfgetospeed" @473 454 "__std_cfsetispeed" @474 455 "__std_cfsetospeed" @475 456 "__std_cfsetspeed" @476 457 "___chdir" @477 458 "__chdir2" @478 459 "___chmod" @479 460 "___chsize" @480 461 "__clear87" @481 462 "___close" @482 463 "__closestream" @483 464 "__compute_dst_table" @484 465 "__const_HALF" @485 466 "__const_M_ONE" @486 467 "__const_NAN" @487 468 "__const_ONE" @488 469 "__const_TWO" @489 470 "__const_ZERO" @490 471 "__control87" @491 472 "__core" @492 473 "__crlf" @493 474 "___ctordtorInit1" @494 475 "___ctordtorTerm1" @495 476 "__day" @496 477 "__defext" @497 478 "__dt_free" @498 479 "___dtoa" @499 480 "__dt_read" @500 481 "__dt_sort" @501 482 "__dt_split" @502 483 "___dup" @503 484 "___dup2" @504 485 "__endbuf1" @505 486 "___endthread" @506 487 "__endthread" @507 488 "__envargs" @508 489 "__errno" @509 490 "__errno_fun" @510 491 "__execname" @511 492 "___exit" @512 493 "__exit" @513 494 "__exit_streams" @514 495 "__fassign" @515 496 "__fbuf" @516 497 "__fcloseall" @517 498 "___fcntl" @518 499 "__fflush_nolock" @519 500 "__filesys" @520 501 "__fill" @521 502 "___findfirst" @522 503 "___findnext" @523 504 "__flush" @524 505 "__flushstream" @525 506 "__fmutex_checked_close" @526 507 "__fmutex_checked_create" @527 508 "__fmutex_checked_open" @528 509 "__fmutex_checked_release" @529 510 "__fmutex_checked_request" @530 511 "__fmutex_close" @531 512 "__fmutex_create" @532 513 "__fmutex_dummy" @533 514 "__fmutex_open" @534 515 "___fmutex_release_internal" @535 516 "___fmutex_request_internal" @536 517 "__fnexplode" @537 518 "__fnexplodefree" @538 519 "__fngetdrive" @539 520 "__fnisabs" @540 521 "__fnisrel" @541 522 "__fnlwr" @542 523 "__fnlwr2" @543 524 "__fnslashify" @544 525 "___fork" @545 526 "___fpclassify" @546 527 "___fpclassifyf" @547 528 "___fpclassifyl" @548 529 "__fpreset" @549 530 "__fseek_hdr" @550 531 "__fseek_nolock" @551 532 "__fsetmode" @552 533 "__fsopen" @553 534 "___fstat" @554 535 "__ftell_nolock" @555 536 "___ftime" @556 537 "___ftruncate" @557 538 "__fullpath" @558 539 "__fwrite_nolock" @559 540 "___getcwd" @560 541 "__getcwd1" @561 542 "__getcwd2" @562 543 "__getdrive" @563 544 "__std_getegid" @564 545 "__std_geteuid" @565 546 "__getext" @566 547 "__getext2" @567 548 "__std_getgrgid" @568 549 "__getname" @569 550 "__getpass1" @570 551 "__getpass2" @571 552 "__gettid" @572 553 "__getvol" @573 554 "__glob" @574 555 "__globfree" @575 556 "__gmt2loc" @576 557 "__gmtime" @577 558 "__heapchk" @578 559 "__heapmin" @579 560 "__heapset" @580 561 "__heap_walk" @581 562 "___imphandle" @582 563 "__imphandle" @583 564 "__input" @584 565 "__int86" @585 566 "___ioctl1" @586 567 "___ioctl2" @587 568 "_isalnum" @588 569 "_isalpha" @589 570 "_iscntrl" @590 571 "_isdigit" @591 572 "___isfinite" @592 573 "___isfinitef" @593 574 "___isfinitel" @594 575 "_isgraph" @595 576 "_islower" @596 577 "___isnan" @597 578 "___isnanf" @598 579 "___isnanl" @599 580 "___isnormal" @600 581 "___isnormalf" @601 582 "___isnormall" @602 583 "_isprint" @603 584 "_ispunct" @604 585 "_isspace" @605 586 "__isterm" @606 587 "_isupper" @607 588 "_isxdigit" @608 589 "__libc_16to32" @609 590 "__libc_32to16" @610 591 "__libc_thunk1" @611 592 "__loc2gmt" @612 593 "__localtime" @613 594 "___lseek" @614 595 "__makepath" @615 596 "__memcount" @616 597 "__memdif" @617 598 "__memrchr" @618 599 "__memswap" @619 600 "__mfclose" @620 601 "__mfopen" @621 602 "__mheap" @622 603 "___mkdir" @623 604 "__mktime" @624 605 "__month_day_leap" @625 606 "__month_day_non_leap" @626 607 "__msize" @627 608 "__newstream" @628 609 "___newthread" @629 610 "__nfiles" @630 611 "___open" @631 612 "__openstream" @632 613 "__os2_bad" @633 614 "__output" @634 615 "__path" @635 616 "___pipe" @636 617 "___read" @637 618 "___read_kbd" @638 619 "__read_kbd" @639 620 "__remext" @640 621 "___remove_zeros" @641 622 "__response" @642 623 "__rfnlwr" @643 624 "___rmdir" @644 625 "__rmtmp" @645 626 "__rmutex_checked_close" @646 627 "__rmutex_checked_create" @647 628 "__rmutex_checked_open" @648 629 "__rmutex_close" @649 630 "__rmutex_create" @650 631 "__rmutex_dummy" @651 632 "__rmutex_fork" @652 633 "__rmutex_open" @653 634 "__wildcard" @654 635 "__scrsize" @655 636 "__searchenv" @656 637 "__seek_hdr" @657 638 "___select" @658 639 "__setdummymore" @659 640 "__setmore" @660 641 "___settime" @661 642 "__sfnlwr" @662 643 "_sig_info" @663 644 "__std_siglongjmp" @664 645 "___signbit" @665 646 "___signbitf" @666 647 "___signbitl" @667 648 "__std_sigsetjmp" @668 649 "__sleep2" @669 650 "___small_atod" @670 651 "___small_dtoa" @671 652 "___smutex_request_internal" @672 653 "___spawnve" @673 654 "__splitargs" @674 655 "__splitpath" @675 656 "___stat" @676 657 "__status87" @677 658 "___swchar" @678 659 "__swchar" @679 660 "__sys_deliver_pending_signals" @680 661 "__utmalloc" @681 662 "__sys_dump_heap_objs" @682 663 "__sys_exception" @683 664 "__sys_expand_heap_by" @684 665 "__sys_expand_heap_obj_by" @685 666 "__sys_get_clock" @686 667 "___sys_newthread" @687 668 "__sys_p2t" @688 669 "__sys_set_errno" @689 670 "__sys_shrink_heap_by" @690 671 "__sys_shrink_heap_obj_by" @691 672 "__sys_shrink_heap_to" @692 673 "___wait" @693 674 "__sys_sig_valid" @694 675 "___waitpid" @695 676 "__sys_thread" @696 677 "__vsopen" @697 678 "__tcalloc" @698 679 "__std_tcdrain" @699 680 "__std_tcflow" @700 681 "__std_tcflush" @701 682 "__std_tcgetattr" @702 683 "__std_tcgetpgrp" @703 684 "__std_tcsendbreak" @704 685 "__std_tcsetattr" @705 686 "__std_tcsetpgrp" @706 687 "__std_tempnam" @707 688 "__tfree" @708 689 "__theapmin" @709 690 "__thread" @710 691 "___threadid" @711 692 "__threadstore" @712 693 "___write" @713 694 "__tmpbuf1" @714 695 "__tmpidx_lock" @715 696 "__tmpidxnam" @716 697 "__tmpidx_unlock" @717 698 "_tolower" @718 699 "_toupper" @719 700 "__trealloc" @720 701 "__trslash" @721 702 "___ttyname" @722 703 "__uaddmem" @723 704 "__ucalloc" @724 705 "__uclose" @725 706 "__ucreate" @726 707 "__ucreate2" @727 708 "__udefault" @728 709 "__udestroy" @729 710 "__uflags" @730 711 "__uheapchk" @731 712 "__uheapmin" @732 713 "__uheapset" @733 714 "__uheap_type" @734 715 "__uheap_walk" @735 716 "__uheap_walk2" @736 717 "__uldiv" @737 718 "___ulimit" @738 719 "__um_walk_error" @739 720 "__um_walk_no_lock" @740 721 "__ungetc_nolock" @741 722 "___unwind2" @742 723 "__uopen" @743 724 "__ustats" @744 725 "__utcalloc" @745 726 "__utdefault" @746 727 "___utimes" @747 728 "___convert_codepage" @748 729 "___do_Unicode" @749 730 "___from_ucs" @750 731 "_isascii" @751 732 "___gnu_basename" @752 733 "__std_basename" @753 734 "__std_dirname" @754 735 "__std_lltoa" @755 736 "__std_localeconv" @756 737 "__std_ltoa" @757 738 "__std_setlocale" @758 739 "__std_ulltoa" @759 740 "__std_ultoa" @760 741 "_toascii" @761 742 "___to_ucs" @762 743 "__std_acosl" @763 744 "__std_asinl" @764 745 "__std_atan2l" @765 746 "__std_atanl" @766 747 "__std_ceill" @767 748 "__std_copysign" @768 749 "__std_copysignf" @769 750 "__std_copysignl" @770 751 "__std_coshl" @771 752 "__std_cosl" @772 753 "__std_expl" @773 754 "__std_fabsl" @774 755 "__std_floorl" @775 756 "__std_fmodl" @776 757 "__std_frexpl" @777 758 "__fxam" @778 759 "__fxaml" @779 760 "__std_hypot" @780 761 "__std_hypotl" @781 762 "__std_ldexpl" @782 763 "__std_log10l" @783 764 "__std_logl" @784 765 "__std_modfl" @785 766 "__std_nextafter" @786 767 "__std_nextafterf" @787 768 "__std_nextafterl" @788 769 "__std_powl" @789 770 "__std_rint" @790 771 "__std_rintl" @791 772 "__std_sinhl" @792 773 "__std_sinl" @793 774 "__std_sqrtl" @794 775 "__std_tanhl" @795 776 "__std_tanl" @796 777 "__std_trunc" @797 778 "__std_truncl" @798 779 "__ead_add" @799 780 "__ead_clear" @800 781 "__ead_copy" @801 782 "__ead_count" @802 783 "__ead_create" @803 784 "__ead_delete" @804 785 "__ead_destroy" @805 786 "__ead_enum" @806 787 "__ead_fea2list_size" @807 788 "__ead_fea2list_to_fealist" @808 789 "__ead_fealist_to_fea2list" @809 790 "__ead_find" @810 791 "__ead_get_fea2list" @811 792 "__ead_get_flags" @812 793 "__ead_get_name" @813 794 "__ead_get_value" @814 795 "__ead_make_index" @815 796 "__ead_name_len" @816 797 "__ead_read" @817 798 "__ead_replace" @818 799 "__ead_size_buffer" @819 800 "__ead_sort" @820 801 "__ead_use_fea2list" @821 802 "__ead_value_size" @822 803 "__ead_write" @823 804 "__ea_free" @824 805 "__ea_get" @825 806 "__ea_put" @826 807 "__ea_remove" @827 808 "__ea_set_errno" @828 809 "__ea_write" @829 810 "__std_setenv" @830 811 "__std_unsetenv" @831 812 "__std_lockf" @832 813 "__lmalloc" @833 814 "__std_fseeko" @834 815 "__std_ftello" @835 816 "__std_readdir_r" @836 817 "__std_lstat" @837 818 "_srandomdev" @838 819 "_random" @839 820 "_initstate" @840 821 "_setstate" @841 822 "_srandom" @842 823 "_lchmod" @843 824 "_stpcpy" @844 825 "_strlcat" @845 826 "_strlcpy" @846 827 "_strcasestr" @847 828 "_strnstr" @848 829 "_strsep" @849 830 "_heapsort" @850 831 "_mergesort" @851 832 "_radixsort" @852 833 "_sradixsort" @853 834 "__dorand48" @854 835 "__std_srand48" @855 836 "__std_drand48" @856 837 "__std_erand48" @857 838 "__std_jrand48" @858 839 "__std_lcong48" @859 840 "__std_lrand48" @860 841 "__std_mrand48" @861 842 "__std_nrand48" @862 843 "__std_seed48" @863 844 "__std_qsort_r" @864 845 "__hcalloc" @865 846 "__hinitheap" @866 847 "__hmalloc" @867 848 "__hrealloc" @868 849 "__lcalloc" @869 65 "__CRT_init" @101 66 "__CRT_term" @102 67 "__HUGE_VAL" @103 68 "__LHUGE_VAL" @104 69 "___alloc_thread" @105 70 "___atod" @106 71 "___chdir" @107 72 "___chmod" @108 73 "___chsize" @109 74 "___close" @110 75 "___convert_codepage" @111 76 "___ctordtorInit1" @112 77 "___ctordtorTerm1" @113 78 "___do_Unicode" @114 79 "___dtoa" @115 80 "___dup" @116 81 "___dup2" @117 82 "___endthread" @118 83 "___exit" @119 84 "___fcntl" @120 85 "___findfirst" @121 86 "___findnext" @122 87 "___fmutex_release_internal" @123 88 "___fmutex_request_internal" @124 89 "___fork" @125 90 "___fpclassify" @126 91 "___fpclassifyf" @127 92 "___fpclassifyl" @128 93 "___from_ucs" @129 94 "___fstat" @130 95 "___ftime" @131 96 "___ftruncate" @132 97 "___getcwd" @133 98 "___gnu_basename" @134 99 "___imphandle" @135 100 "___init" @136 101 "___init_app" @137 102 "___init_dll" @138 103 "___initthread" @139 104 "___ioctl1" @140 105 "___ioctl2" @141 106 "___isfinite" @142 107 "___isfinitef" @143 108 "___isfinitel" @144 109 "___isnan" @145 110 "___isnanf" @146 111 "___isnanl" @147 112 "___isnormal" @148 113 "___isnormalf" @149 114 "___isnormall" @150 115 "___libc_FH" @151 116 "___libc_FHAllocate" @152 117 "___libc_FHClose" @153 118 "___libc_FHEnsureHandles" @154 119 "___libc_HasHighMem" @155 120 "___libc_HeapEndVoting" @156 121 "___libc_HeapGetResult" @157 122 "___libc_HeapVote" @158 123 "___libc_HimemDefaultAlloc" @159 124 "___libc_HimemDefaultRelease" @160 125 "___lseek" @161 126 "___mkdir" @162 127 "___newthread" @163 128 "___open" @164 129 "___pipe" @165 130 "___read" @166 131 "___read_kbd" @167 132 "___remove_zeros" @168 133 "___rmdir" @169 134 "___select" @170 135 "___settime" @171 136 "___signbit" @172 137 "___signbitf" @173 138 "___signbitl" @174 139 "___small_atod" @175 140 "___small_dtoa" @176 141 "___smutex_request_internal" @177 142 "___spawnve" @178 143 "___stat" @179 144 "___swchar" @180 145 "___threadid" @181 146 "___to_ucs" @182 147 "___ttyname" @183 148 "___ulimit" @184 149 "___unwind2" @185 150 "___utimes" @186 151 "___wait" @187 152 "___waitpid" @188 153 "___write" @189 154 "__abspath" @190 155 "__assert" @191 156 "__beginthread" @192 157 "__bi_add_bb" @193 158 "__bi_cmp_bb" @194 159 "__bi_cmp_pow2" @195 160 "__bi_div_add_back" @196 161 "__bi_div_estimate" @197 162 "__bi_div_rem_bb" @198 163 "__bi_div_rem_bw" @199 164 "__bi_div_rem_pow2" @200 165 "__bi_div_subtract" @201 166 "__bi_fls" @202 167 "__bi_hdiv_rem_b" @203 168 "__bi_mul_bb" @204 169 "__bi_mul_bw" @205 170 "__bi_pow5" @206 171 "__bi_set_b" @207 172 "__bi_set_d" @208 173 "__bi_set_w" @209 174 "__bi_shl_b" @210 175 "__bi_shl_w" @211 176 "__bi_shr_b" @212 177 "__bi_sub_mul_bw" @213 178 "__bi_wdiv_rem_pow2" @214 179 "__chdir2" @215 180 "__clear87" @216 181 "__closestream" @217 182 "__compute_dst_table" @218 183 "__const_HALF" @219 184 "__const_M_ONE" @220 185 "__const_NAN" @221 186 "__const_ONE" @222 187 "__const_TWO" @223 188 "__const_ZERO" @224 189 "__control87" @225 190 "__core" @226 191 "__crlf" @227 192 "__day" @228 193 "__defext" @229 194 "__dorand48" @230 195 "__dt_free" @231 196 "__dt_read" @232 197 "__dt_sort" @233 198 "__dt_split" @234 199 "__ea_free" @235 200 "__ea_get" @236 201 "__ea_put" @237 202 "__ea_remove" @238 203 "__ea_set_errno" @239 204 "__ea_write" @240 205 "__ead_add" @241 206 "__ead_clear" @242 207 "__ead_copy" @243 208 "__ead_count" @244 209 "__ead_create" @245 210 "__ead_delete" @246 211 "__ead_destroy" @247 212 "__ead_enum" @248 213 "__ead_fea2list_size" @249 214 "__ead_fea2list_to_fealist" @250 215 "__ead_fealist_to_fea2list" @251 216 "__ead_find" @252 217 "__ead_get_fea2list" @253 218 "__ead_get_flags" @254 219 "__ead_get_name" @255 220 "__ead_get_value" @256 221 "__ead_make_index" @257 222 "__ead_name_len" @258 223 "__ead_read" @259 224 "__ead_replace" @260 225 "__ead_size_buffer" @261 226 "__ead_sort" @262 227 "__ead_use_fea2list" @263 228 "__ead_value_size" @264 229 "__ead_write" @265 230 "__emxload_connect" @266 231 "__emxload_disconnect" @267 232 "__emxload_do_connect" @268 233 "__emxload_do_disconnect" @269 234 "__emxload_do_receive" @270 235 "__emxload_do_request" @271 236 "__emxload_do_wait" @272 237 "__emxload_env" @273 238 "__emxload_list_get" @274 239 "__emxload_list_start" @275 240 "__emxload_prog" @276 241 "__emxload_request" @277 242 "__emxload_stop" @278 243 "__emxload_this" @279 244 "__emxload_unload" @280 245 "__endbuf1" @281 246 "__endthread" @282 247 "__envargs" @283 248 "__errno" @284 249 "__errno_fun" @285 250 "__execname" @286 251 "__exit" @287 252 "__exit_streams" @288 253 "__fassign" @289 254 "__fbuf" @290 255 "__fcloseall" @291 256 "__fflush_nolock" @292 257 "__filesys" @293 258 "__fill" @294 259 "__flush" @295 260 "__flushstream" @296 261 "__fmutex_checked_close" @297 262 "__fmutex_checked_create" @298 263 "__fmutex_checked_open" @299 264 "__fmutex_checked_release" @300 265 "__fmutex_checked_request" @301 266 "__fmutex_close" @302 267 "__fmutex_create" @303 268 "__fmutex_dummy" @304 269 "__fmutex_open" @305 270 "__fnexplode" @306 271 "__fnexplodefree" @307 272 "__fngetdrive" @308 273 "__fnisabs" @309 274 "__fnisrel" @310 275 "__fnlwr" @311 276 "__fnlwr2" @312 277 "__fnslashify" @313 278 "__fpreset" @314 279 "__fseek_hdr" @315 280 "__fseek_nolock" @316 281 "__fsetmode" @317 282 "__fsopen" @318 283 "__ftell_nolock" @319 284 "__fullpath" @320 285 "__fwrite_nolock" @321 286 "__fxam" @322 287 "__fxaml" @323 288 "__getcwd1" @324 289 "__getcwd2" @325 290 "__getdrive" @326 291 "__getext" @327 292 "__getext2" @328 293 "__getname" @329 294 "__getpass1" @330 295 "__getpass2" @331 296 "__gettid" @332 297 "__getvol" @333 298 "__std_glob" @334 299 "__std_globfree" @335 300 "__gmt2loc" @336 301 "__gmtime" @337 302 "__hcalloc" @338 303 "__heap_walk" @339 304 "__heapchk" @340 305 "__heapmin" @341 306 "__heapset" @342 307 "__hinitheap" @343 308 "__hmalloc" @344 309 "__hrealloc" @345 310 "__imphandle" @346 311 "__init1_tmp" @347 312 "__init_streams" @348 313 "__input" @349 314 "__int86" @350 315 "__isterm" @351 316 "__lcalloc" @352 317 "__libc_16to32" @353 318 "__libc_32to16" @354 319 "__libc_thunk1" @355 320 "__linitheap" @356 321 "__lmalloc" @357 322 "__loc2gmt" @358 323 "__localtime" @359 324 "__lrealloc" @360 325 "__makepath" @361 326 "__memcount" @362 327 "__memdif" @363 328 "__memrchr" @364 329 "__memswap" @365 330 "__mfclose" @366 331 "__mfopen" @367 332 "__mheap" @368 333 "__mktime" @369 334 "__month_day_leap" @370 335 "__month_day_non_leap" @371 336 "__msize" @372 337 "__newstream" @373 338 "__openstream" @374 339 "__os2_bad" @375 340 "__output" @376 341 "__path" @377 342 "__read_kbd" @378 343 "__remext" @379 344 "__response" @380 345 "__rfnlwr" @381 346 "__rmtmp" @382 347 "__rmutex_checked_close" @383 348 "__rmutex_checked_create" @384 349 "__rmutex_checked_open" @385 350 "__rmutex_close" @386 351 "__rmutex_create" @387 352 "__rmutex_dummy" @388 353 "__rmutex_fork" @389 354 "__rmutex_open" @390 355 "__scrsize" @391 356 "__searchenv" @392 357 "__seek_hdr" @393 358 "__setdummymore" @394 359 "__setmore" @395 360 "__sfnlwr" @396 361 "__sleep2" @397 362 "__splitargs" @398 363 "__splitpath" @399 364 "__status87" @400 365 "__std_abort" @401 366 "__std_abs" @402 367 "__std_access" @403 368 "__std_acos" @404 369 "__std_acosl" @405 370 "__std_asctime" @406 371 "__std_asin" @407 372 "__std_asinl" @408 373 "__std_atan" @409 374 "__std_atan2" @410 375 "__std_atan2l" @411 376 "__std_atanl" @412 377 "__std_atexit" @413 378 "__std_atof" @414 379 "__std_atofl" @415 380 "__std_atoi" @416 381 "__std_atol" @417 382 "__std_atoll" @418 383 "__std_basename" @419 384 "__std_bcmp" @420 385 "__std_bcopy" @421 386 "__std_brk" @422 387 "__std_bsearch" @423 388 "__std_bzero" @424 389 "__std_calloc" @425 390 "__std_cbrt" @426 391 "__std_cbrtl" @427 392 "__std_ceil" @428 393 "__std_ceill" @429 394 "__std_cfgetispeed" @430 395 "__std_cfgetospeed" @431 396 "__std_cfsetispeed" @432 397 "__std_cfsetospeed" @433 398 "__std_cfsetspeed" @434 399 "__std_chdir" @435 400 "__std_chdrive" @436 401 "__std_chmod" @437 402 "__std_chsize" @438 403 "__std_clearerr" @439 404 "__std_clock" @440 405 "__std_close" @441 406 "__std_closedir" @442 407 "__std_copysign" @443 408 "__std_copysignf" @444 409 "__std_copysignl" @445 410 "__std_cos" @446 411 "__std_cosh" @447 412 "__std_coshl" @448 413 "__std_cosl" @449 414 "__std_creat" @450 415 "__std_ctime" @451 416 "__std_cuserid" @452 417 "__std_difftime" @453 418 "__std_dirname" @454 419 "__std_div" @455 420 "__std_drand48" @456 421 "__std_dup" @457 422 "__std_dup2" @458 423 "__std_endpwent" @459 424 "__std_eof" @460 425 "__std_erand48" @461 426 "__std_execl" @462 427 "__std_execle" @463 428 "__std_execlp" @464 429 "__std_execlpe" @465 430 "__std_execv" @466 431 "__std_execve" @467 432 "__std_execvp" @468 433 "__std_execvpe" @469 434 "__std_exit" @470 435 "__std_exp" @471 436 "__std_expand" @472 437 "__std_expl" @473 438 "__std_fabs" @474 439 "__std_fabsl" @475 440 "__std_fclose" @476 441 "__std_fcntl" @477 442 "__std_fdopen" @478 443 "__std_feof" @479 444 "__std_ferror" @480 445 "__std_fflush" @481 446 "__std_ffs" @482 447 "__std_fgetc" @483 448 "__std_fgetchar" @484 449 "__std_fgetpos" @485 450 "__std_fgets" @486 451 "__std_filelength" @487 452 "__std_fileno" @488 453 "__std_flock" @489 454 "__std_floor" @490 455 "__std_floorl" @491 456 "__std_flushall" @492 457 "__std_fmod" @493 458 "__std_fmodl" @494 459 "__std_fnmatch" @495 460 "__std_fopen" @496 461 "__std_fork" @497 462 "__std_fpathconf" @498 463 "__std_fprintf" @499 464 "__std_fputc" @500 465 "__std_fputchar" @501 466 "__std_fputs" @502 467 "__std_fread" @503 468 "__std_free" @504 469 "__std_freopen" @505 470 "__std_frexp" @506 471 "__std_frexpl" @507 472 "__std_fscanf" @508 473 "__std_fseek" @509 474 "__std_fseeko" @510 475 "__std_fsetpos" @511 476 "__std_fstat" @512 477 "__std_fsync" @513 478 "__std_ftell" @514 479 "__std_ftello" @515 480 "__std_ftime" @516 481 "__std_ftruncate" @517 482 "__std_ftw" @518 483 "__std_fwrite" @519 484 "__std_gcvt" @520 485 "__std_getchar" @521 486 "__std_getcwd" @522 487 "__std_getegid" @523 488 "__std_getenv" @524 489 "__std_geteuid" @525 490 "__std_getgid" @526 491 "__std_getgrgid" @527 492 "__std_getgrnam" @528 493 "__std_getgroups" @529 494 "__std_getlogin" @530 495 "__std_getopt" @531 496 "__std_getpagesize" @532 497 "__std_getpass" @533 498 "__std_getpgrp" @534 499 "__std_getpid" @535 500 "__std_getppid" @536 501 "__std_getpw" @537 502 "__std_getpwent" @538 503 "__std_getpwnam" @539 504 "__std_getpwuid" @540 505 "__std_gets" @541 506 "__std_gettimeofday" @542 507 "__std_getuid" @543 508 "__std_getw" @544 509 "__std_getwd" @545 510 "__std_gmtime" @546 511 "__std_hypot" @547 512 "__std_hypotl" @548 513 "__std_index" @549 514 "__std_ioctl" @550 515 "__std_isatty" @551 516 "__std_jrand48" @552 517 "__std_kill" @553 518 "__std_labs" @554 519 "__std_lcong48" @555 520 "__std_ldexp" @556 521 "__std_ldexpl" @557 522 "__std_ldiv" @558 523 "__std_lltoa" @559 524 "__std_localeconv" @560 525 "__std_localtime" @561 526 "__std_lockf" @562 527 "__std_log" @563 528 "__std_log10" @564 529 "__std_log10l" @565 530 "__std_logl" @566 531 "__std_longjmp" @567 532 "__std_lrand48" @568 533 "__std_lseek" @569 534 "__std_lstat" @570 535 "__std_ltoa" @571 536 "__std_malloc" @572 537 "__std_mblen" @573 538 "__std_mbstowcs" @574 539 "__std_mbtowc" @575 540 "__std_memccpy" @576 541 "__std_memchr" @577 542 "__std_memcmp" @578 543 "__std_memcpy" @579 544 "__std_memicmp" @580 545 "__std_memmove" @581 546 "__std_memset" @582 547 "__std_mkdir" @583 548 "__std_mkstemp" @584 549 "__std_mktemp" @585 550 "__std_mktime" @586 551 "__std_modf" @587 552 "__std_modfl" @588 553 "__std_mrand48" @589 554 "__std_nextafter" @590 555 "__std_nextafterf" @591 556 "__std_nextafterl" @592 557 "__std_nrand48" @593 558 "__std_open" @594 559 "__std_opendir" @595 560 "__std_pathconf" @596 561 "__std_pause" @597 562 "__std_pclose" @598 563 "__std_perror" @599 564 "__std_pipe" @600 565 "__std_popen" @601 566 "__std_posix_memalign" @602 567 "__std_pow" @603 568 "__std_powl" @604 569 "__std_printf" @605 570 "__std_putchar" @606 571 "__std_putenv" @607 572 "__std_puts" @608 573 "__std_putw" @609 574 "__std_qsort" @610 575 "__std_qsort_r" @611 576 "__std_raise" @612 577 "__std_rand" @613 578 "__std_read" @614 579 "__std_readdir" @615 580 "__std_readdir_r" @616 581 "__std_readv" @617 582 "__std_realloc" @618 583 "__std_remove" @619 584 "__std_rename" @620 585 "__std_rewind" @621 586 "__std_rewinddir" @622 587 "__std_rindex" @623 588 "__std_rint" @624 589 "__std_rintl" @625 590 "__std_rmdir" @626 591 "__std_sbrk" @627 592 "__std_scanf" @628 593 "__std_seed48" @629 594 "__std_seekdir" @630 595 "__std_select" @631 596 "__std_setbuf" @632 597 "__std_setbuffer" @633 598 "__std_setenv" @634 599 "__std_setgid" @635 600 "__std_setjmp" @636 601 "__std_setlocale" @637 602 "__std_setmode" @638 603 "__std_setpgid" @639 604 "__std_setpwent" @640 605 "__std_setsid" @641 606 "__std_settimeofday" @642 607 "__std_setuid" @643 608 "__std_setvbuf" @644 609 "__std_sigaction" @645 610 "__std_sigaddset" @646 611 "__std_sigdelset" @647 612 "__std_sigemptyset" @648 613 "__std_sigfillset" @649 614 "__std_sigismember" @650 615 "__std_siglongjmp" @651 616 "__std_signal" @652 617 "__std_sigpending" @653 618 "__std_sigprocmask" @654 619 "__std_sigsetjmp" @655 620 "__std_sigsuspend" @656 621 "__std_sin" @657 622 "__std_sinh" @658 623 "__std_sinhl" @659 624 "__std_sinl" @660 625 "__std_sleep" @661 626 "__std_snprintf" @662 627 "__std_sopen" @663 628 "__std_spawnl" @664 629 "__std_spawnle" @665 630 "__std_spawnlp" @666 631 "__std_spawnlpe" @667 632 "__std_spawnv" @668 633 "__std_spawnve" @669 634 "__std_spawnvp" @670 635 "__std_spawnvpe" @671 636 "__std_sprintf" @672 637 "__std_sqrt" @673 638 "__std_sqrtl" @674 639 "__std_srand" @675 640 "__std_srand48" @676 641 "__std_sscanf" @677 642 "__std_stat" @678 643 "__std_strcat" @679 644 "__std_strchr" @680 645 "__std_strcmp" @681 646 "__std_strcoll" @682 647 "__std_strcpy" @683 648 "__std_strcspn" @684 649 "__std_strdup" @685 650 "__std_strerror" @686 651 "__std_strftime" @687 652 "__std_stricmp" @688 653 "__std_strlen" @689 654 "__std_strlwr" @690 655 "__std_strncat" @691 656 "__std_strncmp" @692 657 "__std_strncpy" @693 658 "__std_strnicmp" @694 659 "__std_strnset" @695 660 "__std_strpbrk" @696 661 "__std_strptime" @697 662 "__std_strrchr" @698 663 "__std_strrev" @699 664 "__std_strset" @700 665 "__std_strspn" @701 666 "__std_strstr" @702 667 "__std_strtod" @703 668 "__std_strtof" @704 669 "__std_strtok" @705 670 "__std_strtol" @706 671 "__std_strtold" @707 672 "__std_strtoll" @708 673 "__std_strtoul" @709 674 "__std_strtoull" @710 675 "__std_strupr" @711 676 "__std_strxfrm" @712 677 "__std_swab" @713 678 "__std_sys_errlist" @714 679 "__std_sys_nerr" @715 680 "__std_sysconf" @716 681 "__std_system" @717 682 "__std_tan" @718 683 "__std_tanh" @719 684 "__std_tanhl" @720 685 "__std_tanl" @721 686 "__std_tcdrain" @722 687 "__std_tcflow" @723 688 "__std_tcflush" @724 689 "__std_tcgetattr" @725 690 "__std_tcgetpgrp" @726 691 "__std_tcsendbreak" @727 692 "__std_tcsetattr" @728 693 "__std_tcsetpgrp" @729 694 "__std_tell" @730 695 "__std_telldir" @731 696 "__std_tempnam" @732 697 "__std_time" @733 698 "__std_times" @734 699 "__std_tmpfile" @735 700 "__std_tmpnam" @736 701 "__std_trunc" @737 702 "__std_truncate" @738 703 "__std_truncl" @739 704 "__std_ttyname" @740 705 "__std_tzset" @741 706 "__std_ulimit" @742 707 "__std_ulltoa" @743 708 "__std_ultoa" @744 709 "__std_umask" @745 710 "__std_uname" @746 711 "__std_ungetc" @747 712 "__std_unlink" @748 713 "__std_unsetenv" @749 714 "__std_utime" @750 715 "__std_utimes" @751 716 "__std_vfprintf" @752 717 "__std_vfscanf" @753 718 "__std_vprintf" @754 719 "__std_vscanf" @755 720 "__std_vsnprintf" @756 721 "__std_vsprintf" @757 722 "__std_vsscanf" @758 723 "__std_wait" @759 724 "__std_waitpid" @760 725 "__std_wcstombs" @761 726 "__std_wctomb" @762 727 "__std_write" @763 728 "__std_writev" @764 729 "__stream_read" @765 730 "__stream_write" @766 731 "__strncpy" @767 732 "__swchar" @768 733 "__sys_dump_heap_objs" @769 734 "__sys_exception" @770 735 "__tcalloc" @771 736 "__tfree" @772 737 "__theapmin" @773 738 "__thread" @774 739 "__threadstore" @775 740 "__tmalloc" @776 741 "__tmpbuf1" @777 742 "__tmpidx_lock" @778 743 "__tmpidx_unlock" @779 744 "__tmpidxnam" @780 745 "__trealloc" @781 746 "__trslash" @782 747 "__uaddmem" @783 748 "__ucalloc" @784 749 "__uclose" @785 750 "__ucreate" @786 751 "__ucreate2" @787 752 "__udefault" @788 753 "__udestroy" @789 754 "__uflags" @790 755 "__uheap_type" @791 756 "__uheap_walk" @792 757 "__uheap_walk2" @793 758 "__uheapchk" @794 759 "__uheapmin" @795 760 "__uheapset" @796 761 "__uldiv" @797 762 "__um_addmem_nolock" @798 763 "__um_alloc_no_lock" @799 764 "__um_crumb_free_maybe_lock" @800 765 "__um_default_alloc" @801 766 "__um_default_expand" @802 767 "__um_default_release" @803 768 "__um_default_shrink" @804 769 "__um_find_bucket" @805 770 "__um_free_maybe_lock" @806 771 "__um_init_default_regular_heap" @807 772 "__um_init_default_tiled_heap" @808 773 "__um_lump_alloc" @809 774 "__um_lump_coalesce_free" @810 775 "__um_lump_free_maybe_lock" @811 776 "__um_lump_link_heap" @812 777 "__um_lump_make_free" @813 778 "__um_lump_unlink_bucket" @814 779 "__um_lump_unlink_heap" @815 780 "__um_realloc" @816 781 "__um_seg_addmem" @817 782 "__um_seg_setmem" @818 783 "__um_walk_error" @819 784 "__um_walk_no_lock" @820 785 "__umalloc" @821 786 "__ungetc_nolock" @822 787 "__uopen" @823 788 "__ustats" @824 789 "__utcalloc" @825 790 "__utdefault" @826 791 "__utmalloc" @827 792 "__vsopen" @828 793 "__wildcard" @829 794 "__year_day" @830 795 "_heapsort" @831 796 "_initstate" @832 797 "_isalnum" @833 798 "_isalpha" @834 799 "_isascii" @835 800 "_iscntrl" @836 801 "_isdigit" @837 802 "_isgraph" @838 803 "_islower" @839 804 "_isprint" @840 805 "_ispunct" @841 806 "_isspace" @842 807 "_isupper" @843 808 "_isxdigit" @844 809 "_lchmod" @845 810 "_mergesort" @846 811 "_radixsort" @847 812 "_random" @848 813 "_setstate" @849 814 "_sig_info" @850 815 "_sradixsort" @851 816 "_srandom" @852 817 "_srandomdev" @853 818 "_stpcpy" @854 819 "_strcasestr" @855 820 "_strlcat" @856 821 "_strlcpy" @857 822 "_strnstr" @858 823 "_strsep" @859 824 "_toascii" @860 825 "_tolower" @861 826 "_toupper" @862 827 "___collate_range_cmp" @863 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/startup/startup.c
-
Property cvs2svn:cvs-rev
changed from
1.6to1.7
r870 r871 10 10 #include <emx/startup.h> 11 11 12 12 13 /* See app/iodata.c. */ 13 14 … … 15 16 extern int _files[]; 16 17 extern int _lookahead[]; 18 17 19 18 20 extern int __crtinit1__; … … 34 36 startup_flag = 1; 35 37 38 36 39 /* Initialize the file handles. */ 37 40 init_files (); 41 38 42 39 43 /* Initialize streams etc. if required. */ … … 51 55 52 56 57 53 58 /* Initialize the file handles. */ 54 59 … … 99 104 } 100 105 } 101 106 #endif 102 107 103 108 … … 121 126 * heap (or low if no high mem) when calling _hmalloc(). 122 127 * - __init_dll calls __init_environ() which initializes environ and _org_environ. 128 129 130 131 132 123 133 * - __init_dll then intializes _sys_clock0_ms with the current MS count. 124 134 * - dll0.s calls _DLL_InitTerm in startup/dllinit.c. -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__chsize.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 6 6 #include "libc-alias.h" 7 7 #define INCL_FSMACROS 8 8 9 #include <os2emx.h> 9 10 #include <emx/syscalls.h> 11 10 12 #include <limits.h> 11 13 #include <errno.h> … … 13 15 14 16 15 int __chsize (int hFile, __off_t cbFile)17 int __chsize, __off_t cbFile) 16 18 { 17 ULONG rc;18 FS_VAR();19 ; 20 ; 19 21 20 FS_SAVE_LOAD(); 22 /* 23 * Get filehandle. 24 */ 25 pFH = __libc_FH(fh); 26 if (!pFH) 27 { 28 errno = EBADF; 29 return -1; 30 } 31 32 /* 33 * Do the stuff. 34 */ 35 if (!pFH->pOps) 36 { 37 FS_VAR(); 38 FS_SAVE_LOAD(); 21 39 #if OFF_MAX > LONG_MAX 22 if (__pfnDosSetFileSizeL) 23 rc = __pfnDosSetFileSizeL(hFile, cbFile); 40 if (__pfnDosSetFileSizeL) 41 rc = __pfnDosSetFileSizeL(fh, cbFile); 42 else 43 { 44 if (cbFile > LONG_MAX) 45 { 46 FS_RESTORE(); 47 errno = EOVERFLOW; 48 return -1; 49 } 50 rc = DosSetFileSize(fh, cbFile); 51 } 52 #else 53 rc = DosSetFileSize(fh, cbFile); 54 #endif 55 FS_RESTORE(); 56 } 24 57 else 25 58 { 26 if (cbFile > LONG_MAX) 27 { 28 errno = EOVERFLOW; 29 return -1; 30 } 31 rc = DosSetFileSize(hFile, cbFile); 59 /** not supported for non native filehandles. */ 60 rc = ERROR_INVALID_FUNCTION; 32 61 } 33 #else34 rc = DosSetFileSize(hFile, cbFile);35 #endif36 FS_RESTORE();37 62 63 64 65 38 66 if (rc) 39 67 { -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__close.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* sys/close.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/close.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 #define INCL_FSMACROS 5 #include <os2emx.h> 5 #include <emx/io.h> 6 6 #include <emx/syscalls.h> 7 #include "syscalls.h"8 7 9 int __close (int handle)8 int __close) 10 9 { 11 ULONG rc; 12 FS_VAR() 13 14 FS_SAVE_LOAD(); 15 rc = DosClose (handle); 16 FS_RESTORE(); 17 if (rc == 0) 18 return 0; 19 else 20 { 21 _sys_set_errno (rc); 22 return -1; 23 } 10 if (!__libc_FHClose(fh)) 11 return -0; 12 return -1; 24 13 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__dup.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* sys/dup.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/dup.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #define INCL_FSMACROS 5 6 #include <os2emx.h> 7 8 6 9 #include <emx/syscalls.h> 7 10 #include "syscalls.h" 8 11 9 int __dup (int handle)12 int __dup) 10 13 { 11 ULONG rc;12 HFILEhNew;13 FS_VAR();14 ; 15 hNew; 16 ; 14 17 15 hNew = 0xffffffff;16 FS_SAVE_LOAD();17 rc = DosDupHandle (handle, &hNew);18 FS_RESTORE();19 if (rc != 0)18 19 20 21 ); 22 ) 20 23 { 21 _sys_set_errno (rc);22 return -1;24 ; 25 return -1; 23 26 } 24 return hNew; 27 28 /* 29 * Choose path. 30 */ 31 if (!pFH->pOps) 32 { 33 HFILE hNew = ~0; 34 FS_VAR(); 35 FS_SAVE_LOAD(); 36 rc = DosDupHandle(fh, &hNew); 37 FS_RESTORE(); 38 fhNew = (int)hNew; 39 if (!rc) 40 { 41 PLIBCFH pFHNew; 42 rc = __libc_FHAllocate(hNew, pFH->fFlags, sizeof(LIBCFH), NULL, &pFHNew, NULL); 43 if (!rc) 44 { 45 pFHNew->fFlags = pFH->fFlags; 46 pFHNew->iLookAhead = pFH->iLookAhead; 47 } 48 else 49 DosClose(hNew); 50 } 51 } 52 else 53 { 54 fhNew = -1; /* any handle */ 55 rc = pFH->pOps->pfnDuplicate(pFH, fh, &fhNew); 56 } 57 58 /* 59 * Done. 60 */ 61 if (rc != 0) 62 { 63 _sys_set_errno(rc); 64 return -1; 65 } 66 return fhNew; 25 67 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__dup2.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* sys/dup2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/dup2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #define INCL_FSMACROS 5 6 #include <os2emx.h> 7 6 8 #include <emx/syscalls.h> 9 7 10 #include "syscalls.h" 8 11 9 int __dup2 (int handle1, int handle2)12 int __dup2) 10 13 { 11 ULONG rc, state;12 HFILE hNew;13 FS_VAR();14 ; 15 New; 16 ; 14 17 15 hNew = handle2; 16 FS_SAVE_LOAD(); 17 if (handle1 == handle2) 18 rc = DosQueryFHState (handle1, &state); /* Check HANDLE */ 19 else 20 rc = DosDupHandle (handle1, &hNew); 21 FS_RESTORE(); 22 if (rc != 0) 18 /* 19 * Validate the two handles. 20 * (Specs saith fhNew must not be below zero.) 21 */ 22 if ( fhNew < 0 23 || !(pFH = __libc_FH(fh))) 23 24 { 24 _sys_set_errno (rc);25 return -1;25 ; 26 return -1; 26 27 } 27 return hNew; 28 29 /* 30 * If the two filehandles are the same, then just 31 * check that it's still around and return accordingly. 32 */ 33 if (fhNew == fh) 34 { 35 ULONG ulState; 36 FS_VAR(); 37 FS_SAVE_LOAD(); 38 rc = 0; 39 if (!pFH->pOps) 40 rc = DosQueryFHState(fh, &ulState); 41 FS_RESTORE(); 42 if (rc) 43 { 44 _sys_set_errno(rc); 45 return -1; 46 } 47 return fhNew; 48 } 49 50 /* 51 * Ensure the specified handle is within the bounds 52 * of the number of filehandles this process can open. 53 * (Specs saith so, and others say OS/2 may crash if fhNew is out of range.) 54 */ 55 rc = __libc_FHEnsureHandles(fhNew); 56 if (rc) 57 { 58 _sys_set_errno(rc); 59 return -1; 60 } 61 62 /* 63 * If fhNew exists and is not of the OS/2 native 64 * file handle type, we'll close it here. 65 */ 66 pFHNew = __libc_FH(fhNew); 67 if (pFHNew && pFHNew->pOps) 68 { 69 rc = __libc_FHClose(fhNew); 70 if (rc) 71 return -1; /* it sets errno */ 72 } 73 74 /* 75 * Do the stuff. 76 */ 77 if (!pFH->pOps) 78 { 79 HFILE hNew = fhNew; 80 FS_VAR(); 81 82 FS_SAVE_LOAD(); 83 rc = DosDupHandle(fh, &hNew); 84 if (!rc) 85 { 86 PLIBCFH pFHNew; 87 rc = __libc_FHAllocate(hNew, pFH->fFlags, sizeof(LIBCFH), NULL, &pFHNew, NULL); 88 if (!rc) 89 { 90 pFHNew->fFlags = pFH->fFlags; 91 pFHNew->iLookAhead = pFH->iLookAhead; 92 } 93 else 94 DosClose(hNew); 95 } 96 FS_RESTORE(); 97 } 98 else 99 rc = pFH->pOps->pfnDuplicate(pFH, fh, &fhNew); 100 101 /* 102 * Done 103 */ 104 if (rc) 105 { 106 _sys_set_errno(rc); 107 return -1; 108 } 109 return fhNew; 28 110 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__fcntl.c
-
Property cvs2svn:cvs-rev
changed from
1.6to1.7
r870 r871 1 /* sys/fcntl.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/fcntl.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 9 10 #define INCL_FSMACROS 10 11 #include <os2emx.h> 12 11 13 #include <emx/syscalls.h> 12 14 #include "syscalls.h" … … 14 16 static int __fcntl_locking(int handle, int request, struct flock *pflock); 15 17 16 int __fcntl (int handle, int request, int arg)18 int __fcntl(int handle, int request, int arg) 17 19 { 18 ULONG rc; 19 ULONG state, new_state; 20 FS_VAR(); 21 22 switch (request) 23 { 24 case F_SETFL: 25 return 0; 26 case F_GETFD: 27 FS_SAVE_LOAD(); 28 rc = DosQueryFHState (handle, &state); 29 FS_RESTORE(); 30 if (rc != 0) 31 { 32 _sys_set_errno (rc); 33 return -1; 34 } 35 return ((state & OPEN_FLAGS_NOINHERIT) ? 1 : 0); 36 case F_SETFD: 37 FS_SAVE_LOAD(); 38 rc = DosQueryFHState (handle, &state); 39 FS_RESTORE(); 40 if (rc != 0) 41 { 42 _sys_set_errno (rc); 43 return -1; 44 } 45 if (arg & 1) 46 new_state = state | OPEN_FLAGS_NOINHERIT; 47 else 48 new_state = state & ~OPEN_FLAGS_NOINHERIT; 49 if (new_state != state) 50 { 51 new_state &= 0x7f88; 52 FS_SAVE_LOAD(); 53 rc = DosSetFHState (handle, new_state); 54 FS_RESTORE(); 55 if (rc != 0) 56 { 57 _sys_set_errno (rc); 58 return -1; 59 } 60 } 61 return 0; 62 63 case F_GETLK: /* get record locking information */ 64 case F_SETLK: /* set record locking information */ 65 case F_SETLKW: /* F_SETLK; wait if blocked */ 66 return __fcntl_locking(handle, request, (struct flock*)arg); 67 68 default: 69 errno = EINVAL; 70 return -1; 20 ULONG rc; 21 ULONG fulState; 22 PLIBCFH pFH; 23 FS_VAR(); 24 25 /* 26 * Get the file handle data. 27 */ 28 pFH = __libc_FH(handle); 29 if (!pFH) 30 { 31 errno = EBADF; 32 return -1; 33 } 34 35 if (!pFH->pOps) 36 { 37 /* 38 * Standard OS/2 File handle. 39 */ 40 switch (request) 41 { 42 /* 43 * Get file status flags and access modes. 44 */ 45 case F_GETFL: 46 return pFH->fFlags & (O_ACCMODE | O_APPEND | O_NONBLOCK | O_SYNC /*| O_*SYNC*/); 47 48 /* 49 * Set file status flags. 50 */ 51 case F_SETFL: 52 /** @todo implement this properly. See FCNTLFLAGS. */ 53 return 0; 54 55 /* 56 * Get file descriptor flags. 57 * (At the moment FD_CLOEXEC is the only flag.) 58 */ 59 case F_GETFD: 60 FS_SAVE_LOAD(); 61 rc = DosQueryFHState(handle, &fulState); 62 FS_RESTORE(); 63 if (rc != 0) 64 { 65 _sys_set_errno(rc); 66 return -1; 67 } 68 return ((fulState & OPEN_FLAGS_NOINHERIT) ? FD_CLOEXEC : 0); 69 70 /* 71 * Set file descriptor flags. 72 * (At the moment FD_CLOEXEC is the only flag.) 73 */ 74 case F_SETFD: 75 FS_SAVE_LOAD(); 76 rc = DosQueryFHState(handle, &fulState); 77 if (!rc) 78 { 79 ULONG fulNewState; 80 if (arg & FD_CLOEXEC) 81 fulNewState = fulState | OPEN_FLAGS_NOINHERIT; 82 else 83 fulNewState = fulState & ~OPEN_FLAGS_NOINHERIT; 84 if (fulNewState != fulState) 85 { 86 fulNewState &= 0x7f88; /* Mask the flags accepted the API. */ 87 rc = DosSetFHState(handle, fulNewState); 88 } 89 } 90 FS_RESTORE(); 91 if (rc) 92 { 93 _sys_set_errno (rc); 94 return -1; 95 } 96 return 0; 97 98 /* 99 * File locking. 100 */ 101 case F_GETLK: /* get record locking information */ 102 case F_SETLK: /* set record locking information */ 103 case F_SETLKW: /* F_SETLK; wait if blocked */ 104 return __fcntl_locking(handle, request, (struct flock*)arg); 105 106 default: 107 errno = EINVAL; 108 return -1; 109 } 110 } 111 else 112 { 113 /* 114 * Non-standard handle - call registered method. 115 */ 116 int rcRet = 0; 117 rc = pFH->pOps->pfnFileControl(pFH, handle, request, arg, &rcRet); 118 if (rc) 119 { 120 _sys_set_errno(rc); 121 return -1; 122 } 123 return rcRet; 71 124 } 72 125 } … … 78 131 it's take from elsewhere. */ 79 132 80 static int __fcntl_locking (int hFile, int request, struct flock *pflock)133 static int __fcntl_locking(int hFile, int request, struct flock *pflock) 81 134 { 82 135 APIRET rc; … … 140 193 } 141 194 if ( offStart < 0 142 || cbRange + offStart < 0 )195 || cbRange + offStart < 0) 143 196 { 144 197 errno = EINVAL; … … 195 248 && ( cbRange > LONG_MAX 196 249 || offStart + cbRange > LONG_MAX) 197 )198 )199 {250 ) 251 ) 252 { 200 253 errno = EOVERFLOW; 201 254 return -1; 202 }255 } 203 256 #endif 204 257 memset(&aflock[(fLock + 1) & 1], 0, sizeof(aflock[0])); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__fstat.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 7 7 #include <os2emx.h> 8 8 #include <string.h> 9 9 10 #include <sys/types.h> 10 11 #include <sys/stat.h> 12 11 13 #include <emx/syscalls.h> 12 14 #include "syscalls.h" … … 14 16 int __fstat(int hFile, struct stat *pStat) 15 17 { 16 ULONG rc; 17 ULONG ulType; 18 ULONG flFlags; 18 ULONG rc; 19 ULONG ulType; 20 ULONG flFlags; 21 PLIBCFH pFH; 19 22 FS_VAR(); 20 23 21 24 /* 22 * Use query handle type to figure out the file type.25 * e. 23 26 */ 24 memset(pStat, 0, sizeof(*pStat)); 25 FS_SAVE_LOAD(); 26 rc = DosQueryHType(hFile, &ulType, &flFlags); 27 if (rc) 27 pFH = __libc_FH(hFile); 28 if (!pFH) 28 29 { 29 FS_RESTORE(); 30 _sys_set_errno(rc); 30 errno = EBADF; 31 31 return -1; 32 32 } 33 switch (ulType & 0xff) 33 34 if (!pFH->pOps) 34 35 { 35 case FHT_CHRDEV:36 pStat->st_mode = S_IFCHR;37 break;38 case FHT_PIPE:39 pStat->st_mode = S_IFSOCK;40 break;41 default:42 pStat->st_mode = S_IFREG;43 break;44 }45 46 if (pStat->st_mode == S_IFREG)47 {48 union49 {50 FILESTATUS3 fsts3;51 FILESTATUS3L fsts3L;52 } info;53 #if OFF_MAX > LONG_MAX54 int fLarge = 0;55 #endif56 57 36 /* 58 * Get file info.37 * . 59 38 */ 60 #if OFF_MAX > LONG_MAX 61 if (__pfnDosOpenL) 62 { 63 rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &info, sizeof(info.fsts3L)); 64 fLarge = 1; 65 } 66 else 67 #endif 68 rc = DosQueryFileInfo(hFile, FIL_STANDARD, &info, sizeof(info.fsts3)); 39 memset(pStat, 0, sizeof(*pStat)); 40 rc = DosQueryHType(hFile, &ulType, &flFlags); 69 41 if (rc) 70 42 { 71 43 FS_RESTORE(); 72 _sys_set_errno (rc);44 _sys_set_errno(rc); 73 45 return -1; 74 46 } 47 48 49 50 51 52 53 54 75 55 76 /* 77 * Format stats struct. 78 * We know the info struct layouts! 79 * Only cbFile, cbFileAlloc and attrFile need be accessed 80 * using the specific structure. 81 */ 82 /* Times: FAT might not return create and access time. */ 83 pStat->st_mtime = _sys_p2t(info.fsts3.ftimeLastWrite, info.fsts3.fdateLastWrite); 84 if ( FTIMEZEROP(info.fsts3.ftimeCreation) 85 && FDATEZEROP(info.fsts3.fdateCreation)) 86 pStat->st_ctime = pStat->st_mtime; 87 else 88 pStat->st_ctime = _sys_p2t(info.fsts3.ftimeCreation, info.fsts3.fdateCreation); 89 if ( FTIMEZEROP(info.fsts3.ftimeLastAccess) 90 && FDATEZEROP(info.fsts3.fdateLastAccess)) 91 pStat->st_atime = pStat->st_mtime; 92 else 93 pStat->st_atime = _sys_p2t(info.fsts3.ftimeLastAccess, info.fsts3.fdateLastAccess); 56 FS_SAVE_LOAD(); 57 if (pStat->st_mode == S_IFREG) 58 { 59 union 60 { 61 FILESTATUS3 fsts3; 62 FILESTATUS3L fsts3L; 63 } info; 64 #if OFF_MAX > LONG_MAX 65 int fLarge = 0; 66 #endif 67 68 /* 69 * Get file info. 70 */ 71 #if OFF_MAX > LONG_MAX 72 if (__pfnDosOpenL) 73 { 74 rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &info, sizeof(info.fsts3L)); 75 fLarge = 1; 76 } 77 else 78 #endif 79 rc = DosQueryFileInfo(hFile, FIL_STANDARD, &info, sizeof(info.fsts3)); 80 if (rc) 81 { 82 FS_RESTORE(); 83 _sys_set_errno (rc); 84 return -1; 85 } 86 87 /* 88 * Format stats struct. 89 * We know the info struct layouts! 90 * Only cbFile, cbFileAlloc and attrFile need be accessed 91 * using the specific structure. 92 */ 93 /* Times: FAT might not return create and access time. */ 94 pStat->st_mtime = _sys_p2t(info.fsts3.ftimeLastWrite, info.fsts3.fdateLastWrite); 95 if ( FTIMEZEROP(info.fsts3.ftimeCreation) 96 && FDATEZEROP(info.fsts3.fdateCreation)) 97 pStat->st_ctime = pStat->st_mtime; 98 else 99 pStat->st_ctime = _sys_p2t(info.fsts3.ftimeCreation, info.fsts3.fdateCreation); 100 if ( FTIMEZEROP(info.fsts3.ftimeLastAccess) 101 && FDATEZEROP(info.fsts3.fdateLastAccess)) 102 pStat->st_atime = pStat->st_mtime; 103 else 104 pStat->st_atime = _sys_p2t(info.fsts3.ftimeLastAccess, info.fsts3.fdateLastAccess); 94 105 95 106 #if OFF_MAX > LONG_MAX 96 if (fLarge) 97 { 98 pStat->st_size = info.fsts3L.cbFile; 99 pStat->st_blocks = info.fsts3L.cbFileAlloc / S_BLKSIZE; 100 rc = info.fsts3L.attrFile; 107 if (fLarge) 108 { 109 pStat->st_size = info.fsts3L.cbFile; 110 pStat->st_blocks = info.fsts3L.cbFileAlloc / S_BLKSIZE; 111 rc = info.fsts3L.attrFile; 112 } 113 else 114 #endif 115 { 116 pStat->st_size = info.fsts3.cbFile; 117 pStat->st_blocks = info.fsts3.cbFileAlloc / S_BLKSIZE; 118 rc = info.fsts3.attrFile; 119 } 120 pStat->st_attr = rc; 121 if (rc & FILE_READONLY) 122 pStat->st_mode |= (S_IREAD >> 6) * 0111; 123 else 124 pStat->st_mode |= ((S_IREAD|S_IWRITE) >> 6) * 0111; 101 125 } 102 126 else 103 #endif104 127 { 105 pStat->st_size = info.fsts3.cbFile; 106 pStat->st_blocks = info.fsts3.cbFileAlloc / S_BLKSIZE; 107 rc = info.fsts3.attrFile; 128 pStat->st_size = 0; 129 rc = DosQueryFHState(hFile, &flFlags); 130 if (rc) 131 { 132 FS_RESTORE(); 133 _sys_set_errno (rc); 134 return -1; 135 } 136 if ((flFlags & 7) == OPEN_ACCESS_READONLY) 137 pStat->st_mode |= (S_IREAD >> 6) * 0111; 138 else 139 pStat->st_mode |= ((S_IREAD|S_IWRITE) >> 6) * 0111; 108 140 } 109 pStat->st_attr = rc; 110 if (rc & FILE_READONLY) 111 pStat->st_mode |= (S_IREAD >> 6) * 0111; 112 else 113 pStat->st_mode |= ((S_IREAD|S_IWRITE) >> 6) * 0111; 141 142 /* default fake stuff */ 143 pStat->st_uid = 0; 144 pStat->st_gid = 0; 145 pStat->st_ino = _sys_ino++; 146 if (_sys_ino == 0) 147 _sys_ino = 1; 148 pStat->st_dev = 0; 149 pStat->st_rdev = 0; 150 pStat->st_nlink = 1; 151 pStat->st_blksize = 4096*48; 152 FS_RESTORE(); 114 153 } 115 154 else 116 155 { 117 pStat->st_size = 0; 118 rc = DosQueryFHState(hFile, &flFlags); 119 if (rc) 120 { 121 FS_RESTORE(); 122 _sys_set_errno (rc); 123 return -1; 124 } 125 if ((flFlags & 7) == OPEN_ACCESS_READONLY) 126 pStat->st_mode |= (S_IREAD >> 6) * 0111; 127 else 128 pStat->st_mode |= ((S_IREAD|S_IWRITE) >> 6) * 0111; 156 /* 157 * Non-standard handle - fail. 158 */ 159 errno = EPERM; 160 return -1; 129 161 } 130 162 131 /* default fake stuff */132 pStat->st_uid = 0;133 pStat->st_gid = 0;134 pStat->st_ino = _sys_ino++;135 if (_sys_ino == 0)136 _sys_ino = 1;137 pStat->st_dev = 0;138 pStat->st_rdev = 0;139 pStat->st_nlink = 1;140 pStat->st_blksize = 4096*48;141 FS_RESTORE();142 163 return 0; 143 164 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__ftruncate.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 7 7 #define INCL_FSMACROS 8 8 #include <os2emx.h> 9 #include <emx/syscalls.h>10 9 #include <limits.h> 11 10 #include <errno.h> 11 12 12 13 #include "syscalls.h" 13 14 … … 15 16 { 16 17 ULONG rc; 17 off_t cbCur; 18 union 19 { 20 FILESTATUS3 fsts3; 21 FILESTATUS3L fsts3L; 22 } info; 23 FS_VAR(); 18 PLIBCFH pFH; 24 19 25 20 /* 26 * First step, figure out the current size.21 * e. 27 22 */ 28 FS_SAVE_LOAD(); 29 #if OFF_MAX > LONG_MAX 30 if (__pfnDosOpenL) 23 pFH = __libc_FH(hFile); 24 if (!pFH) 31 25 { 32 rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &info, sizeof(info.fsts3L)); 33 cbCur = info.fsts3L.cbFile; 34 } 35 else 36 #endif 37 { 38 rc = DosQueryFileInfo(hFile, FIL_STANDARD, &info, sizeof(info.fsts3)); 39 cbCur = info.fsts3.cbFile; 40 } 41 FS_RESTORE(); 42 if (rc) 43 { 44 _sys_set_errno(rc); 26 errno = EBADF; 45 27 return -1; 46 28 } 47 29 30 31 32 33 34 35 36 37 38 39 40 41 48 42 49 /* 50 * Is the file larger than the truncation size? 51 * Then set the desired file size. 52 */ 53 if (cbCur > cbFile) 54 { 43 /* 44 * First step, figure out the current size. 45 */ 55 46 FS_SAVE_LOAD(); 56 47 #if OFF_MAX > LONG_MAX 57 if (__pfnDosSetFileSizeL) 58 rc = __pfnDosSetFileSizeL(hFile, cbFile); 48 if (__pfnDosOpenL) 49 { 50 rc = DosQueryFileInfo(hFile, FIL_STANDARDL, &info, sizeof(info.fsts3L)); 51 cbCur = info.fsts3L.cbFile; 52 } 59 53 else 54 60 55 { 61 if (cbFile > __LONG_MAX) 62 { 63 FS_RESTORE(); 64 errno = EOVERFLOW; 65 return -1; 66 } 67 rc = DosSetFileSize(hFile, cbFile); 56 rc = DosQueryFileInfo(hFile, FIL_STANDARD, &info, sizeof(info.fsts3)); 57 cbCur = info.fsts3.cbFile; 68 58 } 69 #else70 rc = DosSetFileSize(hFile, cbFile);71 #endif72 59 FS_RESTORE(); 73 if (rc != 0)60 if (rc) 74 61 { 75 62 _sys_set_errno(rc); 76 63 return -1; 77 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 78 105 } 79 106 return 0; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__imphandle.c
-
Property cvs2svn:cvs-rev
changed from
1.2to1.3
r870 r871 1 /* imphandl.c (emx+gcc) -- Copyright (c) 1994-1996 by Eberhard Mattes */ 1 /* imphandl.c (emx+gcc) -- Copyright (c) 1994-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 5 4 6 #include <emx/syscalls.h> 5 7 6 int __imphandle (int handle)8 int __imphandle) 7 9 { 8 return handle; 10 PLIBCFH pFH = __libc_FH(fh); 11 if (pFH) 12 return fh; 13 return -1; 9 14 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__initdll.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 122 122 * Init long file I/O functions. 123 123 * This is weak, so that it's only linked in when we're building with 124 * large file suppo ort enabled.124 * large file support enabled. 125 125 */ 126 126 if (_sys_init_largefileio) 127 127 _sys_init_largefileio(); 128 129 130 131 132 133 134 128 135 129 136 /* -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__ioctl1.c
-
Property cvs2svn:cvs-rev
changed from
1.3to1.4
r870 r871 1 /* sys/ioctl1.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/ioctl1.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 5 6 #define INCL_FSMACROS 6 7 #include <os2emx.h> 8 7 9 #include <emx/syscalls.h> 8 10 #include "syscalls.h" 9 11 10 12 11 int __ioctl1 (int handle, int code) 13 /** Obsolete interface to DosQueryHType. 14 * @deprecated Do not use this!! 15 */ 16 int __ioctl1(int handle, int code) 12 17 { 13 ULONG rc; 14 ULONG htype, hflags; 15 FS_VAR(); 18 PLIBCFH pFH; 16 19 17 if (code != 0) 20 /* 21 * Get filehandle. 22 */ 23 pFH = __libc_FH(handle); 24 if (!pFH) 18 25 { 19 errno = EINVAL;20 return -1;26 ; 27 return -1; 21 28 } 22 FS_SAVE_LOAD(); 23 rc = DosQueryHType (handle, &htype, &hflags); 24 FS_RESTORE(); 25 if (rc != 0) 29 if (pFH->pOps) 26 30 { 27 _sys_set_errno (rc);28 return -1;31 ; 32 return -1; 29 33 } 30 if ((htype & 0xff) == 0) 31 return 0; 32 return (hflags & 0x0f) | 0x80; 34 35 /* 36 * Check code. 37 */ 38 switch (code) 39 { 40 /** @todo get rid of this hardcoded shit. */ 41 case 0: 42 { 43 ULONG rc; 44 ULONG htype, hflags; 45 FS_VAR(); 46 FS_SAVE_LOAD(); 47 rc = DosQueryHType(handle, &htype, &hflags); 48 FS_RESTORE(); 49 if (rc) 50 { 51 _sys_set_errno(rc); 52 return -1; 53 } 54 if ((htype & 0xff) == 0) 55 return 0; 56 return (hflags & 0x0f) | 0x80; 57 } 58 } 59 60 /* default */ 61 errno = EINVAL; 62 return -1; 33 63 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__ioctl2.c
-
Property cvs2svn:cvs-rev
changed from
1.5to1.6
r870 r871 1 /* sys/ioctl2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/ioctl2.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 8 9 #define INCL_FSMACROS 9 10 #include <os2emx.h> 11 12 10 13 #include <emx/syscalls.h> 11 14 #include "syscalls.h" … … 15 18 */ 16 19 #define __IOCLW(a) ((unsigned short)(a)) 20 21 22 23 24 25 26 27 28 17 29 18 int __ioctl2 (int handle, unsigned long request, int arg) 19 { 20 ULONG rc; 21 ULONG type, flags; 22 int *int_ptr; 23 FS_VAR(); 24 25 switch (__IOCLW(request)) 30 /* 31 * Get filehandle. 32 */ 33 pFH = __libc_FH(handle); 34 if (!pFH) 26 35 { 27 case __IOCLW(FGETHTYPE): 28 int_ptr = (int *)arg; 29 FS_SAVE_LOAD(); 30 rc = DosQueryHType (handle, &type, &flags); 31 FS_RESTORE(); 32 if (rc != 0) 33 { 34 _sys_set_errno (rc); 35 return -1; 36 } 37 switch (type & 0xff) 38 { 39 case 0: /* File */ 40 *int_ptr = HT_FILE; 41 break; 42 case 1: /* Character device */ 43 if (flags & 3) 44 *int_ptr = HT_DEV_CON; 45 else if (flags & 4) 46 *int_ptr = HT_DEV_NUL; 47 else if (flags & 8) 48 *int_ptr = HT_DEV_CLK; 49 else 50 *int_ptr = HT_DEV_OTHER; 51 break; 52 case 2: /* Pipe */ 53 FS_SAVE_LOAD(); 54 rc = DosQueryNPHState (handle, &flags); 55 FS_RESTORE(); 56 if (rc == 0 || rc == ERROR_PIPE_NOT_CONNECTED) 57 *int_ptr = HT_NPIPE; 58 else 59 *int_ptr = HT_UPIPE; 60 break; 61 default: 62 errno = EINVAL; 63 return -1; 64 } 65 return 0; 66 default: 67 errno = EINVAL; 68 return -1; 36 errno = EBADF; 37 return -1; 69 38 } 70 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 71 121 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__lseek.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 7 7 #define INCL_FSMACROS 8 8 #include <os2emx.h> 9 #include <emx/syscalls.h>10 9 #include <limits.h> 11 10 #include <errno.h> 11 12 12 13 #include "syscalls.h" 13 14 … … 15 16 { 16 17 ULONG rc; 18 17 19 off_t cbNew; 18 20 FS_VAR(); 19 21 22 23 24 25 26 27 28 29 30 20 31 if (origin == FILE_SECTOR) 21 32 { … … 24 35 } 25 36 26 FS_SAVE_LOAD(); 37 if (!pFH->pOps) 38 { 39 /* 40 * Standard OS/2 filehandle. 41 */ 42 FS_SAVE_LOAD(); 27 43 #if OFF_MAX > LONG_MAX 28 if (__pfnDosSetFilePtrL) 29 { 30 LONGLONG cbNewTmp; 31 rc = __pfnDosSetFilePtrL(hFile, off, origin, &cbNewTmp); 32 cbNew = cbNewTmp; 44 if (__pfnDosSetFilePtrL) 45 { 46 LONGLONG cbNewTmp; 47 rc = __pfnDosSetFilePtrL(hFile, off, origin, &cbNewTmp); 48 cbNew = cbNewTmp; 49 } 50 else 51 { 52 ULONG cbNewTmp; 53 if (off > LONG_MAX || off < LONG_MIN) 54 { 55 FS_RESTORE(); 56 errno = EOVERFLOW; 57 return -1; 58 } 59 rc = DosSetFilePtr(hFile, off, origin, &cbNewTmp); 60 cbNew = cbNewTmp; 61 } 62 #else 63 { 64 ULONG cbNewTmp; 65 rc = DosSetFilePtr(hFile, off, origin, &cbNewTmp); 66 cbNew = cbNewTmp; 67 } 68 #endif 69 FS_RESTORE(); 70 71 if (rc) 72 { 73 _sys_set_errno (rc); 74 return -1; 75 } 33 76 } 34 77 else 35 78 { 36 ULONG cbNewTmp; 37 if (off > LONG_MAX || off < LONG_MIN) 38 { 39 FS_RESTORE(); 40 errno = EOVERFLOW; 41 return -1; 42 } 43 rc = DosSetFilePtr(hFile, off, origin, &cbNewTmp); 44 cbNew = cbNewTmp; 45 } 46 #else 47 { 48 ULONG cbNewTmp; 49 rc = DosSetFilePtr(hFile, off, origin, &cbNewTmp); 50 cbNew = cbNewTmp; 51 } 52 #endif 53 FS_RESTORE(); 54 55 if (rc) 56 { 57 _sys_set_errno (rc); 79 /* 80 * Non-standard filehandle - fail. 81 */ 82 errno = EOPNOTSUPP; 58 83 return -1; 59 84 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__open.c
-
Property cvs2svn:cvs-rev
changed from
1.6to1.7
r870 r871 12 12 #include <limits.h> 13 13 #include <emx/syscalls.h> 14 14 15 #include <alloca.h> 15 16 #include "syscalls.h" 16 17 17 int __open(const char *pszFile, int flags, off_t cbInitial )18 int __open(const char *pszFile, int flags, off_t cbInitial) 18 19 { 19 20 ULONG rc; … … 119 120 } 120 121 #endif 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 121 157 FS_RESTORE(); 122 158 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__pipe.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 1 /* sys/pipe.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/pipe.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" … … 6 7 #include <os2safe.h> 7 8 #include <os2emx.h> 9 8 10 #include <emx/syscalls.h> 11 9 12 #include "syscalls.h" 10 13 11 int __pipe (int *two_handles, int pipe_size)14 int __pipee) 12 15 { 13 ULONG rc;14 FS_VAR();16 ULONG rc; 17 FS_VAR(); 15 18 16 FS_SAVE_LOAD(); 17 rc = DosCreatePipe ((PHFILE)&two_handles[0], (PHFILE)&two_handles[1], 18 pipe_size); 19 FS_RESTORE(); 20 if (rc != 0) 19 FS_SAVE_LOAD(); 20 /* 21 * Create the pipe 22 */ 23 rc = DosCreatePipe((PHFILE)&two_handles[0], (PHFILE)&two_handles[1], pipe_size); 24 if (!rc) 21 25 { 22 _sys_set_errno (rc); 23 return -1; 26 /* 27 * Register the handle. 28 */ 29 rc = __libc_FHAllocate((HFILE)two_handles[0], F_PIPE | O_RDONLY, sizeof(LIBCFH), NULL, ppFHRead, NULL); 30 if (!rc) 31 rc = __libc_FHAllocate((HFILE)two_handles[1], F_PIPE | O_WRONLY, sizeof(LIBCFH), NULL, ppFHWrite, NULL); 32 if (rc) 33 { 34 DosClose((HFILE)two_handles[0]); 35 DosClose((HFILE)two_handles[1]); 36 } 24 37 } 25 return 0; 38 FS_RESTORE(); 39 40 /* 41 * Handle error. 42 */ 43 if (rc) 44 { 45 _sys_set_errno(rc); 46 return -1; 47 } 48 return 0; 26 49 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__read.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 1 /* sys/read.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/read.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #define INCL_FSMACROS 6 5 7 #define INCL_ERRORS 6 8 #include <os2emx.h> 9 7 10 #include <stdlib.h> 8 11 #include <memory.h> 9 12 #include <emx/umalloc.h> 13 10 14 #include <emx/syscalls.h> 11 15 #include "syscalls.h" 12 16 13 int __read (int handle, void *buf, size_t nbyte)17 int __read (int handle, void *buf, size_t ) 14 18 { 15 ULONG rc; 16 ULONG n; 17 void *pvBuf_safe = NULL; 18 FS_VAR(); 19 ULONG rc; 20 PLIBCFH pFH; 21 ULONG cbRead; 19 22 20 /* 21 * Devices doesn't like getting high addresses. 22 */ 23 if ((unsigned)buf >= 512*1024*1024) 24 { 25 ULONG ulType = 0; 26 ULONG ulAttr = 0; 27 FS_SAVE_LOAD(); 28 rc = DosQueryHType(handle, &ulType, &ulAttr); 29 FS_RESTORE(); 23 /* 24 * Get filehandle. 25 */ 26 pFH = __libc_FH(handle); 27 if (!pFH) 28 { 29 errno = EBADF; 30 return -1; 31 } 30 32 31 if (! rc && (ulType & 0xf) == HANDTYPE_DEVICE)32 {33 pvBuf_safe = _lmalloc(nbyte);34 if (!pvBuf_safe)35 return ERROR_NOT_ENOUGH_MEMORY;36 memcpy(pvBuf_safe, buf, nbyte);37 }38 }33 if (!) 34 { 35 36 37 38 ; 39 40 39 41 40 FS_SAVE_LOAD(); 41 rc = DosRead (handle, pvBuf_safe ? pvBuf_safe : buf, nbyte, &n); 42 FS_RESTORE(); 43 if (pvBuf_safe) 42 /* 43 * Devices doesn't like getting high addresses. 44 * Allocate a buffer in the low heap. 45 */ 46 if ( (pFH->fFlags & F_TYPEMASK) == F_DEV 47 && (unsigned)buf >= 512*1024*1024) 48 { 49 pvBuf_safe = _lmalloc(cbToRead); 50 if (!pvBuf_safe) 51 return ERROR_NOT_ENOUGH_MEMORY; 52 memcpy(pvBuf_safe, buf, cbToRead); 53 } 54 55 FS_SAVE_LOAD(); 56 FSCW_SAVE(); 57 rc = DosRead(handle, pvBuf_safe ? pvBuf_safe : buf, cbToRead, &cbRead); 58 FSCW_RESTORE(); 59 FS_RESTORE(); 60 if (pvBuf_safe) 61 { 62 memcpy(buf, pvBuf_safe, cbToRead); 63 free(pvBuf_safe); 64 } 65 } 66 else 44 67 { 45 memcpy(buf, pvBuf_safe, nbyte); 46 free(pvBuf_safe); 68 /* 69 * Non-standard filehandle. 70 */ 71 rc = pFH->pOps->pfnRead(pFH, handle, buf, cbToRead, &cbRead); 47 72 } 48 if (rc == 0) 49 return n; 50 else 73 74 /* 75 * Handle errors. 76 */ 77 if (rc) 51 78 { 52 _sys_set_errno(rc);53 return -1;79 (rc); 80 return -1; 54 81 } 82 83 55 84 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__write.c
-
Property cvs2svn:cvs-rev
changed from
1.4to1.5
r870 r871 1 /* sys/write.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes */ 1 /* sys/write.c (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes 2 -- Copyright (c) 2003 by Knut St. Osmunden */ 2 3 3 4 #include "libc-alias.h" 4 5 #define INCL_FSMACROS 6 5 7 #define INCL_ERRORS 6 8 #include <os2emx.h> 7 9 #include <memory.h> 8 10 #include <stdlib.h> 11 12 13 9 14 #include <emx/syscalls.h> 10 #include <emx/umalloc.h>11 15 #include "syscalls.h" 12 16 13 int __write (int handle, const void *buf, size_t nbyte)17 int __writete) 14 18 { 15 ULONG rc; 16 ULONG n; 17 void *pvBuf_safe = NULL; 18 FS_VAR(); 19 PLIBCFH pFH; 20 ULONG rc; 21 ULONG cbWritten; 22 FS_VAR(); 23 FSCW_VAR(); 19 24 20 /*21 * Devices doesn't like getting high addresses.22 */23 if ((unsigned)buf >= 512*1024*1024)24 {25 ULONG ulType = 0;26 ULONG ulAttr = 0;27 FS_SAVE_LOAD();28 rc = DosQueryHType(handle, &ulType, &ulAttr);29 FS_RESTORE();30 25 31 if (!rc && (ulType & 0xf) == HANDTYPE_DEVICE) 32 { 33 if (nbyte > 256) 34 { /* use heap for large buffers */ 35 pvBuf_safe = _lmalloc(nbyte); 36 if (!pvBuf_safe) 37 return ERROR_NOT_ENOUGH_MEMORY; 38 memcpy(pvBuf_safe, buf, nbyte); 39 buf = pvBuf_safe; 40 } 41 else 42 { /* use stack for small buffers */ 43 pvBuf_safe = alloca(nbyte); 44 memcpy(pvBuf_safe, buf, nbyte); 45 buf = pvBuf_safe; 46 pvBuf_safe = NULL; 47 } 48 } 49 } 26 /* 27 * Get filehandle. 28 */ 29 pFH = __libc_FH(handle); 30 if (!pFH) 31 { 32 errno = EBADF; 33 return -1; 34 } 50 35 51 FS_SAVE_LOAD(); 52 rc = DosWrite (handle, buf, nbyte, &n); 53 FS_RESTORE(); 36 if (!pFH->pOps) 37 { 38 /* 39 * Standard OS/2 filehandle. 40 */ 41 void *pvBuf_safe = NULL; 54 42 55 if (pvBuf_safe) 56 free(pvBuf_safe); 57 if (rc == 0) 58 return n; 59 else 43 /* 44 * Devices doesn't like getting high addresses. 45 */ 46 if ( (pFH->fFlags & F_TYPEMASK) == F_DEV 47 && (unsigned)buf >= 512*1024*1024) 48 { 49 if (cbToWrite > 256) 50 { /* use heap for large buffers */ 51 pvBuf_safe = _lmalloc(cbToWrite); 52 if (!pvBuf_safe) 53 return ERROR_NOT_ENOUGH_MEMORY; 54 memcpy(pvBuf_safe, buf, cbToWrite); 55 buf = pvBuf_safe; 56 } 57 else 58 { /* use stack for small buffers */ 59 pvBuf_safe = alloca(cbToWrite); 60 memcpy(pvBuf_safe, buf, cbToWrite); 61 buf = pvBuf_safe; 62 pvBuf_safe = NULL; 63 } 64 } 65 66 FS_SAVE_LOAD(); 67 FSCW_SAVE(); 68 rc = DosWrite(handle, buf, cbToWrite, &cbWritten); 69 FSCW_RESTORE(); 70 FS_RESTORE(); 71 72 if (pvBuf_safe) 73 free(pvBuf_safe); 74 } 75 else 60 76 { 61 _sys_set_errno (rc); 62 return -1; 77 /* 78 * Non-standard filehandle. 79 */ 80 rc = pFH->pOps->pfnWrite(pFH, handle, buf, cbToWrite, &cbWritten); 63 81 } 82 83 84 85 86 87 88 89 90 91 64 92 } 93 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/syscalls.h
-
Property cvs2svn:cvs-rev
changed from
1.7to1.8
r870 r871 186 186 187 187 188 /** @group Init functions188 /** @group Init unctions 189 189 * @{ */ 190 190 extern void __init(int fDefaultHeapInHighMem); … … 193 193 extern int _sys_init_environ(const char *pszEnv); 194 194 extern void _sys_init_largefileio(void); 195 /** @} */ 195 extern int _sys_init_filehandles(void); 196 /** @} */ 197 198 /** @group Term Functions 199 * @{ */ 200 extern int _sys_term_filehandles(void); 201 /** @} */ 202 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/version.smak
-
Property cvs2svn:cvs-rev
changed from
1.9to1.10
r870 r871 4 4 VH = 0 5 5 # Middle part of version number 6 VM = 46 VM = 7 7 # Low part of version number 8 VL = 18 VL = 9 9 10 10 # The name of this package -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.
