mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-20 09:24:58 +00:00
For PR351:
Remove getUniqueFilename and CopyFile. These are now implemented by sys::Path::makeUnique and sys::CopyFile, respectively. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18946 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f9960f769a
commit
67f6d3ad30
@ -28,11 +28,6 @@ namespace llvm {
|
|||||||
bool DiffFiles(const std::string &FileA, const std::string &FileB,
|
bool DiffFiles(const std::string &FileA, const std::string &FileB,
|
||||||
std::string *Error = 0);
|
std::string *Error = 0);
|
||||||
|
|
||||||
/// CopyFile - Copy the specified source file to the specified destination,
|
|
||||||
/// overwriting destination if it exists. This returns true on failure.
|
|
||||||
///
|
|
||||||
bool CopyFile(const std::string &Dest, const std::string &Src);
|
|
||||||
|
|
||||||
/// MoveFileOverIfUpdated - If the file specified by New is different than Old,
|
/// MoveFileOverIfUpdated - If the file specified by New is different than Old,
|
||||||
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
||||||
/// remove the New file.
|
/// remove the New file.
|
||||||
@ -43,12 +38,6 @@ void MoveFileOverIfUpdated(const std::string &New, const std::string &Old);
|
|||||||
///
|
///
|
||||||
void removeFile(const std::string &Filename);
|
void removeFile(const std::string &Filename);
|
||||||
|
|
||||||
/// getUniqueFilename - Return a filename with the specified prefix. If the
|
|
||||||
/// file does not exist yet, return it, otherwise add a suffix to make it
|
|
||||||
/// unique.
|
|
||||||
///
|
|
||||||
std::string getUniqueFilename(const std::string &FilenameBase);
|
|
||||||
|
|
||||||
/// FDHandle - Simple handle class to make sure a file descriptor gets closed
|
/// FDHandle - Simple handle class to make sure a file descriptor gets closed
|
||||||
/// when the object is destroyed. This handle acts similarly to an
|
/// when the object is destroyed. This handle acts similarly to an
|
||||||
/// std::auto_ptr, in that the copy constructor and assignment operators
|
/// std::auto_ptr, in that the copy constructor and assignment operators
|
||||||
|
@ -13,18 +13,10 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "llvm/Support/FileUtilities.h"
|
#include "llvm/Support/FileUtilities.h"
|
||||||
#include "llvm/Support/DataTypes.h"
|
|
||||||
#include "llvm/System/Path.h"
|
#include "llvm/System/Path.h"
|
||||||
#include "llvm/Config/unistd.h"
|
|
||||||
#include "llvm/Config/fcntl.h"
|
|
||||||
#include "llvm/Config/sys/types.h"
|
|
||||||
#include "llvm/Config/sys/stat.h"
|
|
||||||
#include "llvm/Config/sys/mman.h"
|
|
||||||
#include "llvm/Config/alloca.h"
|
|
||||||
#include <cerrno>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
/// DiffFiles - Compare the two files specified, returning true if they are
|
/// DiffFiles - Compare the two files specified, returning true if they are
|
||||||
@ -58,42 +50,6 @@ bool llvm::DiffFiles(const std::string &FileA, const std::string &FileB,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// CopyFile - Copy the specified source file to the specified destination,
|
|
||||||
/// overwriting destination if it exists. This returns true on failure.
|
|
||||||
///
|
|
||||||
bool llvm::CopyFile(const std::string &Dest, const std::string &Src) {
|
|
||||||
FDHandle InFD(open(Src.c_str(), O_RDONLY));
|
|
||||||
if (InFD == -1) return true;
|
|
||||||
|
|
||||||
FileRemover FR(Dest);
|
|
||||||
|
|
||||||
FDHandle OutFD(open(Dest.c_str(), O_WRONLY|O_CREAT, 0666));
|
|
||||||
if (OutFD == -1) return true;
|
|
||||||
|
|
||||||
char Buffer[16*1024];
|
|
||||||
while (ssize_t Amt = read(InFD, Buffer, 16*1024)) {
|
|
||||||
if (Amt == -1) {
|
|
||||||
if (errno != EINTR) return true; // Error reading the file.
|
|
||||||
} else {
|
|
||||||
char *BufPtr = Buffer;
|
|
||||||
while (Amt) {
|
|
||||||
ssize_t AmtWritten = write(OutFD, BufPtr, Amt);
|
|
||||||
if (AmtWritten == -1) {
|
|
||||||
if (errno != EINTR) return true; // Error writing the file.
|
|
||||||
} else {
|
|
||||||
Amt -= AmtWritten;
|
|
||||||
BufPtr += AmtWritten;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FR.releaseFile(); // Success!
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// MoveFileOverIfUpdated - If the file specified by New is different than Old,
|
/// MoveFileOverIfUpdated - If the file specified by New is different than Old,
|
||||||
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
||||||
/// remove the New file.
|
/// remove the New file.
|
||||||
@ -114,48 +70,6 @@ void llvm::removeFile(const std::string &Filename) {
|
|||||||
std::remove(Filename.c_str());
|
std::remove(Filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getUniqueFilename - Return a filename with the specified prefix. If the
|
|
||||||
/// file does not exist yet, return it, otherwise add a suffix to make it
|
|
||||||
/// unique.
|
|
||||||
///
|
|
||||||
std::string llvm::getUniqueFilename(const std::string &FilenameBase) {
|
|
||||||
if (!std::ifstream(FilenameBase.c_str()))
|
|
||||||
return FilenameBase; // Couldn't open the file? Use it!
|
|
||||||
|
|
||||||
// Create a pattern for mkstemp...
|
|
||||||
char *FNBuffer = new char[FilenameBase.size()+8];
|
|
||||||
strcpy(FNBuffer, FilenameBase.c_str());
|
|
||||||
strcpy(FNBuffer+FilenameBase.size(), "-XXXXXX");
|
|
||||||
|
|
||||||
// Agree on a temporary file name to use....
|
|
||||||
#if defined(HAVE_MKSTEMP) && !defined(_MSC_VER)
|
|
||||||
int TempFD;
|
|
||||||
if ((TempFD = mkstemp(FNBuffer)) == -1) {
|
|
||||||
// FIXME: this should return an emtpy string or something and allow the
|
|
||||||
// caller to deal with the error!
|
|
||||||
std::cerr << "bugpoint: ERROR: Cannot create temporary file in the current "
|
|
||||||
<< " directory!\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// We don't need to hold the temp file descriptor... we will trust that no one
|
|
||||||
// will overwrite/delete the file while we are working on it...
|
|
||||||
close(TempFD);
|
|
||||||
#else
|
|
||||||
// If we don't have mkstemp, use the old and obsolete mktemp function.
|
|
||||||
if (mktemp(FNBuffer) == 0) {
|
|
||||||
// FIXME: this should return an emtpy string or something and allow the
|
|
||||||
// caller to deal with the error!
|
|
||||||
std::cerr << "bugpoint: ERROR: Cannot create temporary file in the current "
|
|
||||||
<< " directory!\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::string Result(FNBuffer);
|
|
||||||
delete[] FNBuffer;
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// FDHandle class implementation
|
// FDHandle class implementation
|
||||||
@ -170,4 +84,3 @@ FDHandle &FDHandle::operator=(int fd) throw() {
|
|||||||
FD = fd;
|
FD = fd;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user