Quoted strings in generated syntax.
[pspp-builds.git] / src / ui / gui / data-editor.c
index 4d7d6b5c5deec4bbcc81d5ab409b7191777f5407..3cecdd71e7baa614af5a42596bb42e572e3d51bf 100644 (file)
@@ -41,6 +41,7 @@
 #include "data-editor.h"
 #include "syntax-editor.h"
 #include <language/syntax-string-source.h>
+#include <libpspp/syntax-gen.h>
 #include "window-manager.h"
 
 #include "psppire-data-store.h"
@@ -135,6 +136,8 @@ new_data_editor (void)
 
   vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
 
+  g_assert(vs); /* Traps a possible bug in win32 build */
+
   g_signal_connect (vs->dict, "weight-changed",
                    G_CALLBACK (on_weight_change),
                    de);
@@ -836,22 +839,28 @@ static void
 save_file (struct data_editor *de)
 {
   struct getl_interface *sss;
+  struct string file_name ;
 
   g_assert (de->file_name);
 
+  ds_init_cstr (&file_name, de->file_name);
+  gen_quoted_string (&file_name);
+
   if ( de->save_as_portable )
     {
       append_filename_suffix (de, ".por");
-      sss = create_syntax_string_source ("EXPORT OUTFILE='%s'.",
-                                        de->file_name);
+      sss = create_syntax_string_source ("EXPORT OUTFILE=%s.",
+                                        ds_cstr (&file_name));
     }
   else
     {
       append_filename_suffix (de, ".sav");
-      sss = create_syntax_string_source ("SAVE OUTFILE='%s'.",
-                                        de->file_name);
+      sss = create_syntax_string_source ("SAVE OUTFILE=%s.",
+                                        ds_cstr (&file_name));
     }
 
+  ds_destroy (&file_name);
+
   execute_syntax (sss);
 }
 
@@ -1001,13 +1010,20 @@ open_data_dialog (GtkAction *action, struct data_editor *de)
     case GTK_RESPONSE_ACCEPT:
       {
        struct getl_interface *sss;
+       struct string filename;
        g_free (de->file_name);
        de->file_name =
          gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
-       sss = create_syntax_string_source ("GET FILE='%s'.", de->file_name);
+       ds_init_cstr (&filename, de->file_name);
+
+       gen_quoted_string (&filename);
+
+       sss = create_syntax_string_source ("GET FILE=%s.", 
+                                          ds_cstr (&filename));
 
        execute_syntax (sss);
+       ds_destroy (&filename);
 
        window_set_name_from_filename (e, de->file_name);
       }