diff options
| author | Thorsten Töpper <atsutane@freethoughts.de> | 2025-07-26 04:08:03 +0200 |
|---|---|---|
| committer | Thorsten Töpper <atsutane@freethoughts.de> | 2025-07-26 04:13:53 +0200 |
| commit | 387ab16a00b2427d0459ea13fff83f13a0919a11 (patch) | |
| tree | cf8a6afb557133a43bcee22a715717df349ea33a /src | |
| parent | b44b44fce5d6c5b436b6d1e89726fd6190698811 (diff) | |
| download | dir_monitor-387ab16a00b2427d0459ea13fff83f13a0919a11.tar.gz dir_monitor-387ab16a00b2427d0459ea13fff83f13a0919a11.tar.bz2 | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/data_management.c | 2 | ||||
| -rw-r--r-- | 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 { |
