aboutsummaryrefslogtreecommitdiff
path: root/libstore/file.c
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-05-09 00:31:04 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-10 02:18:14 +0200
commit070292f3118b75de9fc0e79fac6ca0186d157c28 (patch)
treebe54835aaa641d50e0453747092d5e53e1cd4958 /libstore/file.c
parent4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (diff)
downloadhurd-070292f3118b75de9fc0e79fac6ca0186d157c28.tar.gz
hurd-070292f3118b75de9fc0e79fac6ca0186d157c28.tar.bz2
hurd-070292f3118b75de9fc0e79fac6ca0186d157c28.zip
libstore: Port to x86_64
Message-Id: <20230508213136.608575-10-bugaevc@gmail.com>
Diffstat (limited to 'libstore/file.c')
-rw-r--r--libstore/file.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/libstore/file.c b/libstore/file.c
index ce02f1f4..c54eee91 100644
--- a/libstore/file.c
+++ b/libstore/file.c
@@ -51,12 +51,20 @@ enforced (struct store *store)
}
static error_t
-file_read (struct store *store,
- store_offset_t addr, size_t index, size_t amount, void **buf,
- size_t *len)
+file_read (struct store *store, store_offset_t addr,
+ size_t index, size_t amount,
+ void **buf, size_t *len)
{
+ error_t err;
size_t bsize = store->block_size;
- return io_read (store->port, (char **)buf, len, addr * bsize, amount);
+ mach_msg_type_number_t nread = *len;
+
+ err = io_read (store->port, (char **) buf, &nread, addr * bsize, amount);
+ if (err)
+ return err;
+
+ *len = nread;
+ return 0;
}
static error_t
@@ -222,11 +230,19 @@ store_file_class =
STORE_STD_CLASS (file);
static error_t
-file_byte_read (struct store *store,
- store_offset_t addr, size_t index, size_t amount,
- void **buf, size_t *len)
+file_byte_read (struct store *store, store_offset_t addr,
+ size_t index, size_t amount,
+ void **buf, size_t *len)
{
- return io_read (store->port, (char **)buf, len, addr, amount);
+ error_t err;
+ mach_msg_type_number_t nread = *len;
+
+ err = io_read (store->port, (char **) buf, &nread, addr, amount);
+ if (err)
+ return err;
+
+ *len = nread;
+ return 0;
}
static error_t