diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-05-09 00:31:04 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-10 02:18:14 +0200 |
commit | 070292f3118b75de9fc0e79fac6ca0186d157c28 (patch) | |
tree | be54835aaa641d50e0453747092d5e53e1cd4958 /libstore/file.c | |
parent | 4ba239ddbe936322bd7f9a8b17715ebaeb1cb800 (diff) | |
download | hurd-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.c | 32 |
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 |