From b333b183370af1cba281d49d4da1da4c2d9ca3cb Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 24 Jun 2025 19:13:09 +0200 Subject: [PATCH] New -as mkisofs options -long-rr-time, -no-long-rr-time, -short-rr-time --- xorriso/emulators.c | 12 ++- xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisofs.1 | 19 ++++- xorriso/xorrisofs.info | 147 +++++++++++++++++++++--------------- xorriso/xorrisofs.texi | 25 +++++- 5 files changed, 139 insertions(+), 66 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index d9493c91..5e7e170c 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2024 Thomas Schmitt, + Copyright 2007-2025 Thomas Schmitt, Provided under GPL version 2 or later. @@ -964,6 +964,9 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " Disable deep directory relocation (violates ISO9660)", " -hide-rr-moved Relocate deep directories to /.rr_moved", " -rr_reloc_dir NAME Set deep directory relocation target in root", +" -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", " -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", @@ -2570,6 +2573,13 @@ rr_reloc_dir:; goto problem_handler_2; Xorriso_relax_compliance(xorriso, "deep_paths_off:long_paths_off", 0); + } else if(strcmp(argpt, "-long-rr-time") == 0) { + Xorriso_relax_compliance(xorriso, "rrip_tf_long", 0); + + } else if(strcmp(argpt, "-no-long-rr-time") == 0 || + strcmp(argpt, "-short-rr-time") == 0) { + Xorriso_relax_compliance(xorriso, "rrip_tf_short", 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 a7cc4401..73b4573f 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2025.06.24.170955" +#define Xorriso_timestamP "2025.06.24.171249" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index e5b0e590..5b57f5f9 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 10, 2025" +.TH XORRISOFS 1 "Version 1.5.7, Jun 24, 2025" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -676,6 +676,23 @@ This option has no effect if option \-D is present. \fB\-hide-rr-moved\fR Alias of \-rr_reloc_dir "/.rr_moved" .TP +\fB\-long-rr-time\fR +Force use of the long form of RockRidge timestamps. +This form is not understood by Linux kernels older than 6.16, but can represent +times after the end of year 2155. +.br +Without this option xorriso will use this form only with individual files +or directories of which the atime, ctime, or mtime is after 01 Jan 2150 UTC. +(The six years up to 2156 may serve as last opportunity to enhance readers +after libisofs was changed to continue using the short form.) +.TP +\fB\-short-rr-time\fR +Re\-enable the default behavior of using the long form of RockRidge timestamps +only for files with timestamps after 01 Jan 2150 UTC. +.TP +\fB\-no-long-rr-time\fR +Alias of \-short\-rr\-time. +.TP \fB--for_backup\fR Enable all options which improve backup fidelity: .br diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index 567f4be0..69f9ed0a 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -616,6 +616,20 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op This option has no effect if option -D is present. -hide-rr-moved Alias of -rr_reloc_dir "/.rr_moved" +-long-rr-time + Force use of the long form of RockRidge timestamps. This form is + not understood by Linux kernels older than 6.16, but can represent + times after the end of year 2155. + Without this option xorriso will use this form only with individual + files or directories of which the atime, ctime, or mtime is after + 01 Jan 2150 UTC. (The six years up to 2156 may serve as last + opportunity to enhance readers after libisofs was changed to + continue using the short form.) +-short-rr-time + Re-enable the default behavior of using the long form of RockRidge + timestamps only for files with timestamps after 01 Jan 2150 UTC. +-no-long-rr-time + Alias of -short-rr-time. --for_backup Enable all options which improve backup fidelity: --acl, --xattr-any, --md5, --hardlinks, --projid, and possibly @@ -2140,13 +2154,13 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T [index] * Menu: -* --acl Recording of ACLs: SetExtras. (line 107) +* --acl Recording of ACLs: SetExtras. (line 121) * --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 92) +* --for_backup Enable backup fidelity: SetExtras. (line 106) * --gpt-iso-bootable Set Legacy BIOS bootable flag: SystemArea. (line 159) * --gpt-iso-not-ro Do not set Read-only flag: SystemArea. (line 164) @@ -2154,11 +2168,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 146) -* --lfa_flags Recording of Linux file attributes: SetExtras. (line 126) +* --hardlinks Recording of hardlink relations: SetExtras. (line 160) +* --lfa_flags Recording of Linux file attributes: SetExtras. (line 140) * --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. (line 148) -* --md5 Recording of MD5 checksums: SetExtras. (line 138) +* --md5 Recording of MD5 checksums: SetExtras. (line 152) * --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) @@ -2170,12 +2184,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 135) +* --projid Recording of XFS-style project ids: SetExtras. (line 149) * --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 154) +* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 168) * --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. @@ -2184,8 +2198,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 120) -* --xattr Recording of user xattr: SetExtras. (line 113) +* --xattr Recording of any xattr: SetExtras. (line 134) +* --xattr Recording of user xattr: SetExtras. (line 127) * --zisofs-version-2 enable recognition of zisofs2 files: SetInsert. (line 65) * --zisofs2-susp-z2 produce Z2 for version 2 instead of ZF: SetInsert. @@ -2255,15 +2269,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 237) -* -hfs-bless-by HFS+ blessing: SetExtras. (line 227) -* -hfsplus enable production of HFS+ partition: SetExtras. (line 180) -* -hfsplus-block-size set APM block size: SetExtras. (line 217) +* -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) * -hfsplus-block-size set HFS+ allocation block size: SetExtras. - (line 213) + (line 227) * -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras. - (line 224) -* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 209) + (line 238) +* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 223) * -hide keep matching files invisible in ISO tree: SetHide. (line 8) * -hide-hfsplus keep matching files invisible in HFS+ tree: SetHide. (line 25) @@ -2294,7 +2308,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 163) +* -J enable production of Joliet directory tree: SetExtras. (line 177) * -jigdo-checksum-algorithm set data file checksum algorithm: Jigdo. (line 42) * -jigdo-exclude add exclusion pattern for checksum file: Jigdo. @@ -2310,11 +2324,12 @@ 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 167) -* -joliet-long allow longer Joliet names: SetExtras. (line 169) -* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 175) + (line 181) +* -joliet-long allow longer Joliet names: SetExtras. (line 183) +* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 189) * -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) * -m exclude disk files from inserting: SetInsert. (line 41) * -M set path for loading existing ISO image: Loading. (line 11) * -max-iso9660-filenames allow 37 characters in ISO file names: SetCompl. @@ -2324,6 +2339,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 332) * -N omit version number in ISO file names: SetCompl. (line 65) * -no-emul-boot El Torito boot image emulation: Bootable. (line 88) +* -no-long-rr-time Enable Rock Ridge timestamps: SetExtras. (line 104) * -no-pad do not add zeros to ISO tree: SetProduct. (line 101) * -o set output file address: SetProduct. (line 8) * -old-exclude exclude disk files from inserting: SetInsert. (line 52) @@ -2362,6 +2378,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -root redirect ISO root directory: SetInsert. (line 85) * -rr_reloc_dir set deep directory relocation target: SetExtras. (line 74) +* -short-rr-time Enable Rock Ridge timestamps: SetExtras. (line 101) * -sparc-boot SUN SPARC boot images: SystemArea. (line 348) * -sparc-label SUN Disk Label text: SystemArea. (line 350) * -sysid set System Id: ImageId. (line 43) @@ -2392,14 +2409,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 107) +* ACL, record and load, --acl: SetExtras. (line 121) * 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 92) +* Backup, enable fidelity, --for_backup: SetExtras. (line 106) * Biblio File, set path, -biblio: ImageId. (line 62) * Block address, set sorting weight, --sort-weight: SetProduct. (line 45) @@ -2498,14 +2515,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 180) -* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 237) -* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 227) -* HFS+, set allocation block size: SetExtras. (line 213) -* HFS+, set APM block size: SetExtras. (line 217) +* 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+, set creator and type of file, -hfsplus-file-creator-type: SetExtras. - (line 224) -* HFS+, set serial number: SetExtras. (line 209) + (line 238) +* HFS+, set serial number: SetExtras. (line 223) * HFS+, _definition: Standards. (line 34) * Hiding, by ISO RR path, -hide_iso_path: SetHide. (line 31) * Hiding, from HFS+, -hide-hfsplus: SetHide. (line 25) @@ -2568,18 +2585,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 169) -* Joliet, enable, -J, -joliet: SetExtras. (line 163) +* Joliet, allows longer names, -joliet-long: SetExtras. (line 183) +* Joliet, enable, -J, -joliet: SetExtras. (line 177) * Joliet, _definition: Standards. (line 21) * Links, follow on disk, -f, -follow-links: SetInsert. (line 32) -* Links, record and load hard links, --hardlinks: SetExtras. (line 146) +* Links, record and load hard links, --hardlinks: SetExtras. (line 160) * Linux file attributes, record and load, --lfa_flags: SetExtras. - (line 126) + (line 140) * 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 138) +* MD5, record and load, --md5: SetExtras. (line 152) * Message output, increase frequency, -gui: Miscellaneous. (line 44) * Message output, redirect stderr, -log-file: Miscellaneous. (line 48) * Message output, suppress, -quiet: Miscellaneous. (line 40) @@ -2602,12 +2619,18 @@ 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, enable short, -no-long-rr-time: SetExtras. + (line 104) +* Rock Ridge timestamps, enable short, -short-rr-time: SetExtras. + (line 101) +* Rock Ridge timestamps, force long, -long-rr-time: SetExtras. + (line 92) * Rock Ridge, (enabled by default), -R, -rock: SetExtras. (line 8) * Rock Ridge, altered owner and permission, -r, -rational-rock: SetExtras. (line 16) * Rock Ridge, disable production, --norock: SetExtras. (line 28) * Rock Ridge, _definition: Standards. (line 14) -* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 154) +* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 168) * Session, select path, -M, -prev-session, -dev: Loading. (line 11) * Session, set load and write address, -C, -cdrecord-params: Loading. (line 25) @@ -2616,14 +2639,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 175) +* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 189) * 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 113) -* xattr, record and load, --xattr-any: SetExtras. (line 120) +* xattr, record and load, --xattr: SetExtras. (line 127) +* xattr, record and load, --xattr-any: SetExtras. (line 134) * XFS-style project ids, record and load, --projid: SetExtras. - (line 135) + (line 149) * xorriso, mkisofs emulation: Xorriso. (line 6) * xorriso, options: Options. (line 6) * Z2 instead of ZF for version 2, -zisofs2-susp-z2: SetInsert. @@ -2649,28 +2672,28 @@ Node: SetInsert9693 Node: SetProduct15628 Node: SetCompl21200 Node: SetExtras23873 -Node: SetHide36265 -Node: ImageId38264 -Node: Bootable42546 -Node: SystemArea48979 -Node: Charset70290 -Node: Jigdo71315 -Node: Miscellaneous76285 -Node: Reproducible78885 -Node: Examples81391 -Node: ExSimple81885 -Node: ExGraft82368 -Node: ExMkisofs83668 -Node: ExGrowisofs85476 -Node: ExIncBackup86666 -Node: ExIncBckAcc89842 -Node: ExBootable91547 -Node: Files95729 -Node: Environ96824 -Node: Seealso97242 -Node: Bugreport97943 -Node: Legal98536 -Node: CommandIdx99433 -Node: ConceptIdx116939 +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  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index e8841336..d1e24db1 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 10, 2025" +@c man .TH XORRISOFS 1 "Version 1.5.7, Jun 24, 2025" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -941,6 +941,29 @@ This option has no effect if option -D is present. @cindex Deep directories, relocation target, -hide-rr-moved Alias of -rr_reloc_dir "/.rr_moved" @c man .TP +@item -long-rr-time +@kindex -long-rr-time Force long Rock Ridge timestamps +@cindex Rock Ridge timestamps, force long, -long-rr-time +Force use of the long form of RockRidge timestamps. +This form is not understood by Linux kernels older than 6.16, but can represent +times after the end of year 2155. +@* +Without this option xorriso will use this form only with individual files +or directories of which the atime, ctime, or mtime is after 01 Jan 2150 UTC. +(The six years up to 2156 may serve as last opportunity to enhance readers +after libisofs was changed to continue using the short form.) +@c man .TP +@item -short-rr-time +@kindex -short-rr-time Enable Rock Ridge timestamps +@cindex Rock Ridge timestamps, enable short, -short-rr-time +Re-enable the default behavior of using the long form of RockRidge timestamps +only for files with timestamps after 01 Jan 2150 UTC. +@c man .TP +@item -no-long-rr-time +@kindex -no-long-rr-time Enable Rock Ridge timestamps +@cindex Rock Ridge timestamps, enable short, -no-long-rr-time +Alias of -short-rr-time. +@c man .TP @item @minus{}@minus{}for_backup @kindex @minus{}@minus{}for_backup Enable backup fidelity @cindex Backup, enable fidelity, @minus{}@minus{}for_backup