diff options
author | rsc <devnull@localhost> | 2003-11-25 02:11:11 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2003-11-25 02:11:11 +0000 |
commit | 64bcfff3a12695f4e3f54b0590e896611da71c3b (patch) | |
tree | 4069bf27ba50ec5fa81e1ca201fc38cf3cb496be /src/lib9/dirread.c | |
parent | f7012583e9a7594cbb5ebe8e974bb69061189262 (diff) | |
download | plan9port-64bcfff3a12695f4e3f54b0590e896611da71c3b.tar.gz plan9port-64bcfff3a12695f4e3f54b0590e896611da71c3b.tar.bz2 plan9port-64bcfff3a12695f4e3f54b0590e896611da71c3b.zip |
More tweaks on Linux and Solaris.
Diffstat (limited to 'src/lib9/dirread.c')
-rw-r--r-- | src/lib9/dirread.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/lib9/dirread.c b/src/lib9/dirread.c index ab9ec7f5..1e479fe4 100644 --- a/src/lib9/dirread.c +++ b/src/lib9/dirread.c @@ -6,19 +6,39 @@ extern int _p9dir(struct stat*, char*, Dir*, char**, char*); -/* almost everyone has getdirentries, just use that */ +#if defined(__linux__) static int -mygetdents(int fd, char *buf, int n) +mygetdents(int fd, struct dirent *buf, int n) +{ + ssize_t nn; + off_t off; + + off = p9seek(fd, 0, 1); + nn = getdirentries(fd, (void*)buf, n, &off); + if(nn > 0) + p9seek(fd, off, 0); + return nn; +} +#elif defined(__APPLE__) || defined(__FreeBSD__) +static int +mygetdents(int fd, struct dirent *buf, int n) { ssize_t nn; long off; off = p9seek(fd, 0, 1); - nn = getdirentries(fd, buf, n, &off); + nn = getdirentries(fd, (void*)buf, n, &off); if(nn > 0) p9seek(fd, off, 0); return nn; } +#elif defined(__sun__) +static int +mygetdents(int fd, struct dirent *buf, int n) +{ + return getdents(fd, (void*)buf, n); +} +#endif static int countde(char *p, int n) |