On 26/10/09 10:52, Richard W.M. Jones wrote:
On Mon, Oct 26, 2009 at 11:41:22AM +0100, Jim Meyering wrote:
Richard W.M. Jones wrote:
+char * +do_case_sensitive_path (const char *path) +{ + char ret[PATH_MAX+1] = "/"; + size_t next = 1; + + /* MUST chdir ("/") before leaving this function. */ + if (chdir (sysroot) == -1) {
If this function might ever be used from a multi-threaded application, then you'll want to change it not to use chdir, since chdir changes the process-wide current directory. That can cause rare but particularly hard to debug problems.
This code would be much harder to write if we don't use chdir. Any suggestions on that? If there was a "readdirat" variant then that might be promising.
There's an fdopendir(), which returns the DIR* required by readdir(). Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team M: +44 (0)7977 267231 GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490