aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorChris Maynard <Christopher.Maynard@GTECH.COM>2011-12-12 00:27:32 +0000
committerChris Maynard <Christopher.Maynard@GTECH.COM>2011-12-12 00:27:32 +0000
commitcbb120e6263a288e1dd3b9ed36bf5266e80df17a (patch)
treedf385bd039df6b28501950cfd7f2a3cba1811559 /gtk
parent89a747fb07339f1d1567536ab5497f780dfc8bd2 (diff)
If no filename, include the packet number in the generic name. TODO: Implement the ct2ext() function.
svn path=/trunk/; revision=40154
Diffstat (limited to 'gtk')
-rw-r--r--gtk/export_object.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/gtk/export_object.c b/gtk/export_object.c
index 96cafa81a8..f3f98a1715 100644
--- a/gtk/export_object.c
+++ b/gtk/export_object.c
@@ -298,6 +298,14 @@ eo_massage_str(const gchar *in_str, gsize maxlen, int dup)
return out_str;
}
+static const char *
+ct2ext(const char *content_type _U_)
+{
+ /* TODO: Map the content type string to an extension string. If no match,
+ * return NULL. */
+ return NULL;
+}
+
static void
eo_save_all_clicked_cb(GtkWidget *widget _U_, gpointer arg)
{
@@ -324,14 +332,19 @@ eo_save_all_clicked_cb(GtkWidget *widget _U_, gpointer arg)
save_in_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(save_in_w));
if ((strlen(save_in_path) < MAXFILELEN)) {
do {
- /* TODO: If no filename, we could try to use the "Content
- * Type" to automatically append an appropriate filename
- * extension to the generic "object" name so that it would
- * make it that much easier to know what the file contains
- * even though we don't have its actual name. */
- safe_filename = eo_massage_str(entry->filename ?
- entry->filename : "object",
- MAXFILELEN - strlen(save_in_path), count);
+ if (entry->filename)
+ safe_filename = eo_massage_str(entry->filename,
+ MAXFILELEN - strlen(save_in_path), count);
+ else {
+ char generic_name[256];
+ const char *ext;
+ ext = ct2ext(entry->content_type);
+ g_snprintf(generic_name, sizeof(generic_name),
+ "object%u%s%s", entry->pkt_num, ext ? "." : "",
+ ext ? "ext" : "");
+ safe_filename = eo_massage_str(generic_name,
+ MAXFILELEN - strlen(save_in_path), count);
+ }
save_as_fullpath = g_build_filename(
save_in_path, safe_filename->str, NULL);
g_string_free(safe_filename, TRUE);