From d3a3f8ccf0f226b0aab8b8aebb70ac4856dc6282 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 9 Feb 2011 15:07:29 +0100 Subject: abrt-gtk: more cleanups Signed-off-by: Denys Vlasenko --- src/gui-gtk/Makefile.am | 5 +---- src/gui-gtk/abrt-gtk.c | 35 ++++++++++++----------------------- src/gui-gtk/abrt-gtk.h | 4 ++-- src/gui-gtk/list_dir.c | 29 ----------------------------- src/gui-gtk/list_dir.h | 1 - src/gui-gtk/main.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 61 insertions(+), 61 deletions(-) delete mode 100644 src/gui-gtk/list_dir.c delete mode 100644 src/gui-gtk/list_dir.h (limited to 'src/gui-gtk') diff --git a/src/gui-gtk/Makefile.am b/src/gui-gtk/Makefile.am index c8524183..4a77b3f3 100644 --- a/src/gui-gtk/Makefile.am +++ b/src/gui-gtk/Makefile.am @@ -1,10 +1,7 @@ bin_PROGRAMS = abrt-gtk abrt_gtk_SOURCES = \ - list_dir.c \ - list_dir.h \ - abrt-gtk.h \ - abrt-gtk.c \ + abrt-gtk.h abrt-gtk.c \ main.c abrt_gtk_CFLAGS = \ -I$(srcdir)/../include/report -I$(srcdir)/../include \ diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c index c0df5ebf..313b6633 100644 --- a/src/gui-gtk/abrt-gtk.c +++ b/src/gui-gtk/abrt-gtk.c @@ -1,6 +1,6 @@ #include #include "abrtlib.h" -#include "list_dir.h" +#include "abrt-gtk.h" static GtkListStore *dumps_list_store; static GtkTreeIter iter___; @@ -17,8 +17,7 @@ enum }; /* - -void gtk_tree_model_get_value (GtkTreeModel *tree_model, +void gtk_tree_model_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); @@ -26,13 +25,13 @@ void gtk_tree_model_get_value (GtkTreeModel *tree_model, 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) { + GtkTreeIter iter; + 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 (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); @@ -41,11 +40,9 @@ static void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTr } } -static void view_store_add_item(gpointer item, gpointer data) +void add_directory_to_dirlist(const char *dirname) { - char *dir = (char *)item; - - struct dump_dir *dd = dd_opendir(dir, DD_OPEN_READONLY); + struct dump_dir *dd = dd_opendir(dirname, DD_OPEN_READONLY); if (!dd) return; @@ -63,10 +60,10 @@ static void view_store_add_item(gpointer item, gpointer data) //OPTION: time format COLUMN_LATEST_CRASH_STR, time_buf, COLUMN_LATEST_CRASH, (int)time, - COLUMN_DUMP_DIR, dir, + COLUMN_DUMP_DIR, dirname, -1); dd_close(dd); - VERB1 log("added: %s\n", dir); + VERB1 log("added: %s\n", dirname); } static void add_columns(GtkTreeView *treeview) @@ -117,15 +114,7 @@ static void add_columns(GtkTreeView *treeview) } -int dump_list_hydrate(char *path) -{ - GList *dumps = get_dump_list(path); - g_list_foreach(dumps, view_store_add_item, NULL); - - return 0; -} - -GtkWidget *main_window_create() +GtkWidget *create_main_window(void) { /* main window */ GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); diff --git a/src/gui-gtk/abrt-gtk.h b/src/gui-gtk/abrt-gtk.h index a3c2cbf7..bf25cf71 100644 --- a/src/gui-gtk/abrt-gtk.h +++ b/src/gui-gtk/abrt-gtk.h @@ -1,2 +1,2 @@ -int dump_list_hydrate(char *path); -GtkWidget *main_window_create(); +GtkWidget *create_main_window(void); +void add_directory_to_dirlist(const char *dirname); diff --git a/src/gui-gtk/list_dir.c b/src/gui-gtk/list_dir.c deleted file mode 100644 index 0e471a84..00000000 --- a/src/gui-gtk/list_dir.c +++ /dev/null @@ -1,29 +0,0 @@ -#include "abrtlib.h" - -GList *get_dump_list(const char *path) -{ - DIR *dp = opendir(path); - if (!dp) - { - perror_msg("Can't open directory '%s'", path); - return NULL; - } - - GList *dumps = NULL; - struct dirent *dent; - while ((dent = readdir(dp)) != NULL) - { - 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); - } - closedir(dp); - return dumps; -} diff --git a/src/gui-gtk/list_dir.h b/src/gui-gtk/list_dir.h deleted file mode 100644 index cd3ef7c4..00000000 --- a/src/gui-gtk/list_dir.h +++ /dev/null @@ -1 +0,0 @@ -GList *get_dump_list(const char *path); diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c index dfb3b04d..b18f854f 100644 --- a/src/gui-gtk/main.c +++ b/src/gui-gtk/main.c @@ -1,15 +1,59 @@ #include #include "abrtlib.h" +#include "parse_options.h" #include "abrt-gtk.h" +#define PROGNAME "abrt-gtk" + +static void scan_directory_and_add_to_dirlist(const char *path) +{ + DIR *dp = opendir(path); + if (!dp) + { + /* We don't want to yell if, say, $HOME/.abrt/spool doesn't exist */ + //perror_msg("Can't open directory '%s'", path); + return; + } + + struct dirent *dent; + while ((dent = readdir(dp)) != NULL) + { + if (dot_or_dotdot(dent->d_name)) + continue; /* skip "." and ".." */ + + char *full_name = concat_path_file(path, dent->d_name); + struct stat statbuf; + if (stat(full_name, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) + add_directory_to_dirlist(full_name); + free(full_name); + } + closedir(dp); +} + int main(int argc, char **argv) { /* I18n */ setlocale(LC_ALL, ""); + /* Can't keep these strings/structs static: _() doesn't support that */ + const char *program_usage_string = _( + PROGNAME" [-v] [DIR]...\n\n" + "Shows list of ABRT dump directories in specified DIR(s)\n" + "(default DIRs: "DEBUG_DUMPS_DIR" $HOME/.abrt/spool)" + ); + enum { + OPT_v = 1 << 0, + }; + /* Keep enum above and order of options below in sync! */ + struct options program_options[] = { + OPT__VERBOSE(&g_verbose), + OPT_END() + }; + /*unsigned opts =*/ parse_opts(argc, argv, program_options, program_usage_string); + gtk_init(&argc, &argv); - GtkWidget *main_window = main_window_create(); + GtkWidget *main_window = create_main_window(); const char *default_dirs[] = { "/var/spool/abrt", @@ -25,7 +69,7 @@ int main(int argc, char **argv) argv = (char**)default_dirs; } while (*argv) - dump_list_hydrate(*argv++); + scan_directory_and_add_to_dirlist(*argv++); gtk_widget_show_all(main_window); -- cgit