Skip to content

Commit

Permalink
abrt-journal: use GList instead of char** in abrt_journal_set_journal…
Browse files Browse the repository at this point in the history
…_filter()

In case we want to use more journal filter it is easier to manipulate with
GList than with array.
Also argument parser returns GList in case of LIST parameter.

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
  • Loading branch information
Matej Habrnal committed Nov 6, 2015
1 parent 5d7c51d commit 6a70aad
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 19 deletions.
8 changes: 5 additions & 3 deletions src/plugins/abrt-dump-journal-core.c
Expand Up @@ -532,9 +532,9 @@ main(int argc, char *argv[])
* Of cores, it is possible to override this when need while debugging.
*/
const char *const env_journal_filter = getenv("ABRT_DUMP_JOURNAL_CORE_DEBUG_FILTER");
static const char *coredump_journal_filter[2] = { 0 };
coredump_journal_filter[0] = (env_journal_filter ? env_journal_filter : "SYSLOG_IDENTIFIER=systemd-coredump");
log_debug("Using journal match: '%s'", coredump_journal_filter[0]);
GList *coredump_journal_filter = NULL;
coredump_journal_filter = g_list_append(coredump_journal_filter,
(env_journal_filter ? (gpointer)env_journal_filter : (gpointer)"SYSLOG_IDENTIFIER=systemd-coredump"));

abrt_journal_t *journal = NULL;
if (abrt_journal_new(&journal))
Expand All @@ -543,6 +543,8 @@ main(int argc, char *argv[])
if (abrt_journal_set_journal_filter(journal, coredump_journal_filter) < 0)
error_msg_and_die(_("Cannot filter systemd-journal to systemd-coredump data only"));

g_list_free(coredump_journal_filter);

if ((opts & OPT_e) && abrt_journal_seek_tail(journal) < 0)
error_msg_and_die(_("Cannot seek to the end of journal"));

Expand Down
8 changes: 5 additions & 3 deletions src/plugins/abrt-dump-journal-oops.c
Expand Up @@ -266,9 +266,9 @@ int main(int argc, char *argv[])
oops_utils_flags |= ABRT_OOPS_PRINT_STDOUT;

const char *const env_journal_filter = getenv("ABRT_DUMP_JOURNAL_OOPS_DEBUG_FILTER");
static const char *kernel_journal_filter[2] = { 0 };
kernel_journal_filter[0] = (env_journal_filter ? env_journal_filter : "SYSLOG_IDENTIFIER=kernel");
log_debug("Using journal match: '%s'", kernel_journal_filter[0]);
GList *kernel_journal_filter = NULL;
kernel_journal_filter = g_list_append(kernel_journal_filter,
(env_journal_filter ? (gpointer)env_journal_filter : (gpointer)"SYSLOG_IDENTIFIER=kernel"));

abrt_journal_t *journal = NULL;
if ((opts & OPT_J))
Expand All @@ -287,6 +287,8 @@ int main(int argc, char *argv[])
if (abrt_journal_set_journal_filter(journal, kernel_journal_filter) < 0)
error_msg_and_die(_("Cannot filter systemd-journal to kernel data only"));

g_list_free(kernel_journal_filter);

if ((opts & OPT_e) && abrt_journal_seek_tail(journal) < 0)
error_msg_and_die(_("Cannot seek to the end of journal"));

Expand Down
7 changes: 3 additions & 4 deletions src/plugins/abrt-dump-journal-xorg.c
Expand Up @@ -216,11 +216,10 @@ int main(int argc, char *argv[])
if ((opts & OPT_o))
xorg_utils_flags |= ABRT_XORG_PRINT_STDOUT;

const char *const env_journal_filter = getenv("ABRT_DUMP_JOURNAL_XORG_DEBUG_FILTER");
static const char *xorg_journal_filter[2] = { 0 };
char *env_journal_filter = getenv("ABRT_DUMP_JOURNAL_XORG_DEBUG_FILTER");
GList *xorg_journal_filter = NULL;
/* _COMM=gdm-x-session works for Fedora 22+ */
xorg_journal_filter[0] = (env_journal_filter ? env_journal_filter : "_COMM=gdm-x-session");
log_debug("Using journal match: '%s'", xorg_journal_filter[0]);
xorg_journal_filter = g_list_append(xorg_journal_filter, (env_journal_filter ? env_journal_filter : (char *)"_COMM=gdm-x-session"));

abrt_journal_t *journal = NULL;
if ((opts & OPT_J))
Expand Down
14 changes: 6 additions & 8 deletions src/plugins/abrt-journal.c
Expand Up @@ -92,20 +92,18 @@ void abrt_journal_free(abrt_journal_t *journal)
free(journal);
}

int abrt_journal_set_journal_filter(abrt_journal_t *journal, const char *const *journal_filter_list)
int abrt_journal_set_journal_filter(abrt_journal_t *journal, GList *journal_filter_list)
{
const char *const *cursor = journal_filter_list;

while (*cursor)
for (GList *l = journal_filter_list; l != NULL; l = l->next)
{
const int r = sd_journal_add_match(journal->j, *cursor, strlen(*cursor));
const char *filter = l->data;
const int r = sd_journal_add_match(journal->j, filter, strlen(filter));
if (r < 0)
{
log_notice("Failed to set journal filter: %s", strerror(-r));
log_notice("Failed to set journal filter '%s': %s", filter, strerror(-r));
return r;
}

++cursor;
log_debug("Using journal match: '%s'", filter);
}

return 0;
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/abrt-journal.h
Expand Up @@ -45,7 +45,7 @@ int abrt_journal_open_directory(abrt_journal_t **journal, const char *directory)
void abrt_journal_free(abrt_journal_t *journal);

int abrt_journal_set_journal_filter(abrt_journal_t *journal,
const char *const *journal_filter_list);
GList *journal_filter_list);

int abrt_journal_get_field(abrt_journal_t *journal,
const char *field,
Expand Down

0 comments on commit 6a70aad

Please sign in to comment.