summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio
Commit message (Collapse)AuthorAgeFilesLines
...
* K&R -> ANSI prototype.delphij2009-12-211-8/+3
| | | | MFC after: 1 month
* (no commit message)matteo2009-12-161-1/+2
|
* Fix many "function declaration isn't a prototype" warnings in libc.ed2009-12-052-6/+6
| | | | | I've only fixed code that seems to be written by `us'. There are still many warnings like this present in resolv/, rpc/, stdtime/ and yp/.
* Fix the dprintf() prototype.brueffer2009-12-021-2/+2
| | | | | | PR: 141087 Submitted by: Jeremy Huddleston <jeremyhu@apple.com> MFC after: 3 days
* Eliminate more dead stores.wollman2009-11-251-1/+1
| | | | | Found by: Clang static analyzer MFC after: 7 days
* Make all three if conditions look similar by always initializing nsecwollman2009-11-251-1/+2
| | | | | | | | and moving the default initialization of prec into the else clause. The clang static analyzer erroneously thought that nsec can be used uninitialized here; it was not actually possible, but better to make the code clearer. (Clang can't know that sprintf() won't modify *pi behind the scenes.)
* In __mbsconv(), if prec was zero, nconv could have been usedwollman2009-11-251-1/+1
| | | | | | | | | uninitialized. Initialize it to a safe value so that there's no chance of returning an error if stack garbage happens to be equal to (size_t)-1 or (size_t)-2. Found by: Clang static analyzer MFC after: 7 days
* Eliminate dead store.wollman2009-11-251-1/+1
| | | | | Found by: Clang static analyzer MFC after: 7 days
* Better glibc compatibility for getline/getdelim:das2009-10-041-2/+2
| | | | | | | | | | | | | | - Tolerate applications that pass a NULL pointer for the buffer and claim that the capacity of the buffer is nonzero. - If an application passes in a non-NULL buffer pointer and claims the buffer has zero capacity, we should free (well, realloc) it anyway. It could have been obtained from malloc(0), so failing to free it would be a small memory leak. MFC After: 2 weeks Reported by: naddy PR: ports/138320
* Make the description of `b' a little better.ed2009-09-091-1/+1
| | | | | | | If you have a one-byte sequence, `w', `b' is the second character. Not the third. Submitted by: Christoph Mallon
* Fix fwrite() to return 0 when size or nmemb are zero.ed2009-07-122-4/+9
| | | | | | | | Right now nmemb is returned when size is 0. In newer versions of the standards, it is explicitly required that fwrite() should return 0. Submitted by: Christoph Mallon Approved by: re (kib)
* Return -1 instead of 0 upon reaching EOF. This is somewhat ill-adviseddas2009-04-062-4/+6
| | | | | | | | because it means getdelim() returns -1 for both error and EOF, and never returns 0. However, this is what the original GNU implementation does, and POSIX inherited the bug. Reported by: marcus@
* Add dprintf() and vdprintf() from POSIX.1-2008. Like getline(),das2009-03-046-32/+198
| | | | | | dprintf() is a simple wrapper around another function, so we may as well implement it. But also like getline(), we can't prototype it by default right now because it would break too many ports.
* Rewrite asprintf() as a wrapper around vasprintf(), thus reducing thedas2009-03-021-43/+22
| | | | | number of functions that have an incestuous relationship with the arcane innards of stdio.
* The argument corresponding to %zn is supposed to be an ssize_t *, notdas2009-03-022-6/+6
| | | | a size_t *, although the distinction is moot in practice.
* Use C99-style initializers. No functional change.das2009-03-011-4/+9
| | | | Reviewed by: md5(1)
* Replace a dozen lines of code with a call to strnlen() / wcsnlen().das2009-02-282-33/+2
|
* - Add getdelim(), getline(), stpncpy(), strnlen(), wcsnlen(),das2009-02-288-5/+377
| | | | | | | | | | | | wcscasecmp(), and wcsncasecmp(). - Make some previously non-standard extensions visible if POSIX_VISIBLE >= 200809. - Use restrict qualifiers in stpcpy(). - Declare off_t and size_t in stdio.h. - Bump __FreeBSD_version in case the new symbols (particularly getline()) cause issues with ports. Reviewed by: standards@
* Make sure %zd treats negative arguments properly on 32-bit platforms.das2009-02-283-5/+8
| | | | | | | Fix harmless but related bugs in %_$zd and %_$tu. PR: 131880 MFC after: 1 week
* Better wording for clearing EOF indicator.trhodes2009-01-281-0/+4
| | | | Submitted by: keramida and jhb
* Remove another comment about clearing EOF indicator.trhodes2009-01-281-4/+1
| | | | Noticed by: bde
* Update the manpage to reflect r145172.das2009-01-281-2/+1
|
* Remove comment about clearerr() being the only method of clearingtrhodes2009-01-281-3/+1
| | | | | | | | | the EOF indicator, fseek() may also be used for this. Bump document date. PR: 76333 Submitted by: Yoshihiko Sarumaru <mistral@imasy.or.jp>
* Add support for multibyte thousands_sep encodings, e.g., U+066C.das2009-01-223-173/+225
| | | | | | | | The integer thousands' separator code is rewritten in order to avoid having to preallocate a buffer for the largest possible digit string with the most possible instances of the longest possible multibyte thousands' separator. The new version inserts thousands' separators for integers using the same code as floating point.
* - Add support for multibyte decimal_point encodings, e.g., U+066B.das2009-01-192-23/+49
| | | | | A forthcoming gdtoa import is needed to make this fully work. - Improve the way "nan(...)" is parsed.
* Add support for multibyte decimal_point encodings, e.g., U+066B.das2009-01-192-23/+35
|
* When f[w]printf() is called on an unbuffered file like stdout, itdas2009-01-172-14/+23
| | | | | | | | | | | | | | | | sets up a fake buffered FILE and then effectively calls itself recursively. Unfortunately, gcc doesn't know how to do tail call elimination in this case, and actually makes things worse by inlining __sbprintf(). This means that f[w]printf() to stderr was allocating about 5k of stack on 64-bit platforms, much of which was never used. I've reorganized things to eliminate the waste. In addition to saving some stack space, this improves performance in my tests by anywhere from 5% to 17% (depending on the test) when -fstack-protector is enabled. I found no statistically significant performance difference when stack protection is turned off. (The tests redirected stderr to /dev/null.)
* Simplify printf's inlined output buffering routines. On amd64, thisdas2009-01-171-18/+18
| | | | reduces the code size by about 10% and improves performance slightly.
* Introduce a local variable and use it instead of passed in parameterrdivacky2009-01-152-2/+6
| | | | | | | | to get rid of restrict qualifier discarding. This lets libc compile cleanly in gnu99 mode. Suggested by: kib, christoph.mallon at gmx.de Approved by: kib (mentor)
* Reduce code duplication by moving functions that are identical in bothdas2009-01-153-427/+216
| | | | | vfprintf.c and vfwprintf.c (except for char/wchar_t differences) to a common header file.
* Convert the insidious macros that handle printf()'s buffering intodas2009-01-153-86/+204
| | | | | | | | | | | slightly less evil inline functions, and move the buffering state into a struct. This will make it possible for helper routines to produce output for printf() directly, making it possible to untangle the code somewhat. In wprintf(), use the same buffering mechanism to reduce diffs to printf(). This has the side-effect of causing wprintf() to catch write errors that it previously ignored.
* Set the error indicator on an attempt to write to a read-only stream.das2009-01-081-0/+1
| | | | | PR: 127335 MFC after: 2 weeks
* Consolidate some variable initializations. No substantive change.das2008-12-112-13/+13
|
* Move the xprintf hook to where it belongs; it shouldn't be in thedas2008-12-101-6/+4
| | | | middle of vfprintf's variable declarations.
* Fix fread() to return a correct value on platforms where sizeof(int) !=ru2008-12-011-1/+1
| | | | | | | sizeof(size_t), i.e. on all 64-bit platforms. Reported by: Andrey V. Elsukov MFC after: 3 days
* Initialize "nconv" to a reasonable value in all code paths. Prior tocperciva2008-08-041-1/+3
| | | | | | | this commit, sprintf("%s", "") could fail depending on what happened to be on the stack. Found by: LLVM/Clang Static Checker
* Fix a few bugs with the _gettemp() routine which implements mkstemp(),jhb2008-07-281-11/+26
| | | | | | | | | | | | | | | mkstemps(), and mkdtemp(). - Add proper range checking for the 'slen' parameter passed to mkstemps(). - Try all possible permutations of a template if a collision is encountered. Previously, once a single template character reached 'z', it would not wrap around to '0' and keep going until it encountered the original starting letter. In the edge case that the randomly generated starting name used all 'z' characters, only that single name would be tried before giving up. PR: standards/66531 Submitted by: Jim Luther Obtained from: Apple MFC after: 1 week
* Use arc4random_uniform(3) since modulo size is not power of 2ache2008-07-221-1/+1
|
* Fix a bogon in the previous commit and add some missing error checks.das2008-06-291-9/+12
|
* Correctly handle malloc() failure. While here, reduce the code size adas2008-06-294-103/+162
| | | | bit by removing some calls to the inline function addtype().
* Factor out the code that builds the argument table. We don't need separatedas2008-06-291-130/+47
| | | | | | normal and wide character versions of it. No functional change.
* Reduce the level of duplication between vfprintf() and vfwprintf()das2008-06-295-975/+888
| | | | | | by moving the positional argument handling code to a new file, printf-pos.c, and moving common definitions to printflocal.h. No functional change intended.
* Begin de-spaghettifying the code that handles positional arguments.das2008-06-292-188/+306
| | | | | | | | | | | | | | In particular, encapsulate the state of the type table in a struct, and add inline functions to initialize, free, and manipulate that state. This replaces some ugly macros that made proper error handling impossible. While here, remove an unneeded test for NULL and a variable that is initialized (many times!) but never used. The compiler didn't catch these because of rampant use of the same variable to mean different things in different places. This commit should not cause any changes in functionality.
* Remove useless call to getdtablesize(2) in fdopen(3) and its uselessantoine2008-05-101-4/+0
| | | | | | | | | variable nofile. PR: 123109 Submitted by: Christoph Mallon Approved by: rwatson (mentor) MFC after: 1 month
* Retire the __fgetcookie(), __fgetpendout(), and __fsetfileno() accessorsjhb2008-05-052-27/+0
| | | | as we aren't hiding FILE's internals anymore.
* Expose FILE's internals to the world again in all their glory. Restorejhb2008-05-0510-140/+23
| | | | | all the previous inline optimizations as well. FILE is back to using __mbstate_t, struct pthread *, and struct pthread_mutex *.
* Add __fgetcookie(), __fgetpendout() and __fsetfileno() to the privatemarcel2008-05-041-0/+6
| | | | name space.
* Unbreak build: gnu sort has been configured to grope inside structmarcel2008-05-031-0/+7
| | | | | | | __sFILE. It's opaque now, so add a function that returns the pending output bytes. Pointy hat: jhb
* Unbreak build: libftpio gropes inside struct __sFILE. Implementmarcel2008-05-031-0/+14
| | | | | | | | accessor functions for its benefit now thaat FILE is opaque. I'm sure there's a better way. I leave that for people to work on in a src tree that isn't broken. Pointy hat: jhb
* Next round of stdio changes: Remove all inlining of stdio operations andjhb2008-05-0212-112/+200
| | | | | | | | | | | | | | | | move the definition of the type backing FILE (struct __sFILE) into an internal header. - Remove macros to inline certain operations from stdio.h. Applications will now always call the functions instead. - Move the various foo_unlocked() functions from unlocked.c into foo.c. This lets some of the inlining macros (e.g. __sfeof()) move into foo.c. - Update a few comments. - struct __sFILE can now go back to using mbstate_t, pthread_t, and pthread_mutex_t instead of knowing about their private, backing types. MFC after: 1 month Reviewed by: kan
OpenPOWER on IntegriCloud