summaryrefslogtreecommitdiff
path: root/src/dirent
AgeCommit message (Collapse)AuthorFilesLines
2012-06-13add (currently stubbed due to stubbed strverscmp) versionsort functionRich Felker1-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.
2012-04-24ditch the priority inheritance locks; use malloc's version of lockRich Felker5-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).
2011-07-21fix errno value when fdopendir is given an invalid file descriptorRich Felker1-1/+4
this resolves an issue reported by Vasiliy Kulikov
2011-06-25optimize opendir using O_CLOEXECRich Felker1-2/+1
2011-06-06fix handling of d_name in struct direntRich Felker1-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.
2011-04-18avoid fd leak if opendir is cancelled when calloc has failedRich Felker1-1/+2
2011-04-11fix errno handling in scandir:Rich Felker1-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...
2011-03-20global cleanup to use the new syscall interfaceRich Felker1-1/+1
2011-02-15finish moving 32-bit-specific junk out of source files.Rich Felker1-1/+1
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker13-0/+244