#include <fstream>
+#include "support/filename.h"
#include "support/lyxlib.h"
#ifdef HAVE_SYS_STAT_H
# include <sys/types.h>
#endif
-#if defined(HAVE_CHMOD) && defined(_MSC_VER)
-#include <io.h>
-#endif
namespace lyx {
using std::string;
-bool lyx::support::chmod(string const & file, unsigned long int mode)
+bool lyx::support::chmod(FileName const & file, unsigned long int mode)
{
-#ifdef HAVE_CHMOD
- if (::chmod(file.c_str(), mode_t(mode)) != 0)
+#if defined (HAVE_CHMOD) && defined (HAVE_MODE_T)
+ if (::chmod(file.toFilesystemEncoding().c_str(), mode_t(mode)) != 0)
return false;
#else
# ifdef WITH_WARNINGS
}
-bool lyx::support::copy(string const & from, string const & to, unsigned long int mode)
+bool lyx::support::copy(FileName const & from, FileName const & to, unsigned long int mode)
{
- ifstream ifs(from.c_str(), ios::binary | ios::in);
+ ifstream ifs(from.toFilesystemEncoding().c_str(), ios::binary | ios::in);
if (!ifs)
return false;
if (mode != (unsigned long int)-1) {
- ofstream ofs(to.c_str(), ios::binary | ios::out | ios::trunc);
+ ofstream ofs(to.toFilesystemEncoding().c_str(), ios::binary | ios::out | ios::trunc);
if (!ofs)
return false;
ofs.close();
- if (!chmod(to, mode_t(mode)))
+ if (!support::chmod(to, mode))
return false;
}
- ofstream ofs(to.c_str(), ios::binary | ios::out | ios::trunc);
+ ofstream ofs(to.toFilesystemEncoding().c_str(), ios::binary | ios::out | ios::trunc);
if (!ofs)
return false;