Bug fix: Corrected handling of -as cdrecord -mode2, -xa, -xa2, -xa2, -xamix, xorrisofs -help, xorrecord -help
This commit is contained in:
parent
4feba8b2df
commit
de4f98c03e
@ -10291,57 +10291,8 @@ int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* micro version of cdrskin */
|
int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
|
||||||
int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
|
||||||
int flag)
|
|
||||||
{
|
{
|
||||||
int ret, i, k, mem_do_close, aq_ret, eject_ret, msc1, msc2, hflag;
|
|
||||||
int do_atip= 0, do_checkdrive= 0, do_eject= 0, do_scanbus= 0;
|
|
||||||
int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0;
|
|
||||||
int do_multi= 0, do_msinfo= 0, do_grow= 0, do_isosize= 0;
|
|
||||||
double write_start_address= -1.0, tsize= -1.0;
|
|
||||||
char track_source[SfileadrL], sfe[5*SfileadrL], dev_adr[SfileadrL], *cpt;
|
|
||||||
char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80];
|
|
||||||
char speed[80];
|
|
||||||
|
|
||||||
/* cdrecord 2.01 options which are not scheduled for implementation, yet */
|
|
||||||
static char ignored_partial_options[][41]= {
|
|
||||||
"timeout=", "debug=", "kdebug=", "kd=", "driver=", "ts=",
|
|
||||||
"pregap=", "defpregap=", "mcn=", "isrc=", "index=", "textfile=",
|
|
||||||
"pktsize=", "cuefile=",
|
|
||||||
"gracetime=", "minbuf=",
|
|
||||||
|
|
||||||
"assert_write_lba=", "fifo_start_at=", "dev_translation=",
|
|
||||||
"drive_scsi_dev_family=", "fallback_program=", "modesty_on_drive=",
|
|
||||||
"tao_to_sao_tsize=",
|
|
||||||
|
|
||||||
"direct_write_amount=", "msifile=",
|
|
||||||
|
|
||||||
""
|
|
||||||
};
|
|
||||||
static char ignored_full_options[][41]= {
|
|
||||||
"-d", "-Verbose", "-V", "-silent", "-s", "-setdropts", "-prcap",
|
|
||||||
"-reset", "-abort", "-overburn", "-ignsize", "-useinfo",
|
|
||||||
"-fix", "-nofix",
|
|
||||||
"-raw", "-raw96p", "-raw16",
|
|
||||||
"-clone", "-text", "-mode2", "-xa", "-xa1", "-xa2", "-xamix",
|
|
||||||
"-cdi", "-preemp", "-nopreemp", "-copy", "-nocopy",
|
|
||||||
"-scms", "-shorttrack", "-noshorttrack", "-packet", "-noclose",
|
|
||||||
"-media-info", "-minfo",
|
|
||||||
"-load", "-lock", "-raw96r", "-sao", "-dao", "-swab",
|
|
||||||
"-tao", "-force", "-format",
|
|
||||||
|
|
||||||
"--adjust_speed_to_drive", "--allow_emulated_drives", "--allow_setuid",
|
|
||||||
"--allow_untested_media", "--any_track", "--demand_a_drive",
|
|
||||||
"--fifo_disable", "--fifo_start_empty", "--fill_up_media",
|
|
||||||
"--list_ignored_options", "--no_rc", "--no_convert_fs_adr",
|
|
||||||
"--prodvd_cli_compatible", "--single_track",
|
|
||||||
|
|
||||||
"--tell_media_space",
|
|
||||||
|
|
||||||
""
|
|
||||||
};
|
|
||||||
|
|
||||||
static char helptext[][80]= {
|
static char helptext[][80]= {
|
||||||
"Usage: xorriso -as cdrecord [options|source_addresses]",
|
"Usage: xorriso -as cdrecord [options|source_addresses]",
|
||||||
"Note: This is not cdrecord. See xorriso -help, xorriso -version, man xorriso",
|
"Note: This is not cdrecord. See xorriso -help, xorriso -version, man xorriso",
|
||||||
@ -10378,7 +10329,65 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
|||||||
"A much more elaborate cdrecord emulator is cdrskin from the same project.",
|
"A much more elaborate cdrecord emulator is cdrskin from the same project.",
|
||||||
"@End_of_helptexT@"
|
"@End_of_helptexT@"
|
||||||
};
|
};
|
||||||
/* "\t-scanbus\tscan the SCSI bus and exit emulation", */
|
int i;
|
||||||
|
|
||||||
|
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
||||||
|
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
||||||
|
Xorriso_info(xorriso,0);
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* micro version of cdrskin */
|
||||||
|
int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||||
|
int flag)
|
||||||
|
{
|
||||||
|
int ret, i, k, mem_do_close, aq_ret, eject_ret, msc1, msc2, hflag;
|
||||||
|
int do_atip= 0, do_checkdrive= 0, do_eject= 0, do_scanbus= 0;
|
||||||
|
int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0;
|
||||||
|
int do_multi= 0, do_msinfo= 0, do_grow= 0, do_isosize= 0, do_xa1= 0;
|
||||||
|
double write_start_address= -1.0, tsize= -1.0;
|
||||||
|
char track_source[SfileadrL], sfe[5*SfileadrL], dev_adr[SfileadrL], *cpt;
|
||||||
|
char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80];
|
||||||
|
char speed[80];
|
||||||
|
|
||||||
|
/* cdrecord 2.01 options which are not scheduled for implementation, yet */
|
||||||
|
static char ignored_partial_options[][41]= {
|
||||||
|
"timeout=", "debug=", "kdebug=", "kd=", "driver=", "ts=",
|
||||||
|
"pregap=", "defpregap=", "mcn=", "isrc=", "index=", "textfile=",
|
||||||
|
"pktsize=", "cuefile=",
|
||||||
|
"gracetime=", "minbuf=",
|
||||||
|
|
||||||
|
"assert_write_lba=", "fifo_start_at=", "dev_translation=",
|
||||||
|
"drive_scsi_dev_family=", "fallback_program=", "modesty_on_drive=",
|
||||||
|
"tao_to_sao_tsize=",
|
||||||
|
|
||||||
|
"direct_write_amount=", "msifile=",
|
||||||
|
|
||||||
|
""
|
||||||
|
};
|
||||||
|
static char ignored_full_options[][41]= {
|
||||||
|
"-d", "-Verbose", "-V", "-silent", "-s", "-setdropts", "-prcap",
|
||||||
|
"-reset", "-abort", "-overburn", "-ignsize", "-useinfo",
|
||||||
|
"-fix", "-nofix",
|
||||||
|
"-raw", "-raw96p", "-raw16",
|
||||||
|
"-clone", "-text",
|
||||||
|
"-cdi", "-preemp", "-nopreemp", "-copy", "-nocopy",
|
||||||
|
"-scms", "-shorttrack", "-noshorttrack", "-packet", "-noclose",
|
||||||
|
"-media-info", "-minfo",
|
||||||
|
"-load", "-lock", "-raw96r", "-sao", "-dao", "-swab",
|
||||||
|
"-tao", "-force", "-format",
|
||||||
|
|
||||||
|
"--adjust_speed_to_drive", "--allow_emulated_drives", "--allow_setuid",
|
||||||
|
"--allow_untested_media", "--any_track", "--demand_a_drive",
|
||||||
|
"--fifo_disable", "--fifo_start_empty", "--fill_up_media",
|
||||||
|
"--list_ignored_options", "--no_rc", "--no_convert_fs_adr",
|
||||||
|
"--prodvd_cli_compatible", "--single_track",
|
||||||
|
"--tell_media_space",
|
||||||
|
|
||||||
|
""
|
||||||
|
};
|
||||||
|
|
||||||
static char blank_help[][80]= {
|
static char blank_help[][80]= {
|
||||||
"Blanking options:",
|
"Blanking options:",
|
||||||
@ -10501,6 +10510,9 @@ no_volunteer:;
|
|||||||
do_isosize= 1;
|
do_isosize= 1;
|
||||||
} else if(strcmp(argv[i], "-inq")==0) {
|
} else if(strcmp(argv[i], "-inq")==0) {
|
||||||
do_checkdrive= 2;
|
do_checkdrive= 2;
|
||||||
|
} else if(strcmp(argv[i], "-mode2")==0) {
|
||||||
|
Xorriso_msgs_submit(xorriso, 0,
|
||||||
|
"Defaulting option -mode2 to option -data", 0, "NOTE", 0);
|
||||||
} else if(strcmp(argv[i], "-msinfo")==0) {
|
} else if(strcmp(argv[i], "-msinfo")==0) {
|
||||||
do_msinfo= 1;
|
do_msinfo= 1;
|
||||||
} else if(strcmp(argv[i], "-multi")==0) {
|
} else if(strcmp(argv[i], "-multi")==0) {
|
||||||
@ -10533,7 +10545,7 @@ no_volunteer:;
|
|||||||
cpt= strchr(argv[i], '=')+1;
|
cpt= strchr(argv[i], '=')+1;
|
||||||
Xorriso_option_stream_recording(xorriso, cpt, 0);
|
Xorriso_option_stream_recording(xorriso, cpt, 0);
|
||||||
|
|
||||||
} else if(strcmp(argv[i], "-toc")==0) {
|
} else if(strcmp(argv[i], "-toc")==0 || strcmp(argv[i], "--long_toc")==0) {
|
||||||
do_toc= 1;
|
do_toc= 1;
|
||||||
} else if(strncmp(argv[i], "-tsize=", 7)==0 ||
|
} else if(strncmp(argv[i], "-tsize=", 7)==0 ||
|
||||||
strncmp(argv[i], "tsize=", 6)==0) {
|
strncmp(argv[i], "tsize=", 6)==0) {
|
||||||
@ -10556,6 +10568,22 @@ no_volunteer:;
|
|||||||
do_waiti= 1;
|
do_waiti= 1;
|
||||||
} else if(strncmp(argv[i], "write_start_address=", 20)==0) {
|
} else if(strncmp(argv[i], "write_start_address=", 20)==0) {
|
||||||
write_start_address= Scanf_io_size(argv[i]+20,0);
|
write_start_address= Scanf_io_size(argv[i]+20,0);
|
||||||
|
} else if(strcmp(argv[i], "-xa")==0) {
|
||||||
|
Xorriso_msgs_submit(xorriso, 0,
|
||||||
|
"Defaulting option -xa to option -data", 0, "NOTE", 0);
|
||||||
|
} else if(strcmp(argv[i], "-xa1")==0) {
|
||||||
|
if(do_xa1 == 0)
|
||||||
|
do_xa1= 1;
|
||||||
|
} else if(strcmp(argv[i], "--xa1-ignore")==0) {
|
||||||
|
do_xa1= -1;
|
||||||
|
} else if(strcmp(argv[i], "-xa2")==0) {
|
||||||
|
Xorriso_msgs_submit(xorriso, 0,
|
||||||
|
"Defaulting option -xa2 to option -data", 0, "NOTE", 0);
|
||||||
|
} else if(strcmp(argv[i], "-xamix")==0) {
|
||||||
|
Xorriso_msgs_submit(xorriso, 0,
|
||||||
|
"Option -xamix not implemented and data not yet convertible to other modes",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
|
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
|
||||||
sprintf(xorriso->info_text, "-as %s: Unknown option %s",
|
sprintf(xorriso->info_text, "-as %s: Unknown option %s",
|
||||||
whom, Text_shellsafe(argv[i], sfe, 0));
|
whom, Text_shellsafe(argv[i], sfe, 0));
|
||||||
@ -10608,10 +10636,7 @@ no_volunteer:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(do_help) {
|
if(do_help) {
|
||||||
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
Xorriso_cdrskin_help(xorriso, 0);
|
||||||
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
|
||||||
Xorriso_info(xorriso,0);
|
|
||||||
}
|
|
||||||
ret= 1; goto ex;
|
ret= 1; goto ex;
|
||||||
}
|
}
|
||||||
if(do_scanbus) {
|
if(do_scanbus) {
|
||||||
@ -10691,7 +10716,7 @@ no_volunteer:;
|
|||||||
xorriso->do_close= !do_multi;
|
xorriso->do_close= !do_multi;
|
||||||
ret= Xorriso_burn_track(xorriso, (off_t) write_start_address,
|
ret= Xorriso_burn_track(xorriso, (off_t) write_start_address,
|
||||||
track_source, (off_t) tsize,
|
track_source, (off_t) tsize,
|
||||||
(!!do_grow)|((!!do_isosize)<<1));
|
(!!do_grow) | ((!!do_isosize) << 1) | ((do_xa1 == 1) << 2));
|
||||||
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
|
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
|
||||||
if(ret<=0 && ret<aq_ret)
|
if(ret<=0 && ret<aq_ret)
|
||||||
goto ex;
|
goto ex;
|
||||||
@ -10758,16 +10783,8 @@ no_volunteer:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* micro emulation of mkisofs */
|
int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||||
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|
||||||
int argc, char **argv, int flag)
|
|
||||||
{
|
{
|
||||||
int ret, i, was_path= 0, was_other_option= 0, mem_graft_points, mem;
|
|
||||||
int do_print_size= 0, fd, idx, iso_level= 0, no_emul_boot= 0;
|
|
||||||
int option_b= 0, was_failure= 0, fret;
|
|
||||||
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
|
||||||
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
|
||||||
|
|
||||||
static char helptext[][80]= {
|
static char helptext[][80]= {
|
||||||
"Usage: xorriso -as mkisofs [options] file...",
|
"Usage: xorriso -as mkisofs [options] file...",
|
||||||
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorriso",
|
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorriso",
|
||||||
@ -10814,6 +10831,30 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
" -version Print the current version",
|
" -version Print the current version",
|
||||||
"@End_of_helptexT@"
|
"@End_of_helptexT@"
|
||||||
};
|
};
|
||||||
|
char ra_text[80];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
strcpy(ra_text, xorriso->report_about_text);
|
||||||
|
|
||||||
|
Xorriso_option_report_about(xorriso, "NOTE", 0);
|
||||||
|
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
||||||
|
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
||||||
|
Xorriso_info(xorriso, 1);
|
||||||
|
}
|
||||||
|
Xorriso_option_report_about(xorriso, ra_text, 0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* micro emulation of mkisofs */
|
||||||
|
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||||
|
int argc, char **argv, int flag)
|
||||||
|
{
|
||||||
|
int ret, i, was_path= 0, was_other_option= 0, mem_graft_points, mem;
|
||||||
|
int do_print_size= 0, fd, idx, iso_level= 0, no_emul_boot= 0;
|
||||||
|
int option_b= 0, was_failure= 0, fret;
|
||||||
|
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
||||||
|
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
||||||
|
|
||||||
strcpy(ra_text, xorriso->report_about_text);
|
strcpy(ra_text, xorriso->report_about_text);
|
||||||
|
|
||||||
@ -10859,12 +10900,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
strncpy(msc, argv[i], sizeof(msc)-1);
|
strncpy(msc, argv[i], sizeof(msc)-1);
|
||||||
msc[sizeof(msc)-1]= 0;
|
msc[sizeof(msc)-1]= 0;
|
||||||
} else if(strcmp(argv[i], "-help")==0) {
|
} else if(strcmp(argv[i], "-help")==0) {
|
||||||
Xorriso_option_report_about(xorriso, "NOTE", 0);
|
Xorriso_genisofs_help(xorriso, 0);
|
||||||
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
|
||||||
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
|
||||||
Xorriso_info(xorriso, 1);
|
|
||||||
}
|
|
||||||
Xorriso_option_report_about(xorriso, ra_text, 0);
|
|
||||||
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-verbose")==0) {
|
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-verbose")==0) {
|
||||||
strcpy(ra_text, "UPDATE");
|
strcpy(ra_text, "UPDATE");
|
||||||
} else if(strcmp(argv[i], "-quiet")==0) {
|
} else if(strcmp(argv[i], "-quiet")==0) {
|
||||||
@ -20014,7 +20050,13 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
xorriso->did_something_useful= 1;
|
xorriso->did_something_useful= 1;
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
} else if(strcmp(cmd,"help")==0) {
|
} else if(strcmp(cmd,"help")==0) {
|
||||||
|
if(xorriso->argument_emulation == 1) {
|
||||||
|
Xorriso_genisofs_help(xorriso, 0);
|
||||||
|
} else if(xorriso->argument_emulation == 2) {
|
||||||
|
Xorriso_cdrskin_help(xorriso, 0);
|
||||||
|
} else {
|
||||||
Xorriso_option_help(xorriso,0);
|
Xorriso_option_help(xorriso,0);
|
||||||
|
}
|
||||||
xorriso->did_something_useful= 1;
|
xorriso->did_something_useful= 1;
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2009.09.19.161026"
|
#define Xorriso_timestamP "2009.09.20.092811"
|
||||||
|
@ -1353,7 +1353,7 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)
|
|||||||
do_eject= !!(flag&4);
|
do_eject= !!(flag&4);
|
||||||
if((flag & 4) && !xorriso->outdev_is_exclusive) {
|
if((flag & 4) && !xorriso->outdev_is_exclusive) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Will not eject media in non-exclusively aquired output drive.");
|
"Will not eject media in non-exclusively aquired drive.");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||||
do_eject= 0;
|
do_eject= 0;
|
||||||
}
|
}
|
||||||
@ -8862,6 +8862,7 @@ int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize,
|
|||||||
@param tsize is valid if >0
|
@param tsize is valid if >0
|
||||||
@param flag bit0= grow_overwriteable_iso
|
@param flag bit0= grow_overwriteable_iso
|
||||||
bit1= do_isosize
|
bit1= do_isosize
|
||||||
|
bit2= do_xa1 conversion
|
||||||
*/
|
*/
|
||||||
int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
||||||
char *track_source, off_t tsize, int flag)
|
char *track_source, off_t tsize, int flag)
|
||||||
@ -8943,6 +8944,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
}
|
}
|
||||||
|
burn_track_set_cdxa_conv(track, !!(flag & 4));
|
||||||
burn_session_add_track(session, track, BURN_POS_END);
|
burn_session_add_track(session, track, BURN_POS_END);
|
||||||
burn_source_free(data_src);
|
burn_source_free(data_src);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user