From 9c907b1531704fac1aa0042727e8dd62b7fcd6c7 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 25 Sep 2015 17:15:41 +0000 Subject: [PATCH] Took into respect possible truncate mode change by AAIP variable isofs.nt --- xorriso/drive_mgt.c | 6 ++ xorriso/iso_manip.c | 17 ++++- xorriso/opts_d_h.c | 8 ++- xorriso/xorriso.1 | 24 +++++-- xorriso/xorriso.info | 123 +++++++++++++++++++----------------- xorriso/xorriso.texi | 24 +++++-- xorriso/xorriso_timestamp.h | 2 +- 7 files changed, 125 insertions(+), 79 deletions(-) diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 62dec8d6..57f5c6b3 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -223,6 +223,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr, { int ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba, ext; int lba, track, session, params_flag, adr_mode, read_ret, start_lba; + int truncate_mode; uint32_t size, offst; struct burn_drive_info *dinfo= NULL, *out_dinfo= NULL, *in_dinfo= NULL; struct burn_drive *drive= NULL, *out_drive= NULL, *in_drive= NULL; @@ -587,6 +588,11 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr, xorriso->in_sector_map= NULL; Xorriso_set_image_severities(xorriso, 0); + /* Might have changed due to isofs.nt */ + iso_image_get_truncate_mode(volset, &truncate_mode, + &(xorriso->file_name_limit)); + Xorriso_process_msg_queues(xorriso,0); + Xorriso_update_volid(xorriso, 0); strncpy(xorriso->application_id, un0(iso_image_get_application_id(volset)), 128); diff --git a/xorriso/iso_manip.c b/xorriso/iso_manip.c index 942ca164..197ab325 100644 --- a/xorriso/iso_manip.c +++ b/xorriso/iso_manip.c @@ -4262,6 +4262,8 @@ ex: } +/* @param flag bit0= allow to increase limit for loaded image +*/ int Xorriso_set_file_name_limit(struct XorrisO *xorriso, int value, int flag) { int ret; @@ -4271,10 +4273,19 @@ int Xorriso_set_file_name_limit(struct XorrisO *xorriso, int value, int flag) if(ret < 0) return(ret); if (volume != NULL) { - Xorriso_msgs_submit(xorriso, 0, - "-file_name_limit cannot be changed while an ISO images is present", + if(flag & 1) { + + /* >>> check whether there are non-refreshable truncated names */; + + /* >>> refresh truncation of names */; + + iso_image_set_truncate_mode(volume, 1, value); + } else { + Xorriso_msgs_submit(xorriso, 0, + "-file_name_limit may not be changed because a drive is acquired", 0, "SORRY", 0); - return(0); + return(0); + } } xorriso->file_name_limit= value; return(1); diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index d6755d3c..d6556f32 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -652,17 +652,19 @@ int Xorriso_option_extract_cut(struct XorrisO *xorriso, char *iso_rr_path, int Xorriso_option_file_name_limit(struct XorrisO *xorriso, char *value, int flag) { - int ret; + int ret, sub_flag= 0; double num; - num= Scanf_io_size(value, 0); + if(value[0] == '+') + sub_flag|= 1; + num= Scanf_io_size(value + (sub_flag & 1), 0); if(num < 64 || num > 255) { sprintf(xorriso->info_text, "-file_name_limit: Value '%s' out of range [64..255]", value); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); return(0); } - ret= Xorriso_set_file_name_limit(xorriso, (int) num, 0); + ret= Xorriso_set_file_name_limit(xorriso, (int) num, sub_flag); return(ret > 0); } diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index b38d72b8..0fa3e79e 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.4.1, Sep 22, 2015" +.TH XORRISO 1 "Version 1.4.1, Sep 25, 2015" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -984,7 +984,7 @@ The speed advantage appears only if the loaded session was produced with Note that \-disk_dev_ino "off" is totally in effect only if \-hardlinks is "off", too. .TP -\fB\-file_name_limit\fR number +\fB\-file_name_limit\fR [+]number Set the maximum permissible length for file names in the range of 64 to 255. Path components which are longer than the given number will get truncated and have their last 33 bytes overwritten by a colon ':' and the @@ -994,20 +994,30 @@ leading bytes replaced by '_'. .br iso_rr_paths with the long components will still be able to access the file paths with truncated components. To avoid confusion by having both -truncated and untrancated names in the same directory, it is not possible -to change this setting after a drive was acquired. All file names get +truncated and untruncated names in the same directory, it is highly deprecated +to change this setting after a drive was acquired. All file names must get truncated by the same length. .br +Normally this command will produce a SORRY event if it is executed while a +drive is aquired. One may override this ban by prepending the character "+" +to the argument of \-file_name_limit. +.br +If writing of xattr is enabled, then the length will be stored in "isofs.nt" +of the root directory. +If reading of xattr is enabled and "isofs.nt" is found, then the found length +will get into effect if it is smaller than the current setting +of \-file_name_limit. +.br File name patterns will only work if they match the truncated name. This might change in future. .br +Files with truncated names get deleted and re\-added unconditionally +during \-update and \-update_r. This might change in future. +.br Linux kernels up to at least 4.1 misrepresent names of length 254 and 255. If you expect such names in or under disk_paths and plan to mount the ISO by such Linux kernels, consider to set \-file_name_limit 253. Else just avoid names longer than 253 characters. -.br -Files with truncated names get deleted and re\-added unconditionally -during \-update and \-update_r. This might change in future. .TP \fB\-rom_toc_scan\fR "on"|"force"|"off"[:"emul_off"][:"emul_wide"] Read\-only drives do not tell the actual media type but show any media as diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index b1717bf7..44901db0 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -886,7 +886,7 @@ activate them only after image loading. with -disk_dev_ino "on" too. Note that -disk_dev_ino "off" is totally in effect only if -hardlinks is "off", too. --file_name_limit number +-file_name_limit [+]number Set the maximum permissible length for file names in the range of 64 to 255. Path components which are longer than the given number will get truncated and have their last 33 bytes overwritten by a @@ -895,18 +895,25 @@ activate them only after image loading. characters will get their leading bytes replaced by '_'. iso_rr_paths with the long components will still be able to access the file paths with truncated components. To avoid confusion by - having both truncated and untrancated names in the same directory, - it is not possible to change this setting after a drive was - acquired. All file names get truncated by the same length. + having both truncated and untruncated names in the same directory, + it is highly deprecated to change this setting after a drive was + acquired. All file names must get truncated by the same length. + Normally this command will produce a SORRY event if it is executed + while a drive is aquired. One may override this ban by prepending + the character "+" to the argument of -file_name_limit. + If writing of xattr is enabled, then the length will be stored in + "isofs.nt" of the root directory. If reading of xattr is enabled + and "isofs.nt" is found, then the found length will get into effect + if it is smaller than the current setting of -file_name_limit. File name patterns will only work if they match the truncated name. This might change in future. + Files with truncated names get deleted and re-added unconditionally + during -update and -update_r. This might change in future. Linux kernels up to at least 4.1 misrepresent names of length 254 and 255. If you expect such names in or under disk_paths and plan to mount the ISO by such Linux kernels, consider to set -file_name_limit 253. Else just avoid names longer than 253 characters. - Files with truncated names get deleted and re-added unconditionally - during -update and -update_r. This might change in future. -rom_toc_scan "on"|"force"|"off"[:"emul_off"][:"emul_wide"] Read-only drives do not tell the actual media type but show any media as ROM (e.g. as DVD-ROM). The session history of MMC @@ -5026,11 +5033,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -assert_volid rejects undesired images: Loading. (line 111) * -auto_charset learns character set from image: Loading. (line 123) * -backslash_codes enables backslash conversion: Scripting. (line 71) -* -ban_stdio_write demands real drive: Loading. (line 305) +* -ban_stdio_write demands real drive: Loading. (line 312) * -biblio_file sets biblio file name: SetWrite. (line 234) * -blank erases media: Writing. (line 57) * -boot_image controls bootability: Bootable. (line 65) -* -calm_drive reduces drive activity: Loading. (line 295) +* -calm_drive reduces drive activity: Loading. (line 302) * -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) @@ -5064,7 +5071,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -cp_rx copies file trees to disk: Restore. (line 103) * -cp_rx copies file trees to disk <1>: Restore. (line 111) * -cut_out inserts piece of data file: Insert. (line 118) -* -data_cache_size adjusts read cache size: Loading. (line 321) +* -data_cache_size adjusts read cache size: Loading. (line 328) * -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) @@ -5080,7 +5087,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -dusx show directory size on disk: Navigate. (line 85) * -dux show directory size on disk: Navigate. (line 81) * -dvd_obs set write block size: SetWrite. (line 314) -* -early_stdio_test classifies stdio drives: Loading. (line 309) +* -early_stdio_test classifies stdio drives: Loading. (line 316) * -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 214) * -eject ejects drive tray: Writing. (line 50) * -end writes pending session and ends program: Scripting. (line 151) @@ -5197,7 +5204,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top (line 51) * -rollback discards pending changes: Writing. (line 9) * -rollback_end ends program without writing: Scripting. (line 154) -* -rom_toc_scan searches for sessions: Loading. (line 267) +* -rom_toc_scan searches for sessions: Loading. (line 274) * -rr_reloc_dir sets name of relocation directory: SetWrite. (line 144) * -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179) * -scsi_log reports SCSI commands: Scripting. (line 143) @@ -5304,8 +5311,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: Loading. (line 73) -* Drive, classify stdio, -early_stdio_test: Loading. (line 309) -* Drive, demand real MMC, -ban_stdio_write: Loading. (line 305) +* Drive, classify stdio, -early_stdio_test: Loading. (line 316) +* Drive, demand real MMC, -ban_stdio_write: Loading. (line 312) * Drive, eject tray, -eject: Writing. (line 50) * Drive, for input and output, -dev: AqDrive. (line 12) * Drive, for input, -indev: AqDrive. (line 23) @@ -5313,7 +5320,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 177) -* Drive, reduce activity, -calm_drive: Loading. (line 295) +* Drive, reduce activity, -calm_drive: Loading. (line 302) * Drive, report SCSI commands, -scsi_log: Scripting. (line 143) * Drive, write and eject, -commit_eject: Writing. (line 53) * Drive, _definition: Drives. (line 6) @@ -5352,7 +5359,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * HFS+ serial number: Bootable. (line 339) * hidden, set in ISO image, -hide: Manip. (line 171) * HP-PA boot sector, production: Bootable. (line 314) -* Image reading, cache size, -data_cache_size: Loading. (line 321) +* Image reading, cache size, -data_cache_size: Loading. (line 328) * Image, demand volume ID, -assert_volid: Loading. (line 111) * Image, discard pending changes, -rollback: Writing. (line 9) * Image, filesystem to load, -read_fs: Loading. (line 102) @@ -5510,7 +5517,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * SUN SPARC boot images, activation: Bootable. (line 377) * Symbolic link, create, -lns: Insert. (line 160) * System area, _definition: Bootable. (line 184) -* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 267) +* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 274) * Table-of-content, show, -toc: Inquiry. (line 27) * Timestamps, set in ISO image, -alter_date: Manip. (line 136) * Timestamps, set in ISO image, -alter_date_r: Manip. (line 168) @@ -5568,47 +5575,47 @@ Node: Commands24952 Node: ArgSort26629 Node: AqDrive28123 Node: Loading31178 -Node: Insert50599 -Node: SetInsert60824 -Node: Manip69675 -Node: CmdFind79458 -Node: Filter97553 -Node: Writing102175 -Node: SetWrite112330 -Node: Bootable135274 -Node: Jigdo157802 -Node: Charset162061 -Node: Exception165388 -Node: DialogCtl171517 -Node: Inquiry174119 -Node: Navigate182569 -Node: Verify190864 -Node: Restore200741 -Node: Emulation209354 -Node: Scripting219764 -Node: Frontend227546 -Node: Examples237181 -Node: ExDevices238359 -Node: ExCreate239020 -Node: ExDialog240320 -Node: ExGrowing241591 -Node: ExModifying242400 -Node: ExBootable242910 -Node: ExCharset243465 -Node: ExPseudo244361 -Node: ExCdrecord245288 -Node: ExMkisofs245608 -Node: ExGrowisofs246965 -Node: ExException248119 -Node: ExTime248577 -Node: ExIncBackup249035 -Node: ExRestore253061 -Node: ExRecovery254007 -Node: Files254579 -Node: Seealso255913 -Node: Bugreport256628 -Node: Legal257219 -Node: CommandIdx258231 -Node: ConceptIdx275273 +Node: Insert51099 +Node: SetInsert61324 +Node: Manip70175 +Node: CmdFind79958 +Node: Filter98053 +Node: Writing102675 +Node: SetWrite112830 +Node: Bootable135774 +Node: Jigdo158302 +Node: Charset162561 +Node: Exception165888 +Node: DialogCtl172017 +Node: Inquiry174619 +Node: Navigate183069 +Node: Verify191364 +Node: Restore201241 +Node: Emulation209854 +Node: Scripting220264 +Node: Frontend228046 +Node: Examples237681 +Node: ExDevices238859 +Node: ExCreate239520 +Node: ExDialog240820 +Node: ExGrowing242091 +Node: ExModifying242900 +Node: ExBootable243410 +Node: ExCharset243965 +Node: ExPseudo244861 +Node: ExCdrecord245788 +Node: ExMkisofs246108 +Node: ExGrowisofs247465 +Node: ExException248619 +Node: ExTime249077 +Node: ExIncBackup249535 +Node: ExRestore253561 +Node: ExRecovery254507 +Node: Files255079 +Node: Seealso256413 +Node: Bugreport257128 +Node: Legal257719 +Node: CommandIdx258731 +Node: ConceptIdx275773  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index a2d4bf9c..ae150dbe 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.4.1, Sep 22, 2015" +@c man .TH XORRISO 1 "Version 1.4.1, Sep 25, 2015" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1233,7 +1233,7 @@ The speed advantage appears only if the loaded session was produced with Note that -disk_dev_ino "off" is totally in effect only if -hardlinks is "off", too. @c man .TP -@item -file_name_limit number +@item -file_name_limit [+]number @kindex -file_name_limit curbs length of file names @cindex File names, curb length, -file_name_limit Set the maximum permissible length for file names in the range of 64 to 255. @@ -1245,20 +1245,30 @@ leading bytes replaced by '_'. @* iso_rr_paths with the long components will still be able to access the file paths with truncated components. To avoid confusion by having both -truncated and untrancated names in the same directory, it is not possible -to change this setting after a drive was acquired. All file names get +truncated and untruncated names in the same directory, it is highly deprecated +to change this setting after a drive was acquired. All file names must get truncated by the same length. @* +Normally this command will produce a SORRY event if it is executed while a +drive is aquired. One may override this ban by prepending the character "+" +to the argument of -file_name_limit. +@* +If writing of xattr is enabled, then the length will be stored in "isofs.nt" +of the root directory. +If reading of xattr is enabled and "isofs.nt" is found, then the found length +will get into effect if it is smaller than the current setting +of -file_name_limit. +@* File name patterns will only work if they match the truncated name. This might change in future. @* +Files with truncated names get deleted and re-added unconditionally +during -update and -update_r. This might change in future. +@* Linux kernels up to at least 4.1 misrepresent names of length 254 and 255. If you expect such names in or under disk_paths and plan to mount the ISO by such Linux kernels, consider to set -file_name_limit 253. Else just avoid names longer than 253 characters. -@* -Files with truncated names get deleted and re-added unconditionally -during -update and -update_r. This might change in future. @c man .TP @item -rom_toc_scan "on"|"force"|"off"[:"emul_off"][:"emul_wide"] @kindex -rom_toc_scan searches for sessions diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 77f5be31..97b67212 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2015.09.22.204735" +#define Xorriso_timestamP "2015.09.25.171620"