From 387ab16a00b2427d0459ea13fff83f13a0919a11 Mon Sep 17 00:00:00 2001 From: Thorsten Töpper Date: Sat, 26 Jul 2025 04:08:03 +0200 Subject: dir_monitor: by default open cwd of calling process Also fix small memory leak in error case when attempting to collect data. Irrelevant as this leads to program exit anyways. --- src/data_management.c | 2 ++ src/dir_monitor.c | 27 ++++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/data_management.c b/src/data_management.c index e27b9cd..1ee8134 100644 --- a/src/data_management.c +++ b/src/data_management.c @@ -223,6 +223,7 @@ struct list_head *get_data_from_directory(char *path) { if ((dir = opendir(path)) == NULL) { LOGERR("ERROR: Failed to open directory '%s': %s (errno %d)\n", path, strerror(errno), errno); + free(fullpath); return NULL; } @@ -230,6 +231,7 @@ struct list_head *get_data_from_directory(char *path) { if ((list = calloc(1, sizeof(struct list_head))) == NULL) { LOGERR("ERROR: Failed to allocate memory for list head.\n"); closedir(dir); + free(fullpath); return NULL; } diff --git a/src/dir_monitor.c b/src/dir_monitor.c index 46409cd..935aa74 100644 --- a/src/dir_monitor.c +++ b/src/dir_monitor.c @@ -19,17 +19,26 @@ int main(int argc, char **argv) { struct list_head *list = NULL; int path_index = 1; - if (argc < 2) { - usage(argv[0]); - return EXIT_FAILURE; - } - path_index = parse_arguments(argc, argv); - if (path_index == argc) { - usage(argv[0]); - return EXIT_FAILURE; + if (argc > 2) { + path_index = parse_arguments(argc, argv); + if (path_index == argc) { + usage(argv[0]); + return EXIT_FAILURE; + } + list = get_data_from_directory(argv[path_index]); + } else if (argc == 2) { + if (argv[1][0] == '-') { + fputc('\n', stderr); + LOGERR("WARNING: if '%s' is a valid path use a prefix like ./\n\n", + argv[1]); + usage(argv[0]); + return EXIT_FAILURE; + } + list = get_data_from_directory(argv[1]); + } else { + list = get_data_from_directory("."); } - list = get_data_from_directory(argv[path_index]); if (option_format_string == NULL) { print_list(list); } else { -- cgit v1.2.3-70-g09d2