Supporting option -as cdrecord -waiti
This commit is contained in:
parent
c9f3aefcf7
commit
73a02c1a07
@ -1388,6 +1388,30 @@ single_letters:;
|
||||
}
|
||||
|
||||
|
||||
int Wait_for_input(int fd, int microsec, int flag)
|
||||
{
|
||||
struct timeval wt;
|
||||
fd_set rds,wts,exs;
|
||||
int ready;
|
||||
|
||||
FD_ZERO(&rds);
|
||||
FD_ZERO(&wts);
|
||||
FD_ZERO(&exs);
|
||||
FD_SET(fd,&rds);
|
||||
FD_SET(fd,&exs);
|
||||
wt.tv_sec= microsec/1000000;
|
||||
wt.tv_usec= microsec%1000000;
|
||||
ready= select(fd+1,&rds,&wts,&exs,&wt);
|
||||
if(ready<=0)
|
||||
return(0);
|
||||
if(FD_ISSET(fd,&exs))
|
||||
return(-1);
|
||||
if(FD_ISSET(fd,&rds))
|
||||
return(1);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
|
||||
@ -7030,7 +7054,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
{
|
||||
int ret, i, k, mem_do_close, aq_ret, eject_ret;
|
||||
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;
|
||||
int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 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];
|
||||
@ -7062,7 +7086,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
"-scms", "-shorttrack", "-noshorttrack", "-packet", "-noclose",
|
||||
"-media-info", "-minfo",
|
||||
"-isosize", "-load", "-lock", "-raw96r", "-sao", "-dao", "-swab",
|
||||
"-tao", "-waiti", "-force", "-format",
|
||||
"-tao", "-force", "-format",
|
||||
|
||||
"--adjust_speed_to_drive", "--allow_emulated_drives", "--allow_setuid",
|
||||
"--allow_untested_media", "--any_track", "--demand_a_drive",
|
||||
@ -7091,6 +7115,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
"\t-eject\t\teject the disk after doing the work",
|
||||
"\t-toc\t\tretrieve and print TOC/PMA data",
|
||||
"\t-atip\t\tretrieve media state, print \"Is *erasable\"",
|
||||
"\t-waiti\t\twait until input is available before opening SCSI",
|
||||
"\tpadsize=#\tAmount of padding",
|
||||
"\t-data\t\tSubsequent tracks are CD-ROM data mode 1 (default)",
|
||||
"\t-pad\t\tpadsize=30k",
|
||||
@ -7196,9 +7221,7 @@ no_volunteer:;
|
||||
} else if(strncmp(argv[i], "-dev=", 5)==0 ||
|
||||
strncmp(argv[i], "dev=", 4)==0) {
|
||||
cpt= strchr(argv[i], '=')+1;
|
||||
ret= Xorriso_option_dev(xorriso, cpt, 2|8); /* overwriteables as blank */
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
strcpy(dev_adr, cpt);
|
||||
} else if(strncmp(argv[i],"driveropts=", 11)==0 ||
|
||||
strncmp(argv[i],"-driveropts=", 12)==0) {
|
||||
if(strcmp(argv[i]+11, "help")==0) {
|
||||
@ -7265,6 +7288,8 @@ no_volunteer:;
|
||||
do_verbous+= 3;
|
||||
} else if(strcmp(argv[i], "-version")==0) {
|
||||
do_version= 1;
|
||||
} else if(strcmp(argv[i], "-waiti")==0) {
|
||||
do_waiti= 1;
|
||||
} else if(strcmp(argv[i], "-help")==0) {
|
||||
do_help= 1;
|
||||
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
|
||||
@ -7295,6 +7320,26 @@ no_volunteer:;
|
||||
Xorriso_option_version(xorriso, 0);
|
||||
ret= 1; goto ex;
|
||||
}
|
||||
if(do_waiti) {
|
||||
sprintf(xorriso->info_text,
|
||||
"xorriso: Option -waiti pauses program until input appears at stdin\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
sprintf(xorriso->result_line, "Waiting for data on stdin...\n");
|
||||
Xorriso_result(xorriso, 1);
|
||||
for(ret= 0; ret==0; )
|
||||
ret= Wait_for_input(0,1000000,0);
|
||||
if(ret<0 || feof(stdin)) {
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"stdin produces exception rather than data", 0, "NOTE", 0);
|
||||
}
|
||||
sprintf(xorriso->info_text, "xorriso: Option -waiti pausing is done.\n");
|
||||
}
|
||||
if(dev_adr[0]) {
|
||||
ret= Xorriso_option_dev(xorriso, dev_adr, 2|8); /* overwriteables as blank */
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
if(do_help) {
|
||||
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
||||
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
||||
@ -7326,6 +7371,7 @@ no_volunteer:;
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
|
||||
if(speed[0]) {
|
||||
ret= Xorriso_option_speed(xorriso, speed, 0);
|
||||
if(ret<=0)
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2008.07.03.133023"
|
||||
#define Xorriso_timestamP "2008.07.04.070001"
|
||||
|
Loading…
Reference in New Issue
Block a user