-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | lib/component_factory.cc | 2 | ||||
-rw-r--r-- | lib/file_factory.cc | 2 | ||||
-rw-r--r-- | src/sitecing-fastcgi.cc | 3 | ||||
-rw-r--r-- | src/sitecing-plaincgi.cc | 3 |
5 files changed, 11 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index b9e9b56..a8aa142 100644 --- a/configure.ac +++ b/configure.ac @@ -17,23 +17,23 @@ AC_C_CONST AC_FUNC_MALLOC AC_FUNC_REALLOC AC_WITH_PKGCONFIG -PKG_CHECK_MODULES([KINGATE],[kingate],,[ +PKG_CHECK_MODULES([KINGATE],[kingate >= 0.0.1],,[ AC_MSG_ERROR([no kingate library found, get it at http://kin.klever.net/kingate/]) ]) HAVE_FCGI=false HAVE_PLAINCGI=false -PKG_CHECK_MODULES([KINGATE_FCGI],[kingate-fcgi],[ +PKG_CHECK_MODULES([KINGATE_FCGI],[kingate-fcgi >= 0.0.1],[ HAVE_FCGI=true ],[ AC_MSG_NOTICE([no fastcgi support in kingate library]) ]) -PKG_CHECK_MODULES([KINGATE_PLAINCGI],[kingate-plaincgi],[ +PKG_CHECK_MODULES([KINGATE_PLAINCGI],[kingate-plaincgi >= 0.0.1],[ HAVE_PLAINCGI=true ],[ AC_MSG_NOTICE([no plaincgi support in kingate library]) ]) if ! (${HAVE_FCGI} || ${HAVE_PLAINCGI}) ; then AC_MSG_ERROR([not a single CGI interface supported in kingate]) 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 @@ -89,13 +89,13 @@ namespace sitecing { 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)); 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 @@ -15,13 +15,13 @@ namespace sitecing { 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)) diff --git a/src/sitecing-fastcgi.cc b/src/sitecing-fastcgi.cc index 9c0d7d1..756dcee 100644 --- a/src/sitecing-fastcgi.cc +++ b/src/sitecing-fastcgi.cc @@ -164,21 +164,24 @@ void sitecing_fastcgi_pm::process(int slot) { sl.unlock(); cgi_gateway gw(fi); scif.prepare(&gw); try { component_path = normalize_path(gw.path_info(),strip_leading_slash|strip_trailing_slash); string full_component_path; + string sitecing_path_info; while(true) { full_component_path = config.root_source+'/'+component_path; if(!access(full_component_path.c_str(),F_OK)) break; string::size_type sl = component_path.rfind('/'); if(sl==string::npos) throw konforka::exception(CODEPOINT,"can't find the target component"); + sitecing_path_info.insert(0,component_path,sl,string::npos); component_path.erase(sl); } + fi.metavars["SITECING_PATH_INFO"]=sitecing_path_info; action = component_path; action_handler = config.lookup_action_handler(component_path); if(action_handler) { action = action_handler->action; } string pwd = dir_name(full_component_path); diff --git a/src/sitecing-plaincgi.cc b/src/sitecing-plaincgi.cc index 6e8a215..3bd291a 100644 --- a/src/sitecing-plaincgi.cc +++ b/src/sitecing-plaincgi.cc @@ -49,21 +49,24 @@ void process_request(configuration& config) { plaincgi_interface ci; cgi_gateway gw(ci); scif.prepare(&gw); try { component_path = normalize_path(gw.path_info(),strip_leading_slash|strip_trailing_slash); string full_component_path; + string sitecing_path_info; while(true) { full_component_path = config.root_source+'/'+component_path; if(!access(full_component_path.c_str(),F_OK)) break; string::size_type sl = component_path.rfind('/'); if(sl==string::npos) throw konforka::exception(CODEPOINT,"can't find the target component"); + sitecing_path_info.insert(0,component_path,sl,string::npos); component_path.erase(sl); } + ci.metavars["SITECING_PATH_INFO"]=sitecing_path_info; action = component_path; action_handler = config.lookup_action_handler(component_path); if(action_handler) { action = action_handler->action; } string pwd = dir_name(full_component_path); |