diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index cbd71340..1151c416 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -8637,7 +8637,7 @@ int Xorriso_option_cpx(struct XorrisO *xorriso, int argc, char **argv, if(ret<=0 || xorriso->request_to_abort) goto problem_handler; - ret= Xorriso_iso_lstat(xorriso, eff_origin, &stbuf, 2); + ret= Xorriso_iso_lstat(xorriso, eff_origin, &stbuf, 2|4); if(ret==-1) goto problem_handler; if(S_ISDIR(stbuf.st_mode)) { diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 689042dd..9bc3caa0 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.05.24.092853" +#define Xorriso_timestamP "2008.05.24.170109" diff --git a/xorriso/xorrisoburn.c b/xorriso/xorrisoburn.c index 647153d3..0aeac1ca 100644 --- a/xorriso/xorrisoburn.c +++ b/xorriso/xorrisoburn.c @@ -1313,7 +1313,7 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume, *node= NULL; ret= iso_tree_path_to_node(volume, path_pt, node); Xorriso_process_msg_queues(xorriso,0); - if(ret<=0) { + if(ret<=0 || (*node)==NULL) { if(!(flag&1)) { sprintf(xorriso->info_text, "Cannot find path %s in loaded ISO image", Text_shellsafe(path_pt, sfe, 0)); @@ -1475,9 +1475,9 @@ int Xorriso_get_node_by_path(struct XorrisO *xorriso, /* <<< this is not safe +*/ #define Xorriso_can_get_dev_T 1 #define Xorriso_get_dev_by_botcH 1 -*/ #ifndef Xorriso_can_get_dev_T @@ -1557,6 +1557,7 @@ struct Iso_Special_0_6_4_xorrisO /* @param flag bit0= *node is already valid bit1= add extra block for size estimation + bit2= complain loudely if path is missing in image */ int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf, IsoNode **node, int flag) @@ -1569,7 +1570,7 @@ int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf, ret= Xorriso_get_volume(xorriso, &volume, 0); if(ret<=0) return(-1); - ret= Xorriso_node_from_path(xorriso, volume, path, node, 1); + ret= Xorriso_node_from_path(xorriso, volume, path, node, !(flag&4)); if(ret<=0) *node= NULL; } @@ -1625,7 +1626,8 @@ int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf, /* @param flag >>> bit0= follow links (i.e. stat() rather than lstat() - bit1= do not return -2 on sever errors + bit1= do not return -2 on severe errors + bit2= complain loudely if path is missing in image */ int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf, int flag) @@ -1639,10 +1641,10 @@ int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf, } - ret= Xorriso_fake_stbuf(xorriso, path, stbuf, &node, 0); + ret= Xorriso_fake_stbuf(xorriso, path, stbuf, &node, flag&4); if(ret>0) return(0); - if(ret<0) + if(ret<0 && !(flag&2)) return(-2); return(-1); }