From 9b69b2ff7563fb89ea8589d307a1c0b83cd6ed7f Mon Sep 17 00:00:00 2001 From: Tristan Riehs Date: Sun, 31 May 2026 14:27:13 +0200 Subject: Add a config file command-line option Integrate getopt for this option and the -h help option. --- src/main.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 58d30ca..c4bd71b 100644 --- a/src/main.c +++ b/src/main.c @@ -688,7 +688,10 @@ static void ftag_file(int argc, char **argv) static void ftag_help(int, char **) { - puts("Usage: ftag COMMAND [ARG]..."); + puts("Usage: ftag [OPTION]... COMMAND [ARG]..."); + puts("Available values for OPTION:"); + puts(" -c FILE use FILE as configuration file"); + puts(" -h display this help"); puts("Available values for COMMAND:"); puts(" init initialize the database"); puts(" file manage files"); @@ -698,11 +701,6 @@ static void ftag_help(int, char **) puts(" tag manage tags"); puts("Some commands also have their own help,"); puts("try \"ftag COMMAND help\" or \"ftag COMMAND -h\"."); - puts("Configuration:"); - printf(" cache %s\n", FTAG_CACHE_DIR); - printf(" config %s\n", FTAG_CONFIG_DIR); - printf(" prefix %s\n", FTAG_PREFIX); - printf(" version %s\n", FTAG_VERSION); } static void ftag_query_usage(void) @@ -1055,12 +1053,29 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } + const char* config_file = NULL; + const char *optstring = "c:h"; + int opt; + + while ((opt = getopt(argc, argv, optstring)) != -1) { + switch (opt) { + case 'h': + ftag_help(0, NULL); + exit(EXIT_SUCCESS); + case 'c': + config_file = optarg; + break; + case'?': + default: + ftag_help(0, NULL); + exit(EXIT_FAILURE); + } + } + const struct ftag_command toplevel_commands[] = { {.name = "export", .func = ftag_export}, {.name = "init", .func = ftag_init}, {.name = "file", .func = ftag_file}, - {.name = "-h", .func = ftag_help}, - {.name = "--help", .func = ftag_help}, {.name = "help", .func = ftag_help}, {.name = "query", .func = ftag_query}, {.name = "sync", .func = ftag_sync}, -- cgit v1.2.3