X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=23f89a3b8c5fb76559087519f341d7b9420a29bd;hb=cd8cb77fd12c77417f7c50acc135de77afd335f1;hp=927f9d5de3dc90c5b671a6c00712821be53cffe4;hpb=9828d3a39e35f69e6e37159380a6fcbe6bba2f02;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 927f9d5de3..23f89a3b8c 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -336,34 +336,46 @@ name_has_suffix (const gchar *name) } static gboolean -load_file (PsppireWindow *de, const gchar *file_name, gpointer not_used) +load_file (PsppireWindow *de, const gchar *file_name, gpointer syn) { - struct string filename; - gchar *utf8_file_name; - const char *mime_type; - gchar *syntax; + const char *mime_type = NULL; + gchar *syntax = NULL; bool ok; - ds_init_empty (&filename); - - utf8_file_name = g_filename_to_utf8 (file_name, -1, NULL, NULL, NULL); - - syntax_gen_string (&filename, ss_cstr (utf8_file_name)); - - g_free (utf8_file_name); + if (syn == NULL) + { + gchar *utf8_file_name; + struct string filename; + ds_init_empty (&filename); + + utf8_file_name = g_filename_to_utf8 (file_name, -1, NULL, NULL, NULL); + + syntax_gen_string (&filename, ss_cstr (utf8_file_name)); + + g_free (utf8_file_name); + + syntax = g_strdup_printf ("GET FILE=%s.", ds_cstr (&filename)); + ds_destroy (&filename); - syntax = g_strdup_printf ("GET FILE=%s.", ds_cstr (&filename)); - ds_destroy (&filename); + } + else + { + syntax = syn; + } ok = execute_syntax (PSPPIRE_DATA_WINDOW (de), lex_reader_for_string (syntax)); g_free (syntax); - mime_type = (name_has_por_suffix (file_name) - ? "application/x-spss-por" - : "application/x-spss-sav"); - - add_most_recent (file_name, mime_type); + if (ok && syn == NULL) + { + if (name_has_por_suffix (file_name)) + mime_type = "application/x-spss-por"; + else if (name_has_sav_suffix (file_name)) + mime_type = "application/x-spss-sav"; + + add_most_recent (file_name, mime_type); + } return ok; }