diff options
-rw-r--r-- | src/daemon/abrt-server.c | 4 | ||||
-rw-r--r-- | src/gui-gtk/abrt-gtk.c | 34 | ||||
-rw-r--r-- | src/hooks/abrt-hook-ccpp.c | 4 | ||||
-rw-r--r-- | src/include/abrtlib.h | 6 | ||||
-rw-r--r-- | src/lib/Makefile.am | 3 | ||||
-rw-r--r-- | src/lib/create_dump_dir.c | 5 | ||||
-rw-r--r-- | src/lib/iso_date_string.c | 31 | ||||
-rw-r--r-- | src/plugins/abrt-action-rhtsupport.c | 2 | ||||
-rw-r--r-- | src/plugins/abrt-action-upload.c | 2 |
9 files changed, 63 insertions, 28 deletions
diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c index f34f3366..de22f427 100644 --- a/src/daemon/abrt-server.c +++ b/src/daemon/abrt-server.c @@ -107,9 +107,9 @@ static void create_debug_dump() This directory is renamed to final directory name after all files have been stored into it. */ - char *path = xasprintf(DEBUG_DUMPS_DIR"/%s-%ld-%u.new", + char *path = xasprintf(DEBUG_DUMPS_DIR"/%s-%s-%u.new", dir_basename, - (long)time(NULL), + iso_date_string(NULL), pid); /* No need to check the path length, as all variables used are limited, and dd_create() fails if the path is too long. */ diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c index 085ed9f0..ae21fa30 100644 --- a/src/gui-gtk/abrt-gtk.c +++ b/src/gui-gtk/abrt-gtk.c @@ -10,8 +10,8 @@ static GtkWidget *s_treeview; enum { COLUMN_REPORTED, - COLUMN_APPLICATION, - COLUMN_HOSTNAME, + COLUMN_REASON, + COLUMN_DIRNAME, COLUMN_LATEST_CRASH_STR, COLUMN_LATEST_CRASH, COLUMN_DUMP_DIR, @@ -36,23 +36,21 @@ void add_directory_to_dirlist(const char *dirname) ); const char *reported = (msg ? GTK_STOCK_YES : GTK_STOCK_NO); free(msg); - char *executable = dd_load_text(dd, FILENAME_EXECUTABLE); - char *hostname = dd_load_text(dd, FILENAME_HOSTNAME); + char *reason = dd_load_text(dd, FILENAME_REASON); GtkTreeIter iter; gtk_list_store_append(s_dumps_list_store, &iter); gtk_list_store_set(s_dumps_list_store, &iter, COLUMN_REPORTED, reported, - COLUMN_APPLICATION, executable, - COLUMN_HOSTNAME, hostname, + COLUMN_REASON, reason, + COLUMN_DIRNAME, dd->dd_dir, //OPTION: time format COLUMN_LATEST_CRASH_STR, time_buf, COLUMN_LATEST_CRASH, (int)time, COLUMN_DUMP_DIR, dirname, -1); - free(hostname); - free(executable); + free(reason); dd_close(dd); VERB1 log("added: %s", dirname); @@ -136,40 +134,38 @@ static void add_columns(GtkTreeView *treeview) GtkCellRenderer *renderer; GtkTreeViewColumn *column; - /* column reported */ renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new_with_attributes(_("Reported"), renderer, "stock_id", COLUMN_REPORTED, NULL); + gtk_tree_view_column_set_resizable(column, TRUE); 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 = gtk_tree_view_column_new_with_attributes(_("Problem"), renderer, "text", - COLUMN_APPLICATION, + COLUMN_REASON, NULL); gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sort_column_id(column, COLUMN_APPLICATION); + gtk_tree_view_column_set_sort_column_id(column, COLUMN_REASON); 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 = gtk_tree_view_column_new_with_attributes(_("Stored in"), renderer, "text", - COLUMN_HOSTNAME, + COLUMN_DIRNAME, NULL); - gtk_tree_view_column_set_sort_column_id(column, COLUMN_HOSTNAME); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sort_column_id(column, COLUMN_DIRNAME); 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 = gtk_tree_view_column_new_with_attributes(_("Last occurrence"), renderer, "text", COLUMN_LATEST_CRASH_STR, diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c index ea618cf9..ac8f90ee 100644 --- a/src/hooks/abrt-hook-ccpp.c +++ b/src/hooks/abrt-hook-ccpp.c @@ -489,8 +489,8 @@ int main(int argc, char** argv) return 0; } - unsigned path_len = snprintf(path, sizeof(path), "%s/ccpp-%ld-%lu.new", - dddir, (long)time(NULL), (long)pid); + unsigned path_len = snprintf(path, sizeof(path), "%s/ccpp-%s-%lu.new", + dddir, iso_date_string(NULL), (long)pid); if (path_len >= (sizeof(path) - sizeof("/"FILENAME_COREDUMP))) return 1; diff --git a/src/include/abrtlib.h b/src/include/abrtlib.h index ecae0de7..61731587 100644 --- a/src/include/abrtlib.h +++ b/src/include/abrtlib.h @@ -221,6 +221,12 @@ char* get_cmdline(pid_t pid); #define daemon_is_ok abrt_daemon_is_ok int daemon_is_ok(); +/* Takes ptr to time_t, or NULL if you want to use current time. + * Returns "YYYY-MM-DD-hh:mm:ss" string. + */ +#define iso_date_string abrt_iso_date_string +char *iso_date_string(time_t *pt); + #define make_description_bz abrt_make_description_bz char* make_description_bz(crash_data_t *crash_data); #define make_description_reproduce_comment abrt_make_description_reproduce_comment diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 566d2931..bad3e63a 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -25,13 +25,14 @@ libreport_la_SOURCES = \ append_to_malloced_string.c \ overlapping_strcpy.c \ skip_whitespace.c \ + glib_support.c \ + iso_date_string.c \ strbuf.c strbuf.h \ xatonum.c \ spawn.c \ dirsize.c \ dump_dir.c \ get_cmdline.c \ - glib_support.c \ daemon_is_ok.c \ load_plugin_settings.c \ make_descr.c \ diff --git a/src/lib/create_dump_dir.c b/src/lib/create_dump_dir.c index 2caf9af9..cbacdab6 100644 --- a/src/lib/create_dump_dir.c +++ b/src/lib/create_dump_dir.c @@ -31,8 +31,8 @@ static struct dump_dir *try_dd_create(const char *base_dir_name, const char *dir struct dump_dir *create_dump_dir_from_crash_data(crash_data_t *crash_data, const char *base_dir_name) { - char dir_name[sizeof("abrt-tmp-%lu-%lu") + sizeof(long)*3 * 2]; - sprintf(dir_name, "abrt-tmp-%lu-%lu", (long)getpid(), (long)time(NULL)); + char dir_name[sizeof("abrt-tmp-YYYY-MM-DD-HH:MM:SS-%lu") + sizeof(long)*3]; + sprintf(dir_name, "abrt-tmp-%s-%lu", iso_date_string(NULL), (long)getpid()); struct dump_dir *dd; if (base_dir_name) @@ -53,6 +53,7 @@ struct dump_dir *create_dump_dir_from_crash_data(crash_data_t *crash_data, const free(home); } } +//TODO: try user's home dir obtained by getpwuid(getuid())? /* Try /tmp */ if (!dd) dd = try_dd_create("/tmp", dir_name); diff --git a/src/lib/iso_date_string.c b/src/lib/iso_date_string.c new file mode 100644 index 00000000..4600ff7f --- /dev/null +++ b/src/lib/iso_date_string.c @@ -0,0 +1,31 @@ +/* + Copyright (C) 2011 ABRT team + Copyright (C) 2011 RedHat Inc + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "abrtlib.h" + +char *iso_date_string(time_t *pt) +{ + static char buf[sizeof("YYYY-MM-DD-HH:MM:SS") + 4]; + + time_t t; + struct tm *ptm = localtime(pt ? pt : (time(&t), &t)); + strftime(buf, sizeof(buf), "%Y-%m-%d-%H:%M:%S", ptm); + + return buf; +} diff --git a/src/plugins/abrt-action-rhtsupport.c b/src/plugins/abrt-action-rhtsupport.c index 3ec81522..94523e08 100644 --- a/src/plugins/abrt-action-rhtsupport.c +++ b/src/plugins/abrt-action-rhtsupport.c @@ -95,7 +95,7 @@ static void report_to_rhtsupport( file = new_reportfile(); /* SELinux guys are not happy with /tmp, using /var/run/abrt */ - tempfile = xasprintf(LOCALSTATEDIR"/run/abrt/tmp-%lu-%lu.tar.gz", (long)getpid(), (long)time(NULL)); + tempfile = xasprintf(LOCALSTATEDIR"/run/abrt/tmp-%s-%lu.tar.gz", iso_date_string(NULL), (long)getpid()); int pipe_from_parent_to_child[2]; xpipe(pipe_from_parent_to_child); diff --git a/src/plugins/abrt-action-upload.c b/src/plugins/abrt-action-upload.c index 6f9c5fab..88380bd7 100644 --- a/src/plugins/abrt-action-upload.c +++ b/src/plugins/abrt-action-upload.c @@ -128,7 +128,7 @@ static int create_and_upload_archive( /* Create a child gzip which will compress the data */ /* SELinux guys are not happy with /tmp, using /var/run/abrt */ - tempfile = xasprintf(LOCALSTATEDIR"/run/abrt/upload-%lu-%lu.tar.gz", (long)getpid(), (long)time(NULL)); + tempfile = xasprintf(LOCALSTATEDIR"/run/abrt/upload-%s-%lu.tar.gz", iso_date_string(NULL), (long)getpid()); int pipe_from_parent_to_child[2]; xpipe(pipe_from_parent_to_child); child = fork(); |