diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index 418422f3..fb6b2c07 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -4404,7 +4404,7 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr, a[0]= 0; ret= Xorriso_iso_lstat(xorriso, iso_adr, &s2, 0); - if(ret==-1) { + if(ret<0) { sprintf(respt, "? %s (ISO) : cannot find this file in ISO image\n", Text_shellsafe(iso_adr, sfe, 0)); if(!(flag&(1<<31))) @@ -4526,7 +4526,7 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr, {ret= -1; goto ex;} } ret= Xorriso_iso_lstat(xorriso, part_path, &stbuf, 0); - if(ret==-1) + if(ret<0) continue; ret= Xorriso_compare_2_contents(xorriso, a, disk_adr, s1.st_size, offset, bytes, @@ -6219,7 +6219,7 @@ int Xorriso_findx_action(struct XorrisO *xorriso, struct FindjoB *job, } if(action==15) { /* in_iso */ ret= Xorriso_iso_lstat(xorriso, iso_path, &stbuf, 0); - if(ret==-1) + if(ret<0) {ret= 1; goto ex;} sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0)); Xorriso_result(xorriso, 0); @@ -6246,7 +6246,7 @@ int Xorriso_findx_action(struct XorrisO *xorriso, struct FindjoB *job, ret= 1; } else if(action==19) { /* empty_iso_dir */ ret= Xorriso_iso_lstat(xorriso, iso_path, &stbuf, 0); - if(ret==-1) + if(ret<0) {ret= 1; goto ex;} if(!S_ISDIR(stbuf.st_mode)) {ret= 1; goto ex;} @@ -6258,7 +6258,7 @@ int Xorriso_findx_action(struct XorrisO *xorriso, struct FindjoB *job, } } else if(action==20) { /* is_full_in_iso */ ret= Xorriso_iso_lstat(xorriso, iso_path, &stbuf, 0); - if(ret==-1) + if(ret<0) {ret= 1; goto ex;} if(!S_ISDIR(stbuf.st_mode)) {ret= 1; goto ex;} @@ -9375,7 +9375,7 @@ int Xorriso_option_lsi(struct XorrisO *xorriso, int argc, char **argv, if((flag&2) && nump>0 ) { ; } else if(nump <= 0) { - if(Xorriso_iso_lstat(xorriso, xorriso->wdi, &stbuf, 0)==-1) { + if(Xorriso_iso_lstat(xorriso, xorriso->wdi, &stbuf, 0)<0) { sprintf(xorriso->info_text, "Current -cd path does not yet exist in the ISO image"); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); @@ -10626,13 +10626,16 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path, if(flag&8) { xorriso->find_compare_result= 1; ret= Xorriso_iso_lstat(xorriso, ipth, &stbuf, 0); - if(ret != -1) { + if(ret >= 0) { argv[0]= ipth; argv[1]= "-exec"; argv[2]= "update"; argv[3]= disk_path; zero= 0; ret= Xorriso_option_find(xorriso, 4, argv, &zero, 2); /* -findi */ + } else if(ret==-2) { /* severe error (e.g. lack of image) */ + ret= -1; + goto report_outcome; } else { not_in_iso= 1; ret= 1; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 0846fef8..849f2379 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.05.09.205517" +#define Xorriso_timestamP "2008.05.10.194336" diff --git a/xorriso/xorrisoburn.c b/xorriso/xorrisoburn.c index ba3dc981..dfc86833 100644 --- a/xorriso/xorrisoburn.c +++ b/xorriso/xorrisoburn.c @@ -3462,6 +3462,8 @@ int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf, ret= Xorriso_fake_stbuf(xorriso, path, stbuf, &node, 0); if(ret>0) return(0); + if(ret<0) + return(-2); return(-1); } diff --git a/xorriso/xorrisoburn.h b/xorriso/xorrisoburn.h index 301cb103..b6efe17c 100644 --- a/xorriso/xorrisoburn.h +++ b/xorriso/xorrisoburn.h @@ -158,7 +158,9 @@ int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag); int Xorriso_report_lib_versions(struct XorrisO *xorriso, int flag); -/* @return 0= stbuf content is valid , -1 = path not found */ +/* @return 0= stbuf content is valid , + -1 = path not found , -2 = severe error occured +*/ int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf, int flag);