diff --git a/libisoburn/libisoburn.ver b/libisoburn/libisoburn.ver index 41dd909a..91aaa476 100644 --- a/libisoburn/libisoburn.ver +++ b/libisoburn/libisoburn.ver @@ -377,6 +377,7 @@ isoburn_toc_disc_get_sectors_v2; isoburn_toc_session_get_sectors_v2; isoburn_toc_track_get_emul_v2; Xorriso_option_chattri; +Xorriso_option_genisoimage_completion; Xorriso_option_lfa_flags; } LIBISOBURN1; diff --git a/xorriso/base_obj.c b/xorriso/base_obj.c index 88da9815..eeb958da 100644 --- a/xorriso/base_obj.c +++ b/xorriso/base_obj.c @@ -121,6 +121,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag) m->initial_wdx[0]= 0; m->no_rc= 0; m->argument_emulation= 0; + m->genisoimage_completion= 0; m->current_interpreter= 0; m->rc_filename_count= Xorriso_rc_nuM; diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 50262c95..49273709 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -651,7 +651,9 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "-appended_part_as_gpt", "-appended_part_as_apm", "--mbr-force-bootable", "--gpt-iso-bootable", "--gpt-iso-not-ro", "-part_like_isohybrid", "--zisofs-version-2", "--zisofs2-susp-z2", - "--zisofs2-susp-zf", + "--zisofs2-susp-zf", "-dvd-audio", "-dvd-hybrid", "-long-rr-time", + "-no-long-rr-time", "-short-rr-time", "-ignore-error", "-data-change-warn", + "-genisoimage_completion", "" }; static char arg1_options[][41]= { @@ -693,6 +695,8 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns", "-hppa-hdrversion", "-file_name_limit", "--set_all_file_dates", "--gpt_disk_guid", "-iso_mbr_part_type", "-eltorito-platform", + "-modification-date", "-N", "-omit-version-number", "-new-dir-mode", + "-nobak", "-no-bak", "-no-limit-pathtables", "", "", "" }; static char arg2_options[][41]= { @@ -785,16 +789,132 @@ no_volunteer:; } -int Xorriso_genisofs_add_boot(struct XorrisO *xorriso, int flag) +/* Try to match unrecognized options as start piece of original + genisoimage options. But not the cdrecord or xorrisofs options which are + not supported by genisoimage. (cdrecord does no option completion.) + @param flag bit0= do not issue error messages +*/ +int Xorriso_genisomage_opt_completion(struct XorrisO *xorriso, char *option, + const char **found, int flag) { - int ret; + static char genisoimage_options[][41]= { + "-abstract", "-A", "-appid", "-allow-leading-dots", "-ldots", + "-allow-lowercase", "-allow-multidot", "-biblio", "-cache-inodes", + "-no-cache-inodes", "-b", "-eltorito-boot", "-eltorito-alt-boot", + "-B", "-sparc-boot", "-G", + "-hard-disk-boot", "-no-emul-boot", "-no-boot", + "-boot-load-seg", "-boot-load-size", "-boot-info-table", "-C", + "-cdrecord-params", "-c", "-eltorito-catalog", "-check-oldnames", + "-check-session", "-copyright", "-d", "-omit-period", "-D", + "-disable-deep-relocation", "-data-change-warn", "-debug", + "-dir-mode", "-dvd-video", "-f", + "-follow-links", "-file-mode", "-gid", "-gui", "-graft-points", + "-hide", "-hide-list", "-hidden", "-hidden-list", "-hide-joliet", + "-hide-joliet-list", "-hide-joliet-trans-tbl", "-hide-rr-moved", + "-input-charset", "-output-charset", + "-iso-level", "-J", "-joliet-long", "-jcharset", "-l", + "-full-iso9660-filenames", "-L", "-log-file", "-m", + "-exclude-list", "-max-iso9660-filenames", "-M", "-dev", + "-N", "-omit-version-number", "-new-dir-mode", + "-nobak", "-no-bak", + "-force-rr", "-no-rr", "-no-split-symlink-components", + "-no-split-symlink-fields", "-o", "-pad", "-no-pad", "-path-list", "-P", + "-publisher", "-p", "-preparer", + "-print-size", "-quiet", "-R", "-rock", + "-r", "-rational-rock", "-relaxed-filenames", "-root", + "-old-root", "-s", "-sectype", "-sort", + "-sparc-label", "-split-output", "-stream-media-size", "-stream-file-name", + "-sunx86-boot", "-sunx86-label", "-sysid", "-T", "-translation-table", + "-transparent-compression", "-table-name", "-ucs-level", "-udf", + "-uid", "-use-fileversion", "-U", + "-untranslated-filenames", "-no-iso-translate", "-V", "-volset", + "-volset-size", "-volset-seqno", "-v", "-verbose", "-x", "-XA", "-xa", + "-z", "-hfs", "-apple", "-map", "-magic", + "-hfs-creator", "-hfs-type", "-probe", "-no-desktop", "-mac-name", + "-boot-hfs-file", "-part", "-auto", "-cluster-size", "-hide-hfs", + "-hide-hfs-list", "-hfs-volid", "-icon-position", "-root-info", + "-prep-boot", "-chrp-t", "-input-hfs-charset", "-output-hfs-charset", + "-hfs-unlock", "-hfs-bless", "-hfs-parms", "--cap", "--netatalk", + "--double", "--ethershare", "--ushare", "--exchange", "--sgi", "--xinet", + "--macbin", "--single", "--dave", "--sfm", "--osx-double", "--osx-hfs", + "-alpha-boot", "-hppa-bootloader", "-hppa-cmdline", "-hppa-kernel-32", + "-hppa-kernel-64", "-hppa-ramdisk", "-mips-boot", "-mipsel-boot", + "-jigdo-jigdo", "-jigdo-template", "-jigdo-min-file-size", + "-jigdo-force-md5", "-jigdo-exclude", "-jigdo-map", "-md5-list", + "-jigdo-template-compress", "-chrp-boot", "-checksum_algorithm_template", + "-checksum_algorithm_iso", + "" + }; + int i, j, l, count= 0; + char *opt, *orig_opt; - if(xorriso->boot_img_size_default && xorriso->boot_image_emul == 0) - xorriso->boot_img_full_size= 1; - ret= Xorriso_attach_boot_image(xorriso, 0); - if(ret <= 0) - xorriso->boot_image_bin_path[0]= 0; - return(ret); + /* search in genisoimage_options, ignoring leading dashes, + count and memorize matches */; + + *found= ""; + for(j= 0; option[j] != 0; j++) + if(option[j] != '-') + break; + opt= option + j; + l= strlen(opt); + if(l == 0) + goto failure; + for(i= 0; genisoimage_options[i][0] != 0; i++) { + for(j= 0; genisoimage_options[i][j] != 0; j++) + if(genisoimage_options[i][j] != '-') + break; + orig_opt= genisoimage_options[i] + j; + if(strncmp(opt, orig_opt, l) == 0) { + count++; + *found= genisoimage_options[i]; + } + } + if(count == 1) { + return(1); + } else if(count == 0) { + *found= option; + if(flag & 1) + goto failure; + sprintf(xorriso->info_text, + "No completion candidate for unrecognized option: %s", option); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + } else { + *found= option; + if(flag & 1) + goto failure; + sprintf(xorriso->info_text, + "Too many candidates for unrecognized option: %s", option); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + sprintf(xorriso->info_text, "List of genisoimage completion candidates:\n"); + Xorriso_info(xorriso, 1 | 2); + + /* List all candidates */ + strcpy(xorriso->info_text, " "); + for(i= 0; genisoimage_options[i][0] != 0; i++) { + for(j= 0; genisoimage_options[i][j] != 0; j++) + if(genisoimage_options[i][j] != '-') + break; + orig_opt= genisoimage_options[i] + j; + if(strncmp(opt, orig_opt, l) == 0) { + if(strlen(xorriso->info_text) + strlen(genisoimage_options[i] + 3) + > 72) { + strcat(xorriso->info_text, "\n"); + Xorriso_info(xorriso, 1 | 2); + strcpy(xorriso->info_text, " "); + strcat(xorriso->info_text, genisoimage_options[i]); + } else { + if(strlen(xorriso->info_text) > 4) + strcat(xorriso->info_text, " , "); + strcat(xorriso->info_text, genisoimage_options[i]); + } + } + } + strcat(xorriso->info_text, "\n"); + Xorriso_info(xorriso, 1 | 2); + } +failure:; + *found= option; + return(0); } @@ -862,6 +982,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " --quoted_path_list FILE File with list of quoted pathnames to process", " -print-size Print estimated filesystem size and exit", " -quiet Run quietly", +" -genisoimage_completion Enable completion of genisoimage options", " -gui Switch behaviour for GUI", " -R, -rock Generate Rock Ridge directory information", " -r, -rational-rock Generate rationalized Rock Ridge directory information", @@ -1125,8 +1246,9 @@ int Xorriso_genisofs_strip_dash(struct XorrisO *xorriso, char *arg_in, /* Interprets a string of single-char options which have no parameters - @param flag bit0=check whether string is ok - bit1=this is pass 1 + @param flag bit0= check whether string is ok + bit1= this is pass 1 + bit2= do not issue error messages @return with flag bit0: 0=no , 1=yes, 2= with bit1: non-pass-1 options seen else : 1 = ok , <= 0 indicates error */ @@ -1207,6 +1329,8 @@ int Xorriso_genisofs_fused_options(struct XorrisO *xorriso, char *whom, continue; Xorriso_option_zisofs(xorriso, "by_magic=on", 0); } else { + if(flag & 4) + {ret= 0; goto ex;} sprintf(xorriso->info_text, "-as %s: Unsupported option -%c", whom, *cpt); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; goto ex; @@ -1218,6 +1342,72 @@ ex:; } +/* + @param flag bit0= do not issue error messages + @return <=0= error , + 1= known option , 2= fused options , 3= completed option + 4= completion is not enabled +*/ +int Xorriso_genisofs_eff_opt(struct XorrisO *xorriso, char *whom, char *option, + const char **found, int flag) +{ + int ret, count,dummy; + char *argv[1], ra_text[80]; + + *found= option; + + if(!xorriso->genisoimage_completion) + return(4); + + /* Check whether option is known */ + argv[0]= option; + ret= Xorriso_genisofs_count_args(xorriso, 1, argv, &count, 0); + if(ret > 0) { + *found= option; + return(1); + } + + /* Xorriso_genisofs_fused_options() shall take over if all letters in the + unknown option are single-letter options without parameter. + + genisoimage interprets known single letter options as fused, + eats further arguments if these options expect parameters, + and then tries completion with the rest. + cdrecord interprets known single letter options as fused only + if they do not expect parameters (like -m or -o). No options completion + happens. + */ + ret= Xorriso_genisofs_fused_options(xorriso, whom, option, + &dummy, &dummy, &dummy, ra_text, + ((flag & 1) << 2) | 1); + if(ret > 0) { + *found= option; + return(2); + } + + /* If not known: try to get it by completion of original mkisofs and + genisoimage options + */ + ret= Xorriso_genisomage_opt_completion(xorriso, option, found, flag & 1); + if(ret > 0) + return(3); + return(0); +} + + +int Xorriso_genisofs_add_boot(struct XorrisO *xorriso, int flag) +{ + int ret; + + if(xorriso->boot_img_size_default && xorriso->boot_image_emul == 0) + xorriso->boot_img_full_size= 1; + ret= Xorriso_attach_boot_image(xorriso, 0); + if(ret <= 0) + xorriso->boot_image_bin_path[0]= 0; + return(ret); +} + + /* Implementing mkisofs tendency to map single-path pathspecs to / */ int Xorriso_graftable_pathspec(struct XorrisO *xorriso, char *in_pathspec, char *pathspec, int flag) @@ -1372,7 +1562,7 @@ wrong_id:; } -/* micro emulation of mkisofs */ +/* mini emulation of mkisofs */ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int argc, char **argv, int flag) { @@ -1381,7 +1571,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int was_failure= 0, fret, lower_r= 0, zero= 0; int dir_mode= -1, file_mode= -1, count, partition_number; int allow_dir_id_ext= -1, mem_current_interpreter; - int root_seen= 0, do_md5_mem, option_d= 0, arg_count; + int root_seen= 0, do_md5_mem, option_d= 0, arg_count, dummy; 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, sort_file_pattern= 0; @@ -1393,7 +1583,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, char *old_root= NULL, *argpt, *hargv[1]; char *boot_path, partno_text[24], *iso_rr_pt, *disk_pt, *rpt, *wpt; char *rm_merge_args[3], *rr_reloc_dir_pt= NULL; - char *sort_weight_args[4], *bless_args[6], *sa_path; + char *sort_weight_args[4], *bless_args[6], *sa_path, dummy_text[80]; + const char *eff_option; struct stat stbuf; @@ -1409,8 +1600,27 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, Xorriso_alloc_meM(sort_file, char, SfileadrL); for(i= 0; iinfo_text, + "-as %s option %s completed to: %s", whom, argv[i], eff_option); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0); + } + argpt= (char *) eff_option; + if(strcmp(eff_option, "-genisoimage_completion") == 0 || + strcmp(eff_option, "--genisoimage_completion") == 0) { + xorriso->genisoimage_completion= 1; + + } else if(strcmp(eff_option, "-log-file") == 0 || + strcmp(eff_option, "--log-file") == 0) { if(i + 1 >= argc) goto not_enough_args; i+= 1; @@ -1434,6 +1644,21 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, sprintf(xorriso->info_text, "Revoked stderr message redirection"); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); } + } else { + if(argv[i][0] == '-') { + if(strcmp(argpt, argv[i]) == 0) { + ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1, + &dummy, &dummy, &dummy, dummy_text, 1); + } else { + ret= 0; + } + if(ret <= 0) { + hargv[0]= argv[i]; + ret= Xorriso_genisofs_count_args(xorriso, 1, hargv, &count, 1); + if(ret > 0) + i+= count; /* skip eventual arguments of known option */ + } + } } } @@ -1455,7 +1680,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, with_cat_path= -1; adr[0]= indev[0]= msc[0]= old_root[0]= sort_file[0]= 0; for(i= 0; iresult_line, -"mkisofs 2.01-Emulation Copyright (C) 2019 see libburnia-project.org xorriso\n" +"mkisofs 2.01-Emulation Copyright (C) 2024 see libburnia-project.org xorriso\n" ); fd= xorriso->dev_fd_1; if(fd<0) @@ -1673,7 +1899,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, i++; Xorriso_option_file_name_limit(xorriso, argv[i], 0); } else { - if(argv[i][0] == '-') { + if(argv[i][0] == '-' && strcmp(argv[i], argpt) == 0) { + /* Was not an incomplete genisoimage option */ ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1, &option_d, &iso_level, &lower_r, ra_text, 1 | 2); if(ret != 1) @@ -1805,7 +2032,8 @@ illegal_c:; sprintf(xorriso->info_text, "-as %s: %s", whom, Text_shellsafe(argv[i], sfe, 0)); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0); - ret= Xorriso_genisofs_strip_dash(xorriso, argv[i], &argpt, 0); + Xorriso_genisofs_eff_opt(xorriso, whom, argv[i], &eff_option, 1); + ret= Xorriso_genisofs_strip_dash(xorriso, (char *) eff_option, &argpt, 0); if(ret <= 0) goto ex; ret= Xorriso_genisofs_ignore(xorriso, whom, argpt, &i, 0); @@ -1850,8 +2078,6 @@ illegal_c:; goto not_enough_args; /* Memorize command until all pathspecs are processed */ delay_opt_list[delay_opt_count++]= i; - if(argv[i] != argpt) - delay_opt_list[delay_opt_count - 1]|= 1u<<31; i+= arg_count; } else if(strcmp(argpt, "-hfsplus") == 0) { /* was already handled in first argument scan */; @@ -1885,7 +2111,7 @@ illegal_c:; if(i+1>=argc) { not_enough_args:; sprintf(xorriso->info_text, "-as %s: Not enough arguments to option %s", - whom, argv[i]); + whom, argpt); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; goto ex; } @@ -2006,8 +2232,6 @@ not_enough_args:; strcmp(argpt, "-isohybrid-apm-hfsplus")==0 || strcmp(argpt, "-part_like_isohybrid")==0) { delay_opt_list[delay_opt_count++]= i; - if(argv[i] != argpt) - delay_opt_list[delay_opt_count - 1]|= 1u<<31; } else if(strcmp(argpt, "-b") == 0 || strcmp(argpt, "-eltorito-boot") == 0 || strcmp(argpt, "-eltorito-platform") == 0 || @@ -2036,16 +2260,12 @@ not_enough_args:; if(i+1>=argc) goto not_enough_args; delay_opt_list[delay_opt_count++]= i; - if(argv[i] != argpt) - delay_opt_list[delay_opt_count - 1]|= 1u<<31; i++; } else if(strcmp(argpt, "-hide_iso_path") == 0) { if(i + 2 >= argc) goto not_enough_args; delay_opt_list[delay_opt_count++]= i; - if(argv[i] != argpt) - delay_opt_list[delay_opt_count - 1]|= 1u<<31; i+= 2; } else if(strncmp(argpt, "--modification-date=", 20)==0) { @@ -2375,9 +2595,17 @@ rr_reloc_dir:; if(ret <= 0) goto problem_handler_2; - } else if(argpt[0]=='-' && argpt[1]!=0) { - ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1, + } else if(strcmp(eff_option, "-genisoimage_completion") == 0) { + /* was already handled before this loop */; + + } else if(argpt[0]=='-') { + if(strcmp(argpt, argv[i]) == 0) { + /* Was not an incomplete genisoimage option */ + ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1, &option_d, &iso_level, &lower_r, ra_text, 1); + } else { + ret= 0; + } if(ret == 1) { ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1, &option_d, &iso_level, &lower_r, ra_text, 0); @@ -2538,11 +2766,11 @@ problem_handler_2:; /* After all pathspecs are added: perform delayed options, mostly boot related */ for(j= 0; j < delay_opt_count; j++) { - i= delay_opt_list[j] & ~(1u << 31); - if(delay_opt_list[j] & (1u << 31)) - argpt= argv[i] + 1; - else - argpt= argv[i]; + i= delay_opt_list[j]; + Xorriso_genisofs_eff_opt(xorriso, whom, argv[i], &eff_option, 1); + ret= Xorriso_genisofs_strip_dash(xorriso, (char *) eff_option, &argpt, 0); + if(ret <= 0) + goto ex; if(strcmp(argpt, "-no-emul-boot")==0) { xorriso->boot_image_emul= 0; xorriso->boot_emul_default= 0; diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index f74123ce..c519140e 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -1680,6 +1680,25 @@ int Xorriso_option_fs(struct XorrisO *xorriso, char *size, int flag) } +/* Command -genisoimage_completion */ +int Xorriso_option_genisoimage_completion(struct XorrisO *xorriso, + char *mode, int flag) +{ + if(strcmp(mode, "on") == 0) { + xorriso->genisoimage_completion= 1; + } else if(strcmp(mode, "off") == 0) { + xorriso->genisoimage_completion= 0; + } else { + sprintf(xorriso->info_text, "-genisoimage_completion: unknown mode '%s'", + mode); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + return(0); + } + return(1); + +} + + /* Commands -getfacl alias -getfacli, -getfacl_r alias -getfacl_ri -getfattr alias getfattri */ @@ -2516,6 +2535,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " For a list of options see -as mkisofs -help.", " -read_mkisofsrc", " Read and interpret the .mkisofsrc configuration file.", +" -genisoimage_completion \"on\"|\"off\"", +" Enable completion of genisoimage options during -as mkisofs.", " -as cdrecord [-help|-v|dev=|speed=|blank=|fs=|-eject|-atip|padsize=|-multi]", " path|-", " Perform some cdrecord gestures, eventually write at most one", diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 32739d00..1617b90d 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -590,7 +590,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv, "drive_access","dummy","dvd_obs","early_stdio_test","ecma119_map","eject", "extract_boot_images", "iso_nowtime","iso_rr_pattern","file_name_limit","follow","format","fs", - "gid","grow_blindly","hardlinks", + "genisoimage_completion", "gid", "grow_blindly", "hardlinks", "hfsplus","history","indev","in_charset","joliet","joliet_map", "lfa_flags", "list_delimiter","list_extras","list_profiles","local_charset", @@ -1449,6 +1449,10 @@ next_command:; (*idx)++; ret= Xorriso_option_fs(xorriso, arg1, 0); + } else if(strcmp(cmd, "genisoimage_completion")==0) { + (*idx)++; + ret= Xorriso_option_genisoimage_completion(xorriso, arg1, 0); + } else if(strcmp(cmd,"getfacl")==0 || strcmp(cmd,"getfacli")==0) { ret= Xorriso_option_getfacli(xorriso, argc, argv, idx, 0); diff --git a/xorriso/text_io.c b/xorriso/text_io.c index 7d2ccada..4f961899 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -3930,6 +3930,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) strcat(line, "\n"); if(!(is_default && no_defaults)) Xorriso_status_result(xorriso,filter,fp,flag&2); + + is_default= (xorriso->genisoimage_completion == 0); + sprintf(line, "-genisoimage_completion %s\n", + xorriso->genisoimage_completion ? "on" : "off"); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso, filter, fp, flag & 2); is_default= 1; if(xorriso->drive_blacklist != NULL || xorriso->drive_whitelist != NULL || diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index c3f28a1c..48d9b9d3 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -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.5.7, Aug 28, 2024" +.TH XORRISO 1 "Version 1.5.7, Aug 31, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -5936,6 +5936,26 @@ VOLI (\-volid) , VOLS (\-volset_id) .br Any other lines will be silently ignored. .TP +\fB\-genisoimage_completion\fR "on"|"off" +Enable or disable the completion of genisoimage options during \-as mkisofs +emulation. +.br +If enabled by "on", then unrecognized option arguments which begin by +a dash '\-' get compared against the known genisoimage options, like program +genisoimage does unconditionally (and undocumentedly). If the given argument +matches the beginning of exactly one genisoimage option, then it gets replaced +by that option. +Option arguments which consist entirely of a leading dash and letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as usual, i.e. as +multiple options with leading dash and each single letter. +If no genisoimage option is found or more than one are found, then a SORRY +message is issued and the argument stays as is. +.br +If disabled by "off", no completion of options happens. Like with enabled +completion, option arguments which consist entirely of letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as multiple +arguments with leading dash and each single letter. +.TP \fB\-pacifier\fR behavior_code Control behavior of UPDATE pacifiers during write operations. The following behavior codes are defined: diff --git a/xorriso/xorriso.h b/xorriso/xorriso.h index b8f20e2f..32ba118e 100644 --- a/xorriso/xorriso.h +++ b/xorriso/xorriso.h @@ -1643,6 +1643,11 @@ int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag); /* @since 0.1.0 */ int Xorriso_option_fs(struct XorrisO *xorriso, char *size, int flag); +/* Command -genisoimage_completion */ +/* @since 1.5.8 */ +int Xorriso_option_genisoimage_completion(struct XorrisO *xorriso, + char *mode, int flag); + /* Commands -getfacl alias -getfacli, -getfacl_r alias -getfacl_ri -getfattr alias getfattri */ diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 90ba7474..ba218749 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -4991,6 +4991,24 @@ said programs trigger comparable actions. APPI (-application_id) , PUBL (-publisher) , SYSI (-system_id) , VOLI (-volid) , VOLS (-volset_id) Any other lines will be silently ignored. +-genisoimage_completion "on"|"off" + Enable or disable the completion of genisoimage options during -as + mkisofs emulation. + If enabled by "on", then unrecognized option arguments which begin + by a dash '-' get compared against the known genisoimage options, + like program genisoimage does unconditionally (and undocumentedly). + If the given argument matches the beginning of exactly one + genisoimage option, then it gets replaced by that option. Option + arguments which consist entirely of a leading dash and letters out + of "dDfJlNRrTUvz" are not matched but rather interpreted as usual, + i.e. as multiple options with leading dash and each single letter. + If no genisoimage option is found or more than one are found, then + a SORRY message is issued and the argument stays as is. + If disabled by "off", no completion of options happens. Like with + enabled completion, option arguments which consist entirely of + letters out of "dDfJlNRrTUvz" are not matched but rather + interpreted as multiple arguments with leading dash and each single + letter. -pacifier behavior_code Control behavior of UPDATE pacifiers during write operations. The following behavior codes are defined: @@ -6086,6 +6104,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -format formats media: Writing. (line 87) * -for_backup acl,xattr,hardlinks,md5,lfa_flags: Loading. (line 304) * -fs sets size of fifo: SetWrite. (line 500) +* -genisoimage_completion completion of genisoimage options: Emulation. + (line 166) * -getfacl shows ACL in ISO image: Navigate. (line 60) * -getfacl_r shows ACL in ISO image: Navigate. (line 66) * -getfattr shows xattr in ISO image: Navigate. (line 69) @@ -6152,7 +6172,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -outdev acquires a drive for output: AqDrive. (line 29) * -out_charset sets output character set: SetWrite. (line 306) * -overwrite enables overwriting in ISO: SetInsert. (line 140) -* -pacifier controls pacifier text form: Emulation. (line 166) +* -pacifier controls pacifier text form: Emulation. (line 184) * -padding sets amount or mode of image padding: SetWrite. (line 528) * -page set terminal geometry: DialogCtl. (line 18) * -paste_in copies file into disk file: Restore. (line 142) @@ -6191,7 +6211,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -rollback_end ends program without writing: Scripting. (line 156) * -rom_toc_scan searches for sessions: Loading. (line 408) * -rr_reloc_dir sets name of relocation directory: SetWrite. (line 171) -* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179) +* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 197) * -scsi_dev_family choose Linux device file type: AqDrive. (line 95) * -scsi_log reports SCSI commands: Scripting. (line 145) * -session_log logs written sessions: Scripting. (line 136) @@ -6269,7 +6289,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Backslash Interpretation, _definition: Processing. (line 57) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 356) * Backup, enable features, -for_backup: Loading. (line 304) -* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179) +* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 197) * Blank media, _definition: Media. (line 34) * Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 478) * Blind growing, _definition: Methods. (line 41) @@ -6328,7 +6348,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 155) * Emulation, cdrecord, -as: Emulation. (line 120) * Emulation, mkisofs, -as: Emulation. (line 17) -* Emulation, pacifier form, -pacifier: Emulation. (line 166) +* Emulation, options completion, -genisoimage_completion: Emulation. + (line 166) +* Emulation, pacifier form, -pacifier: Emulation. (line 184) * Examples: Examples. (line 6) * extattr, _definition: Extras. (line 66) * File content, copy, -concat: Restore. (line 148) @@ -6612,31 +6634,31 @@ Node: Navigate230200 Node: Verify241417 Node: Restore252566 Node: Emulation264773 -Node: Scripting275229 -Node: Frontend283123 -Node: Examples292749 -Node: ExDevices293927 -Node: ExCreate294588 -Node: ExDialog295888 -Node: ExGrowing297159 -Node: ExModifying297968 -Node: ExBootable298478 -Node: ExCharset299033 -Node: ExPseudo299929 -Node: ExCdrecord300856 -Node: ExMkisofs301176 -Node: ExGrowisofs303073 -Node: ExException304226 -Node: ExTime304684 -Node: ExIncBackup305142 -Node: ExRestore309168 -Node: ExRecovery310114 -Node: Files310686 -Node: Environ312020 -Node: Seealso312768 -Node: Bugreport313532 -Node: Legal314123 -Node: CommandIdx315135 -Node: ConceptIdx333464 +Node: Scripting276349 +Node: Frontend284243 +Node: Examples293869 +Node: ExDevices295047 +Node: ExCreate295708 +Node: ExDialog297008 +Node: ExGrowing298279 +Node: ExModifying299088 +Node: ExBootable299598 +Node: ExCharset300153 +Node: ExPseudo301049 +Node: ExCdrecord301976 +Node: ExMkisofs302296 +Node: ExGrowisofs304193 +Node: ExException305346 +Node: ExTime305804 +Node: ExIncBackup306262 +Node: ExRestore310288 +Node: ExRecovery311234 +Node: Files311806 +Node: Environ313140 +Node: Seealso313888 +Node: Bugreport314652 +Node: Legal315243 +Node: CommandIdx316255 +Node: ConceptIdx334729  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 4453e9c9..6df05e19 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.texi @@ -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.5.7, Aug 28, 2024" +@c man .TH XORRISO 1 "Version 1.5.7, Aug 31, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -6738,6 +6738,28 @@ VOLI (-volid) , VOLS (-volset_id) @* Any other lines will be silently ignored. @c man .TP +@item -genisoimage_completion "on"|"off" +@kindex -genisoimage_completion completion of genisoimage options +@cindex Emulation, options completion, -genisoimage_completion +Enable or disable the completion of genisoimage options during -as mkisofs +emulation. +@* +If enabled by "on", then unrecognized option arguments which begin by +a dash '-' get compared against the known genisoimage options, like program +genisoimage does unconditionally (and undocumentedly). If the given argument +matches the beginning of exactly one genisoimage option, then it gets replaced +by that option. +Option arguments which consist entirely of a leading dash and letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as usual, i.e. as +multiple options with leading dash and each single letter. +If no genisoimage option is found or more than one are found, then a SORRY +message is issued and the argument stays as is. +@* +If disabled by "off", no completion of options happens. Like with enabled +completion, option arguments which consist entirely of letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as multiple +arguments with leading dash and each single letter. +@c man .TP @item -pacifier behavior_code @kindex -pacifier controls pacifier text form @cindex Emulation, pacifier form, -pacifier diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 5bf4971e..351041e2 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -107,6 +107,11 @@ struct XorrisO { /* the global context of xorriso */ */ int argument_emulation; + /* Whether to try completion of unrecognized options to known genisoimage + options. 0=no, 1=yes. + */ + int genisoimage_completion; + /* Under which interpreter the current activities are running: 0=xorriso mode : Xorriso_interpreter() 1=mkisofs mode : Xorriso_genisofs() diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 817cd3f4..160b8447 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.09.01.071910" +#define Xorriso_timestamP "2024.09.02.130343" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index a7ba786a..18919cef 100644 --- a/xorriso/xorrisofs.1 +++ b/xorriso/xorrisofs.1 @@ -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.5.7, Jul 21, 2024" +.TH XORRISOFS 1 "Version 1.5.7, Aug 30, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -677,7 +677,7 @@ Alias of \-rr_reloc_dir "/.rr_moved" Enable all options which improve backup fidelity: .br \-\-acl, \-\-xattr\-any, \-\-md5, -\-\-hardlinks, \-\-lfa_flags. +\-\-hardlinks, and possibly \-\-lfa_flags. .br If you later restore a backup with xattr from non\-user namespaces, then make sure that the target operating system and filesystem know what these attributes @@ -687,6 +687,10 @@ privileges and just record what is readable. .br Option \-\-xattr after option \-\-for_backup excludes non\-user attributes from being recorded. +.br +Option \-\-for_backup enables \-\-lfa_flags only if +the underlying libisofs was compiled with support for Linux file attributes, +which is typically not the case on non\-Linux systems. .TP \fB--acl\fR .br @@ -1717,6 +1721,25 @@ The rules for list_of_names are the same as with \-checksum_algorithm_iso. .TP .B Miscellaneous options: .TP +\fB\-genisoimage_completion\fR +Match unrecognized option arguments which begin by a dash '\-' against the +known genisoimage options, like program +genisoimage does unconditionally (and undocumentedly). If the given argument +matches the beginning of exactly one genisoimage option, then it gets replaced +by that option. Options which are genuine to mkisofs or xorriso's mkisofs +emulation are not matched that way. +Option arguments which consist entirely of a leading dash and letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as usual, i.e. as +multiple options with leading dash and each single letter. +If no genisoimage option is found or more than one are found, then a SORRY +message is issued and the argument stays as is. +.br +To enable this mode by default, write the xorriso command +.br + \-genisoimage_completion on +.br +into one of the xorriso start files. See section FILES. +.TP \fB\-print-size\fR Print to stdandard output the foreseeable number of 2048 byte blocks in the emerging ISO image. Do not produce this image. diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index 01f0ae28..d9f64800 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -3,7 +3,7 @@ xorrisofs.texi. xorrisofs - Emulation of ISO 9660 program mkisofs by program xorriso - Copyright (C) 2011 - 2023 Thomas Schmitt + Copyright (C) 2011 - 2024 Thomas Schmitt Permission is granted to distribute this text freely. INFO-DIR-SECTION Archiving @@ -614,7 +614,7 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op Alias of -rr_reloc_dir "/.rr_moved" --for_backup Enable all options which improve backup fidelity: - --acl, --xattr-any, --md5, --hardlinks, --lfa_flags. + --acl, --xattr-any, --md5, --hardlinks, and possibly --lfa_flags. If you later restore a backup with xattr from non-user namespaces, then make sure that the target operating system and filesystem know what these attributes mean. Possibly you will need administrator @@ -623,6 +623,9 @@ File: xorrisofs.info, Node: SetExtras, Next: SetHide, Prev: SetCompl, Up: Op record what is readable. Option --xattr after option --for_backup excludes non-user attributes from being recorded. + Option --for_backup enables --lfa_flags only if the underlying + libisofs was compiled with support for Linux file attributes, which + is typically not the case on non-Linux systems. --acl Enable recording and loading of ACLs from GNU/Linux or FreeBSD (see @@ -1497,6 +1500,21 @@ File: xorrisofs.info, Node: Miscellaneous, Next: ExSimple, Prev: Jigdo, Up: ========================== +-genisoimage_completion + Match unrecognized option arguments which begin by a dash '-' + against the known genisoimage options, like program genisoimage + does unconditionally (and undocumentedly). If the given argument + matches the beginning of exactly one genisoimage option, then it + gets replaced by that option. Options which are genuine to mkisofs + or xorriso's mkisofs emulation are not matched that way. Option + arguments which consist entirely of a leading dash and letters out + of "dDfJlNRrTUvz" are not matched but rather interpreted as usual, + i.e. as multiple options with leading dash and each single letter. + If no genisoimage option is found or more than one are found, then + a SORRY message is issued and the argument stays as is. + To enable this mode by default, write the xorriso command + -genisoimage_completion on + into one of the xorriso start files. See section FILES. -print-size Print to stdandard output the foreseeable number of 2048 byte blocks in the emerging ISO image. Do not produce this image. @@ -2047,7 +2065,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T [index] * Menu: -* --acl Recording of ACLs: SetExtras. (line 103) +* --acl Recording of ACLs: SetExtras. (line 106) * --application_use set Application Use field: ImageId. (line 79) * --boot-catalog-hide Hide El Torito boot catalog: Bootable. (line 121) * --efi-boot El Torito EFI boot image: Bootable. (line 59) @@ -2061,15 +2079,15 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --grub2-boot-info Patch El Torito boot image: Bootable. (line 109) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 81) * --grub2-sparc-core SUN SPARC core file: SystemArea. (line 325) -* --hardlinks Recording of hardlink relations: SetExtras. (line 139) -* --lfa_flags Recording of Linux file attributes: SetExtras. (line 122) +* --hardlinks Recording of hardlink relations: SetExtras. (line 142) +* --lfa_flags Recording of Linux file attributes: SetExtras. (line 125) * --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. (line 148) -* --md5 Recording of MD5 checksums: SetExtras. (line 131) +* --md5 Recording of MD5 checksums: SetExtras. (line 134) * --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 28) -* --no_rc do not execute startup files: Miscellaneous. (line 18) +* --no_rc do not execute startup files: Miscellaneous. (line 33) * --old-empty old block addresses for empty files: SetProduct. (line 105) * --old-root-devno enable disk idevno with -old-root: SetInsert. @@ -2081,7 +2099,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 143) * --quoted_path_list read pathspecs from disk file: SetInsert. (line 12) -* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 147) +* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 150) * --set_all_file_dates set all file timestamps: SetExtras. (line 35) * --sort-weight set block address sorting weight: SetProduct. (line 45) * --sort-weight-list set block address sorting weight: SetProduct. @@ -2090,8 +2108,8 @@ 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 any xattr: SetExtras. (line 116) -* --xattr Recording of user xattr: SetExtras. (line 109) +* --xattr Recording of any xattr: SetExtras. (line 119) +* --xattr Recording of user xattr: SetExtras. (line 112) * --zisofs-version-2 enable recognition of zisofs2 files: SetInsert. (line 65) * --zisofs2-susp-z2 produce Z2 for version 2 instead of ZF: SetInsert. @@ -2153,21 +2171,23 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 59) * -G Fill System Area e.g. by MBR: SystemArea. (line 68) * -generic-boot Fill System Area e.g. by MBR: SystemArea. (line 77) +* -genisoimage_completion completion of genisoimage options: Miscellaneous. + (line 8) * -gid group assignment for all files: SetProduct. (line 83) * -graft-points enable target=source pathspecs: SetInsert. (line 38) * -gui increase frequency of pacifier messages: Miscellaneous. - (line 29) + (line 44) * -hard-disk-boot El Torito boot image emulation: Bootable. (line 83) -* -help list supported options: Miscellaneous. (line 21) -* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 230) -* -hfs-bless-by HFS+ blessing: SetExtras. (line 220) -* -hfsplus enable production of HFS+ partition: SetExtras. (line 173) -* -hfsplus-block-size set APM block size: SetExtras. (line 210) +* -help list supported options: Miscellaneous. (line 36) +* -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 233) +* -hfs-bless-by HFS+ blessing: SetExtras. (line 223) +* -hfsplus enable production of HFS+ partition: SetExtras. (line 176) +* -hfsplus-block-size set APM block size: SetExtras. (line 213) * -hfsplus-block-size set HFS+ allocation block size: SetExtras. - (line 206) + (line 209) * -hfsplus-file-creator-type HFS+ creator-type attribute: SetExtras. - (line 217) -* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 202) + (line 220) +* -hfsplus-serial-no set HFS+ serial number: SetExtras. (line 205) * -hide keep matching files invisible in ISO tree: SetHide. (line 8) * -hide-hfsplus keep matching files invisible in HFS+ tree: SetHide. (line 25) @@ -2198,7 +2218,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -isohybrid-mbr Install ISOLINUX isohybrid MBR: SystemArea. (line 87) * -iso_mbr_part_type Set type of ISO MBR partition: SystemArea. (line 129) -* -J enable production of Joliet directory tree: SetExtras. (line 156) +* -J enable production of Joliet directory tree: SetExtras. (line 159) * -jigdo-checksum-algorithm set data file checksum algorithm: Jigdo. (line 42) * -jigdo-exclude add exclusion pattern for checksum file: Jigdo. @@ -2214,11 +2234,11 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -jigdo-template-compress choose compression algorithm: Jigdo. (line 83) * -joliet enable production of Joliet directory tree: SetExtras. - (line 160) -* -joliet-long allow longer Joliet names: SetExtras. (line 162) -* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 168) + (line 163) +* -joliet-long allow longer Joliet names: SetExtras. (line 165) +* -joliet-utf16 use UTF-16 with Joliet names: SetExtras. (line 171) * -l allow 31 characters in ISO file names: SetCompl. (line 56) -* -log-file redirect stderr messages: Miscellaneous. (line 33) +* -log-file redirect stderr messages: Miscellaneous. (line 48) * -m exclude disk files from inserting: SetInsert. (line 41) * -M set path for loading existing ISO image: Loading. (line 11) * -max-iso9660-filenames allow 37 characters in ISO file names: SetCompl. @@ -2253,9 +2273,9 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -preparer set Preparer Id: ImageId. (line 55) * -prev-session set path for loading existing ISO image: Loading. (line 21) -* -print-size predict ISO image size: Miscellaneous. (line 8) +* -print-size predict ISO image size: Miscellaneous. (line 23) * -publisher set Publisher Id: ImageId. (line 32) -* -quiet suppress most messages: Miscellaneous. (line 25) +* -quiet suppress most messages: Miscellaneous. (line 40) * -R Rock Ridge (is enabled by default): SetExtras. (line 8) * -r Rock Ridge with altered owner and permission: SetExtras. (line 16) * -rational-rock Rock Ridge with altered owner and permission: SetExtras. @@ -2276,10 +2296,10 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -untranslated-filenames very relaxed filename rules: SetCompl. (line 34) * -untranslated_name_len untranslated file names: SetCompl. (line 36) -* -v enable verbose messages: Miscellaneous. (line 38) +* -v enable verbose messages: Miscellaneous. (line 53) * -V set Volume Id: ImageId. (line 13) -* -verbose enable verbose messages: Miscellaneous. (line 41) -* -version report program version: Miscellaneous. (line 43) +* -verbose enable verbose messages: Miscellaneous. (line 56) +* -version report program version: Miscellaneous. (line 58) * -volid set Volume Id: ImageId. (line 23) * -volset set Volume Set Id: ImageId. (line 25) * -x exclude disk files from inserting: SetInsert. (line 49) @@ -2295,7 +2315,7 @@ 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 103) +* ACL, record and load, --acl: SetExtras. (line 106) * APM, mark appended partitions, -appended_part_as_apm: SystemArea. (line 253) * APM, _definition: SystemArea. (line 16) @@ -2398,14 +2418,14 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 238) * GPT, _definition: SystemArea. (line 13) * Group, for all files, -gid: SetProduct. (line 83) -* HFS+, enables production: SetExtras. (line 173) -* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 230) -* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 220) -* HFS+, set allocation block size: SetExtras. (line 206) -* HFS+, set APM block size: SetExtras. (line 210) +* HFS+, enables production: SetExtras. (line 176) +* HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 233) +* HFS+, issue blessing, -hfs-bless-by: SetExtras. (line 223) +* HFS+, set allocation block size: SetExtras. (line 209) +* HFS+, set APM block size: SetExtras. (line 213) * HFS+, set creator and type of file, -hfsplus-file-creator-type: SetExtras. - (line 217) -* HFS+, set serial number: SetExtras. (line 202) + (line 220) +* HFS+, set serial number: SetExtras. (line 205) * HFS+, _definition: Standards. (line 32) * Hiding, by ISO RR path, -hide_iso_path: SetHide. (line 31) * Hiding, from HFS+, -hide-hfsplus: SetHide. (line 25) @@ -2442,7 +2462,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 36) * ISO file names, very relaxed rules, -U, -untranslated-filenames: SetCompl. (line 27) -* ISO image size, predict, -print-size: Miscellaneous. (line 8) +* ISO image size, predict, -print-size: Miscellaneous. (line 23) * ISO image, set Application Use field, --application_use: ImageId. (line 79) * ISO image, set timestamps, --modification-date=: ImageId. (line 70) @@ -2468,24 +2488,25 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Jigdo Template Extraction, -jigdo-template-compress: Jigdo. (line 83) * Jigdo Template Extraction, -md5-list: Jigdo. (line 81) * Jigdo Template Extraction, _definition: Jigdo. (line 6) -* Joliet, allows longer names, -joliet-long: SetExtras. (line 162) -* Joliet, enable, -J, -joliet: SetExtras. (line 156) +* Joliet, allows longer names, -joliet-long: SetExtras. (line 165) +* Joliet, enable, -J, -joliet: SetExtras. (line 159) * Joliet, _definition: Standards. (line 21) * Links, follow on disk, -f, -follow-links: SetInsert. (line 32) -* Links, record and load hard links, --hardlinks: SetExtras. (line 139) +* Links, record and load hard links, --hardlinks: SetExtras. (line 142) * Linux file attributes, record and load, --lfa_flags: SetExtras. - (line 122) + (line 125) * MBR, GPT, append partition, -append_partition: SystemArea. (line 208) * MBR, sectors per head, -partition_sec_hd: SystemArea. (line 180) * MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 183) * MBR, _definition: SystemArea. (line 9) -* MD5, record and load, --md5: SetExtras. (line 131) -* Message output, increase frequency, -gui: Miscellaneous. (line 29) -* Message output, redirect stderr, -log-file: Miscellaneous. (line 33) -* Message output, suppress, -quiet: Miscellaneous. (line 25) +* MD5, record and load, --md5: SetExtras. (line 134) +* Message output, increase frequency, -gui: Miscellaneous. (line 44) +* Message output, redirect stderr, -log-file: Miscellaneous. (line 48) +* Message output, suppress, -quiet: Miscellaneous. (line 40) * Mountability, by non-trivial partition 1, -partition_offset: SystemArea. (line 169) -* Options, list, -help: Miscellaneous. (line 21) +* Options completion, -genisoimage_completion: Miscellaneous. (line 8) +* Options, list, -help: Miscellaneous. (line 36) * Output file, set address, -o, -output: SetProduct. (line 8) * Ownership, for all files, -uid: SetProduct. (line 79) * Padding, 300 KiB, -pad: SetProduct. (line 94) @@ -2499,28 +2520,28 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Permissions, for all directories, -dir-mode: SetProduct. (line 87) * Preparer Id, set, -p: ImageId. (line 47) * Problems, reporting: Bugreport. (line 6) -* Program version, report, -version: Miscellaneous. (line 43) +* Program version, report, -version: Miscellaneous. (line 58) * Publisher Id, set, -P, -publisher: ImageId. (line 28) * Rock Ridge, (enabled by default), -R, -rock: SetExtras. (line 8) * Rock Ridge, altered owner and permission, -r, -rational-rock: SetExtras. (line 16) * Rock Ridge, disable production, --norock: SetExtras. (line 28) * Rock Ridge, _definition: Standards. (line 14) -* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 147) +* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 150) * Session, select path, -M, -prev-session, -dev: Loading. (line 11) * Session, set load and write address, -C, -cdrecord-params: Loading. (line 25) -* Startup files, suppress, --no_rc: Miscellaneous. (line 18) +* Startup files, suppress, --no_rc: Miscellaneous. (line 33) * System Area, _definition: SystemArea. (line 6) * 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 168) -* Verbosity, high, -v, -verbose: Miscellaneous. (line 38) +* UTF-16, for Joliet paths, -joliet-utf16: SetExtras. (line 171) +* Verbosity, high, -v, -verbose: Miscellaneous. (line 53) * Volume Id, set, -V, -volid: ImageId. (line 13) * Volume Set Id, set, -volset: ImageId. (line 25) -* xattr, record and load, --xattr: SetExtras. (line 109) -* xattr, record and load, --xattr-any: SetExtras. (line 116) +* xattr, record and load, --xattr: SetExtras. (line 112) +* xattr, record and load, --xattr-any: SetExtras. (line 119) * xorriso, mkisofs emulation: Xorriso. (line 6) * xorriso, options: Options. (line 6) * Z2 instead of ZF for version 2, -zisofs2-susp-z2: SetInsert. @@ -2546,27 +2567,27 @@ Node: SetInsert9530 Node: SetProduct15465 Node: SetCompl21037 Node: SetExtras23629 -Node: SetHide35680 -Node: ImageId37679 -Node: Bootable41961 -Node: SystemArea48247 -Node: Charset67975 -Node: Jigdo69000 -Node: Miscellaneous73970 -Node: Examples75615 -Node: ExSimple76109 -Node: ExGraft76592 -Node: ExMkisofs77892 -Node: ExGrowisofs79700 -Node: ExIncBackup80890 -Node: ExIncBckAcc84066 -Node: ExBootable85771 -Node: Files89953 -Node: Environ91048 -Node: Seealso91921 -Node: Bugreport92598 -Node: Legal93191 -Node: CommandIdx94088 -Node: ConceptIdx111299 +Node: SetHide35887 +Node: ImageId37886 +Node: Bootable42168 +Node: SystemArea48454 +Node: Charset68182 +Node: Jigdo69207 +Node: Miscellaneous74177 +Node: Examples76773 +Node: ExSimple77267 +Node: ExGraft77750 +Node: ExMkisofs79050 +Node: ExGrowisofs80858 +Node: ExIncBackup82048 +Node: ExIncBckAcc85224 +Node: ExBootable86929 +Node: Files91111 +Node: Environ92206 +Node: Seealso93079 +Node: Bugreport93756 +Node: Legal94349 +Node: CommandIdx95246 +Node: ConceptIdx112606  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index 93248f57..3b254bba 100644 --- a/xorriso/xorrisofs.texi +++ b/xorriso/xorrisofs.texi @@ -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.5.7, Jul 23, 2024" +@c man .TH XORRISOFS 1 "Version 1.5.7, Aug 30, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -2245,6 +2245,27 @@ The rules for list_of_names are the same as with -checksum_algorithm_iso. @table @asis @sp 1 @c man .TP +@item -genisoimage_completion +@kindex -genisoimage_completion completion of genisoimage options +@cindex Options completion, -genisoimage_completion +Match unrecognized option arguments which begin by a dash '-' against the +known genisoimage options, like program +genisoimage does unconditionally (and undocumentedly). If the given argument +matches the beginning of exactly one genisoimage option, then it gets replaced +by that option. Options which are genuine to mkisofs or xorriso's mkisofs +emulation are not matched that way. +Option arguments which consist entirely of a leading dash and letters out of +"dDfJlNRrTUvz" are not matched but rather interpreted as usual, i.e. as +multiple options with leading dash and each single letter. +If no genisoimage option is found or more than one are found, then a SORRY +message is issued and the argument stays as is. +@* +To enable this mode by default, write the xorriso command +@* + -genisoimage_completion on +@* +into one of the xorriso start files. See section FILES. +@c man .TP @item -print-size @kindex -print-size predict ISO image size @cindex ISO image size, predict, -print-size