]> git.lyx.org Git - lyx.git/blobdiff - src/support/copy.C
another safety belt
[lyx.git] / src / support / copy.C
index ed1fa9ea456a45afad3829646294add8f18e751d..b89f2159494aa836f937e62e6292c69778ed059e 100644 (file)
@@ -1,15 +1,25 @@
 #include <config.h>
 
-#include <stdio.h>
+#include <fstream>
 
 #include "support/lyxlib.h"
 #include "LString.h"
-#include "support/syscall.h"
-#include "support/filetools.h"
 
-bool lyx::copy(char const * from, char const * to)
+using std::ifstream;
+using std::ofstream;
+using std::ios;
+
+bool lyx::copy(string const & from, string const & to)
 {
-       string command = "cp " + QuoteName(from) + " " + QuoteName(to);
-       return Systemcalls().startscript(Systemcalls::System,
-                                        command) == 0;
+       ifstream ifs(from.c_str());
+       if (!ifs)
+               return false;
+       ofstream ofs(to.c_str(),
+                    ios::binary | ios::out | ios::trunc);
+       if (!ofs)
+               return false;
+       ofs << ifs.rdbuf();
+       if (ofs.good())
+               return true;
+       return false;
 }