From 55a70f146340b1a377f73ea90ba31bb20d3ac07f Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 25 Feb 2008 20:44:41 +0000 Subject: [PATCH] Adaptions of -as mkisofs and -as cdrecord to enable full use by scdbackup --- xorriso/xorriso.c | 37 ++++++++++++++++++++++++++++++------- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index 72d41d76..bf3bdb69 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -6209,7 +6209,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv, "timeout=", "debug=", "kdebug=", "kd=", "driver=", "ts=", "pregap=", "defpregap=", "mcn=", "isrc=", "index=", "textfile=", "pktsize=", "cuefile=", - "driveropts=", "gracetime=", "minbuf=", + "gracetime=", "minbuf=", "assert_write_lba=", "fifo_start_at=", "dev_translation=", "drive_scsi_dev_family=", "fallback_program=", "modesty_on_drive=", @@ -6365,6 +6365,13 @@ no_volunteer:; ret= Xorriso_option_dev(xorriso, cpt, 2|8); /* overwriteables as blank */ if(ret<=0) goto ex; + } else if(strncmp(argv[i],"driveropts=", 11)==0 || + strncmp(argv[i],"-driveropts=", 12)==0) { + if(strcmp(argv[i]+11, "help")==0) { + fprintf(stderr,"Driver options:\n"); + fprintf(stderr, + "burnfree\tPrepare writer to use BURN-Free technology\n"); + } } else if(strcmp(argv[i], "-dummy")==0) { xorriso->do_dummy= 1; } else if(strcmp(argv[i], "-eject")==0) { @@ -6476,6 +6483,10 @@ no_volunteer:; ret= 1; goto ex; } + if(!(do_checkdrive || do_atip || do_toc || blank_mode[0] || track_source[0] || + do_eject)) + {ret= 1; goto ex;} + if(xorriso->out_drive_handle==NULL) { sprintf(xorriso->info_text, "-as %s: No output drive selected", whom); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); @@ -6550,7 +6561,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int argc, char **argv, int flag) { int ret, i, k, was_path= 0, was_other_option= 0, mem_graft_points; - int do_print_size= 0, idx_offset= 0; + int do_print_size= 0, idx_offset= 0, fd; char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL]; char *ept, *add_pt, eff_path[SfileadrL]; @@ -6599,7 +6610,19 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, adr[0]= 0; for(i= 0; iresult_line, +"mkisofs 2.01-Emulation Copyright (C) 2008 see libburnia-project.org xorriso\n" + ); + fd= xorriso->dev_fd_1; + if(fd<0) + fd= 1; + write(fd, xorriso->result_line, strlen(xorriso->result_line)); + fsync(fd); + Xorriso_option_version(xorriso, 0); + + /* >>> this would need a ban to write images to stdout */; + } else if(strcmp(argv[i], "-o")==0 || strcmp(argv[i], "-output")==0) { if(i+1>=argc) goto not_enough_args; i++; @@ -6696,9 +6719,8 @@ no_volunteer:; } if(strcmp(argv[i], "-version")==0) { - sprintf(xorriso->result_line, "mkisofs 2.01-Emulation Copyright (C) 2008 see libburnia-project.org xorriso\n"); - Xorriso_result(xorriso, 1); - Xorriso_option_version(xorriso, 0); + /* was already handled in first argument scan */; + } else if(strcmp(argv[i], "-R")==0 || strcmp(argv[i], "-rock")==0) { /* ok */; } else if(strcmp(argv[i], "-J")==0 || strcmp(argv[i], "-joliet")==0) { @@ -9098,6 +9120,7 @@ int Xorriso_option_print_size(struct XorrisO *xorriso, int flag) if(fd<0) fd= 1; write(fd, xorriso->result_line, strlen(xorriso->result_line)); + fsync(fd); } else { sprintf(xorriso->result_line,"Image size : %ds\n", ret); Xorriso_result(xorriso,0); @@ -10243,7 +10266,7 @@ protect_stdout:; "Encountered - or stdio:/dev/fd/1 as possible write target."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); sprintf(xorriso->info_text, - "Redirecting any text message output to stderr."); + "Redirecting nearly all text message output to stderr."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); sprintf(xorriso->info_text, "Disabling use of libreadline."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 65a4dee5..f89ed6f3 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.02.25.174229" +#define Xorriso_timestamP "2008.02.25.204402"