mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
04d734c2f6
This chagne just renames some sys::Path methods to ensure they are not misused. The Path documentation now divides methods into two dimensions: Path/Disk and accessor/mutator. Path accessors and mutators only operate on the Path object itself without making any disk accesses. Disk accessors and mutators will also access or modify the file system. Because of the potentially destructive nature of disk mutators, it was decided that all such methods should end in the work "Disk" to ensure the user recognizes that the change will occur on the file system. This patch makes that change. The method name changes are: makeReadable -> makeReadableOnDisk makeWriteable -> makeWriteableOnDisk makeExecutable -> makeExecutableOnDisk setStatusInfo -> setStatusInfoOnDisk createDirectory -> createDirectoryOnDisk createFile -> createFileOnDisk createTemporaryFile -> createTemporaryFileOnDisk destroy -> eraseFromDisk rename -> renamePathOnDisk These changes pass the Linux Deja Gnu tests. llvm-svn: 22354
59 lines
2.1 KiB
C++
59 lines
2.1 KiB
C++
//===- llvm/Support/FileUtilities.h - File System Utilities -----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file was developed by the LLVM research group and is distributed under
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines a family of utility functions which are useful for doing
|
|
// various things with files.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_SUPPORT_FILEUTILITIES_H
|
|
#define LLVM_SUPPORT_FILEUTILITIES_H
|
|
|
|
#include "llvm/System/Path.h"
|
|
|
|
namespace llvm {
|
|
|
|
/// DiffFilesWithTolerance - Compare the two files specified, returning 0 if
|
|
/// the files match, 1 if they are different, and 2 if there is a file error.
|
|
/// This function allows you to specify an absolete and relative FP error that
|
|
/// is allowed to exist. If you specify a string to fill in for the error
|
|
/// option, it will set the string to an error message if an error occurs, or
|
|
/// if the files are different.
|
|
///
|
|
int DiffFilesWithTolerance(const sys::Path &FileA, const sys::Path &FileB,
|
|
double AbsTol, double RelTol,
|
|
std::string *Error = 0);
|
|
|
|
|
|
/// FileRemover - This class is a simple object meant to be stack allocated.
|
|
/// If an exception is thrown from a region, the object removes the filename
|
|
/// specified (if deleteIt is true).
|
|
///
|
|
class FileRemover {
|
|
sys::Path Filename;
|
|
bool DeleteIt;
|
|
public:
|
|
FileRemover(const sys::Path &filename, bool deleteIt = true)
|
|
: Filename(filename), DeleteIt(deleteIt) {}
|
|
|
|
~FileRemover() {
|
|
if (DeleteIt)
|
|
try {
|
|
Filename.eraseFromDisk();
|
|
} catch (...) {} // Ignore problems deleting the file.
|
|
}
|
|
|
|
/// releaseFile - Take ownership of the file away from the FileRemover so it
|
|
/// will not be removed when the object is destroyed.
|
|
void releaseFile() { DeleteIt = false; }
|
|
};
|
|
} // End llvm namespace
|
|
|
|
#endif
|