summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-03 15:37:56 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-03 15:37:56 +0100
commit8dc0fd1a9ff0f17d43abfe5c230612fd5aaaf35d (patch)
tree3725d272a986a2afafc7eeda68d9cd07b61c6526
parent3fc1eead9f0671c87e62b2059eb0332760eb2e88 (diff)
downloadabrt-8dc0fd1a9ff0f17d43abfe5c230612fd5aaaf35d.tar.gz
abrt-8dc0fd1a9ff0f17d43abfe5c230612fd5aaaf35d.tar.xz
abrt-8dc0fd1a9ff0f17d43abfe5c230612fd5aaaf35d.zip
in bz/rhts description, list attachments and their sizes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r--src/lib/make_descr.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/lib/make_descr.c b/src/lib/make_descr.c
index d1209101..56f6a9a7 100644
--- a/src/lib/make_descr.c
+++ b/src/lib/make_descr.c
@@ -126,6 +126,7 @@ char* make_description_bz(crash_data_t *crash_data)
g_hash_table_iter_init(&iter, crash_data);
while (g_hash_table_iter_next(&iter, (void**)&name, (void**)&value))
{
+ struct stat statbuf;
unsigned flags = value->flags;
const char *content = value->content;
if (flags & CD_FLAG_TXT)
@@ -167,13 +168,33 @@ char* make_description_bz(crash_data_t *crash_data)
strbuf_append_str(buf_dsc, tmp);
free(tmp);
- } else {
- bool was_multiline = 0;
- char *dsc = NULL;
- add_content(&was_multiline, &dsc, "Attached file", name);
- strbuf_append_str(buf_dsc, dsc);
- free(dsc);
}
+ else
+ {
+ statbuf.st_size = strlen(content);
+ goto add_attachment_info;
+ }
+ }
+ if (flags & CD_FLAG_BIN)
+ {
+ /* In many cases, it is useful to know how big binary files are
+ * (for example, helps with diagnosing bug upload problems)
+ */
+ if (stat(content, &statbuf) != 0)
+ statbuf.st_size = (off_t) -1;
+
+ add_attachment_info: ;
+ char *descr;
+ if (statbuf.st_size >= 0)
+ descr = xasprintf("%s, %llu bytes", name, (long long)statbuf.st_size);
+ else
+ descr = xstrdup(name);
+ bool was_multiline = 0;
+ char *tmp = NULL;
+ add_content(&was_multiline, &tmp, "Attached file", descr);
+ free(descr);
+ strbuf_append_str(buf_dsc, tmp);
+ free(tmp);
}
}