Andrey A. Chernov
6946977c36
If lseek to wrong value sucessfully happens despite all pre-checks, set __SERR
...
to indicate that stream becomes inconsistent.
2001-09-01 11:21:28 +00:00
Andrey A. Chernov
b13ed88361
If position is underflowed, don't try to hide that fact by recovery, just
...
return EIO and set __SERR to mark stream as inconsistent.
2001-09-01 11:18:53 +00:00
Andrey A. Chernov
65efd81290
Back out disabling ungetc() at 0, use different solution:
...
keep negative offset internally, but return 0 externally in ftell*()
I.e. use 0 now as 'unspecified value' per POSIX ungetc() description.
2001-09-01 01:56:54 +00:00
Andrey A. Chernov
598bb4cb30
Add originally missing __sinit() call.
2001-08-31 20:36:19 +00:00
Andrey A. Chernov
c4b2cc78e3
Simplify offset underflow checks even more
2001-08-31 20:17:32 +00:00
Andrey A. Chernov
711b11769d
Describe that we disallow ungetc at offset 0 now.
2001-08-31 20:03:49 +00:00
Andrey A. Chernov
4db40fd143
Disallow ungetc at offset 0 (to prevent negative offset happens), so simplify
...
checks in ftell.
2001-08-31 19:50:25 +00:00
Andrey A. Chernov
7cf30ace84
Drop buffer first, _then_ ask for real position
2001-08-31 18:54:44 +00:00
Andrey A. Chernov
2ff678f5bb
The same big piece of ftell code repeated in 3 places. Simplify things moving
...
it into one subfunction instead.
Try to use real offset in strange cases.
2001-08-31 18:23:29 +00:00
Andrey A. Chernov
ee75810413
If file offset is smaller than internal buffer character left count, just drop
...
internal buffer and trust offset, not return error.
2001-08-31 14:11:14 +00:00
Andrey A. Chernov
1dfa423639
Initialize _offset to 0 in fopen(), it helps to optimize fseek/ftell
2001-08-31 13:14:49 +00:00
Andrey A. Chernov
ca934ebcae
Detect fp->_offset overflow on read
...
Use errno to catch negative seek with -1 offset
2001-08-31 12:55:22 +00:00
Ruslan Ermilov
d6002fef6f
Use ``.Rv -std'' wherever possible.
...
Submitted by: yar
2001-08-31 09:57:38 +00:00
Andrey A. Chernov
57935eeb3d
Try to discard some ungetc data in saved internal buffer checks too,
...
if offset tends to be negative.
2001-08-30 20:49:47 +00:00
Andrey A. Chernov
77f71bc5ac
goto dumb; if can't obtain curoff for whence != SEEK_CUR cases, as supposed
2001-08-30 20:19:45 +00:00
Andrey A. Chernov
e54bc118c1
Add more EOVERFLOW checks.
...
When file offset tends to be negative due to internal and ungetc buffers
additions counted, try to discard some ungetc data first, then return EBADF.
Later one can happens if lseek(fileno(fd),...) called f.e. POSIX says that
ungetc beyond beginning of the file results are undefined, so we can just
discard some of ungetc data in that case.
Don't rely on gcc cast when checking for overflow, use OFF_MAX.
Cosmetique.
2001-08-30 19:54:04 +00:00
Andrey A. Chernov
b0eeb07b5b
Cosmetique fixes from bde
2001-08-26 10:38:29 +00:00
Andrey A. Chernov
f0d5097e06
Cosmetique: correct English in comments
2001-08-23 14:49:02 +00:00
Kris Kennaway
6dac8ac9e5
Mark some functions as __printflike() and/or taking const char * arguments
...
instead of char *.
MFC after: 2 weeks
2001-08-20 12:53:36 +00:00
Andrey A. Chernov
c5981656ea
Add about rewind+errno, describe ESPIPE, minor formatting.
2001-08-19 08:24:50 +00:00
Andrey A. Chernov
98aa5183a2
Simplify overflow calculations a bit
2001-08-17 11:08:56 +00:00
Andrey A. Chernov
4a9f1ee4e5
Remove extra check, already done in upper level caller, i.e. in
...
_fseeko()
2001-08-17 10:43:03 +00:00
Andrey A. Chernov
5fdaf178ae
Mention ftell & ftello in EOVERFLOW section too.
2001-08-17 10:29:09 +00:00
Andrey A. Chernov
b98ba4224b
Add more overflow checks in case of fseek()
2001-08-17 10:22:03 +00:00
Andrey A. Chernov
68ce9bfb10
Don't clear "we have offset" flag even if long is overflow for fseek(),
...
there is no harm to have it, it will reduce next call efforts.
2001-08-17 10:06:46 +00:00
Andrey A. Chernov
71b5a4326d
fseek.c:
...
Resulting fseek() offset must fit in long, required by POSIX (pointed by bde),
so add LONG_MAX and final tests for it.
rewind.c:
1) add missing __sinit() as in fseek() it pretends to be.
2) use clearerr_unlocked() since we already lock stream before _fseeko()
3) don't zero errno at the end, it explicitely required by POSIX as the
only one method to test rewind() error condition.
4) don't clearerr() if error happens in _fseeko()
2001-08-17 09:57:11 +00:00
Dima Dorfman
7bc6682520
Explain the relation of getchar() to getc() in less words.
...
Submitted by: ru
2001-08-16 03:09:33 +00:00
Andrey A. Chernov
74b2772824
Use smarter overflow tests
...
Suggested by: bde
2001-08-15 20:10:38 +00:00
Andrey A. Chernov
d9e3eff33a
1) Disallow negative seek as POSIX require for fseek{o} (but not for lseek):
...
"[EINVAL] ... The resulting file-position indicator would be set to a
negative value."
Moreover, in real life negative seek in stdio cause EOF indicator cleared
and not set again forever even if EOF returned.
2) Catch few possible off_t overflows.
Reviewed by: arch discussion
2001-08-15 02:07:47 +00:00
Peter Wemm
2b618987fe
Rip out the old __stdin/out/err stuff. It was completely 100% useless. :-(
...
It was foiled because of dynamic copy relocations that caused compile-time
space to be reserved in .bss and at run time a blob of data was copied to
that space and everything used the .bss version.. The problem is that
the space is reserved at compile time, not runtime... So we *still* could
not change the size of FILE. Sigh. :-(
Replace it with something that does actually work and really does let us
make 'FILE' extendable. It also happens to be the same as Linux does in
glibc, but has the slight cost of a pointer. Note that this is the
same cost that 'fp = fopen(), fprintf(fp, ...); fclose(fp);' has.
Fortunately, actual references to stdin/out/err are not all that common
since we have implicit stdin/out/err-using versions of functions
(printf() vs. fprintf()).
2001-08-13 21:48:44 +00:00
Dima Dorfman
7f55e48eb1
Use .Fn, .Fa, and .Dv where appropriate.
2001-08-10 20:49:38 +00:00
Yaroslav Tykhiy
b1250632c5
Use the ``.Rv -std'' mdoc(7) macro in appropriate cases.
...
Reviewed by: ru
2001-08-09 13:32:13 +00:00
Ruslan Ermilov
c4d9468ea0
mdoc(7) police:
...
Avoid using parenthesis enclosure macros (.Pq and .Po/.Pc) with plain text.
Not only this slows down the mdoc(7) processing significantly, but it also
has an undesired (in this case) effect of disabling hyphenation within the
entire enclosed block.
2001-08-07 15:48:51 +00:00
Sheldon Hearn
549c291915
Avoid any chance of being misunderstood as having libelled developers
...
or developers' vendors without compromising the importance of warning
against bad practice.
Reported by: mjacob
MFC after: 1 week
2001-07-29 15:08:14 +00:00
Dima Dorfman
7ebcc426ef
Remove whitespace at EOL.
2001-07-15 07:53:42 +00:00
Ruslan Ermilov
a307d59838
mdoc(7) police: removed HISTORY info from the .Os call.
2001-07-10 13:41:46 +00:00
Dima Dorfman
70d51341bf
mdoc(7) police: remove extraneous .Pp before and/or after .Sh.
2001-07-09 09:54:33 +00:00
Mike Heffner
0bada8603d
Attempt to use the environment variable TMPDIR for the temporary
...
directory, defaulting to /tmp.
PR: bin/16924
Reviewed by: dd
MFC after: 2 weeks
2001-07-07 04:08:32 +00:00
Ruslan Ermilov
4988599f44
mdoc(7) police: fixed/simplified formatting.
2001-07-04 11:59:14 +00:00
Assar Westerlund
1866adc54f
(cantwrite): do not allocate memory for a NULL string
...
PR: misc/26044
MFC after: 1 week
Submitted by: bde
2001-06-18 04:44:23 +00:00
Assar Westerlund
a52532c91a
revert freeing of memory that gets allocated when str == NULL
...
(this will be fixed in a better way)
PR: misc/26044
2001-06-18 04:40:52 +00:00
Assar Westerlund
207d92d043
free memory that gets allocated by vfprintf when str == NULL
...
PR: misc/26044
MFC after: 1 week
2001-06-16 05:37:57 +00:00
Jens Schweikhardt
32b21f091e
Add description for the 'll' modifier for long long. In essence a copy
...
from the 'l' description with s/long/long long/g.
PR: 27017
Submitted by: Guy Harris <guy@alum.mit.edu>
MFC after: 2 weeks
2001-06-13 19:05:12 +00:00
Warner Losh
656f411d33
Back out my changes describing how snprintf nul terminates. It
...
was from the iso standard. Keep the sentence that says it is always
NUL terminated to make sure that people understand that.
Requested by: bde
2001-06-05 23:39:45 +00:00
Warner Losh
890d5b436d
Minor improvements:
...
o Explain snprintf's return value better.
o Document snprintf, et al, were defined in C-99
o Warn against %n.
2001-06-05 04:22:30 +00:00
Daniel Eischen
fcd70a7565
Properly initialize a temporary FILE that is allocated off the stack.
...
The change to reuse _up from FILE (to allow FILE to grow without changing
size) overlooked FILE being allocated off the stack.
Approved by: sobomax
2001-06-04 12:36:07 +00:00
Gregory Neil Shapiro
1259dd85eb
Correct the documentation for snprintf() and vsprintf() which actually
...
return the number of characters that would have been in the new string.
Obtained from: OpenBSD
MFC after: 3 days
2001-05-30 23:47:14 +00:00
Eric Melville
2de2196026
Add warnings about trusting user-supplied data.
...
Reviewed by: ru
Approved by: murray
Obtained from: OpenBSD
2001-05-25 20:42:40 +00:00
Ruslan Ermilov
2d105f1659
mdoc(7) police: fix markup.
2001-04-18 13:16:47 +00:00
Daniel Eischen
54fd7f685f
To be consistent, use the __weak_reference macro from <sys/cdefs.h>
...
instead of #pragma weak to create weak definitions. This macro is
improperly named, though, since a weak definition is not the same
thing as a weak reference.
Suggested by: bde
2001-04-10 04:11:50 +00:00