diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index bdc24dda..05c1107d 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -2,7 +2,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH XORRISO 1 "Feb 14, 2010" +.TH XORRISO 1 "Feb 17, 2010" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -3158,6 +3158,15 @@ Record format is: timestamp start_lba size volume-id .br The first three items are single words, the rest of the line is the volume id. .TP +\fB\-scsi_log\fR "on"|"off" +Mode "on" enables very verbous logging of SCSI commands and drive replies. +Logging messages get printed to stderr, not to any of the xorriso output +channels. +.br +A special property of this option is that the first -scsi_log setting +among the start arguments is in effect already when the first operations +of xorriso begin. Only "-scsi_log" with dash "-" is recognized that way. +.TP \fB\-end\fR .br End program immediately diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index 818f6da6..9f96ac81 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -4868,6 +4868,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag) } m->msglist_stackfill= 0; m->status_history_max= Xorriso_status_history_maX; + m->scsi_log= 0; strcpy(m->report_about_text, "UPDATE"); Xorriso__text_to_sev(m->report_about_text, &m->report_about_severity, 0); m->library_msg_direct_print= 0; @@ -7126,6 +7127,11 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) if(!(is_default && no_defaults)) Xorriso_status_result(xorriso,filter,fp,flag&2); + is_default= (xorriso->scsi_log == 0); + sprintf(line,"-scsi_log %s\n", xorriso->scsi_log ? "on" : "off"); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso,filter,fp,flag&2); + is_default= (xorriso->session_logfile[0]==0); sprintf(line,"-session_log %s\n", Text_shellsafe(xorriso->session_logfile,sfe,0)); @@ -16448,6 +16454,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -session_log path", " Set path of a file where a log record gets appended after", " each session. Form: timestamp start_lba size volume-id", +" -scsi_log \"on\"|\"off\"", +" Enable or disable logging of SCSI commands to stderr.", " # any text Is ignored. In dialog mode the input line will be stored in", " the eventual readline history, nevertheless.", " -version Tell program and version number", @@ -18200,6 +18208,23 @@ int Xorriso_option_scdbackup_tag(struct XorrisO *xorriso, char *listname, } +/* Option -scsi_log */ +int Xorriso_option_scsi_log(struct XorrisO *xorriso, char *mode, int flag) +{ + if(strcmp(mode, "on") == 0) + xorriso->scsi_log= 1; + else if(strcmp(mode, "off") == 0) + xorriso->scsi_log= 0; + else { + sprintf(xorriso->info_text, "-scsi_log: unknown mode '%s'", mode); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + Xorriso_scsi_log(xorriso, !!xorriso->scsi_log); + return(1); +} + + /* Option -session_log */ int Xorriso_option_session_log(struct XorrisO *xorriso, char *path, int flag) { @@ -19381,7 +19406,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv, "options_from_file","osirrox","outdev","out_charset","overwrite", "pacifier","padding","path_list","pathspecs","pkt_output","print","prompt", "prog","prog_help","publisher","quoted_not_list","quoted_path_list", - "reassure","report_about","rom_toc_scan", + "reassure","report_about","rom_toc_scan","scsi_log", "session_log","speed","split_size","status","status_history_max", "stdio_sync","stream_recording","system_id","temp_mem_limit", "uid","unregister_filter","use_readline","volid","volset_id", @@ -20090,6 +20115,10 @@ next_command:; (*idx)+= 2; ret= Xorriso_option_scdbackup_tag(xorriso, arg1, arg2, 0); + } else if(strcmp(cmd, "scsi_log") == 0) { + (*idx)++; + ret= Xorriso_option_scsi_log(xorriso, arg1, 0); + } else if(strcmp(cmd,"session_log")==0) { (*idx)++; ret= Xorriso_option_session_log(xorriso, arg1, 0); @@ -20466,19 +20495,19 @@ protect_stdout:; sprintf(xorriso->info_text, "Disabling use of libreadline."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); - } else if(strcmp(cmd,"abort_on")==0 && was_dashed) { + } else if(strcmp(cmd,"abort_on")==0 && was_dashed == 1) { i++; if(!was_abort_on) Xorriso_option_abort_on(xorriso, arg1, 0); was_abort_on= 1; - } else if(strcmp(cmd,"report_about")==0 && was_dashed) { + } else if(strcmp(cmd,"report_about")==0 && was_dashed == 1) { i++; if(!was_report_about) Xorriso_option_report_about(xorriso, arg1, 0); was_report_about= 1; - } else if(strcmp(cmd,"return_with")==0 && was_dashed) { + } else if(strcmp(cmd,"return_with")==0 && was_dashed == 1) { i+= 2; num2= 0; sscanf(arg2,"%d",&num2); @@ -20486,7 +20515,7 @@ protect_stdout:; Xorriso_option_return_with(xorriso, arg1, num2, 0); was_return_with= 1; - } else if(strcmp(cmd,"as")==0 && was_dashed) { + } else if(strcmp(cmd,"as")==0 && was_dashed == 1) { if(strcmp(arg1, "mkisofs")==0 || strcmp(arg1, "genisoimage")==0 || strcmp(arg1, "genisofs")==0 || strcmp(arg1, "xorrisofs")==0) goto protect_stdout; @@ -20498,6 +20527,10 @@ protect_stdout:; if(ret <= 0) goto ex; + } else if(strcmp(cmd, "scsi_log") == 0 && was_dashed == 1) { + i++; + Xorriso_option_scsi_log(xorriso, arg1, 0); + } else { ret= Xorriso_count_args(xorriso, argc-i, argv+i, &arg_count, 1); if(ret==1) diff --git a/xorriso/xorriso.h b/xorriso/xorriso.h index 49549bbe..2596ecf6 100644 --- a/xorriso/xorriso.h +++ b/xorriso/xorriso.h @@ -887,6 +887,8 @@ int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode, /* Option -scdbackup_tag */ int Xorriso_option_scdbackup_tag(struct XorrisO *xorriso, char *list_path, char *record_name, int flag); +/* Option -scsi_log */ +int Xorriso_option_scsi_log(struct XorrisO *xorriso, char *mode, int flag); /* Option -session_log */ int Xorriso_option_session_log(struct XorrisO *xorriso, char *path, int flag); diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 5eda8cad..1b1edd26 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -368,6 +368,8 @@ struct XorrisO { /* the global context of xorriso */ int status_history_max; /* for -status long_history */ + /* 0= no logging of SCSI commands, 1= to stderr */ + int scsi_log; char report_about_text[20]; int report_about_severity; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index f0426344..6d40f7b7 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.02.17.140002" +#define Xorriso_timestamP "2010.02.18.125019" diff --git a/xorriso/xorrisoburn.c b/xorriso/xorrisoburn.c index 585e8027..a6d32e4a 100644 --- a/xorriso/xorrisoburn.c +++ b/xorriso/xorrisoburn.c @@ -13014,3 +13014,13 @@ int Xorriso_set_change_pending(struct XorrisO *xorriso, int flag) return(1); } + +/* @param flag bit0= enable SCSI command logging to stderr */ +int Xorriso_scsi_log(struct XorrisO *xorriso, int flag) +{ + if(flag == 0) + burn_set_scsi_logging(0); + else + burn_set_scsi_logging(2|4); + return(1); +} diff --git a/xorriso/xorrisoburn.h b/xorriso/xorrisoburn.h index 3af3b3d8..5f24027c 100644 --- a/xorriso/xorrisoburn.h +++ b/xorriso/xorrisoburn.h @@ -488,6 +488,10 @@ int Xorriso_pvd_info(struct XorrisO *xorriso, int flag); /* @param flag bit0= do not set hln_change_pending */ int Xorriso_set_change_pending(struct XorrisO *xorriso, int flag); +/* @param flag bit0= enable SCSI command logging to stderr */ +int Xorriso_scsi_log(struct XorrisO *xorriso, int flag); + + /* A pseudo file type for El-Torito bootsectors as in man 2 stat : For now take the highest possible value.