Change Path::getStatusInfo to return a boolean and error string on an error

instead of throwing an exception.  This reduces the amount of code that is
exposed to exceptions (e.g. FileUtilities), though it is clearly only one step
along the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29395 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2006-07-28 22:03:44 +00:00
parent 3236ced25f
commit 252ad03d7d
11 changed files with 116 additions and 108 deletions
+16 -12
View File
@@ -146,19 +146,23 @@ int llvm::DiffFilesWithTolerance(const sys::Path &FileA,
const sys::Path &FileB,
double AbsTol, double RelTol,
std::string *Error) {
sys::FileStatus FileAStat, FileBStat;
if (FileA.getFileStatus(FileAStat, Error) ||
FileB.getFileStatus(FileBStat, Error))
return 2;
// Check for zero length files because some systems croak when you try to
// mmap an empty file.
size_t A_size = FileAStat.getSize();
size_t B_size = FileBStat.getSize();
// If they are both zero sized then they're the same
if (A_size == 0 && B_size == 0)
return 0;
// If only one of them is zero sized then they can't be the same
if ((A_size == 0 || B_size == 0))
return 1;
try {
// Check for zero length files because some systems croak when you try to
// mmap an empty file.
size_t A_size = FileA.getSize();
size_t B_size = FileB.getSize();
// If they are both zero sized then they're the same
if (A_size == 0 && B_size == 0)
return 0;
// If only one of them is zero sized then they can't be the same
if ((A_size == 0 || B_size == 0))
return 1;
// Now its safe to mmap the files into memory becasue both files
// have a non-zero size.
sys::MappedFile F1(FileA);