New -as mkisofs options --sort-weight-list and --sort-weight-patterns
This commit is contained in:
@ -619,7 +619,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"-partition_sec_hd", "-partition_cyl_align", "-untranslated_name_len",
|
||||
"-rr_reloc_dir", "-hfsplus-serial-no", "-prep-boot-part", "-efi-boot-part",
|
||||
"-hfsplus-block-size", "-apm-block-size", "--grub2-mbr",
|
||||
"--grub2-sparc-core",
|
||||
"--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns",
|
||||
""
|
||||
};
|
||||
static char arg2_options[][41]= {
|
||||
@ -850,6 +850,8 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
" isolinux_mbr=on|auto|off Control eventual isohybrid MBR generation",
|
||||
#endif
|
||||
" --sort-weight NUMBER FILE Set LBA weight number to file or file tree",
|
||||
" --sort-weight-list DISKFILE Read list of NUMBER FILE pairs for --sort-weight",
|
||||
" --sort-weight-patterns DISKFILE --sort-weight-list with pattern expansion",
|
||||
" --stdio_sync on|off|number Control forced output to disk files",
|
||||
" --no-emul-toc Save 64 kB size on random access output files",
|
||||
" --emul-toc Multi-session history on such output files",
|
||||
@ -1143,10 +1145,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
int root_seen= 0, do_md5_mem, option_d= 0, arg_count;
|
||||
mode_t mode_and, mode_or;
|
||||
int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0;
|
||||
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1;
|
||||
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1, sort_file_pattern= 0;
|
||||
int *weight_list= NULL, weight_count= 0;
|
||||
int *delay_opt_list= NULL, delay_opt_count= 0;
|
||||
char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL;
|
||||
char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL, *sort_file= NULL;
|
||||
char *ept, *add_pt, *eff_path= NULL, *indev= NULL, msc[80], *cpt;
|
||||
char *old_root= NULL, *argpt, *hargv[1];
|
||||
char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt, *rpt, *wpt;
|
||||
@ -1161,6 +1163,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
Xorriso_alloc_meM(eff_path, char, SfileadrL);
|
||||
Xorriso_alloc_meM(indev, char, SfileadrL+8);
|
||||
Xorriso_alloc_meM(old_root, char, SfileadrL);
|
||||
Xorriso_alloc_meM(sort_file, char, SfileadrL);
|
||||
|
||||
for(i= 0; i<argc; i++) {
|
||||
if(strcmp(argv[i], "-log-file") == 0 ||
|
||||
@ -1207,7 +1210,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
|
||||
if(xorriso->boot_image_cat_path[0])
|
||||
with_cat_path= -1;
|
||||
adr[0]= indev[0]= msc[0]= old_root[0]= 0;
|
||||
adr[0]= indev[0]= msc[0]= old_root[0]= sort_file[0]= 0;
|
||||
for(i= 0; i<argc; i++) {
|
||||
ret= Xorriso_genisofs_strip_dash(xorriso, argv[i], &argpt, 0);
|
||||
if(ret <= 0)
|
||||
@ -1787,6 +1790,15 @@ not_enough_args:;
|
||||
i+= 2;
|
||||
/* memorize for find runs after pathspecs have been added */
|
||||
weight_list[weight_count++]= i - 2;
|
||||
} else if(strcmp(argpt, "--sort-weight-list") == 0 ||
|
||||
strcmp(argpt, "--sort-weight-patterns") == 0) {
|
||||
if(i + 1 >= argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
if(Sfile_str(sort_file, argv[i], 0) <= 0)
|
||||
{ret= -1; goto ex;}
|
||||
sort_file_pattern= (strcmp(argpt, "--sort-weight-patterns") == 0);
|
||||
|
||||
} else if(strcmp(argpt, "-z")==0 ||
|
||||
strcmp(argpt, "-transparent-compression")==0) {
|
||||
/* was already handled in first argument scan */;
|
||||
@ -2184,6 +2196,12 @@ problem_handler_2:;
|
||||
goto ex;
|
||||
}
|
||||
|
||||
if(sort_file[0]) {
|
||||
ret= Xorriso_apply_sort_file(xorriso, sort_file, sort_file_pattern);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
for(j= 0; j < weight_count; j++) {
|
||||
i= weight_list[j];
|
||||
/* find argv[i+2] -exec sort_weight argv[i+1] */
|
||||
|
Reference in New Issue
Block a user