]> git.tdb.fi Git - builder.git/blobdiff - source/csourcefile.cpp
Early check for file existence to avoid exception handling
[builder.git] / source / csourcefile.cpp
index 2162cf0873ee1f7b9fd9a43a82649c2b47a4ba05..48935bde831b341148316fa9d5e4c29e9ec998b0 100644 (file)
@@ -24,52 +24,30 @@ CSourceFile::CSourceFile(Builder &b, const Component &c, const FS::Path &p):
 
 void CSourceFile::find_depends()
 {
-       if(!comp)
-       {
-               deps_ready = true;
+       if(!comp || !mtime)
                return;
-       }
 
        const SourcePackage &spkg = comp->get_package();
        string relname = FS::relative(path, spkg.get_source()).str();
-       DependencyCache &deps_cache = spkg.get_deps_cache();
-       bool deps_found = false;
-       if(mtime<deps_cache.get_mtime())
-       {
-               try
-               {
-                       includes = deps_cache.get_deps(relname);
-                       deps_found = true;
-               }
-               catch(const key_error &)
-               { }
-       }
 
-       if(!deps_found)
+       DependencyCache &deps_cache = spkg.get_deps_cache();
+       if(mtime<deps_cache.get_mtime() && deps_cache.has_deps(relname))
+               includes = deps_cache.get_deps(relname);
+       else
        {
-               try
-               {
-                       IO::BufferedFile in(path.str());
+               IO::BufferedFile in(path.str());
 
-                       if(builder.get_verbose()>=4)
-                               IO::print("Reading includes from %s\n", path.str());
+               if(builder.get_verbose()>=4)
+                       IO::print("Reading includes from %s\n", path.str());
 
-                       Regex r_include("^[ \t]*#include[ \t]+([\"<].*)[\">]");
+               Regex r_include("^[ \t]*#include[ \t]+([\"<].*)[\">]");
 
-                       string line;
-                       while(in.getline(line))
-                               if(RegMatch match = r_include.match(line))
-                                       includes.push_back(match[1].str);
+               string line;
+               while(in.getline(line))
+                       if(RegMatch match = r_include.match(line))
+                               includes.push_back(match[1].str);
 
-                       deps_cache.set_deps(relname, includes);
-               }
-               catch(const IO::file_not_found &)
-               {
-                       if(builder.get_verbose()>=4)
-                               IO::print("Failed to read includes from %s\n", path.str());
-                       deps_ready = true;
-                       return;
-               }
+               deps_cache.set_deps(relname, includes);
        }
 
        const StringList &incpath = comp->get_build_info().incpath;
@@ -81,6 +59,4 @@ void CSourceFile::find_depends()
                if(hdr)
                        add_depend(hdr);
        }
-
-       deps_ready = true;
 }