]> git.lyx.org Git - features.git/commitdiff
Use exceptions to avoid more than one call to the filesystem.
authorLars Gullik Bjønnes <larsbj@gullik.org>
Thu, 31 Aug 2006 19:32:12 +0000 (19:32 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Thu, 31 Aug 2006 19:32:12 +0000 (19:32 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14857 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/insetcite.C

index bcc8e1cd7dacd10f607f69775d2bc1ff1df4186e..7f02217480f5203a31f551054199f37badab770a 100644 (file)
@@ -27,6 +27,7 @@
 #include "support/lstrings.h"
 
 #include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/exception.hpp>
 
 using lyx::support::ascii_lowercase;
 using lyx::support::contains;
@@ -71,12 +72,19 @@ string const getNatbibLabel(Buffer const & buffer,
        for (vector<string>::const_iterator it = bibfilesCache.begin();
                        it != bibfilesCache.end(); ++ it) {
                string const f = *it;
-               if (!fs::exists(f) || !fs::is_readable(fs::path(f).branch_path())) {
-                       lyxerr << "Couldn't find or read bibtex file " << f << endl;
-                       changed = true;
-               } else if (bibfileStatus[f] != fs::last_write_time(f)) {
+               try {
+                       std::time_t lastw = fs::last_write_time(f);
+                       if (lastw != bibfileStatus[f]) {
+                               changed = true;
+                               bibfileStatus[f] = lastw;
+                       }
+               }
+               catch (fs::filesystem_error & fserr) {
                        changed = true;
-                       bibfileStatus[f] = fs::last_write_time(f);
+                       lyxerr << "Couldn't find or read bibtex file "
+                              << f << endl;
+                       lyxerr[Debug::DEBUG] << "Fs error: "
+                                            << fserr.what() << endl;
                }
        }