summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
cce3553)
All functions should either log the errors they run into, or only return
them in which case the caller should log them.
Make sure this rule is followed, so that each error is logged precisely
once, and neither never, nor more than once.
+ return log_error_errno(r, "Failed to get journal fields: %m");
r = sd_journal_get_data(j, "_SOURCE_REALTIME_TIMESTAMP", &data, &length);
if (r == -ENOENT)
log_debug("Source realtime timestamp not found");
r = sd_journal_get_data(j, "_SOURCE_REALTIME_TIMESTAMP", &data, &length);
if (r == -ENOENT)
log_debug("Source realtime timestamp not found");
- else if (r < 0) {
- log_full_errno(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR, r,
- "Failed to get source realtime timestamp: %m");
- return r;
- } else {
+ else if (r < 0)
+ return log_full_errno(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR, r, "Failed to get source realtime timestamp: %m");
+ else {
_cleanup_free_ char *value = NULL;
size_t size;
_cleanup_free_ char *value = NULL;
size_t size;
if (r < 0) {
r = sd_journal_get_realtime_usec(j, &realtime);
if (r < 0) {
r = sd_journal_get_realtime_usec(j, &realtime);
- if (r < 0) {
- log_full_errno(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR, r,
- "Failed to get realtime timestamp: %m");
- return r;
- }
+ if (r < 0)
+ return log_full_errno(r == -EADDRNOTAVAIL ? LOG_DEBUG : LOG_ERR, r, "Failed to get realtime timestamp: %m");
}
r = sd_journal_get_cursor(j, &cursor);
}
r = sd_journal_get_cursor(j, &cursor);
h = hashmap_new(&string_hash_ops);
if (!h)
h = hashmap_new(&string_hash_ops);
if (!h)
/* First round, iterate through the entry and count how often each field appears */
JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
/* First round, iterate through the entry and count how often each field appears */
JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
n = strndup(data, eq - (const char*) data);
if (!n) {
n = strndup(data, eq - (const char*) data);
if (!n) {
r = hashmap_put(h, n, UINT_TO_PTR(1));
if (r < 0) {
free(n);
r = hashmap_put(h, n, UINT_TO_PTR(1));
if (r < 0) {
free(n);
goto finish;
}
} else {
r = hashmap_update(h, n, UINT_TO_PTR(u + 1));
free(n);
goto finish;
}
} else {
r = hashmap_update(h, n, UINT_TO_PTR(u + 1));
free(n);
+ if (r < 0) {
+ log_oom();
n = strndup(data, m);
if (!n) {
n = strndup(data, m);
if (!n) {
/* Seek to end */
r = sd_journal_seek_tail(j);
if (r < 0)
/* Seek to end */
r = sd_journal_seek_tail(j);
if (r < 0)
+ return log_error_errno(r, "Failed to seek to tail: %m");
r = sd_journal_previous_skip(j, how_many);
if (r < 0)
r = sd_journal_previous_skip(j, how_many);
if (r < 0)
+ return log_error_errno(r, "Failed to skip previous: %m");
if (need_seek) {
r = sd_journal_next(j);
if (r < 0)
if (need_seek) {
r = sd_journal_next(j);
if (r < 0)
+ return log_error_errno(r, "Failed to iterate through journal: %m");
if (r == -ESTALE)
continue;
else if (r < 0)
if (r == -ESTALE)
continue;
else if (r < 0)
+ return log_error_errno(r, "Failed to get journal time: %m");
if (usec < not_before)
continue;
if (usec < not_before)
continue;
r = output_journal(f, j, mode, n_columns, flags, ellipsized);
if (r < 0)
r = output_journal(f, j, mode, n_columns, flags, ellipsized);
if (r < 0)
}
if (warn_cutoff && line < how_many && not_before > 0) {
}
if (warn_cutoff && line < how_many && not_before > 0) {
r = sd_id128_get_boot(&boot_id);
if (r < 0)
r = sd_id128_get_boot(&boot_id);
if (r < 0)
+ return log_error_errno(r, "Failed to get boot id: %m");
r = sd_journal_get_cutoff_monotonic_usec(j, boot_id, &cutoff, NULL);
if (r < 0)
r = sd_journal_get_cutoff_monotonic_usec(j, boot_id, &cutoff, NULL);
if (r < 0)
+ return log_error_errno(r, "Failed to get journal cutoff time: %m");
if (r > 0 && not_before < cutoff) {
maybe_print_begin_newline(f, &flags);
if (r > 0 && not_before < cutoff) {
maybe_print_begin_newline(f, &flags);
r = sd_journal_wait(j, USEC_INFINITY);
if (r < 0)
r = sd_journal_wait(j, USEC_INFINITY);
if (r < 0)
+ return log_error_errno(r, "Failed to wait for journal: %m");
}
int add_matches_for_unit(sd_journal *j, const char *unit) {
}
int add_matches_for_unit(sd_journal *j, const char *unit) {
r = sd_journal_add_conjunction(j);
if (r < 0)
r = sd_journal_add_conjunction(j);
if (r < 0)
+ return log_error_errno(r, "Failed to add conjunction: %m");
r = sd_journal_open(&j, journal_open_flags);
if (r < 0)
r = sd_journal_open(&j, journal_open_flags);
if (r < 0)
+ return log_error_errno(r, "Failed to open journal: %m");
r = add_match_this_boot(j, NULL);
if (r < 0)
r = add_match_this_boot(j, NULL);
if (r < 0)
else
r = add_matches_for_user_unit(j, unit, uid);
if (r < 0)
else
r = add_matches_for_user_unit(j, unit, uid);
if (r < 0)
+ return log_error_errno(r, "Failed to add unit matches: %m");
if (_unlikely_(log_get_max_level() >= LOG_DEBUG)) {
_cleanup_free_ char *filter;
filter = journal_make_match_string(j);
if (_unlikely_(log_get_max_level() >= LOG_DEBUG)) {
_cleanup_free_ char *filter;
filter = journal_make_match_string(j);
+ if (!filter)
+ return log_oom();
+
log_debug("Journal filter: %s", filter);
}
log_debug("Journal filter: %s", filter);
}