summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/daemon/abrt-server.c4
-rw-r--r--src/gui-gtk/abrt-gtk.c34
-rw-r--r--src/hooks/abrt-hook-ccpp.c4
-rw-r--r--src/include/abrtlib.h6
-rw-r--r--src/lib/Makefile.am3
-rw-r--r--src/lib/create_dump_dir.c5
-rw-r--r--src/lib/iso_date_string.c31
-rw-r--r--src/plugins/abrt-action-rhtsupport.c2
-rw-r--r--src/plugins/abrt-action-upload.c2
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();