|
|
| version 1.223, 2013/03/09 05:38:33 | version 1.224, 2013/03/09 23:35:28 |
|---|---|
| Line 33 volatile const char * IDENT_FILE_C="$Id$ | Line 33 volatile const char * IDENT_FILE_C="$Id$ |
| #define CHARSET_EXEC_PARAM_NAME "charset" | #define CHARSET_EXEC_PARAM_NAME "charset" |
| #define NAME_NAME "name" | #define NAME_NAME "name" |
| #define KEEP_EMPTY_DIRS_NAME "keep-empty-dirs" | |
| // externs | // externs |
| Line 128 static void _save(Request& r, MethodPara | Line 129 static void _save(Request& r, MethodPara |
| static void _delete(Request& r, MethodParams& params) { | static void _delete(Request& r, MethodParams& params) { |
| const String& file_name=params.as_string(0, FILE_NAME_MUST_NOT_BE_CODE); | const String& file_name=params.as_string(0, FILE_NAME_MUST_NOT_BE_CODE); |
| bool keep_empty_dirs=false; | |
| if(params.count()>1) | |
| if(HashStringValue* options=params.as_hash(1)){ | |
| int valid_options=0; | |
| if(Value* vkeep_empty_dirs=options->get(KEEP_EMPTY_DIRS_NAME)){ | |
| keep_empty_dirs=r.process_to_value(*vkeep_empty_dirs).as_bool(); | |
| valid_options++; | |
| } | |
| if(valid_options != options->count()) | |
| throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); | |
| } | |
| // unlink | // unlink |
| file_delete(r.absolute(file_name)); | file_delete(r.absolute(file_name), true/*fail on problem*/, keep_empty_dirs); |
| } | } |
| static void _move(Request& r, MethodParams& params) { | static void _move(Request& r, MethodParams& params) { |
| Value& vfrom_file_name=params.as_no_junction(0, "from file name must not be code"); | Value& vfrom_file_name=params.as_no_junction(0, "from file name must not be code"); |
| Value& vto_file_name=params.as_no_junction(1, "to file name must not be code"); | Value& vto_file_name=params.as_no_junction(1, "to file name must not be code"); |
| bool keep_empty_dirs=false; | |
| if(params.count()>2) | |
| if(HashStringValue* options=params.as_hash(2)){ | |
| int valid_options=0; | |
| if(Value* vkeep_empty_dirs=options->get(KEEP_EMPTY_DIRS_NAME)){ | |
| keep_empty_dirs=r.process_to_value(*vkeep_empty_dirs).as_bool(); | |
| valid_options++; | |
| } | |
| if(valid_options != options->count()) | |
| throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); | |
| } | |
| // move | // move |
| file_move( | file_move( |
| r.absolute(vfrom_file_name.as_string()), | r.absolute(vfrom_file_name.as_string()), |
| r.absolute(vto_file_name.as_string())); | r.absolute(vto_file_name.as_string()), |
| keep_empty_dirs); | |
| } | } |
| static void copy_process_source( | static void copy_process_source( |
| Line 1119 MFile::MFile(): Methoded("file") { | Line 1145 MFile::MFile(): Methoded("file") { |
| add_native_method("save", Method::CT_DYNAMIC, _save, 2, 3); | add_native_method("save", Method::CT_DYNAMIC, _save, 2, 3); |
| // ^file:delete[file-name] | // ^file:delete[file-name] |
| add_native_method("delete", Method::CT_STATIC, _delete, 1, 1); | // ^file:delete[file-name;$.keep-empty-dir(true)] |
| add_native_method("delete", Method::CT_STATIC, _delete, 1, 2); | |
| // ^file:move[from-file-name;to-file-name] | // ^file:move[from-file-name;to-file-name] |
| add_native_method("move", Method::CT_STATIC, _move, 2, 2); | // ^file:move[from-file-name;to-file-name;$.keep-empty-dir(true)] |
| add_native_method("move", Method::CT_STATIC, _move, 2, 3); | |
| // ^file::load[mode;disk-name] | // ^file::load[mode;disk-name] |
| // ^file::load[mode;disk-name;user-name] | // ^file::load[mode;disk-name;user-name] |