Now loading libraries before -version, pacifier for -add
This commit is contained in:
@ -2920,6 +2920,11 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->insert_count= 0;
|
||||
m->insert_bytes= 0;
|
||||
m->error_count= 0;
|
||||
m->pacifier_interval= 1.0;
|
||||
m->pacifier_count= 0;
|
||||
m->pacifier_total= 0;
|
||||
m->start_time= 0.0;
|
||||
m->last_update_time= 0.0;
|
||||
m->result_line[0]= 0;
|
||||
m->result_line_counter= 0;
|
||||
m->result_page_counter= 0;
|
||||
@ -3356,14 +3361,67 @@ int Xorriso_restxt(struct XorrisO *xorriso, char *text)
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_reset_counters(struct XorrisO *xorriso, int flag)
|
||||
/*
|
||||
bit0= reset xorriso->found to -1
|
||||
int Xorriso_pacifier_reset(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
xorriso->start_time= Sfile_microtime(0);
|
||||
xorriso->last_update_time= xorriso->start_time;
|
||||
xorriso->pacifier_count= 0;
|
||||
xorriso->pacifier_total= 0;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* This call is to be issued by long running workers in short intervals.
|
||||
It will check whether enough time has elapsed since the last pacifier
|
||||
message and eventually issue an update message.
|
||||
@param what_done A sparse description of the action, preferrably in past
|
||||
tense. E.g. "done" , "files added".
|
||||
@param count The number of objects processed so far.
|
||||
Is ignored if <=0.
|
||||
@param todo The number of objects to be done in total.
|
||||
Is ignored if <=0.
|
||||
@param current_object A string telling the object currently processed.
|
||||
Ignored if "".
|
||||
@param flag Bitfield. Unused yet. Submit 0.
|
||||
*/
|
||||
int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
|
||||
off_t count, off_t todo, char *current_object,
|
||||
int flag)
|
||||
{
|
||||
double current_time, since;
|
||||
|
||||
current_time= Sfile_microtime(0);
|
||||
if(current_time - xorriso->last_update_time < xorriso->pacifier_interval)
|
||||
return(1);
|
||||
xorriso->last_update_time= Sfile_microtime(0);
|
||||
since= current_time - xorriso->start_time;
|
||||
if(count<=0.0) {
|
||||
if(current_object[0]==0)
|
||||
sprintf(xorriso->info_text,
|
||||
"%s since %.f seconds", what_done, since);
|
||||
else
|
||||
sprintf(xorriso->info_text,
|
||||
"Thank you for being patient since %.f seconds", since);
|
||||
} else if(todo<=0.0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"%.f %s in %.f seconds", (double) count, what_done, since);
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "%.f of %.f %s in %.f seconds",
|
||||
(double) count, (double) todo, what_done, since);
|
||||
}
|
||||
if(current_object[0]!=0)
|
||||
sprintf(xorriso->info_text+strlen(xorriso->info_text),
|
||||
", now at %s", current_object);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
int Xorriso_reset_counters(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
xorriso->error_count= 0;
|
||||
xorriso->insert_count= 0;
|
||||
xorriso->insert_bytes= 0;
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -6012,7 +6070,9 @@ int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag)
|
||||
|
||||
|
||||
/* Option -add */
|
||||
/* @param flag bit0=do not report the added item */
|
||||
/* @param flag bit0=do not report the added item
|
||||
bit1=do not reset pacifier
|
||||
*/
|
||||
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag)
|
||||
{
|
||||
@ -6025,6 +6085,8 @@ int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
if(!(flag&2))
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
for(i= 0; i<optc; i++) {
|
||||
if(Sfile_str(target,optv[i],0)<=0)
|
||||
{ret= -1; goto ex;}
|
||||
@ -6609,7 +6671,9 @@ int Xorriso_option_cpri(struct XorrisO *xorriso, int argc, char **argv,
|
||||
is_dir= 1;
|
||||
strcpy(dest_dir, eff_dest);
|
||||
}
|
||||
|
||||
/* Perform graft-ins */
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
for(i= 0; i<optc && !xorriso->request_to_abort; i++) {
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdx, optv[i], eff_origin,
|
||||
2|4);
|
||||
@ -7300,6 +7364,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Give up any unejected drive afterwards.",
|
||||
" -close \"on\"|\"off\"",
|
||||
" If \"on\" then mark the written media as not appendable.",
|
||||
" -padding number[\"k\"|\"m\"]",
|
||||
" Append extra bytes to image stream. (Default is 300k)",
|
||||
" -dummy \"on\"|\"off\"",
|
||||
" If \"on\" simulate burning. Refuse if media cannot simulate.",
|
||||
" -speed number[\"k\"|\"m\"|\"[x]CD\"|\"[x]DVD\"]",
|
||||
@ -7855,7 +7921,7 @@ problem_handler:;
|
||||
goto ex;
|
||||
}
|
||||
ex:;
|
||||
Xorriso_reset_counters(xorriso,1);
|
||||
Xorriso_reset_counters(xorriso,0);
|
||||
if(fp!=NULL)
|
||||
fclose(fp);
|
||||
if(ret<=0) {
|
||||
@ -7930,6 +7996,7 @@ int Xorriso_option_path_list(struct XorrisO *xorriso, char *adr, int flag)
|
||||
FILE *fp= NULL;
|
||||
char *argpt, sfe[5*SfileadrL],line[SfileadrL];
|
||||
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
if(adr[0]==0) {
|
||||
sprintf(xorriso->info_text,"Empty file name given with -path-list");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
@ -7950,7 +8017,7 @@ int Xorriso_option_path_list(struct XorrisO *xorriso, char *adr, int flag)
|
||||
continue;
|
||||
argpt= line;
|
||||
null= 0;
|
||||
ret= Xorriso_option_add(xorriso, 1, &argpt, &null, 1);
|
||||
ret= Xorriso_option_add(xorriso, 1, &argpt, &null, 1|2);
|
||||
if(ret<=0 || xorriso->request_to_abort)
|
||||
goto problem_handler;
|
||||
insertcount++;
|
||||
@ -8412,11 +8479,15 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag)
|
||||
"xorriso %s : RockRidge filesystem manipulator\n", PROG_VERSION);
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line),
|
||||
"Copyright (C) 2008, Thomas Schmitt <scdbackup@gmx.net>, libburnia project\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
sprintf(xorriso->result_line,
|
||||
"xorriso version : %s\n", PROG_VERSION);
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line),
|
||||
"Version timestamp : %s\n",Xorriso_timestamP);
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line),
|
||||
"Build timestamp : %s\n",Xorriso_build_timestamP);
|
||||
Xorriso_result(xorriso, 0);
|
||||
Xorriso_report_lib_versions(xorriso, 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -8917,7 +8988,7 @@ int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
|
||||
struct timezone tz;
|
||||
|
||||
gettimeofday(&tv,&tz);
|
||||
Xorriso_reset_counters(xorriso,1);
|
||||
Xorriso_reset_counters(xorriso,0);
|
||||
xorriso->idle_time= 0.0;
|
||||
tdiff= tv.tv_sec+(1.e-6*(double) tv.tv_usec);
|
||||
|
||||
@ -8951,7 +9022,7 @@ int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
|
||||
Xorriso_info(xorriso,0);
|
||||
xorriso->bar_is_fresh= 1;
|
||||
}
|
||||
Xorriso_reset_counters(xorriso,1);
|
||||
Xorriso_reset_counters(xorriso,0);
|
||||
ex:;
|
||||
Sfile_make_argv("", "", &argc, &argv, 2); /* release memory */
|
||||
return(ret);
|
||||
@ -9048,10 +9119,14 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
Xorriso_option_help(xorriso,0);
|
||||
xorriso->did_something_useful= 1;
|
||||
return(0);
|
||||
|
||||
#ifdef NIX
|
||||
} else if(strcmp(cmd,"version")==0) {
|
||||
Xorriso_option_version(xorriso, 0);
|
||||
xorriso->did_something_useful= 1;
|
||||
return(0);
|
||||
#endif
|
||||
|
||||
}
|
||||
} else if(i==1 && strcmp(cmd,"no_rc")==0) {
|
||||
ret= Xorriso_option_no_rc(xorriso, 0);
|
||||
@ -9152,8 +9227,7 @@ int Xorriso_main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* The prescan of arguments performs actions which have to happen before
|
||||
the normal processing of startup files and arguments. Currently:
|
||||
-no_rc and single-argument runs like -help or -version.
|
||||
the normal processing of startup files and arguments.
|
||||
*/
|
||||
ret= Xorriso_prescan_args(xorriso,argc,argv,0);
|
||||
if(ret==0)
|
||||
|
Reference in New Issue
Block a user