New option -relax_compliance
This commit is contained in:
@ -109,6 +109,12 @@ int Xorriso_path_from_node(struct XorrisO *xorriso, IsoNode *node, int lba,
|
||||
#define Xorriso_cd_min_track_sizE 300
|
||||
|
||||
|
||||
/* Default setting for -relax_compliance */
|
||||
#define Xorriso_relax_compliance_defaulT \
|
||||
(isoburn_igopt_allow_deep_paths | isoburn_igopt_allow_longer_paths | \
|
||||
isoburn_igopt_always_gmt)
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
|
||||
@ -1065,7 +1071,11 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
return(ret);
|
||||
}
|
||||
#ifdef NIX
|
||||
relax= isoburn_igopt_allow_deep_paths;
|
||||
#else
|
||||
relax= xorriso->relax_compliance;
|
||||
#endif
|
||||
|
||||
xorriso->alignment= 0;
|
||||
image= isoburn_get_attached_image(source_drive);
|
||||
@ -1221,8 +1231,15 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
isoburn_igopt_set_level(sopts, 3);
|
||||
isoburn_igopt_set_extensions(sopts, 1|((!!xorriso->do_joliet)<<1));
|
||||
|
||||
#ifdef NIX
|
||||
isoburn_igopt_set_relaxed(sopts, isoburn_igopt_allow_deep_paths |
|
||||
(xorriso->do_always_gmt * isoburn_igopt_always_gmt));
|
||||
(xorriso->do_always_gmt * isoburn_igopt_always_gmt) |
|
||||
isoburn_igopt_rrip_version_1_10);
|
||||
#else
|
||||
isoburn_igopt_set_relaxed(sopts, relax);
|
||||
#endif
|
||||
|
||||
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);
|
||||
@ -7278,6 +7295,19 @@ int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
||||
}
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
*stream= iso_stream;
|
||||
|
||||
#ifdef NIX
|
||||
/* <<< */
|
||||
{
|
||||
unsigned int fs_id;
|
||||
dev_t dev_id;
|
||||
ino_t ino;
|
||||
|
||||
iso_stream_get_id(iso_stream, &fs_id, &dev_id, &ino);
|
||||
fprintf(stderr, "xorriso_debug: iso_ino= %ld\n", (long int) ino);
|
||||
}
|
||||
#endif
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -8151,3 +8181,104 @@ cannot:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag)
|
||||
{
|
||||
char *npt, *cpt;
|
||||
int l, was;
|
||||
|
||||
was= xorriso->relax_compliance;
|
||||
npt= cpt= mode;
|
||||
for(; npt!=NULL; cpt= npt+1) {
|
||||
npt= strchr(cpt,':');
|
||||
if(npt==NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt-cpt;
|
||||
if(l == 0)
|
||||
continue;
|
||||
if((l == 6 && strncmp(cpt, "strict", l) == 0) ||
|
||||
(l == 5 && strncmp(cpt, "clear", l) == 0)) {
|
||||
xorriso->relax_compliance= 0;
|
||||
} else if(l == 7 && strncmp(cpt, "default", l) == 0) {
|
||||
xorriso->relax_compliance= Xorriso_relax_compliance_defaulT;
|
||||
} else if(l == 12 && strncmp(cpt, "omit_version", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_omit_version_numbers;
|
||||
} else if(l == 10 && strncmp(cpt, "deep_paths", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_allow_deep_paths;
|
||||
} else if(l == 10 && strncmp(cpt, "long_paths", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_allow_longer_paths;
|
||||
} else if(l == 10 && strncmp(cpt, "long_names", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_max_37_char_filenames;
|
||||
} else if(l == 13 && strncmp(cpt, "no_force_dots", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_no_force_dots;
|
||||
} else if(l == 9 && strncmp(cpt, "lowercase", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_allow_lowercase;
|
||||
} else if(l == 10 && strncmp(cpt, "full_ascii", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_allow_full_ascii;
|
||||
} else if(l == 17 && strncmp(cpt, "joliet_long_paths", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_joliet_longer_paths;
|
||||
} else if(l == 10 && strncmp(cpt, "always_gmt", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_always_gmt;
|
||||
} else if(l == 6 && strncmp(cpt, "old_rr", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_rrip_version_1_10;
|
||||
} else if(l == 9 && strncmp(cpt, "rec_mtime", l) == 0) {
|
||||
xorriso->relax_compliance|= isoburn_igopt_dir_rec_mtime;
|
||||
} else if(l == 4 && strncmp(cpt, "help", l) == 0) {
|
||||
|
||||
/* >>> */;
|
||||
|
||||
} else {
|
||||
if(l<SfileadrL)
|
||||
sprintf(xorriso->info_text, "-relax_compliance: unknown mode '%s'",
|
||||
cpt);
|
||||
else
|
||||
sprintf(xorriso->info_text,
|
||||
"-relax_compliance: oversized mode parameter (%d)", l);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
xorriso->relax_compliance= was;
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* @return 1=ok 2=ok, is default setting */
|
||||
int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
|
||||
int flag)
|
||||
{
|
||||
int r;
|
||||
|
||||
r= xorriso->relax_compliance;
|
||||
if(r == 0) {
|
||||
strcpy(mode, "strict");
|
||||
return(1);
|
||||
}
|
||||
strcpy(mode, "clear");
|
||||
if(r & isoburn_igopt_omit_version_numbers)
|
||||
strcat(mode, ":omit_version");
|
||||
if(r & isoburn_igopt_allow_deep_paths)
|
||||
strcat(mode, ":deep_paths");
|
||||
if(r & isoburn_igopt_allow_longer_paths)
|
||||
strcat(mode, ":long_paths");
|
||||
if(r & isoburn_igopt_max_37_char_filenames)
|
||||
strcat(mode, ":long_names");
|
||||
if(r & isoburn_igopt_no_force_dots)
|
||||
strcat(mode, ":no_force_dots");
|
||||
if(r & isoburn_igopt_allow_lowercase)
|
||||
strcat(mode, ":lowercase");
|
||||
if(r & isoburn_igopt_allow_full_ascii)
|
||||
strcat(mode, ":full_ascii");
|
||||
if(r & isoburn_igopt_joliet_longer_paths)
|
||||
strcat(mode, ":joliet_long_paths");
|
||||
if(r & isoburn_igopt_always_gmt)
|
||||
strcat(mode, ":always_gmt");
|
||||
if(r & isoburn_igopt_rrip_version_1_10)
|
||||
strcat(mode, ":old_rr");
|
||||
if(r & isoburn_igopt_dir_rec_mtime)
|
||||
strcat(mode, ":rec_mtime");
|
||||
return(1 + (r == Xorriso_relax_compliance_defaulT));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user