Took into respect possible truncate mode change by AAIP variable isofs.nt

This commit is contained in:
Thomas Schmitt 2015-09-25 17:15:41 +00:00
parent f09b3c1e96
commit 9c907b1531
7 changed files with 125 additions and 79 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
#define Xorriso_timestamP "2015.09.22.204735"
#define Xorriso_timestamP "2015.09.25.171620"