From 244fa85e98fa6f325025f49aca6e1fbb1e440582 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 13 Nov 2019 16:48:03 -0500 Subject: Decouple main program and add initial tests --- reloc.c | 69 ----------------------------------------------------------------- 1 file changed, 69 deletions(-) (limited to 'reloc.c') diff --git a/reloc.c b/reloc.c index ee3cc0b..f4d9ee2 100644 --- a/reloc.c +++ b/reloc.c @@ -113,72 +113,3 @@ void reloc_replace(RelocMatch *match, const char *rstr) { // Destroy bytes between the end of the original data and the end of the replaced string memset(data, '\0', post - data); } - - -void show_version() { - printf("%s\n", VERSION); -} - - -int main(int argc, char *argv[]) { - char *program = argv[0]; - char *program_relative = strrchr(program, DIRSEP); - if (program_relative) { - program = program_relative + 1; - } - - for (int i = 0; i < argc; i++) { - if (!strcmp(argv[i], "--version") || !strcmp(argv[i], "-V")) { - show_version(); - exit(0); - } - } - - if (argc < 5) { - printf("%s [-V] \n" - "\n" - "Arguments:\n" - "--version (-V) - Display version and exit\n" - "str1 - Pattern to search for\n" - "str2 - Replace str1 with contents of str2\n" - "input_file - Path to input file\n" - "output_file - Path to output file\n" - "\n" - "Example:\n" - "%s /original/path /new/path input.bin output.bin\n" - "\n", program, program); - exit(1); - } - - char *needle = strdup(argv[1]); - char *replacement = strdup(argv[2]); - char *input_file = strdup(argv[3]); - char *output_file = strdup(argv[4]); - RelocData *info = reloc_read(input_file); - size_t records = 0; - - for (size_t i = 0; i < info->size; i++) { - RelocMatch *match = NULL; - if (!(match = reloc_match(&info->data[i], needle))) { - // No match found - continue; - } - // Replace string - reloc_replace(match, replacement); - free(match); - records++; - } - - // Write output file to disk - reloc_write(info, output_file); - - // Report number of strings processed - printf(SIZE_T_FMT"\n", records); - - free(needle); - free(replacement); - free(input_file); - free(output_file); - reloc_deinit_data(info); - return 0; -} -- cgit