Implemented option -rmdir
This commit is contained in:
parent
3d27db24f1
commit
f46827aa62
@ -331,7 +331,7 @@ Create empty directories if they do not exist yet.
|
|||||||
Existence as directory generates a WARNING event, existence as
|
Existence as directory generates a WARNING event, existence as
|
||||||
other file cause a SORRY event.
|
other file cause a SORRY event.
|
||||||
.TP
|
.TP
|
||||||
> \fB\-rmdir\fR iso_rr_path [...]
|
\fB\-rmdir\fR iso_rr_path [...]
|
||||||
Delete empty directories.
|
Delete empty directories.
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-\fR
|
\fB\-\-\fR
|
||||||
|
@ -1994,40 +1994,40 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
|
|||||||
xorriso->result_page_length= -xorriso->result_page_length;
|
xorriso->result_page_length= -xorriso->result_page_length;
|
||||||
|
|
||||||
cpt= line;
|
cpt= line;
|
||||||
if(*cpt=='@') {
|
if(strcmp(cpt,"@@@")==0 ||
|
||||||
if(strcmp(cpt,"@@@")==0) {
|
strcmp(cpt,"x")==0 || strcmp(cpt,"X")==0 ||
|
||||||
request_to_abort:;
|
strcmp(cpt,"q")==0 || strcmp(cpt,"Q")==0) {
|
||||||
if(flag&1) {
|
if(flag&1) {
|
||||||
strcpy(previous_line,cpt);
|
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;
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"----------- [%s = request to abort registered. Operation ends ] ------------\n",
|
"....... [%s = %s registered. Really %s ? (y/n) ] .......\n",
|
||||||
cpt);
|
cpt,abort_req_text,abort_really_text);
|
||||||
Xorriso_info(xorriso,0);
|
Xorriso_info(xorriso,0);
|
||||||
return(2);
|
ret= Xorriso_dialog_input(xorriso,line,sizeof(line),1);
|
||||||
} else if(strcmp(cpt,"@@")==0) {
|
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;
|
goto klammer_affe;
|
||||||
|
|
||||||
} else if(strcmp(cpt,"@")==0) {
|
} else if(strcmp(cpt,"@")==0) {
|
||||||
@ -2061,9 +2061,6 @@ klammer_affe:;
|
|||||||
} else if(strcmp(cpt,"r")==0 || strcmp(cpt,"R")==0 ||
|
} else if(strcmp(cpt,"r")==0 || strcmp(cpt,"R")==0 ||
|
||||||
strcmp(cpt,"y")==0 || strcmp(cpt,"Y")==0) {
|
strcmp(cpt,"y")==0 || strcmp(cpt,"Y")==0) {
|
||||||
return(6);
|
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 {
|
} else {
|
||||||
/* >>> unknown input */
|
/* >>> unknown input */
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
@ -3870,15 +3867,15 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|||||||
" access time, modification time, both times.",
|
" access time, modification time, both times.",
|
||||||
" -mkdir iso_rr_path [...]",
|
" -mkdir iso_rr_path [...]",
|
||||||
" Create empty directories if they do not exist yet",
|
" Create empty directories if they do not exist yet",
|
||||||
"> -rmdir iso_rr_path [...]",
|
" -rmdir iso_rr_path [...]",
|
||||||
" Delete empty directories.",
|
" Delete empty directories.",
|
||||||
" -- Mark end of particular action argument list.",
|
" -- Mark end of particular action argument list.",
|
||||||
"",
|
"",
|
||||||
"> -f Follow symbolic links within disk_path.",
|
"> -f Follow symbolic links within disk_path.",
|
||||||
"",
|
"",
|
||||||
"> -overwrite \"on\"|\"off\"",
|
" -overwrite \"on\"|\"off\"",
|
||||||
" Allow or disallow to overwrite existing files in ISO image.",
|
" 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",
|
" If \"on\" then ask the user for \"y\" or \"n\" with any",
|
||||||
" file before deleting or overwriting it in the ISO image.",
|
" 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 */
|
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
|
||||||
/* @param flag bit0=recursive */
|
/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */
|
||||||
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *idx, int flag)
|
int *idx, int flag)
|
||||||
{
|
{
|
||||||
@ -4628,12 +4625,12 @@ int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
return(ret);
|
return(ret);
|
||||||
strcpy(path, eff_path);
|
strcpy(path, eff_path);
|
||||||
|
|
||||||
ret= Xorriso_rmi(xorriso, NULL, path, flag&1);
|
ret= Xorriso_rmi(xorriso, NULL, path, flag&(1|2));
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(ret<3) {
|
if(ret<3) {
|
||||||
sprintf(xorriso->info_text, "Removed from ISO image: %s '%s'\n",
|
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);
|
Xorriso_info(xorriso, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5158,7 +5155,7 @@ next_command:;
|
|||||||
ret= Xorriso_option_rmi(xorriso, argc, argv, idx, 1);
|
ret= Xorriso_option_rmi(xorriso, argc, argv, idx, 1);
|
||||||
|
|
||||||
} else if(strcmp(cmd,"-rmdir")==0 || strcmp(cmd,"-rmdiri")==0) {
|
} 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) {
|
} else if(strcmp(cmd,"-rollback")==0) {
|
||||||
ret= Xorriso_option_rollback(xorriso, 0);
|
ret= Xorriso_option_rollback(xorriso, 0);
|
||||||
|
@ -286,15 +286,11 @@ int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
|||||||
/* Option -reassure "on"|"tree"|"off" */
|
/* Option -reassure "on"|"tree"|"off" */
|
||||||
int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag);
|
int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag);
|
||||||
|
|
||||||
/* Options -rm alias -rmi , and -rm_r aias -rm_ri */
|
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
|
||||||
/* @param flag bit0=recursive */
|
/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */
|
||||||
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *idx, int flag);
|
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 */
|
/* Option -rollback */
|
||||||
int Xorriso_option_rollback(struct XorrisO *xorriso, int flag);
|
int Xorriso_option_rollback(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2007.11.07.123744"
|
#define Xorriso_timestamP "2007.11.07.150157"
|
||||||
|
@ -1422,7 +1422,14 @@ int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
|
|
||||||
if(LIBISO_ISDIR(victim_node))
|
if(LIBISO_ISDIR(victim_node))
|
||||||
is_dir= 1;
|
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(flag&1) { /* rm -r */
|
||||||
if(xorriso->do_reassure==1 && !xorriso->request_not_to_ask) {
|
if(xorriso->do_reassure==1 && !xorriso->request_not_to_ask) {
|
||||||
/* Iterate over subordinates and delete them */
|
/* 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);
|
iter= iso_tree_node_children((struct iso_tree_node_dir *) victim_node);
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
if(iso_tree_iter_next(iter)!=NULL) {
|
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);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user