]> git.mxchange.org Git - flightgear.git/commitdiff
Further SGPath API usage improvements.
authorJames Turner <zakalawe@mac.com>
Fri, 15 Jul 2016 15:35:17 +0000 (16:35 +0100)
committerRoland Haeder <roland@mxchange.org>
Thu, 22 Sep 2016 21:27:47 +0000 (23:27 +0200)
src/Main/fg_commands.cxx
src/Scripting/NasalSys.cxx

index 1040b5f9ef21ba3e6e5c7a7ef02042ace9bfab72..ab8760693d4de4102ae05838ab72c283c57ef7ff 100644 (file)
@@ -331,7 +331,7 @@ do_save (const SGPropertyNode * arg)
 
     bool write_all = arg->getBoolValue("write-all", false);
     SG_LOG(SG_INPUT, SG_INFO, "Saving flight");
-    ofstream output(validated_path.c_str());
+    sg_ofstream output(validated_path);
     if (output.good() && fgSaveFlight(output, write_all)) {
         output.close();
         SG_LOG(SG_INPUT, SG_INFO, "Saved flight to " << file);
index 9931905110b58908698ee129c4fdd41c66b6531d..83abdd167867eb4ed7c5484e7e0f39d3e61e1bf6 100644 (file)
@@ -26,6 +26,7 @@
 #include <simgear/misc/sg_path.hxx>
 #include <simgear/misc/sgstream.hxx>
 #include <simgear/misc/sg_dir.hxx>
+#include <simgear/misc/strutils.hxx>
 #include <simgear/misc/SimpleMarkdown.hxx>
 #include <simgear/structure/commands.hxx>
 #include <simgear/math/sg_geodesy.hxx>
@@ -693,8 +694,14 @@ static naRef f_open(naContext c, naRef me, int argc, naRef* args)
         return naNil();
     }
 
-    f = fopen(filename.c_str(), modestr);
-
+#if defined(SG_WINDOWS)
+    std::wstring fp = filename.wstr();
+    std::wstring wmodestr = simgear::strutils::convertUtf8ToWString(modestr);
+    f = _wfopen(fp.c_str(), wmodestr.c_str());
+#else
+    std::string fp = filename.local8BitStr();
+    f = fopen(fp.c_str(), modestr);
+#endif
     if(!f) naRuntimeError(c, strerror(errno));
     return naIOGhost(c, f);
 }
@@ -728,13 +735,13 @@ static naRef f_parsexml(naContext c, naRef me, int argc, naRef* args)
         naRuntimeError(c, "parsexml(): access denied (unauthorized directory)");
         return naNil();
     }
-    sg_ifstream input(file);
+
     NasalXMLVisitor visitor(c, argc, args);
     try {
-        readXML(input, visitor);
+        readXML(file, visitor);
     } catch (const sg_exception& e) {
-        naRuntimeError(c, "parsexml(): file '%s' %s",
-                file.c_str(), e.getFormattedMessage().c_str());
+        std::string fp = file.utf8Str();
+        naRuntimeError(c, "parsexml(): file '%s' %s", fp.c_str(), e.getFormattedMessage().c_str());
         return naNil();
     }