-rw-r--r-- | src/sitecing-build.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/sitecing-build.cc b/src/sitecing-build.cc index 4cad0a3..887ef83 100644 --- a/src/sitecing-build.cc +++ b/src/sitecing-build.cc | |||
@@ -1,21 +1,22 @@ | |||
1 | #include <sys/types.h> | 1 | #include <sys/types.h> |
2 | #include <dirent.h> | 2 | #include <dirent.h> |
3 | #include <getopt.h> | 3 | #include <getopt.h> |
4 | #include <iostream> | 4 | #include <iostream> |
5 | #include <memory> | 5 | #include <memory> |
6 | #include <fstream> | 6 | #include <fstream> |
7 | #include <cassert> | 7 | #include <cassert> |
8 | #include <set> | 8 | #include <set> |
9 | using namespace std; | 9 | using namespace std; |
10 | #include <konforka/util.h> | ||
10 | #include "sitecing/sitecing_util.h" | 11 | #include "sitecing/sitecing_util.h" |
11 | #include "sitecing/util.h" | 12 | #include "sitecing/util.h" |
12 | #include "sitecing/sitespace.h" | 13 | #include "sitecing/sitespace.h" |
13 | #include "sitecing/sitecing_interface_cgi.h" | 14 | #include "sitecing/sitecing_interface_cgi.h" |
14 | #include "sitecing/cgi_component.h" | 15 | #include "sitecing/cgi_component.h" |
15 | #include "sitecing/configuration.h" | 16 | #include "sitecing/configuration.h" |
16 | #include "sitecing/magic.h" | 17 | #include "sitecing/magic.h" |
17 | #include "sitecing/sitecing_exception.h" | 18 | #include "sitecing/sitecing_exception.h" |
18 | #include "sitecing/exception.h" | 19 | #include "sitecing/exception.h" |
19 | using namespace sitecing; | 20 | using namespace sitecing; |
20 | 21 | ||
21 | #include "config.h" | 22 | #include "config.h" |
@@ -69,25 +70,25 @@ void build_imports(const string& component) { | |||
69 | while(!ifs.eof()) { | 70 | while(!ifs.eof()) { |
70 | ifs >> import; | 71 | ifs >> import; |
71 | if(!import.empty()) | 72 | if(!import.empty()) |
72 | build_with_imports(import); | 73 | build_with_imports(import); |
73 | } | 74 | } |
74 | } | 75 | } |
75 | } | 76 | } |
76 | 77 | ||
77 | void build_http_status_handlers(const string& target) { | 78 | void build_http_status_handlers(const string& target) { |
78 | assert(site_space); | 79 | assert(site_space); |
79 | set<string> stop_list; | 80 | set<string> stop_list; |
80 | string t = "/"; | 81 | string t = "/"; |
81 | t += normalize_path(target,strip_leading_slash); | 82 | t += konforka::normalize_path(target,konforka::strip_leading_slash); |
82 | for(;;) { | 83 | for(;;) { |
83 | if(t[t.length()-1]=='/') { | 84 | if(t[t.length()-1]=='/') { |
84 | loaded_options* lo = site_space->config.lookup_loaded_options(t); | 85 | loaded_options* lo = site_space->config.lookup_loaded_options(t); |
85 | if( lo && (lo->flags&config_options::flag_http_status_handlers) ) { | 86 | if( lo && (lo->flags&config_options::flag_http_status_handlers) ) { |
86 | for(config_options::http_status_handlers_t::const_iterator i=lo->http_status_handlers.begin();i!=lo->http_status_handlers.end();++i) { | 87 | for(config_options::http_status_handlers_t::const_iterator i=lo->http_status_handlers.begin();i!=lo->http_status_handlers.end();++i) { |
87 | if(stop_list.find(i->first)==stop_list.end()) { | 88 | if(stop_list.find(i->first)==stop_list.end()) { |
88 | build_with_imports(i->second); | 89 | build_with_imports(i->second); |
89 | stop_list.insert(i->first); | 90 | stop_list.insert(i->first); |
90 | } | 91 | } |
91 | } | 92 | } |
92 | } | 93 | } |
93 | } | 94 | } |
@@ -138,25 +139,25 @@ void build(const string& target) { | |||
138 | if(S_ISREG(st.st_mode)) { | 139 | if(S_ISREG(st.st_mode)) { |
139 | build_target(target); | 140 | build_target(target); |
140 | }else if(S_ISDIR(st.st_mode)) { | 141 | }else if(S_ISDIR(st.st_mode)) { |
141 | build_http_status_handlers(target); | 142 | build_http_status_handlers(target); |
142 | DIR *d=opendir(target_source.c_str()); | 143 | DIR *d=opendir(target_source.c_str()); |
143 | if(!d) | 144 | if(!d) |
144 | throw konforka::exception(CODEPOINT,"failed to opendir()"); | 145 | throw konforka::exception(CODEPOINT,"failed to opendir()"); |
145 | for(struct dirent *de=readdir(d);de;de=readdir(d)) { | 146 | for(struct dirent *de=readdir(d);de;de=readdir(d)) { |
146 | if(!strcmp(de->d_name,".")) | 147 | if(!strcmp(de->d_name,".")) |
147 | continue; | 148 | continue; |
148 | if(!strcmp(de->d_name,"..")) | 149 | if(!strcmp(de->d_name,"..")) |
149 | continue; | 150 | continue; |
150 | string subtarget = normalize_path(target+"/"+de->d_name); | 151 | string subtarget = konforka::normalize_path(target+"/"+de->d_name); |
151 | struct stat sts; | 152 | struct stat sts; |
152 | if(stat((site_space->config.root_source+subtarget).c_str(),&sts)) | 153 | if(stat((site_space->config.root_source+subtarget).c_str(),&sts)) |
153 | throw konforka::exception(CODEPOINT,"failed to stat() subtarget"); | 154 | throw konforka::exception(CODEPOINT,"failed to stat() subtarget"); |
154 | if(S_ISDIR(sts.st_mode)) { | 155 | if(S_ISDIR(sts.st_mode)) { |
155 | build(subtarget); | 156 | build(subtarget); |
156 | }else{ | 157 | }else{ |
157 | if(site_space->config.match_autobuild_files(target,de->d_name)){ | 158 | if(site_space->config.match_autobuild_files(target,de->d_name)){ |
158 | build_target(subtarget); | 159 | build_target(subtarget); |
159 | } | 160 | } |
160 | } | 161 | } |
161 | } | 162 | } |
162 | closedir(d); | 163 | closedir(d); |