New -find test -name_limit_blocker. Made -file_name_limit ready for loaded ISOs

This commit is contained in:
Thomas Schmitt 2015-09-28 14:17:34 +00:00
parent 7bd6c0fe77
commit 83b32e51f8
11 changed files with 359 additions and 92 deletions

View File

@ -52,6 +52,7 @@ struct ExprtesT {
21= -bad_outname int namespace
22= -use_pattern char *arg1 ("on" [or "ls"], "off")
23= -or_use_pattern char *arg1 ("on" [or "ls"], "off")
24= -name_limit_blocker int *arg1
*/
int test_type;
@ -174,6 +175,12 @@ struct FindjoB {
51= report_sections
52= show_stream_id
53= internal: show_hfs_cmd , controlled by xorriso->show_hfs_cmd*
54= internal: truncate_names
55= internal: unique_trunc_test lenght
test for not uniquely truncatable names,
result delivered in XorrisO.find_unique_trunc_result
56= like 54 but tolerating existing truncated names
57= like 55 but tolerating existing truncated names
*/
int action;
int prune;
@ -185,7 +192,8 @@ struct FindjoB {
uid_t user;
gid_t group;
mode_t mode_and, mode_or;
int type; /* see Xorriso_set_time flag, also used as weight */
int type; /* see Xorriso_set_time flag,
also used as weight and truncate_length */
time_t date;
char *found_path;
off_t estim_upper_size;

View File

@ -2864,6 +2864,16 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
}
ret= 1;
} else if(action == 54 || action == 56) { /* internal: truncate_name */
ret= Xorriso_truncate_uniquely(xorriso, xorriso->file_name_limit,
node, abs_path, show_path,
2 * (action == 56));
} else if(action == 55 || action == 57) {
/* internal: unique_trunc_test length (in type) */
ret= Xorriso_truncate_uniquely(xorriso, type, node, abs_path, show_path,
1 | (2 * (action == 57)));
} else { /* includes : 15 in_iso */
Xorriso_esc_filepath(xorriso, show_path, xorriso->result_line, 0);
strcat(xorriso->result_line, "\n");
@ -3177,6 +3187,11 @@ return:
ftest->boss->use_pattern= (strcmp(arg1, "off") != 0);
value= 0;
break; case 24: /* -name_limit_blocker */
ret= Xorriso_truncate_uniquely(xorriso, *((int *) arg1), node, path, path,
1 | 4);
value= (ret == 0);
break; default:
/* >>> complain about unknown test type */;
@ -4262,32 +4277,186 @@ ex:
}
/* @param flag bit0= allow to increase limit for loaded image
/* @param flag bit0= tolerate truncated files of old length
and mangle collisions
*/
int Xorriso_set_file_name_limit(struct XorrisO *xorriso, int value, int flag)
{
int ret;
IsoImage *volume= NULL;
struct FindjoB *job= NULL;
struct stat dir_stbuf;
ret= Xorriso_get_volume(xorriso, &volume, 1);
if(ret < 0)
return(ret);
if (volume != NULL) {
if(flag & 1) {
/* >>> check whether there are non-refreshable truncated names */;
/* >>> refresh truncation of names */;
iso_image_set_truncate_mode(volume, 1, value);
} else {
goto ex;
if (ret == 1 && volume != NULL) {
/* Check whether there are non-refreshable truncated names */
ret= Findjob_new(&job, "/", 0);
if(ret<=0) {
Xorriso_no_findjob(xorriso, "xorriso", 0);
{ret= -1; goto ex;}
}
Findjob_set_action_type(job, 55 + 2 * (flag & 1), value, 0);
xorriso->find_unique_trunc_result= 2;
ret= Xorriso_findi(xorriso, job, NULL, (off_t) 0, NULL, "/",
&dir_stbuf, 0, 0);
if(ret < 0)
goto ex;
xorriso->request_to_abort= 0;
if(xorriso->find_unique_trunc_result == 0 && !(flag & 1)) {
Xorriso_msgs_submit(xorriso, 0,
"-file_name_limit may not be changed because a drive is acquired",
"-file_name_limit may not be changed because truncated files exist or collisions would occur",
0, "SORRY", 0);
return(0);
ret= 0; goto ex;
}
xorriso->file_name_limit= value;
iso_image_set_truncate_mode(volume, 1, value);
/* truncations are necessary */;
if(xorriso->find_unique_trunc_result == 1) {
Findjob_set_action_type(job, 54 + 2 * (flag & 1),
xorriso->file_name_limit, 0);
xorriso->find_unique_trunc_result= 2;
ret= Xorriso_findi(xorriso, job, NULL, (off_t) 0, NULL, "/",
&dir_stbuf, 0, 0);
if(ret < 0)
goto ex;
if(xorriso->find_unique_trunc_result == 0) {
/* >>> Did not work . What to do ? */;
}
}
}
xorriso->file_name_limit= value;
return(1);
ret= 1;
ex:;
Findjob_destroy(&job, 0);
return(ret);
}
/* @param flag bit0= test for uniqueness, do not change name
bit1= tolerate existing truncated names and mangle collisions
bit2= be silent about non-uniquely truncatables
do not set xorriso->request_to_abort
*/
int Xorriso_truncate_uniquely(struct XorrisO *xorriso, int length,
IsoNode *node, char *abs_path, char *show_path,
int flag)
{
int ret, l, i;
unsigned int mangleno;
char *name, *trunc= NULL, *old_name= NULL;
IsoDir *dir;
IsoNode *collider;
IsoImage *volume= NULL;
name= (char *) iso_node_get_name(node);
l= strlen(name);
/* Check for truncated name */
if(l == xorriso->file_name_limit && l != length && !(flag & 2)) {
i= 0;
if(name[l - 33] == ':') {
for(i= l - 32; i < l; i++)
if((name[i] < '0' || name[i] > '9') &&
(name[i] < 'a' || name[i] > 'f'))
break;
}
if(i == l) {
if(!(flag & 4)) {
sprintf(xorriso->info_text, "Truncated name of current limit found: ");
Text_shellsafe(name, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
}
xorriso->find_unique_trunc_result= 0;
{ret= 0; goto ex;}
}
}
/* Check for need to truncate */
if(l <= length)
{ret= 1; goto ex;}
if(xorriso->find_unique_trunc_result > 1)
xorriso->find_unique_trunc_result= 1;
trunc= strdup(name);
old_name= strdup(name);
if(trunc == NULL || old_name == NULL) {
Xorriso_no_malloc_memory(xorriso, NULL, 0);
ret= -1; goto ex;
}
ret= iso_truncate_leaf_name(1, length, trunc, 0);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso, 0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when truncating file name", 0, "SORRY", 1);
xorriso->find_unique_trunc_result= 0;
{ret= 0; goto ex;}
}
dir= iso_node_get_parent(node);
if(dir != NULL) {
/* (intentionally using deprecated call which does not truncate by itself)*/
ret= iso_dir_get_node(dir, trunc, &collider);
if(ret == 1) {
if((flag & 1) && !(flag & 2)) {
if(!(flag & 4)) {
sprintf(xorriso->info_text,
"Truncated name collides with existing name: ");
Text_shellsafe(name, xorriso->info_text, 1);
strcat(xorriso->info_text, " -> ");
Text_shellsafe(trunc, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
}
xorriso->find_unique_trunc_result= 0;
{ret= 0; goto ex;}
} else {
/* Mangle */
for(mangleno= 0; mangleno < 0xffffffff; mangleno++) {
Sfile_flatten_utf8_heads(trunc, length - 33 - 9, 0);
sprintf(trunc + length - 33 - 9, ":%-8.8X", mangleno);
trunc [length - 33] = ':';
ret= iso_dir_get_node(dir, trunc, &collider);
if(ret == 0)
break;
}
}
}
}
/* If only for testing: done now */
if(flag & 1)
{ret= 1; goto ex;}
if(xorriso->file_name_limit != length)
{ret= -1; goto ex;} /* Programming error */
ret= Xorriso_get_volume(xorriso, &volume, 1);
if(ret < 0)
{ret= -1; goto ex;} /* Programming error */
/* Set truncated name */
ret= iso_image_set_node_name(volume, node, trunc, 0);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso, 0);
xorriso->find_unique_trunc_result= 0;
{ret= 0; goto ex;}
}
Xorriso_set_change_pending(xorriso, 0);
sprintf(xorriso->info_text, "Truncated: ");
Text_shellsafe(old_name, xorriso->info_text, 1);
strcat(xorriso->info_text, " -> ");
Text_shellsafe(trunc, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
ret= 1;
ex:;
if(ret == 0 && (flag & 1) && !(flag & 4))
xorriso->request_to_abort= 1;
Xorriso_free_meM(old_name);
Xorriso_free_meM(trunc);
return(ret);
}

View File

@ -73,5 +73,9 @@ int Xorriso__mark_update_cloner(void *old_data, void **new_data, int flag);
int Xorriso_get_blessing(struct XorrisO *xorriso, IsoNode *node,
int *bless_idx, char bless_code[17], int flag);
int Xorriso_truncate_uniquely(struct XorrisO *xorriso, int length,
IsoNode *node, char *abs_path, char *show_path,
int flag);
#endif /* ! Xorriso_pvt_iso_manip_includeD */

View File

@ -664,6 +664,8 @@ int Xorriso_option_file_name_limit(struct XorrisO *xorriso, char *value,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
if(num == xorriso->file_name_limit)
return(1);
ret= Xorriso_set_file_name_limit(xorriso, (int) num, sub_flag);
return(ret > 0);
}
@ -1009,6 +1011,19 @@ not_enough_arguments:;
argv[i], 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-name_limit_blocker") == 0) {
if(i + 1 >= end_idx)
goto not_enough_arguments;
i++;
sscanf(argv[i], "%d", &count);
if(count < 64 || count > 255) {
sprintf(xorriso->info_text,
"-findi: wrong length with -name_limit_blocker [64...255]");
goto sorry_ex;
}
ret= Findjob_set_num_filter(job, 24, count, 0, 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "-exec")==0) {
if(i+1>=end_idx) {
not_enough_exec_arguments:;
@ -2000,6 +2015,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -lba_range start count, -damaged, -has_acl, -has_xattr,",
" -has_aaip, -has_filter, -has_md5, -has_any_xattr,",
" -has_hfs_crtp, -has_hfs_bless, -bad_outname,",
" -name_limit_blocker",
" -prune, -decision yes|no, -true, -false",
" Operators: -not, -or, -and, -sub, (, -subend, ),",
" -if, -then, -elseif, -else, -endif",

View File

@ -937,3 +937,43 @@ decode:;
}
/* From libisofs:
Find backward from idx the start byte of a possible UTF-8 character.
https://en.wikipedia.org/wiki/UTF-8#Description
*/
static
int find_utf8_start(char *name, int idx, int flag)
{
unsigned char *uname, uch;
int i;
uname= (unsigned char *) name;
if ((uname[idx] & 0xc0) != 0x80)
return idx; /* not an UTF-8 tail byte */
for (i = 0; i < 5 && idx - 1 - i >= 0; i++) {
/* up to deprecated 6-byte codes */
uch = uname[idx - 1 - i];
if ((uch & 0xe0) == 0xc0 || (uch & 0xf0) == 0xe0 ||
(uch & 0xf8) == 0xf0 || (uch & 0xfc) == 0xf8 ||
(uch & 0xfe) == 0xfc)
return (idx - 1 - i); /* UTF-8 start byte found */
if ((uch & 0xc0) != 0x80)
return idx; /* not an UTF-8 tail byte, so no UTF-8 */
}
return idx; /* no UTF-8 start found */
}
int Sfile_flatten_utf8_heads(char *name, int idx, int flag)
{
int neck;
neck = find_utf8_start(name, idx, 0);
if(neck >= idx)
return(2);
for(; neck < idx; neck++)
name[neck] = '_';
return(1);
}

View File

@ -139,5 +139,7 @@ int Sfile_home_adr_s(char *filename, char *fileadr, int fa_size, int flag);
int Sfile_get_dev_fd_no(char *filename, int flag);
int Sfile_flatten_utf8_heads(char *name, int idx, int flag);
#endif /* ! Xorriso_pvt_sfile_includeD */

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 25, 2015"
.TH XORRISO 1 "Version 1.4.1, Sep 28, 2015"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -993,14 +993,17 @@ oversized name. Potential incomplete UTF\-8 characters will get their
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 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.
file paths with truncated components.
.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.
If \-file_name_limit is executed while an ISO tree is present, the file names
in the ISO tree get checked for existing truncated file names of the current
limit and for name collisions between newly truncated files and existing files.
In both cases, the setting will be refused with a SORRY event.
.br
One may lift this ban by prepending the character "+" to the argument
of \-file_name_limit. Truncated filenames may then get truncated again,
invalidating their MD5 part. Colliding truncated names are made unique,
consuming at least 9 more bytes of the remaining name part.
.br
If writing of xattr is enabled, then the length will be stored in "isofs.nt"
of the root directory.
@ -1886,6 +1889,10 @@ to name length, permissible characters, and mandatory name components.
"rockridge" uses the character set defined by \-out_charset,
"joliet" uses UCS\-2BE, "ecma119" uses ASCII, "hfsplus" uses UTF\-16BE.
.br
\fB\-name_limit_blocker\fR length :
Matches file names which would prevent command \-file_name_limit with the
given length. The command itself reports only the first problem file.
.br
\fB\-prune\fR :
If this test is reached and the tested file is a directory then \-find will not
dive into that directory. This test itself does always match.
@ -2156,6 +2163,7 @@ E.g.: \-exec sort_weight 3 \-\-
.br
\fBshow_stream\fR
shows the content stream chain of a data file.
.br
\fBshow_stream_id\fR
is like show_stream, but also prints between stream type and first ":"
in square brackets libisofs id numbers: [fs_id,dev_id,ino_id].

View File

@ -894,13 +894,17 @@ activate them only after image loading.
bytes of the whole oversized name. Potential incomplete UTF-8
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 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.
the file paths with truncated components.
If -file_name_limit is executed while an ISO tree is present, the
file names in the ISO tree get checked for existing truncated file
names of the current limit and for name collisions between newly
truncated files and existing files. In both cases, the setting
will be refused with a SORRY event.
One may lift this ban by prepending the character "+" to the
argument of -file_name_limit. Truncated filenames may then get
truncated again, invalidating their MD5 part. Colliding truncated
names are made unique, consuming at least 9 more bytes of the
remaining name part.
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
@ -1620,6 +1624,10 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Commands
mandatory name components. "rockridge" uses the character set
defined by -out_charset, "joliet" uses UCS-2BE, "ecma119" uses
ASCII, "hfsplus" uses UTF-16BE.
-name_limit_blocker length :
Matches file names which would prevent command
-file_name_limit with the given length. The command itself
reports only the first problem file.
-prune :
If this test is reached and the tested file is a directory
then -find will not dive into that directory. This test
@ -5033,11 +5041,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 312)
* -ban_stdio_write demands real drive: Loading. (line 316)
* -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 302)
* -calm_drive reduces drive activity: Loading. (line 306)
* -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)
@ -5071,7 +5079,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 328)
* -data_cache_size adjusts read cache size: Loading. (line 332)
* -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)
@ -5087,7 +5095,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 316)
* -early_stdio_test classifies stdio drives: Loading. (line 320)
* -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)
@ -5204,7 +5212,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 274)
* -rom_toc_scan searches for sessions: Loading. (line 278)
* -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)
@ -5311,8 +5319,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 316)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 312)
* Drive, classify stdio, -early_stdio_test: Loading. (line 320)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 316)
* Drive, eject tray, -eject: Writing. (line 50)
* Drive, for input and output, -dev: AqDrive. (line 12)
* Drive, for input, -indev: AqDrive. (line 23)
@ -5320,7 +5328,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 302)
* Drive, reduce activity, -calm_drive: Loading. (line 306)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 143)
* Drive, write and eject, -commit_eject: Writing. (line 53)
* Drive, _definition: Drives. (line 6)
@ -5359,7 +5367,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 328)
* Image reading, cache size, -data_cache_size: Loading. (line 332)
* 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)
@ -5517,7 +5525,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 274)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278)
* 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)
@ -5575,47 +5583,47 @@ Node: Commands24952
Node: ArgSort26629
Node: AqDrive28123
Node: Loading31178
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
Node: Insert51283
Node: SetInsert61508
Node: Manip70359
Node: CmdFind80142
Node: Filter98445
Node: Writing103067
Node: SetWrite113222
Node: Bootable136166
Node: Jigdo158694
Node: Charset162953
Node: Exception166280
Node: DialogCtl172409
Node: Inquiry175011
Node: Navigate183461
Node: Verify191756
Node: Restore201633
Node: Emulation210246
Node: Scripting220656
Node: Frontend228438
Node: Examples238073
Node: ExDevices239251
Node: ExCreate239912
Node: ExDialog241212
Node: ExGrowing242483
Node: ExModifying243292
Node: ExBootable243802
Node: ExCharset244357
Node: ExPseudo245253
Node: ExCdrecord246180
Node: ExMkisofs246500
Node: ExGrowisofs247857
Node: ExException249011
Node: ExTime249469
Node: ExIncBackup249927
Node: ExRestore253953
Node: ExRecovery254899
Node: Files255471
Node: Seealso256805
Node: Bugreport257520
Node: Legal258111
Node: CommandIdx259123
Node: ConceptIdx276165

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 25, 2015"
@c man .TH XORRISO 1 "Version 1.4.1, Sep 28, 2015"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -1244,14 +1244,17 @@ oversized name. Potential incomplete UTF-8 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 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.
file paths with truncated components.
@*
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 -file_name_limit is executed while an ISO tree is present, the file names
in the ISO tree get checked for existing truncated file names of the current
limit and for name collisions between newly truncated files and existing files.
In both cases, the setting will be refused with a SORRY event.
@*
One may lift this ban by prepending the character "+" to the argument
of -file_name_limit. Truncated filenames may then get truncated again,
invalidating their MD5 part. Colliding truncated names are made unique,
consuming at least 9 more bytes of the remaining name part.
@*
If writing of xattr is enabled, then the length will be stored in "isofs.nt"
of the root directory.
@ -2273,6 +2276,10 @@ to name length, permissible characters, and mandatory name components.
"rockridge" uses the character set defined by -out_charset,
"joliet" uses UCS-2BE, "ecma119" uses ASCII, "hfsplus" uses UTF-16BE.
@*
@item -name_limit_blocker length :
Matches file names which would prevent command -file_name_limit with the
given length. The command itself reports only the first problem file.
@*
@item -prune :
If this test is reached and the tested file is a directory then -find will not
dive into that directory. This test itself does always match.
@ -2561,6 +2568,7 @@ E.g.: -exec sort_weight 3 @minus{}@minus{}
@*
@item show_stream
shows the content stream chain of a data file.
@*
@item show_stream_id
is like show_stream, but also prints between stream type and first ":"
in square brackets libisofs id numbers: [fs_id,dev_id,ino_id].

View File

@ -736,6 +736,10 @@ struct XorrisO { /* the global context of xorriso */
bit2= seen data file without MD5
bit3= seen match
*/
int find_unique_trunc_result; /* 0= some names are not uniquely truncatable
1= all names are uniquely truncatable
2= no names need truncation
*/
double last_abort_file_time; /* most recent check for aborting -check_md5 */

View File

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