summaryrefslogtreecommitdiff
path: root/tbdiff/tbdiff-io.c
diff options
context:
space:
mode:
authorBen Brewer <ben.brewer@codethink.co.uk>2014-05-30 16:45:53 +0100
committerBen Brewer <ben.brewer@codethink.co.uk>2014-06-04 12:44:01 +0100
commit0398b8bca477daf22f549fa3152a04abdc8da947 (patch)
treeb5cd3e1399ba42fd5a07785f8b6c5589638c65d9 /tbdiff/tbdiff-io.c
parent56bb60f7e0a4b79ec8da62dccd054b87d7469fb6 (diff)
downloadtbdiff-0398b8bca477daf22f549fa3152a04abdc8da947.tar.gz
Use POSIX file functions for tbdiff-create stream
POSIX file functions are more consistent and simple, originally stdio was used to make the code as portable as possible, however since it now relies on POSIX functionality anyway there's no need for the inconsistency.
Diffstat (limited to 'tbdiff/tbdiff-io.c')
-rw-r--r--tbdiff/tbdiff-io.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/tbdiff/tbdiff-io.c b/tbdiff/tbdiff-io.c
index f9324aa..54bcfa7 100644
--- a/tbdiff/tbdiff-io.c
+++ b/tbdiff/tbdiff-io.c
@@ -15,6 +15,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include <stdbool.h>
#include <endian.h>
#include <unistd.h>
#include <assert.h>
@@ -52,42 +53,43 @@ static inline void endianswap(void* value, size_t size)
#define ENDIANSWAP(v)
#endif
-size_t tbd_write_uint16(uint16_t value, FILE *stream) {
+bool tbd_write_uint16(uint16_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
-size_t tbd_write_uint32(uint32_t value, FILE *stream) {
+bool tbd_write_uint32(uint32_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
-size_t tbd_write_uint64(uint64_t value, FILE *stream) {
+bool tbd_write_uint64(uint64_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
-size_t tbd_write_time(time_t value, FILE *stream) {
+bool tbd_write_time(time_t value, int stream) {
uint64_t realv = value;
ENDIANSWAP(&realv);
- return fwrite(&realv, sizeof(realv), 1, stream);
+ return (write(stream, &realv, sizeof(realv)) == sizeof(value));
}
-size_t tbd_write_mode(mode_t value, FILE *stream) {
+bool tbd_write_mode(mode_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
-size_t tbd_write_uid(uid_t value, FILE *stream) {
+bool tbd_write_uid(uid_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
-size_t tbd_write_gid(gid_t value, FILE *stream) {
+bool tbd_write_gid(gid_t value, int stream) {
ENDIANSWAP(&value);
- return fwrite(&value, sizeof(value), 1, stream);
+ return (write(stream, &value, sizeof(value)) == sizeof(value));
}
+
size_t tbd_read_uint16(uint16_t *value, FILE *stream) {
assert(value != NULL);
size_t rval = fread(value, sizeof(*value), 1, stream);