diff options
-rw-r--r-- | difftool/compare_files.c | 72 | ||||
-rw-r--r-- | difftool/difftool.h | 12 | ||||
-rw-r--r-- | difftool/extract.c | 10 | ||||
-rw-r--r-- | difftool/sqfsdiff.c | 36 |
4 files changed, 66 insertions, 64 deletions
diff --git a/difftool/compare_files.c b/difftool/compare_files.c index 89c5f5c..04749c3 100644 --- a/difftool/compare_files.c +++ b/difftool/compare_files.c @@ -6,90 +6,92 @@ */ #include "difftool.h" -static unsigned char a_buf[MAX_WINDOW_SIZE]; -static unsigned char b_buf[MAX_WINDOW_SIZE]; +static unsigned char old_buf[MAX_WINDOW_SIZE]; +static unsigned char new_buf[MAX_WINDOW_SIZE]; -int compare_files(file_info_t *a, file_info_t *b, const char *path) +int compare_files(file_info_t *old, file_info_t *new, const char *path) { - char second_name[strlen(second_path) + strlen(path) + 2]; - char first_name[strlen(first_path) + strlen(path) + 2]; - int afd = -1, bfd = -1, status = 0; + char new_name[strlen(new_path) + strlen(path) + 2]; + char old_name[strlen(old_path) + strlen(path) + 2]; + int old_fd = -1, new_fd = -1, status = 0; uint64_t offset, diff; ssize_t ret; - if (a->size != b->size) + if (old->size != new->size) goto out_different; if (compare_flags & COMPARE_NO_CONTENTS) return 0; - if (a_is_dir) { - sprintf(first_name, "%s/%s", first_path, path); + if (old_is_dir) { + sprintf(old_name, "%s/%s", old_path, path); - afd = open(first_name, O_RDONLY); - if (afd < 0) { - perror(first_name); + old_fd = open(old_name, O_RDONLY); + if (old_fd < 0) { + perror(old_name); goto fail; } } - if (b_is_dir) { - sprintf(second_name, "%s/%s", second_path, path); + if (new_is_dir) { + sprintf(new_name, "%s/%s", new_path, path); - bfd = open(second_name, O_RDONLY); - if (bfd < 0) { - perror(second_name); + new_fd = open(new_name, O_RDONLY); + if (new_fd < 0) { + perror(new_name); goto fail; } } - for (offset = 0; offset < a->size; offset += diff) { - diff = a->size - offset; + for (offset = 0; offset < old->size; offset += diff) { + diff = old->size - offset; if (diff > MAX_WINDOW_SIZE) diff = MAX_WINDOW_SIZE; - if (a_is_dir) { - if (read_data_at(first_name, offset, afd, a_buf, diff)) + if (old_is_dir) { + if (read_data_at(old_name, offset, old_fd, + old_buf, diff)) goto out; } else { - ret = data_reader_read(sqfs_a.data, a, offset, - a_buf, diff); + ret = data_reader_read(sqfs_old.data, old, offset, + old_buf, diff); if (ret < 0 || (size_t)ret < diff) { fprintf(stderr, "Failed to read %s from %s\n", - path, first_path); + path, old_path); return -1; } } - if (b_is_dir) { - if (read_data_at(second_name, offset, bfd, b_buf, diff)) + if (new_is_dir) { + if (read_data_at(new_name, offset, new_fd, + new_buf, diff)) goto out; } else { - ret = data_reader_read(sqfs_b.data, b, offset, - b_buf, diff); + ret = data_reader_read(sqfs_new.data, new, offset, + new_buf, diff); if (ret < 0 || (size_t)ret < diff) { fprintf(stderr, "Failed to read %s from %s\n", - path, second_path); + path, new_path); return -1; } } - if (memcmp(a_buf, b_buf, diff) != 0) + if (memcmp(old_buf, new_buf, diff) != 0) goto out_different; } out: - if (afd >= 0) - close(afd); - if (bfd >= 0) - close(bfd); + if (old_fd >= 0) + close(old_fd); + if (new_fd >= 0) + close(new_fd); return status; fail: status = -1; goto out; out_different: if (compare_flags & COMPARE_EXTRACT_FILES) { - if (extract_files(a, b, path)) + if (extract_files(old, new, path)) goto fail; } status = 1; diff --git a/difftool/difftool.h b/difftool/difftool.h index 56f727a..bf63faf 100644 --- a/difftool/difftool.h +++ b/difftool/difftool.h @@ -23,13 +23,13 @@ #define MAX_WINDOW_SIZE (1024 * 1024 * 4) -extern const char *first_path; -extern const char *second_path; +extern const char *old_path; +extern const char *new_path; extern int compare_flags; -extern sqfs_reader_t sqfs_a; -extern sqfs_reader_t sqfs_b; -extern bool a_is_dir; -extern bool b_is_dir; +extern sqfs_reader_t sqfs_old; +extern sqfs_reader_t sqfs_new; +extern bool old_is_dir; +extern bool new_is_dir; enum { COMPARE_NO_PERM = 0x01, diff --git a/difftool/extract.c b/difftool/extract.c index 9fee46d..7d4fc1c 100644 --- a/difftool/extract.c +++ b/difftool/extract.c @@ -37,15 +37,15 @@ static int extract(data_reader_t *data, file_info_t *fi, return 0; } -int extract_files(file_info_t *a, file_info_t *b, const char *path) +int extract_files(file_info_t *old, file_info_t *new, const char *path) { - if (a != NULL && !a_is_dir) { - if (extract(sqfs_a.data, a, path, 'a')) + if (old != NULL && !old_is_dir) { + if (extract(sqfs_old.data, old, path, 'a')) return -1; } - if (b != NULL && !b_is_dir) { - if (extract(sqfs_b.data, b, path, 'b')) + if (new != NULL && !new_is_dir) { + if (extract(sqfs_new.data, new, path, 'b')) return -1; } return 0; diff --git a/difftool/sqfsdiff.c b/difftool/sqfsdiff.c index 9197430..a065a8f 100644 --- a/difftool/sqfsdiff.c +++ b/difftool/sqfsdiff.c @@ -61,12 +61,12 @@ static const char *usagestr = "\n"; int compare_flags = 0; -const char *first_path; -const char *second_path; -sqfs_reader_t sqfs_a; -sqfs_reader_t sqfs_b; -bool a_is_dir; -bool b_is_dir; +const char *old_path; +const char *new_path; +sqfs_reader_t sqfs_old; +sqfs_reader_t sqfs_new; +bool old_is_dir; +bool new_is_dir; static bool compare_super = false; static const char *extract_dir; @@ -81,10 +81,10 @@ static void process_options(int argc, char **argv) switch (i) { case 'a': - first_path = optarg; + old_path = optarg; break; case 'b': - second_path = optarg; + new_path = optarg; break; case 'O': compare_flags |= COMPARE_NO_OWNER; @@ -119,12 +119,12 @@ static void process_options(int argc, char **argv) } } - if (first_path == NULL) { + if (old_path == NULL) { fputs("Missing arguments: first filesystem\n", stderr); goto fail_arg; } - if (second_path == NULL) { + if (new_path == NULL) { fputs("Missing arguments: second filesystem\n", stderr); goto fail_arg; } @@ -150,12 +150,12 @@ int main(int argc, char **argv) return EXIT_FAILURE; } - if (sqfs_reader_open(&sqfs_a, first_path, 0)) + if (sqfs_reader_open(&sqfs_old, old_path, 0)) return 2; - if (sqfs_reader_open(&sqfs_b, second_path, 0)) { + if (sqfs_reader_open(&sqfs_new, new_path, 0)) { status = 2; - goto out_sqfs_a; + goto out_sqfs_old; } if (extract_dir != NULL) { @@ -166,12 +166,12 @@ int main(int argc, char **argv) } } - ret = node_compare(sqfs_a.fs.root, sqfs_b.fs.root); + ret = node_compare(sqfs_old.fs.root, sqfs_new.fs.root); if (ret != 0) goto out; if (compare_super) { - ret = compare_super_blocks(&sqfs_a.super, &sqfs_b.super); + ret = compare_super_blocks(&sqfs_old.super, &sqfs_new.super); if (ret != 0) goto out; } @@ -183,8 +183,8 @@ out: } else { status = 0; } - sqfs_reader_close(&sqfs_b); -out_sqfs_a: - sqfs_reader_close(&sqfs_a); + sqfs_reader_close(&sqfs_new); +out_sqfs_old: + sqfs_reader_close(&sqfs_old); return status; } |