--- parser3/src/classes/file.C 2015/05/30 22:55:28 1.235 +++ parser3/src/classes/file.C 2015/10/09 00:17:44 1.239 @@ -25,7 +25,7 @@ #include "pa_vregex.h" #include "pa_version.h" -volatile const char * IDENT_FILE_C="$Id: file.C,v 1.235 2015/05/30 22:55:28 moko Exp $"; +volatile const char * IDENT_FILE_C="$Id: file.C,v 1.239 2015/10/09 00:17:44 moko Exp $"; // defines @@ -295,9 +295,9 @@ static void _load(Request& r, MethodPara file_stat(lfile_name, size, atime, mtime, ctime); HashStringValue& ff=self.fields(); - ff.put(adate_name, new VDate(atime)); - ff.put(mdate_name, new VDate(mtime)); - ff.put(cdate_name, new VDate(ctime)); + ff.put(adate_name, new VDate((pa_time_t)atime)); + ff.put(mdate_name, new VDate((pa_time_t)mtime)); + ff.put(cdate_name, new VDate((pa_time_t)ctime)); } } @@ -379,9 +379,9 @@ static void _stat(Request& r, MethodPara self.set_binary(true/*tainted*/, 0/*no bytes*/, size, &lfile_name, 0, &r); HashStringValue& ff=self.fields(); - ff.put(adate_name, new VDate(atime)); - ff.put(mdate_name, new VDate(mtime)); - ff.put(cdate_name, new VDate(ctime)); + ff.put(adate_name, new VDate((pa_time_t)atime)); + ff.put(mdate_name, new VDate((pa_time_t)mtime)); + ff.put(cdate_name, new VDate((pa_time_t)ctime)); } static bool is_safe_env_key(const char* key) { @@ -469,17 +469,10 @@ static void _exec_cgi(Request& r, Method const String& script_name=r.absolute(params.as_string(param_index++, FILE_NAME_MUST_NOT_BE_CODE)); HashStringString env; - #define ECSTR(name, value_cstr) \ - if(value_cstr) \ - env.put( \ - String::Body(#name), \ - String::Body(*value_cstr?value_cstr:0)); \ + #define ECSTR(name, value_cstr) if(value_cstr) env.put(#name, value_cstr); // passing environment for(SAPI::Env::Iterator i(r.sapi_info); i; i.next() ) - env.put( - i.key(), - i.value() - ); + env.put(i.key(), i.value() ); // const ECSTR(GATEWAY_INTERFACE, "CGI/1.1"); @@ -734,9 +727,8 @@ static void _list(Request& r, MethodPara if(!vregex || vregex->exec(ffblk.ff_name, file_name_size, ovector, ovector_size)>=0) { Table::element_type row(new ArrayString); *row+=new String(pa_strdup(file_name_cstr, file_name_size), String::L_TAINTED); - *row+=new String(String::Body::Format(ffblk.is_dir() ? 1 : 0), String::L_CLEAN); + *row+=new String(String::Body::Format(ffblk.is_dir(stat) ? 1 : 0), String::L_CLEAN); if(stat) { - ffblk.stat_file(); *row+=VDouble(ffblk.size()).get_string(); *row+=new String(String::Body::Format((int)ffblk.c_timestamp()), String::L_CLEAN); *row+=new String(String::Body::Format((int)ffblk.m_timestamp()), String::L_CLEAN); @@ -1032,10 +1024,8 @@ static void _sql(Request& r, MethodParam handlers, statement_string); - if(!handlers.value) - throw Exception(PARSER_RUNTIME, - 0, - "produced no result"); + if(!handlers.value.str) + throw Exception(PARSER_RUNTIME, 0, "produced no result"); VFile& self=GET_SELF(r, VFile);