#include "support/filetools.h"
-#include <fstream>
-using lyx::support::bformat;
-using lyx::support::MakeDisplayPath;
+namespace lyx {
+
+using support::bformat;
+using support::FileName;
+using support::makeDisplayPath;
using std::ofstream;
using std::string;
-bool openFileWrite(ofstream & ofs, string const & fname)
+namespace {
+
+template<typename OFStream>
+bool doOpenFileWrite(OFStream & ofs, FileName const & fname)
{
- ofs.open(fname.c_str());
+ ofs.open(fname.toFilesystemEncoding().c_str());
if (!ofs) {
- string const file = MakeDisplayPath(fname, 50);
- string text = bformat(_("Could not open the specified "
- "document\n%1$s."), file);
- Alert::error(_("Could not open file"), text);
+ docstring const file = makeDisplayPath(fname.absFilename(), 50);
+ docstring text = bformat(_("Could not open the specified "
+ "document\n%1$s."), file);
+ frontend::Alert::error(_("Could not open file"), text);
return false;
}
return true;
}
+
+}
+
+
+bool openFileWrite(ofstream & ofs, FileName const & fname)
+{
+ return doOpenFileWrite(ofs, fname);
+}
+
+
+bool openFileWrite(odocfstream & ofs, FileName const & fname)
+{
+ return doOpenFileWrite(ofs, fname);
+}
+
+
+} // namespace lyx