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:
Reid Spencer 2004-12-15 01:46:54 +00:00
parent f9960f769a
commit 67f6d3ad30
2 changed files with 1 additions and 99 deletions

View File

@ -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

View File

@ -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;
}