Date: Wed, 11 Sep 1996 22:47:59 -0400 From: dj (DJ Delorie) Message-Id: <199609120247.WAA19006@delorie.com> To: djgpp-workers Subject: opendir again I changed opendir to this diff instead of the previous one; this one tries findfirst and only sets the fake-out bit if it doesn't return ".". diff -r -c3 src/libc/posix/dirent/opendir.c /v2/src/libc/posix/dirent/opendir.c *** src/libc/posix/dirent/opendir.c Sat Aug 31 21:09:32 1996 --- /v2/src/libc/posix/dirent/opendir.c Wed Sep 11 22:40:50 1996 *************** *** 34,39 **** --- 34,51 ---- /* Make absolute path */ _fixpath(name, dir->name); + /* If we're doing opendir of the root directory, we need to + fake out the . and .. entries, as some unix programs (like + mkisofs) expect them and fail if they don't exist */ + dir->need_fake_dot_dotdot = 0; + if (dir->name[1] == ':' && dir->name[2] == '/' && dir->name[3] == 0) + { + /* see if findfirst finds "." anyway */ + int done = findfirst(dir->name, &dir->ff, FA_ARCH|FA_RDONLY|FA_DIREC|FA_SYSTEM); + if (done || strcmp(dir->ff.ff_name, ".")) + dir->need_fake_dot_dotdot = 2; + } + /* Ensure that directory to be accessed exists */ if (access(dir->name, D_OK)) {