aboutsummaryrefslogtreecommitdiff
path: root/libdiskfs/dir-readdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdiskfs/dir-readdir.c')
-rw-r--r--libdiskfs/dir-readdir.c14
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;
}