As an experiment, use PBD::ScopedFileDescriptor in preference to 'ofstream' which doesn't support UTF8 (on Windows at least)

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.
This commit is contained in:
John Emmas 2015-09-05 18:02:32 +01:00
parent 0b2af5b9b8
commit 03163154a2

View File

@ -24,11 +24,15 @@
#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));
}