|
|
|
@ -4819,6 +4819,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|
|
|
|
m->padding= 300*1024;
|
|
|
|
|
m->alignment= 0;
|
|
|
|
|
m->do_stream_recording= 0;
|
|
|
|
|
m->dvd_obs= 0;
|
|
|
|
|
m->stdio_sync= 0;
|
|
|
|
|
m->keep_boot_image= 0;
|
|
|
|
|
m->patch_isolinux_image= 0;
|
|
|
|
|
m->boot_image_bin_path[0]= 0;
|
|
|
|
@ -7075,6 +7077,31 @@ 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->dvd_obs == 0);
|
|
|
|
|
strcpy(mode, "default");
|
|
|
|
|
if(xorriso->dvd_obs == 32768 || xorriso->dvd_obs == 65536)
|
|
|
|
|
sprintf(mode, "%dk", xorriso->dvd_obs / 1024);
|
|
|
|
|
sprintf(line,"-dvd_obs %s\n", mode);
|
|
|
|
|
if(!(is_default && no_defaults))
|
|
|
|
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
|
|
|
|
|
|
|
|
|
is_default= (xorriso->stdio_sync == 0);
|
|
|
|
|
strcpy(line, "-stdio_sync ");
|
|
|
|
|
if(xorriso->stdio_sync == -1)
|
|
|
|
|
strcat(line, "off");
|
|
|
|
|
else if(xorriso->stdio_sync == 0)
|
|
|
|
|
strcat(line, "on");
|
|
|
|
|
else if(xorriso->stdio_sync % 512) {
|
|
|
|
|
Sfile_off_t_text(line+strlen(line), (off_t) (xorriso->stdio_sync * 2048),
|
|
|
|
|
0);
|
|
|
|
|
} else {
|
|
|
|
|
Sfile_off_t_text(line+strlen(line), (off_t) (xorriso->stdio_sync / 512), 0);
|
|
|
|
|
strcat(line, "m");
|
|
|
|
|
}
|
|
|
|
|
strcat(line, "\n");
|
|
|
|
|
if(!(is_default && no_defaults))
|
|
|
|
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
|
|
|
|
|
|
|
|
|
is_default= (xorriso->fs==4*512);
|
|
|
|
|
if((xorriso->fs/512)*512==xorriso->fs)
|
|
|
|
|
sprintf(line,"-fs %dm\n", xorriso->fs/512);
|
|
|
|
@ -10436,6 +10463,8 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
|
|
|
|
|
"\t--grow_overwriteable_iso\temulate multi-session on DVD+RW, BD-RE",
|
|
|
|
|
"\twrite_start_address=#\t\twrite to byte address on DVD+RW, BD-RE",
|
|
|
|
|
"\tstream_recording=on\t\ttry to get full speed on DVD-RAM, BD",
|
|
|
|
|
"\tdvd_obs=default|32k|64k\t\tbytes per DVD/BD write operation",
|
|
|
|
|
"\tstdio_sync=on|off|number\twhether to fsync output to \"stdio:\"",
|
|
|
|
|
"\t-help\t\tprint this text to stderr and exit emulation",
|
|
|
|
|
"Actually this is the integrated ISO RockRidge filesystem manipulator xorriso",
|
|
|
|
|
"lending its libburn capabilities to a very limited cdrecord emulation. Only",
|
|
|
|
@ -10659,6 +10688,16 @@ no_volunteer:;
|
|
|
|
|
cpt= strchr(argv[i], '=')+1;
|
|
|
|
|
Xorriso_option_stream_recording(xorriso, cpt, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strncmp(argv[i], "-dvd_obs=", 9)==0 ||
|
|
|
|
|
strncmp(argv[i], "dvd_obs=", 8)==0) {
|
|
|
|
|
cpt= strchr(argv[i], '=') + 1;
|
|
|
|
|
Xorriso_option_dvd_obs(xorriso, cpt, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strncmp(argv[i], "-stdio_sync=", 12)==0 ||
|
|
|
|
|
strncmp(argv[i], "stdio_sync=", 11)==0) {
|
|
|
|
|
cpt= strchr(argv[i], '=') + 1;
|
|
|
|
|
Xorriso_option_stdio_sync(xorriso, cpt, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(argv[i], "-toc")==0 || strcmp(argv[i], "--long_toc")==0) {
|
|
|
|
|
do_toc= 1;
|
|
|
|
|
} else if(strncmp(argv[i], "-tsize=", 7)==0 ||
|
|
|
|
@ -10943,6 +10982,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
|
|
|
|
" -no-emul-boot Boot image is 'no emulation' image",
|
|
|
|
|
" -boot-info-table Patch boot image with info table",
|
|
|
|
|
" isolinux_mbr=on|auto|off Control eventual isohybrid MBR generation",
|
|
|
|
|
" --stdio_sync on|off|number Control forced output to disk files",
|
|
|
|
|
" -z, -transparent-compression",
|
|
|
|
|
" Enable transparent compression of files",
|
|
|
|
|
" -v, -verbose Verbose",
|
|
|
|
@ -11131,6 +11171,11 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|
|
|
|
} else if(strcmp(argv[i], "-z")==0 ||
|
|
|
|
|
strcmp(argv[i], "-transparent-compression")==0) {
|
|
|
|
|
Xorriso_option_zisofs(xorriso, "by_magic=on", 0);
|
|
|
|
|
} else if(strcmp(argv[i], "--stdio_sync")==0) {
|
|
|
|
|
if(i+1>=argc)
|
|
|
|
|
goto not_enough_args;
|
|
|
|
|
i++;
|
|
|
|
|
Xorriso_option_stdio_sync(xorriso, argv[i], 0);
|
|
|
|
|
} else
|
|
|
|
|
was_other_option= 1;
|
|
|
|
|
|
|
|
|
@ -14889,6 +14934,26 @@ int Xorriso_option_dummy(struct XorrisO *xorriso, char *mode, int flag)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Option -dvd_obs "default"|"32k"|"64k" */
|
|
|
|
|
int Xorriso_option_dvd_obs(struct XorrisO *xorriso, char *obs, int flag)
|
|
|
|
|
{
|
|
|
|
|
double num;
|
|
|
|
|
|
|
|
|
|
if(strcmp(obs, "default") == 0)
|
|
|
|
|
num= 0;
|
|
|
|
|
else
|
|
|
|
|
num = Scanf_io_size(obs,0);
|
|
|
|
|
if(num != 0 && num != 32768 && num != 65536) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"-dvd_obs : Bad size. Acceptable are 0, 32k, 64k");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
|
|
|
|
return(0);
|
|
|
|
|
} else
|
|
|
|
|
xorriso->dvd_obs= num;
|
|
|
|
|
return(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Option -eject */
|
|
|
|
|
/* @param flag bit0=do not report toc of eventually remaining drives
|
|
|
|
|
*/
|
|
|
|
@ -16162,6 +16227,11 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|
|
|
|
" Set the burn speed. Default is 0 = maximum speed.",
|
|
|
|
|
" -stream_recording \"on\"|\"off\"",
|
|
|
|
|
" Try to circumvent slow checkread on DVD-RAM, BD-RE, BD-R.",
|
|
|
|
|
" -dvd_obs \"default\"|\"32k\"|\"64k\"",
|
|
|
|
|
" Set number of bytes per DVD/BD write operation.",
|
|
|
|
|
" -stdio_sync \"on\"|\"off\"|number",
|
|
|
|
|
" Set number of bytes after which to force output to stdio",
|
|
|
|
|
" pseudo drives. \"on\" is the same as 16m.",
|
|
|
|
|
" -fs number[\"k\"|\"m\"]",
|
|
|
|
|
" Set the size of the fifo buffer. (Default is 4m)",
|
|
|
|
|
" -eject \"in\"|\"out\"|\"all\"",
|
|
|
|
@ -18707,6 +18777,30 @@ int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Option -stdio_sync "on"|"off"|size */
|
|
|
|
|
int Xorriso_option_stdio_sync(struct XorrisO *xorriso, char *rythm, int flag)
|
|
|
|
|
{
|
|
|
|
|
double num;
|
|
|
|
|
|
|
|
|
|
if(strcmp(rythm, "default") == 0 || strcmp(rythm, "on") == 0)
|
|
|
|
|
num= 0;
|
|
|
|
|
if(strcmp(rythm, "off") == 0)
|
|
|
|
|
num= -1;
|
|
|
|
|
else
|
|
|
|
|
num = Scanf_io_size(rythm, 0);
|
|
|
|
|
if(num > 0)
|
|
|
|
|
num /= 2048;
|
|
|
|
|
if(num != -1 && num != 0 && (num < 32 || num > 512 * 1024)) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"-stdio_sync : Bad size. Acceptable are -1, 0, 32k ... 1g");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
|
|
|
|
return(0);
|
|
|
|
|
} else
|
|
|
|
|
xorriso->stdio_sync= num;
|
|
|
|
|
return(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Option -stream_recording */
|
|
|
|
|
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
|
|
|
|
|
int flag)
|
|
|
|
@ -19249,7 +19343,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
|
|
|
|
"backslash_codes","blank",
|
|
|
|
|
"calm_drive","cd","cdi","cdx","charset","close",
|
|
|
|
|
"commit_eject","compliance",
|
|
|
|
|
"dev","dialog","disk_dev_ino","disk_pattern","dummy","eject",
|
|
|
|
|
"dev","dialog","disk_dev_ino","disk_pattern","dummy","dvd_obs","eject",
|
|
|
|
|
"iso_rr_pattern","follow","format","fs","gid","grow_blindly","hardlinks",
|
|
|
|
|
"history","indev","in_charset","joliet",
|
|
|
|
|
"list_delimiter","list_profiles","local_charset",
|
|
|
|
@ -19259,7 +19353,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
|
|
|
|
"prog","prog_help","publisher","quoted_not_list","quoted_path_list",
|
|
|
|
|
"reassure","report_about","rom_toc_scan",
|
|
|
|
|
"session_log","speed","split_size","status","status_history_max",
|
|
|
|
|
"stream_recording","system_id","temp_mem_limit",
|
|
|
|
|
"stdio_sync","stream_recording","system_id","temp_mem_limit",
|
|
|
|
|
"uid","unregister_filter","use_readline","volid","volset_id",
|
|
|
|
|
"xattr","zisofs",
|
|
|
|
|
""
|
|
|
|
@ -19597,6 +19691,10 @@ next_command:;
|
|
|
|
|
(*idx)++;
|
|
|
|
|
ret= Xorriso_option_dummy(xorriso, arg1, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(cmd,"dvd_obs")==0) {
|
|
|
|
|
(*idx)++;
|
|
|
|
|
ret= Xorriso_option_dvd_obs(xorriso, arg1, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(cmd,"dux")==0 || strcmp(cmd,"dusx")==0) {
|
|
|
|
|
ret= Xorriso_option_lsx(xorriso, argc, argv, idx, (cmd[2]!='s')|4);
|
|
|
|
|
|
|
|
|
@ -20028,6 +20126,10 @@ next_command:;
|
|
|
|
|
sscanf(arg1,"%d",&num1);
|
|
|
|
|
ret= Xorriso_option_status_history_max(xorriso, num1, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(cmd,"stdio_sync")==0) {
|
|
|
|
|
(*idx)++;
|
|
|
|
|
ret= Xorriso_option_stdio_sync(xorriso, arg1, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(cmd,"stream_recording")==0) {
|
|
|
|
|
(*idx)++;
|
|
|
|
|
ret= Xorriso_option_stream_recording(xorriso, arg1, 0);
|
|
|
|
|