[llvm-commits] CVS: llvm/lib/Support/FileUtilities.cpp

Chris Lattner lattner at cs.uiuc.edu
Fri Jul 28 15:04:10 PDT 2006



Changes in directory llvm/lib/Support:

FileUtilities.cpp updated: 1.47 -> 1.48
---
Log message:

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.


---
Diffs of the changes:  (+16 -12)

 FileUtilities.cpp |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)


Index: llvm/lib/Support/FileUtilities.cpp
diff -u llvm/lib/Support/FileUtilities.cpp:1.47 llvm/lib/Support/FileUtilities.cpp:1.48
--- llvm/lib/Support/FileUtilities.cpp:1.47	Mon May 15 17:12:42 2006
+++ llvm/lib/Support/FileUtilities.cpp	Fri Jul 28 17:03:44 2006
@@ -146,19 +146,23 @@
                                  const sys::Path &FileB,
                                  double AbsTol, double RelTol,
                                  std::string *Error) {
-  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;
+  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 {
     // Now its safe to mmap the files into memory becasue both files
     // have a non-zero size.
     sys::MappedFile F1(FileA);






More information about the llvm-commits mailing list