diff options
author | Ben Brewer <ben.brewer@codethink.co.uk> | 2014-05-30 17:22:53 +0100 |
---|---|---|
committer | Ben Brewer <ben.brewer@codethink.co.uk> | 2014-06-04 12:44:01 +0100 |
commit | 2d580135f11a1e705949b7fcf69486bacbca5587 (patch) | |
tree | d81e3ac2af646553fcc4b28877199655e76fd85b /tbdiff/tbdiff-io.c | |
parent | cbe6a4f51bc27c4e8a81f89876c3ae469c8bf67e (diff) | |
download | tbdiff-2d580135f11a1e705949b7fcf69486bacbca5587.tar.gz |
Use POSIX file operations for tbdiff-apply
For the consistency reasons listed in earlier commits.
Diffstat (limited to 'tbdiff/tbdiff-io.c')
-rw-r--r-- | tbdiff/tbdiff-io.c | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/tbdiff/tbdiff-io.c b/tbdiff/tbdiff-io.c index 54bcfa7..8ad0235 100644 --- a/tbdiff/tbdiff-io.c +++ b/tbdiff/tbdiff-io.c @@ -90,53 +90,67 @@ bool tbd_write_gid(gid_t value, int stream) { } -size_t tbd_read_uint16(uint16_t *value, FILE *stream) { +bool tbd_read_uint16(uint16_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + size_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } -size_t tbd_read_uint32(uint32_t *value, FILE *stream) { +bool tbd_read_uint32(uint32_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + size_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } -size_t tbd_read_uint64(uint64_t *value, FILE *stream) { +bool tbd_read_uint64(uint64_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + size_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } -size_t tbd_read_time(time_t *value, FILE *stream) { +bool tbd_read_time(time_t *value, int stream) { assert(value != NULL); uint64_t realv; - size_t rval = fread(&realv, sizeof(realv), 1, stream); + size_t rval = read(stream, &realv, sizeof(realv)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(&realv); *value = realv; - return rval; + return true; } -size_t tbd_read_mode(mode_t *value, FILE *stream) { +bool tbd_read_mode(mode_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + ssize_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } -size_t tbd_read_uid(uid_t *value, FILE *stream) { +bool tbd_read_uid(uid_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + size_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } -size_t tbd_read_gid(gid_t *value, FILE *stream) { +bool tbd_read_gid(gid_t *value, int stream) { assert(value != NULL); - size_t rval = fread(value, sizeof(*value), 1, stream); + size_t rval = read(stream, value, sizeof(*value)); + if (rval != sizeof(*value)) + return false; ENDIANSWAP(value); - return rval; + return true; } |