mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +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,
|
||||
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,
|
||||
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
||||
/// remove the New file.
|
||||
@ -43,12 +38,6 @@ void MoveFileOverIfUpdated(const std::string &New, const std::string &Old);
|
||||
///
|
||||
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
|
||||
/// when the object is destroyed. This handle acts similarly to an
|
||||
/// std::auto_ptr, in that the copy constructor and assignment operators
|
||||
|
@ -13,18 +13,10 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Support/FileUtilities.h"
|
||||
#include "llvm/Support/DataTypes.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 <iostream>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
/// 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;
|
||||
}
|
||||
|
||||
|
||||
/// 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,
|
||||
/// or if Old does not exist, move the New file over the Old file. Otherwise,
|
||||
/// remove the New file.
|
||||
@ -114,48 +70,6 @@ void llvm::removeFile(const std::string &Filename) {
|
||||
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
|
||||
@ -170,4 +84,3 @@ FDHandle &FDHandle::operator=(int fd) throw() {
|
||||
FD = fd;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user