summaryrefslogtreecommitdiff
path: root/libc/stdio
AgeCommit message (Collapse)Author
2004-01-02Oops... temporarily support the old stdio code.Manuel Novoa III
2004-01-02Rewrite popen for SUSv3 compliance.Manuel Novoa III
Added a list of popen()'d to store pids and use waitpid() in pclose(). Loop on waitpid() failure due to EINTR as required. Close parent's popen()'d FILEs in the {v}fork()'d child. Fix failure exit code for failed execve().
2003-12-27Fix a long-standing bug with pthreads. A couple of linuxthreads filesManuel Novoa III
were including libc-lock.h which had a bunch of weak pragmas. Also, uClibc supplied a number of no-op weak thread functions even though many weren't needed. This combined result was that sometimes the functional versions of thread functions in pthread would not override the weaks in libc. While fixing this, I also prepended double-underscore to all necessary weak thread funcs in uClibc, and removed all unused weaks. I did a test build, but haven't tested this since these changes are a backport from my working tree. I did test the changes there and no longer need to explicitly add -lpthread in the perl build for perl to pass its thread self tests.
2003-12-14Fix a couple of 'declaration after statement' errors.Manuel Novoa III
2003-11-19Fix the return value for fputs when passed an empty string.Manuel Novoa III
Indirectly detected by gmp-4.1.2 self-tests and reported by "Peter S. Mazinger" <ps.m@gmx.net>.
2003-10-18Peter Kjellerstedt writes:Eric Andersen
rm.patch: * Define $(RM) as rm -f in Rules.mak and test/Rules.mak (this is the same definition as gmake uses by default). * Change all occurrences of rm and rm -f into $(RM).
2003-09-23Quick fix to make sure vfprintf always checks stream orientation whenManuel Novoa III
wchar support is enabled.
2003-09-22Modify _stdio_READ to conform with C99, as stdio input behavior uponManuel Novoa III
encountering EOF changed with Defect Report #141. In the current standard, the stream's EOF indicator is "sticky". Once it is set, all further input from the stream should fail until the application explicitly clears the EOF indicator (clearerr(), file positioning), even if more data becomes available. Fixed a bug in fgets. Wasn't checking for read errors. Minor thread locking optimizations to avoid some unnecessary locking. Remove the explicit calls to __builtin_* funcs, as we really need to implement a more general solution.
2003-09-22Ugh... EOF handling by scanf was completely broken. :-( Regretably,Manuel Novoa III
I got my mind fixed in one mode and didn't comply with the standards. Things should be fixed now, but comparision testing is difficult when glibc's scanf is broken and they stubbornly refuse to even acknowledge that it is... even when confronted by specific examples from the C99 standards and from an official C standard defect report.
2003-09-13Fix a problem reported by Atsushi Nemoto <anemo@mba.ocn.ne.jp>Manuel Novoa III
for environments where long and long long are the same size.
2003-09-08Signifcantly speed out integer to string conversion for printf.Manuel Novoa III
Printf still needs some performance work done though. Also some bufferless stdio cleanups.
2003-09-06Implement vsnprintf (old_vfprintf only) and vsnscanf when uClibc isManuel Novoa III
configured with non-buffered stdio and non-wchar mode. Fix a couple of bugs that showed up in minimalist configurations. Update old_vfprintf to handle size qualifiers on the integer and %n conversions. It now passed the glibc printf tests with the exception of a floating point rounding difference.
2003-09-05Always build _store_inttype since it is used by the new scanf.Manuel Novoa III
2003-09-05Oops... Forgot to convert this to the new floating point conversion func.Manuel Novoa III
2003-09-01Fix precision bug for %g conversion specifier when using %f style.Manuel Novoa III
2003-08-18scanf %lc,%ls,%l[ would always set mb_fail on eof or error,Manuel Novoa III
even when just starting a new mb char. wscanf would incorrectly unget in certain situations.
2003-08-01Add a new *scanf implementation, includeing the *wscanf functions.Manuel Novoa III
Should be standards compliant and with several optional features, including support for hexadecimal float notation, locale awareness, glibc-like locale-specific digit grouping with the `'' flag, and positional arg support. I tested it pretty well (finding several bugs in glibc's scanf in the process), but it is brand new so be aware. The *wprintf functions now support floating point output. Also, a couple of bugs were squashed. Finally, %a/%A conversions are now implemented. Implement the glibc xlocale interface for thread-specific locale support. Also add the various *_l(args, locale_t loc_arg) funcs. NOTE!!! setlocale() is NOT threadsafe! NOTE!!! The strto{floating point} conversion functions are now locale aware. The also now support hexadecimal floating point notation. Add the wcsto{floating point} conversion functions. Fix a bug in mktime() related to dst. Note that unlike glibc's mktime, uClibc's version always normalizes the struct tm before attempting to determine the correct dst setting if tm_isdst == -1 on entry. Add a stub version of the libintl functions. (untested) Fixed a known memory leak in setlocale() related to the collation data. Add lots of new config options (which Erik agreed to sort out :-), including finally exposing some of the stripped down stdio configs. Be careful with those though, as they haven't been tested in a long time. (temporary) GOTCHAs... The ctype functions are currently incorrect for 8-bit locales. They will be fixed shortly. The ctype functions are now table-based, resulting in larger staticly linked binaries. I'll be adding an option to use the old approach in the stub locale configuration.
2003-07-17Bug fix from Peter Kjellerstedt <peter.kjellerstedt@axis.com>. vfscanf wasManuel Novoa III
not setting the FILE bufread member to flag the end of the buffer. Also, do not set bufgetc member if getc macro support is disabled.
2003-07-14Yikes! This was doing another lock instead of unlocking the stream.Manuel Novoa III
2003-06-27Do not let isatty mess up errnoEric Andersen
2003-06-24Change 'undefined behavior' of fflush() on readonly or reading streamsManuel Novoa III
to match that of current glibc; i.e. don't do anything and return success. Apparently, php calls fflush() on a file opened as readonly before trying to read. Eventually I'll add some config options to flag this and several other instances of nonportable code.
2003-05-23Sorry. Changed this while fixing the last bug and forgot to change itManuel Novoa III
back. Unfortunately, none of my test cases caught it.
2003-05-15Fix (hopefully) scanf behavior for nul bytes in the stream when processingManuel Novoa III
%c, %s, and %[ specifiers. Note that scanf is undergoing rewrite so I didn't bother optimizing this. I did run all my regression tests though. Set EOF correctly for fmemopen on readonly streams. I really need to check what glibc behavior is for the various open modes though.
2003-01-23Wasn't thinking... we don't need to seek to end when appending if stdioManuel Novoa III
is built without buffer support.
2003-01-22Fixed a bug related file position in append mode. _stdio_fwrite nowManuel Novoa III
seeks to the end of the stream when append mode is set and we are transitioning to write mode, so that subsequent ftell() return values are correct. Also fix _stdio_fopen to support fdopen() with append specified when the underlying file didn't have O_APPEND set. It now sets the O_APPEND flag as recommended by SUSv3 and is done by glibc.
2003-01-05Fix a silly bug in _wstdio_fwrite. wprintf %s should now work correctly.Manuel Novoa III
2002-12-20The big thing is locale dependent collation support.Manuel Novoa III
Also added outdigit support and (legacy) YESSTR/NOSTR support.
2002-12-01If the wait failed in pclose it would return a random status codeDavid McCullough
instead of -1 as expected.
2002-11-27Fix an ifdef mismatch.Manuel Novoa III
2002-11-22Ok... here's the summary:Manuel Novoa III
Hopefully locale support will build when cross compiling now. Collation is still not supported, but that's what I'm currently working on. In the next couple of days, I'll probably put up a couple of files for download that will save people the trouble of generating all the glibc locales. Added *wprintf functions, although they currently don't support floating point. That will be fixed when I rewrite _dtostr... or possibly before. Added the wcsto{inttype} functions. Added iconv() and a mini iconv utility. The require locale support and only provide for conversions involving the various unicode encodings { UCS-4*, UCS-2*, UTF-32*, UTF-16*, UTF-8 }, the 8-bit codesets built with the locale data, and the internal WCHAR_T.
2002-11-05For now, leave the "Oddly enough, __fsetlocking() is NOT threadsafe."Eric Andersen
comment as an mjn3 only item.
2002-11-04Add printf wchar support for %lc (%C) and %ls (%S).Manuel Novoa III
Require printf format strings to be valid multibyte strings beginning and ending in their initial shift state, as per the stds. Fixed a bug in _wchar_wcsntoutf8s(). Don't store wcs position if dst is NULL. Also, introduce an awful hack into _wchar_wcsntoutf8s() and wcsrtombs() in order to support %ls in printf. See comments below for details. Change behaviour of wc<->mb functions when in the C locale. Now they do a 1-1 map for the range 0x80-UCHAR_MAX. This is for backwards compatibility and consistency with the stds requirements that a printf format string by a valid multibyte string beginning and ending in it's initial shift state.
2002-11-03It was easy enough to respect locale-specific decimal point for printfManuel Novoa III
floating point output, so at least implement that. But grouping will have to wait for the rewrite of _dtostr.
2002-11-03Implement locale-specific grouping in printf for base 10 integer conversionsManuel Novoa III
when the grouping flag "'" is specified. Grouping for floating point values may wait until I do a rewrite of the floating pt to string code...
2002-10-31Ok, this commit is _huge_ and its gonna change the world. I'veEric Andersen
been working on a new config system on and off for about 6 months now, but I've never been fully satisfied. Well, I'm finally am happy with the new config system, so here it is. This completely removes the old uClibc configuration system, and replaces it with an entirely new system based on LinuxKernelConf, from http://www.xs4all.nl/~zippel/lc/ As it turns out, Linus has just merged LinuxKernelConf into Linux 2.5.45, so it looks like I made the right choice. I have thus far updated only x86. I'll be updating the other architectures shortly. -Erik
2002-10-29Fix a silly typo for ManuelEric Andersen
-Erik
2002-10-29Fix a problem in vasprintf (reported by vodz a while back) when builtManuel Novoa III
without custom stream support. In that case, it is necessary to do a va_copy. Note: The affected code is not built in the stock config. Also, make sure each va_copy has a matching va_end, as required by C99.
2002-09-06Patch from Tero_Lyytik�inen <tero@paravant.fi> to fix bug in matchcharManuel Novoa III
case.
2002-08-25Changed fclose behavior when custom streams were enabled. Previously,Manuel Novoa III
the cookie pointer was set to NULL as a debugging aid. However, some of the perl 5.8 test rely on being able to close stderr and still try writing to it. So now, the cookie pointer and handler function pointers are set to that it is a "normal" file with a file descriptor of -1. Note: The cookie pointer is reset to NULL if the FILE struct is free'd by fclose.
2002-08-25Kill the HAS_LONG_LONG option. It really did not make a lot ofEric Andersen
sense to exclude it, gcc always supports long long, and we never fully excluded long long anyways (off64_t for example). -Erik
2002-08-17Fix two problems with printf that showed up in the python 2.2.1 tests;Manuel Novoa III
One involving %o and one involving %f.
2002-08-13__fsetlocking() and FILE field user_locking were completely broken. :-(Manuel Novoa III
I think they're fixed now (I've run a few tests). Note: __fsetlocking() is not threadsafe... but glibc's doesn't appear to be either.
2002-08-12Revert commit by davidm to printf.c that initialized conv_numManuel Novoa III
needlessly. To do so increases the generated code size with bcc. Eliminate duplicate define warnings in wstring.c. Fix potentially broken preprocessor comparisons. The preprocessor converts integers to maximal signed type, so inequality comparisons involving UINTMAX_MAX, ULLONG_MAX, and (if no long long) ULONG_MAX were potentially broken.
2002-08-09Fix a number of compile time warnings so that uClibc will build with -Werror ↵David McCullough
using a 3.0.4 version of the sh-linux-gcc compiler.
2002-08-06Changed fflush() behavior to no-op for r/w streams in read-mode.Manuel Novoa III
This falls under undefined behavior wrt ANSI/ISO C99, but SUSv3 seems to treat it as a no-op and it occurs in some apps. Fixed a problem with _stdio_fwrite() not checking for underlying write() failures. Fixed both _stdio_fwrite() and _stdio_fread() to make sure that the putc and getc macros were disabled if the stream was in and error state. The above changes should take care of a problem initially reported by "Steven J. Hill" <sjhill@realitydiluted.com>.
2002-08-03A couple of little cleanups I forgot to check in.Manuel Novoa III
2002-07-31Per discussion on the mailing list, simply vfork -> fork mapping to only applyEric Andersen
iff we do not have vfork available, which is simpler and more reasonable. -Erik
2002-07-07Attempt to clean up the strerror_r situation.Manuel Novoa III
2002-07-03Enable WCHAR support for C/POSIX stub locales.Manuel Novoa III
Implemented unformatted wide i/o functions. (ungetwc still needs testing) Fix a few bugs in wchar.c. Modifications for bcc/elks support.
2002-06-18Fix perror() and printf("%m") to not call strerror(), as required by theManuel Novoa III
standards. Temporarily added a utility function to wrap Erik's strerror_r so that "Unknown error xxx" strings can be generated for errno's which cause strerror_r to fail. That utility function will eventually be merged in with the strerror/strerror_r functions when I change over to optionallly mmap'ing the system error strings to provide for lower mem comsumption on non-MMU platforms, as well as locale-specific system error messages.