diff options
author | deischen <deischen@FreeBSD.org> | 2000-12-06 03:15:49 +0000 |
---|---|---|
committer | deischen <deischen@FreeBSD.org> | 2000-12-06 03:15:49 +0000 |
commit | cf92dabe14c7581217daf96f6257caae8c56b826 (patch) | |
tree | 0dd5c36710eb675e55c9d6b12fdea35f32c5b68e /lib/libc/gen/readdir.c | |
parent | 507950431dac1887fe7f639efde6d9a3bcdb790f (diff) | |
download | FreeBSD-src-cf92dabe14c7581217daf96f6257caae8c56b826.zip FreeBSD-src-cf92dabe14c7581217daf96f6257caae8c56b826.tar.gz |
Cleanup XXXdir functions to eliminate global hash table of
telldir positions. This will allow (future) locking on a
per-DIR basis (for MT-safety). For now, this change does
the following:
o Remove the hash table from telldir.c. Recode to use queue
macros.
o Remove 'const' from 'telldir(const DIR *)'.
o Remove 'register' variables as suggested in a recent
thread.
No response from: -current
Diffstat (limited to 'lib/libc/gen/readdir.c')
-rw-r--r-- | lib/libc/gen/readdir.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/libc/gen/readdir.c b/lib/libc/gen/readdir.c index 14cc001..1f6f84e 100644 --- a/lib/libc/gen/readdir.c +++ b/lib/libc/gen/readdir.c @@ -52,9 +52,9 @@ static char sccsid[] = "@(#)readdir.c 8.3 (Berkeley) 9/29/94"; */ struct dirent * readdir(dirp) - register DIR *dirp; + DIR *dirp; { - register struct dirent *dp; + struct dirent *dp; for (;;) { if (dirp->dd_loc >= dirp->dd_size) { @@ -90,9 +90,10 @@ readdir_r(dirp, entry, result) struct dirent **result; { struct dirent *dp; - int ret, saved_errno; - + int saved_errno; #ifdef _THREAD_SAFE + int ret; + if ((ret = _FD_LOCK(dirp->dd_fd, FD_READ, NULL)) != 0) return (ret); #endif |