diff --git a/xorriso/base_obj.c b/xorriso/base_obj.c index 4cf28e7e..bd1bbd08 100644 --- a/xorriso/base_obj.c +++ b/xorriso/base_obj.c @@ -3,7 +3,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2023 Thomas Schmitt, + Copyright 2007-2024 Thomas Schmitt, Provided under GPL version 2 or later. @@ -496,6 +496,9 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag) m->info_text[0]= 0; + m->toc_info_type= 1; + m->toc_time_form= 1; + /* Here begin actions which might fail */ diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 2cdf1c86..098c8fde 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -1085,6 +1085,14 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag) off_t lba= 0, nwa= -1, track_size, session_size, first_track_start= 0; off_t num_session_data, num_session_other, num_data= 0, other_data= 0; off_t emul_lba, end_lba, image_blocks, overburn_blocks= 0; + int info_type; + static char *info_type_name[]= {"", "Volume Id", "", "Creation Time", + "Modification Time"}; + static int max_info_type= 4; + + info_type= xorriso->toc_info_type; + if(info_type < 1 || info_type > max_info_type) + info_type= 1; ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive, "on attempt to print Table Of Content", @@ -1343,7 +1351,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag) "Idx", "sbsector", "Size"); else sprintf(respt, "TOC layout : %3s , %9s , %10s , %s\n", - "Idx", "sbsector", "Size", "Volume Id"); + "Idx", "sbsector", "Size", info_type_name[info_type]); if(!(flag&1)) Xorriso_toc_line(xorriso, flag & 8); @@ -1372,8 +1380,12 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag) if(flag & 4) { ret= 0; typetext= "Session "; - } else - ret= isoburn_read_iso_head_v2(drive, 0, &image_blocks, volume_id, 1); + } else { + ret= isoburn_read_iso_head_v2(drive, 0, &image_blocks, volume_id, + info_type); + if(ret > 0 && (info_type == 3 || info_type == 4)) + Untimezone_ecma119_17byte(volume_id, (xorriso->toc_time_form & 1) | 2); + } if(ret>0) { sprintf(respt, "ISO session : %3d , %9d , %9.fs , %s\n", 1, 0, (double) image_blocks, volume_id); @@ -1444,9 +1456,13 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag) } else { ret= isoburn_toc_track_get_emul_v2(tracks[track_no], &emul_lba, &image_blocks, volume_id, 0); - if(ret <= 0) + if(ret <= 0 || info_type != 1) { ret= isoburn_read_iso_head_v2(drive, lba, &image_blocks, volume_id, - 1); + info_type); + if(ret > 0 && (info_type == 3 || info_type == 4)) + Untimezone_ecma119_17byte(volume_id, + (xorriso->toc_time_form & 1) | 2); + } if(image_blocks > track_size) { sprintf(xorriso->info_text, "Session %d bears ISO image size %.fs larger than track size %.fs", diff --git a/xorriso/iso_img.c b/xorriso/iso_img.c index e2a70869..40215b18 100644 --- a/xorriso/iso_img.c +++ b/xorriso/iso_img.c @@ -325,8 +325,14 @@ int Xorriso_pvd_info(struct XorrisO *xorriso, int flag) Xorriso_result(xorriso,0); ret= iso_image_get_pvd_times(image, &crt, &mdt, &ext, &eft); - if(ret != ISO_SUCCESS) + if(ret != ISO_SUCCESS) { crt= mdt= ext= eft= " "; /* Need 17 bytes. Last byte 0. */ + } else { + Untimezone_ecma119_17byte(crt, 0); + Untimezone_ecma119_17byte(mdt, 0); + Untimezone_ecma119_17byte(ext, 0); + Untimezone_ecma119_17byte(eft, 0); + } Xorriso_report_pvd_time(xorriso, "Creation Time:", crt, 0); Xorriso_report_pvd_time(xorriso, "Modif. Time :", mdt, 0); Xorriso_report_pvd_time(xorriso, "Expir. Time :", ext, 0); diff --git a/xorriso/misc_funct.c b/xorriso/misc_funct.c index da04cf68..f2a8c387 100644 --- a/xorriso/misc_funct.c +++ b/xorriso/misc_funct.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2020 Thomas Schmitt, + Copyright 2007-2024 Thomas Schmitt, Provided under GPL version 2 or later. @@ -510,7 +510,7 @@ int Decode_ecma119_format(struct tm *erg, char *text, int flag) int Decode_xorriso_timestamp(struct tm *erg, char *code, int flag) - /* 2007.11.07.225624 or 2007_11_07_225624 */ +/* 2007.11.07.225624 or 2007_11_07_225624 */ { char buf[20]; int year,month,day,hour= 0,minute= 0,second= 0, i, l, mem; @@ -585,7 +585,7 @@ done:; } -time_t Decode_timestring(char *code, time_t *date, int flag) +int Decode_timestring(char *code, time_t *date, int flag) { char scale_chr; double value,seconds; @@ -643,8 +643,8 @@ time_t Decode_timestring(char *code, time_t *date, int flag) seconds_valid= 1; goto completed; } else if((ret= Decode_ecma119_format(&result_tm, code, 0)) > 0) { - /* YYYYMMDDhhmmsscc[UTC] */ - /* 2010040711405800UTC */ + /* YYYYMMDDhhmmsscc[LOC] */ + /* 2010040711405800LOC */ seconds= mktime(&result_tm); if(ret == 1) { @@ -672,6 +672,88 @@ completed:; } +int Decode_ecma119_17byte(time_t *seconds, char *code, int flag) +/* YYYYMMDDhhmmssccN (N = 15 minutes Offset from GMT: -48 West to +52 east) */ +{ + int ret; + char digits[17]; + struct tm erg; + + *seconds= 0; + strncpy(digits, code, 16); + digits[16]= 0; + ret= Decode_ecma119_format(&erg, digits, 0); + if(ret <= 0) + return(ret); + *seconds= mktime(&erg); + *seconds-= (int) code[16] * 60 * 15; + + /* Convert from local time to GMT */ +#ifdef HAVE_TM_GMTOFF + *seconds+= erg.tm_gmtoff; +#else + if(erg.tm_isdst < 0) + erg.tm_isdst = 0; +#ifndef Libburnia_timezonE +#define Libburnia_timezonE timezone +#endif + *seconds-= Libburnia_timezonE - erg.tm_isdst * 3600; +#endif + + return(1); +} + + +int Encode_ecma119_17byte(time_t seconds, char *centi_seconds, + char *code, int flag) +{ + struct tm *gmt; + + gmt= gmtime(&seconds); + if(gmt == NULL) + return(0); + sprintf(code, "%4.4d", 1900 + gmt->tm_year); + sprintf(code + 4, "%2.2d", gmt->tm_mon + 1); + sprintf(code + 6, "%2.2d", gmt->tm_mday); + sprintf(code + 8, "%2.2d", gmt->tm_hour); + sprintf(code + 10, "%2.2d", gmt->tm_min); + sprintf(code + 12, "%2.2d", gmt->tm_sec); + strncpy(code + 14, centi_seconds, 2); + code[16]= code[17]= 0; + return(1); +} + + +/* flag: bit0= format to xorriso timestamp in local time + bit1= truncate centiseconds (with !bit0) +*/ +int Untimezone_ecma119_17byte(char *code, int flag) +{ + int ret; + time_t seconds; + char new_code[18]; + + if(code[16] == 0 && !(flag & 1)) + return(1); + ret= Decode_ecma119_17byte(&seconds, code, 0); + if(ret <= 0) + return(ret); + if(flag & 1) { + /* xorriso timestamp format in local time */ + if(Ftimetxt(seconds, new_code, 1 | 2) == NULL) + return(0); + } else { + /* ECMA-119 17 byte format in GMT */ + ret= Encode_ecma119_17byte(seconds, flag & 2 ? "00" : code + 14, new_code, + 0); + if(ret <= 0) + return(ret); + } + strcpy(code, new_code); + return(1); +} + + /* @param flag bit0=with year and seconds bit1-3= form 0= ls -l format diff --git a/xorriso/misc_funct.h b/xorriso/misc_funct.h index 8a8cab75..cad307dc 100644 --- a/xorriso/misc_funct.h +++ b/xorriso/misc_funct.h @@ -54,10 +54,17 @@ double Scanf_io_size(char *text, int flag); */ int Compare_text_lines(char *text1, char *text2, int *diff_count, int flag); -time_t Decode_timestring(char *code, time_t *date, int flag); +int Decode_timestring(char *code, time_t *date, int flag); int Decode_ecma119_format(struct tm *erg, char *text, int flag); +int Decode_ecma119_17byte(time_t *seconds, char *text, int flag); + +int Untimezone_ecma119_17byte(char *code, int flag); + +int Encode_ecma119_17byte(time_t seconds, char *centi_seconds, + char *code, int flag); + int Wait_for_input(int fd, int microsec, int flag); int Fileliste__target_source_limit(char *line, char sep, char **limit_pt, diff --git a/xorriso/opts_p_z.c b/xorriso/opts_p_z.c index 84771bff..c6cd50ae 100644 --- a/xorriso/opts_p_z.c +++ b/xorriso/opts_p_z.c @@ -1691,6 +1691,32 @@ int Xorriso_option_toc(struct XorrisO *xorriso, int flag) } +/* Command -toc_info_type */ +int Xorriso_option_toc_info_type(struct XorrisO *xorriso, char *mode, int flag) +{ + if(strcmp(mode, "volid") == 0 || mode[0] == 0) { + xorriso->toc_info_type= 1; + } else if(strcmp(mode, "creation_time") == 0 || + strcmp(mode, "ctime") == 0 || + strcmp(mode, "creation_time_gmt") == 0 || + strcmp(mode, "ctime_gmt") == 0) { + xorriso->toc_info_type= 3; + xorriso->toc_time_form= (strstr(mode, "_gmt") == NULL); + } else if(strcmp(mode, "modification_time") == 0 || + strcmp(mode, "mtime") == 0 || + strcmp(mode, "modification_time_gmt") == 0 || + strcmp(mode, "mtime_gmt") == 0) { + xorriso->toc_info_type= 4; + xorriso->toc_time_form= (strstr(mode, "_gmt") == NULL); + } else { + sprintf(xorriso->info_text, "-toc_info_type: unknown type '%s'", mode); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + return(1); +} + + /* Option -toc_of */ int Xorriso_option_toc_of(struct XorrisO *xorriso, char *which, int flag) { diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 09e4f7e7..490c1f99 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2022 Thomas Schmitt, + Copyright 2007-2024 Thomas Schmitt, Provided under GPL version 2 or later. @@ -559,7 +559,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv, "session_log","setfattr_list","setfattr_listi", "sh_style_result","signal_handling","sleep", "speed","split_size","status","status_history_max", - "stdio_sync","stream_recording","system_id","temp_mem_limit","toc_of", + "stdio_sync","stream_recording","system_id","temp_mem_limit", + "toc_info_type", "toc_of", "uid","unregister_filter","use_immed_bit","use_readline", "volid","volset_id", "write_type","xattr","zisofs", @@ -709,7 +710,7 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso, "dev", "indev", "outdev", "* Drive and media related inquiry actions (2):", - "list_profiles", "list_formats", "list_speeds", + "list_profiles", "list_formats", "list_speeds", "toc_info_type", "toc", "toc_of", "pvd_info", "report_system_area", "report_el_torito", "assess_indev_features", @@ -1962,6 +1963,10 @@ if (0) { } else if(strcmp(cmd,"toc")==0) { Xorriso_option_toc(xorriso, 0); + } else if(strcmp(cmd,"toc_info_type")==0) { + (*idx)++; + Xorriso_option_toc_info_type(xorriso, arg1, 0); + } else if(strcmp(cmd,"toc_of")==0) { (*idx)++; Xorriso_option_toc_of(xorriso, arg1, 0); @@ -2615,13 +2620,13 @@ ex:; */ int Xorriso_source_date_epoch(struct XorrisO *xorriso, int flag) { + int ret; /* num_text must be able to take the sprintf output of "%.f". num_text + 12 must be able to take "%d" with a 64 bit int. */ char *sec_text, num_text[40]; double dsec= -1.0; time_t tsec; - struct tm *gmt; sec_text= getenv("SOURCE_DATE_EPOCH"); if(sec_text == NULL) @@ -2641,17 +2646,10 @@ malformed:; 0, "HINT", 0); return(0); } - gmt= gmtime(&tsec); - if(gmt == NULL) - goto malformed; - sprintf(num_text, "%4.4d", 1900 + gmt->tm_year); - sprintf(num_text + 4, "%2.2d", gmt->tm_mon + 1); - sprintf(num_text + 6, "%2.2d", gmt->tm_mday); - sprintf(num_text + 8, "%2.2d", gmt->tm_hour); - sprintf(num_text + 10, "%2.2d", gmt->tm_min); - sprintf(num_text + 12, "%2.2d", gmt->tm_sec); - strcpy(num_text + 14, "00"); + ret= Encode_ecma119_17byte(tsec, "00", num_text, 0); + if(ret <= 0) + goto malformed; strcpy(xorriso->vol_uuid, num_text); xorriso->gpt_guid_mode= 2; /* Disk GUID from vol_uuid */ strcpy(xorriso->all_file_dates, "set_to_mtime"); diff --git a/xorriso/text_io.c b/xorriso/text_io.c index 598220ee..bb736da7 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -3018,6 +3018,14 @@ 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->toc_info_type == 1); + sprintf(line, "-toc_info_type %s%s\n", + xorriso->toc_info_type == 3 ? "creation_time" : + xorriso->toc_info_type == 4 ? "modification_time" : "volid", + xorriso->toc_time_form == 0 ? "_gmt" : ""); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso, filter, fp, flag & 2); + is_default= (xorriso->mount_opts_flag == 0); sprintf(line,"-mount_opts %s\n", xorriso->mount_opts_flag & 1 ? "shared" : "exclusive"); diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 44dba057..892a8b59 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, May 12, 2024" +.TH XORRISO 1 "Version 1.5.7, Jun 28, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -4573,6 +4573,20 @@ summary of drive state and medium content is printed. As further difference to \-toc, this command does not emit FAILURE events if the desired drive is not acquired. .TP +\fB\-toc_info_type\fR typetext +Choose which information to show in the rightmost column of \-toc and \-toc_of. +.br +Type "volid" is the default. It shows the Volume Ids of the listed ISO +sessions. +.br +Type "creation_time" or "ctime" chooses the Creation Times. +.br +Type "modification_time" or "mtime" chooses the Modification Times. +.br +Appending "_gmt" to a time type text causes the time information +to be shown in ECMA\-119 format YYYYMMDDhhmmsscc in timezone GMT. Else it is +shown as timestamps YYYY.MM.DD.hhmmss in the local timezone of the system. +.TP \fB\-assess_indev_features\fR "plain"|"cmd"|"as_mkisofs"|"replay" Inspect the filesystem on \-indev for the presence of Rock Ridge, Joliet, or ISO 9660:1999, and for traces of other write options which seem to have been @@ -4690,8 +4704,10 @@ This depends on medium type, number of recorded sessions, and drive habits. Print various ID strings and timestamps which can be found in loaded ISO images. Some of the IDs may be changed by commands like \-volid or \-publisher. For these IDs \-pvd_info reports what would be written with the next \-commit. -The timestamps get not automatically propagated from loaded image to newly -written image. The ones for new images may be set by command \-volume_date. +.br +The timestamps get shown in ECMA\-119 format YYYYMMDDhhmmsscc and timezone GMT. +They do not get automatically propagated from loaded image to newly written +image. The ones for new images may be set by command \-volume_date. See there for the meaning of the particular timestamps. .TP \fB\-report_el_torito\fR mode diff --git a/xorriso/xorriso.h b/xorriso/xorriso.h index 2630081a..4c163c32 100644 --- a/xorriso/xorriso.h +++ b/xorriso/xorriso.h @@ -2,7 +2,7 @@ /* xorriso - libisoburn higher level API which creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2023 Thomas Schmitt, + Copyright 2007-2024 Thomas Schmitt, Provided under GPL version 2 or later. @@ -1216,7 +1216,7 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag); Xorriso_eval_problem_status() One should follow its eventual advice to abort. - Commands with a varying number of arguments get then passed like + Commands with a varying number of arguments get them passed like Xorriso_interpreter(). E.g.: int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv, int *idx, int flag); @@ -2145,6 +2145,11 @@ int Xorriso_option_temp_mem_limit(struct XorrisO *xorriso, char *size, /* @since 0.1.0 */ int Xorriso_option_toc(struct XorrisO *xorriso, int flag); +/* Command -toc_info_type */ +/* @since 1.5.8 */ +int Xorriso_option_toc_info_type(struct XorrisO *xorriso, char *mode, + int flag); + /* Command -toc_of */ /* @since 1.2.6 */ int Xorriso_option_toc_of(struct XorrisO *xorriso, char *which, int flag); diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 2cb365be..0301fd9a 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -3844,6 +3844,18 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Comm short summary of drive state and medium content is printed. As further difference to -toc, this command does not emit FAILURE events if the desired drive is not acquired. +-toc_info_type typetext + Choose which information to show in the rightmost column of -toc + and -toc_of. + Type "volid" is the default. It shows the Volume Ids of the listed + ISO sessions. + Type "creation_time" or "ctime" chooses the Creation Times. + Type "modification_time" or "mtime" chooses the Modification Times. + + Appending "_gmt" to a time type text causes the time information to + be shown in ECMA-119 format YYYYMMDDhhmmsscc in timezone GMT. Else + it is shown as timestamps YYYY.MM.DD.hhmmss in the local timezone + of the system. -assess_indev_features "plain"|"cmd"|"as_mkisofs"|"replay" Inspect the filesystem on -indev for the presence of Rock Ridge, Joliet, or ISO 9660:1999, and for traces of other write options @@ -3941,10 +3953,12 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Comm Print various ID strings and timestamps which can be found in loaded ISO images. Some of the IDs may be changed by commands like -volid or -publisher. For these IDs -pvd_info reports what would - be written with the next -commit. The timestamps get not - automatically propagated from loaded image to newly written image. - The ones for new images may be set by command -volume_date. See - there for the meaning of the particular timestamps. + be written with the next -commit. + The timestamps get shown in ECMA-119 format YYYYMMDDhhmmsscc and + timezone GMT. They do not get automatically propagated from loaded + image to newly written image. The ones for new images may be set + by command -volume_date. See there for the meaning of the + particular timestamps. -report_el_torito mode With mode *plain* print a report about the information found in the @@ -5765,7 +5779,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -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) -* -assess_indev_features shows filesystem features: Inquiry. (line 49) +* -assess_indev_features shows filesystem features: Inquiry. (line 61) * -auto_charset learns character set from image: Loading. (line 117) * -backslash_codes enables backslash conversion: Scripting. (line 71) * -ban_stdio_write demands real drive: Loading. (line 345) @@ -5892,8 +5906,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -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) -* -mount_cmd composes mount command line: Inquiry. (line 83) -* -mount_cmd controls mount command: Inquiry. (line 99) +* -mount_cmd composes mount command line: Inquiry. (line 95) +* -mount_cmd controls mount command: Inquiry. (line 111) * -msg_op perform operations on program messages: Frontend. (line 27) * -mv renames files in ISO image: Manip. (line 37) * -mv renames single file in ISO image: Manip. (line 31) @@ -5919,12 +5933,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -print prints result text line: Scripting. (line 102) * -print_info prints message text line: Scripting. (line 104) * -print_mark prints synchronizing text line: Scripting. (line 106) -* -print_size predicts image size: Inquiry. (line 120) +* -print_size predicts image size: Inquiry. (line 132) * -prog sets program name: Frontend. (line 176) * -prog_help prints help text: Frontend. (line 178) * -prompt prompts for enter key: Scripting. (line 110) * -publisher sets publisher id: SetWrite. (line 213) -* -pvd_info shows image id strings: Inquiry. (line 142) +* -pvd_info shows image id strings: Inquiry. (line 154) * -pwd tells working directory in ISO: Navigate. (line 19) * -pwdx tells working directory on disk: Navigate. (line 21) * -quoted_not_list sets exclusions: SetInsert. (line 74) @@ -5935,8 +5949,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -read_speed set read speed: Loading. (line 11) * -reassure enables confirmation question: DialogCtl. (line 29) * -report_about controls verbosity: Exception. (line 53) -* -report_el_torito shows Boot Catalog: Inquiry. (line 150) -* -report_system_area shows MBR, GPT, and alike: Inquiry. (line 185) +* -report_el_torito shows Boot Catalog: Inquiry. (line 164) +* -report_system_area shows MBR, GPT, and alike: Inquiry. (line 199) * -return_with controls exit value: Exception. (line 38) * -rm deletes files from ISO image: Manip. (line 20) * -rmdir deletes ISO directory: Manip. (line 29) @@ -5951,7 +5965,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -scsi_dev_family choose Linux device file type: AqDrive. (line 95) * -scsi_log reports SCSI commands: Scripting. (line 143) * -session_log logs written sessions: Scripting. (line 134) -* -session_string composes session info line: Inquiry. (line 108) +* -session_string composes session info line: Inquiry. (line 120) * -setfacl sets ACL in ISO image: Manip. (line 68) * -setfacl_list sets ACL in ISO image: Manip. (line 94) * -setfacl_r sets ACL in ISO image: Manip. (line 92) @@ -5974,9 +5988,10 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -stdio_sync controls stdio buffer: SetWrite. (line 490) * -stream_recording controls defect management: SetWrite. (line 410) * -system_id sets system id: SetWrite. (line 226) -* -tell_media_space reports free space: Inquiry. (line 132) +* -tell_media_space reports free space: Inquiry. (line 144) * -temp_mem_limit curbs memory consumption: Scripting. (line 96) * -toc shows list of sessions: Inquiry. (line 27) +* -toc_info_type shows list of sessions: Inquiry. (line 49) * -toc_of shows list of sessions: Inquiry. (line 41) * -truncate_overwritable activates older session: Writing. (line 167) * -uid sets global ownership: SetWrite. (line 311) @@ -6090,7 +6105,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * 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) -* Filesytem features, show, -assess_indev_features: Inquiry. (line 49) +* 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) * Filter, ban registration, -close_filter_list: Filter. (line 50) @@ -6132,9 +6147,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Image, set volume id, -volid: SetWrite. (line 189) * Image, set volume set id, -volset_id: SetWrite. (line 209) * Image, set volume timestamp, -volume_date: SetWrite. (line 232) -* Image, show Boot Catalog: Inquiry. (line 150) -* Image, show id strings, -pvd_info: Inquiry. (line 142) -* Image, show MBR, GPT, and alike, -pvd_info: Inquiry. (line 185) +* Image, show Boot Catalog: Inquiry. (line 164) +* Image, show id strings, -pvd_info: Inquiry. (line 154) +* Image, show MBR, GPT, and alike, -pvd_info: Inquiry. (line 199) * Image, _definition: Model. (line 9) * Input Character Set, _definition: Charset. (line 25) * Insert, enable overwriting, -overwrite: SetInsert. (line 140) @@ -6269,11 +6284,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 61) * Rock Ridge, _definition: Extras. (line 6) * Session, altered start address, -displacement: Loading. (line 78) -* Session, info string, -session_string: Inquiry. (line 108) +* 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) -* Session, mount command line, -mount_cmd: Inquiry. (line 83) -* Session, mount parameters, -mount_opts: Inquiry. (line 99) +* Session, mount command line, -mount_cmd: Inquiry. (line 95) +* Session, mount parameters, -mount_opts: Inquiry. (line 111) * Session, select as input, -load: Loading. (line 54) * Session, _definition: Model. (line 6) * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26) @@ -6281,7 +6296,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * SUN SPARC boot images, activation: Bootable. (line 517) * Symbolic link, create, -lns: Insert. (line 192) * 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, 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) * Timestamps, set in ISO image, -alter_date_r: Manip. (line 174) @@ -6307,12 +6325,12 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Write, enable HFS+, -hfsplus: SetWrite. (line 14) * Write, enable Joliet, -joliet: SetWrite. (line 10) * Write, fifo size, -fs: SetWrite. (line 500) -* Write, free space, -tell_media_space: Inquiry. (line 132) +* Write, free space, -tell_media_space: Inquiry. (line 144) * Write, log problematic disk files, -errfile_log: Scripting. (line 116) * Write, log written sessions, -session_log: Scripting. (line 134) * Write, padding image, -padding: SetWrite. (line 528) * Write, pending ISO image, -commit: Writing. (line 27) -* Write, predict image size, -print_size: Inquiry. (line 120) +* Write, predict image size, -print_size: Inquiry. (line 132) * Write, set speed, -speed: SetWrite. (line 392) * Write, simulation, -dummy: SetWrite. (line 497) * Write, TAO or SAO/DAO, -write_type: SetWrite. (line 521) @@ -6353,35 +6371,35 @@ Node: Charset195309 Node: Exception198638 Node: DialogCtl204767 Node: Inquiry207369 -Node: Navigate219241 -Node: Verify227948 -Node: Restore239097 -Node: Emulation251304 -Node: Scripting261760 -Node: Frontend269543 -Node: Examples279169 -Node: ExDevices280347 -Node: ExCreate281008 -Node: ExDialog282308 -Node: ExGrowing283579 -Node: ExModifying284388 -Node: ExBootable284898 -Node: ExCharset285453 -Node: ExPseudo286349 -Node: ExCdrecord287276 -Node: ExMkisofs287596 -Node: ExGrowisofs289493 -Node: ExException290646 -Node: ExTime291104 -Node: ExIncBackup291562 -Node: ExRestore295588 -Node: ExRecovery296534 -Node: Files297106 -Node: Environ298440 -Node: Seealso299188 -Node: Bugreport299905 -Node: Legal300496 -Node: CommandIdx301508 -Node: ConceptIdx319406 +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  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 57769bab..88882364 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, May 12, 2024" +@c man .TH XORRISO 1 "Version 1.5.7, Jun 28, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -5207,6 +5207,7 @@ then both tables-of-content get shown. @c man .TP @item -toc_of "in"|"out"|"all"[":short"] @kindex -toc_of shows list of sessions +@cindex Table-of-content, show parts of, -toc_of Like command -toc but explicitly choosing which drive's table-of-content to show. "in" shows -indev or -dev, "out" shows -outdev or -dev, "all" shows the same as -toc. @@ -5217,6 +5218,22 @@ summary of drive state and medium content is printed. As further difference to -toc, this command does not emit FAILURE events if the desired drive is not acquired. @c man .TP +@item -toc_info_type typetext +@kindex -toc_info_type shows list of sessions +@cindex Table-of-content, choose info to show, -toc_info_type +Choose which information to show in the rightmost column of -toc and -toc_of. +@* +Type "volid" is the default. It shows the Volume Ids of the listed ISO +sessions. +@* +Type "creation_time" or "ctime" chooses the Creation Times. +@* +Type "modification_time" or "mtime" chooses the Modification Times. +@* +Appending "_gmt" to a time type text causes the time information +to be shown in ECMA-119 format YYYYMMDDhhmmsscc in timezone GMT. Else it is +shown as timestamps YYYY.MM.DD.hhmmss in the local timezone of the system. +@c man .TP @item -assess_indev_features "plain"|"cmd"|"as_mkisofs"|"replay" @kindex -assess_indev_features shows filesystem features @cindex Filesytem features, show, -assess_indev_features @@ -5348,8 +5365,10 @@ This depends on medium type, number of recorded sessions, and drive habits. Print various ID strings and timestamps which can be found in loaded ISO images. Some of the IDs may be changed by commands like -volid or -publisher. For these IDs -pvd_info reports what would be written with the next -commit. -The timestamps get not automatically propagated from loaded image to newly -written image. The ones for new images may be set by command -volume_date. +@* +The timestamps get shown in ECMA-119 format YYYYMMDDhhmmsscc and timezone GMT. +They do not get automatically propagated from loaded image to newly written +image. The ones for new images may be set by command -volume_date. See there for the meaning of the particular timestamps. @c man .TP @item -report_el_torito mode diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 47459220..6bac7d90 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -905,10 +905,21 @@ struct XorrisO { /* the global context of xorriso */ int result_page_counter; int result_open_line_len; - /* info (stderr, I:) */ char info_text[10*SfileadrL]; + /* info return mode for isoburn_read_iso_head_v2() with -toc: + 1= volume id + 3= creation time + 4= modification type + */ + int toc_info_type; + /* How to present toc_info_type 2 and 3: + 0= in ECMA-119 format YYYYMMDDhhmmsscc rectified to GMT + 1= in xorriso format YYY.MM.DD.hhmmss in local time + */ + int toc_time_form; + }; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index a4efc86f..adaa80c1 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.06.28.135605" +#define Xorriso_timestamP "2024.06.28.144204"