New -compliance options untranslated_names , untranslated_name_len=

This commit is contained in:
2010-12-22 13:39:55 +00:00
parent 1dab07f9dc
commit 07b8e1a2e5
7 changed files with 145 additions and 91 deletions

View File

@ -735,6 +735,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
ext|= isoburn_igopt_no_emul_toc;
isoburn_igopt_set_extensions(sopts, ext);
isoburn_igopt_set_relaxed(sopts, relax);
ret= isoburn_igopt_set_untranslated_name_len(sopts,
xorriso->untranslated_name_len);
if(ret <= 0)
{ret= 0; goto ex;}
isoburn_igopt_set_sort_files(sopts, 1);
isoburn_igopt_set_over_mode(sopts, 0, 0, (mode_t) 0, (mode_t) 0);
isoburn_igopt_set_over_ugid(sopts, 0, 0, (uid_t) 0, (gid_t) 0);
@ -903,6 +907,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
Xorriso_process_msg_queues(xorriso,0);
sessions= burn_disc_get_sessions(disc, &num_sessions);
if(num_sessions>0) {
@ -1798,7 +1803,8 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
int flag)
{
char *npt, *cpt;
int l, was;
int l, was, value, ret;
struct isoburn_imgen_opts *opts= NULL;
was= xorriso->relax_compliance;
npt= cpt= mode;
@ -1816,6 +1822,25 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
} else if(l == 7 && strncmp(cpt, "default", l) == 0) {
xorriso->relax_compliance= Xorriso_relax_compliance_defaulT;
} else if((l == 18 && strncmp(cpt, "untranslated_names", l) == 0) ||
(l == 21 && strncmp(cpt, "untranslated_names_on", l) == 0) ) {
xorriso->untranslated_name_len = -1;
} else if((l == 22 && strncmp(cpt, "untranslated_names_off", l) == 0)) {
xorriso->untranslated_name_len = 0;
} else if((l >= 22 && strncmp(cpt, "untranslated_name_len=", 22) == 0)) {
value= -1;
sscanf(cpt + 22, "%d", &value);
/* Let libisoburn check the value */
ret= isoburn_igopt_new(&opts, 0);
if(ret != 1)
return(-1);
ret= isoburn_igopt_set_untranslated_name_len(opts, value);
isoburn_igopt_destroy(&opts, 0);
if(ret <= 0) {
xorriso->relax_compliance= was;
return(0);
}
xorriso->untranslated_name_len = value;
} else if((l == 12 && strncmp(cpt, "omit_version", l) == 0) ||
(l == 15 && strncmp(cpt, "omit_version_on", l) == 0) ) {
xorriso->relax_compliance|= isoburn_igopt_omit_version_numbers;
@ -1923,6 +1948,8 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
Xorriso_msgs_submit(xorriso, 0,
"-compliance -iso_9660_off : Cannot do anything else but ISO 9660",
0, "FAILURE", 0);
xorriso->relax_compliance= was;
return(0);
} else {
if(l<SfileadrL)
@ -1987,9 +2014,12 @@ int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
}
if(xorriso->no_emul_toc & 1)
strcat(mode, ":no_emul_toc");
if(xorriso->untranslated_name_len != 0)
sprintf(mode + strlen(mode), ":untranslated_name_len=%d",
xorriso->untranslated_name_len);
return(1 +
(r == Xorriso_relax_compliance_defaulT && !(xorriso->no_emul_toc & 1)));
(r == Xorriso_relax_compliance_defaulT && !(xorriso->no_emul_toc & 1)
&& xorriso->untranslated_name_len == 0));
}