summaryrefslogtreecommitdiffabout
path: root/lib/file_factory.cc
authorMichael Krelin <hacker@klever.net>2005-03-30 15:50:28 (UTC)
committer Michael Krelin <hacker@klever.net>2005-03-30 15:50:28 (UTC)
commit3ddbfeafde93d1aab16a710498d86eef4e787406 (patch) (unidiff)
treed53ef21cf3b2bddfeb957c98344d0be8759ed555 /lib/file_factory.cc
parent642dc685bd0a3f1526e22827a4539aa0e06aeff7 (diff)
downloadsitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.zip
sitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.tar.gz
sitecing-3ddbfeafde93d1aab16a710498d86eef4e787406.tar.bz2
1. preprocessor doesn't touch unchanged files anymore
2. doublechedk on whether file is up to date when making 3. changed the way preprocessor targets depend on the timestamp file 4. a bugfix in strip_suffix/strip_prefix
Diffstat (limited to 'lib/file_factory.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--lib/file_factory.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/file_factory.cc b/lib/file_factory.cc
index c6b5748..7ca7b86 100644
--- a/lib/file_factory.cc
+++ b/lib/file_factory.cc
@@ -18,38 +18,39 @@ namespace sitecing {
18 struct stat stdst; 18 struct stat stdst;
19 if(stat(dst.c_str(),&stdst)) 19 if(stat(dst.c_str(),&stdst))
20 return false; 20 return false;
21 for(file_list_t::const_iterator i=fl->begin();i!=fl->end();i++) { 21 for(file_list_t::const_iterator i=fl->begin();i!=fl->end();i++) {
22 struct stat stdep; 22 struct stat stdep;
23 if(stat(i->c_str(),&stdep)) 23 if(stat(i->c_str(),&stdep))
24 return false; 24 return false;
25 if(stdst.st_mtime<stdep.st_mtime) 25 if(stdst.st_mtime<stdep.st_mtime)
26 return false; 26 return false;
27 if(!is_uptodate(*i)) 27 if(!is_uptodate(*i))
28 return false; 28 return false;
29 } 29 }
30 return true; 30 return true;
31 } 31 }
32 32
33 void file_factory::make(const string& dst) { 33 void file_factory::make(const string& dst) {
34 try { 34 try {
35 depth++; 35 depth++;
36 if(depth>25) 36 if(depth>25)
37 throw konforka::exception(CODEPOINT,"recursed too deeply."); 37 throw konforka::exception(CODEPOINT,"recursed too deeply.");
38 file_list_t deps; 38 file_list_t deps;
39 if(!is_uptodate(dst,&deps)) { 39 if(!is_uptodate(dst,&deps)) {
40 for(file_list_t::const_iterator i=deps.begin();i!=deps.end();i++) 40 for(file_list_t::const_iterator i=deps.begin();i!=deps.end();i++)
41 make(*i); 41 make(*i);
42 build(dst); 42 if(!is_uptodate(dst,&deps))
43 build(dst);
43 } 44 }
44 depth--; 45 depth--;
45 }catch(konforka::exception& ke) { 46 }catch(konforka::exception& ke) {
46 depth--; 47 depth--;
47 ke.see(CODEPOINT); 48 ke.see(CODEPOINT);
48 throw; 49 throw;
49 }catch(...) { 50 }catch(...) {
50 depth--; 51 depth--;
51 throw; 52 throw;
52 } 53 }
53 } 54 }
54 55
55} 56}