From bdfecf3c9777bac276eb3d257ef55728e5dcc6ca Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 14 Sep 2006 02:37:00 +0000 Subject: r18493: another "blind coding" attempt at a getdirentries() based readdir() replacement (This used to be commit 94b73d692bf85604c7be811bad0b8c6a08b18103) --- source4/lib/replace/repdir_getdirentries.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source4/lib/replace/repdir_getdirentries.c') diff --git a/source4/lib/replace/repdir_getdirentries.c b/source4/lib/replace/repdir_getdirentries.c index 3079eefed0..33c63c3bcc 100644 --- a/source4/lib/replace/repdir_getdirentries.c +++ b/source4/lib/replace/repdir_getdirentries.c @@ -91,7 +91,9 @@ struct dirent *readdir(DIR *dir) struct dirent *de; if (d->ofs >= d->nbytes) { - d->nbytes = getdirentries(d->fd, d->buf, DIR_BUF_SIZE, &d->seekpos); + long pos; + d->nbytes = getdirentries(d->fd, d->buf, DIR_BUF_SIZE, &pos); + d->seekpos = pos; d->ofs = 0; } if (d->ofs >= d->nbytes) { @@ -121,8 +123,9 @@ long telldir(DIR *dir) void seekdir(DIR *dir, long ofs) { struct dir_buf *d = (struct dir_buf *)dir; + long pos; d->seekpos = lseek(d->fd, ofs & ~(DIR_BUF_SIZE-1), SEEK_SET); - d->nbytes = getdirentries(d->fd, d->buf, DIR_BUF_SIZE, &d->seekpos); + d->nbytes = getdirentries(d->fd, d->buf, DIR_BUF_SIZE, &pos); d->ofs = 0; while (d->ofs < (ofs & (DIR_BUF_SIZE-1))) { if (readdir(dir) == NULL) break; -- cgit