fixed more binutils issues (newer gcc/libc)
[zpugcc/jano.git] / toolchain / gcc / newlib / libc / stdio64 / stdio64.c
blob35967ad99ae99900854db841ff20e7b3ed8f9652
1 /* No user fns here. Pesch 15apr92. */
3 /*
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
7 * Redistribution and use in source and binary forms are permitted
8 * provided that the above copyright notice and this paragraph are
9 * duplicated in all such forms and that any documentation,
10 * advertising materials, and other materials related to such
11 * distribution and use acknowledge that the software was developed
12 * by the University of California, Berkeley. The name of the
13 * University may not be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20 #include <stdio.h>
21 #include <sys/types.h>
22 #include <fcntl.h>
23 #include <sys/unistd.h>
24 #include <errno.h>
25 #include "local.h"
27 #ifdef __LARGE64_FILES
28 _fpos64_t
29 __sseek64_r (ptr, cookie, offset, whence)
30 struct _reent *ptr;
31 _PTR cookie;
32 _fpos64_t offset;
33 int whence;
35 register FILE *fp = (FILE *) cookie;
36 register _off64_t ret;
38 ret = _lseek64_r (ptr, fp->_file, (_off64_t) offset, whence);
39 if (ret == (_fpos64_t)-1L)
40 fp->_flags &= ~__SOFF;
41 else
43 fp->_flags |= __SOFF;
44 fp->_offset = ret;
46 return ret;
49 _READ_WRITE_RETURN_TYPE
50 __swrite64_r (ptr, cookie, buf, n)
51 struct _reent *ptr;
52 _PTR cookie;
53 char _CONST *buf;
54 int n;
56 register FILE *fp = (FILE *) cookie;
57 int w;
58 #ifdef __SCLE
59 int oldmode=0;
60 #endif
62 if (fp->_flags & __SAPP)
63 (void) _lseek64_r (ptr, fp->_file, (_off64_t)0, SEEK_END);
64 fp->_flags &= ~__SOFF; /* in case O_APPEND mode is set */
66 #ifdef __SCLE
67 if (fp->_flags & __SCLE)
68 oldmode = setmode(fp->_file, O_BINARY);
69 #endif
71 w = _write_r (ptr, fp->_file, buf, n);
73 #ifdef __SCLE
74 if (oldmode)
75 setmode(fp->_file, oldmode);
76 #endif
78 return w;
81 #ifndef _REENT_ONLY
82 _fpos64_t
83 __sseek64 (cookie, offset, whence)
84 _PTR cookie;
85 _fpos64_t offset;
86 int whence;
88 return __sseek64_r (_REENT, cookie, offset, whence);
91 _READ_WRITE_RETURN_TYPE
92 __swrite64 (cookie, buf, n)
93 _PTR cookie;
94 char _CONST *buf;
95 int n;
97 return __swrite64_r (_REENT, cookie, buf, n);
100 #endif /* !_REENT_ONLY */
102 #endif /* __LARGE64_FILES */