Fix VC++ compilation error
authorJeff Cohen <jeffc@jolt-lang.org>
Fri, 24 Dec 2004 02:38:34 +0000 (02:38 +0000)
committerJeff Cohen <jeffc@jolt-lang.org>
Fri, 24 Dec 2004 02:38:34 +0000 (02:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19124 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Win32/Path.cpp
lib/System/Win32/Path.inc

index c50877afb1aca41755bec8358ba51e7c794c1236..9377c426454d21af45854be4b711c0a596c18ab7 100644 (file)
@@ -23,6 +23,9 @@
 #include <fstream>
 #include <malloc.h>
 
+// We need to undo a macro defined in Windows.h, otherwise we won't compile:
+#undef CopyFile
+
 static void FlipBackSlashes(std::string& s) {
   for (size_t i = 0; i < s.size(); i++)
     if (s[i] == '\\')
@@ -574,13 +577,15 @@ bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
 
 void 
 sys::CopyFile(const sys::Path &Dest, const sys::Path &Src) {
-  if (!::CopyFile(Src.c_str(), Dest.c_str(), false))
+  // Can't use CopyFile macro defined in Windows.h because it would mess up the
+  // above line.  We use the expansion it would have in a non-UNICODE build.
+  if (!::CopyFileA(Src.c_str(), Dest.c_str(), false))
     ThrowError("Can't copy '" + Src.toString() + 
                "' to '" + Dest.toString() + "'");
 }
 
 void 
-Path::makeUnique( bool reuse_current ) {
+Path::makeUnique(bool reuse_current) {
   if (reuse_current && !exists())
     return; // File doesn't exist already, just use it!
 
index c50877afb1aca41755bec8358ba51e7c794c1236..9377c426454d21af45854be4b711c0a596c18ab7 100644 (file)
@@ -23,6 +23,9 @@
 #include <fstream>
 #include <malloc.h>
 
+// We need to undo a macro defined in Windows.h, otherwise we won't compile:
+#undef CopyFile
+
 static void FlipBackSlashes(std::string& s) {
   for (size_t i = 0; i < s.size(); i++)
     if (s[i] == '\\')
@@ -574,13 +577,15 @@ bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
 
 void 
 sys::CopyFile(const sys::Path &Dest, const sys::Path &Src) {
-  if (!::CopyFile(Src.c_str(), Dest.c_str(), false))
+  // Can't use CopyFile macro defined in Windows.h because it would mess up the
+  // above line.  We use the expansion it would have in a non-UNICODE build.
+  if (!::CopyFileA(Src.c_str(), Dest.c_str(), false))
     ThrowError("Can't copy '" + Src.toString() + 
                "' to '" + Dest.toString() + "'");
 }
 
 void 
-Path::makeUnique( bool reuse_current ) {
+Path::makeUnique(bool reuse_current) {
   if (reuse_current && !exists())
     return; // File doesn't exist already, just use it!