diff --git a/libisoburn/trunk/xorriso/iso_manip.c b/libisoburn/trunk/xorriso/iso_manip.c index 726d1e5e..cd141824 100644 --- a/libisoburn/trunk/xorriso/iso_manip.c +++ b/libisoburn/trunk/xorriso/iso_manip.c @@ -994,7 +994,7 @@ int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, off_t boss_mem, if(ret<=0) goto ex; root_dir= iso_image_get_root(volume); - if(((void *) root_dir) == ((void *) victim_node)) { + if(((void *) root_dir) == ((void *) victim_node) && !(flag & 1)) { sprintf(xorriso->info_text, "May not delete root directory"); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); {ret= 0; goto ex;} @@ -1012,7 +1012,7 @@ int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, off_t boss_mem, } else { if(flag&1) { /* rm -r */ if((xorriso->do_reassure==1 && !xorriso->request_not_to_ask) || - (flag&32)) { + (flag&32) || ((void *) root_dir) == ((void *) victim_node)) { /* Iterate over subordinates and delete them */ mem= boss_mem; @@ -1089,6 +1089,9 @@ dir_not_removed:; } } + if(((void *) root_dir) == ((void *) victim_node)) + {ret= 2; goto ex;} + if(xorriso->request_to_abort) {ret= 3; goto ex;} boss_node= iso_node_get_parent(victim_node); diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index 7d4af9e1..5e9a73fb 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.10.29.164503" +#define Xorriso_timestamP "2010.11.01.191542"