Deleted Added
full compact
ftell.c (82670) ftell.c (82673)
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[] = "@(#)ftell.c 8.2 (Berkeley) 5/4/95";
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[] = "@(#)ftell.c 8.2 (Berkeley) 5/4/95";
40#endif
41static const char rcsid[] =
42 "$FreeBSD: head/lib/libc/stdio/ftell.c 82670 2001-08-31 18:54:44Z ache $";
42 "$FreeBSD: head/lib/libc/stdio/ftell.c 82673 2001-08-31 19:50:25Z ache $";
43#endif /* LIBC_SCCS and not lint */
44
45#include "namespace.h"
46#include <sys/types.h>
47#include <errno.h>
48#include <limits.h>
49#include <stdio.h>
50#include "un-namespace.h"

--- 60 unchanged lines hidden (view full) ---

111 if (fp->_flags & __SRD) {
112 /*
113 * Reading. Any unread characters (including
114 * those from ungetc) cause the position to be
115 * smaller than that in the underlying object.
116 */
117 pos -= fp->_r;
118 if (pos < 0) {
43#endif /* LIBC_SCCS and not lint */
44
45#include "namespace.h"
46#include <sys/types.h>
47#include <errno.h>
48#include <limits.h>
49#include <stdio.h>
50#include "un-namespace.h"

--- 60 unchanged lines hidden (view full) ---

111 if (fp->_flags & __SRD) {
112 /*
113 * Reading. Any unread characters (including
114 * those from ungetc) cause the position to be
115 * smaller than that in the underlying object.
116 */
117 pos -= fp->_r;
118 if (pos < 0) {
119 if (HASUB(fp)) {
120 fp->_p -= pos;
121 fp->_r += pos;
122 pos = 0;
123 } else {
119 fp->_p = fp->_bf._base;
120 fp->_r = 0;
121 if (HASUB(fp))
122 FREEUB(fp);
123 if (spos == -1)
124 goto get_real_pos;
125 pos = spos;
126 } else if (HASUB(fp)) {
127 pos -= fp->_ur;
128 if (pos < 0) {
124 fp->_p = fp->_bf._base;
125 fp->_r = 0;
129 fp->_p = fp->_bf._base;
130 fp->_r = 0;
131 FREEUB(fp);
126 if (spos == -1)
127 goto get_real_pos;
128 pos = spos;
129 }
130 }
132 if (spos == -1)
133 goto get_real_pos;
134 pos = spos;
135 }
136 }
131 if (HASUB(fp)) {
132 pos -= fp->_ur;
133 if (pos < 0) {
134 if (-pos <= fp->_r) {
135 fp->_p -= pos;
136 fp->_r += pos;
137 pos = 0;
138 } else {
139 fp->_p = fp->_bf._base;
140 fp->_r = 0;
141 FREEUB(fp);
142 if (spos == -1)
143 goto get_real_pos;
144 pos = spos;
145 }
146 }
147 }
148 } else if ((fp->_flags & __SWR) && fp->_p != NULL) {
149 /*
150 * Writing. Any buffered characters cause the
151 * position to be greater than that in the
152 * underlying object.
153 */
154 n = fp->_p - fp->_bf._base;
155 if (pos > OFF_MAX - n) {
156 errno = EOVERFLOW;
157 return (-1);
158 }
159 pos += n;
160 }
161 return (pos);
162}
137 } else if ((fp->_flags & __SWR) && fp->_p != NULL) {
138 /*
139 * Writing. Any buffered characters cause the
140 * position to be greater than that in the
141 * underlying object.
142 */
143 n = fp->_p - fp->_bf._base;
144 if (pos > OFF_MAX - n) {
145 errno = EOVERFLOW;
146 return (-1);
147 }
148 pos += n;
149 }
150 return (pos);
151}