journal,shared: add _cleanup_journal_close_
This commit is contained in:
parent
a50d7d4389
commit
763c7aa288
|
@ -34,6 +34,7 @@
|
|||
#include "log.h"
|
||||
#include "path-util.h"
|
||||
#include "pager.h"
|
||||
#include "macro.h"
|
||||
|
||||
static enum {
|
||||
ACTION_NONE,
|
||||
|
@ -42,7 +43,6 @@ static enum {
|
|||
ACTION_GDB,
|
||||
} arg_action = ACTION_LIST;
|
||||
|
||||
static Set *matches = NULL;
|
||||
static FILE* output = NULL;
|
||||
static char* field = NULL;
|
||||
|
||||
|
@ -139,7 +139,7 @@ fail:
|
|||
return r;
|
||||
}
|
||||
|
||||
static int parse_argv(int argc, char *argv[]) {
|
||||
static int parse_argv(int argc, char *argv[], Set *matches) {
|
||||
enum {
|
||||
ARG_VERSION = 0x100,
|
||||
ARG_NO_PAGER,
|
||||
|
@ -519,10 +519,11 @@ finish:
|
|||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
sd_journal *j = NULL;
|
||||
sd_journal _cleanup_journal_close_ *j = NULL;
|
||||
const char* match;
|
||||
Iterator it;
|
||||
int r = 0;
|
||||
Set _cleanup_set_free_free_ *matches = NULL;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
log_parse_environment();
|
||||
|
@ -534,7 +535,7 @@ int main(int argc, char *argv[]) {
|
|||
goto end;
|
||||
}
|
||||
|
||||
r = parse_argv(argc, argv);
|
||||
r = parse_argv(argc, argv, matches);
|
||||
if (r < 0)
|
||||
goto end;
|
||||
|
||||
|
@ -578,11 +579,6 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
end:
|
||||
if (j)
|
||||
sd_journal_close(j);
|
||||
|
||||
set_free_free(matches);
|
||||
|
||||
pager_close();
|
||||
|
||||
if (output)
|
||||
|
|
|
@ -897,7 +897,7 @@ static int access_check(void) {
|
|||
|
||||
int main(int argc, char *argv[]) {
|
||||
int r;
|
||||
sd_journal *j = NULL;
|
||||
sd_journal _cleanup_journal_close_ *j = NULL;
|
||||
bool need_seek = false;
|
||||
sd_id128_t previous_boot_id;
|
||||
bool previous_boot_id_valid = false, first_line = true;
|
||||
|
@ -937,7 +937,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
r = access_check();
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
if (arg_directory)
|
||||
r = sd_journal_open_directory(&j, arg_directory, 0);
|
||||
|
@ -945,7 +945,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_open(&j, arg_merge ? 0 : SD_JOURNAL_LOCAL_ONLY);
|
||||
if (r < 0) {
|
||||
log_error("Failed to open journal: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (arg_action == ACTION_VERIFY) {
|
||||
|
@ -955,8 +955,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
if (arg_action == ACTION_PRINT_HEADER) {
|
||||
journal_print_header(j);
|
||||
r = 0;
|
||||
goto finish;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
if (arg_action == ACTION_DISK_USAGE) {
|
||||
|
@ -965,33 +964,33 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
r = sd_journal_get_usage(j, &bytes);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
printf("Journals take up %s on disk.\n", format_bytes(sbytes, sizeof(sbytes), bytes));
|
||||
r = 0;
|
||||
goto finish;
|
||||
printf("Journals take up %s on disk.\n",
|
||||
format_bytes(sbytes, sizeof(sbytes), bytes));
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
r = add_this_boot(j);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
r = add_unit(j);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
r = add_matches(j, argv + optind);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
r = add_priorities(j);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
/* Opening the fd now means the first sd_journal_wait() will actually wait */
|
||||
r = sd_journal_get_fd(j);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
|
||||
if (arg_field) {
|
||||
const void *data;
|
||||
|
@ -1000,7 +999,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_query_unique(j, arg_field);
|
||||
if (r < 0) {
|
||||
log_error("Failed to query unique data objects: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
SD_JOURNAL_FOREACH_UNIQUE(j, data, size) {
|
||||
|
@ -1018,15 +1017,14 @@ int main(int argc, char *argv[]) {
|
|||
n_shown ++;
|
||||
}
|
||||
|
||||
r = 0;
|
||||
goto finish;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
if (arg_cursor) {
|
||||
r = sd_journal_seek_cursor(j, arg_cursor);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to cursor: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (!arg_reverse)
|
||||
r = sd_journal_next(j);
|
||||
|
@ -1037,7 +1035,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_seek_realtime_usec(j, arg_since);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to date: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
r = sd_journal_next(j);
|
||||
|
||||
|
@ -1045,7 +1043,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_seek_realtime_usec(j, arg_until);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to date: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
r = sd_journal_previous(j);
|
||||
|
||||
|
@ -1053,7 +1051,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_seek_tail(j);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to tail: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
r = sd_journal_previous_skip(j, arg_lines);
|
||||
|
@ -1062,7 +1060,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_seek_tail(j);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to tail: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
r = sd_journal_previous(j);
|
||||
|
@ -1071,7 +1069,7 @@ int main(int argc, char *argv[]) {
|
|||
r = sd_journal_seek_head(j);
|
||||
if (r < 0) {
|
||||
log_error("Failed to seek to head: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
r = sd_journal_next(j);
|
||||
|
@ -1079,7 +1077,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
if (r < 0) {
|
||||
log_error("Failed to iterate through journal: %s", strerror(-r));
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!arg_no_pager && !arg_follow)
|
||||
|
@ -1189,9 +1187,6 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
finish:
|
||||
if (j)
|
||||
sd_journal_close(j);
|
||||
|
||||
pager_close();
|
||||
|
||||
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
|
|
|
@ -960,8 +960,7 @@ finish:
|
|||
if (r >= 0)
|
||||
rm_rf("/run/log/journal", false, true, false);
|
||||
|
||||
if (j)
|
||||
sd_journal_close(j);
|
||||
sd_journal_close(j);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -23,10 +23,12 @@
|
|||
|
||||
#include "log.h"
|
||||
#include "sd-journal.h"
|
||||
#include "macro.h"
|
||||
#include "util.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
unsigned n = 0;
|
||||
sd_journal *j;
|
||||
sd_journal _cleanup_journal_close_ *j = NULL;
|
||||
|
||||
log_set_max_level(LOG_DEBUG);
|
||||
|
||||
|
@ -48,6 +50,5 @@ int main(int argc, char *argv[]) {
|
|||
break;
|
||||
}
|
||||
|
||||
sd_journal_close(j);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
#include "log.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
sd_journal *j;
|
||||
char *t;
|
||||
sd_journal _cleanup_journal_close_ *j;
|
||||
char _cleanup_free_ *t;
|
||||
|
||||
log_set_max_level(LOG_DEBUG);
|
||||
|
||||
|
@ -59,9 +59,6 @@ int main(int argc, char *argv[]) {
|
|||
assert_se(streq(t, "((TWO=two AND (ONE=two OR ONE=one)) OR (PIFF=paff AND (QUUX=yyyyy OR QUUX=xxxxx OR QUUX=mmmm) AND (HALLO= OR HALLO=WALDO)))"));
|
||||
|
||||
printf("resulting match expression is: %s\n", t);
|
||||
free(t);
|
||||
|
||||
sd_journal_close(j);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(int argc, char *argv[]) {
|
|||
JournalFile *one, *two, *three;
|
||||
char t[] = "/tmp/journal-stream-XXXXXX";
|
||||
unsigned i;
|
||||
sd_journal *j;
|
||||
sd_journal _cleanup_journal_close_ *j = NULL;
|
||||
char *z;
|
||||
const void *data;
|
||||
size_t l;
|
||||
|
@ -126,25 +126,23 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
assert_se(sd_journal_add_match(j, "MAGIC=quux", 0) >= 0);
|
||||
SD_JOURNAL_FOREACH_BACKWARDS(j) {
|
||||
char *c;
|
||||
char _cleanup_free_ *c;
|
||||
|
||||
assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0);
|
||||
printf("\t%.*s\n", (int) l, (const char*) data);
|
||||
|
||||
assert_se(sd_journal_get_cursor(j, &c) >= 0);
|
||||
assert_se(sd_journal_test_cursor(j, c) > 0);
|
||||
free(c);
|
||||
}
|
||||
|
||||
SD_JOURNAL_FOREACH(j) {
|
||||
char *c;
|
||||
char _cleanup_free_ *c;
|
||||
|
||||
assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0);
|
||||
printf("\t%.*s\n", (int) l, (const char*) data);
|
||||
|
||||
assert_se(sd_journal_get_cursor(j, &c) >= 0);
|
||||
assert_se(sd_journal_test_cursor(j, c) > 0);
|
||||
free(c);
|
||||
}
|
||||
|
||||
sd_journal_flush_matches(j);
|
||||
|
@ -177,8 +175,6 @@ int main(int argc, char *argv[]) {
|
|||
SD_JOURNAL_FOREACH_UNIQUE(j, data, l)
|
||||
printf("%.*s\n", (int) l, (const char*) data);
|
||||
|
||||
sd_journal_close(j);
|
||||
|
||||
assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -941,7 +941,7 @@ int show_journal_by_unit(
|
|||
OutputFlags flags,
|
||||
bool system) {
|
||||
|
||||
sd_journal *j = NULL;
|
||||
sd_journal _cleanup_journal_close_ *j = NULL;
|
||||
int r;
|
||||
int jflags = SD_JOURNAL_LOCAL_ONLY | system * SD_JOURNAL_SYSTEM_ONLY;
|
||||
|
||||
|
@ -954,24 +954,20 @@ int show_journal_by_unit(
|
|||
|
||||
r = sd_journal_open(&j, jflags);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
|
||||
if (system)
|
||||
r = add_matches_for_unit(j, unit);
|
||||
else
|
||||
r = add_matches_for_user_unit(j, unit, uid);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
|
||||
r = show_journal(f, j, mode, n_columns, not_before, how_many, flags);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
|
||||
finish:
|
||||
if (j)
|
||||
sd_journal_close(j);
|
||||
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char *const output_mode_table[_OUTPUT_MODE_MAX] = {
|
||||
|
|
|
@ -203,6 +203,7 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) {
|
|||
#define _cleanup_set_free_ __attribute__((cleanup(set_freep)))
|
||||
#define _cleanup_set_free_free_ __attribute__((cleanup(set_free_freep)))
|
||||
#define _cleanup_strv_free_ __attribute__((cleanup(strv_freep)))
|
||||
#define _cleanup_journal_close_ __attribute__((cleanup(journal_closep)))
|
||||
|
||||
#define VA_FORMAT_ADVANCE(format, ap) \
|
||||
do { \
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <dirent.h>
|
||||
#include <sys/resource.h>
|
||||
#include <stddef.h>
|
||||
#include <systemd/sd-journal.h>
|
||||
|
||||
#include "macro.h"
|
||||
#include "time-util.h"
|
||||
|
@ -531,6 +532,10 @@ static inline void umaskp(mode_t *u) {
|
|||
umask(*u);
|
||||
}
|
||||
|
||||
static inline void journal_closep(sd_journal **j) {
|
||||
sd_journal_close(*j);
|
||||
}
|
||||
|
||||
_malloc_ static inline void *malloc_multiply(size_t a, size_t b) {
|
||||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in a new issue