about summary refs log tree commit diff
path: root/src/dirent
Commit message (Collapse)AuthorAgeFilesLines
* use restrict everywhere it's required by c99 and/or posix 2008Rich Felker2012-09-061-1/+1
| | | | | | | | to deal with the fact that the public headers may be used with pre-c99 compilers, __restrict is used in place of restrict, and defined appropriately for any supported compiler. we also avoid the form [restrict] since older versions of gcc rejected it due to a bug in the original c99 standard, and instead use the form *restrict.
* add (currently stubbed due to stubbed strverscmp) versionsort functionRich Felker2012-06-131-0/+8
| | | | | | | | | | | based on patch by Emil Renner Berthing, with minor changes to dirent.h for LFS64 and organization of declarations this code should work unmodified once a real strverscmp is added, but I've been hesitant to add it because the GNU strverscmp behavior is harmful in a lot of cases (for instance if you have numeric filenames in hex). at some point I plan on trying to design a variant of the algorithm that behaves better on a mix of filename styles.
* ditch the priority inheritance locks; use malloc's version of lockRich Felker2012-04-245-12/+9
| | | | | | | | | | | | | | | | | | | i did some testing trying to switch malloc to use the new internal lock with priority inheritance, and my malloc contention test got 20-100 times slower. if priority inheritance futexes are this slow, it's simply too high a price to pay for avoiding priority inversion. maybe we can consider them somewhere down the road once the kernel folks get their act together on this (and perferably don't link it to glibc's inefficient lock API)... as such, i've switch __lock to use malloc's implementation of lightweight locks, and updated all the users of the code to use an array with a waiter count for their locks. this should give optimal performance in the vast majority of cases, and it's simple. malloc is still using its own internal copy of the lock code because it seems to yield measurably better performance with -O3 when it's inlined (20% or more difference in the contention stress test).
* fix errno value when fdopendir is given an invalid file descriptorRich Felker2011-07-211-1/+4
| | | | this resolves an issue reported by Vasiliy Kulikov
* optimize opendir using O_CLOEXECRich Felker2011-06-251-2/+1
|
* fix handling of d_name in struct direntRich Felker2011-06-061-4/+3
| | | | | | | | | | | | basically there are 3 choices for how to implement this variable-size string member: 1. C99 flexible array member: breaks using dirent.h with pre-C99 compiler. 2. old way: length-1 string: generates array bounds warnings in caller. 3. new way: length-NAME_MAX string. no problems, simplifies all code. of course the usable part in the pointer returned by readdir might be shorter than NAME_MAX+1 bytes, but that is allowed by the standard and doesn't hurt anything.
* avoid fd leak if opendir is cancelled when calloc has failedRich Felker2011-04-181-1/+2
|
* fix errno handling in scandir:Rich Felker2011-04-111-2/+1
| | | | | | 1. saved errno was not being restored, illegally clearing errno to 0. 2. no need to backup and save errno around free; it will not touch except perhaps when the program has already invoked UB...
* global cleanup to use the new syscall interfaceRich Felker2011-03-201-1/+1
|
* finish moving 32-bit-specific junk out of source files.Rich Felker2011-02-151-1/+1
|
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-1213-0/+244