aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Töpper <atsutane@freethoughts.de>2025-07-26 04:08:03 +0200
committerThorsten Töpper <atsutane@freethoughts.de>2025-07-26 04:13:53 +0200
commit387ab16a00b2427d0459ea13fff83f13a0919a11 (patch)
treecf8a6afb557133a43bcee22a715717df349ea33a
parentb44b44fce5d6c5b436b6d1e89726fd6190698811 (diff)
downloaddir_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.
-rw-r--r--src/data_management.c2
-rw-r--r--src/dir_monitor.c27
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 {