From 5982c8e6b3fbcbf1544510b9879e1a655eab18ad Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 7 Mar 2008 07:53:59 +0000 Subject: [PATCH] New -findx -type "m" for active mount points --- xorriso/xorriso.c | 18 ++++++++++++++---- xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisoburn.c | 2 ++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index e580fedf..89b2dbaf 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -2515,7 +2515,7 @@ int Findjob_set_name_expr(struct FindjoB *o, char *name_expr, int flag) int Findjob_set_file_type(struct FindjoB *o, char file_type, int flag) { - static char known[]= {"bcdpf-lsX"}; + static char known[]= {"bcdpf-lsmX"}; if(file_type!=0) if(strchr(known, file_type)==NULL) @@ -2551,7 +2551,12 @@ int Findjob_test(struct FindjoB *o, char *name, if(o->file_type!='c') return(0); } else if(S_ISDIR(stbuf->st_mode)) { - if(o->file_type!='d') + if(o->file_type=='m') { + if(boss_stbuf==NULL) + return(0); + if(boss_stbuf->st_dev == stbuf->st_dev) + return(0); + } else if(o->file_type!='d') return(0); } else if(S_ISFIFO(stbuf->st_mode)) { if(o->file_type!='p') @@ -3305,6 +3310,7 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done, int flag) { double current_time, since; + char count_text[80]; current_time= Sfile_microtime(0); if(current_time - xorriso->last_update_time < xorriso->pacifier_interval @@ -3318,8 +3324,12 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done, sprintf(xorriso->info_text, "Thank you for being patient since %.f seconds", since); } else if(todo<=0.0) { + if(count<10000000) + sprintf(count_text, "%.f", (double) count); + else + Sfile_scale((double) count, count_text, 7, 1e5, 1); sprintf(xorriso->info_text, - "%.f %s in %.f seconds", (double) count, what_done, since); + "%s %s in %.f seconds", count_text, what_done, since); } else { sprintf(xorriso->info_text, "%.f of %.f %s in %.f seconds", (double) count, (double) todo, what_done, since); @@ -4520,7 +4530,7 @@ int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter, follow_links= (xorriso->do_follow_links || (xorriso->do_follow_param && !(flag&2))) <<28; ret= Xorriso_compare_2_files(xorriso, disk_path, iso_path, adrc, &result, - 2|follow_links|(1<<29)|((flag&1)<<31)); + 2|follow_links|((!(flag&1))<<29)|((flag&1)<<31)); if(retfind_compare_result) xorriso->find_compare_result= ret; if(flag&1) { diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 0bd69add..1784c8cd 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.03.06.174724" +#define Xorriso_timestamP "2008.03.07.075325" diff --git a/xorriso/xorrisoburn.c b/xorriso/xorrisoburn.c index 20141c71..4c4ef92f 100644 --- a/xorriso/xorrisoburn.c +++ b/xorriso/xorrisoburn.c @@ -4091,6 +4091,8 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job, /* ??? This seems to be redundant with the single test above ??? Should i dive in unconditionally and leave out test and action here ? ??? Then do above test unconditionally ? + --- Seems that the current configuration represents the special + handling of the find start path with mount points. Dangerous to change. */ ret= Findjob_test(job, name, dir_stbuf, &stbuf, depth, 0); if(ret<0)