New command -file_name_limit, -as mkisofs -file_name_limit
This commit is contained in:
parent
14c55329ea
commit
00eca7055e
@ -209,6 +209,7 @@ Xorriso_option_error_behavior;
|
||||
Xorriso_option_external_filter;
|
||||
Xorriso_option_extract;
|
||||
Xorriso_option_extract_cut;
|
||||
Xorriso_option_file_name_limit;
|
||||
Xorriso_option_file_size_limit;
|
||||
Xorriso_option_find;
|
||||
Xorriso_option_follow;
|
||||
|
@ -321,6 +321,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->do_disk_pattern= 2;
|
||||
m->temp_mem_limit= 16*1024*1024;
|
||||
m->file_size_limit= Xorriso_default_file_size_limiT;
|
||||
m->file_name_limit= 255;
|
||||
m->disk_exclusions= NULL;
|
||||
m->iso_rr_hidings= NULL;
|
||||
m->joliet_hidings= NULL;
|
||||
|
@ -359,6 +359,13 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
|
||||
xorriso->outdev_is_exclusive= xorriso->drives_exclusive;
|
||||
}
|
||||
drive= dinfo[0].drive;
|
||||
volset= isoburn_get_attached_image(drive);
|
||||
if(volset != NULL) {
|
||||
ret= iso_image_set_truncate_mode(volset, 1, xorriso->file_name_limit);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0)
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
state= isoburn_disc_get_status(drive);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(flag&1) {
|
||||
@ -524,6 +531,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
|
||||
isoburn_ropt_set_auto_incharset(ropts, !!(xorriso->do_aaip & 512));
|
||||
isoburn_ropt_set_displacement(ropts, xorriso->displacement,
|
||||
xorriso->displacement_sign);
|
||||
isoburn_ropt_set_truncate_mode(ropts, 1, xorriso->file_name_limit);
|
||||
|
||||
Xorriso_set_image_severities(xorriso, 1); /* No DEBUG messages */
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
|
@ -651,7 +651,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"-rr_reloc_dir", "-hfsplus-serial-no", "-prep-boot-part", "-efi-boot-part",
|
||||
"-hfsplus-block-size", "-apm-block-size", "--grub2-mbr",
|
||||
"--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns",
|
||||
"-hppa-hdrversion",
|
||||
"-hppa-hdrversion","-file_name_limit",
|
||||
""
|
||||
};
|
||||
static char arg2_options[][41]= {
|
||||
@ -811,6 +811,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
" -R, -rock Generate Rock Ridge directory information",
|
||||
" -r, -rational-rock Generate rationalized Rock Ridge directory information",
|
||||
" --norock Disable Rock Ridge. (Strongly discouraged !)",
|
||||
" -file_name_limit LEN Set truncation limit for Rock Ridge names",
|
||||
" --hardlinks Record eventual hard link relations of files",
|
||||
" --acl Record eventual ACLs of files",
|
||||
" --xattr Record eventual user space xattr of files",
|
||||
@ -1460,8 +1461,14 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
xorriso->no_emul_toc|= 1;
|
||||
} else if(strcmp(argpt, "-log-file") == 0) {
|
||||
/* already handled before this loop */;
|
||||
i++;
|
||||
} else if(strcmp(argpt, "-gui") == 0) {
|
||||
xorriso->pacifier_interval= 0.25;
|
||||
} else if(strcmp(argpt, "-file_name_limit") == 0) {
|
||||
if(i+1>=argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
Xorriso_option_file_name_limit(xorriso, argv[i], 0);
|
||||
} else {
|
||||
if(argv[i][0] == '-') {
|
||||
ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1,
|
||||
@ -2097,9 +2104,8 @@ rr_reloc_dir:;
|
||||
goto problem_handler_2;
|
||||
Xorriso_relax_compliance(xorriso, "deep_paths_off:long_paths_off", 0);
|
||||
|
||||
} else if(strcmp(argpt, "-log-file") == 0) {
|
||||
if(i + 1 >= argc)
|
||||
goto not_enough_args;
|
||||
} else if(strcmp(argpt, "-log-file") == 0 ||
|
||||
strcmp(argpt, "-file_name_limit") == 0) {
|
||||
i+= 1;
|
||||
/* was already handled before this loop */;
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
#include "lib_mgt.h"
|
||||
#include "iso_tree.h"
|
||||
#include "iso_img.h"
|
||||
|
||||
/*
|
||||
|
||||
@ -32,7 +33,6 @@
|
||||
#include "xorriso_private.h"
|
||||
#include "xorrisoburn.h"
|
||||
|
||||
#include "iso_img.h"
|
||||
#include "iso_manip.h"
|
||||
#include "sort_cmp.h"
|
||||
|
||||
@ -183,9 +183,13 @@ int Xorriso_rename_suffix(struct XorrisO *xorriso, IsoNode *node, char *suffix,
|
||||
{
|
||||
int ret, lo= 0, ls= 0, strip_suffix;
|
||||
char *old_name= NULL, *show_name;
|
||||
IsoImage *volume;
|
||||
|
||||
strip_suffix= !!(flag & 2);
|
||||
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
old_name= strdup((char *) iso_node_get_name(node));
|
||||
show_name= old_name;
|
||||
if(show_path != NULL)
|
||||
@ -205,7 +209,7 @@ int Xorriso_rename_suffix(struct XorrisO *xorriso, IsoNode *node, char *suffix,
|
||||
goto cannot_remove_suffix;
|
||||
strcpy(new_name, old_name);
|
||||
new_name[lo - ls]= 0;
|
||||
ret = iso_node_set_name(node, new_name);
|
||||
ret = iso_image_set_node_name(volume, node, new_name, 1);
|
||||
if (ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if (!(flag & 1))
|
||||
@ -235,7 +239,7 @@ cannot_append_suffix:;
|
||||
ret= 2 * (flag & 1); goto ex;
|
||||
}
|
||||
sprintf(new_name, "%s%s", old_name, suffix);
|
||||
ret = iso_node_set_name(node, new_name);
|
||||
ret = iso_image_set_node_name(volume, node, new_name, 1);
|
||||
if (ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if (!(flag & 1))
|
||||
@ -270,6 +274,7 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
|
||||
IsoExternalFilterCommand *cmd = NULL;
|
||||
char *old_name= NULL, *new_name= NULL, *suffix= "";
|
||||
IsoStream *stream;
|
||||
IsoImage *volume;
|
||||
|
||||
Xorriso_alloc_meM(new_name, char, SfileadrL);
|
||||
new_name[0]= 0;
|
||||
@ -409,7 +414,10 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
|
||||
}
|
||||
}
|
||||
if(filter_ret != 1 && new_name[0] && old_name != NULL) {
|
||||
ret = iso_node_set_name(node, old_name);
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
ret = iso_image_set_node_name(volume, node, old_name, 1);
|
||||
if (ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if (!(flag & 1))
|
||||
|
@ -97,6 +97,8 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
|
||||
isoburn_ropt_set_input_charset(ropts, xorriso->in_charset);
|
||||
isoburn_ropt_set_data_cache(ropts, 1, 1, 0);
|
||||
isoburn_set_read_pacifier(drive, NULL, NULL);
|
||||
isoburn_ropt_set_truncate_mode(ropts, 1, xorriso->file_name_limit);
|
||||
|
||||
ret= isoburn_read_image(drive, ropts, &volset);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
isoburn_ropt_destroy(&ropts, 0);
|
||||
|
@ -129,8 +129,8 @@ int Xorriso_graft_split(struct XorrisO *xorriso, IsoImage *volume,
|
||||
|
||||
Xorriso_alloc_meM(part_name, char, SfileadrL);
|
||||
|
||||
ret= iso_tree_add_new_dir(dir, img_name, &new_dir);
|
||||
if(ret<0)
|
||||
ret= iso_image_add_new_dir(volume, dir, img_name, &new_dir);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
*node= (IsoNode *) new_dir;
|
||||
if(xorriso->update_flags & 1) {
|
||||
@ -166,6 +166,7 @@ ex:;
|
||||
/*
|
||||
@param flag bit0= ISO_NODE_NAME_NOT_UNIQUE exception mode:
|
||||
Do not issue message. Return existing node into *node.
|
||||
bit1= if name truncation happens: copy truncated into img_name
|
||||
bit3= cut_out_node: offset and size are valid
|
||||
bit8= hide in iso_rr
|
||||
bit9= hide in joliet
|
||||
@ -179,14 +180,31 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
{
|
||||
int ret, stbuf_valid= 0;
|
||||
struct stat stbuf;
|
||||
char *namept;
|
||||
char *namept, *eff_name, *trunc_name= NULL;
|
||||
off_t size= 0;
|
||||
|
||||
eff_name= img_name;
|
||||
if(lstat(disk_path, &stbuf) != -1) {
|
||||
stbuf_valid= 1;
|
||||
if(S_ISREG(stbuf.st_mode))
|
||||
size= stbuf.st_size;
|
||||
}
|
||||
if((int) strlen(eff_name) > xorriso->file_name_limit) {
|
||||
Xorriso_alloc_meM(trunc_name, char, SfileadrL);
|
||||
strncpy(trunc_name, eff_name, SfileadrL - 1);
|
||||
trunc_name[SfileadrL - 1]= 0;
|
||||
ret= iso_truncate_leaf_name(1, xorriso->file_name_limit, trunc_name, 0);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
strcpy(xorriso->info_text, "File name had to be truncated and MD5 marked: ");
|
||||
Text_shellsafe(eff_name, xorriso->info_text, 1);
|
||||
strcat(xorriso->info_text, " -> ");
|
||||
Text_shellsafe(trunc_name, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
eff_name= trunc_name;
|
||||
if(flag & 2)
|
||||
strcpy(img_name, trunc_name);
|
||||
}
|
||||
if(flag&8) {
|
||||
if(cut_size > xorriso->file_size_limit && xorriso->file_size_limit > 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
@ -197,13 +215,13 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
ret= iso_tree_add_new_cut_out_node(volume, dir, img_name, disk_path,
|
||||
ret= iso_tree_add_new_cut_out_node(volume, dir, eff_name, disk_path,
|
||||
offset, cut_size, node);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
} else {
|
||||
if(xorriso->split_size > 0 && size > xorriso->split_size) {
|
||||
ret= Xorriso_graft_split(xorriso, volume, dir, disk_path, img_name,
|
||||
ret= Xorriso_graft_split(xorriso, volume, dir, disk_path, eff_name,
|
||||
nominal_source, nominal_target, size,
|
||||
node, 0);
|
||||
if(ret<=0)
|
||||
@ -217,7 +235,7 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
} else {
|
||||
ret= iso_tree_add_new_node(volume, dir, img_name, disk_path, node);
|
||||
ret= iso_tree_add_new_node(volume, dir, eff_name, disk_path, node);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
}
|
||||
@ -234,7 +252,7 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
goto ex;
|
||||
}
|
||||
if(xorriso->update_flags & 1) {
|
||||
ret= Xorriso_mark_update_merge(xorriso, img_name, *node, 1);
|
||||
ret= Xorriso_mark_update_merge(xorriso, eff_name, *node, 1);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
@ -242,7 +260,7 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
ex:;
|
||||
if(ret<0) {
|
||||
if(ret == (int) ISO_NODE_NAME_NOT_UNIQUE && (flag & 1)) {
|
||||
iso_dir_get_node(dir, img_name, node);
|
||||
iso_image_dir_get_node(volume, dir, eff_name, node, 0);
|
||||
} else {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret == (int) ISO_RR_NAME_TOO_LONG ||
|
||||
@ -254,11 +272,13 @@ ex:;
|
||||
Xorriso_report_iso_error(xorriso, namept, ret,
|
||||
"Cannot add node to tree", 0, "FAILURE", 1|2);
|
||||
}
|
||||
return(ret);
|
||||
} else {
|
||||
if(LIBISO_ISREG(*node))
|
||||
xorriso->pacifier_byte_count+= iso_file_get_size((IsoFile *) *node);
|
||||
ret= 1;
|
||||
}
|
||||
if(LIBISO_ISREG(*node))
|
||||
xorriso->pacifier_byte_count+= iso_file_get_size((IsoFile *) *node);
|
||||
return(1);
|
||||
Xorriso_free_meM(trunc_name);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@ -522,7 +542,7 @@ cannot_lstat:;
|
||||
/* does a node exist with this name ? */
|
||||
node= NULL;
|
||||
if(dir != NULL) {
|
||||
ret= iso_dir_get_node(dir, img_name, &node);
|
||||
ret= iso_image_get_dir_node(volume, dir, img_name, &node);
|
||||
} else {
|
||||
ret= Xorriso_node_from_path(xorriso, volume, img_path, &node, 1);
|
||||
}
|
||||
@ -733,8 +753,12 @@ int Xorriso_add_symlink(struct XorrisO *xorriso, IsoDir *parent,
|
||||
{
|
||||
int ret= 0;
|
||||
IsoSymlink *link= NULL;
|
||||
IsoImage *volume;
|
||||
|
||||
ret= iso_tree_add_new_symlink(parent, leaf_name, link_target, &link);
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
ret= iso_image_add_new_symlink(volume, parent, leaf_name, link_target, &link);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0) {
|
||||
Xorriso_report_iso_error(xorriso, nominal_path, ret,
|
||||
@ -924,8 +948,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
||||
So optimism will pay off only with the leaf. I.e. if(done).
|
||||
*/
|
||||
if(source_is_dir) { /* eventually create directory */
|
||||
ret= iso_dir_get_node(dir, apt, &node);
|
||||
if(ret > 0) {
|
||||
ret= iso_image_dir_get_node(volume, dir, apt, &node, 0);
|
||||
if(ret == 1) {
|
||||
ret= Xoriso_handle_collision(xorriso, boss_iter, &node, path,
|
||||
img_path, disk_path,
|
||||
disk_path[0] ? disk_path : img_path,
|
||||
@ -937,7 +961,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
||||
} else
|
||||
node= NULL;
|
||||
if(node == NULL) {
|
||||
ret= iso_tree_add_new_dir(dir, apt, &hdir);
|
||||
ret= iso_image_add_new_dir(volume, dir, apt, &hdir);
|
||||
if(ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(disk_path[0])
|
||||
@ -1022,7 +1046,10 @@ attach_source:;
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
Xorriso_set_change_pending(xorriso, 0);
|
||||
iso_node_set_name(node, apt);
|
||||
|
||||
/* <<< Why set the name once again ?
|
||||
iso_image_set_node_name(volume, node, apt, 1);
|
||||
*/
|
||||
|
||||
xorriso->pacifier_count++;
|
||||
if(xorriso->pacifier_count%100 && !(flag&2))
|
||||
@ -1036,8 +1063,8 @@ attach_source:;
|
||||
#else /* Xorriso_optimistic_graft_iN */
|
||||
|
||||
node= NULL;
|
||||
ret= iso_dir_get_node(dir, apt, &node);
|
||||
if(ret>0) {
|
||||
ret= iso_image_dir_get_node(volume, dir, apt, &node, 0);
|
||||
if(ret == 1) {
|
||||
|
||||
#ifdef Xorriso_graft_handle_collisioN
|
||||
|
||||
@ -1097,7 +1124,7 @@ attach_source:;
|
||||
|
||||
handle_path_node:;
|
||||
if(node==NULL && source_is_dir) { /* make a directory */
|
||||
ret= iso_tree_add_new_dir(dir, apt, &hdir);
|
||||
ret= iso_image_add_new_dir(volume, dir, apt, &hdir);
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(disk_path[0])
|
||||
@ -1167,7 +1194,7 @@ attach_source:;
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
Xorriso_set_change_pending(xorriso, 0);
|
||||
iso_node_set_name(node, apt);
|
||||
iso_image_set_node_name(volume, node, apt, 1);
|
||||
|
||||
xorriso->pacifier_count++;
|
||||
if(xorriso->pacifier_count%100 && !(flag&2))
|
||||
@ -1717,13 +1744,19 @@ int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter,
|
||||
|
||||
old_leafname= (char *) iso_node_get_name(node);
|
||||
if(strcmp(leafname, old_leafname)!=0)
|
||||
ret= iso_node_set_name(node, leafname);
|
||||
ret= iso_image_set_node_name(volume, node, leafname, 1);
|
||||
else
|
||||
ret= 1;
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot set name", 0,
|
||||
Xorriso_report_iso_error(xorriso, eff_dest, ret, "Cannot set name", 0,
|
||||
"FAILURE", 1);
|
||||
ret= iso_dir_add_node(origin_dir, node, 0);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0)
|
||||
Xorriso_report_iso_error(xorriso, eff_origin, ret,
|
||||
"Cannot re-instate node at old path",
|
||||
0, "FAILURE", 1);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
@ -1837,7 +1870,8 @@ int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter,
|
||||
goto ex;
|
||||
new_parent= (IsoDir *) dir_node;
|
||||
|
||||
ret = iso_tree_clone(origin_node, new_parent, leafname, &new_node, flag & 1);
|
||||
ret = iso_image_tree_clone(volume, origin_node, new_parent, leafname,
|
||||
&new_node, (flag & 1) | 2);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0) {
|
||||
Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, ret, 0);
|
||||
@ -1907,7 +1941,8 @@ int Xorriso_clone_under(struct XorrisO *xorriso, char *origin, char *dest,
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
} else {
|
||||
ret = iso_tree_clone(origin_node, dest_dir, namept, &new_node, 1);
|
||||
ret = iso_image_tree_clone(volume, origin_node, dest_dir, namept,
|
||||
&new_node, 1 | 2);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0) {
|
||||
Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, ret, 0);
|
||||
@ -4226,3 +4261,22 @@ ex:
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_set_file_name_limit(struct XorrisO *xorriso, int value, int flag)
|
||||
{
|
||||
int ret;
|
||||
IsoImage *volume= NULL;
|
||||
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 1);
|
||||
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",
|
||||
0, "SORRY", 0);
|
||||
return(0);
|
||||
}
|
||||
xorriso->file_name_limit= value;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
@ -240,6 +240,7 @@ int Xorriso_node_get_dev(struct XorrisO *xorriso, IsoNode *node,
|
||||
bit3= stbuf is to be used without eventual ACL
|
||||
bit4= try to obtain a better st_nlink count if hardlinks
|
||||
are enabled
|
||||
bit5= do not look for truncated versions of path component
|
||||
*/
|
||||
int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf,
|
||||
IsoNode **node, int flag)
|
||||
@ -257,7 +258,8 @@ int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf,
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
return(-1);
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, node, !(flag&4));
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, node,
|
||||
((flag >> 4) & 2) | !(flag&4));
|
||||
if(ret<=0)
|
||||
*node= NULL;
|
||||
}
|
||||
@ -1587,10 +1589,91 @@ int Xorriso_node_eff_hidden(struct XorrisO *xorriso, IsoNode *node, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= do not truncate components which contain any of "*?["
|
||||
*/
|
||||
int Xorriso_truncate_path_comps(struct XorrisO *xorriso, char *path,
|
||||
char *buffer, char **resultpt, int flag)
|
||||
{
|
||||
char *rpt, *basrpt, *wpt, *baswpt, *cpt;
|
||||
int ended, ret, skip;
|
||||
|
||||
*resultpt= path;
|
||||
|
||||
/* Check component lengths */
|
||||
rpt= path;
|
||||
if(*rpt == '/')
|
||||
rpt++;
|
||||
for(ended= 0; !ended;) {
|
||||
basrpt= rpt;
|
||||
rpt= strchr(basrpt, '/');
|
||||
if(rpt == NULL) {
|
||||
rpt= basrpt + strlen(basrpt);
|
||||
ended= 1;
|
||||
}
|
||||
skip= 0;
|
||||
if(flag & 1) {
|
||||
for(cpt= basrpt; cpt < rpt; cpt++) {
|
||||
if(strchr("*?[", *cpt) != NULL) {
|
||||
skip= 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if((!skip) && rpt - basrpt > xorriso->file_name_limit) {
|
||||
ended= 0;
|
||||
break;
|
||||
}
|
||||
if(*rpt == '/')
|
||||
rpt++;
|
||||
}
|
||||
if(ended)
|
||||
return(1); /* All short enough */
|
||||
|
||||
/* Some truncation is needed */
|
||||
buffer[0]= 0;
|
||||
wpt= buffer;
|
||||
if(path[0] == '/')
|
||||
*(wpt++)= '/';
|
||||
rpt= path;
|
||||
if(*rpt == '/')
|
||||
rpt++;
|
||||
for(ended= 0; !ended;) {
|
||||
basrpt= rpt;
|
||||
baswpt= wpt;
|
||||
rpt= strchr(basrpt, '/');
|
||||
if(rpt == NULL) {
|
||||
rpt= basrpt + strlen(basrpt);
|
||||
ended= 1;
|
||||
}
|
||||
skip= 0;
|
||||
for(cpt= basrpt; cpt < rpt; cpt++) {
|
||||
*(wpt++)= *cpt;
|
||||
if((flag & 1) && strchr("*?[", *cpt) != NULL)
|
||||
skip= 1;
|
||||
}
|
||||
*wpt= 0;
|
||||
if((!skip) && rpt - basrpt > xorriso->file_name_limit) {
|
||||
ret= iso_truncate_leaf_name(1, xorriso->file_name_limit, baswpt, 0);
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
if(ret < 0)
|
||||
return(0);
|
||||
wpt= baswpt + strlen(baswpt);
|
||||
}
|
||||
if(!ended) {
|
||||
*(wpt++)= '/';
|
||||
rpt++;
|
||||
}
|
||||
}
|
||||
*resultpt= buffer;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= long format
|
||||
bit1= do not print count of nodes
|
||||
bit2= du format
|
||||
bit3= print directories as themselves (ls -d)
|
||||
bit5= do not look for truncated versions of path component
|
||||
*/
|
||||
int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
int filec, char **filev, off_t boss_mem, int flag)
|
||||
@ -1599,7 +1682,7 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
IsoNode *node;
|
||||
IsoImage *volume;
|
||||
char *path= NULL, *link_target= NULL, *rpt, **dfilev= NULL;
|
||||
char *a_text= NULL, *d_text= NULL;
|
||||
char *a_text= NULL, *d_text= NULL, *namept;
|
||||
off_t size;
|
||||
struct stat stbuf;
|
||||
|
||||
@ -1621,7 +1704,8 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
was_error++;
|
||||
continue;
|
||||
}
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, &node, 1);
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, &node,
|
||||
1 | ((flag >> 4) & 2));
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "Not found in ISO image: ");
|
||||
Text_shellsafe(path, xorriso->info_text, 1);
|
||||
@ -1670,7 +1754,7 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
Xorriso_ls_filev(xorriso, path,
|
||||
dfilec, dfilev, boss_mem, (flag&1)|2|8);
|
||||
dfilec, dfilev, boss_mem, (flag & 1) | 2 | 8);
|
||||
}
|
||||
if(dfilec>0)
|
||||
Sfile_destroy_argv(&dfilec, &dfilev, 0);
|
||||
@ -1708,12 +1792,13 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
else
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
}
|
||||
Xorriso_truncate_path_comps(xorriso, filev[i], path, &namept, 0);
|
||||
if(link_target[0] && (flag&5)==1) {
|
||||
Xorriso_esc_filepath(xorriso, filev[i], xorriso->result_line, 1),
|
||||
Xorriso_esc_filepath(xorriso, namept, xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Xorriso_esc_filepath(xorriso, link_target, xorriso->result_line, 1 | 2);
|
||||
} else {
|
||||
Xorriso_esc_filepath(xorriso, filev[i], xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso, namept, xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
@ -2470,7 +2555,9 @@ int Xorriso_search_hardlinks(struct XorrisO *xorriso, IsoNode *node,
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0=do not complain about non existent node */
|
||||
/* @param flag bit0=do not complain about non existent node
|
||||
bit1= do not try to find truncated name first
|
||||
*/
|
||||
int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
char *path, IsoNode **node, int flag)
|
||||
{
|
||||
@ -2486,7 +2573,11 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
return(ret);
|
||||
}
|
||||
*node= NULL;
|
||||
ret= iso_tree_path_to_node(volume, path_pt, node);
|
||||
ret= 2;
|
||||
if(!(flag & 2))
|
||||
ret= iso_image_path_to_node(volume, path_pt, node);
|
||||
if(ret == 2)
|
||||
ret= iso_tree_path_to_node(volume, path_pt, node);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret<=0 || (*node)==NULL) {
|
||||
if(!(flag&1)) {
|
||||
@ -2501,6 +2592,9 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0=do not complain about non existent node
|
||||
bit1= do not try to find truncated name first
|
||||
*/
|
||||
int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose,
|
||||
char *path, IsoDir **dir_node, int flag)
|
||||
{
|
||||
@ -2512,7 +2606,7 @@ int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose,
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, &node, 0);
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, &node, flag & 3);
|
||||
if(ret<=0)
|
||||
goto wdi_is_not_a_dir;
|
||||
if(LIBISO_ISDIR(node))
|
||||
|
@ -1280,7 +1280,7 @@ int Xorriso_option_calm_drive(struct XorrisO *xorriso, char *which, int flag)
|
||||
/* Option -cd alias -cdi */
|
||||
int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag)
|
||||
{
|
||||
char *path= NULL, *eff_path= NULL;
|
||||
char *path= NULL, *eff_path= NULL, *namept;
|
||||
int ret;
|
||||
|
||||
Xorriso_alloc_meM(path, char, SfileadrL);
|
||||
@ -1329,7 +1329,8 @@ int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
strcpy(xorriso->wdi, eff_path);
|
||||
Xorriso_truncate_path_comps(xorriso, eff_path, path, &namept, 0);
|
||||
strcpy(xorriso->wdi, namept);
|
||||
|
||||
Xorriso_option_pwdi(xorriso, 0);
|
||||
ret= 1;
|
||||
|
@ -648,6 +648,25 @@ int Xorriso_option_extract_cut(struct XorrisO *xorriso, char *iso_rr_path,
|
||||
}
|
||||
|
||||
|
||||
/* Command -file_name_limit */
|
||||
int Xorriso_option_file_name_limit(struct XorrisO *xorriso, char *value,
|
||||
int flag)
|
||||
{
|
||||
int ret;
|
||||
double num;
|
||||
|
||||
num= Scanf_io_size(value, 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);
|
||||
return(ret > 0);
|
||||
}
|
||||
|
||||
|
||||
/* Option -file_size_limit */
|
||||
int Xorriso_option_file_size_limit(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag)
|
||||
@ -702,6 +721,23 @@ static int Xorriso_determine_name_space(struct XorrisO *xorriso,
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int Xorriso_truncate_const_find_name(struct XorrisO *xorriso,
|
||||
char *expr, char *buffer,
|
||||
char **namept, int flag)
|
||||
{
|
||||
int ret;
|
||||
|
||||
*namept= expr;
|
||||
ret= Xorriso_truncate_path_comps(xorriso, expr, buffer, namept, 1);
|
||||
if(ret < 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-find[ix]: cannot truncate constant -name to -file_name_limit: ");
|
||||
Text_shellsafe(expr, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
/* Option -find alias -findi, and -findx */
|
||||
/* @param flag bit0= -findx rather than -findi
|
||||
@ -720,7 +756,7 @@ int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv,
|
||||
struct FindjoB *job, *first_job= NULL, *new_job;
|
||||
char *start_path, *path= NULL, *cpt, *other_path_start= NULL, *cd_pt;
|
||||
char *access_acl_text= NULL, *default_acl_text= NULL, *list_extattr_mode;
|
||||
char *arg1_pt;
|
||||
char *arg1_pt, *namept;
|
||||
|
||||
struct stat dir_stbuf;
|
||||
uid_t user= 0;
|
||||
@ -756,7 +792,10 @@ not_enough_arguments:;
|
||||
goto sorry_ex;
|
||||
}
|
||||
i++;
|
||||
ret= Findjob_set_name_expr(job, argv[i], 0);
|
||||
ret= Xorriso_truncate_const_find_name(xorriso, argv[i], path, &namept, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
ret= Findjob_set_name_expr(job, namept, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "-find[ix]: cannot set -name expression ");
|
||||
Text_shellsafe(argv[i], xorriso->info_text, 1);
|
||||
@ -766,7 +805,10 @@ not_enough_arguments:;
|
||||
if(i+1>=end_idx)
|
||||
goto not_enough_arguments;
|
||||
i++;
|
||||
ret= Findjob_set_name_expr(job, argv[i], 1);
|
||||
ret= Xorriso_truncate_const_find_name(xorriso, argv[i], path, &namept, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
ret= Findjob_set_name_expr(job, namept, 1);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-find[ix]: cannot set -wholename expression ");
|
||||
@ -1863,6 +1905,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -pathspecs \"on\"|\"off\" Allow or disallow pathspecs of form ",
|
||||
" iso_rr_path=disk_path . Only \"off\" allows eventual",
|
||||
" -disk_pattern expansion.",
|
||||
" -file_name_limit number",
|
||||
" Set truncation size for file names [64 ... 255].",
|
||||
" -file_size_limit value [...]",
|
||||
" Set limit for file content size. One or more numbers to add.",
|
||||
" -add pathspec [...] | disk_path [***]",
|
||||
" Insert the given files or directory trees from",
|
||||
" filesystem into the ISO image. Much like mkisofs.",
|
||||
|
@ -215,9 +215,10 @@ int Xorriso_option_lnsi(struct XorrisO *xorriso, char *target, char *path,
|
||||
int flag)
|
||||
{
|
||||
int ret;
|
||||
char *eff_path= NULL;
|
||||
char *eff_path= NULL, *buffer= NULL, *namept;
|
||||
|
||||
Xorriso_alloc_meM(eff_path, char, SfileadrL);
|
||||
Xorriso_alloc_meM(buffer, char, SfileadrL);
|
||||
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, path, eff_path, 1);
|
||||
if(ret < 0)
|
||||
@ -231,12 +232,16 @@ int Xorriso_option_lnsi(struct XorrisO *xorriso, char *target, char *path,
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, path, eff_path, 2);
|
||||
if(ret < 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_graft_in(xorriso, NULL, target, eff_path, (off_t) 0, (off_t) 0,
|
||||
ret= Xorriso_truncate_path_comps(xorriso, target, buffer, &namept, 0);
|
||||
if(ret < 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_graft_in(xorriso, NULL, namept, eff_path, (off_t) 0, (off_t) 0,
|
||||
1024);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= 1;
|
||||
ex:;
|
||||
Xorriso_free_meM(buffer);
|
||||
Xorriso_free_meM(eff_path);
|
||||
return(ret);
|
||||
}
|
||||
@ -977,10 +982,10 @@ int Xorriso_option_move(struct XorrisO *xorriso, char *origin, char *dest,
|
||||
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, origin, eff_origin, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, dest, eff_dest, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, dest, eff_dest, 2);
|
||||
if(ret < 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_rename(xorriso, NULL, eff_origin, eff_dest, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
|
@ -523,7 +523,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"commit_eject","compliance","copyright_file",
|
||||
"dev","dialog","disk_dev_ino","disk_pattern","displacement",
|
||||
"dummy","dvd_obs","early_stdio_test","ecma119_map","eject",
|
||||
"iso_rr_pattern","follow","format","fs","gid","grow_blindly","hardlinks",
|
||||
"iso_rr_pattern","file_name_limit","follow","format","fs",
|
||||
"gid","grow_blindly","hardlinks",
|
||||
"hfsplus","history","indev","in_charset","joliet",
|
||||
"list_delimiter","list_extras","list_profiles","local_charset",
|
||||
"mark","md5","mount_opts","modesty_on_drive",
|
||||
@ -685,7 +686,8 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
||||
"toc", "toc_of", "pvd_info", "report_system_area", "report_el_torito",
|
||||
|
||||
"* Settings for file insertion:",
|
||||
"file_size_limit", "not_mgt", "not_paths", "not_leaf", "not_list",
|
||||
"file_name_limit", "file_size_limit",
|
||||
"not_mgt", "not_paths", "not_leaf", "not_list",
|
||||
"quoted_not_list", "follow", "pathspecs", "overwrite", "split_size",
|
||||
|
||||
"* Navigation in ISO image and disk filesystem (1):",
|
||||
@ -1302,6 +1304,10 @@ next_command:;
|
||||
(*idx)+= 2;
|
||||
ret= Xorriso_option_extract(xorriso, arg1, arg2, 32);
|
||||
|
||||
} else if(strcmp(cmd,"file_name_limit")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_file_name_limit(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"file_size_limit")==0) {
|
||||
ret= Xorriso_option_file_size_limit(xorriso, argc, argv, idx, 0);
|
||||
|
||||
|
@ -3095,6 +3095,11 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
is_default= (xorriso->file_name_limit == 255);
|
||||
sprintf(line, "-file_name_limit %d\n", xorriso->file_name_limit);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->file_size_limit ==
|
||||
Xorriso_default_file_size_limiT);
|
||||
if(xorriso->file_size_limit <= 0)
|
||||
|
@ -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 05, 2015"
|
||||
.TH XORRISO 1 "Version 1.4.1, Sep 16, 2015"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -972,6 +972,31 @@ 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
|
||||
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
|
||||
hex representation of the MD5 of the first 4095 bytes of the whole
|
||||
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 untrancated names in the same directory, it is not possible
|
||||
to change this setting after a drive was aquired. All file names get
|
||||
truncated by the same length.
|
||||
.br
|
||||
File name patterns will only work if they match the truncated name.
|
||||
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
|
||||
ROM (e.g. as DVD\-ROM). The session history of MMC multi\-session media might
|
||||
@ -1742,11 +1767,15 @@ if all its tests match.
|
||||
Available tests are:
|
||||
.br
|
||||
\fB\-name\fR pattern :
|
||||
Matches if pattern matches the file leaf name.
|
||||
Matches if pattern matches the file leaf name. If the pattern does not contain
|
||||
any of the characters "*?[", then it will be truncated according
|
||||
to \-file_name_limit and thus match the truncated name in the ISO filesystem.
|
||||
.br
|
||||
\fB\-wholename\fR pattern :
|
||||
Matches if pattern matches the file path as it would be printed by action
|
||||
"echo". Character '/' is not special but can be matched by wildcards.
|
||||
"echo". Character '/' can be matched by wildcards. If pattern pieces
|
||||
between '/' do not contain any of the characters "*?[", they will
|
||||
be truncated according to \-file_name_limit.
|
||||
.br
|
||||
\fB\-disk_name\fR pattern :
|
||||
Like \-name but testing the leaf name of the file source on disk.
|
||||
@ -3096,6 +3125,10 @@ for existing El Torito boot equipment but also for the recognizable
|
||||
boot provisions in the System Area. It discards any existing \-boot_image
|
||||
setting and executes the commands proposed by command \-report_el_torito "cmd".
|
||||
.br
|
||||
This action will only succeed if the file objects mentioned in the
|
||||
output of command \-report_el_torito "cmd" are still available. Do not
|
||||
remove or rename boot image files after \-indev.
|
||||
.br
|
||||
Drop unknown El Torito: \-boot_image "any" "discard"
|
||||
.br
|
||||
Maintain recognizable stuff: \-boot_image "any" "replay"
|
||||
|
@ -1503,6 +1503,10 @@ int Xorriso_option_extract(struct XorrisO *xorriso, char *disk_path,
|
||||
int Xorriso_option_extract_cut(struct XorrisO *xorriso, char *iso_rr_path,
|
||||
char *start, char *count, char *disk_path, int flag);
|
||||
|
||||
/* Command -file_name_limit */
|
||||
int Xorriso_option_file_name_limit(struct XorrisO *xorriso, char *value,
|
||||
int flag);
|
||||
|
||||
/* Command -file_size_limit */
|
||||
int Xorriso_option_file_size_limit(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
@ -877,6 +877,27 @@ 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
|
||||
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 hex representation of the MD5 of the first 4095
|
||||
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 untrancated names in the same directory,
|
||||
it is not possible to change this setting after a drive was
|
||||
aquired. All file names get truncated by the same length.
|
||||
File name patterns will only work if they match the truncated name.
|
||||
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
|
||||
@ -1501,11 +1522,16 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Commands
|
||||
Available tests are:
|
||||
|
||||
-name pattern :
|
||||
Matches if pattern matches the file leaf name.
|
||||
Matches if pattern matches the file leaf name. If the pattern
|
||||
does not contain any of the characters "*?[", then it will be
|
||||
truncated according to -file_name_limit and thus match the
|
||||
truncated name in the ISO filesystem.
|
||||
-wholename pattern :
|
||||
Matches if pattern matches the file path as it would be
|
||||
printed by action "echo". Character '/' is not special but
|
||||
can be matched by wildcards.
|
||||
printed by action "echo". Character '/' can be matched by
|
||||
wildcards. If pattern pieces between '/' do not contain any
|
||||
of the characters "*?[", they will be truncated according to
|
||||
-file_name_limit.
|
||||
-disk_name pattern :
|
||||
Like -name but testing the leaf name of the file source on
|
||||
disk. Can match only data files which do not stem from the
|
||||
@ -2614,6 +2640,9 @@ Examples:
|
||||
boot provisions in the System Area. It discards any existing
|
||||
-boot_image setting and executes the commands proposed by command
|
||||
-report_el_torito "cmd".
|
||||
This action will only succeed if the file objects mentioned in the
|
||||
output of command -report_el_torito "cmd" are still available. Do
|
||||
not remove or rename boot image files after -indev.
|
||||
Drop unknown El Torito: -boot_image "any" "discard"
|
||||
Maintain recognizable stuff: -boot_image "any" "replay"
|
||||
El Torito only for GRUB: -boot_image "grub" "patch"
|
||||
@ -4982,18 +5011,18 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -alter_date sets timestamps in ISO image: Manip. (line 136)
|
||||
* -alter_date_r sets timestamps in ISO image: Manip. (line 168)
|
||||
* -append_partition adds arbitrary file after image end: Bootable.
|
||||
(line 351)
|
||||
(line 354)
|
||||
* -application_id sets application id: SetWrite. (line 191)
|
||||
* -application_use sets application use field: SetWrite. (line 250)
|
||||
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
|
||||
* -assert_volid rejects undesired images: Loading. (line 102)
|
||||
* -auto_charset learns character set from image: Loading. (line 114)
|
||||
* -backslash_codes enables backslash conversion: Scripting. (line 71)
|
||||
* -ban_stdio_write demands real drive: Loading. (line 275)
|
||||
* -ban_stdio_write demands real drive: Loading. (line 296)
|
||||
* -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 265)
|
||||
* -calm_drive reduces drive activity: Loading. (line 286)
|
||||
* -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)
|
||||
@ -5027,7 +5056,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -cp_rx copies file trees to disk: Restore. (line 104)
|
||||
* -cp_rx copies file trees to disk <1>: Restore. (line 112)
|
||||
* -cut_out inserts piece of data file: Insert. (line 118)
|
||||
* -data_cache_size adjusts read cache size: Loading. (line 291)
|
||||
* -data_cache_size adjusts read cache size: Loading. (line 312)
|
||||
* -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)
|
||||
@ -5043,7 +5072,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 279)
|
||||
* -early_stdio_test classifies stdio drives: Loading. (line 300)
|
||||
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 205)
|
||||
* -eject ejects drive tray: Writing. (line 50)
|
||||
* -end writes pending session and ends program: Scripting. (line 151)
|
||||
@ -5055,6 +5084,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -extract_cut copies file piece to disk: Restore. (line 80)
|
||||
* -extract_l copies files to disk: Restore. (line 76)
|
||||
* -extract_single copies file to disk: Restore. (line 73)
|
||||
* -file_name_limit curbs length of file names: Loading. (line 237)
|
||||
* -file_size_limit limits data file size: SetInsert. (line 7)
|
||||
* -find traverses and alters ISO tree: CmdFind. (line 7)
|
||||
* -findx traverses disk tree: Navigate. (line 88)
|
||||
@ -5158,7 +5188,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 237)
|
||||
* -rom_toc_scan searches for sessions: Loading. (line 258)
|
||||
* -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)
|
||||
@ -5220,11 +5250,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* ACL, show in ISO image, -getfacl: Navigate. (line 60)
|
||||
* ACL, show in ISO image, -getfacl_r: Navigate. (line 66)
|
||||
* ACL, _definition: Extras. (line 50)
|
||||
* APM block size: Bootable. (line 342)
|
||||
* APM block size: Bootable. (line 345)
|
||||
* APM, _definition: Extras. (line 42)
|
||||
* Appendable media, _definition: Media. (line 38)
|
||||
* Appended Filesystem Image, -append_partition: Bootable. (line 351)
|
||||
* Appended partition, in MBR or GPT: Bootable. (line 230)
|
||||
* Appended Filesystem Image, -append_partition: Bootable. (line 354)
|
||||
* Appended partition, in MBR or GPT: Bootable. (line 233)
|
||||
* Automatic execution order, of arguments, -x: ArgSort. (line 16)
|
||||
* Backslash Interpretation, _definition: Processing. (line 53)
|
||||
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 217)
|
||||
@ -5241,15 +5271,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Character set, learn from image, -auto_charset: Loading. (line 114)
|
||||
* Character Set, of terminal, -local_charset: Charset. (line 57)
|
||||
* Character Set, _definition: Charset. (line 6)
|
||||
* CHRP partition, _definition: Bootable. (line 235)
|
||||
* CHRP partition, _definition: Bootable. (line 238)
|
||||
* Closed media, _definition: Media. (line 44)
|
||||
* Comment, #: Scripting. (line 156)
|
||||
* Control, signal handling, -signal_handling: Exception. (line 66)
|
||||
* Create, new ISO image, _definition: Methods. (line 7)
|
||||
* Cylinder alignment, _definition: Bootable. (line 279)
|
||||
* Cylinder size, _definition: Bootable. (line 264)
|
||||
* Cylinder alignment, _definition: Bootable. (line 282)
|
||||
* Cylinder size, _definition: Bootable. (line 267)
|
||||
* Damaged track and session, close, -close_damaged: Writing. (line 164)
|
||||
* DEC Alpha SRM boot sector, production: Bootable. (line 328)
|
||||
* DEC Alpha SRM boot sector, production: Bootable. (line 331)
|
||||
* Delete, from ISO image, -rm: Manip. (line 20)
|
||||
* Delete, from ISO image, -rm_r: Manip. (line 26)
|
||||
* Delete, ISO directory, -rmdir: Manip. (line 29)
|
||||
@ -5265,8 +5295,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 279)
|
||||
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 275)
|
||||
* Drive, classify stdio, -early_stdio_test: Loading. (line 300)
|
||||
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 296)
|
||||
* Drive, eject tray, -eject: Writing. (line 50)
|
||||
* Drive, for input and output, -dev: AqDrive. (line 12)
|
||||
* Drive, for input, -indev: AqDrive. (line 23)
|
||||
@ -5274,13 +5304,13 @@ 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 265)
|
||||
* Drive, reduce activity, -calm_drive: Loading. (line 286)
|
||||
* Drive, report SCSI commands, -scsi_log: Scripting. (line 143)
|
||||
* Drive, write and eject, -commit_eject: Writing. (line 53)
|
||||
* Drive, _definition: Drives. (line 6)
|
||||
* EA, _definition: Extras. (line 66)
|
||||
* ECMA-119, _definition: Model. (line 6)
|
||||
* EFI system partition, _definition: Bootable. (line 244)
|
||||
* EFI system partition, _definition: Bootable. (line 247)
|
||||
* El Torito, _definition: Extras. (line 19)
|
||||
* Emulation, -as: Emulation. (line 13)
|
||||
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 155)
|
||||
@ -5290,6 +5320,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Examples: Examples. (line 6)
|
||||
* extattr, _definition: Extras. (line 66)
|
||||
* File content, copy, -concat: Restore. (line 119)
|
||||
* File names, curb length, -file_name_limit: Loading. (line 237)
|
||||
* File names, if neither Rock Ridge nor Joliet: Loading. (line 205)
|
||||
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
|
||||
* Filter, apply to file, -set_filter: Filter. (line 58)
|
||||
@ -5308,11 +5339,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Group, in ISO image, -chgrp_r: Manip. (line 53)
|
||||
* Growing, _definition: Methods. (line 20)
|
||||
* Hard links, control handling, -hardlinks: Loading. (line 125)
|
||||
* HFS+ allocation block size: Bootable. (line 339)
|
||||
* HFS+ serial number: Bootable. (line 336)
|
||||
* HFS+ allocation block size: Bootable. (line 342)
|
||||
* HFS+ serial number: Bootable. (line 339)
|
||||
* hidden, set in ISO image, -hide: Manip. (line 171)
|
||||
* HP-PA boot sector, production: Bootable. (line 311)
|
||||
* Image reading, cache size, -data_cache_size: Loading. (line 291)
|
||||
* HP-PA boot sector, production: Bootable. (line 314)
|
||||
* Image reading, cache size, -data_cache_size: Loading. (line 312)
|
||||
* Image, demand volume ID, -assert_volid: Loading. (line 102)
|
||||
* Image, discard pending changes, -rollback: Writing. (line 9)
|
||||
* Image, override change status, -changes_pending: Writing. (line 12)
|
||||
@ -5363,14 +5394,14 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* LBA, _definition: Drives. (line 17)
|
||||
* List delimiter, _definition: Processing. (line 9)
|
||||
* Local Character Set, _definition: Charset. (line 11)
|
||||
* MBR, set, -boot_image system_area=: Bootable. (line 181)
|
||||
* MBR, set, -boot_image system_area=: Bootable. (line 184)
|
||||
* MBR, _definition: Extras. (line 27)
|
||||
* MD5, control handling, -md5: Loading. (line 173)
|
||||
* Media, erase, -blank: Writing. (line 57)
|
||||
* Media, format, -format: Writing. (line 87)
|
||||
* Media, list formats, -list_formats: Writing. (line 129)
|
||||
* Media, list write speeds, -list_speeds: Writing. (line 140)
|
||||
* MIPS boot file, activation: Bootable. (line 290)
|
||||
* MIPS boot file, activation: Bootable. (line 293)
|
||||
* mkisofs, Emulation: Emulation. (line 17)
|
||||
* Modifying, _definition: Methods. (line 28)
|
||||
* Multi-session media, _definition: Media. (line 7)
|
||||
@ -5397,15 +5428,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Ownership, global in ISO image, -uid: SetWrite. (line 268)
|
||||
* Ownership, in ISO image, -chown: Manip. (line 43)
|
||||
* Ownership, in ISO image, -chown_r: Manip. (line 47)
|
||||
* Partition offset, _definition: Bootable. (line 254)
|
||||
* Partition table, _definition: Bootable. (line 211)
|
||||
* Partition offset, _definition: Bootable. (line 257)
|
||||
* Partition table, _definition: Bootable. (line 214)
|
||||
* Pathspec, _definition: SetInsert. (line 117)
|
||||
* Pattern expansion, for disk paths, -disk_pattern: Insert. (line 34)
|
||||
* Pattern expansion, for ISO paths, -iso_rr_pattern: Manip. (line 10)
|
||||
* Pattern expansion, _definition: Processing. (line 25)
|
||||
* Permissions, in ISO image, -chmod: Manip. (line 55)
|
||||
* Permissions, in ISO image, -chmod_r: Manip. (line 66)
|
||||
* PReP partition, _definition: Bootable. (line 239)
|
||||
* PReP partition, _definition: Bootable. (line 242)
|
||||
* Problems, reporting: Bugreport. (line 6)
|
||||
* Process, consolidate text output, -pkt_output: Frontend. (line 7)
|
||||
* Process, control abort on error, -abort_on: Exception. (line 27)
|
||||
@ -5465,11 +5496,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Session, select as input, -load: Loading. (line 33)
|
||||
* Session, _definition: Model. (line 6)
|
||||
* Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26)
|
||||
* SUN Disk Label, production: Bootable. (line 301)
|
||||
* SUN SPARC boot images, activation: Bootable. (line 374)
|
||||
* SUN Disk Label, production: Bootable. (line 304)
|
||||
* SUN SPARC boot images, activation: Bootable. (line 377)
|
||||
* Symbolic link, create, -lns: Insert. (line 160)
|
||||
* System area, _definition: Bootable. (line 181)
|
||||
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 237)
|
||||
* System area, _definition: Bootable. (line 184)
|
||||
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 258)
|
||||
* 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)
|
||||
@ -5527,47 +5558,47 @@ Node: Commands24941
|
||||
Node: ArgSort26618
|
||||
Node: AqDrive28112
|
||||
Node: Loading31167
|
||||
Node: Insert48845
|
||||
Node: SetInsert59070
|
||||
Node: Manip67918
|
||||
Node: CmdFind77701
|
||||
Node: Filter95461
|
||||
Node: Writing100084
|
||||
Node: SetWrite110239
|
||||
Node: Bootable133184
|
||||
Node: Jigdo155519
|
||||
Node: Charset159778
|
||||
Node: Exception163105
|
||||
Node: DialogCtl169234
|
||||
Node: Inquiry171836
|
||||
Node: Navigate180281
|
||||
Node: Verify188576
|
||||
Node: Restore198438
|
||||
Node: Emulation207059
|
||||
Node: Scripting217469
|
||||
Node: Frontend225250
|
||||
Node: Examples234885
|
||||
Node: ExDevices236063
|
||||
Node: ExCreate236724
|
||||
Node: ExDialog238024
|
||||
Node: ExGrowing239295
|
||||
Node: ExModifying240104
|
||||
Node: ExBootable240614
|
||||
Node: ExCharset241169
|
||||
Node: ExPseudo242065
|
||||
Node: ExCdrecord242988
|
||||
Node: ExMkisofs243308
|
||||
Node: ExGrowisofs244665
|
||||
Node: ExException245819
|
||||
Node: ExTime246277
|
||||
Node: ExIncBackup246735
|
||||
Node: ExRestore250761
|
||||
Node: ExRecovery251707
|
||||
Node: Files252279
|
||||
Node: Seealso253596
|
||||
Node: Bugreport254311
|
||||
Node: Legal254902
|
||||
Node: CommandIdx255914
|
||||
Node: ConceptIdx272810
|
||||
Node: Insert50158
|
||||
Node: SetInsert60383
|
||||
Node: Manip69231
|
||||
Node: CmdFind79014
|
||||
Node: Filter97109
|
||||
Node: Writing101732
|
||||
Node: SetWrite111887
|
||||
Node: Bootable134832
|
||||
Node: Jigdo157368
|
||||
Node: Charset161627
|
||||
Node: Exception164954
|
||||
Node: DialogCtl171083
|
||||
Node: Inquiry173685
|
||||
Node: Navigate182130
|
||||
Node: Verify190425
|
||||
Node: Restore200287
|
||||
Node: Emulation208908
|
||||
Node: Scripting219318
|
||||
Node: Frontend227099
|
||||
Node: Examples236734
|
||||
Node: ExDevices237912
|
||||
Node: ExCreate238573
|
||||
Node: ExDialog239873
|
||||
Node: ExGrowing241144
|
||||
Node: ExModifying241953
|
||||
Node: ExBootable242463
|
||||
Node: ExCharset243018
|
||||
Node: ExPseudo243914
|
||||
Node: ExCdrecord244837
|
||||
Node: ExMkisofs245157
|
||||
Node: ExGrowisofs246514
|
||||
Node: ExException247668
|
||||
Node: ExTime248126
|
||||
Node: ExIncBackup248584
|
||||
Node: ExRestore252610
|
||||
Node: ExRecovery253556
|
||||
Node: Files254128
|
||||
Node: Seealso255445
|
||||
Node: Bugreport256160
|
||||
Node: Legal256751
|
||||
Node: CommandIdx257763
|
||||
Node: ConceptIdx274732
|
||||
|
||||
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 05, 2015"
|
||||
@c man .TH XORRISO 1 "Version 1.4.1, Sep 16, 2015"
|
||||
@c man .\" Please adjust this date whenever revising the manpage.
|
||||
@c man .\"
|
||||
@c man .\" Some roff macros, for reference:
|
||||
@ -1219,6 +1219,33 @@ 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
|
||||
@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.
|
||||
Path components which are longer than the given number will get truncated
|
||||
and have their last 33 bytes overwritten by a colon ':' and the
|
||||
hex representation of the MD5 of the first 4095 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 untrancated names in the same directory, it is not possible
|
||||
to change this setting after a drive was aquired. All file names get
|
||||
truncated by the same length.
|
||||
@*
|
||||
File name patterns will only work if they match the truncated name.
|
||||
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
|
||||
@cindex Table-of-content, search sessions, -rom_toc_scan
|
||||
@ -2125,11 +2152,15 @@ Available tests are:
|
||||
@table @asis
|
||||
@sp 1
|
||||
@item -name pattern :
|
||||
Matches if pattern matches the file leaf name.
|
||||
Matches if pattern matches the file leaf name. If the pattern does not contain
|
||||
any of the characters "*?[", then it will be truncated according
|
||||
to -file_name_limit and thus match the truncated name in the ISO filesystem.
|
||||
@*
|
||||
@item -wholename pattern :
|
||||
Matches if pattern matches the file path as it would be printed by action
|
||||
"echo". Character '/' is not special but can be matched by wildcards.
|
||||
"echo". Character '/' can be matched by wildcards. If pattern pieces
|
||||
between '/' do not contain any of the characters "*?[", they will
|
||||
be truncated according to -file_name_limit.
|
||||
@*
|
||||
@item -disk_name pattern :
|
||||
Like -name but testing the leaf name of the file source on disk.
|
||||
@ -3626,7 +3657,7 @@ setting and executes the commands proposed by command -report_el_torito "cmd".
|
||||
@*
|
||||
This action will only succeed if the file objects mentioned in the
|
||||
output of command -report_el_torito "cmd" are still available. Do not
|
||||
remove boot image files after -indev.
|
||||
remove or rename boot image files after -indev.
|
||||
@*
|
||||
Drop unknown El Torito: -boot_image "any" "discard"
|
||||
@*
|
||||
|
@ -604,6 +604,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
int temp_mem_limit;
|
||||
|
||||
off_t file_size_limit;
|
||||
int file_name_limit;
|
||||
|
||||
struct ExclusionS *disk_exclusions;
|
||||
int disk_excl_mode; /* bit0= on (else off)
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2015.09.17.120554"
|
||||
#define Xorriso_timestamP "2015.09.17.121258"
|
||||
|
@ -630,6 +630,10 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag);
|
||||
int Xorriso_external_filter_banned(struct XorrisO *xorriso, char *purpose,
|
||||
int flag);
|
||||
|
||||
int Xorriso_set_file_name_limit(struct XorrisO *xorriso, int value, int flag);
|
||||
|
||||
int Xorriso_truncate_path_comps(struct XorrisO *xorriso, char *path,
|
||||
char *buffer, char **resultpt, int flag);
|
||||
|
||||
#endif /* Xorrisoburn_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 XORRISOFS 1 "Version 1.4.1, Jul 30, 2015"
|
||||
.TH XORRISOFS 1 "Version 1.4.1, Sep 13, 2015"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -551,6 +551,18 @@ ISO 9660 file objects. The multi\-session capabilities of \fBxorrisofs\fR
|
||||
depend much on the naming fidelity of Rock Ridge. So it is strongly
|
||||
discouraged to disable it by this option.
|
||||
.TP
|
||||
\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
|
||||
hex representation of the MD5 of the first 4095 bytes of the whole
|
||||
oversized name. Potential incomplete UTF\-8 characters will get their
|
||||
leading bytes replaced by '_'.
|
||||
.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.
|
||||
.TP
|
||||
\fB\-D\fR
|
||||
The standard ECMA\-119 demands that no path in the image shall have more
|
||||
than 8 name components or 255 characters. Therefore it would be necessary
|
||||
|
@ -516,6 +516,17 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op
|
||||
the ISO 9660 file objects. The multi-session capabilities of
|
||||
'xorrisofs' depend much on the naming fidelity of Rock Ridge. So
|
||||
it is strongly discouraged to disable it by this option.
|
||||
-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
|
||||
colon ':' and the hex representation of the MD5 of the first 4095
|
||||
bytes of the whole oversized name. Potential incomplete UTF-8
|
||||
characters will get their leading bytes replaced by '_'.
|
||||
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.
|
||||
-D
|
||||
The standard ECMA-119 demands that no path in the image shall have
|
||||
more than 8 name components or 255 characters. Therefore it would
|
||||
@ -1786,18 +1797,18 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
|
||||
|