New command -file_name_limit, -as mkisofs -file_name_limit

This commit is contained in:
Thomas Schmitt 2015-09-17 12:12:41 +00:00
parent 44d09c30c0
commit 0c2eed9f2e
23 changed files with 582 additions and 202 deletions

View File

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

View File

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

View File

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

View File

@ -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 */;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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.",

View File

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

View File

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

View File

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

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

View File

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

View File

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

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

View File

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

View File

@ -1 +1 @@
#define Xorriso_timestamP "2015.09.17.120554"
#define Xorriso_timestamP "2015.09.17.121258"

View File

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

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

View File

@ -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
[index]
* Menu:
* --acl Recording of ACLs: SetExtras. (line 65)
* --acl Recording of ACLs: SetExtras. (line 76)
* --application_use set Application Use field: ImageId. (line 77)
* --boot-catalog-hide Hide El Torito boot catalog: Bootable. (line 101)
* --efi-boot El Torito EFI boot image: Bootable. (line 53)
* --embedded-boot Fill System Area e.g. by MBR: SystemArea. (line 75)
* --emul-toc enable table-of-content emulation: SetProduct. (line 33)
* --for_backup Enable backup fidelity: SetExtras. (line 62)
* --for_backup Enable backup fidelity: SetExtras. (line 73)
* --grub2-boot-info Patch El Torito boot image: Bootable. (line 89)
* --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 77)
* --grub2-sparc-core SUN SPARC core file: SystemArea. (line 237)
* --hardlinks Recording of hardlink relations: SetExtras. (line 86)
* --md5 Recording of MD5 checksums: SetExtras. (line 78)
* --hardlinks Recording of hardlink relations: SetExtras. (line 97)
* --md5 Recording of MD5 checksums: SetExtras. (line 89)
* --modification-date set ISO image timestamps: ImageId. (line 70)
* --no-emul-toc no table-of-content emulation: SetProduct. (line 41)
* --norock disable Rock Ridge production: SetExtras. (line 24)
@ -1813,7 +1824,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
(line 116)
* --quoted_path_list read pathspecs from disk file: SetInsert.
(line 12)
* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 94)
* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 105)
* --sort-weight set block address sorting weight: SetProduct. (line 45)
* --sort-weight-list set block address sorting weight: SetProduct.
(line 56)
@ -1821,7 +1832,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
(line 76)
* --stdio_sync control forced output to disk files: SetProduct.
(line 23)
* --xattr Recording of xattr: SetExtras. (line 71)
* --xattr Recording of xattr: SetExtras. (line 82)
* -A set Application Id: ImageId. (line 34)
* -abstract set Abstract File path: ImageId. (line 57)
* -allow-lowercase lowercase in ISO file names: SetCompl. (line 42)
@ -1846,12 +1857,12 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -chrp-boot CHRP partition: SystemArea. (line 204)
* -chrp-boot-part CHRP partition: SystemArea. (line 195)
* -copyright set Copyright File path: ImageId. (line 66)
* -D allow deep directory hierachies: SetExtras. (line 30)
* -D allow deep directory hierachies: SetExtras. (line 41)
* -d omit trailing dot in ISO file names: SetCompl. (line 50)
* -dev set path for loading existing ISO image: Loading. (line 23)
* -dir-mode permissions for all directories: SetProduct. (line 79)
* -disable-deep-relocation allow deep directory hierachies: SetExtras.
(line 42)
(line 53)
* -disallow_dir_id_ext enforce ISO level 1 directory names: SetCompl.
(line 23)
* -e El Torito EFI boot image: Bootable. (line 47)
@ -1866,6 +1877,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -exclude-list exclude disk files from inserting: SetInsert. (line 44)
* -f follow symbolic links on disk: SetInsert. (line 22)
* -file-mode permissions for all data files: SetProduct. (line 84)
* -file_name_limit curbs length of file names: SetExtras. (line 30)
* -follow-links follow symbolic links on disk: SetInsert. (line 26)
* -full-iso9660-filenames allow 31 characters in ISO file names: SetCompl.
(line 59)
@ -1876,15 +1888,15 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
(line 29)
* -hard-disk-boot El Torito boot image emulation: Bootable. (line 63)
* -help list supported options: Miscellaneous. (line 21)
* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 170)
* -hfs-bless-by HFS+ blessing: SetExtras. (line 160)
* -hfsplus enable production of HFS+ partition: SetExtras. (line 119)
* -hfsplus-block-size set APM block size: SetExtras. (line 150)
* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 181)
* -hfs-bless-by HFS+ blessing: SetExtras. (line 171)
* -hfsplus enable production of HFS+ partition: SetExtras. (line 130)
* -hfsplus-block-size set APM block size: SetExtras. (line 161)
* -hfsplus-block-size set HFS+ allocation block size: SetExtras.
(line 146)
* -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras.
(line 157)
* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 142)
* -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras.
(line 168)
* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 153)
* -hide keep matching files invisible in ISO tree: SetHide. (line 8)
* -hide-hfsplus keep matching files invisible in HFS+ tree: SetHide.
(line 25)
@ -1897,7 +1909,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -hide-list keep matching files invisible in ISO tree: SetHide.
(line 15)
* -hide-rr-moved set deep directory relocation target: SetExtras.
(line 60)
(line 71)
* -hppa-bootloader HP-PA bootloader file: SystemArea. (line 249)
* -hppa-cmdline HP-PA PALO command line: SystemArea. (line 243)
* -hppa-hdrversion HP-PA PALO header version: SystemArea. (line 257)
@ -1912,7 +1924,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -isohybrid-gpt-basdat Mark boot image in GPT: SystemArea. (line 94)
* -isohybrid-gpt-hfsplus Mark boot image in GPT: SystemArea. (line 104)
* -isohybrid-mbr Install ISOLINUX isohybrid MBR: SystemArea. (line 83)
* -J enable production of Joliet directory tree: SetExtras. (line 102)
* -J enable production of Joliet directory tree: SetExtras. (line 113)
* -jigdo-exclude add exclusion pattern for .md5: Jigdo. (line 55)
* -jigdo-force-md5 add check pattern for .md5: Jigdo. (line 49)
* -jigdo-jigdo set name of .jigdo file: Jigdo. (line 38)
@ -1922,9 +1934,9 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -jigdo-template-compress choose compression algorithm: Jigdo.
(line 69)
* -joliet enable production of Joliet directory tree: SetExtras.
(line 106)
* -joliet-long allow longer Joliet names: SetExtras. (line 108)
* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 114)
(line 117)
* -joliet-long allow longer Joliet names: SetExtras. (line 119)
* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 125)
* -l allow 31 characters in ISO file names: SetCompl. (line 56)
* -log-file redirect stderr messages: Miscellaneous. (line 33)
* -m exclude disk files from inserting: SetInsert. (line 31)
@ -1971,7 +1983,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -rock Rock Ridge (is enabled by default): SetExtras. (line 13)
* -root redirect ISO root directory: SetInsert. (line 55)
* -rr_reloc_dir set deep directory relocation target: SetExtras.
(line 44)
(line 55)
* -sparc-boot SUN SPARC boot images: SystemArea. (line 233)
* -sparc-label SUN Disk Label text: SystemArea. (line 235)
* -sysid set System Id: ImageId. (line 43)
@ -2000,10 +2012,10 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Menu:
* Abstract File, set path, -abstract: ImageId. (line 57)
* ACL, record and load, --acl: SetExtras. (line 65)
* ACL, record and load, --acl: SetExtras. (line 76)
* APM, _definition: SystemArea. (line 16)
* Application Id, set, -A, -appid: ImageId. (line 34)
* Backup, enable fidelity, --for_backup: SetExtras. (line 62)
* Backup, enable fidelity, --for_backup: SetExtras. (line 73)
* Biblio File, set path, -biblio: ImageId. (line 62)
* Block address, set sorting weight, --sort-weight: SetProduct.
(line 45)
@ -2070,11 +2082,11 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Character sets, _definition: Charset. (line 6)
* Copyright File, set path, -copyright: ImageId. (line 66)
* Deep directories, allow, -D, -disable-deep-relocation: SetExtras.
(line 30)
(line 41)
* Deep directories, relocation target, -hide-rr-moved: SetExtras.
(line 60)
(line 71)
* Deep directories, relocation target, -rr_reloc_dir: SetExtras.
(line 44)
(line 55)
* Disk files, exclude, -hide-list: SetInsert. (line 44)
* Disk files, exclude, -m, -exclude, -x, -old-exclude: SetInsert.
(line 31)
@ -2082,18 +2094,19 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* ECMA-119, _definition: Standards. (line 6)
* El Torito, _definition: Bootable. (line 13)
* Examples: Examples. (line 6)
* File names, curb length, -file_name_limit: SetExtras. (line 30)
* Forced output, control, --stdio_sync: SetProduct. (line 23)
* GPT, mark appended partitions, -appended_part_as_gpt: SystemArea.
(line 179)
* GPT, _definition: SystemArea. (line 13)
* HFS+, enables production: SetExtras. (line 119)
* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 170)
* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 160)
* HFS+, set allocation block size: SetExtras. (line 146)
* HFS+, set APM block size: SetExtras. (line 150)
* HFS+, enables production: SetExtras. (line 130)
* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 181)
* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 171)
* HFS+, set allocation block size: SetExtras. (line 157)
* HFS+, set APM block size: SetExtras. (line 161)
* HFS+, set creator and type of file, -hfsplus-file-creator-type: SetExtras.
(line 157)
* HFS+, set serial number: SetExtras. (line 142)
(line 168)
* HFS+, set serial number: SetExtras. (line 153)
* HFS+, _definition: Standards. (line 32)
* Hiding, from HFS+, -hide-hfsplus: SetHide. (line 25)
* Hiding, from HFS+, -hide-hfsplus-list: SetHide. (line 28)
@ -2150,16 +2163,16 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Jigdo Template Extraction, -jigdo-template-compress: Jigdo. (line 69)
* Jigdo Template Extraction, -md5-list: Jigdo. (line 67)
* Jigdo Template Extraction, _definition: Jigdo. (line 6)
* Joliet, allows longer names, -joliet-long: SetExtras. (line 108)
* Joliet, enable, -J, -joliet: SetExtras. (line 102)
* Joliet, allows longer names, -joliet-long: SetExtras. (line 119)
* Joliet, enable, -J, -joliet: SetExtras. (line 113)
* Joliet, _definition: Standards. (line 21)
* Links, follow on disk, -f, -follow-links: SetInsert. (line 22)
* Links, record and load hard links, --hardlinks: SetExtras. (line 86)
* Links, record and load hard links, --hardlinks: SetExtras. (line 97)
* MBR, GPT, append partition, -append_partition: SystemArea. (line 159)
* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 131)
* MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 134)
* MBR, _definition: SystemArea. (line 9)
* MD5, record and load, --md5: SetExtras. (line 78)
* MD5, record and load, --md5: SetExtras. (line 89)
* Message output, increase frequency, -gui: Miscellaneous. (line 29)
* Message output, redirect stderr, -log-file: Miscellaneous. (line 33)
* Message output, suppress, -quiet: Miscellaneous. (line 25)
@ -2185,7 +2198,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
(line 16)
* Rock Ridge, disable production, --norock: SetExtras. (line 24)
* Rock Ridge, _definition: Standards. (line 14)
* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 94)
* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 105)
* Session, select path, -M, -prev-session, -dev: Loading. (line 11)
* Session, set load and write address, -C, -cdrecord-params: Loading.
(line 25)
@ -2194,11 +2207,11 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* System Id, set, -sysid: ImageId. (line 43)
* Table-of-content, emulation off, --no-emul-toc: SetProduct. (line 41)
* Table-of-content, emulation, --emul-toc: SetProduct. (line 33)
* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 114)
* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 125)
* Verbosity, high, -v, -verbose: Miscellaneous. (line 38)
* Volume Id, set, -V, -volid: ImageId. (line 13)
* Volume Set Id, set, -volset: ImageId. (line 25)
* xattr, record and load, --xattr: SetExtras. (line 71)
* xattr, record and load, --xattr: SetExtras. (line 82)
* xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6)
* zisofs file, enable recognition, -z, -transparent-compression: SetInsert.
@ -2218,26 +2231,26 @@ Node: SetInsert9752
Node: SetProduct14161
Node: SetCompl19331
Node: SetExtras21923
Node: SetHide30618
Node: ImageId31922
Node: Bootable36093
Node: SystemArea41260
Node: Charset55832
Node: Jigdo56857
Node: Miscellaneous61134
Node: Examples62779
Node: ExSimple63273
Node: ExGraft63756
Node: ExMkisofs65056
Node: ExGrowisofs66322
Node: ExIncBackup67512
Node: ExIncBckAcc70673
Node: ExBootable72362
Node: Files76544
Node: Seealso77639
Node: Bugreport78288
Node: Legal78879
Node: CommandIdx79776
Node: ConceptIdx94571
Node: SetHide31287
Node: ImageId32591
Node: Bootable36762
Node: SystemArea41929
Node: Charset56501
Node: Jigdo57526
Node: Miscellaneous61803
Node: Examples63448
Node: ExSimple63942
Node: ExGraft64425
Node: ExMkisofs65725
Node: ExGrowisofs66991
Node: ExIncBackup68181
Node: ExIncBckAcc71342
Node: ExBootable73031
Node: Files77213
Node: Seealso78308
Node: Bugreport78957
Node: Legal79548
Node: CommandIdx80445
Node: ConceptIdx95313

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 XORRISOFS 1 "Version 1.4.1, Jul 30, 2015"
@c man .TH XORRISOFS 1 "Version 1.4.1, Sep 13, 2015"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -792,6 +792,20 @@ ISO 9660 file objects. The multi-session capabilities of @command{xorrisofs}
depend much on the naming fidelity of Rock Ridge. So it is strongly
discouraged to disable it by this option.
@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 '_'.
@*
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.
@c man .TP
@item -D
@kindex -D allow deep directory hierachies
@cindex Deep directories, allow, -D, -disable-deep-relocation