New -as mkisofs option -disallow_dir_id_ext, allow_dir_id_ext is default

This commit is contained in:
2010-12-25 09:43:15 +00:00
parent 77ff5f5cb9
commit 0b641cf425
5 changed files with 77 additions and 38 deletions

View File

@ -533,6 +533,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
"-no-mac-files", "-chrp-boot",
"--hardlinks", "--acl", "--xattr", "--md5", "--for_backup",
"--protective-msdos-label", "--boot-catalog-hide", "--no-emul-toc",
"-disallow_dir_id_ext",
""
};
static char arg1_options[][41]= {
@ -683,6 +684,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -input-charset CHARSET Local input charset for file name conversion",
" -output-charset CHARSET Output charset for file name conversion",
" -iso-level LEVEL Set ISO9660 conformance level (1..3) or 4 for ISO9660 version 2",
" -disallow_dir_id_ext Do not allow dot in ISO directory names",
" -J, -joliet Generate Joliet directory information",
" -joliet-long Allow Joliet file names to be 103 Unicode characters",
" -U, -untranslated-filenames Allow Untranslated filenames (for HPUX & AIX - violates ISO9660).",
@ -876,9 +878,9 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int argc, char **argv, int flag)
{
int ret, i, j, was_path= 0, was_other_option= 0, mem_graft_points, mem;
int do_print_size= 0, fd, idx, iso_level= 0, emul_boot= 2;
int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1, count, partition_number;
int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1;
mode_t mode_and, mode_or;
int with_boot_image= 0, with_cat_path= 0;
int *weight_list= NULL, weight_count= 0;
@ -971,7 +973,6 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
if(iso_level == 4)
xorriso->do_iso1999= 1;
else {
xorriso->file_size_limit= 0;
sprintf(sfe, "iso_9660_level=%s", argv[i]);
ret= Xorriso_relax_compliance(xorriso, sfe, 0);
if(ret <= 0)
@ -1047,6 +1048,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
goto not_enough_args;
i++;
Xorriso_option_stdio_sync(xorriso, argv[i], 0);
} else if(strcmp(argv[i], "-disallow_dir_id_ext")==0) {
allow_dir_id_ext= 0;
} else
was_other_option= 1;
ret= Xorriso_genisofs_count_args(xorriso, argc - i, argv + i, &count, 0);
@ -1176,10 +1179,12 @@ not_enough_args:;
} else if(strcmp(argv[i], "-o")==0) {
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-M")==0 || strcmp(argv[i], "-dev")==0) {
} else if(strcmp(argv[i], "-M")==0 || strcmp(argv[i], "-dev")==0 ||
strcmp(argv[i], "-prev-session")==0) {
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-C")==0) {
} else if(strcmp(argv[i], "-C")==0 ||
strcmp(argv[i], "-cdrecord-params")==0) {
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-help")==0) {
@ -1434,6 +1439,14 @@ not_enough_args:;
strncpy(xorriso->ascii_disc_label, argv[i], Xorriso_disc_label_sizE - 1);
xorriso->ascii_disc_label[Xorriso_disc_label_sizE - 1] = 0;
} else if(strcmp(argv[i], "--stdio_sync")==0) {
if(i+1>=argc)
goto not_enough_args;
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-disallow_dir_id_ext")==0) {
/* was already handled in first argument scan */;
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
ret= Xorriso_genisofs_count_args(xorriso, argc - i, argv + i, &count, 1);
if(ret > 0) {
@ -1478,7 +1491,18 @@ is_pathspec_2:;
if(ret<=0)
goto problem_handler_2;
was_path= 1;
/* Enforce odd mkisofs defaults on first pathspec */
xorriso->pacifier_style= 1;
if(allow_dir_id_ext == 1) {
Xorriso_relax_compliance(xorriso, "allow_dir_id_ext", 0);
allow_dir_id_ext= 2;
}
if(iso_level >= 1 && iso_level <= 3) {
sprintf(sfe, "iso_9660_level=%d", iso_level);
Xorriso_relax_compliance(xorriso, sfe, 0);
iso_level= 0;
}
}
continue; /* regular bottom of loop */
problem_handler_2:;