aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/dirread.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2003-11-25 02:11:11 +0000
committerrsc <devnull@localhost>2003-11-25 02:11:11 +0000
commit64bcfff3a12695f4e3f54b0590e896611da71c3b (patch)
tree4069bf27ba50ec5fa81e1ca201fc38cf3cb496be /src/lib9/dirread.c
parentf7012583e9a7594cbb5ebe8e974bb69061189262 (diff)
downloadplan9port-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.c26
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)