From eb6c78e6a1606796006a849d4e4ceaec475f33f1 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 16 Sep 2025 21:10:22 +0200 Subject: [PATCH] New -compliance rules rrip_tf_year0 and rrip_tf_1900 --- xorriso/emulators.c | 6 +- xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisofs.1 | 8 ++- xorriso/xorrisofs.info | 133 +++++++++++++++++++----------------- xorriso/xorrisofs.texi | 10 ++- 5 files changed, 93 insertions(+), 66 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 5e7e170c..c14940bd 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -653,7 +653,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "-part_like_isohybrid", "--zisofs-version-2", "--zisofs2-susp-z2", "--zisofs2-susp-zf", "-dvd-audio", "-dvd-hybrid", "-long-rr-time", "-no-long-rr-time", "-short-rr-time", "-ignore-error", "-data-change-warn", - "-genisoimage_completion", + "-genisoimage_completion", "-rr-time-year0", "" }; static char arg1_options[][41]= { @@ -967,6 +967,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " -long-rr-time Use long Rock Ridge time format", " -short-rr-time Enable use of short Rock Ridge time format", " -no-long-rr-time Enable use of short Rock Ridge time format", +" -rr-time-year0 Enable writing of timestamps as low as year 0", " -uid uid Make the owner of all files this uid.", " -gid gid Make the group owner of all files this gid.", " -o FILE, -output FILE Set output file name", @@ -2580,6 +2581,9 @@ rr_reloc_dir:; strcmp(argpt, "-short-rr-time") == 0) { Xorriso_relax_compliance(xorriso, "rrip_tf_short", 0); + } else if(strcmp(argpt, "-rr-time-year0") == 0) { + Xorriso_relax_compliance(xorriso, "rrip_tf_year0", 0); + } else if(strcmp(argpt, "-log-file") == 0 || strcmp(argpt, "-file_name_limit") == 0) { i+= 1; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 88bafc3f..57005a95 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2025.09.16.190146" +#define Xorriso_timestamP "2025.09.16.190953" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index 5b57f5f9..4a8ba154 100644 --- a/xorriso/xorrisofs.1 +++ b/xorriso/xorrisofs.1 @@ -9,7 +9,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 XORRISOFS 1 "Version 1.5.7, Jun 24, 2025" +.TH XORRISOFS 1 "Version 1.5.7, Sep 15, 2025" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -693,6 +693,12 @@ only for files with timestamps after 01 Jan 2150 UTC. \fB\-no-long-rr-time\fR Alias of \-short\-rr\-time. .TP +\fB\-rr-time-year0\fR +Enable RockRidge timestamps before year 1900 AD down to year 0 (= 1 BC). +The default restricts timestamps to at least Jan 1 1900 UTC because the +Linux kernel up to at least version 6.16 misrepresents times before +year 1900 as Jan 1 1970 00:00:00 UTC. +.TP \fB--for_backup\fR Enable all options which improve backup fidelity: .br diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index 69f9ed0a..346aaeff 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -630,6 +630,11 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op timestamps only for files with timestamps after 01 Jan 2150 UTC. -no-long-rr-time Alias of -short-rr-time. +-rr-time-year0 + Enable RockRidge timestamps before year 1900 AD down to year 0 (= 1 + BC). The default restricts timestamps to at least Jan 1 1900 UTC + because the Linux kernel up to at least version 6.16 misrepresents + times before year 1900 as Jan 1 1970 00:00:00 UTC. --for_backup Enable all options which improve backup fidelity: --acl, --xattr-any, --md5, --hardlinks, --projid, and possibly @@ -2154,13 +2159,13 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T [index] * Menu: -* --acl Recording of ACLs: SetExtras. (line 121) +* --acl Recording of ACLs: SetExtras. (line 126) * --application_use set Application Use field: ImageId. (line 79) * --boot-catalog-hide Hide El Torito boot catalog: Bootable. (line 123) * --efi-boot El Torito EFI boot image: Bootable. (line 59) * --embedded-boot Fill System Area e.g. by MBR: SystemArea. (line 79) * --emul-toc enable table-of-content emulation: SetProduct. (line 33) -* --for_backup Enable backup fidelity: SetExtras. (line 106) +* --for_backup Enable backup fidelity: SetExtras. (line 111) * --gpt-iso-bootable Set Legacy BIOS bootable flag: SystemArea. (line 159) * --gpt-iso-not-ro Do not set Read-only flag: SystemArea. (line 164) @@ -2168,11 +2173,11 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --grub2-boot-info Patch El Torito boot image: Bootable. (line 111) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 81) * --grub2-sparc-core SUN SPARC core file: SystemArea. (line 352) -* --hardlinks Recording of hardlink relations: SetExtras. (line 160) -* --lfa_flags Recording of Linux file attributes: SetExtras. (line 140) +* --hardlinks Recording of hardlink relations: SetExtras. (line 165) +* --lfa_flags Recording of Linux file attributes: SetExtras. (line 145) * --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. (line 148) -* --md5 Recording of MD5 checksums: SetExtras. (line 152) +* --md5 Recording of MD5 checksums: SetExtras. (line 157) * --modification-date set ISO image timestamps: ImageId. (line 70) * --no-emul-toc no table-of-content emulation: SetProduct. (line 41) * --norock disable Rock Ridge production: SetExtras. (line 28) @@ -2184,12 +2189,12 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --old-root-no-ino disable disk ino with -old-root: SetInsert. (line 103) * --old-root-no-md5 disable MD5 with -old-root: SetInsert. (line 121) -* --projid Recording of XFS-style project ids: SetExtras. (line 149) +* --projid Recording of XFS-style project ids: SetExtras. (line 154) * --protective-msdos-label Patch System Area partition table: SystemArea. (line 143) * --quoted_path_list read pathspecs from disk file: SetInsert. (line 12) -* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 168) +* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 173) * --set_all_file_dates set all file timestamps: SetExtras. (line 35) * --sort-weight set block address sorting weight: SetProduct. (line 45) * --sort-weight-list set block address sorting weight: SetProduct. @@ -2198,8 +2203,8 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 76) * --stdio_sync control forced output to disk files: SetProduct. (line 23) -* --xattr Recording of any xattr: SetExtras. (line 134) -* --xattr Recording of user xattr: SetExtras. (line 127) +* --xattr Recording of any xattr: SetExtras. (line 139) +* --xattr Recording of user xattr: SetExtras. (line 132) * --zisofs-version-2 enable recognition of zisofs2 files: SetInsert. (line 65) * --zisofs2-susp-z2 produce Z2 for version 2 instead of ZF: SetInsert. @@ -2269,15 +2274,15 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 44) * -hard-disk-boot El Torito boot image emulation: Bootable. (line 85) * -help list supported options: Miscellaneous. (line 36) -* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 251) -* -hfs-bless-by HFS+ blessing: SetExtras. (line 241) -* -hfsplus enable production of HFS+ partition: SetExtras. (line 194) -* -hfsplus-block-size set APM block size: SetExtras. (line 231) +* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 256) +* -hfs-bless-by HFS+ blessing: SetExtras. (line 246) +* -hfsplus enable production of HFS+ partition: SetExtras. (line 199) +* -hfsplus-block-size set APM block size: SetExtras. (line 236) * -hfsplus-block-size set HFS+ allocation block size: SetExtras. - (line 227) + (line 232) * -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras. - (line 238) -* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 223) + (line 243) +* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 228) * -hide keep matching files invisible in ISO tree: SetHide. (line 8) * -hide-hfsplus keep matching files invisible in HFS+ tree: SetHide. (line 25) @@ -2308,7 +2313,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -isohybrid-mbr Install ISOLINUX isohybrid MBR: SystemArea. (line 87) * -iso_mbr_part_type Set type of ISO MBR partition: SystemArea. (line 129) -* -J enable production of Joliet directory tree: SetExtras. (line 177) +* -J enable production of Joliet directory tree: SetExtras. (line 182) * -jigdo-checksum-algorithm set data file checksum algorithm: Jigdo. (line 42) * -jigdo-exclude add exclusion pattern for checksum file: Jigdo. @@ -2324,9 +2329,9 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -jigdo-template-compress choose compression algorithm: Jigdo. (line 83) * -joliet enable production of Joliet directory tree: SetExtras. - (line 181) -* -joliet-long allow longer Joliet names: SetExtras. (line 183) -* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 189) + (line 186) +* -joliet-long allow longer Joliet names: SetExtras. (line 188) +* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 194) * -l allow 31 characters in ISO file names: SetCompl. (line 57) * -log-file redirect stderr messages: Miscellaneous. (line 48) * -long-rr-time Force long Rock Ridge timestamps: SetExtras. (line 92) @@ -2376,6 +2381,8 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 46) * -rock Rock Ridge (is enabled by default): SetExtras. (line 13) * -root redirect ISO root directory: SetInsert. (line 85) +* -rr-time-year0 Enable Rock Ridge timestamps before 1900: SetExtras. + (line 106) * -rr_reloc_dir set deep directory relocation target: SetExtras. (line 74) * -short-rr-time Enable Rock Ridge timestamps: SetExtras. (line 101) @@ -2409,14 +2416,14 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Menu: * Abstract File, set path, -abstract: ImageId. (line 57) -* ACL, record and load, --acl: SetExtras. (line 121) +* ACL, record and load, --acl: SetExtras. (line 126) * APM, mark appended partitions, -appended_part_as_apm: SystemArea. (line 265) * APM, _definition: SystemArea. (line 16) * Appended partitions, GPT: SystemArea. (line 238) * Appended partitions, MBR: SystemArea. (line 215) * Application Id, set, -A, -appid: ImageId. (line 34) -* Backup, enable fidelity, --for_backup: SetExtras. (line 106) +* Backup, enable fidelity, --for_backup: SetExtras. (line 111) * Biblio File, set path, -biblio: ImageId. (line 62) * Block address, set sorting weight, --sort-weight: SetProduct. (line 45) @@ -2515,14 +2522,14 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * GPT, sparsely filled, -appended_gpt_with_gaps: SystemArea. (line 272) * GPT, _definition: SystemArea. (line 13) * Group, for all files, -gid: SetProduct. (line 83) -* HFS+, enables production: SetExtras. (line 194) -* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 251) -* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 241) -* HFS+, set allocation block size: SetExtras. (line 227) -* HFS+, set APM block size: SetExtras. (line 231) +* HFS+, enables production: SetExtras. (line 199) +* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 256) +* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 246) +* HFS+, set allocation block size: SetExtras. (line 232) +* HFS+, set APM block size: SetExtras. (line 236) * HFS+, set creator and type of file, -hfsplus-file-creator-type: SetExtras. - (line 238) -* HFS+, set serial number: SetExtras. (line 223) + (line 243) +* HFS+, set serial number: SetExtras. (line 228) * HFS+, _definition: Standards. (line 34) * Hiding, by ISO RR path, -hide_iso_path: SetHide. (line 31) * Hiding, from HFS+, -hide-hfsplus: SetHide. (line 25) @@ -2585,18 +2592,18 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Jigdo Template Extraction, -jigdo-template-compress: Jigdo. (line 83) * Jigdo Template Extraction, -md5-list: Jigdo. (line 81) * Jigdo Template Extraction, _definition: Jigdo. (line 6) -* Joliet, allows longer names, -joliet-long: SetExtras. (line 183) -* Joliet, enable, -J, -joliet: SetExtras. (line 177) +* Joliet, allows longer names, -joliet-long: SetExtras. (line 188) +* Joliet, enable, -J, -joliet: SetExtras. (line 182) * Joliet, _definition: Standards. (line 21) * Links, follow on disk, -f, -follow-links: SetInsert. (line 32) -* Links, record and load hard links, --hardlinks: SetExtras. (line 160) +* Links, record and load hard links, --hardlinks: SetExtras. (line 165) * Linux file attributes, record and load, --lfa_flags: SetExtras. - (line 140) + (line 145) * MBR, GPT, append partition, -append_partition: SystemArea. (line 208) * MBR, sectors per head, -partition_sec_hd: SystemArea. (line 180) * MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 183) * MBR, _definition: SystemArea. (line 9) -* MD5, record and load, --md5: SetExtras. (line 152) +* MD5, record and load, --md5: SetExtras. (line 157) * Message output, increase frequency, -gui: Miscellaneous. (line 44) * Message output, redirect stderr, -log-file: Miscellaneous. (line 48) * Message output, suppress, -quiet: Miscellaneous. (line 40) @@ -2619,6 +2626,8 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Problems, reporting: Bugreport. (line 6) * Program version, report, -version: Miscellaneous. (line 58) * Publisher Id, set, -P, -publisher: ImageId. (line 28) +* Rock Ridge timestamps, before 1900, -rr-time-year0: SetExtras. + (line 106) * Rock Ridge timestamps, enable short, -no-long-rr-time: SetExtras. (line 104) * Rock Ridge timestamps, enable short, -short-rr-time: SetExtras. @@ -2630,7 +2639,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 16) * Rock Ridge, disable production, --norock: SetExtras. (line 28) * Rock Ridge, _definition: Standards. (line 14) -* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 168) +* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 173) * Session, select path, -M, -prev-session, -dev: Loading. (line 11) * Session, set load and write address, -C, -cdrecord-params: Loading. (line 25) @@ -2639,14 +2648,14 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * System Id, set, -sysid: ImageId. (line 43) * Table-of-content, emulation off, --no-emul-toc: SetProduct. (line 41) * Table-of-content, emulation, --emul-toc: SetProduct. (line 33) -* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 189) +* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 194) * Verbosity, high, -v, -verbose: Miscellaneous. (line 53) * Volume Id, set, -V, -volid: ImageId. (line 13) * Volume Set Id, set, -volset: ImageId. (line 25) -* xattr, record and load, --xattr: SetExtras. (line 127) -* xattr, record and load, --xattr-any: SetExtras. (line 134) +* xattr, record and load, --xattr: SetExtras. (line 132) +* xattr, record and load, --xattr-any: SetExtras. (line 139) * XFS-style project ids, record and load, --projid: SetExtras. - (line 149) + (line 154) * xorriso, mkisofs emulation: Xorriso. (line 6) * xorriso, options: Options. (line 6) * Z2 instead of ZF for version 2, -zisofs2-susp-z2: SetInsert. @@ -2672,28 +2681,28 @@ Node: SetInsert9693 Node: SetProduct15628 Node: SetCompl21200 Node: SetExtras23873 -Node: SetHide36978 -Node: ImageId38977 -Node: Bootable43259 -Node: SystemArea49692 -Node: Charset71003 -Node: Jigdo72028 -Node: Miscellaneous76998 -Node: Reproducible79598 -Node: Examples82104 -Node: ExSimple82598 -Node: ExGraft83081 -Node: ExMkisofs84381 -Node: ExGrowisofs86189 -Node: ExIncBackup87379 -Node: ExIncBckAcc90555 -Node: ExBootable92260 -Node: Files96442 -Node: Environ97537 -Node: Seealso97955 -Node: Bugreport98656 -Node: Legal99249 -Node: CommandIdx100146 -Node: ConceptIdx117871 +Node: SetHide37264 +Node: ImageId39263 +Node: Bootable43545 +Node: SystemArea49978 +Node: Charset71289 +Node: Jigdo72314 +Node: Miscellaneous77284 +Node: Reproducible79884 +Node: Examples82390 +Node: ExSimple82884 +Node: ExGraft83367 +Node: ExMkisofs84667 +Node: ExGrowisofs86475 +Node: ExIncBackup87665 +Node: ExIncBckAcc90841 +Node: ExBootable92546 +Node: Files96728 +Node: Environ97823 +Node: Seealso98241 +Node: Bugreport98942 +Node: Legal99535 +Node: CommandIdx100432 +Node: ConceptIdx118300  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index d1e24db1..2e786749 100644 --- a/xorriso/xorrisofs.texi +++ b/xorriso/xorrisofs.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISOFS 1 "Version 1.5.7, Jun 24, 2025" +@c man .TH XORRISOFS 1 "Version 1.5.7, Sep 15, 2025" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -964,6 +964,14 @@ only for files with timestamps after 01 Jan 2150 UTC. @cindex Rock Ridge timestamps, enable short, -no-long-rr-time Alias of -short-rr-time. @c man .TP +@item -rr-time-year0 +@kindex -rr-time-year0 Enable Rock Ridge timestamps before 1900 +@cindex Rock Ridge timestamps, before 1900, -rr-time-year0 +Enable RockRidge timestamps before year 1900 AD down to year 0 (= 1 BC). +The default restricts timestamps to at least Jan 1 1900 UTC because the +Linux kernel up to at least version 6.16 misrepresents times before +year 1900 as Jan 1 1970 00:00:00 UTC. +@c man .TP @item @minus{}@minus{}for_backup @kindex @minus{}@minus{}for_backup Enable backup fidelity @cindex Backup, enable fidelity, @minus{}@minus{}for_backup