As an experiment, use PBD::ScopedFileDescriptor in preference to 'ofstream' which...
authorJohn Emmas <johne53@tiscali.co.uk>
Sat, 5 Sep 2015 17:02:32 +0000 (18:02 +0100)
committerJohn Emmas <johne53@tiscali.co.uk>
Sat, 5 Sep 2015 17:02:32 +0000 (18:02 +0100)
This change should ensure that our "been_here_before" file ('.a3' or whatever) will get created successfully - even for user paths with non-English characters in them.

If this experiment works on all platforms, there are several other areas where we'll probably need something similar.

gtk2_ardour/startup.cc

index 719e94f2412e515269b25f97b3c2995f022fc393..f3e1808a9c4487057ea4cae224d7c3b86d41ba54 100644 (file)
 
 #include <fstream>
 #include <algorithm>
+#include <fcntl.h>
+
+#include <glib/gstdio.h>
 
 #include <gtkmm/main.h>
 #include <gtkmm/filechooser.h>
 
 #include "pbd/failed_constructor.h"
+#include "pbd/scoped_file_descriptor.h"
 #include "pbd/file_utils.h"
 #include "pbd/replace_all.h"
 #include "pbd/whitespace.h"
@@ -126,7 +130,7 @@ ArdourStartup::required ()
                if (Glib::file_test (ARDOUR::been_here_before_path (v), Glib::FILE_TEST_EXISTS)) {
                        if (v != current_version) {
                                /* older version exists, create the current one */
-                               ofstream fout (been_here_before_path (current_version).c_str());
+                               PBD::ScopedFileDescriptor fout (g_open (been_here_before_path (current_version).c_str(), O_CREAT|O_TRUNC|O_RDWR, 0666));
                        }
                        return false;
                }
@@ -418,7 +422,7 @@ ArdourStartup::on_apply ()
                /* "touch" the been-here-before path now we've successfully
                   made it through the first time setup (at least)
                */
-               ofstream fout (been_here_before_path().c_str());
+               PBD::ScopedFileDescriptor fout (g_open (been_here_before_path ().c_str(), O_CREAT|O_TRUNC|O_RDWR, 0666));
 
        }