stdio.c (71579) | stdio.c (81666) |
---|---|
1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Chris Torek. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 25 unchanged lines hidden (view full) --- 34 * SUCH DAMAGE. 35 */ 36 37#if defined(LIBC_SCCS) && !defined(lint) 38#if 0 39static char sccsid[] = "@(#)stdio.c 8.1 (Berkeley) 6/4/93"; 40#endif 41static const char rcsid[] = | 1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Chris Torek. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 25 unchanged lines hidden (view full) --- 34 * SUCH DAMAGE. 35 */ 36 37#if defined(LIBC_SCCS) && !defined(lint) 38#if 0 39static char sccsid[] = "@(#)stdio.c 8.1 (Berkeley) 6/4/93"; 40#endif 41static const char rcsid[] = |
42 "$FreeBSD: head/lib/libc/stdio/stdio.c 71579 2001-01-24 13:01:12Z deischen $"; | 42 "$FreeBSD: head/lib/libc/stdio/stdio.c 81666 2001-08-15 02:07:47Z ache $"; |
43#endif /* LIBC_SCCS and not lint */ 44 45#include "namespace.h" | 43#endif /* LIBC_SCCS and not lint */ 44 45#include "namespace.h" |
46#include <errno.h> |
|
46#include <fcntl.h> 47#include <unistd.h> 48#include <stdio.h> 49#include "un-namespace.h" 50#include "local.h" 51 52/* 53 * Small standard I/O/seek/close functions. --- 35 unchanged lines hidden (view full) --- 89__sseek(cookie, offset, whence) 90 void *cookie; 91 fpos_t offset; 92 int whence; 93{ 94 register FILE *fp = cookie; 95 register off_t ret; 96 | 47#include <fcntl.h> 48#include <unistd.h> 49#include <stdio.h> 50#include "un-namespace.h" 51#include "local.h" 52 53/* 54 * Small standard I/O/seek/close functions. --- 35 unchanged lines hidden (view full) --- 90__sseek(cookie, offset, whence) 91 void *cookie; 92 fpos_t offset; 93 int whence; 94{ 95 register FILE *fp = cookie; 96 register off_t ret; 97 |
98 /* 99 * Disallow negative seeks per POSIX. 100 * It is needed here to help upper level caller 101 * (fseek) in the cases it can't detect. 102 */ 103 if (whence == SEEK_SET && (off_t)offset < 0) { 104 errno = EINVAL; 105 return (-1); 106 } |
|
97 ret = lseek(fp->_file, (off_t)offset, whence); | 107 ret = lseek(fp->_file, (off_t)offset, whence); |
98 if (ret == -1) | 108 if (ret < 0) { 109 if (ret != -1) { 110 /* Resulting seek is negative! */ 111 ret = -1; 112 errno = EINVAL; 113 } |
99 fp->_flags &= ~__SOFF; | 114 fp->_flags &= ~__SOFF; |
100 else { | 115 } else { |
101 fp->_flags |= __SOFF; 102 fp->_offset = ret; 103 } 104 return (ret); 105} 106 107int 108__sclose(cookie) 109 void *cookie; 110{ 111 112 return (_close(((FILE *)cookie)->_file)); 113} | 116 fp->_flags |= __SOFF; 117 fp->_offset = ret; 118 } 119 return (ret); 120} 121 122int 123__sclose(cookie) 124 void *cookie; 125{ 126 127 return (_close(((FILE *)cookie)->_file)); 128} |