New -find test -name_limit_blocker. Made -file_name_limit ready for loaded ISOs
This commit is contained in:
parent
7bd6c0fe77
commit
83b32e51f8
@ -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;
|
||||
|
@ -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",
|
||||
0, "SORRY", 0);
|
||||
return(0);
|
||||
"-file_name_limit may not be changed because truncated files exist or collisions would occur",
|
||||
0, "SORRY", 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);
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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",
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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].
|
||||
|
@ -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
|
||||
|
@ -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].
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2015.09.25.171620"
|
||||
#define Xorriso_timestamP "2015.09.28.141723"
|
||||
|
Loading…
Reference in New Issue
Block a user