aboutsummaryrefslogtreecommitdiff
path: root/libdiskfs/dir-readdir.c
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-05-09 00:31:03 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-10 02:16:00 +0200
commit4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (patch)
tree54d13689e60310babf35b5d9117278eade2ed758 /libdiskfs/dir-readdir.c
parentedc6fe07c5a7f9ade000b3bfc17c030fe2086e21 (diff)
downloadhurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.gz
hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.tar.bz2
hurd-4ba239ddbe936322bd7f9a8b17715ebaeb1cb800.zip
libdiskfs: Port to x86_64
Message-Id: <20230508213136.608575-9-bugaevc@gmail.com>
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;
}