Diff for /parser3/src/classes/file.C between versions 1.223 and 1.224

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]

Removed from v.1.223  
changed lines
  Added in v.1.224


E-mail: