diff options
| -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 { |
