From 5133b9cba1d32b487dd98e51c0a6e7a946aaa667 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 29 Jun 2024 23:31:15 +0200 Subject: [PATCH] New entities "at_time", "before", "after", "not_after", "not_before" for commands -load, -mount, -mount_cmd, -session_string, -truncate_overwritable --- xorriso/drive_mgt.c | 16 +-- xorriso/iso_img.c | 12 +-- xorriso/opts_d_h.c | 3 + xorriso/parse_exec.c | 50 ++++++++- xorriso/parse_exec.h | 7 +- xorriso/write_run.c | 14 ++- xorriso/xorriso.1 | 39 ++++++- xorriso/xorriso.info | 196 ++++++++++++++++++++---------------- xorriso/xorriso.texi | 39 ++++++- xorriso/xorriso_timestamp.h | 2 +- 10 files changed, 262 insertions(+), 116 deletions(-) diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 098c8fde..b4dddb50 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -523,14 +523,14 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr, if((xorriso->image_start_mode&(1<<30))) { /* if enabled at all */ adr_pt= xorriso->image_start_value; adr_mode= xorriso->image_start_mode & 0xffff; - if(adr_mode == 4 && strlen(adr_pt) <= 80) { - /* Convert volid search expression into lba */ - params_flag= 0; - ret= Xorriso__bourne_to_reg(xorriso->image_start_value, adr_data, 0); - if(ret >= 1) - params_flag|= 4; - ret= isoburn_get_mount_params_v2(drive, 4, adr_data, &lba, &track, - &session, volid, params_flag); + if(adr_mode >= 4 && adr_mode <= 9 && strlen(adr_pt) <= 80) { + /* Convert volid search expression or time constraint to lba */ + ret= Xorriso_prepare_load_search(xorriso, "-indev", adr_mode, adr_pt, + adr_data, ¶ms_flag, 0); + if(ret <= 0) + goto ex; + ret= isoburn_get_mount_params_v2(drive, adr_mode, adr_data, &lba, + &track, &session, volid, params_flag); Xorriso_process_msg_queues(xorriso,0); if(ret <= 0) goto ex; diff --git a/xorriso/iso_img.c b/xorriso/iso_img.c index 40215b18..4b2753ae 100644 --- a/xorriso/iso_img.c +++ b/xorriso/iso_img.c @@ -1163,13 +1163,11 @@ int Xorriso_mount(struct XorrisO *xorriso, char *dev, int adr_mode, drive= dinfo[0].drive; } - if(adr_mode == 4 && strlen(adr_pt) <= 80) { - ret= Xorriso__bourne_to_reg(adr_pt, adr_data, 0); - if(ret == 1) { - params_flag|= 4; - adr_pt= adr_data; - } - } + ret= Xorriso_prepare_load_search(xorriso, "-mount", adr_mode, adr_pt, + adr_data, ¶ms_flag, 0); + if(ret <= 0) + goto ex; + adr_pt= adr_data; ret= isoburn_get_mount_params_v2(drive, adr_mode, adr_pt, &lba, &track, &session, volid, params_flag); Xorriso_process_msg_queues(xorriso,0); diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index 83192ddc..7e5bbb05 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -1883,6 +1883,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -grow_blindly \"off\"|predicted_nwa", " Switch between modifying and blind growing.", " -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id", +" -load \"at_time\"|\"before\"|\"after\"|\"not_before\"|\"not_after\" time", " Load a particular (outdated) ISO session from a -dev or", " -indev which hosts more than one session.", " -displacement [-]block_address", @@ -2049,6 +2050,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " -toc Show media specific tables of content (sessions).", " -toc_of \"in\"|\"out\"|\"all\"[\":short\"]", " Show -toc of either input drive or output drive or both.", +" -toc_info_type \"volid\"|\"creation_time[_gmt]\"|\"modification_time[_gmt]\"", +" Choose what to show in the right column of -toc and -toc_of.", "", " -assess_indev_features \"plain\"|\"cmd\"|\"as_mkisofs\"|\"replay\"", " Inspect the filesystem on -indev for features like ISO level,", diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 490c1f99..6006e978 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -430,6 +430,16 @@ int Xorriso_decode_load_adr(struct XorrisO *xorriso, char *cmd, *entity_code= 3 | ((flag&1) << 16); else if(strcmp(adr_mode, "volid")==0) *entity_code= 4; + else if(strcmp(adr_mode, "at_time")==0) + *entity_code= 5; + else if(strcmp(adr_mode, "not_after")==0) + *entity_code= 6; + else if(strcmp(adr_mode, "not_before")==0) + *entity_code= 7; + else if(strcmp(adr_mode, "before")==0) + *entity_code= 8; + else if(strcmp(adr_mode, "after")==0) + *entity_code= 9; else { sprintf(xorriso->info_text, "%s: unknown address mode '%s'", cmd, adr_mode); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); @@ -457,6 +467,42 @@ int Xorriso_decode_load_adr(struct XorrisO *xorriso, char *cmd, return(1); } + +int Xorriso_prepare_load_search(struct XorrisO *xorriso, char *cmd, + int adr_mode, char *adr_value_in, + char *adr_value_out, int *params_flag, + int flag) +{ + int ret; + time_t seconds; + + *params_flag= 0; + if(adr_mode == 4 && strlen(adr_value_in) <= 80) { + ret= Xorriso__bourne_to_reg(adr_value_in, adr_value_out, 0); + if(ret == 1) { + *params_flag|= 4; + } else { + strcpy(adr_value_out, adr_value_in); + } + return(1); + } + if(adr_mode >= 5 && adr_mode <= 9) { + ret= Decode_timestring(adr_value_in, &seconds, 0); + if(ret <= 0) { + sprintf(xorriso->info_text, "%s: Cannot decode timestring '%s'", + cmd, adr_value_in); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + return(0); + } + sprintf(adr_value_out, "%.f", (double) seconds); + if(xorriso->toc_info_type == 3) + *params_flag|= 4; + return(1); + } + strcpy(adr_value_out, adr_value_in); + return(1); +} + int Xorriso_check_thing_len(struct XorrisO *xorriso, char *name, int size, char *cmd, char *thing, int flag) @@ -1540,7 +1586,7 @@ next_command:; (*idx)+= 4; if((*idx)>argc) { sprintf(xorriso->info_text, - "-%s: Not enough arguments. Needed are: device entity id command", + "-%s: Not enough arguments. Needed are: device entity id path", cmd); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; @@ -1791,7 +1837,7 @@ next_command:; (*idx)+= 4; if((*idx)>argc) { sprintf(xorriso->info_text, - "-%s: Not enough arguments. Needed are: device entity id command", + "-%s: Not enough arguments. Needed are: device entity id format", cmd); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; diff --git a/xorriso/parse_exec.h b/xorriso/parse_exec.h index c011b49a..fc7a546e 100644 --- a/xorriso/parse_exec.h +++ b/xorriso/parse_exec.h @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2014 Thomas Schmitt, + Copyright 2007-2024 Thomas Schmitt, Provided under GPL version 2 or later. @@ -55,6 +55,11 @@ int Xorriso_decode_load_adr(struct XorrisO *xorriso, char *cmd, int *entity_code, char entity_id[81], int flag); +int Xorriso_prepare_load_search(struct XorrisO *xorriso, char *cmd, + int adr_mode, char *adr_value_in, + char *adr_value_out, int *params_flag, + int flag); + int Xorriso_check_thing_len(struct XorrisO *xorriso, char *name, int size, char *cmd, char *thing, int flag); diff --git a/xorriso/write_run.c b/xorriso/write_run.c index 80dbb39a..b346b5cf 100644 --- a/xorriso/write_run.c +++ b/xorriso/write_run.c @@ -3654,14 +3654,16 @@ int Xorriso_truncate_overwritable(struct XorrisO *xorriso, char *adr_mode, { int ret, iso_session, iso_track, image_start_mode= 0; int was_indev= 0, checksum_block= 0, vd_end, headless_mode= 0, i; + int params_flag; off_t iso_lba= 0, iso_size= 0, old_size, new_size, blocks, readable_blocks; char image_start_value[81], *head_buffer= NULL, iso_volid[33]; - char *sb_buffer= NULL, *checksum_pt; + char *sb_buffer= NULL, *checksum_pt, *adr_data= NULL; struct burn_drive_info *dinfo; struct burn_drive *drive = NULL, *in_drive = NULL; struct burn_multi_caps *caps= NULL; Xorriso_alloc_meM(head_buffer, char, 32 * 2048); + Xorriso_alloc_meM(adr_data, char, 163); if(Xorriso_change_is_pending(xorriso, 0)) { sprintf(xorriso->info_text, @@ -3726,9 +3728,14 @@ int Xorriso_truncate_overwritable(struct XorrisO *xorriso, char *adr_mode, image_start_value, 0); if(ret <= 0) goto ex; - ret= isoburn_get_mount_params_v2(drive, image_start_mode, image_start_value, + ret= Xorriso_prepare_load_search(xorriso, "-truncate_overwritable", + image_start_mode, image_start_value, + adr_data, ¶ms_flag, 0); + if(ret <= 0) + goto ex; + ret= isoburn_get_mount_params_v2(drive, image_start_mode, adr_data, &iso_lba, &iso_track, &iso_session, - iso_volid, 0); + iso_volid, params_flag); if(ret <= 0) goto ex; if(ret != 1) { @@ -3845,6 +3852,7 @@ wrong_adjust:; ex: if(caps!=NULL) burn_disc_free_multi_caps(&caps); + Xorriso_free_meM(adr_data); Xorriso_free_meM(head_buffer); Xorriso_free_meM(sb_buffer); Xorriso_process_msg_queues(xorriso,0); diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 892a8b59..1bee2e40 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.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 XORRISO 1 "Version 1.5.7, Jun 28, 2024" +.TH XORRISO 1 "Version 1.5.7, Jun 29, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -873,8 +873,39 @@ address. The following entities are defined: .br "lba" or "sbsector" with a number as of a line "ISO ...", column "sbsector". .br -"volid" with a search pattern for a text as of a line "ISO ...", -column "Volume Id". +"volid" with a search pattern for a text as in the column "Volume Id" of +a \-toc line "ISO ...". +.br +"at_time" with a time string as described with command \-alter_date chooses +the last session or track where the modification timestamp matches the given +time within the same second. +.br +"before" with a time string chooses the last session or track of which +the timestamp is older than the given time. But it does not match an entity +with exactly the given time. +.br +"not_after" is like "before" but also matches an entity with exactly the +given time. +.br +"after" with a time string chooses the first session or track of which +the timestamp is younger than the given time. But it does not match an entity +with exactly the given time. +.br +"not_before" is like "after" but also matches an entity with exactly the +given time. +.br +Comparison of time entities is done with an accuracy of one second. I.e. the +centiseconds of ISO 9660 timestamps are ignored. +If \-toc_info_type is set to "creation_time", then the comparison is done +against the creation timestamp of track or session rather than the modification +timestamp. The output of \-pvd_info shows both timestamps as "Creation Time:" +and "Modif. Time :". +.br +The time comparisons pick first and last matching sessions. If the sequence of +timestamps on a drive is not chronologically ascending, the picks might not be +the best choice. +In this case look at the output of \-toc_info_type "mtime" \-toc and choose the +desired entity by "session", "track", or "sbsector". .br Addressing a non\-existing entity or one which does not represent an ISO image will either abandon \-indev or at least lead to a blank image. @@ -1927,7 +1958,7 @@ Relative times counted from current clock time: where "s" means seconds, "h" hours, "d" days, "w" weeks, "m"=30d, "y"=365.25d plus 1d added to multiplication result. .br -Absolute seconds counted from Jan 1 1970: +Absolute seconds counted from Jan 1 1970 00:00 GMT: .br =Number .br diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 0301fd9a..bcc00826 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -798,8 +798,32 @@ activate them only after image loading. "Idx". "lba" or "sbsector" with a number as of a line "ISO ...", column "sbsector". - "volid" with a search pattern for a text as of a line "ISO ...", - column "Volume Id". + "volid" with a search pattern for a text as in the column "Volume + Id" of a -toc line "ISO ...". + "at_time" with a time string as described with command -alter_date + chooses the last session or track where the modification timestamp + matches the given time within the same second. + "before" with a time string chooses the last session or track of + which the timestamp is older than the given time. But it does not + match an entity with exactly the given time. + "not_after" is like "before" but also matches an entity with + exactly the given time. + "after" with a time string chooses the first session or track of + which the timestamp is younger than the given time. But it does + not match an entity with exactly the given time. + "not_before" is like "after" but also matches an entity with + exactly the given time. + Comparison of time entities is done with an accuracy of one second. + I.e. the centiseconds of ISO 9660 timestamps are ignored. If + -toc_info_type is set to "creation_time", then the comparison is + done against the creation timestamp of track or session rather than + the modification timestamp. The output of -pvd_info shows both + timestamps as "Creation Time:" and "Modif. Time :". + The time comparisons pick first and last matching sessions. If the + sequence of timestamps on a drive is not chronologically ascending, + the picks might not be the best choice. In this case look at the + output of -toc_info_type "mtime" -toc and choose the desired entity + by "session", "track", or "sbsector". Addressing a non-existing entity or one which does not represent an ISO image will either abandon -indev or at least lead to a blank image. @@ -1664,7 +1688,7 @@ whether they stem from the loaded image or were newly inserted. +|-Number["s"|"h"|"d"|"w"|"m"|"y"] where "s" means seconds, "h" hours, "d" days, "w" weeks, "m"=30d, "y"=365.25d plus 1d added to multiplication result. - Absolute seconds counted from Jan 1 1970: + Absolute seconds counted from Jan 1 1970 00:00 GMT: =Number 'xorriso''s own timestamps: YYYY.MM.DD[.hh[mm[ss]]] @@ -5768,7 +5792,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * # starts a comment line: Scripting. (line 156) * -abort_on controls abort on error: Exception. (line 27) * -abstract_file sets abstract file name: SetWrite. (line 271) -* -acl controls handling of ACLs: Loading. (line 165) +* -acl controls handling of ACLs: Loading. (line 189) * -add inserts one or more paths: Insert. (line 44) * -add_plainly inserts one or more paths: Insert. (line 68) * -alter_date sets timestamps in ISO image: Manip. (line 139) @@ -5778,15 +5802,15 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -application_id sets application id: SetWrite. (line 218) * -application_use sets application use field: SetWrite. (line 293) * -as emulates mkisofs or cdrecord: Emulation. (line 13) -* -assert_volid rejects undesired images: Loading. (line 105) +* -assert_volid rejects undesired images: Loading. (line 129) * -assess_indev_features shows filesystem features: Inquiry. (line 61) -* -auto_charset learns character set from image: Loading. (line 117) +* -auto_charset learns character set from image: Loading. (line 141) * -backslash_codes enables backslash conversion: Scripting. (line 71) -* -ban_stdio_write demands real drive: Loading. (line 345) +* -ban_stdio_write demands real drive: Loading. (line 369) * -biblio_file sets biblio file name: SetWrite. (line 277) * -blank erases media: Writing. (line 57) * -boot_image controls bootability: Bootable. (line 75) -* -calm_drive reduces drive activity: Loading. (line 335) +* -calm_drive reduces drive activity: Loading. (line 359) * -cd sets working directory in ISO: Navigate. (line 7) * -cdx sets working directory on disk: Navigate. (line 15) * -changes_pending overrides change status: Writing. (line 12) @@ -5820,15 +5844,15 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -cp_rx copies file trees to disk: Restore. (line 131) * -cp_rx copies file trees to disk <1>: Restore. (line 139) * -cut_out inserts piece of data file or device: Insert. (line 139) -* -data_cache_size adjusts read cache size: Loading. (line 361) +* -data_cache_size adjusts read cache size: Loading. (line 385) * -dev acquires one drive for input and output: AqDrive. (line 12) * -devices gets list of drives: Inquiry. (line 7) * -device_links gets list of drives: Inquiry. (line 17) * -dialog enables dialog mode: DialogCtl. (line 7) -* -disk_dev_ino fast incremental backup: Loading. (line 255) +* -disk_dev_ino fast incremental backup: Loading. (line 279) * -disk_pattern controls pattern expansion: Insert. (line 34) * -displacement compensate altered image start address: Loading. - (line 78) + (line 102) * -drive_access control device file locking: AqDrive. (line 72) * -drive_class controls drive accessability: AqDrive. (line 43) * -du show directory size in ISO image: Navigate. (line 78) @@ -5837,8 +5861,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -dusx show directory size on disk: Navigate. (line 88) * -dux show directory size on disk: Navigate. (line 84) * -dvd_obs set write block size and end alignment: SetWrite. (line 421) -* -early_stdio_test classifies stdio drives: Loading. (line 349) -* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 228) +* -early_stdio_test classifies stdio drives: Loading. (line 373) +* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 252) * -eject ejects drive tray: Writing. (line 50) * -end writes pending session and ends program: Scripting. (line 151) * -errfile_log logs problematic disk files: Scripting. (line 116) @@ -5851,13 +5875,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -extract_cut copies file piece to disk: Restore. (line 108) * -extract_l copies files to disk: Restore. (line 104) * -extract_single copies file to disk: Restore. (line 101) -* -file_name_limit curbs length of file names: Loading. (line 275) +* -file_name_limit curbs length of file names: Loading. (line 299) * -file_size_limit limits data file size: SetInsert. (line 7) * -find traverses and alters ISO tree: CmdFind. (line 7) * -findx traverses disk tree: Navigate. (line 91) * -follow softlinks and mount points: SetInsert. (line 77) * -format formats media: Writing. (line 87) -* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 214) +* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 238) * -fs sets size of fifo: SetWrite. (line 500) * -getfacl shows ACL in ISO image: Navigate. (line 60) * -getfacl_r shows ACL in ISO image: Navigate. (line 66) @@ -5865,19 +5889,19 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -getfattr_r shows xattr in ISO image: Navigate. (line 75) * -gid sets global ownership: SetWrite. (line 314) * -grow_blindly overrides next writeable address: AqDrive. (line 112) -* -hardlinks controls handling of hard links: Loading. (line 128) +* -hardlinks controls handling of hard links: Loading. (line 152) * -help prints help text: Scripting. (line 19) * -hfsplus enables production of HFS+ partition: SetWrite. (line 14) * -hide excludes file names from directory trees: Manip. (line 177) * -history brings text into readline history: Scripting. (line 42) * -indev acquires a drive for input: AqDrive. (line 23) -* -in_charset sets input character set: Loading. (line 112) +* -in_charset sets input character set: Loading. (line 136) * -iso_nowtime fixed "now" time for ISO 9660 objects: Loading. - (line 249) + (line 273) * -iso_rr_pattern controls pattern expansion: Manip. (line 10) * -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 37) * -joliet enables production of Joliet tree: SetWrite. (line 10) -* -joliet_map Joliet names: Loading. (line 241) +* -joliet_map Joliet names: Loading. (line 265) * -launch_frontend starts frontend program at pipes: Frontend. (line 141) * -list_arg_sorting prints sorting order of -x: ArgSort. (line 26) @@ -5902,7 +5926,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -map_l inserts paths from disk file: Insert. (line 96) * -map_single inserts path: Insert. (line 93) * -mark sets synchronizing message: Frontend. (line 23) -* -md5 controls handling of MD5 sums: Loading. (line 183) +* -md5 controls handling of MD5 sums: Loading. (line 207) * -mkdir creates ISO directory: Insert. (line 188) * -modesty_on_drive keep drive buffer hungry: SetWrite. (line 440) * -mount issues mount command for ISO session: Restore. (line 204) @@ -5943,7 +5967,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -pwdx tells working directory on disk: Navigate. (line 21) * -quoted_not_list sets exclusions: SetInsert. (line 74) * -quoted_path_list inserts paths from disk file: Insert. (line 85) -* -read_fs filesystem type for image loading: Loading. (line 96) +* -read_fs filesystem type for image loading: Loading. (line 120) * -read_mkisofsrc searches and reads .mkisofsrc file: Emulation. (line 155) * -read_speed set read speed: Loading. (line 11) @@ -5959,7 +5983,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top (line 57) * -rollback discards pending changes: Writing. (line 9) * -rollback_end ends program without writing: Scripting. (line 154) -* -rom_toc_scan searches for sessions: Loading. (line 307) +* -rom_toc_scan searches for sessions: Loading. (line 331) * -rr_reloc_dir sets name of relocation directory: SetWrite. (line 171) * -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179) * -scsi_dev_family choose Linux device file type: AqDrive. (line 95) @@ -6008,7 +6032,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -volume_date sets volume timestamp: SetWrite. (line 232) * -write_type chooses TAO or SAO/DAO: SetWrite. (line 521) * -x enables automatic execution order of arguments: ArgSort. (line 16) -* -xattr controls handling of xattr (EA): Loading. (line 172) +* -xattr controls handling of xattr (EA): Loading. (line 196) * -zisofs controls zisofs production: SetWrite. (line 317)  @@ -6020,7 +6044,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top [index] * Menu: -* ACL, control handling, -acl: Loading. (line 165) +* ACL, control handling, -acl: Loading. (line 189) * ACL, set in ISO image, -setfacl: Manip. (line 68) * ACL, set in ISO image, -setfacl_list: Manip. (line 94) * ACL, set in ISO image, -setfacl_r: Manip. (line 92) @@ -6037,8 +6061,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Appended partitions, MBR: Bootable. (line 480) * Automatic execution order, of arguments, -x: ArgSort. (line 16) * Backslash Interpretation, _definition: Processing. (line 57) -* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 255) -* Backup, enable features, -for_backup: Loading. (line 214) +* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 279) +* Backup, enable features, -for_backup: Loading. (line 238) * Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179) * Blank media, _definition: Media. (line 34) * Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 478) @@ -6046,10 +6070,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Bootability, control, -boot_image: Bootable. (line 75) * Bugs, reporting: Bugreport. (line 6) * cdrecord, Emulation: Emulation. (line 120) -* Character Set, for input, -in_charset: Loading. (line 112) +* Character Set, for input, -in_charset: Loading. (line 136) * Character Set, for input/output, -charset: Charset. (line 54) * Character Set, for output, -out_charset: SetWrite. (line 306) -* Character set, learn from image, -auto_charset: Loading. (line 117) +* Character set, learn from image, -auto_charset: Loading. (line 141) * Character Set, of terminal, -local_charset: Charset. (line 57) * Character Set, _definition: Charset. (line 6) * CHRP partition, _definition: Bootable. (line 333) @@ -6077,8 +6101,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Directory, delete, -rmdir: Manip. (line 29) * disk_path, _definition: Insert. (line 6) * Drive, accessability, -drive_class: AqDrive. (line 43) -* Drive, classify stdio, -early_stdio_test: Loading. (line 349) -* Drive, demand real MMC, -ban_stdio_write: Loading. (line 345) +* Drive, classify stdio, -early_stdio_test: Loading. (line 373) +* Drive, demand real MMC, -ban_stdio_write: Loading. (line 369) * Drive, eject tray, -eject: Writing. (line 50) * Drive, for input and output, -dev: AqDrive. (line 12) * Drive, for input, -indev: AqDrive. (line 23) @@ -6086,7 +6110,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, get drive list, -devices: Inquiry. (line 7) * Drive, get drive list, -device_links: Inquiry. (line 17) * Drive, list supported media, -list_profiles: Writing. (line 163) -* Drive, reduce activity, -calm_drive: Loading. (line 335) +* Drive, reduce activity, -calm_drive: Loading. (line 359) * Drive, report SCSI commands, -scsi_log: Scripting. (line 143) * Drive, write and eject, -commit_eject: Writing. (line 53) * Drive, _definition: Drives. (line 6) @@ -6102,9 +6126,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Examples: Examples. (line 6) * extattr, _definition: Extras. (line 66) * File content, copy, -concat: Restore. (line 148) -* File names, curb length, -file_name_limit: Loading. (line 275) -* File names, if Joliet is loaded: Loading. (line 241) -* File names, if neither Rock Ridge nor Joliet: Loading. (line 228) +* File names, curb length, -file_name_limit: Loading. (line 299) +* File names, if Joliet is loaded: Loading. (line 265) +* File names, if neither Rock Ridge nor Joliet: Loading. (line 252) * Filesytem features, show, -assess_indev_features: Inquiry. (line 61) * Filter, apply to file tree, -set_filter_r: Filter. (line 84) * Filter, apply to file, -set_filter: Filter. (line 58) @@ -6125,15 +6149,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Group, in ISO image, -chgrp: Manip. (line 49) * Group, in ISO image, -chgrp_r: Manip. (line 53) * Growing, _definition: Methods. (line 20) -* Hard links, control handling, -hardlinks: Loading. (line 128) +* Hard links, control handling, -hardlinks: Loading. (line 152) * HFS+ allocation block size: Bootable. (line 458) * HFS+ serial number: Bootable. (line 455) * hidden, set in ISO image, -hide: Manip. (line 177) * HP-PA boot sector, production: Bootable. (line 430) -* Image reading, cache size, -data_cache_size: Loading. (line 361) -* Image, demand volume ID, -assert_volid: Loading. (line 105) +* Image reading, cache size, -data_cache_size: Loading. (line 385) +* Image, demand volume ID, -assert_volid: Loading. (line 129) * Image, discard pending changes, -rollback: Writing. (line 9) -* Image, filesystem to load, -read_fs: Loading. (line 96) +* Image, filesystem to load, -read_fs: Loading. (line 120) * Image, override change status, -changes_pending: Writing. (line 12) * Image, set abstract file name, -abstract_file: SetWrite. (line 271) * Image, set application id, -application_id: SetWrite. (line 218) @@ -6182,14 +6206,14 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Jigdo Template Extraction, -jigdo: Jigdo. (line 37) * Jigdo Template Extraction, _definition: Jigdo. (line 6) * LBA, _definition: Drives. (line 17) -* libisofs, fixed "now" time: Loading. (line 249) +* libisofs, fixed "now" time: Loading. (line 273) * Linux device type, -scsi_dev_family: AqDrive. (line 95) * List delimiter, _definition: Processing. (line 13) * Local Character Set, _definition: Charset. (line 11) * MBR bootable/active flag, enforce: Bootable. (line 388) * MBR, set, -boot_image system_area=: Bootable. (line 227) * MBR, _definition: Extras. (line 27) -* MD5, control handling, -md5: Loading. (line 183) +* MD5, control handling, -md5: Loading. (line 207) * Media, erase, -blank: Writing. (line 57) * Media, format, -format: Writing. (line 87) * Media, list formats, -list_formats: Writing. (line 128) @@ -6283,7 +6307,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Result layout, more shell-like, -sh_style_result: Scripting. (line 61) * Rock Ridge, _definition: Extras. (line 6) -* Session, altered start address, -displacement: Loading. (line 78) +* Session, altered start address, -displacement: Loading. (line 102) * Session, info string, -session_string: Inquiry. (line 120) * Session, issue mount command, -mount: Restore. (line 204) * Session, log when written, -session_log: Scripting. (line 134) @@ -6298,7 +6322,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * System area, _definition: Bootable. (line 227) * Table-of-content, choose info to show, -toc_info_type: Inquiry. (line 49) -* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 307) +* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 331) * Table-of-content, show parts of, -toc_of: Inquiry. (line 41) * Table-of-content, show, -toc: Inquiry. (line 27) * Timestamps, set in ISO image, -alter_date: Manip. (line 139) @@ -6334,7 +6358,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Write, set speed, -speed: SetWrite. (line 392) * Write, simulation, -dummy: SetWrite. (line 497) * Write, TAO or SAO/DAO, -write_type: SetWrite. (line 521) -* xattr, control handling, -xattr: Loading. (line 172) +* xattr, control handling, -xattr: Loading. (line 196) * xattr, set in ISO image, -setfattr: Manip. (line 103) * xattr, set in ISO image, -setfattr_list: Manip. (line 120) * xattr, set in ISO image, -setfattr_r: Manip. (line 118) @@ -6358,48 +6382,48 @@ Node: Commands26041 Node: ArgSort27718 Node: AqDrive29212 Node: Loading36369 -Node: Insert58140 -Node: SetInsert70335 -Node: Manip80509 -Node: CmdFind90609 -Node: Filter110633 -Node: Writing115255 -Node: SetWrite127749 -Node: Bootable159024 -Node: Jigdo190306 -Node: Charset195309 -Node: Exception198638 -Node: DialogCtl204767 -Node: Inquiry207369 -Node: Navigate219902 -Node: Verify228609 -Node: Restore239758 -Node: Emulation251965 -Node: Scripting262421 -Node: Frontend270204 -Node: Examples279830 -Node: ExDevices281008 -Node: ExCreate281669 -Node: ExDialog282969 -Node: ExGrowing284240 -Node: ExModifying285049 -Node: ExBootable285559 -Node: ExCharset286114 -Node: ExPseudo287010 -Node: ExCdrecord287937 -Node: ExMkisofs288257 -Node: ExGrowisofs290154 -Node: ExException291307 -Node: ExTime291765 -Node: ExIncBackup292223 -Node: ExRestore296249 -Node: ExRecovery297195 -Node: Files297767 -Node: Environ299101 -Node: Seealso299849 -Node: Bugreport300566 -Node: Legal301157 -Node: CommandIdx302169 -Node: ConceptIdx320140 +Node: Insert59667 +Node: SetInsert71862 +Node: Manip82036 +Node: CmdFind92146 +Node: Filter112170 +Node: Writing116792 +Node: SetWrite129286 +Node: Bootable160561 +Node: Jigdo191843 +Node: Charset196846 +Node: Exception200175 +Node: DialogCtl206304 +Node: Inquiry208906 +Node: Navigate221439 +Node: Verify230146 +Node: Restore241295 +Node: Emulation253502 +Node: Scripting263958 +Node: Frontend271741 +Node: Examples281367 +Node: ExDevices282545 +Node: ExCreate283206 +Node: ExDialog284506 +Node: ExGrowing285777 +Node: ExModifying286586 +Node: ExBootable287096 +Node: ExCharset287651 +Node: ExPseudo288547 +Node: ExCdrecord289474 +Node: ExMkisofs289794 +Node: ExGrowisofs291691 +Node: ExException292844 +Node: ExTime293302 +Node: ExIncBackup293760 +Node: ExRestore297786 +Node: ExRecovery298732 +Node: Files299304 +Node: Environ300638 +Node: Seealso301386 +Node: Bugreport302103 +Node: Legal302694 +Node: CommandIdx303706 +Node: ConceptIdx321677  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 88882364..3f85ece9 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.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 XORRISO 1 "Version 1.5.7, Jun 28, 2024" +@c man .TH XORRISO 1 "Version 1.5.7, Jun 29, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1105,8 +1105,39 @@ address. The following entities are defined: @* "lba" or "sbsector" with a number as of a line "ISO ...", column "sbsector". @* -"volid" with a search pattern for a text as of a line "ISO ...", -column "Volume Id". +"volid" with a search pattern for a text as in the column "Volume Id" of +a -toc line "ISO ...". +@* +"at_time" with a time string as described with command -alter_date chooses +the last session or track where the modification timestamp matches the given +time within the same second. +@* +"before" with a time string chooses the last session or track of which +the timestamp is older than the given time. But it does not match an entity +with exactly the given time. +@* +"not_after" is like "before" but also matches an entity with exactly the +given time. +@* +"after" with a time string chooses the first session or track of which +the timestamp is younger than the given time. But it does not match an entity +with exactly the given time. +@* +"not_before" is like "after" but also matches an entity with exactly the +given time. +@* +Comparison of time entities is done with an accuracy of one second. I.e. the +centiseconds of ISO 9660 timestamps are ignored. +If -toc_info_type is set to "creation_time", then the comparison is done +against the creation timestamp of track or session rather than the modification +timestamp. The output of -pvd_info shows both timestamps as "Creation Time:" +and "Modif. Time :". +@* +The time comparisons pick first and last matching sessions. If the sequence of +timestamps on a drive is not chronologically ascending, the picks might not be +the best choice. +In this case look at the output of -toc_info_type "mtime" -toc and choose the +desired entity by "session", "track", or "sbsector". @* Addressing a non-existing entity or one which does not represent an ISO image will either abandon -indev or at least lead to a blank image. @@ -2317,7 +2348,7 @@ Relative times counted from current clock time: where "s" means seconds, "h" hours, "d" days, "w" weeks, "m"=30d, "y"=365.25d plus 1d added to multiplication result. @* -Absolute seconds counted from Jan 1 1970: +Absolute seconds counted from Jan 1 1970 00:00 GMT: @* =Number @* diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 4ad79298..62452b8f 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.06.29.212258" +#define Xorriso_timestamP "2024.06.29.213042"