New option -pacifier, more compatible pacifier with -as mkisofs

This commit is contained in:
2008-07-16 13:06:31 +00:00
parent 13f21630b8
commit 7831dabc82
6 changed files with 103 additions and 13 deletions

View File

@ -1317,7 +1317,10 @@ completed:;
/* @param flag bit0=with year and seconds
bit1=timestamp format YYYY.MM.DD.hhmmss
bit1-3= form
0= ls -l format
1= timestamp format YYYY.MM.DD.hhmmss
2= Wdy Mon Day hh:mm:ss Year
*/
char *Ftimetxt(time_t t, char timetext[40], int flag)
{
@ -1325,16 +1328,23 @@ char *Ftimetxt(time_t t, char timetext[40], int flag)
struct tm tms, *tmpt;
static char months[12][4]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
static char days[7][4]= {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
int form;
form= (flag>>1)&7;
tmpt= localtime_r(&t, &tms);
rpt= timetext;
rpt[0]= 0;
if(tmpt==0)
sprintf(rpt+strlen(rpt), "%12.f", (double) t);
else if (flag&2)
else if (form==1)
sprintf(rpt+strlen(rpt), "%4.4d.%2.2d.%2.2d.%2.2d%2.2d%2.2d",
1900+tms.tm_year, tms.tm_mon, tms.tm_mday,
tms.tm_hour, tms.tm_min, tms.tm_sec);
else if (form==2)
sprintf(rpt+strlen(rpt), "%s %s %2.2d %2.2d:%2.2d:%2.2d %4.4d",
days[tms.tm_wday], months[tms.tm_mon], tms.tm_mday,
tms.tm_hour, tms.tm_min, tms.tm_sec, 1900+tms.tm_year);
else if (flag&1)
sprintf(rpt+strlen(rpt), "%2d %3s %4.4d %2.2d:%2.2d:%2.2d",
tms.tm_mday, months[tms.tm_mon], 1900+tms.tm_year,
@ -2913,6 +2923,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->insert_count= 0;
m->insert_bytes= 0;
m->error_count= 0;
m->pacifier_style= 0;
m->pacifier_interval= 1.0;
m->pacifier_count= 0;
m->pacifier_total= 0;
@ -4188,7 +4199,14 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
Text_shellsafe(xorriso->session_logfile,sfe,0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->pacifier_style==0);
sprintf(line,"-pacifier '%s'\n",
xorriso->pacifier_style==2 ? "mkisofs" :
xorriso->pacifier_style==1 ? "cdrecord" : "xorriso");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (strcmp(xorriso->return_with_text,"SORRY")==0 &&
xorriso->return_with_value==32);
sprintf(line,"-return_with %s %d\n",
@ -7835,6 +7853,7 @@ not_enough_args:;
if(ret<=0)
goto ex;
was_path= 1;
xorriso->pacifier_style= 2;
}
}
if(do_print_size) {
@ -10193,6 +10212,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -as cdrecord [-help|-v|dev=|speed=|blank=|fs=|-eject|-atip|padsize=|path|-]",
" Perform some cdrecord gestures, eventually write at most one",
" data track to blank or overwriteable media.",
" -pacifier \"xorriso\"|\"cdrecord\"|\"mkisofs\"",
" Choose format of UPDATE pacifier during write operations.",
"",
"General options:",
" -help Print this text",
@ -11238,6 +11259,26 @@ int Xorriso_option_overwrite(struct XorrisO *xorriso, char *mode, int flag)
}
/* Option -pacifier */
int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
{
if(strcmp(style, "xorriso")==0 || strcmp(style, "default")==0)
xorriso->pacifier_style= 0;
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
xorriso->pacifier_style= 1;
else if(strcmp(style, "mkisofs")==0 || strcmp(style, "genisofs")==0 ||
strcmp(style, "genisoimage")==0 || strcmp(style, "xorrisofs")==0)
xorriso->pacifier_style= 2;
else {
sprintf(xorriso->info_text, "-pacifier: unknown behavior code '%s'", style);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
return(1);
}
/* Option -padding */
int Xorriso_option_padding(struct XorrisO *xorriso, char *size, int flag)
{
@ -12625,6 +12666,10 @@ next_command:;
(*idx)++;
ret= Xorriso_option_overwrite(xorriso,arg1,0);
} else if(strcmp(cmd,"pacifier")==0) {
(*idx)++;
ret= Xorriso_option_pacifier(xorriso, arg1, 0);
} else if(strcmp(cmd,"padding")==0) {
(*idx)++;
ret= Xorriso_option_padding(xorriso, arg1, 0);