-rw-r--r-- | lib/component_factory.cc | 2 | ||||
-rw-r--r-- | lib/file_factory.cc | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/component_factory.cc b/lib/component_factory.cc index b5e95af..d9692de 100644 --- a/lib/component_factory.cc +++ b/lib/component_factory.cc @@ -63,65 +63,65 @@ namespace sitecing { string str; while(!imports.eof()) { imports >> str; if(!str.empty()) deps.push_back(root_intermediate+str+".classname"); } } ifstream ancestors((root_intermediate+nos+".ancestors").c_str(),ios::in); if(ancestors.good()) { string str; while(!ancestors.eof()) { ancestors >> str; if(!str.empty()) deps.push_back(root_intermediate+str+".classname"); } } // XXX: intermediate_deps should be broken down config_options *co_intermediate_deps = config.lookup_config(nos,config_options::flag_intermediate_deps); if(co_intermediate_deps) { for(list<string>::const_iterator i=co_intermediate_deps->intermediate_deps.begin();i!=co_intermediate_deps->intermediate_deps.end();++i) deps.push_back(*i); } return; }catch(utility_no_suffix& uns) { } } // compiler targets for(int cct=0;cct<sizeof(cc_targets)/sizeof(*cc_targets);cct++) { try { string nos = strip_suffix(noro,cc_targets[cct]); deps.push_back(root_intermediate+nos+".cc"); config_options *co_cpp_deps = config.lookup_config(noro,config_options::flag_cpp_deps); if( (!co_cpp_deps) || co_cpp_deps->cpp_deps) { - ifstream df((root_intermediate+noro+".d").c_str(),ios::in); + ifstream df((root_intermediate+nos+".d").c_str(),ios::in); if(df.good()) { string str; while(!df.eof()) { df >> str; if(str.find_first_of("\\:")==string::npos) deps.push_back(combine_path(config.root_source+nos,str)); } } } // XXX: intermediate_deps should be broken down config_options *co_intermediate_deps = config.lookup_config(nos,config_options::flag_intermediate_deps); if(co_intermediate_deps) { for(list<string>::const_iterator i=co_intermediate_deps->intermediate_deps.begin();i!=co_intermediate_deps->intermediate_deps.end();++i) deps.push_back(*i); } }catch(utility_no_suffix& uns) { } } }catch(utility_no_prefix& unp) { } } bool component_factory::is_uptodate(const string& dst,file_list_t *deps) { string dp = normalize_path(dst,strip_trailing_slash); try { string noro = strip_prefix(dp,root_intermediate); for(int ppt=0;(ppt+1)<sizeof(pp_targets)/sizeof(*pp_targets);ppt++) { try { string nos = strip_suffix(noro,pp_targets[ppt]); return file_factory::is_uptodate(root_intermediate+nos+".pp_stamp",deps); }catch(utility_no_suffix& uns) { } } bool rv = file_factory::is_uptodate(dst,deps); return rv; diff --git a/lib/file_factory.cc b/lib/file_factory.cc index 7ca7b86..c22fac2 100644 --- a/lib/file_factory.cc +++ b/lib/file_factory.cc @@ -1,53 +1,53 @@ #ifdef USE_PCH #include "pch.h" #else #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <konforka/exception.h> using namespace std; #include "sitecing/file_factory.h" #endif namespace sitecing { bool file_factory::is_uptodate(const string& dst,file_list_t* deps) { file_list_t deplist; file_list_t *fl = deps?deps:&deplist; get_dependencies(dst,*fl); struct stat stdst; if(stat(dst.c_str(),&stdst)) return false; - for(file_list_t::const_iterator i=fl->begin();i!=fl->end();i++) { + for(file_list_t::const_iterator i=fl->begin();i!=fl->end();++i) { struct stat stdep; if(stat(i->c_str(),&stdep)) return false; if(stdst.st_mtime<stdep.st_mtime) return false; if(!is_uptodate(*i)) return false; } return true; } void file_factory::make(const string& dst) { try { depth++; if(depth>25) throw konforka::exception(CODEPOINT,"recursed too deeply."); file_list_t deps; if(!is_uptodate(dst,&deps)) { for(file_list_t::const_iterator i=deps.begin();i!=deps.end();i++) make(*i); if(!is_uptodate(dst,&deps)) build(dst); } depth--; }catch(konforka::exception& ke) { depth--; ke.see(CODEPOINT); throw; }catch(...) { depth--; throw; } |