diff --git a/libisoburn/trunk/test/xorriso.1 b/libisoburn/trunk/test/xorriso.1 index a8e64153..4017ccdb 100644 --- a/libisoburn/trunk/test/xorriso.1 +++ b/libisoburn/trunk/test/xorriso.1 @@ -331,7 +331,7 @@ Create empty directories if they do not exist yet. Existence as directory generates a WARNING event, existence as other file cause a SORRY event. .TP -> \fB\-rmdir\fR iso_rr_path [...] +\fB\-rmdir\fR iso_rr_path [...] Delete empty directories. .TP \fB\-\-\fR diff --git a/libisoburn/trunk/test/xorriso.c b/libisoburn/trunk/test/xorriso.c index 6056778e..7b4559e9 100644 --- a/libisoburn/trunk/test/xorriso.c +++ b/libisoburn/trunk/test/xorriso.c @@ -1994,40 +1994,40 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag) xorriso->result_page_length= -xorriso->result_page_length; cpt= line; - if(*cpt=='@') { - if(strcmp(cpt,"@@@")==0) { -request_to_abort:; - if(flag&1) { - strcpy(previous_line,cpt); - sprintf(xorriso->info_text, - "....... [%s = %s registered. Really %s ? (y/n) ] .......\n", - cpt,abort_req_text,abort_really_text); - Xorriso_info(xorriso,0); - ret= Xorriso_dialog_input(xorriso,line,sizeof(line),1); - if(ret<=0) - return(ret); - cpt= line; - if(strcmp(cpt,previous_line)==0 || - ((*cpt=='Y' || *cpt=='y' || *cpt=='j' || *cpt=='J' || *cpt=='1') && - *(cpt+1)==0)) { - xorriso->request_to_abort= 1; - sprintf(xorriso->info_text, - "------- ( %s confirmed )\n",abort_req_text); - Xorriso_info(xorriso,0); - return(2); - } - sprintf(xorriso->info_text, - "....... ( %s revoked )\n",abort_req_text); - Xorriso_info(xorriso,0); - return(3); - } - xorriso->request_to_abort= 1; + if(strcmp(cpt,"@@@")==0 || + strcmp(cpt,"x")==0 || strcmp(cpt,"X")==0 || + strcmp(cpt,"q")==0 || strcmp(cpt,"Q")==0) { + if(flag&1) { + strcpy(previous_line,cpt); sprintf(xorriso->info_text, -"----------- [%s = request to abort registered. Operation ends ] ------------\n", - cpt); + "....... [%s = %s registered. Really %s ? (y/n) ] .......\n", + cpt,abort_req_text,abort_really_text); Xorriso_info(xorriso,0); - return(2); - } else if(strcmp(cpt,"@@")==0) { + ret= Xorriso_dialog_input(xorriso,line,sizeof(line),1); + if(ret<=0) + return(ret); + cpt= line; + if(strcmp(cpt,previous_line)==0 || + ((*cpt=='Y' || *cpt=='y' || *cpt=='j' || *cpt=='J' || *cpt=='1') && + *(cpt+1)==0)) { + xorriso->request_to_abort= 1; + sprintf(xorriso->info_text, + "------- ( %s confirmed )\n",abort_req_text); + Xorriso_info(xorriso,0); + return(2); + } + sprintf(xorriso->info_text, "....... ( %s revoked )\n",abort_req_text); + Xorriso_info(xorriso,0); + return(3); + } + xorriso->request_to_abort= 1; + sprintf(xorriso->info_text, +"----------- [%s = request to abort registered. Operation ends ] ------------\n", + cpt); + Xorriso_info(xorriso,0); + return(2); + } else if(*cpt=='@') { + if(strcmp(cpt,"@@")==0) { goto klammer_affe; } else if(strcmp(cpt,"@")==0) { @@ -2061,9 +2061,6 @@ klammer_affe:; } else if(strcmp(cpt,"r")==0 || strcmp(cpt,"R")==0 || strcmp(cpt,"y")==0 || strcmp(cpt,"Y")==0) { return(6); - } else if(strcmp(cpt,"x")==0 || strcmp(cpt,"X")==0 || - strcmp(cpt,"q")==0 || strcmp(cpt,"Q")==0) { - goto request_to_abort; } else { /* >>> unknown input */ sprintf(xorriso->info_text, @@ -3870,15 +3867,15 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " access time, modification time, both times.", " -mkdir iso_rr_path [...]", " Create empty directories if they do not exist yet", -"> -rmdir iso_rr_path [...]", +" -rmdir iso_rr_path [...]", " Delete empty directories.", " -- Mark end of particular action argument list.", "", "> -f Follow symbolic links within disk_path.", "", -"> -overwrite \"on\"|\"off\"", +" -overwrite \"on\"|\"off\"", " Allow or disallow to overwrite existing files in ISO image.", -"> -reassure \"on\"|\"off\"", +" -reassure \"on\"|\"off\"", " If \"on\" then ask the user for \"y\" or \"n\" with any", " file before deleting or overwriting it in the ISO image.", "", @@ -4605,8 +4602,8 @@ int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity, } -/* Options -rm alias -rmi , and -rm_r aias -rm_ri */ -/* @param flag bit0=recursive */ +/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */ +/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */ int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv, int *idx, int flag) { @@ -4628,12 +4625,12 @@ int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv, return(ret); strcpy(path, eff_path); - ret= Xorriso_rmi(xorriso, NULL, path, flag&1); + ret= Xorriso_rmi(xorriso, NULL, path, flag&(1|2)); if(ret<=0) goto ex; if(ret<3) { sprintf(xorriso->info_text, "Removed from ISO image: %s '%s'\n", - (ret>1 ? "subtree" : "file"), path); + ((flag&2) ? "directory" : (ret>1 ? "subtree" : "file")), path); Xorriso_info(xorriso, 0); } } @@ -5158,7 +5155,7 @@ next_command:; ret= Xorriso_option_rmi(xorriso, argc, argv, idx, 1); } else if(strcmp(cmd,"-rmdir")==0 || strcmp(cmd,"-rmdiri")==0) { - ret= Xorriso_option_rmdiri(xorriso, argc, argv, idx, 0); + ret= Xorriso_option_rmi(xorriso, argc, argv, idx, 2); } else if(strcmp(cmd,"-rollback")==0) { ret= Xorriso_option_rollback(xorriso, 0); diff --git a/libisoburn/trunk/test/xorriso.h b/libisoburn/trunk/test/xorriso.h index a471f55e..5773479b 100644 --- a/libisoburn/trunk/test/xorriso.h +++ b/libisoburn/trunk/test/xorriso.h @@ -286,15 +286,11 @@ int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity, /* Option -reassure "on"|"tree"|"off" */ int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag); -/* Options -rm alias -rmi , and -rm_r aias -rm_ri */ -/* @param flag bit0=recursive */ +/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */ +/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */ int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv, int *idx, int flag); -/* Option -rmdir alias -rmdiri */ -int Xorriso_option_rmdiri(struct XorrisO *xorriso, int argc, char **argv, - int *idx, int flag); - /* Option -rollback */ int Xorriso_option_rollback(struct XorrisO *xorriso, int flag); diff --git a/libisoburn/trunk/test/xorriso_timestamp.h b/libisoburn/trunk/test/xorriso_timestamp.h index 142374fe..512684fd 100644 --- a/libisoburn/trunk/test/xorriso_timestamp.h +++ b/libisoburn/trunk/test/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2007.11.07.123744" +#define Xorriso_timestamP "2007.11.07.150157" diff --git a/libisoburn/trunk/test/xorrisoburn.c b/libisoburn/trunk/test/xorrisoburn.c index a620cca7..8190d153 100644 --- a/libisoburn/trunk/test/xorrisoburn.c +++ b/libisoburn/trunk/test/xorrisoburn.c @@ -1422,7 +1422,14 @@ int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, if(LIBISO_ISDIR(victim_node)) is_dir= 1; - if(is_dir) { + if(!is_dir) { + if(flag&2) { /* rmdir */ + sprintf(xorriso->info_text, "%s in loaded ISO image is not a directory", + Text_shellsafe(path, sfe, 0)); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + ret= 0; goto ex; + } + } else { if(flag&1) { /* rm -r */ if(xorriso->do_reassure==1 && !xorriso->request_not_to_ask) { /* Iterate over subordinates and delete them */ @@ -1469,7 +1476,9 @@ int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, iter= iso_tree_node_children((struct iso_tree_node_dir *) victim_node); Xorriso_process_msg_queues(xorriso,0); if(iso_tree_iter_next(iter)!=NULL) { - sprintf(xorriso->info_text, "Directory not empty on attempt to delete"); + sprintf(xorriso->info_text, + "Directory not empty on attempt to delete: %s", + Text_shellsafe(path, sfe, 0)); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); ret= 0; goto ex; }