diff options
Diffstat (limited to 'src/journal')
-rw-r--r-- | src/journal/sd-journal.c | 49 |
1 files changed, 12 insertions, 37 deletions
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 2c5ee3f8f6..7ffbaf7cbf 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1215,7 +1215,7 @@ static void check_network(sd_journal *j, int fd) { } static int add_file(sd_journal *j, const char *prefix, const char *filename) { - char *path; + char _cleanup_free_ *path = NULL; int r; JournalFile *f; @@ -1234,20 +1234,15 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { if (!path) return -ENOMEM; - if (hashmap_get(j->files, path)) { - free(path); + if (hashmap_get(j->files, path)) return 0; - } if (hashmap_size(j->files) >= JOURNAL_FILES_MAX) { log_debug("Too many open journal files, not adding %s, ignoring.", path); - free(path); return 0; } r = journal_file_open(path, O_RDONLY, 0, false, false, NULL, j->mmap, NULL, &f); - free(path); - if (r < 0) { if (errno == ENOENT) return 0; @@ -1263,12 +1258,12 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { return r; } + log_debug("File %s got added.", f->path); + check_network(j, f->fd); j->current_invalidate_counter ++; - log_debug("File %s got added.", f->path); - return 0; } @@ -1311,9 +1306,9 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename) } static int add_directory(sd_journal *j, const char *prefix, const char *dirname) { - char *path; + char _cleanup_free_ *path = NULL; int r; - DIR *d; + DIR _cleanup_closedir_ *d = NULL; sd_id128_t id, mid; Directory *m; @@ -1336,8 +1331,6 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) d = opendir(path); if (!d) { log_debug("Failed to open %s: %m", path); - free(path); - if (errno == ENOENT) return 0; return -errno; @@ -1346,32 +1339,24 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) m = hashmap_get(j->directories_by_path, path); if (!m) { m = new0(Directory, 1); - if (!m) { - closedir(d); - free(path); + if (!m) return -ENOMEM; - } m->is_root = false; m->path = path; if (hashmap_put(j->directories_by_path, m->path, m) < 0) { - closedir(d); - free(m->path); free(m); return -ENOMEM; } + path = NULL; /* avoid freeing in cleanup */ j->current_invalidate_counter ++; log_debug("Directory %s got added.", m->path); - } else if (m->is_root) { - free (path); - closedir(d); + } else if (m->is_root) return 0; - } else - free(path); if (m->wd <= 0 && j->inotify_fd >= 0) { @@ -1402,13 +1387,11 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) check_network(j, dirfd(d)); - closedir(d); - return 0; } static int add_root_directory(sd_journal *j, const char *p) { - DIR *d; + DIR _cleanup_closedir_ *d = NULL; Directory *m; int r; @@ -1426,21 +1409,17 @@ static int add_root_directory(sd_journal *j, const char *p) { m = hashmap_get(j->directories_by_path, p); if (!m) { m = new0(Directory, 1); - if (!m) { - closedir(d); + if (!m) return -ENOMEM; - } m->is_root = true; m->path = strdup(p); if (!m->path) { - closedir(d); free(m); return -ENOMEM; } if (hashmap_put(j->directories_by_path, m->path, m) < 0) { - closedir(d); free(m->path); free(m); return -ENOMEM; @@ -1450,10 +1429,8 @@ static int add_root_directory(sd_journal *j, const char *p) { log_debug("Root directory %s got added.", m->path); - } else if (!m->is_root) { - closedir(d); + } else if (!m->is_root) return 0; - } if (m->wd <= 0 && j->inotify_fd >= 0) { @@ -1491,8 +1468,6 @@ static int add_root_directory(sd_journal *j, const char *p) { check_network(j, dirfd(d)); - closedir(d); - return 0; } |