aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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 {