diff options
author | David King <davidk@gnome.org> | 2013-10-03 11:56:16 +0100 |
---|---|---|
committer | David King <davidk@gnome.org> | 2013-10-07 20:38:30 +0100 |
commit | 3b3dcc1f8673199145798324cc1856bab713f81a (patch) | |
tree | 7f01256bc3aeb692116be6d2040932c1442ea0b9 /src | |
parent | 53166e178dad8d68f4428d0f1ce4860a82e486fb (diff) | |
download | gnome-logs-3b3dcc1f8673199145798324cc1856bab713f81a.tar.gz |
Use new journal query API for "security" category
Diffstat (limited to 'src')
-rw-r--r-- | src/gl-eventview.c | 138 |
1 files changed, 30 insertions, 108 deletions
diff --git a/src/gl-eventview.c b/src/gl-eventview.c index e616953..3c73a11 100644 --- a/src/gl-eventview.c +++ b/src/gl-eventview.c @@ -548,18 +548,25 @@ insert_journal_query_devices (GlJournal *journal, } static void -insert_journal_items_security (sd_journal *journal, GtkListBox *listbox) +insert_journal_query_security (GlJournal *journal, + const GlJournalQuery *query, + GtkListBox *listbox) { - gsize i; + GList *results = NULL; + GList *l; + gsize n_results; + + results = gl_journal_query (journal, query); + + n_results = g_list_length (results); - for (i = 0; i < 10; i++) + if (n_results != N_RESULTS) + { + g_debug ("Number of results different than requested"); + } + + for (l = results; l != NULL; l = g_list_next (l)) { - gint ret; - const gchar *audit; - const gchar *message; - const gchar *comm; - gchar *cursor; - gsize length; GtkWidget *row; GtkStyleContext *context; GtkWidget *grid; @@ -567,77 +574,25 @@ insert_journal_items_security (sd_journal *journal, GtkListBox *listbox) gchar *markup; gboolean rtl; GtkWidget *image; + GlJournalResult result = *(GlJournalResult *)(l->data); - ret = sd_journal_get_data (journal, "_AUDIT_SESSION", - (const void **)&audit, &length); - - if (ret == -ENOENT) - { - g_debug ("Skipping journal entry without audit session"); - --i; - goto out; - } - else if (ret < 0) - { - g_warning ("Error getting message from systemd journal: %s", - g_strerror (-ret)); - break; - } - - ret = sd_journal_get_data (journal, "_COMM", (const void **)&comm, - &length); - - if (ret < 0) - { - g_debug ("Unable to get commandline from systemd journal: %s", - g_strerror (-ret)); - comm = "_COMM="; - } - - ret = sd_journal_get_data (journal, "MESSAGE", (const void **)&message, - &length); - - if (ret < 0) - { - g_warning ("Error getting message from systemd journal: %s", - g_strerror (-ret)); - break; - } - - ret = sd_journal_get_cursor (journal, &cursor); - - if (ret < 0) - { - g_warning ("Error getting cursor for current journal entry: %s", - g_strerror (-ret)); - break; - } - - ret = sd_journal_test_cursor (journal, cursor); - - if (ret < 0) + /* Skip if the journal entry does not have an associated audit + * session. */ + if (*result.audit_session == '\0') { - g_warning ("Error testing cursor string: %s", g_strerror (-ret)); - free (cursor); - break; - } - else if (ret == 0) - { - g_warning ("Cursor string does not match journal entry"); - /* Not a problem at this point, but would be when seeking to the - * cursor later on. */ + continue; } row = gtk_list_box_row_new (); context = gtk_widget_get_style_context (GTK_WIDGET (row)); gtk_style_context_add_class (context, "event"); - /* sd_journal_get_cursor allocates the cursor with libc malloc. */ - g_object_set_data_full (G_OBJECT (row), "cursor", cursor, free); + g_object_set_data_full (G_OBJECT (row), "cursor", + g_strdup (result.cursor), g_free); grid = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); gtk_container_add (GTK_CONTAINER (row), grid); - markup = g_markup_printf_escaped ("<b>%s</b>", strchr (comm, '=') + 1); + markup = g_markup_printf_escaped ("<b>%s</b>", result.comm); label = gtk_label_new (NULL); gtk_widget_set_hexpand (label, TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); @@ -646,7 +601,7 @@ insert_journal_items_security (sd_journal *journal, GtkListBox *listbox) g_free (markup); gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); - label = gtk_label_new (strchr (message, '=') + 1); + label = gtk_label_new (result.message); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); @@ -658,21 +613,9 @@ insert_journal_items_security (sd_journal *journal, GtkListBox *listbox) gtk_grid_attach (GTK_GRID (grid), image, 1, 0, 1, 2); gtk_container_add (GTK_CONTAINER (listbox), row); - -out: - ret = sd_journal_previous (journal); - - if (ret < 0) - { - g_warning ("Error setting cursor to previous systemd journal entry %s", - g_strerror (-ret)); - break; - } - else if (ret == 0) - { - g_debug ("End of systemd journal reached"); - } } + + gl_journal_results_free (journal, results); } static void @@ -921,40 +864,19 @@ static void gl_event_view_add_listbox_security (GlEventView *view) { GlEventViewPrivate *priv; - gint ret; - sd_journal *journal; + const GlJournalQuery query = { N_RESULTS, NULL }; GtkWidget *listbox; GtkWidget *scrolled; priv = gl_event_view_get_instance_private (view); - journal = gl_journal_get_journal (priv->journal); - - ret = sd_journal_seek_tail (journal); - - if (ret < 0) - { - g_warning ("Error seeking to end of systemd journal: %s", - g_strerror (-ret)); - } - - ret = sd_journal_previous (journal); - - if (ret < 0) - { - g_warning ("Error setting cursor to end of systemd journal: %s", - g_strerror (-ret)); - } - else if (ret == 0) - { - g_debug ("End of systemd journal reached"); - } listbox = gtk_list_box_new (); gtk_list_box_set_filter_func (GTK_LIST_BOX (listbox), (GtkListBoxFilterFunc)listbox_search_filter_func, view, NULL); - insert_journal_items_security (journal, GTK_LIST_BOX (listbox)); + insert_journal_query_security (priv->journal, &query, + GTK_LIST_BOX (listbox)); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (scrolled), listbox); |