/*************************************************************************** * _______ _______ _______ * * | ___ |____ | ___ | * * | | |_| / /| | |_| * * | |_____ / / | |_____ * * |_____ | / / |_____ | * * _ | | / / _ | | * * | |___| |/ /____| |___| | * * |_______|_______|_______| * * * * Wiimms SZS Tools * * * *************************************************************************** * * * This file is part of the SZS project. * * Visit https://szs.wiimm.de/ for project details and sources. * * * * Copyright (c) 2011-2024 by Dirk Clemens * * * *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt * * * *************************************************************************** * * * >>> This file is automatically generated by './src/gen-ui.c'. <<< * * >>> Do not edit this file! <<< * * * ***************************************************************************/ #include #include "ui-wlect.h" // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionInfo[] /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { {0,0,0,0,0,0,0,0,0,0}, // OPT_NONE, //----- command specific options ----- { OPT_PLUS, false, false, false, false, false, 0, "plus", "chars", "If a name begins with a plus sign, then all characters up to the" " first space are recognized as a plus prefix. The first part consists" " of all the plus signs followed by any other characters. The first" " character of the second part is used to determine the sort value. If" " the second part is empty, then the last plus sign is used instead.\n" " The higher sorting value is now calculated from the number of plus" " signs in the first part, the more plus signs, the smaller the value." " The first character from the second part determines the lower value." " If it is in parameter CHARS then the position determines the value," " otherwise the ASCII value to which 500 is added." }, { OPT_ROUND, false, false, false, false, false, 0, "round", 0, "Print additional lines with rounded values (to 3 and 2 bytes for" " floats and 7 and 6 bytes for doubles)." }, { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print long numeric message IDs instead of alternative message names" " like Txx, Uxx or Mxx." }, { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header", 0, "Suppress the syntax information section in BMG text files." }, { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Suppress cross reference comments." }, { OPT_NO_WILDCARDS, false, false, false, false, false, 0, "no-wildcards", 0, "Disable wildcard parsing and use each filename exactly as specified." }, { OPT_IN_ORDER, false, false, false, false, false, 0, "in-order", 0, "Process the input files in order of the command line and don't delete" " duplicates." }, { OPT_EXPORT, false, false, false, false, false, 'X', "export", 0, "Enable the export mode and create small and machine readable text" " files for easy post processing." }, { OPT_NO_PARAM, false, false, false, false, false, 'P', "no-param", 0, "Disable parameter support in decoded KMP text files." }, { OPT_NO_ECHO, false, false, false, false, false, 0, "no-echo", 0, "Suppress output of @ECHO commands while scanning text files." }, { OPT_LT_CLEAR, false, false, false, false, true, 0, "lt-clear", 0, "Clear LEX section TEST and remove the section if empty. This option" " is executed before all other --lt-* options." }, { OPT_LT_ONLINE, false, false, false, false, false, 0, "lt-online", "value", "Set LEX/TEST parameter OFFLINE-ONLINE to this MODE. MODE is one of" " AUTO (default), NEVER or ALWAYS. If needed, LEX section TEST is" " created or removed if empty." }, { OPT_LT_N_PLAYERS, false, false, false, false, false, 0, "lt-n-players", "offline,online", "Set LEX/TEST parameters N-OFFLINE and N-ONLINE to these integer" " values. If needed, LEX section TEST is created or removed if empty." }, { OPT_CREATE_DISTRIB, false, false, false, false, false, 0, "create-distrib", "file", "Create a LE-CODE distribution dump with a track list and more info" " about the current distribution. Store the dump into a file." }, { OPT_LE_DEFINE, false, false, false, false, true, 0, "le-define", "file", "Use this file as definition file to patch LE-CODE. The file format" " can be LE-BIN or any supported CT-CODE file (BRRES, TEX0, CT-CODE or" " CT-TEXT)." }, { OPT_LE_ARENA, false, true, false, false, false, 0, "le-arena", "file", "Use this file to define property and music defaults for arenas. The" " file format can be an text file. Option --le-define may override" " these defaults." }, { OPT_LPAR, false, false, false, false, false, 0, "lpar", "file", "Read a LPAR file to overwrite settings of LE-CODE section LPAR." }, { OPT_ALIAS, false, false, false, false, false, 0, "alias", "list", "The parameter is a comma separated list of SLOT=ALIAS elements. SLOT" " defines the slot, for which the ALIAS is defined. ALIAS itself is a" " slot number to be executed, if SLOT is selected. Empty and invalid" " elements are ignored. Multiple usage is possible: the lists are" " concatenated." }, { OPT_ENGINE, false, false, false, false, false, 0, "engine", "list", "Define probabilities for engine classes. LIST is a vector for" " 100cc,150cc,mirror If 200cc is enabled by --200cc, then vector is" " interpreted as 150cc,200cc,mirror. Any numbers are accepted. They" " are normalized to get a total of 100 percent. Use 0,1,0 to force" " 150cc only. Use 0,0,0 to reset to Nintendos VR based choice." }, { OPT_200CC, true, false, false, false, false, 0, "200cc", "[=mode]", "Enable or disable 200cc support. Mode is one of OFF, AUTO (default)" " or ON (default, if option is used without parameter). LE-CODE hasn't" " implemented this feature yet!" }, { OPT_PERFMON, true, false, false, false, false, 0, "perf-mon", "[=mode]", "Enable or disable the performance monitor. Mode is one of OFF, AUTO" " (default, don't change setting), ON (enable it for Wii and Wii U" " only; default, if option is used without parameter) or FORCE (enable" " it for Wii, Wii U and for Dolphin)." }, { OPT_CUSTOM_TT, true, false, false, false, false, 0, "custom-tt", "[=mode]", "Enable or disable time trial for custom tracks. Mode is one of OFF," " AUTO (default) or ON (default, if option is used without parameter)." }, { OPT_XPFLAGS, true, false, false, false, false, 0, "xpflags", "[=mode]", "Enable or disable support for Extended Presence Flags. Mode is one of" " OFF, AUTO (default) or ON (default, if option is used without" " parameter). Disable it only for tests!" }, { OPT_SPEEDOMETER, true, false, false, false, false, 0, "speedometer", "[=mode]", "Enable or disable the speedometer. Mode is one of OFF, AUTO (default," " don't change setting), ON (default, if option is used without" " parameter) or FRACTION (=1DIGIT), 2DIGITS and 3DIGITS." }, { OPT_DEBUG, false, false, false, false, false, 0, "debug", "mode", "Enable or disable the debug output while racing. Mode is one of OFF," " AUTO (default, don't change setting), USER or 100 to 199 for" " predefined setups." }, { OPT_TRACK_DIR, false, false, false, false, true, 0, "track-dir", "directory", "Define a destination directory, where track files are copied, moved" " or linked to. Usually it is .../Race/Course/.\n" " Files are searched in directories defined by --copy-tracks," " --move-tracks, --move1-tracks and --link-tracks in definition order." " Already existing files are removed before operation." }, { OPT_COPY_TRACKS, false, false, false, false, false, 0, "copy-tracks", "directory", "Define a search directory for all included tracks. Files found in" " this directory are copied to the directory specified by option" " --track-dir." }, { OPT_MOVE_TRACKS, false, false, false, false, false, 0, "move-tracks", "directory", "Define a search directory for all included tracks. Files found in" " this directory are moved to the directory specified by option" " --track-dir. If moving fails, the file is copied and the source" " removed." }, { OPT_MOVE1_TRACKS, false, false, false, false, false, 0, "move1-tracks", "directory", "Define a search directory for all included tracks. Files found in" " this directory are moved to the directory specified by option" " --track-dir, but only if a file has not more than one hard link." " This guarantees an unique version of the file. If the file has more" " hard links or moving fails, the file is copied and the source" " removed." }, { OPT_LINK_TRACKS, false, false, false, false, false, 0, "link-tracks", "directory", "Define a search directory for all included tracks. Files found in" " this directory are linked to the directory specified by option" " --track-dir. If linking fails, the file is copied." }, { OPT_SZS_MODE, false, false, false, false, false, 0, "szs-mode", "mode", "If a track is inserted via the SZS file, then the associated" " directory is automatically included in the list of search" " directories for option --track-dir. This option now sets the" " transfer mode. OFF turns this feature off. The values COPY, MOVE," " MOVE1 and LINK define one of the 4 modes. Default mode is LINK." }, { OPT_COMPLETE, false, false, false, false, true, 'C', "complete", 0, " Append missing sections to the LEX file." }, { OPT_LOAD_BMG, false, false, false, false, true, 0, "load-bmg", "file", "Load immediately the file to fill an internal message pool. The" " option can be used multiple times to fill the message pool by" " different sources. A later message overrides the previous message.\n" " The internal message pool is patched by all --patch-bmg options." }, { OPT_PATCH_BMG, false, false, false, false, false, 0, "patch-bmg", "mode[cond][=param]", "This option specifies a BMG patch mode. Some of the modes need a" " parameter or a file name of a BMG patch file (raw or text BMG), both" " separated by an equal sign. Modes with required file names are" " PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL and NOTEQUAL." " Modes with text parameter are FORMAT, REGEXP and RM-REGEXP. " " Standalone modes are ID, ID-ALL, UNICODE, RM-ESCAPES, RM-CUPS," " CT-COPY, CT-FORCE-COPY, CT-FILL, LE-COPY, LE-FORCE-COPY, LE-FILL," " X-COPY, X-FORCE-COPY and X-FILL. Unique abbreviations are allowed.\n" " The optional condition COND is either '?MID' or '!MID'. In case of" " '?MID', the patch is only applied if the message id MID already" " exists. In case of '!MID', the patch is only applied if the message" " id MID does not exists.\n" " If this option is used multiple times, all patch files will be" " processed in the entered order. Read" " https://szs.wiimm.de/opt/patch-bmg for more details." }, { OPT_MACRO_BMG, false, false, false, false, false, 0, "macro-bmg", "file", "Load a BMG file and add the messages to the macro library; already" " existing entries are replaced. The macro library is accessed by" " escape sequence \\m{MID} as fallback, if the active file has not" " already defined the message MID by itself." }, { OPT_PATCH_NAMES, false, false, false, false, false, 0, "patch-names", 0, "If set, the names of the CUP1 and CSR1 sections are patched by the" " loaded BMG files directly after loading the source files." }, { OPT_ORDER_BY, false, false, false, false, false, 0, "order-by", "bmg", "Load the BMG file and filter track names. Then before creating output" " files, re-distribute the tracks of the additonal cups (9-) to the" " same cups by the order of the read track names. Tracks without BMG" " reference are placed at the end of all tracks. This option modifes" " only the track order of the cups, but will not change any name." }, { OPT_ORDER_ALL, false, false, false, false, false, 0, "order-all", 0, "Used together with option --order-by: Re-distribute the tracks of all" " cups beginning with Mushroom Cup." }, { OPT_DEST, false, false, false, false, true, 'd', "dest", "path", "Define a destination path (directory/file). The destination - means:" " write to standard output.\n" " The path may contain escape sequences: %Q is replaced by the fully" " qualified source name. %P and %F are replaced by the source path or" " by the filename. %N and %E are replaced by source filename without" " extension or by the source extension. Finally, %T is replaced by the" " default extension of the destination format.\n" " A '?' direct behind '%' in %E and %T conversions avoid that the" " same extension is used twice in row. Read" " https://szs.wiimm.de/opt/dest for more details." }, { OPT_DEST2, false, false, false, false, false, 'D', "DEST", "path", "Like --dest, but create the directory path automatically." }, { OPT_ESC, false, false, false, false, false, 'E', "esc", "char", "Define an alternative escape character for destination files. The" " default is '%'. For Windows batch files it is a good choice to set" " '-E$'." }, { OPT_OVERWRITE, false, false, false, false, false, 'o', "overwrite", 0, "Overwrite already existing files without warning and ignore option" " --number." }, { OPT_NUMBER, false, false, false, false, false, 0, "number", 0, "If a file already exist, append a number directly before the file" " extension to make the filename unique. If other numbered files" " already exist (ignoring case), use the maximum existing index+1." " --num is a short cut." }, { OPT_REMOVE_DEST, false, false, false, false, false, 'r', "remove-dest", 0, "Remove already existing files before creating it. If set, --overwrite" " is ignored. --rm-dest is a short cut." }, { OPT_UPDATE, false, false, false, false, false, 'u', "update", 0, "Update only existing files and don't create new files. If set," " --overwrite and --remove-dest are ignored." }, { OPT_PRESERVE, false, false, false, false, false, 'p', "preserve", 0, "Preserve file times (atime+mtime) while converting or copying files." }, { OPT_IGNORE, false, false, false, false, false, 'i', "ignore", 0, "Ignore non existing source files without warning." }, { OPT_SECTIONS, false, false, false, false, true, 0, "sections", 0, "Print in machine readable sections and parameter lines." }, {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 49 //----- global options ----- { OPT_VERSION, false, false, false, false, false, 'V', "version", 0, "Stop parsing the command line, print a version info and exit." }, { OPT_HELP, false, false, false, false, false, 'h', "help", 0, "Stop parsing the command line, print a help message and exit." }, { OPT_XHELP, false, false, false, false, false, 0, "xhelp", 0, "Stop parsing the command line and print a help message with all" " commands included. Exit after printing." }, { OPT_CONFIG, false, false, false, false, false, 0, "config", "file", "Define a configuration file or a directory as source. In later case," " file 'wiimms-szs-tools.conf' is searched.\n" " If option is not not set, then file 'wiimms-szs-tools.conf' is" " searched in different directories. Use command 'wszst CONFIG' to get" " more details." }, { OPT_YDEBUG, false, true, false, false, false, 0, "ydebug", 0, " Enable Macros yBINGO and yTRACELINE." }, { OPT_ALLOW_ALL, false, false, false, false, false, 0, "allow-all", 0, "Usually commands accept only options with impact to the command. All" " other options fire a syntax error. But if --allow-all is set, all" " commands accept all options.\n" " This makes changing the command of a long command line without" " removing useless options easier. It also helps to override wrong" " option permissions." }, { OPT_COMPATIBLE, false, false, false, false, false, 0, "compatible", "vers", "The option expects a version number (format '#.##' or 'v#.##') or a" " revision number (format 'r#') as parameter. If set, the tools try to" " create BMG and KMP text files, that are compatible to the entered" " version of the tools. This may override other legacy options." }, { OPT_WIDTH, false, false, false, true, false, 0, "width", "width", "Define the terminal width (number of columns) for help and some other" " messages and disable the automatic detection of the terminal width." }, { OPT_MAX_WIDTH, false, false, false, true, false, 0, "max-width", "maxwidth", "Define the maximum terminal width (number of columns) for help and" " some other messages. The default is 120. This option is ignored if" " --width is set." }, { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager", 0, "Forbid the internal usage of a pager." }, { OPT_ZERO, false, false, false, false, false, 'z', "zero", 0, "This option affects the exit status of the programs. Instead of an" " exit status, the value 0 is returned for OK. This happens for" " notices (-v, status<15), warnings (-vv, status<29), errors (-vvv," " status<115) and fatal errors (-vvvv). The exit status for INTERRUPT" " (112) is never replaced." }, { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, "Be quiet and print only error messages. Multiple use is possible." " Previous use of --verbose is reverted. The impact is command" " dependent. If set at least three times, almost all error messages" " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, "Be verbose and print more progress information. Multiple use is" " possible. Previous use of --quiet is reverted. The impact is command" " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", 0, "This debug option enables the logging of internal lists and maps. Set" " it up to three times to be more verbose." }, { OPT_EXT_ERRORS, false, false, false, false, false, 'Y', "extended-errors", 0, "Enable extended error messages. This includes a source file and line" " reference. Logging level 1 activates it too. --xerr is a short cut." }, { OPT_TIMING, false, false, false, false, false, 0, "timing", 0, "Activate the timing of some operations. Logging level 3 activates" " them too." }, { OPT_WARN, false, false, false, false, false, 'W', "warn", "list", "Enable or disable warnings. Parameter 'list' is a comma separated" " list of keywords. A minus sign before a keyword disables a warning." " Each occurrence of the option will only change entered warning and" " all other warnings are untouched.\n" " Keyword DEFAULT resets the default settings, OFF disables and ALL" " enables all. The other allowed keywords are: INVALID-OFFSET." }, { OPT_DE, false, false, false, false, false, 0, "de", 0, "Use german track and arena names." }, { OPT_COLORS, true, false, false, true, false, 0, "colors", "[=modus]", "Define the modus for colored text output. Allowed keywords are: OFF" " or NO-COLORS to disable colors, AUTO (default) for automatic" " detection, ON for automatic detection but never OFF, 8-COLORS and" " 256-COLORS to force 8 or 256 color support. Without parameter, ON is" " used.\n" " AUTO will enable colorized output only for terminals. AUTO and ON" " use environment variable TERM to find the correct color modus.\n" " If a command is prefixed by 'C-', then --color=ON is used" " implicitly as default." }, { OPT_NO_COLORS, false, false, false, true, false, 0, "no-colors", 0, "Deactive colorized text. This is the default, if an output file is" " not a terminal." }, { OPT_CT_CODE, false, false, false, false, false, 0, "ct-code", 0, "Enable CT-CODE support. See https://szs.wiimm.de/opt/ctcode for" " details." }, { OPT_LE_CODE, true, false, false, false, false, 0, "le-code", "[=param]", "This option is completely ignored by wlect. It only exists due to" " compatibility with the other tools." }, { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", 0, "Use format %04x instead of %03x for LE-CODE slots to enable uniform" " slot numbers if slots >4095 are used." }, { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix", "file", "Read in a PREFIX file and replace the internal prefix database with" " the content. https://ct.wiimm.de/export/prefix is the authoritative" " source for this." }, { OPT_LOAD_CATEGORY, false, false, false, false, false, 0, "load-category", "file", "Read in a CATEGORY file and replace the internal category database" " with the content. https://ct.wiimm.de/export/category is the" " authoritative source for this." }, { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" " parameters and for the command execution. This option can be used" " multiple times, but for parameter parsing and for command execution" " only the last usage is relevant. Nevertheless, '@param' values are" " scanned while reading the command line." }, { OPT_CONST, false, false, false, false, false, 'c', "const", "list", "Define constant values, that are used by the internal encoders and by" " the numeric options as predefined global variables. This option" " allows a conditional encoding of text files. It can be used multiple" " times for multiple definitions.\n" " The parameter is a comma separated list of terms and a term is" " 'name=expression'. The expression is calculated by the text parser." }, { OPT_MAX_FILE_SIZE, false, false, false, false, false, 'M', "max-file-size", "size", "This security option defines the maximum file size for input files;" " larger files are ignored with a warning. The default unit is MiB and" " the default size is 100 MiB (2 GiB for LTA); that should be enough" " for standard usage." }, { OPT_UTF_8, false, true, false, false, true, 0, "utf-8", 0, "Enables UTF-8 support for filenames (default)." }, { OPT_NO_UTF_8, false, true, false, false, false, 0, "no-utf-8", 0, "Disables UTF-8 support for filenames." }, { OPT_CACHE, false, false, false, false, true, 0, "cache", "dir", "Define a directory for an SZS cache. The cache is used to generate" " LTA files when new compression is forced. Option --remove-dest is" " set automatically to protect cache integrity.\n" " The idea behind the cache: Loading an SZS file and comparing the" " decompressed content is clearly faster than compressing the file." }, { OPT_LOG_CACHE, false, false, false, false, false, 0, "log-cache", "file", "Define a file to log chache activities. Use '-' to log to stdout or" " stderr. The file is openend in append-mode." }, { OPT_LT_COND_BIT, false, false, false, false, false, 0, "lt-cond-bit", "bitnum", "Set LEX/TEST parameter COND-BIT to this integer value. Use -1 to" " deactivate this COND-BIT. If needed, LEX section TEST are created or" " removed if empty." }, { OPT_LT_GAME_MODE, false, false, false, false, false, 0, "lt-game-mode", "mode", "Set LEX/TEST parameter GAME-MODE to this MODE. MODE is one of AUTO" " (default), Balloon, COIN, VERSUS or ITEMRAIN. If needed, LEX section" " TEST is created or removed if empty." }, { OPT_LT_ENGINE, false, false, false, false, false, 0, "lt-engine", "mode", "Set LEX/TEST parameter ENGINE to this MODE. MODE is one of AUTO" " (default), BATTLE, 50CC, 100CC, 150CC, 200CC, 150M or 200M. Only" " track.szs files are modified. If needed, LEX section TEST is created" " or removed if empty." }, { OPT_LT_RANDOM, false, false, false, false, false, 0, "lt-random", "index", "Force a random scenario, if INDEX is between 1 and 8. Value 0 enables" " auto selection and -1 disables this option. If needed, LEX section" " TEST is created or removed if empty." }, { OPT_LEX_PURGE, false, false, false, false, false, 0, "lex-purge", 0, "Delete LEX sections without any impact. This option is executed after" " all --lt-* options." }, { OPT_LEX_RM_FEAT, false, false, false, false, false, 0, "rm-features", 0, "Remove LEX setion FEAT (features) if exists. It is executed after" " --lex-purge. --lex-rm-features is an alternative name." }, { OPT_TEST, false, false, false, false, true, 't', "test", 0, "Run in test mode, modify nothing.\n" ">>> USE THIS OPTION IF UNSURE! <<<" }, { OPT_FORCE, false, false, false, false, false, 0, "force", 0, "The tools analyse input files and reject files with invalid data" " structures. If --force is set, little repairable issues are ignored" " and a warning is printed.\n" "Option '--kmp force' does the same, but only for KMP files.\n" ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" }, { OPT_REPAIR_MAGICS, true, false, false, false, false, 0, "repair-magics", "[=mode]", "Control the reparing of missing or wrong magics of files and" " sub-files by analysing file path and file extension. MODE is one of" " OFF (default), ANALYZE or REPAIR (default, if set without mode). OFF" " disables this feature, ANALYZE enables it for analysis only, and" " REPAIR repairs all magics while reading the files. Keyword FNAME can" " be appended (separated by a comma) to give filename scanning the" " highest priority.\n" ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" }, { OPT_OLD, false, true, false, false, false, 0, "OLD", 0, "Developer option: Cancel --NEW and use old implementation if" " available." }, { OPT_STD, false, true, false, false, false, 0, "STD", 0, "Developer option: Cancel --OLD and --NEW and use standard" " implementation (default)." }, { OPT_NEW, false, true, false, false, false, 0, "NEW", 0, "Developer option: Cancel --OLD and use new implementation if" " available." }, { OPT_EXTRACT, false, true, false, false, false, 0, "EXTRACT", 0, "Create the directory and extract different objects in different" " formats at the moment when they are seen. This is a development" " helper option." }, {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 94 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// alternate option infos /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t option_grp_TEXTOPT_NO_HEADER = { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header", 0, "Suppress the syntax information section in LE text files." }; static const InfoOption_t option_cmd_VERSION_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Print only the version number, revision and system. If set twice," " print only the version number." }; static const InfoOption_t option_cmd_VERSION_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print in long format. Ignored if option --sections is set." }; static const InfoOption_t option_cmd_CONFIG_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, " Suppress configuration search list." }; static const InfoOption_t option_cmd_CONFIG_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "If set, print the global search list too. If set twice, print the" " auto-add search list too." }; static const InfoOption_t option_cmd_COLORS_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print also a list of all colored text types. If set twice, include" " alternative names. If set three times, include raw color names." }; static const InfoOption_t option_cmd_COLORS_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Ignore option --long and print a single status line about current" " color settings." }; static const InfoOption_t option_cmd_ERROR_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print message text instead of message name." }; static const InfoOption_t option_cmd_ERROR_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Print message number instead of message name." }; static const InfoOption_t option_cmd_FILETYPE_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print an additional column with the decompressed file type and" " version. If entered twice, a validation status column is added." }; static const InfoOption_t option_cmd_FUNCTIONS_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Suppress the output of the description and print only function type" " and syntax." }; static const InfoOption_t option_cmd_FUNCTIONS_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Usually only the function syntax is compared to the keywords. But if" " --long is set, the descriptions are compared too." }; static const InfoOption_t option_cmd_DUMP_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "For LE-CODE binaries: If set, print infos about file header only." }; static const InfoOption_t option_cmd_DUMP_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "For LE-CODE binaries: If set, print cups with tracks or arenas. For" " each track, property and music slot is printed in brackets. If set" " twice, print a track list too. If set 3 times, print a track slot" " usage map too (same as -v).\n" " For LEX binaries: If set, print a hex dump of max 16 bytes (1 line)" " of the element data. If set twice, print a hex dump of max 64 bytes" " (4 lines). If set 3 times ore more, print a complete hex dump." }; static const InfoOption_t option_cmd_DUMP_VERBOSE = { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, "For LE-CODE binaries: If set, print a track slot usage map." }; static const InfoOption_t option_cmd_BIN_DIFF_QUIET = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, "Suppress all messages and tell result as exit status only." }; static const InfoOption_t option_cmd_BIN_DIFF_VERBOSE = { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, "Be more verbose and tell, what tests are planned." }; // /////////////////////////////////////////////////////////////////////////////// /////////////// CommandTab[] /////////////// /////////////////////////////////////////////////////////////////////////////// static const KeywordTab_t CommandTab[] = { { CMD_VERSION, "VERSION", "V", 0 }, { CMD_HELP, "HELP", "H", 0 }, { CMD_HELP, "?", 0, 0 }, { CMD_CONFIG, "CONFIG", 0, 0 }, { CMD_ARGTEST, "ARGTEST", 0, 0 }, { CMD_EXPAND, "EXPAND", 0, 0 }, { CMD_TEST, "TEST", 0, 0 }, { CMD_COLORS, "COLORS", 0, 0 }, { CMD_ERROR, "ERROR", "ERR", 0 }, { CMD_FILETYPE, "FILETYPE", "FT", 0 }, { CMD_FILEATTRIB, "FILEATTRIB", "FA", 0 }, { CMD_SYMBOLS, "SYMBOLS", 0, 0 }, { CMD_FUNCTIONS, "FUNCTIONS", 0, 0 }, { CMD_CALCULATE, "CALCULATE", 0, 0 }, { CMD_FLOAT, "FLOAT", 0, 0 }, { CMD_EXPORT, "_EXPORT", 0, 0 }, { CMD_DPAD, "_DPAD", 0, 0 }, { CMD_DUMP, "DUMP", "D", 0 }, { CMD_DB, "DBwlect DL [source]...",0, 0 }, { CMD_DL, "DL", 0, 0 }, { CMD_DLL, "DLL", 0, 0 }, { CMD_DLLL, "DLLL", 0, 0 }, { CMD_BIN_DIFF, "BIN-DIFF", "BINDIFF", 0 }, { CMD_BIN_DIFF, "BD", 0, 0 }, { CMD_PATCH, "PATCH", "P", 0 }, { CMD_TIMESTAMP, "TIMESTAMP", 0, 0 }, { CMD_LPAR, "LPAR", 0, 0 }, { CMD_CREATE, "CREATE", "CR", 0 }, { CMD_DISTRIBUTION, "DISTRIBUTION", "DIS", 0 }, { CMD_DISTRIBUTION, "DISTRIB", 0, 0 }, { CMD_CAT, "CAT", 0, 0 }, { CMD_DECODE, "DECODE", "DEC", 0 }, { CMD_ENCODE, "ENCODE", "ENC", 0 }, { CMD__N,0,0,0 } }; // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionShort & OptionLong /////////////// /////////////////////////////////////////////////////////////////////////////// static const char OptionShort[] = "VhzqvLYW:c:lHBXPM:tCd:D:E:orupi"; static const struct option OptionLong[] = { { "version", 0, 0, 'V' }, { "help", 0, 0, 'h' }, { "xhelp", 0, 0, GO_XHELP }, { "config", 1, 0, GO_CONFIG }, { "ydebug", 0, 0, GO_YDEBUG }, { "allow-all", 0, 0, GO_ALLOW_ALL }, { "allowall", 0, 0, GO_ALLOW_ALL }, { "compatible", 1, 0, GO_COMPATIBLE }, { "width", 1, 0, GO_WIDTH }, { "max-width", 1, 0, GO_MAX_WIDTH }, { "maxwidth", 1, 0, GO_MAX_WIDTH }, { "no-pager", 0, 0, GO_NO_PAGER }, { "nopager", 0, 0, GO_NO_PAGER }, { "zero", 0, 0, 'z' }, { "quiet", 0, 0, 'q' }, { "verbose", 0, 0, 'v' }, { "logging", 0, 0, 'L' }, { "extended-errors", 0, 0, 'Y' }, { "extendederrors", 0, 0, 'Y' }, { "xerr", 0, 0, 'Y' }, { "timing", 0, 0, GO_TIMING }, { "warn", 1, 0, 'W' }, { "de", 0, 0, GO_DE }, { "colors", 2, 0, GO_COLORS }, { "no-colors", 0, 0, GO_NO_COLORS }, { "nocolors", 0, 0, GO_NO_COLORS }, { "ct-code", 0, 0, GO_CT_CODE }, { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, { "le-04x", 0, 0, GO_LE_04X }, { "le04x", 0, 0, GO_LE_04X }, { "load-prefix", 1, 0, GO_LOAD_PREFIX }, { "loadprefix", 1, 0, GO_LOAD_PREFIX }, { "load-category", 1, 0, GO_LOAD_CATEGORY }, { "loadcategory", 1, 0, GO_LOAD_CATEGORY }, { "plus", 1, 0, GO_PLUS }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "round", 0, 0, GO_ROUND }, { "long", 0, 0, 'l' }, { "no-header", 0, 0, 'H' }, { "noheader", 0, 0, 'H' }, { "brief", 0, 0, 'B' }, { "no-wildcards", 0, 0, GO_NO_WILDCARDS }, { "nowildcards", 0, 0, GO_NO_WILDCARDS }, { "in-order", 0, 0, GO_IN_ORDER }, { "inorder", 0, 0, GO_IN_ORDER }, { "export", 0, 0, 'X' }, { "no-param", 0, 0, 'P' }, { "noparam", 0, 0, 'P' }, { "no-echo", 0, 0, GO_NO_ECHO }, { "noecho", 0, 0, GO_NO_ECHO }, { "max-file-size", 1, 0, 'M' }, { "maxfilesize", 1, 0, 'M' }, { "utf-8", 0, 0, GO_UTF_8 }, { "utf8", 0, 0, GO_UTF_8 }, { "no-utf-8", 0, 0, GO_NO_UTF_8 }, { "no-utf8", 0, 0, GO_NO_UTF_8 }, { "noutf8", 0, 0, GO_NO_UTF_8 }, { "cache", 1, 0, GO_CACHE }, { "log-cache", 1, 0, GO_LOG_CACHE }, { "logcache", 1, 0, GO_LOG_CACHE }, { "lt-clear", 0, 0, GO_LT_CLEAR }, { "ltclear", 0, 0, GO_LT_CLEAR }, { "lt-online", 1, 0, GO_LT_ONLINE }, { "ltonline", 1, 0, GO_LT_ONLINE }, { "lt-n-players", 1, 0, GO_LT_N_PLAYERS }, { "lt-nplayers", 1, 0, GO_LT_N_PLAYERS }, { "ltnplayers", 1, 0, GO_LT_N_PLAYERS }, { "lt-cond-bit", 1, 0, GO_LT_COND_BIT }, { "lt-condbit", 1, 0, GO_LT_COND_BIT }, { "ltcondbit", 1, 0, GO_LT_COND_BIT }, { "lt-game-mode", 1, 0, GO_LT_GAME_MODE }, { "lt-gamemode", 1, 0, GO_LT_GAME_MODE }, { "ltgamemode", 1, 0, GO_LT_GAME_MODE }, { "lt-engine", 1, 0, GO_LT_ENGINE }, { "ltengine", 1, 0, GO_LT_ENGINE }, { "lt-random", 1, 0, GO_LT_RANDOM }, { "ltrandom", 1, 0, GO_LT_RANDOM }, { "lex-purge", 0, 0, GO_LEX_PURGE }, { "lexpurge", 0, 0, GO_LEX_PURGE }, { "rm-features", 0, 0, GO_LEX_RM_FEAT }, { "rmfeatures", 0, 0, GO_LEX_RM_FEAT }, { "lex-rm-features", 0, 0, GO_LEX_RM_FEAT }, { "lexrmfeatures", 0, 0, GO_LEX_RM_FEAT }, { "test", 0, 0, 't' }, { "force", 0, 0, GO_FORCE }, { "repair-magics", 2, 0, GO_REPAIR_MAGICS }, { "repairmagics", 2, 0, GO_REPAIR_MAGICS }, { "create-distrib", 1, 0, GO_CREATE_DISTRIB }, { "createdistrib", 1, 0, GO_CREATE_DISTRIB }, { "OLD", 0, 0, GO_OLD }, { "STD", 0, 0, GO_STD }, { "NEW", 0, 0, GO_NEW }, { "EXTRACT", 0, 0, GO_EXTRACT }, { "le-define", 1, 0, GO_LE_DEFINE }, { "ledefine", 1, 0, GO_LE_DEFINE }, { "le-arena", 1, 0, GO_LE_ARENA }, { "learena", 1, 0, GO_LE_ARENA }, { "lpar", 1, 0, GO_LPAR }, { "alias", 1, 0, GO_ALIAS }, { "engine", 1, 0, GO_ENGINE }, { "200cc", 2, 0, GO_200CC }, { "perf-mon", 2, 0, GO_PERFMON }, { "perfmon", 2, 0, GO_PERFMON }, { "custom-tt", 2, 0, GO_CUSTOM_TT }, { "customtt", 2, 0, GO_CUSTOM_TT }, { "xpflags", 2, 0, GO_XPFLAGS }, { "speedometer", 2, 0, GO_SPEEDOMETER }, { "debug", 1, 0, GO_DEBUG }, { "track-dir", 1, 0, GO_TRACK_DIR }, { "trackdir", 1, 0, GO_TRACK_DIR }, { "copy-tracks", 1, 0, GO_COPY_TRACKS }, { "copytracks", 1, 0, GO_COPY_TRACKS }, { "move-tracks", 1, 0, GO_MOVE_TRACKS }, { "movetracks", 1, 0, GO_MOVE_TRACKS }, { "move1-tracks", 1, 0, GO_MOVE1_TRACKS }, { "move1tracks", 1, 0, GO_MOVE1_TRACKS }, { "link-tracks", 1, 0, GO_LINK_TRACKS }, { "linktracks", 1, 0, GO_LINK_TRACKS }, { "szs-mode", 1, 0, GO_SZS_MODE }, { "szsmode", 1, 0, GO_SZS_MODE }, { "complete", 0, 0, 'C' }, { "load-bmg", 1, 0, GO_LOAD_BMG }, { "loadbmg", 1, 0, GO_LOAD_BMG }, { "patch-bmg", 1, 0, GO_PATCH_BMG }, { "patchbmg", 1, 0, GO_PATCH_BMG }, { "pb", 1, 0, GO_PATCH_BMG }, { "macro-bmg", 1, 0, GO_MACRO_BMG }, { "macrobmg", 1, 0, GO_MACRO_BMG }, { "mb", 1, 0, GO_MACRO_BMG }, { "patch-names", 0, 0, GO_PATCH_NAMES }, { "patchnames", 0, 0, GO_PATCH_NAMES }, { "order-by", 1, 0, GO_ORDER_BY }, { "orderby", 1, 0, GO_ORDER_BY }, { "order", 1, 0, GO_ORDER_BY }, { "order-all", 0, 0, GO_ORDER_ALL }, { "orderall", 0, 0, GO_ORDER_ALL }, { "dest", 1, 0, 'd' }, { "DEST", 1, 0, 'D' }, { "esc", 1, 0, 'E' }, { "overwrite", 0, 0, 'o' }, { "number", 0, 0, GO_NUMBER }, { "num", 0, 0, GO_NUMBER }, { "remove-dest", 0, 0, 'r' }, { "removedest", 0, 0, 'r' }, { "rm-dest", 0, 0, 'r' }, { "rmdest", 0, 0, 'r' }, { "remove", 0, 0, 'r' }, { "update", 0, 0, 'u' }, { "preserve", 0, 0, 'p' }, { "ignore", 0, 0, 'i' }, { "sections", 0, 0, GO_SECTIONS }, {0,0,0,0} }; // /////////////////////////////////////////////////////////////////////////////// /////////////// OptionUsed & OptionIndex /////////////// /////////////////////////////////////////////////////////////////////////////// static u8 OptionUsed[OPT__N_TOTAL+1] = {0}; static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = { /* 0x000 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x010 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x020 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x030 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x040 */ 0,0, /* 0x042 B */ OPT_BRIEF, /* 0x043 C */ OPT_COMPLETE, /* 0x044 D */ OPT_DEST2, /* 0x045 E */ OPT_ESC, /* 0x046 */ 0,0, /* 0x048 H */ OPT_NO_HEADER, /* 0x049 */ 0,0,0, /* 0x04c L */ OPT_LOGGING, /* 0x04d M */ OPT_MAX_FILE_SIZE, /* 0x04e */ 0,0, /* 0x050 P */ OPT_NO_PARAM, /* 0x051 */ 0,0,0,0, 0, /* 0x056 V */ OPT_VERSION, /* 0x057 W */ OPT_WARN, /* 0x058 X */ OPT_EXPORT, /* 0x059 Y */ OPT_EXT_ERRORS, /* 0x05a */ 0,0,0,0, 0,0,0,0, 0, /* 0x063 c */ OPT_CONST, /* 0x064 d */ OPT_DEST, /* 0x065 */ 0,0,0, /* 0x068 h */ OPT_HELP, /* 0x069 i */ OPT_IGNORE, /* 0x06a */ 0,0, /* 0x06c l */ OPT_LONG, /* 0x06d */ 0,0, /* 0x06f o */ OPT_OVERWRITE, /* 0x070 p */ OPT_PRESERVE, /* 0x071 q */ OPT_QUIET, /* 0x072 r */ OPT_REMOVE_DEST, /* 0x073 */ 0, /* 0x074 t */ OPT_TEST, /* 0x075 u */ OPT_UPDATE, /* 0x076 v */ OPT_VERBOSE, /* 0x077 */ 0,0,0, /* 0x07a z */ OPT_ZERO, /* 0x07b */ 0,0,0,0, 0, /* 0x080 */ OPT_XHELP, /* 0x081 */ OPT_CONFIG, /* 0x082 */ OPT_YDEBUG, /* 0x083 */ OPT_ALLOW_ALL, /* 0x084 */ OPT_COMPATIBLE, /* 0x085 */ OPT_WIDTH, /* 0x086 */ OPT_MAX_WIDTH, /* 0x087 */ OPT_NO_PAGER, /* 0x088 */ OPT_TIMING, /* 0x089 */ OPT_DE, /* 0x08a */ OPT_COLORS, /* 0x08b */ OPT_NO_COLORS, /* 0x08c */ OPT_CT_CODE, /* 0x08d */ OPT_LE_CODE, /* 0x08e */ OPT_LE_04X, /* 0x08f */ OPT_LOAD_PREFIX, /* 0x090 */ OPT_LOAD_CATEGORY, /* 0x091 */ OPT_PLUS, /* 0x092 */ OPT_CHDIR, /* 0x093 */ OPT_ROUND, /* 0x094 */ OPT_NO_WILDCARDS, /* 0x095 */ OPT_IN_ORDER, /* 0x096 */ OPT_NO_ECHO, /* 0x097 */ OPT_UTF_8, /* 0x098 */ OPT_NO_UTF_8, /* 0x099 */ OPT_CACHE, /* 0x09a */ OPT_LOG_CACHE, /* 0x09b */ OPT_LT_CLEAR, /* 0x09c */ OPT_LT_ONLINE, /* 0x09d */ OPT_LT_N_PLAYERS, /* 0x09e */ OPT_LT_COND_BIT, /* 0x09f */ OPT_LT_GAME_MODE, /* 0x0a0 */ OPT_LT_ENGINE, /* 0x0a1 */ OPT_LT_RANDOM, /* 0x0a2 */ OPT_LEX_PURGE, /* 0x0a3 */ OPT_LEX_RM_FEAT, /* 0x0a4 */ OPT_FORCE, /* 0x0a5 */ OPT_REPAIR_MAGICS, /* 0x0a6 */ OPT_CREATE_DISTRIB, /* 0x0a7 */ OPT_OLD, /* 0x0a8 */ OPT_STD, /* 0x0a9 */ OPT_NEW, /* 0x0aa */ OPT_EXTRACT, /* 0x0ab */ OPT_LE_DEFINE, /* 0x0ac */ OPT_LE_ARENA, /* 0x0ad */ OPT_LPAR, /* 0x0ae */ OPT_ALIAS, /* 0x0af */ OPT_ENGINE, /* 0x0b0 */ OPT_200CC, /* 0x0b1 */ OPT_PERFMON, /* 0x0b2 */ OPT_CUSTOM_TT, /* 0x0b3 */ OPT_XPFLAGS, /* 0x0b4 */ OPT_SPEEDOMETER, /* 0x0b5 */ OPT_DEBUG, /* 0x0b6 */ OPT_TRACK_DIR, /* 0x0b7 */ OPT_COPY_TRACKS, /* 0x0b8 */ OPT_MOVE_TRACKS, /* 0x0b9 */ OPT_MOVE1_TRACKS, /* 0x0ba */ OPT_LINK_TRACKS, /* 0x0bb */ OPT_SZS_MODE, /* 0x0bc */ OPT_LOAD_BMG, /* 0x0bd */ OPT_PATCH_BMG, /* 0x0be */ OPT_MACRO_BMG, /* 0x0bf */ OPT_PATCH_NAMES, /* 0x0c0 */ OPT_ORDER_BY, /* 0x0c1 */ OPT_ORDER_ALL, /* 0x0c2 */ OPT_NUMBER, /* 0x0c3 */ OPT_SECTIONS, /* 0x0c4 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x130 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x140 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x150 */ 0,0,0,0, }; // /////////////////////////////////////////////////////////////////////////////// /////////////// opt_allowed_cmd_* /////////////// /////////////////////////////////////////////////////////////////////////////// static u8 option_allowed_cmd_VERSION[49] = // cmd #1 { 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; static u8 option_allowed_cmd_HELP[49] = // cmd #2 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; static u8 option_allowed_cmd_CONFIG[49] = // cmd #3 { 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_ARGTEST[49] = // cmd #4 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; static u8 option_allowed_cmd_EXPAND[49] = // cmd #5 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; static u8 option_allowed_cmd_TEST[49] = // cmd #6 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; static u8 option_allowed_cmd_COLORS[49] = // cmd #7 { 0,0,0,1,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_ERROR[49] = // cmd #8 { 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; static u8 option_allowed_cmd_FILETYPE[49] = // cmd #9 { 0,0,0,1,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_FILEATTRIB[49] = // cmd #10 { 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_SYMBOLS[49] = // cmd #11 { 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_FUNCTIONS[49] = // cmd #12 { 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_CALCULATE[49] = // cmd #13 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_FLOAT[49] = // cmd #14 { 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_EXPORT[49] = // cmd #15 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_DPAD[49] = // cmd #16 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_DUMP[49] = // cmd #17 { 0,0,0,1,0, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_DB[49] = // cmd #18 { 0,0,0,1,0, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_DL[49] = // cmd #19 { 0,0,0,1,0, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_DLL[49] = // cmd #20 { 0,0,0,1,0, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_DLLL[49] = // cmd #21 { 0,0,0,1,0, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_BIN_DIFF[49] = // cmd #22 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_PATCH[49] = // cmd #23 { 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_TIMESTAMP[49] = // cmd #24 { 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_LPAR[49] = // cmd #25 { 0,0,0,0,1, 1,1,1,1,0, 0,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_CREATE[49] = // cmd #26 { 0,0,0,0,1, 1,0,0,1,0, 1,1,1,1,0, 1,0,1,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,0,1,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_DISTRIBUTION[49] = // cmd #27 { 0,1,0,0,1, 1,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_CAT[49] = // cmd #28 { 0,0,0,0,1, 1,1,1,1,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0 }; static u8 option_allowed_cmd_DECODE[49] = // cmd #29 { 0,0,0,0,1, 1,1,1,1,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_ENCODE[49] = // cmd #30 { 0,0,0,0,0, 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoOption tabs /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t * option_tab_tool[] = { OptionInfo + OPT_VERSION, OptionInfo + OPT_HELP, OptionInfo + OPT_XHELP, OptionInfo + OPT_CONFIG, OptionInfo + OPT_ALLOW_ALL, OptionInfo + OPT_COMPATIBLE, OptionInfo + OPT_WIDTH, OptionInfo + OPT_MAX_WIDTH, OptionInfo + OPT_NO_PAGER, OptionInfo + OPT_ZERO, OptionInfo + OPT_QUIET, OptionInfo + OPT_VERBOSE, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, OptionInfo + OPT_WARN, OptionInfo + OPT_DE, OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, OptionInfo + OPT_LE_04X, OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MAX_FILE_SIZE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_CACHE, OptionInfo + OPT_LOG_CACHE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LT_COND_BIT, OptionInfo + OPT_LT_GAME_MODE, OptionInfo + OPT_LT_ENGINE, OptionInfo + OPT_LT_RANDOM, OptionInfo + OPT_LEX_PURGE, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_TEST, OptionInfo + OPT_FORCE, OptionInfo + OPT_REPAIR_MAGICS, 0 }; static const InfoOption_t * option_tab_cmd_VERSION[] = { &option_cmd_VERSION_BRIEF, OptionInfo + OPT_SECTIONS, &option_cmd_VERSION_LONG, 0 }; static const InfoOption_t * option_tab_cmd_HELP[] = { OptionInfo + OPT_WIDTH, OptionInfo + OPT_MAX_WIDTH, 0 }; static const InfoOption_t * option_tab_cmd_CONFIG[] = { OptionInfo + OPT_CONFIG, &option_cmd_CONFIG_BRIEF, &option_cmd_CONFIG_LONG, 0 }; static const InfoOption_t * option_tab_cmd_ARGTEST[] = { 0 }; static const InfoOption_t * option_tab_cmd_EXPAND[] = { 0 }; static const InfoOption_t * option_tab_cmd_TEST[] = { 0 }; static const InfoOption_t * option_tab_cmd_COLORS[] = { OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, &option_cmd_COLORS_LONG, &option_cmd_COLORS_BRIEF, 0 }; static const InfoOption_t * option_tab_cmd_ERROR[] = { OptionInfo + OPT_SECTIONS, OptionInfo + OPT_NO_HEADER, &option_cmd_ERROR_LONG, &option_cmd_ERROR_BRIEF, 0 }; static const InfoOption_t * option_tab_cmd_FILETYPE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, &option_cmd_FILETYPE_LONG, 0 }; static const InfoOption_t * option_tab_cmd_FILEATTRIB[] = { OptionInfo + OPT_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_SYMBOLS[] = { OptionInfo + OPT_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_FUNCTIONS[] = { OptionInfo + OPT_NO_HEADER, &option_cmd_FUNCTIONS_BRIEF, &option_cmd_FUNCTIONS_LONG, 0 }; static const InfoOption_t * option_tab_cmd_CALCULATE[] = { OptionInfo + OPT_CONST, 0 }; static const InfoOption_t * option_tab_cmd_FLOAT[] = { OptionInfo + OPT_ROUND, 0 }; static const InfoOption_t * option_tab_cmd_EXPORT[] = { 0 }; static const InfoOption_t * option_tab_cmd_DPAD[] = { 0 }; static const InfoOption_t * option_tab_cmd_DUMP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator &option_cmd_DUMP_BRIEF, &option_cmd_DUMP_LONG, &option_cmd_DUMP_VERBOSE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_DB[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator &option_cmd_DUMP_BRIEF, &option_cmd_DUMP_LONG, &option_cmd_DUMP_VERBOSE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_DL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator &option_cmd_DUMP_BRIEF, &option_cmd_DUMP_LONG, &option_cmd_DUMP_VERBOSE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_DLL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator &option_cmd_DUMP_BRIEF, &option_cmd_DUMP_LONG, &option_cmd_DUMP_VERBOSE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_DLLL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator &option_cmd_DUMP_BRIEF, &option_cmd_DUMP_LONG, &option_cmd_DUMP_VERBOSE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_BIN_DIFF[] = { &option_cmd_BIN_DIFF_QUIET, &option_cmd_BIN_DIFF_VERBOSE, 0 }; static const InfoOption_t * option_tab_cmd_PATCH[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_TRACK_DIR, OptionInfo + OPT_COPY_TRACKS, OptionInfo + OPT_MOVE_TRACKS, OptionInfo + OPT_MOVE1_TRACKS, OptionInfo + OPT_LINK_TRACKS, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_CREATE_DISTRIB, 0 }; static const InfoOption_t * option_tab_cmd_TIMESTAMP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, 0 }; static const InfoOption_t * option_tab_cmd_LPAR[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LPAR, OptionInfo + OPT_ALIAS, OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, &option_grp_TEXTOPT_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, 0 }; static const InfoOption_t * option_tab_cmd_CREATE[] = { OptionInfo + OPT_IGNORE, &option_grp_TEXTOPT_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, OptionInfo + OPT_NO_ECHO, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_LPAR, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, OptionInfo + OPT_LT_COND_BIT, OptionInfo + OPT_LT_GAME_MODE, OptionInfo + OPT_LT_ENGINE, OptionInfo + OPT_LT_RANDOM, OptionInfo + OPT_LEX_PURGE, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LE_DEFINE, OptionInfo + OPT_LOAD_BMG, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_ENGINE, OptionInfo + OPT_200CC, OptionInfo + OPT_PERFMON, OptionInfo + OPT_CUSTOM_TT, OptionInfo + OPT_XPFLAGS, OptionInfo + OPT_SPEEDOMETER, OptionInfo + OPT_DEBUG, 0 }; static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] = { OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, OptionInfo + OPT_CACHE, OptionInfo + OPT_LOG_CACHE, OptionInfo + OPT_PLUS, OptionInfo + OPT_TRACK_DIR, OptionInfo + OPT_COPY_TRACKS, OptionInfo + OPT_MOVE_TRACKS, OptionInfo + OPT_MOVE1_TRACKS, OptionInfo + OPT_LINK_TRACKS, OptionInfo + OPT_SZS_MODE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_IGNORE, &option_grp_TEXTOPT_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, 0 }; static const InfoOption_t * option_tab_cmd_CAT[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPLETE, &option_grp_TEXTOPT_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, OptionInfo + OPT_NO_ECHO, 0 }; static const InfoOption_t * option_tab_cmd_DECODE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPLETE, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, &option_grp_TEXTOPT_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, OptionInfo + OPT_NO_ECHO, 0 }; static const InfoOption_t * option_tab_cmd_ENCODE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPLETE, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, OptionInfo + OPT_ESC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_OVERWRITE, OptionInfo + OPT_NUMBER, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_UPDATE, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_NO_ECHO, 0 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoCommand /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoCommand_t CommandInfo[CMD__N+1] = { { 0, false, false, false, "wlect", 0, "wlect [option]... command [option|parameter|file]...", "Wiimms LE-CODE Tool : Manage the LE-CODE and LEX extensions.", 0, 38, option_tab_tool, 0 }, { CMD_VERSION, false, false, false, "VERSION", "V", "wlect VERSION [ignored]...", "Print program name and version and exit.", 0, 3, option_tab_cmd_VERSION, option_allowed_cmd_VERSION }, { CMD_HELP, false, false, false, "HELP", "H", "wlect HELP [--width=wd] OPT|OPTION ...\n" "wlect HELP [--width=wd] CMD|COMMAND [ignored]...\n" "wlect HELP [--width=wd] command [-b] [ignored]...\n" "wlect HELP [--width=wd] [ignored]...", "Print help for commands and options.", "Print help for commands and options.\n" " The first variant (with keyword OPT or OPTION) prints a list of all" " global and command specific options. If at least one option is set," " only info about the declared options are printed. The second variant" " (with keyword CMD or COMMAND) prints an overview about all commands." " The third variant (with a valid command name) prints details about" " the declared command. The fourth variant prints an overview about" " all commands and all global options.", 2, option_tab_cmd_HELP, option_allowed_cmd_HELP }, { CMD_CONFIG, false, false, false, "CONFIG", 0, "wlect CONFIG [options]...", "Show all information about the search for the configuration file and" " its content.", 0, 3, option_tab_cmd_CONFIG, option_allowed_cmd_CONFIG }, { CMD_ARGTEST, false, false, false, "ARGTEST", 0, "wlect ARGTEST ...", "This debug command accepts all kinds of parameters and prints one" " line for each parameter. All tools know the ARGTEST command.", 0, 0, option_tab_cmd_ARGTEST, option_allowed_cmd_ARGTEST }, { CMD_EXPAND, false, false, false, "EXPAND", 0, "wlect EXPAND ...", "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" " searched. All tools know the EXPAND command.", 0, 0, option_tab_cmd_EXPAND, option_allowed_cmd_EXPAND }, { CMD_TEST, false, false, false, "TEST", 0, "wlect TEST [options]... [ignored]...", "This debugging command accepts all options and parameters and prints" " a list of the internal option values. The command is designed to" " test the option parameters. The non option parameters are completely" " ignored.", 0, 0, option_tab_cmd_TEST, option_allowed_cmd_TEST }, { CMD_COLORS, false, false, false, "COLORS", 0, "wlect COLORS", "Ignore all parameters and print colored text for testing.", 0, 4, option_tab_cmd_COLORS, option_allowed_cmd_COLORS }, { CMD_ERROR, false, false, false, "ERROR", "ERR", "wlect ERROR [error_code]", "Translate an exit code to a message name. If no exit code is entered," " print a table with all error messages. All tools know the ERROR" " command.", 0, 4, option_tab_cmd_ERROR, option_allowed_cmd_ERROR }, { CMD_FILETYPE, false, false, false, "FILETYPE", "FT", "wlect FILETYPE file...", "Scan the header of the entered files and print file type and path for" " each file as list. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. All tools know the" " FILETYPE command.", 0, 4, option_tab_cmd_FILETYPE, option_allowed_cmd_FILETYPE }, { CMD_FILEATTRIB, false, false, false, "FILEATTRIB", "FA", "wlect FILEATTRIB [keyword]...", "Print a table with attributes for all known file types. If at least" " one keyword is entered, only matching file types are printed. A" " keyword is either a file type (like 'BRRES' or 'BMG') or one of the" " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" " FILEATTRIB command.", 0, 1, option_tab_cmd_FILEATTRIB, option_allowed_cmd_FILEATTRIB }, { CMD_SYMBOLS, false, false, false, "SYMBOLS", 0, "wlect SYMBOLS", "Print predefined symbols of text parser to standard output. The" " LE-CODE specific symbols are included.", 0, 1, option_tab_cmd_SYMBOLS, option_allowed_cmd_SYMBOLS }, { CMD_FUNCTIONS, false, false, false, "FUNCTIONS", 0, "wlect FUNCTIONS [key]...", "Print a list with all parser functions including the LE-CODE specific" " functions. If one key ore more key entered, then only functions that" " match at least one key are printed.", 0, 3, option_tab_cmd_FUNCTIONS, option_allowed_cmd_FUNCTIONS }, { CMD_CALCULATE, false, false, false, "CALCULATE", 0, "wlect CALCULATE expression...", "Calculate each expression and print the result to standard output." " Many tools know the CALCULATE command.", 0, 1, option_tab_cmd_CALCULATE, option_allowed_cmd_CALCULATE }, { CMD_FLOAT, false, false, false, "FLOAT", 0, "wlect FLOAT number...", "This commands helps to convert hex values into floating point numbers" " and vice versa. For each non empty parameter, a line with 4 bytes" " hex and a float, 8 bytes hex and a double float, and the parameter" " itself is printed. If a parameter begins with 'x' or '0x', it is a" " hex string, otherwise it is a floating point number.\n" " The special parameters \"+\" and \"-\" mean: Increment or decrement" " the previous value by the smallest possible value. Use different" " increments for floats and doubles.\n" " All conversions are done using big endian.", 0, 1, option_tab_cmd_FLOAT, option_allowed_cmd_FLOAT }, { CMD_EXPORT, true, false, false, "_EXPORT", 0, "wszst _EXPORT key...", "This hidden command exports some definitions to standard output. Use" " keyword HELP to get a list of possible keywords.", 0, 0, option_tab_cmd_EXPORT, option_allowed_cmd_EXPORT }, { CMD_DPAD, true, false, false, "_DPAD", 0, "wszst DPAD number_or_code...", "This hidden command decodes and encodes D-Pad suquences for LE-CODE.", 0, 0, option_tab_cmd_DPAD, option_allowed_cmd_DPAD }, { CMD_DUMP, false, false, true, "DUMP", "D", "wlect DUMP [source]...", "Print an information dump for each source file. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details. LE-CODE binaries and LEX binaries are accepted as input.", 0, 17, option_tab_cmd_DUMP, option_allowed_cmd_DUMP }, { CMD_DB, false, false, false, "DBwlect DL [source]...", 0, "Short cut for 'DUMP --brief'.", "", 0, 17, option_tab_cmd_DB, option_allowed_cmd_DB }, { CMD_DL, false, false, false, "DL", 0, "wlect DL [source]...", "Short cut for 'DUMP --long'.", 0, 17, option_tab_cmd_DL, option_allowed_cmd_DL }, { CMD_DLL, false, false, false, "DLL", 0, "wlect DLL [source]...", "Short cut for 'DUMP --long --long'.", 0, 17, option_tab_cmd_DLL, option_allowed_cmd_DLL }, { CMD_DLLL, false, false, false, "DLLL", 0, "wlect DLL [source]...", "Short cut for 'DUMP --long --long --long'.", 0, 17, option_tab_cmd_DLLL, option_allowed_cmd_DLLL }, { CMD_BIN_DIFF, false, false, false, "BIN-DIFF", "BINDIFF", "wlect BIN-DIFF settings binary1 binary2", "Compare parts of 2 different LECODE binary files. SETTINGS is a" " string with plus and minus signs to switch between plus/minus modes," " and some key letters to select parts: s:size, h:header, t:timestamp," " b:body, p:parameters, d:data, c:code and a:all. In plus-mode, a test" " is enabled, in minus-mode it is disabled. Scanning starts in" " plus-mode.\n" " Example: a-t: compare all except timestamps and edit infos.\n" " The exist status is OK (0) if nothing differ, DIFFER (2) if at" " least one test failed, or an error code.", 0, 2, option_tab_cmd_BIN_DIFF, option_allowed_cmd_BIN_DIFF }, { CMD_PATCH, false, false, false, "PATCH", "P", "wlect PATCH [lecode_bin]...", "Read each LE-CODE binary file and patch it. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details. Use --le-define to setup cups and tracks.", 0, 27, option_tab_cmd_PATCH, option_allowed_cmd_PATCH }, { CMD_TIMESTAMP, true, false, false, "TIMESTAMP", 0, "wlect TIMESTAMP [lecode_bin]...", "Read each LE-CODE binary file and set creation time if exists and is" " null with respect to others existing timestamps. Update the LE-CODE" " signature too. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 11, option_tab_cmd_TIMESTAMP, option_allowed_cmd_TIMESTAMP }, { CMD_LPAR, false, false, false, "LPAR", 0, "wlect LPAR [le_bin]...", "Read each LE-BIN file and patch it. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details. Then" " extract the LE-CODE parameters and store them as LPAR text file." " Print the result to standard output if no other destination is" " defined.", 0, 24, option_tab_cmd_LPAR, option_allowed_cmd_LPAR }, { CMD_CREATE, false, false, true, "CREATE", "CR", "wlect CREATE [keyword] ...", "Create a file and print it to standard output. Options --dest and" " --DEST can force another destination. The kind of file is defined by" " KEYWORD. The command can create LEX files, a LPAR file or a track" " listing.\n" " Use the command without keyword to get an extended description.", 0, 32, option_tab_cmd_CREATE, option_allowed_cmd_CREATE }, { CMD_DISTRIBUTION, false, false, false, "DISTRIBUTION", "DIS", "wlect DISTRIBUTION [argument]...", "This command manages data for LE-CODE track distributions. It reads" " any number of source files with different file types, collects the" " data and creates any number of files with different file types. The" " parameters are evaluated step by step. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.\n" " Use the command without keyword to get an extended description.", 0, 23, option_tab_cmd_DISTRIBUTION, option_allowed_cmd_DISTRIBUTION }, { CMD_CAT, false, false, false, "CAT", 0, "wlect CAT [source]...", "Read the entered LEX and LE-CODE files (text, binary or szs) and" " print them as decoded text files to standard output. Wildcards and" " pipe characters are parsed, see https://szs.wiimm.de/doc/wildcards" " for details. The output of all source files is concatenated.", 0, 8, option_tab_cmd_CAT, option_allowed_cmd_CAT }, { CMD_DECODE, false, false, false, "DECODE", "DEC", "wlect DECODE [source]...", "Read the entered LEX files (text or binary) and decode them to text" " files. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. The default" " destination is '%P/%N.txt'.", 0, 16, option_tab_cmd_DECODE, option_allowed_cmd_DECODE }, { CMD_ENCODE, false, false, false, "ENCODE", "ENC", "wlect ENCODE source...", "Read the entered LEX files (text or binary) and encode (compile) them" " to binary files. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. The default" " destination is '%P/%N.lex'.", 0, 13, option_tab_cmd_ENCODE, option_allowed_cmd_ENCODE }, {0,0,0,0,0,0,0,0,0,0,0,0} }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoUI /////////////// /////////////////////////////////////////////////////////////////////////////// const InfoUI_t InfoUI_wlect = { "wlect", CMD__N, CommandTab, CommandInfo, OPT__N_SPECIFIC, OPT__N_TOTAL, OptionInfo, OptionUsed, OptionIndex, OptionShort, OptionLong }; // /////////////////////////////////////////////////////////////////////////////// /////////////// END /////////////// ///////////////////////////////////////////////////////////////////////////////