--- parser3/src/classes/op.C 2025/01/10 19:58:46 1.273 +++ parser3/src/classes/op.C 2026/01/07 14:51:54 1.277 @@ -22,7 +22,7 @@ #include "syslog.h" #endif -volatile const char * IDENT_OP_C="$Id: op.C,v 1.273 2025/01/10 19:58:46 moko Exp $"; +volatile const char * IDENT_OP_C="$Id: op.C,v 1.277 2026/01/07 14:51:54 moko Exp $"; // defines @@ -186,30 +186,20 @@ static void _process(Request& r, MethodP size_t options_index=index+1; if(options_indexas_string(); } else if(key == "file") { - valid_options++; file_alias=&value->as_string(); } else if(key == "lineno") { - valid_options++; line_no_alias_offset=value->as_int(); } else if(key == "replace") { - valid_options++; allow_class_replace=r.process(*value).as_bool(); - } + } else + throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } - - if(valid_options!=options->count()) - throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } uint processe_file_no=file_alias ? r.register_file(r.full_disk_path(*file_alias)) : pseudo_file_no__process; @@ -299,28 +289,16 @@ static void _use(Request& r, MethodParam if(params.count()==2) if(HashStringValue* options=params.as_hash(1)) { - int valid_options=0; for(HashStringValue::Iterator i(*options); i; i.next() ){ - String::Body key=i.key(); Value* value=i.value(); - if(key == "origin") { - valid_options++; use_origin=&value->as_string(); - } - - if(key == "replace") { - valid_options++; + } else if(key == "replace") { allow_class_replace=r.process(*value).as_bool(); - } - - if(key == "main") { - valid_options++; + } else if(key == "main") { load_auto_p=r.process(*value).as_bool(); - } - - if(valid_options!=options->count()) + } else throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } } @@ -743,7 +721,7 @@ static Cache_get_result cache_get(const static time_t as_expires(Request& r, MethodParams& params, int index, time_t now) { time_t result; if(VDate* vdate=dynamic_cast(¶ms[index])) - result=vdate->get_time(); + result=(time_t)vdate->get_time(); else result=now+(time_t)params.as_double(index, "lifespan must be date or number", r); @@ -906,6 +884,7 @@ static void _sleep_operator(Request& r, pa_sleep((int)trunc(seconds), (int)trunc((seconds-trunc(seconds))*1000000)); } +#ifdef HAVE_SYSLOG static int log_level(const String &name){ if(name.is_empty()) return LOG_INFO; const char *sname = str_upper(name.cstr()); @@ -916,17 +895,18 @@ static int log_level(const String &name) if(!strcmp(sname,"DEBUG")) return LOG_DEBUG; throw Exception("syslog", &name, "invalid log level value"); } - +#endif static void _syslog_operator(Request& r, MethodParams& params) { const char* ident=params.as_string(0, "ident must be string").cstr(); const char* message=params.as_string(1, "message must be string").cstr(); +#ifdef HAVE_SYSLOG int level=params.count()>2 ? log_level(params.as_string(2, "level must be string")) : LOG_INFO; -#ifdef HAVE_SYSLOG openlog(*ident ? ident : "parser3", LOG_PID, LOG_USER); syslog(level, "%s", message); closelog(); + (void)r; #else SAPI::log(r.sapi_info, "syslog: %s", message); #endif