diff options
Diffstat (limited to 'libdiskfs/dir-readdir.c')
-rw-r--r-- | libdiskfs/dir-readdir.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libdiskfs/dir-readdir.c b/libdiskfs/dir-readdir.c index 2a62b367..82a9720f 100644 --- a/libdiskfs/dir-readdir.c +++ b/libdiskfs/dir-readdir.c @@ -26,7 +26,7 @@ kern_return_t diskfs_S_dir_readdir (struct protid *cred, data_t *data, - size_t *datacnt, + mach_msg_type_number_t *datacnt, boolean_t *data_dealloc, int entry, int nentries, @@ -35,6 +35,7 @@ diskfs_S_dir_readdir (struct protid *cred, { error_t err; struct node *np; + size_t data_len = *datacnt; if (!cred) return EOPNOTSUPP; @@ -54,8 +55,15 @@ diskfs_S_dir_readdir (struct protid *cred, return ENOTDIR; } - err = diskfs_get_directs (np, entry, nentries, data, datacnt, bufsiz, amt); + err = diskfs_get_directs (np, entry, nentries, + data, &data_len, + bufsiz, amt); *data_dealloc = 1; /* XXX */ pthread_mutex_unlock (&np->lock); - return err; + + if (err) + return err; + + *datacnt = data_len; + return 0; } |