summaryrefslogtreecommitdiff
path: root/tbdiff/tbdiff-io.c
diff options
context:
space:
mode:
authorBen Brewer <ben.brewer@codethink.co.uk>2014-05-30 17:22:53 +0100
committerBen Brewer <ben.brewer@codethink.co.uk>2014-06-04 12:44:01 +0100
commit2d580135f11a1e705949b7fcf69486bacbca5587 (patch)
treed81e3ac2af646553fcc4b28877199655e76fd85b /tbdiff/tbdiff-io.c
parentcbe6a4f51bc27c4e8a81f89876c3ae469c8bf67e (diff)
downloadtbdiff-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.c56
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;
}