From 2653ac737f0df2a41d939e0c36f9b4ae502f5a48 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 12 Nov 2019 16:02:04 -0500 Subject: Implement version --- .gitignore | 2 +- CMakeLists.txt | 3 +++ main.c | 24 +++++++++++++++++++----- reloc.h | 1 + version.h.in | 5 +++++ 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 version.h.in diff --git a/.gitignore b/.gitignore index 5a63b1b..b8ad8b4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,5 @@ cmake_install.cmake install_manifest.txt compile_commands.json CTestTestfile.cmake +build reloc - diff --git a/CMakeLists.txt b/CMakeLists.txt index fc688f9..583d65c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,12 @@ cmake_minimum_required(VERSION 2.8.11) project(reloc C) +set(VERSION "1.0.0") set(CMAKE_C_STANDARD 99) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra") +configure_file(version.h.in version.h) +include_directories("${CMAKE_BINARY_DIR}") add_executable(reloc main.c reloc.h) install(TARGETS reloc RUNTIME DESTINATION bin) diff --git a/main.c b/main.c index dadc455..ee3cc0b 100644 --- a/main.c +++ b/main.c @@ -115,6 +115,11 @@ void reloc_replace(RelocMatch *match, const char *rstr) { } +void show_version() { + printf("%s\n", VERSION); +} + + int main(int argc, char *argv[]) { char *program = argv[0]; char *program_relative = strrchr(program, DIRSEP); @@ -122,20 +127,29 @@ int main(int argc, char *argv[]) { 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 \n" + printf("%s [-V] \n" "\n" "Arguments:\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" + "--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]); diff --git a/reloc.h b/reloc.h index 6822ef3..e97b4a3 100644 --- a/reloc.h +++ b/reloc.h @@ -8,6 +8,7 @@ #include #include #include +#include "version.h" #if defined(_WIN32) || defined(_WIN64) #define DIRSEP '\\' diff --git a/version.h.in b/version.h.in new file mode 100644 index 0000000..d6a4edf --- /dev/null +++ b/version.h.in @@ -0,0 +1,5 @@ +#ifndef RELOC_VERSION_H + +#define VERSION "1.0.0" + +#endif // RELOC_VERSION_H -- cgit