summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-09 15:06:44 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-09 15:06:44 +0100
commit57e6ab1d067c2a6ee7b6d6d9db41701817f02f5e (patch)
tree6b6cc79ecb54b50ab7633f7ffa5ad2b45522dcf5
parentd40146089b5957184af45de3cb91c4feed7ebd16 (diff)
downloadabrt-57e6ab1d067c2a6ee7b6d6d9db41701817f02f5e.tar.gz
abrt-57e6ab1d067c2a6ee7b6d6d9db41701817f02f5e.tar.xz
abrt-57e6ab1d067c2a6ee7b6d6d9db41701817f02f5e.zip
abrt-gtk: some cleanups
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r--src/gui-gtk/Makefile.am8
-rw-r--r--src/gui-gtk/abrt-gtk.c95
-rw-r--r--src/gui-gtk/abrt-gtk.h1
-rw-r--r--src/gui-gtk/list_dir.c61
-rw-r--r--src/gui-gtk/list_dir.h2
-rw-r--r--src/gui-gtk/main.c60
6 files changed, 86 insertions, 141 deletions
diff --git a/src/gui-gtk/Makefile.am b/src/gui-gtk/Makefile.am
index d476866c..c8524183 100644
--- a/src/gui-gtk/Makefile.am
+++ b/src/gui-gtk/Makefile.am
@@ -17,9 +17,9 @@ abrt_gtk_CFLAGS = \
-DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \
-DICON_DIR=\"${datadir}/abrt/icons/hicolor/48x48/status\" \
$(GTK_CFLAGS) \
- $(DBUS_CFLAGS) \
-D_GNU_SOURCE \
-Wall -Werror
+# $(DBUS_CFLAGS)
# -I/usr/include/glib-2.0
# -I/usr/lib/glib-2.0/include
# $(LIBNOTIFY_CFLAGS)
@@ -29,9 +29,9 @@ abrt_gtk_LDADD = \
../lib/libabrt_dbus.la \
-lglib-2.0 \
-lgthread-2.0 \
- $(DBUS_LIBS) \
- $(LIBNOTIFY_LIBS) \
$(GTK_LIBS)
+# $(DBUS_LIBS)
+# $(LIBNOTIFY_LIBS)
#test_report_SOURCES = \
# test_report.c
@@ -45,4 +45,4 @@ abrt_gtk_LDADD = \
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
-@INTLTOOL_DESKTOP_RULE@ \ No newline at end of file
+@INTLTOOL_DESKTOP_RULE@
diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c
index d67c690b..c0df5ebf 100644
--- a/src/gui-gtk/abrt-gtk.c
+++ b/src/gui-gtk/abrt-gtk.c
@@ -1,24 +1,19 @@
-#include <abrtlib.h>
#include <gtk/gtk.h>
-#include <time.h>
-#include <stdlib.h>
-#include "list_dir.h"
#include "abrtlib.h"
+#include "list_dir.h"
-
-
-GtkListStore *dumps_list_store;
-GtkTreeIter iter;
+static GtkListStore *dumps_list_store;
+static GtkTreeIter iter___;
enum
{
- COLUMN_REPORTED,
- COLUMN_APPLICATION,
- COLUMN_HOSTNAME,
- COLUMN_LATEST_CRASH_STR,
- COLUMN_LATEST_CRASH,
- COLUMN_DUMP_DIR,
- NUM_COLUMNS
+ COLUMN_REPORTED,
+ COLUMN_APPLICATION,
+ COLUMN_HOSTNAME,
+ COLUMN_LATEST_CRASH_STR,
+ COLUMN_LATEST_CRASH,
+ COLUMN_DUMP_DIR,
+ NUM_COLUMNS
};
/*
@@ -29,17 +24,16 @@ void gtk_tree_model_get_value (GtkTreeModel *tree_model,
GValue *value);
*/
-
-void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
+static void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
{
GtkTreeIter iter;
GtkTreeSelection *selection = gtk_tree_view_get_selection(tree_view);
GtkTreeModel *dump_list_store = gtk_tree_view_get_model(tree_view);
gtk_tree_model_get_iter(dump_list_store, &iter, path);
GValue d_dir = {0};
- if(selection != NULL)
+ if (selection != NULL)
{
- if(gtk_tree_selection_get_selected(selection, &dump_list_store, &iter) == TRUE)
+ if (gtk_tree_selection_get_selected(selection, &dump_list_store, &iter) == TRUE)
{
gtk_tree_model_get_value(dump_list_store, &iter, COLUMN_DUMP_DIR, &d_dir);
g_print("CALL: run_event(%s)\n", g_value_get_string(&d_dir));
@@ -47,14 +41,12 @@ void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewC
}
}
-void view_store_add_item(gpointer item, gpointer data)
+static void view_store_add_item(gpointer item, gpointer data)
{
char *dir = (char *)item;
- struct dump_dir *dd;
-
- dd = dd_opendir(dir, DD_OPEN_READONLY);
- if(dd == NULL)
+ struct dump_dir *dd = dd_opendir(dir, DD_OPEN_READONLY);
+ if (!dd)
return;
time_t time = atoi(dd_load_text(dd, FILENAME_TIME));
@@ -63,8 +55,8 @@ void view_store_add_item(gpointer item, gpointer data)
size_t time_len = strftime(time_buf, 59, "%c", ptm);
time_buf[time_len] = '\0';
- gtk_list_store_append(dumps_list_store, &iter);
- gtk_list_store_set(dumps_list_store, &iter,
+ gtk_list_store_append(dumps_list_store, &iter___);
+ gtk_list_store_set(dumps_list_store, &iter___,
COLUMN_REPORTED, "??",
COLUMN_APPLICATION, dd_load_text(dd, FILENAME_EXECUTABLE),
COLUMN_HOSTNAME, dd_load_text(dd, FILENAME_HOSTNAME),
@@ -77,52 +69,51 @@ void view_store_add_item(gpointer item, gpointer data)
VERB1 log("added: %s\n", dir);
}
-static void
-add_columns (GtkTreeView *treeview)
+static void add_columns(GtkTreeView *treeview)
{
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
- /* column reported */
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Reported"),
+ /* column reported */
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_("Reported"),
renderer,
"text",
COLUMN_REPORTED,
NULL);
- gtk_tree_view_column_set_sort_column_id(column, COLUMN_REPORTED);
- gtk_tree_view_append_column(treeview, column);
+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_REPORTED);
+ gtk_tree_view_append_column(treeview, column);
- /* column for executable path */
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Application"),
+ /* column for executable path */
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_("Application"),
renderer,
"text",
COLUMN_APPLICATION,
NULL);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, COLUMN_APPLICATION);
- gtk_tree_view_append_column(treeview, column);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_APPLICATION);
+ gtk_tree_view_append_column(treeview, column);
- /* column for hostname */
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Hostname"),
+ /* column for hostname */
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_("Hostname"),
renderer,
"text",
COLUMN_HOSTNAME,
NULL);
- gtk_tree_view_column_set_sort_column_id(column, COLUMN_HOSTNAME);
- gtk_tree_view_append_column(treeview, column);
+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_HOSTNAME);
+ gtk_tree_view_append_column(treeview, column);
- /* column for the date of the last crash */
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Last Crash"),
+ /* column for the date of the last crash */
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_("Last Crash"),
renderer,
"text",
COLUMN_LATEST_CRASH_STR,
NULL);
- gtk_tree_view_column_set_sort_column_id(column, COLUMN_LATEST_CRASH);
- gtk_tree_view_append_column(treeview, column);
+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_LATEST_CRASH);
+ gtk_tree_view_append_column(treeview, column);
}
@@ -166,7 +157,7 @@ GtkWidget *main_window_create()
G_TYPE_STRING, /* time */
G_TYPE_INT, /* unix time - used for sort */
G_TYPE_STRING);/* dump dir path */
- //if(dumps_list_store == NULL)
+ //if (dumps_list_store == NULL)
// return NULL;
gtk_tree_view_set_model(GTK_TREE_VIEW(dump_tv), GTK_TREE_MODEL(dumps_list_store));
g_signal_connect(dump_tv, "row-activated", G_CALLBACK(on_row_activated_cb), NULL);
diff --git a/src/gui-gtk/abrt-gtk.h b/src/gui-gtk/abrt-gtk.h
index c8c9e017..a3c2cbf7 100644
--- a/src/gui-gtk/abrt-gtk.h
+++ b/src/gui-gtk/abrt-gtk.h
@@ -1,3 +1,2 @@
int dump_list_hydrate(char *path);
GtkWidget *main_window_create();
-
diff --git a/src/gui-gtk/list_dir.c b/src/gui-gtk/list_dir.c
index 8a0d47bd..0e471a84 100644
--- a/src/gui-gtk/list_dir.c
+++ b/src/gui-gtk/list_dir.c
@@ -1,48 +1,29 @@
-#ifndef _GNU_SOURCE
- #define _GNU_SOURCE
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <locale.h>
-#include <glib.h>
+#include "abrtlib.h"
GList *get_dump_list(const char *path)
{
- GList *dumps = NULL;
- DIR *dp;
- struct dirent *ep;
- //char *path = "./";
- char *current_dir_path;
-
- dp = opendir(path);
+ DIR *dp = opendir(path);
+ if (!dp)
+ {
+ perror_msg("Can't open directory '%s'", path);
+ return NULL;
+ }
- if (dp != NULL)
+ GList *dumps = NULL;
+ struct dirent *dent;
+ while ((dent = readdir(dp)) != NULL)
{
- while ((ep = readdir (dp)))
- /* d_type is not supported on all systems, but should be ok for us
- * can be implemented using stat if someone wants to do it...
- */
- if(ep->d_name && ep->d_name[0] != '.' && ep->d_type == DT_DIR)
- {
- if(asprintf(&current_dir_path, "%s/%s", path, ep->d_name) != -1)
- {
- //FIXME: should be int ret = access(current_dir_path, R_OK|W_OK);
- int ret = access(current_dir_path, R_OK);
- if(ret == 0)
- {
- dumps = g_list_prepend(dumps, current_dir_path);
- }
- }
- }
- (void) closedir (dp);
+ if (dot_or_dotdot(dent->d_name))
+ continue; /* skip "." and ".." */
+
+ char *current_dir_path = concat_path_file(path, dent->d_name);
+ //FIXME: should be int ret = access(current_dir_path, R_OK|W_OK);
+ int ret = access(current_dir_path, R_OK);
+ if (ret == 0)
+ dumps = g_list_prepend(dumps, current_dir_path);
+ else
+ free(current_dir_path);
}
- else
- fprintf(stderr, "Couldn't open the directory %s: %s\n", path, strerror(errno));
+ closedir(dp);
return dumps;
}
diff --git a/src/gui-gtk/list_dir.h b/src/gui-gtk/list_dir.h
index 1ee14e5d..cd3ef7c4 100644
--- a/src/gui-gtk/list_dir.h
+++ b/src/gui-gtk/list_dir.h
@@ -1,3 +1 @@
-
GList *get_dump_list(const char *path);
-
diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c
index 66fee821..dfb3b04d 100644
--- a/src/gui-gtk/main.c
+++ b/src/gui-gtk/main.c
@@ -1,61 +1,37 @@
#include <gtk/gtk.h>
-
#include "abrtlib.h"
#include "abrt-gtk.h"
-
-
int main(int argc, char **argv)
{
/* I18n */
setlocale(LC_ALL, "");
- char *path = ".";
- //int optflags = 0;
- int opt;
- while ((opt = getopt(argc, argv, "c:d:v")) != -1)
+ gtk_init(&argc, &argv);
+
+ GtkWidget *main_window = main_window_create();
+
+ const char *default_dirs[] = {
+ "/var/spool/abrt",
+ NULL,
+ NULL,
+ };
+ argv++;
+ if (!argv[0])
{
- switch (opt)
- {
- case 'c':
- VERB1 log("Loading settings from '%s'", optarg);
- //load_conf_file(optarg, settings, /*skip key w/o values:*/ true);
- VERB3 log("Loaded '%s'", optarg);
- break;
- case 'd':
- path = optarg;
- break;
- case 'v':
- g_verbose++;
- break;
- default:
- /* Careful: the string below contains tabs, dont replace with spaces */
- error_msg_and_die(
- "Usage: abrt-gtk -c CONFFILE -d DIR [-v]"
- "\n"
- "\nReport a crash to Bugzilla"
- "\n"
- "\nOptions:"
- "\n -c FILE Configuration file (may be given many times)"
- "\n -d DIR Crash dump directory"
- "\n -v Verbose"
- "\n -s Log to syslog"
- );
- }
+ char *home = getenv("HOME");
+ if (home)
+ default_dirs[1] = concat_path_file(home, ".abrt/spool");
+ argv = (char**)default_dirs;
}
+ while (*argv)
+ dump_list_hydrate(*argv++);
- if (argc > 1)
- path = argv[1];
-
- gtk_init(&argc, &argv);
+ gtk_widget_show_all(main_window);
/* Prevent zombies when we spawn wizard */
signal(SIGCHLD, SIG_IGN);
- GtkWidget *main_window = main_window_create();
- dump_list_hydrate(path);
- gtk_widget_show_all(main_window);
-
/* Enter main loop */
gtk_main();