New option -relax_compliance
This commit is contained in:
parent
3f08f2cafc
commit
0ac6297ff7
@ -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 "Nov 17, 2008"
|
||||
.TH XORRISO 1 "Nov 21, 2008"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -1334,6 +1334,43 @@ Rock Ridge info will be generated by the program unconditionally.
|
||||
\fB\-joliet\fR "on"|"off"
|
||||
If enabled by "on", generate Joliet info additional to Rock Ridge info.
|
||||
.TP
|
||||
\fB\-relax_compliance\fR rule[:rule...]
|
||||
Adjust the compliance to specifications of ISO 9660 and its extensions. In some
|
||||
cases it is worth to deviate a bit in order to circumvent bugs of the intended
|
||||
reader system or to get inofficial extra features.
|
||||
.br
|
||||
There are several adjustable rules which have a keyword each. If they
|
||||
are mentioned with this option then their rule gets added to the relaxation
|
||||
list. This list can be erased by rules "strict" or "clear". It can be reset
|
||||
to its start setting by "default". The term "ISO file" means the plain ISO 9660
|
||||
names which get visible if the reader ignores Rock Ridge.
|
||||
.br
|
||||
Rule keywords are:
|
||||
.br
|
||||
"omit_version" do not add versions (";1") to the file names.
|
||||
.br
|
||||
"deep_paths" allow ISO file paths deeper than 8 levels.
|
||||
.br
|
||||
"long_paths" allow ISO file paths longer than 255 characters.
|
||||
.br
|
||||
"long_names" allow up to 37 characters with ISO file names.
|
||||
.br
|
||||
"no_force_dots" do not add a dot to filenames which have none.
|
||||
.br
|
||||
"lowercase" allow lowercase characters in ISO file names.
|
||||
.br
|
||||
"full_ascii" allow all ASCII characters in ISO file names.
|
||||
.br
|
||||
"joliet_long_paths" allow Joliet paths longer than 240 characters.
|
||||
.br
|
||||
"always_gmt" store timestamps in GMT representation with timezone 0.
|
||||
.br
|
||||
"old_rr" use Rock Ridge version 1.10 (needed if the intended reader
|
||||
system does not recognize Rock Ridge 1.12 signature).
|
||||
.br
|
||||
"rec_mtime" record with ISO files the disk file's mtime and not the
|
||||
creation time of the image.
|
||||
.TP
|
||||
\fB\-volid\fR text
|
||||
Specify the volume ID. xorriso accepts any text up to 32 characters,
|
||||
but according to rarely obeyed specs stricter rules apply:
|
||||
|
@ -3649,7 +3649,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->split_size= 0;
|
||||
strcpy(m->list_delimiter, "--");
|
||||
m->do_joliet= 0;
|
||||
m->do_always_gmt= 1; /* to avoid a timezone sign bug in FreeBSD */
|
||||
m->relax_compliance= 0;
|
||||
m->do_follow_pattern= 1;
|
||||
m->do_follow_param= 0;
|
||||
m->do_follow_links= 0;
|
||||
@ -3804,6 +3804,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
ret= Exclusions_new(&(m->disk_exclusions), 0);
|
||||
if(ret<=0)
|
||||
goto failure;
|
||||
Xorriso_relax_compliance(m, "default", 0);
|
||||
|
||||
return(1);
|
||||
failure:;
|
||||
@ -5688,6 +5689,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_get_relax_text(xorriso, sfe, 0) == 2);
|
||||
sprintf(line,"-relax_compliance %s\n", sfe);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
if(xorriso->do_global_uid) {
|
||||
sprintf(line,"-uid %lu\n", (unsigned long) xorriso->global_uid);
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
@ -12473,6 +12479,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Specifies the application id. (128 chars)",
|
||||
" -joliet \"on\"|\"off\"",
|
||||
" Generate Joliet info additional to Rock Ridge info.",
|
||||
" -relax_compliance rule[:rule...]",
|
||||
" Allow more or less harmless deviations from strict standards",
|
||||
" compliance.",
|
||||
" -boot_image \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"|\"dir=\"",
|
||||
" \"bin_path=\"|\"cat_path=\"|\"load_size=\"",
|
||||
" Whether to discard or keep an exiting El Torito boot image.",
|
||||
@ -14191,6 +14200,14 @@ int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* Option -relax_compliance */
|
||||
int Xorriso_option_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag)
|
||||
{
|
||||
return(Xorriso_relax_compliance(xorriso, mode, 0));
|
||||
}
|
||||
|
||||
|
||||
/* Option -report_about */
|
||||
int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
||||
int flag)
|
||||
@ -14863,7 +14880,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","relax_compliance","report_about","rom_toc_scan",
|
||||
"session_log","speed","split_size","status","status_history_max",
|
||||
"stream_recording","temp_mem_limit","uid","volid","use_readline",
|
||||
""
|
||||
@ -15430,6 +15447,10 @@ next_command:;
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_reassure(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"relax_compliance")==0) {
|
||||
(*idx)++;
|
||||
Xorriso_option_relax_compliance(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"report_about")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_report_about(xorriso, arg1, 0);
|
||||
|
@ -611,6 +611,10 @@ int Xorriso_option_pwdx(struct XorrisO *xorriso, int flag);
|
||||
/* Option -reassure "on"|"tree"|"off" */
|
||||
int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -relax_compliance */
|
||||
int Xorriso_option_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Option -report_about */
|
||||
int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
||||
int flag);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<HEAD>
|
||||
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
|
||||
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, scdbackup">
|
||||
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, scdbackup">
|
||||
<META NAME="robots" CONTENT="follow">
|
||||
<TITLE>xorriso homepage english</TITLE>
|
||||
</HEAD>
|
||||
@ -14,7 +14,7 @@
|
||||
<P><H2> Homepage of </H2>
|
||||
<H1> xorriso </H1>
|
||||
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux</H2>
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux and FreeBSD</H2>
|
||||
</CENTER>
|
||||
|
||||
<P>
|
||||
@ -48,10 +48,8 @@ and to MMC-5 for DVD or BD).
|
||||
<DT>Linux with kernel 2.4 or higher (and libc, of course) :</DT>
|
||||
<DD>With kernel 2.4 an ATA drive has to be under ide-scsi emulation.</DD>
|
||||
<DD>With kernel 2.6 the drive should not be under ide-scsi.</DD>
|
||||
<!--
|
||||
<DT>or FreeBSD (with libc, of course) :</DT>
|
||||
<DD>ATAPI/CAM support has to be enabled in the kernel, see atapicam(4).</DD>
|
||||
-->
|
||||
<DT>libpthread</DT>
|
||||
<DD>is supposed to be a standard system component.</DD>
|
||||
<DT>libreadline and libreadline-dev</DT>
|
||||
@ -69,7 +67,7 @@ GPL software included:<BR>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-0.6.10</DT>
|
||||
<DT>libisofs-0.6.10.pl01</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.2.8</DT>
|
||||
@ -84,8 +82,7 @@ cdrecord and mkisofs.</A>
|
||||
|
||||
<P>
|
||||
This program has been tested on Intel/AMD Linux
|
||||
<!-- and FreeBSD systems -->
|
||||
only.<BR>
|
||||
and on FreeBSD systems.<BR>
|
||||
For ports to other usable systems <A HREF="#contact">contact us</A>.
|
||||
</P>
|
||||
|
||||
@ -369,7 +366,7 @@ are interested in using BD-R media.
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Download as source code (see README):</H3></DT>
|
||||
<DD><A HREF="xorriso-0.2.8.pl00.tar.gz">xorriso-0.2.8.pl00.tar.gz</A>
|
||||
<DD><A HREF="xorriso-0.2.8.pl01.tar.gz">xorriso-0.2.8.pl01.tar.gz</A>
|
||||
(1050 KB).
|
||||
</DD>
|
||||
</DL>
|
||||
@ -406,6 +403,15 @@ Bug fixes towards xorriso-0.2.6.pl00:
|
||||
-->
|
||||
|
||||
</UL>
|
||||
|
||||
Bug fixes towards xorriso-0.2.8.pl00 and xorriso-0.2.6.pl00:
|
||||
<UL>
|
||||
<LI>Images generated by mkisofs which contain regular files with 0 bytes
|
||||
suffered file size confusion when xorriso sessions were appended.</LI>
|
||||
<LI>ISOLINUX boot images were not made ready for SYSLINUX script isohybrid.
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
</P>
|
||||
|
||||
<P>
|
||||
@ -438,6 +444,7 @@ Enhancements towards previous stable version xorriso-0.2.6.pl00:
|
||||
<LI>New option -backslash_codes for terminal safety with weird file names</LI>
|
||||
<LI>New options -charset, -in_charset, -out_charset </LI>
|
||||
<LI>New option -application_id</LI>
|
||||
<LI>New option -relax_compliance</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
-->
|
||||
|
@ -104,7 +104,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
/* >>> put libisofs aspects here <<< */
|
||||
|
||||
int do_joliet;
|
||||
int do_always_gmt;
|
||||
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
|
||||
int do_follow_pattern;
|
||||
int do_follow_param;
|
||||
int do_follow_links;
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2008.11.21.160019"
|
||||
#define Xorriso_timestamP "2008.11.21.160632"
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -357,6 +357,14 @@ int Xorriso_extract_cut(struct XorrisO *xorriso,
|
||||
off_t img_offset, off_t bytes, int flag);
|
||||
|
||||
|
||||
int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* @return 1=ok 2=ok, is default setting */
|
||||
int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
|
||||
int flag);
|
||||
|
||||
|
||||
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
|
||||
For now take the highest possible value.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user