parse_exec.c (xorriso-1.5.2) | : | parse_exec.c (xorriso-1.5.4) | ||
---|---|---|---|---|
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. | /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. | |||
Copyright 2007-2019 Thomas Schmitt, <scdbackup@gmx.net> | Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net> | |||
Provided under GPL version 2 or later. | Provided under GPL version 2 or later. | |||
This file contains the implementation of functions which deal with parsing | This file contains the implementation of functions which deal with parsing | |||
and interpretation of command input. | and interpretation of command input. | |||
*/ | */ | |||
#ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | |||
#include "../config.h" | #include "../config.h" | |||
#endif | #endif | |||
skipping to change at line 532 | skipping to change at line 532 | |||
}; | }; | |||
static char arg1_commands[][40]= { | static char arg1_commands[][40]= { | |||
"abort_on","acl","add_plainly","application_id","application_use", | "abort_on","acl","add_plainly","application_id","application_use", | |||
"auto_charset","abstract_file", | "auto_charset","abstract_file", | |||
"backslash_codes","blank","biblio_file", | "backslash_codes","blank","biblio_file", | |||
"calm_drive","cd","cdi","cdx","changes_pending","charset", | "calm_drive","cd","cdi","cdx","changes_pending","charset", | |||
"close","close_damaged", | "close","close_damaged", | |||
"commit_eject","compliance","copyright_file", | "commit_eject","compliance","copyright_file", | |||
"dev","dialog","disk_dev_ino","disk_pattern","displacement", | "dev","dialog","disk_dev_ino","disk_pattern","displacement", | |||
"drive_access","dummy","dvd_obs","early_stdio_test","ecma119_map","eject", | "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", | "iso_nowtime","iso_rr_pattern","file_name_limit","follow","format","fs", | |||
"gid","grow_blindly","hardlinks", | "gid","grow_blindly","hardlinks", | |||
"hfsplus","history","indev","in_charset","joliet", | "hfsplus","history","indev","in_charset","joliet","joliet_map", | |||
"list_delimiter","list_extras","list_profiles","local_charset", | "list_delimiter","list_extras","list_profiles","local_charset", | |||
"mark","md5","mount_opts","modesty_on_drive", | "mark","md5","mount_opts","modesty_on_drive", | |||
"not_leaf","not_list","not_mgt", | "not_leaf","not_list","not_mgt", | |||
"options_from_file","osirrox","outdev","out_charset","overwrite", | "options_from_file","osirrox","outdev","out_charset","overwrite", | |||
"pacifier","padding","path_list","pathspecs","pkt_output", | "pacifier","padding","path_list","pathspecs","pkt_output", | |||
"preparer_id","print","print_info","print_mark","prompt", | "preparer_id","print","print_info","print_mark","prompt", | |||
"prog","prog_help","publisher","quoted_not_list","quoted_path_list", | "prog","prog_help","publisher","quoted_not_list","quoted_path_list", | |||
"read_fs","read_speed","reassure","report_about", | "read_fs","read_speed","reassure","report_about", | |||
"report_el_torito","report_system_area","rockridge", | "report_el_torito","report_system_area","rockridge", | |||
"rom_toc_scan","rr_reloc_dir","scsi_dev_family","scsi_log", | "rom_toc_scan","rr_reloc_dir","scsi_dev_family","scsi_log", | |||
skipping to change at line 563 | skipping to change at line 564 | |||
static char arg2_commands[][40]= { | static char arg2_commands[][40]= { | |||
"assert_volid","boot_image","clone","compare","compare_r","drive_class", | "assert_volid","boot_image","clone","compare","compare_r","drive_class", | |||
"data_cache_size", | "data_cache_size", | |||
"errfile_log","error_behavior","extract","extract_single", | "errfile_log","error_behavior","extract","extract_single", | |||
"jigdo","lns","lnsi","load","logfile", | "jigdo","lns","lnsi","load","logfile", | |||
"map","map_single","move","msg_op","page","return_with", | "map","map_single","move","msg_op","page","return_with", | |||
"scdbackup_tag","update","update_r","volume_date", | "scdbackup_tag","update","update_r","volume_date", | |||
"" | "" | |||
}; | }; | |||
static char arg3_commands[][40]= { | static char arg3_commands[][40]= { | |||
"append_partition", | "append_partition", "truncate_overwritable", | |||
"" | "" | |||
}; | }; | |||
static char arg4_commands[][40]= { | static char arg4_commands[][40]= { | |||
"cut_out","extract_cut","mount","mount_cmd","named_pipe_loop", | "cut_out","extract_cut","mount","mount_cmd","named_pipe_loop", | |||
"paste_in","session_string", | "paste_in","session_string", | |||
"" | "" | |||
}; | }; | |||
static char argn_commands[][40]= { | static char argn_commands[][40]= { | |||
"add","alter_date","alter_date_r","as", | "add","alter_date","alter_date_r","as", | |||
"check_md5","check_md5_r","check_media","check_media_defaults", | "check_md5","check_md5_r","check_media","check_media_defaults", | |||
skipping to change at line 684 | skipping to change at line 685 | |||
"drive_access","drive_class","early_stdio_test", | "drive_access","drive_class","early_stdio_test", | |||
"* Drive and media related inquiry actions (1):", | "* Drive and media related inquiry actions (1):", | |||
"devices", "device_links", | "devices", "device_links", | |||
"mount_opts", "mount_cmd", "session_string", | "mount_opts", "mount_cmd", "session_string", | |||
"* Influencing the behavior of image loading:", | "* Influencing the behavior of image loading:", | |||
"read_speed", "load", "displacement", "read_fs", | "read_speed", "load", "displacement", "read_fs", | |||
"assert_volid", "in_charset", | "assert_volid", "in_charset", | |||
"auto_charset", "hardlinks", "acl", "xattr", "md5", "for_backup", | "auto_charset", "hardlinks", "acl", "xattr", "md5", "for_backup", | |||
"ecma119_map", | "ecma119_map", "joliet_map", | |||
"disk_dev_ino", "rom_toc_scan", "calm_drive", "ban_stdio_write", | "disk_dev_ino", "rom_toc_scan", "calm_drive", "ban_stdio_write", | |||
"data_cache_size", | "data_cache_size", | |||
"scsi_dev_family", "iso_nowtime", | "scsi_dev_family", "iso_nowtime", | |||
"* Character sets:", | "* Character sets:", | |||
"charset", "local_charset", | "charset", "local_charset", | |||
"* Acquiring source and target drive:", | "* Acquiring source and target drive:", | |||
"dev", "indev", "outdev", | "dev", "indev", "outdev", | |||
skipping to change at line 737 | skipping to change at line 738 | |||
"* Filters for data file content:", | "* Filters for data file content:", | |||
"external_filter", "unregister_filter", "close_filter_list", | "external_filter", "unregister_filter", "close_filter_list", | |||
"set_filter", "set_filter_r", | "set_filter", "set_filter_r", | |||
"* Tree traversal command -find:", | "* Tree traversal command -find:", | |||
"find", | "find", | |||
"* osirrox ISO-to-disk restore options:", | "* osirrox ISO-to-disk restore options:", | |||
"osirrox", "extract", "extract_single", "extract_l", "extract_cut", | "osirrox", "extract", "extract_single", "extract_l", "extract_cut", | |||
"extract_boot_images", | ||||
"cpx", "cpax", "cp_rx", "cp_rax", "paste_in", "concat", | "cpx", "cpax", "cp_rx", "cp_rax", "paste_in", "concat", | |||
"mount", | "mount", | |||
"* Settings for result writing:", | "* Settings for result writing:", | |||
"rockridge", "joliet", "hfsplus","compliance", "rr_reloc_dir", | "rockridge", "joliet", "hfsplus","compliance", "rr_reloc_dir", | |||
"volid", "volset_id", "publisher", | "volid", "volset_id", "publisher", | |||
"application_id", "system_id", "volume_date", "copyright_file", | "application_id", "system_id", "volume_date", "copyright_file", | |||
"abstract_file", "biblio_file", "preparer_id", "application_use", | "abstract_file", "biblio_file", "preparer_id", "application_use", | |||
"out_charset", "read_mkisofsrc", | "out_charset", "read_mkisofsrc", | |||
"uid", "gid", "zisofs", "speed", "stream_recording", "dvd_obs", | "uid", "gid", "zisofs", "speed", "stream_recording", "dvd_obs", | |||
skipping to change at line 767 | skipping to change at line 769 | |||
"* Command compatibility emulations:", | "* Command compatibility emulations:", | |||
"as", | "as", | |||
"* Scripting, dialog and program control features (2):", | "* Scripting, dialog and program control features (2):", | |||
"history", "status_history_max", "status", | "history", "status_history_max", "status", | |||
"* Drive and media related inquiry actions (3):", | "* Drive and media related inquiry actions (3):", | |||
"print_size", "tell_media_space", | "print_size", "tell_media_space", | |||
"* Writing the result, drive control:", | "* Writing the result, drive control:", | |||
"format", "blank", "close_damaged", | "format", "blank", "truncate_overwritable", "close_damaged", | |||
"rollback", "changes_pending", "commit", "commit_eject", | "rollback", "changes_pending", "commit", "commit_eject", | |||
"eject", | "eject", | |||
"* Evaluation of readability and recovery:", | "* Evaluation of readability and recovery:", | |||
"check_media_defaults", "check_media", "check_md5", "check_md5_r", | "check_media_defaults", "check_media", "check_md5", "check_md5_r", | |||
"* Support for frontend programs via stdin and stdout (2):", | "* Support for frontend programs via stdin and stdout (2):", | |||
"pkt_output", "logfile", "mark", "msg_op", | "pkt_output", "logfile", "mark", "msg_op", | |||
"* Dialog mode control:", | "* Dialog mode control:", | |||
skipping to change at line 1302 | skipping to change at line 1304 | |||
(*idx)+= 2; | (*idx)+= 2; | |||
ret= Xorriso_option_error_behavior(xorriso, arg1, arg2, 0); | ret= Xorriso_option_error_behavior(xorriso, arg1, arg2, 0); | |||
} else if(strcmp(cmd,"external_filter")==0) { | } else if(strcmp(cmd,"external_filter")==0) { | |||
ret= Xorriso_option_external_filter(xorriso, argc, argv, idx, 0); | ret= Xorriso_option_external_filter(xorriso, argc, argv, idx, 0); | |||
} else if(strcmp(cmd,"extract")==0) { | } else if(strcmp(cmd,"extract")==0) { | |||
(*idx)+= 2; | (*idx)+= 2; | |||
ret= Xorriso_option_extract(xorriso, arg1, arg2, 0); | ret= Xorriso_option_extract(xorriso, arg1, arg2, 0); | |||
} else if(strcmp(cmd,"extract_boot_images")==0) { | ||||
(*idx)+= 1; | ||||
if((*idx)>argc) { | ||||
sprintf(xorriso->info_text, | ||||
"-extract_boot_images: Empty disk_path cannot be used as target dire | ||||
ctory"); | ||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); | ||||
ret= 0; | ||||
} else { | ||||
ret= Xorriso_option_extract_boot_images(xorriso, arg1, 0); | ||||
} | ||||
} else if(strcmp(cmd,"extract_cut")==0) { | } else if(strcmp(cmd,"extract_cut")==0) { | |||
(*idx)+= 4; | (*idx)+= 4; | |||
if((*idx)>argc) { | if((*idx)>argc) { | |||
sprintf(xorriso->info_text, | sprintf(xorriso->info_text, | |||
"-extract_cut: Not enough arguments. Needed are: disk_path start cou nt so_rr_path"); | "-extract_cut: Not enough arguments. Needed are: disk_path start cou nt iso_rr_path"); | |||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); | Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); | |||
ret= 0; | ret= 0; | |||
} else | } else | |||
ret= Xorriso_option_extract_cut(xorriso, arg1, arg2, | ret= Xorriso_option_extract_cut(xorriso, arg1, arg2, | |||
argv[(*idx)-2], argv[(*idx)-1], 0); | argv[(*idx)-2], argv[(*idx)-1], 0); | |||
} else if(strcmp(cmd,"extract_l")==0) { | } else if(strcmp(cmd,"extract_l")==0) { | |||
ret= Xorriso_option_map_l(xorriso, argc, argv, idx, 3<<8); | ret= Xorriso_option_map_l(xorriso, argc, argv, idx, 3<<8); | |||
} else if(strcmp(cmd,"extract_single")==0) { | } else if(strcmp(cmd,"extract_single")==0) { | |||
skipping to change at line 1416 | skipping to change at line 1429 | |||
ret= Xorriso_option_iso_rr_pattern(xorriso, arg1, 0); | ret= Xorriso_option_iso_rr_pattern(xorriso, arg1, 0); | |||
} else if(strcmp(cmd,"jigdo")==0) { | } else if(strcmp(cmd,"jigdo")==0) { | |||
(*idx)+= 2; | (*idx)+= 2; | |||
ret= Xorriso_option_jigdo(xorriso, arg1, arg2, 0); | ret= Xorriso_option_jigdo(xorriso, arg1, arg2, 0); | |||
} else if(strcmp(cmd,"joliet")==0) { | } else if(strcmp(cmd,"joliet")==0) { | |||
(*idx)++; | (*idx)++; | |||
ret= Xorriso_option_joliet(xorriso, arg1, 0); | ret= Xorriso_option_joliet(xorriso, arg1, 0); | |||
} else if(strcmp(cmd,"joliet_map")==0) { | ||||
(*idx)++; | ||||
ret= Xorriso_option_joliet_map(xorriso, arg1, 0); | ||||
} else if(strcmp(cmd, "launch_frontend") == 0) { | } else if(strcmp(cmd, "launch_frontend") == 0) { | |||
ret= Xorriso_option_launch_frontend(xorriso, argc, argv, idx, 0); | ret= Xorriso_option_launch_frontend(xorriso, argc, argv, idx, 0); | |||
} else if(strcmp(cmd, "list_arg_sorting") == 0) { | } else if(strcmp(cmd, "list_arg_sorting") == 0) { | |||
ret= Xorriso_option_list_arg_sorting(xorriso, 0); | ret= Xorriso_option_list_arg_sorting(xorriso, 0); | |||
} else if(strcmp(cmd, "list_delimiter") == 0) { | } else if(strcmp(cmd, "list_delimiter") == 0) { | |||
(*idx)++; | (*idx)++; | |||
ret= Xorriso_option_list_delimiter(xorriso, arg1, 0); | ret= Xorriso_option_list_delimiter(xorriso, arg1, 0); | |||
skipping to change at line 1915 | skipping to change at line 1932 | |||
fprintf(stderr, " sleep_peek\n"); | fprintf(stderr, " sleep_peek\n"); | |||
fprintf(stderr, " sleep 1 s and perform Xorriso_peek_outlists()\n"); | fprintf(stderr, " sleep 1 s and perform Xorriso_peek_outlists()\n"); | |||
fprintf(stderr, " peek_loop\n"); | fprintf(stderr, " peek_loop\n"); | |||
fprintf(stderr, " wait for up to 3s in Xorriso_peek_outlists()\n"); | fprintf(stderr, " wait for up to 3s in Xorriso_peek_outlists()\n"); | |||
fprintf(stderr, " for return value 0 or -1\n"); | fprintf(stderr, " for return value 0 or -1\n"); | |||
fprintf(stderr, " start\n"); | fprintf(stderr, " start\n"); | |||
fprintf(stderr, " perform Xorriso_start_msg_watcher()\n"); | fprintf(stderr, " perform Xorriso_start_msg_watcher()\n"); | |||
fprintf(stderr, " stop\n"); | fprintf(stderr, " stop\n"); | |||
fprintf(stderr, " perform Xorriso_stop_msg_watcher()\n"); | fprintf(stderr, " perform Xorriso_stop_msg_watcher()\n"); | |||
} else { | } else { | |||
fprintf(stderr, "xorriso -test: unknwon mode: %s\n", arg1); | fprintf(stderr, "xorriso -test: unknown mode: %s\n", arg1); | |||
} | } | |||
ret= 0; | ret= 0; | |||
} | } | |||
} else if(strcmp(cmd,"toc")==0) { | } else if(strcmp(cmd,"toc")==0) { | |||
Xorriso_option_toc(xorriso, 0); | Xorriso_option_toc(xorriso, 0); | |||
} else if(strcmp(cmd,"toc_of")==0) { | } else if(strcmp(cmd,"toc_of")==0) { | |||
(*idx)++; | (*idx)++; | |||
Xorriso_option_toc_of(xorriso, arg1, 0); | Xorriso_option_toc_of(xorriso, arg1, 0); | |||
} else if(strcmp(cmd,"truncate_overwritable")==0) { | ||||
(*idx)+= 3; | ||||
ret= Xorriso_option_truncate_overwritable(xorriso, arg1, arg2, arg3, 0); | ||||
} else if(strcmp(cmd,"uid")==0) { | } else if(strcmp(cmd,"uid")==0) { | |||
(*idx)++; | (*idx)++; | |||
ret= Xorriso_option_uid(xorriso,arg1,0); | ret= Xorriso_option_uid(xorriso,arg1,0); | |||
} else if(strcmp(cmd,"unregister_filter")==0) { | } else if(strcmp(cmd,"unregister_filter")==0) { | |||
(*idx)++; | (*idx)++; | |||
ret= Xorriso_option_unregister_filter(xorriso, arg1, 0); | ret= Xorriso_option_unregister_filter(xorriso, arg1, 0); | |||
} else if(strcmp(cmd,"update")==0) { | } else if(strcmp(cmd,"update")==0) { | |||
(*idx)+= 2; | (*idx)+= 2; | |||
End of changes. 12 change blocks. | ||||
7 lines changed or deleted | 29 lines changed or added |