summaryrefslogtreecommitdiff
path: root/libtbd_apply.c
diff options
context:
space:
mode:
Diffstat (limited to 'libtbd_apply.c')
-rw-r--r--libtbd_apply.c135
1 files changed, 68 insertions, 67 deletions
diff --git a/libtbd_apply.c b/libtbd_apply.c
index 4bf13ca..bac1ae2 100644
--- a/libtbd_apply.c
+++ b/libtbd_apply.c
@@ -34,12 +34,13 @@
#include <attr/xattr.h>
#include "libtbd_xattrs.h"
+#include "libtbd_io.h"
char*
tbd_apply_fread_string(FILE *stream)
{
uint16_t dlen;
- if(fread(&dlen, sizeof(uint16_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&dlen, stream) != 1)
return NULL;
char dname[dlen + 1];
if(fread(dname, 1, dlen, stream) != dlen)
@@ -63,7 +64,7 @@ int tbd_apply_fread_block(FILE *stream, void **data, size_t *size)
{
{
size_t _size;
- if (fread(&_size, sizeof(_size), 1, stream) != 1) {
+ if (fread(&_size, 1, sizeof(_size), stream) != sizeof(_size) ) {
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
}
if (_size > *size) {
@@ -91,7 +92,7 @@ tbd_apply_identify(FILE *stream)
if(cmd != TBD_CMD_IDENTIFY)
return TBD_ERROR(TBD_ERROR_INVALID_PARAMETER);
uint16_t nlen;
- if(fread(&nlen, 2, 1, stream) != 1)
+ if(tbd_read_uint16_t(&nlen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
if(strlen(TB_DIFF_PROTOCOL_ID) != nlen)
return TBD_ERROR(TBD_ERROR_INVALID_PARAMETER);
@@ -107,7 +108,7 @@ static int
tbd_apply_cmd_dir_create(FILE *stream)
{
uint16_t dlen;
- if(fread(&dlen, sizeof(uint16_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&dlen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char dname[dlen + 1];
if(fread(dname, 1, dlen, stream) != dlen)
@@ -118,19 +119,19 @@ tbd_apply_cmd_dir_create(FILE *stream)
return TBD_ERROR(TBD_ERROR_INVALID_PARAMETER);
time_t mtime;
- if(fread(&mtime, sizeof(mtime), 1, stream) != 1)
+ if(tbd_read_time_t(&mtime, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
- uint32_t uid;
- if(fread(&uid, sizeof(uint32_t), 1, stream) != 1)
+ uid_t uid;
+ if(tbd_read_uid_t(&uid, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
- uint32_t gid;
- if(fread(&gid, sizeof(uint32_t), 1, stream) != 1)
+ gid_t gid;
+ if(tbd_read_gid_t(&gid, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
- uint32_t mode;
- if(fread(&mode, sizeof(uint32_t), 1, stream) != 1)
+ mode_t mode;
+ if(tbd_read_mode_t(&mode, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
if(mkdir(dname, (mode_t)mode) != 0)
@@ -151,7 +152,7 @@ tbd_apply_cmd_dir_enter(FILE *stream,
uintptr_t *depth)
{
uint16_t dlen;
- if(fread(&dlen, 2, 1, stream) != 1)
+ if(tbd_read_uint16_t(&dlen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char dname[dlen + 1];
if(fread(dname, 1, dlen, stream) != dlen)
@@ -175,7 +176,7 @@ tbd_apply_cmd_dir_leave(FILE *stream,
int err = TBD_ERROR_SUCCESS;
struct utimbuf time;
- if (fread(&(time.modtime), sizeof(time.modtime), 1, stream) != 1) {
+ if (tbd_read_time_t(&(time.modtime), stream) != 1) {
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
}
time.actime = time.modtime;/* not sure what the best atime to use is */
@@ -206,7 +207,7 @@ static int
tbd_apply_cmd_file_create(FILE *stream)
{
uint16_t flen;
- if(fread(&flen, 2, 1, stream) != 1)
+ if(tbd_read_uint16_t(&flen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char fname[flen + 1];
if(fread(fname, 1, flen, stream) != flen)
@@ -217,15 +218,15 @@ tbd_apply_cmd_file_create(FILE *stream)
time_t mtime;
uint32_t mode;
- uint32_t uid;
- uint32_t gid;
+ uid_t uid;
+ gid_t gid;
uint32_t fsize;
- if(fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&mode, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&fsize, 4, 1, stream) != 1)
+ if(tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_uint32_t(&mode, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1 ||
+ tbd_read_uint32_t(&fsize, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
fprintf(stderr, "cmd_file_create %s:%"PRId32"\n", fname, fsize);
@@ -269,11 +270,11 @@ tbd_apply_cmd_file_delta(FILE *stream)
{
uint16_t mdata_mask;
time_t mtime;
- uint32_t uid;
- uint32_t gid;
- uint32_t mode;
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
uint16_t flen;
- if(fread(&flen, 2, 1, stream) != 1)
+ if(tbd_read_uint16_t(&flen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char fname[flen + 1];
if(fread(fname, 1, flen, stream) != flen)
@@ -287,11 +288,11 @@ tbd_apply_cmd_file_delta(FILE *stream)
return TBD_ERROR(TBD_ERROR_INVALID_PARAMETER);
/* Reading metadata */
- if(fread(&mdata_mask, sizeof(uint16_t), 1, stream) != 1 ||
- fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&mode, sizeof(uint32_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&mdata_mask, stream) != 1 ||
+ tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1 ||
+ tbd_read_uint32_t(&mode, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
FILE *op = fopen(fname, "rb");
@@ -308,9 +309,9 @@ tbd_apply_cmd_file_delta(FILE *stream)
}
uint32_t dstart, dend;
- if(fread(&dstart, 4, 1, stream) != 1)
+ if(tbd_read_uint32_t(&dstart, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
- if(fread(&dend, 4, 1, stream) != 1)
+ if(tbd_read_uint32_t(&dend, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
uintptr_t block;
@@ -325,7 +326,7 @@ tbd_apply_cmd_file_delta(FILE *stream)
}
uint32_t fsize;
- if(fread(&fsize, 4, 1, stream) != 1)
+ if(tbd_read_uint32_t(&fsize, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
for(block = 256; fsize != 0; fsize -= block) {
@@ -440,7 +441,7 @@ static int
tbd_apply_cmd_entity_delete(FILE *stream)
{
uint16_t elen;
- if(fread(&elen, 2, 1, stream) != 1)
+ if(tbd_read_uint16_t(&elen, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char ename[elen + 1];
if(fread(ename, 1, elen, stream) != elen)
@@ -459,16 +460,16 @@ tbd_apply_cmd_symlink_create(FILE *stream)
{
uint16_t len;
time_t mtime;
- uint32_t uid;
- uint32_t gid;
+ uid_t uid;
+ gid_t gid;
- if(fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1)
+ if(tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
/* Reading link file name */
- if(fread(&len, sizeof(uint16_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&len, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char linkname[len + 1];
@@ -477,7 +478,7 @@ tbd_apply_cmd_symlink_create(FILE *stream)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
/* Reading target path */
- if(fread(&len, sizeof(uint16_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&len, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char linkpath[len+1];
linkpath[len] = '\0';
@@ -506,17 +507,17 @@ tbd_apply_cmd_special_create(FILE *stream)
{
char *name = tbd_apply_fread_string(stream);
time_t mtime;
- uint32_t mode;
- uint32_t uid;
- uint32_t gid;
+ mode_t mode;
+ uid_t uid;
+ gid_t gid;
uint32_t dev;
if(name == NULL ||
- fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&mode, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&dev, sizeof(uint32_t), 1, stream) != 1) {
+ tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_mode_t(&mode, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1 ||
+ tbd_read_uint32_t(&dev, stream) != 1) {
free(name);
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
}
@@ -543,15 +544,15 @@ tbd_apply_cmd_dir_delta(FILE *stream)
{
uint16_t metadata_mask;
time_t mtime;
- uint32_t uid;
- uint32_t gid;
- uint32_t mode;
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
- if(fread(&metadata_mask, sizeof(uint16_t), 1, stream) != 1 ||
- fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&mode, sizeof(uint32_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&metadata_mask, stream) != 1 ||
+ tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1 ||
+ tbd_read_uint32_t(&mode, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char *dname = tbd_apply_fread_string(stream);
@@ -578,15 +579,15 @@ tbd_apply_cmd_file_mdata_update(FILE *stream)
{
uint16_t metadata_mask;
time_t mtime;
- uint32_t uid;
- uint32_t gid;
- uint32_t mode;
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
- if(fread(&metadata_mask, sizeof(uint16_t), 1, stream) != 1 ||
- fread(&mtime, sizeof(mtime), 1, stream) != 1 ||
- fread(&uid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&gid, sizeof(uint32_t), 1, stream) != 1 ||
- fread(&mode, sizeof(uint32_t), 1, stream) != 1)
+ if(tbd_read_uint16_t(&metadata_mask, stream) != 1 ||
+ tbd_read_time_t(&mtime, stream) != 1 ||
+ tbd_read_uid_t(&uid, stream) != 1 ||
+ tbd_read_gid_t(&gid, stream) != 1 ||
+ tbd_read_uint32_t(&mode, stream) != 1)
return TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
char *dname = tbd_apply_fread_string(stream);
@@ -612,7 +613,7 @@ static int tbd_apply_cmd_xattrs_update(FILE *stream)
{
int err = TBD_ERROR_SUCCESS;
char *fname;
- int count;
+ uint32_t count;
void *data = NULL;
size_t dsize = 0;
/* read the name of the file to operate on */
@@ -626,7 +627,7 @@ static int tbd_apply_cmd_xattrs_update(FILE *stream)
}
/* read how many attributes to process */
- if (fread(&count, sizeof(count), 1, stream) != 1) {
+ if (tbd_read_uint32_t(&count, stream) != 1) {
err = TBD_ERROR(TBD_ERROR_UNABLE_TO_READ_STREAM);
goto cleanup;
}