X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=87b707cb3ce0efd9098ddc292e59359527fd5da5;hb=e5bb8b3337a96aea82e7b3b3eeab7a98e20e3a3e;hp=5fdbe85b42b800d323ace39fd28c5ef1b28d3bcf;hpb=2e99b0c26d334eb287486b8933b52b5048c6cc0c;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 5fdbe85b..87b707cb 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -765,7 +765,9 @@ boolean strSuffixLower(char *s, char *suffix) /* command line option handling functions */ /* ------------------------------------------------------------------------- */ -void GetOptions(char *argv[], void (*print_usage_function)(void)) +void GetOptions(char *argv[], + void (*print_usage_function)(void), + void (*print_version_function)(void)) { char *ro_base_path = RO_BASE_PATH; char *rw_base_path = RW_BASE_PATH; @@ -862,7 +864,9 @@ void GetOptions(char *argv[], void (*print_usage_function)(void)) option_len = strlen(option); if (strEqual(option, "-")) + { Error(ERR_EXIT_HELP, "unrecognized option '%s'", option); + } else if (strncmp(option, "-help", option_len) == 0) { print_usage_function(); @@ -940,10 +944,6 @@ void GetOptions(char *argv[], void (*print_usage_function)(void)) { options.serveronly = TRUE; } - else if (strncmp(option, "-verbose", option_len) == 0) - { - options.verbose = TRUE; - } else if (strncmp(option, "-debug", option_len) == 0) { options.debug = TRUE; @@ -952,6 +952,17 @@ void GetOptions(char *argv[], void (*print_usage_function)(void)) { options.debug_x11_sync = TRUE; } + else if (strncmp(option, "-verbose", option_len) == 0) + { + options.verbose = TRUE; + } + else if (strncmp(option, "-version", option_len) == 0 || + strncmp(option, "-V", option_len) == 0) + { + print_version_function(); + + exit(0); + } else if (strPrefix(option, "-D")) { #if 1 @@ -3691,6 +3702,9 @@ void openErrorFile() Error(ERR_WARN, "cannot open file '%s' for writing: %s", program.error_filename, strerror(errno)); } + + /* error output should be unbuffered so it is not truncated in a crash */ + setbuf(program.error_file, NULL); } void closeErrorFile()