--- parser3/src/classes/file.C 2024/12/06 22:03:58 1.290 +++ parser3/src/classes/file.C 2024/12/11 02:30:24 1.293 @@ -27,7 +27,7 @@ #include "pa_vregex.h" #include "pa_version.h" -volatile const char * IDENT_FILE_C="$Id: file.C,v 1.290 2024/12/06 22:03:58 moko Exp $"; +volatile const char * IDENT_FILE_C="$Id: file.C,v 1.293 2024/12/11 02:30:24 moko Exp $"; // defines @@ -133,8 +133,8 @@ static const String::Body cdate_name("cd // methods static void _save(Request& r, MethodParams& params) { - bool is_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_NOT_BE_CODE)); - const String& file_name=params.as_string(1, FILE_NAME_MUST_BE_STRING); + bool is_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_BE_STRING)); + const String& file_name=params.as_file_name(1); Charset* asked_charset=0; if(params.count()>2) @@ -153,7 +153,7 @@ static void _save(Request& r, MethodPara } static void _delete(Request& r, MethodParams& params) { - const String& file_name=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_name=params.as_file_name(0); bool keep_empty_dirs=false; bool fail_on_problem=true; @@ -256,8 +256,8 @@ static void _load_pass_param( } static void _load(Request& r, MethodParams& params) { - bool as_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_NOT_BE_CODE)); - const String& lfile_name=r.full_disk_path(params.as_string(1, FILE_NAME_MUST_BE_STRING)); + bool as_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_BE_STRING)); + const String& lfile_name=r.full_disk_path(params.as_file_name(1)); size_t param_index=params.count()-1; Value* param_value=param_index>1?¶ms.as_no_junction(param_index, "file name or options must not be code"):0; @@ -316,7 +316,7 @@ static void _create(Request& r, MethodPa if(params.count()>=3){ // old format: ^file::create[text|binary;file-name;string-or-file-content[;options]] - mode=¶ms.as_string(0, MODE_MUST_NOT_BE_CODE); + mode=¶ms.as_string(0, MODE_MUST_BE_STRING); is_text=VFile::is_text_mode(*mode); file_name=¶ms.as_string(1, FILE_NAME_MUST_BE_STRING); content_index=2; @@ -390,7 +390,7 @@ static void _create(Request& r, MethodPa } static void _stat(Request& r, MethodParams& params) { - const String& lfile_name=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& lfile_name=params.as_file_name(0); uint64_t size; time_t atime, mtime, ctime; @@ -487,7 +487,7 @@ static void _exec_cgi(Request& r, Method if(param_index>=params.count()) throw Exception(PARSER_RUNTIME, 0, FILE_NAME_MUST_BE_SPECIFIED); - const String& script_name=r.full_disk_path(params.as_string(param_index++, FILE_NAME_MUST_BE_STRING)); + const String& script_name=r.full_disk_path(params.as_file_name(param_index++)); HashStringString env; #define ECSTR(name, value_cstr) if(value_cstr) env.put(#name, value_cstr); @@ -783,7 +783,7 @@ static void lock_execute_body(int , void } static void _lock(Request& r, MethodParams& params) { - const String& file_spec=r.full_disk_path(params.as_string(0, FILE_NAME_MUST_BE_STRING)); + const String& file_spec=r.full_disk_path(params.as_file_name(0)); Lock_execute_body_info info={ &r, ¶ms.as_junction(1, "body must be code") @@ -849,7 +849,7 @@ static void _find(Request& r, MethodPara } static void _dirname(Request& r, MethodParams& params) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_spec(0); // works as *nix dirname // empty > . @@ -883,7 +883,7 @@ static void _dirname(Request& r, MethodP } static void _basename(Request& r, MethodParams& params) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_spec(0); // works as *nix basename // empty > . @@ -909,7 +909,7 @@ static void _basename(Request& r, Method } static void _justname(Request& r, MethodParams& params) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_spec(0); // /a/some.tar.gz > some.tar // /a/b.c/ > empty // /a/b.c > b @@ -919,7 +919,7 @@ static void _justname(Request& r, Method } static void _justext(Request& r, MethodParams& params) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_spec(0); // /a/some.tar.gz > gz // /a/b.c/ > empty size_t pos=afterlastslash(file_spec); @@ -929,7 +929,7 @@ static void _justext(Request& r, MethodP } static void _fullpath(Request& r, MethodParams& params) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_spec(0); const String* result; if(file_spec.first_char()=='/') result=&file_spec; @@ -1111,7 +1111,7 @@ static void _base64(Request& r, MethodPa if(params.count() < 3) throw Exception(PARSER_RUNTIME, 0, "constructor cannot have less than 3 parameters (has %d parameters)", params.count()); // actually it accepts 1 parameter (backward) - is_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_NOT_BE_CODE)); + is_text=VFile::is_text_mode(params.as_string(0, MODE_MUST_BE_STRING)); user_file_name=¶ms.as_string(1, FILE_NAME_MUST_BE_STRING); if(params.count() == 4) @@ -1137,7 +1137,7 @@ static void _base64(Request& r, MethodPa if(params.count() > 2) throw Exception(PARSER_RUNTIME, 0, "accepts maximum 2 parameter(s) (has %d parameters)", params.count()); - const String& file_spec = params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec = params.as_file_name(0); File_read_result data = file_read_binary(r.full_disk_path(file_spec), true /*fail on problem*/); Base64Options options = base64_encode_options(r, params.count() > 1 ? params.as_hash(1) : NULL); @@ -1151,7 +1151,7 @@ static void _crc32(Request& r, MethodPar if(&r.get_self() == file_class) { // ^file:crc32[file-name] if(params.count()) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_name(0); crc32=pa_crc32(r.full_disk_path(file_spec)); } else { throw Exception(PARSER_RUNTIME, 0, FILE_NAME_MUST_BE_SPECIFIED); @@ -1207,7 +1207,7 @@ static void _md5(Request& r, MethodParam if(&r.get_self() == file_class) { // ^file:md5[file-name] if(params.count()) { - const String& file_spec=params.as_string(0, FILE_NAME_MUST_BE_STRING); + const String& file_spec=params.as_file_name(0); md5=pa_md5(r.full_disk_path(file_spec)); } else { throw Exception(PARSER_RUNTIME, 0, FILE_NAME_MUST_BE_SPECIFIED);