+2014-08-28
+ * added command line options "--version" / "-V" to show program version
+ (also shows SDL library versions when prefixed with "--debug" option)
+
2014-08-27
* error file set to unbuffered to prevent truncation in case of crashes
-#define COMPILE_DATE_STRING "2014-08-27 13:39"
+#define COMPILE_DATE_STRING "2014-08-28 11:08"
/* 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;
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();
exit(0);
}
+ else if (strncmp(option, "-version", option_len) == 0 ||
+ strncmp(option, "-V", option_len) == 0)
+ {
+ print_version_function();
+
+ exit(0);
+ }
else if (strncmp(option, "-display", option_len) == 0)
{
if (option_arg == NULL)
boolean strPrefixLower(char *, char *);
boolean strSuffixLower(char *, char *);
-void GetOptions(char **, void (*print_usage_function)(void));
+void GetOptions(char **,
+ void (*print_usage_function)(void),
+ void (*print_version_function)(void));
void SetError(char *, ...);
char *GetError(void);
program.version_major = VERSION_MAJOR(program_version);
program.version_minor = VERSION_MINOR(program_version);
program.version_patch = VERSION_PATCH(program_version);
+ program.version_build = VERSION_BUILD(program_version);
+ program.version_ident = program_version;
program.error_filename = getErrorFilename(ERROR_BASENAME);
program.error_file = stderr;
int version_major;
int version_minor;
int version_patch;
+ int version_build;
+ int version_ident;
char *(*window_title_function)(void);
void (*exit_message_function)(char *, va_list);
" -n, --network network multiplayer game\n"
" --serveronly only start network server\n"
" -v, --verbose verbose mode\n"
+ " -V, --version show program version\n"
" --debug display debugging information\n"
" --debug-x11-sync enable X11 synchronous mode\n"
" -e, --execute COMMAND execute batch COMMAND\n"
program.command_basename);
}
+static void print_version()
+{
+ printf("%s %d.%d.%d.%d\n",
+ PROGRAM_TITLE_STRING,
+ PROGRAM_VERSION_MAJOR,
+ PROGRAM_VERSION_MINOR,
+ PROGRAM_VERSION_PATCH,
+ PROGRAM_VERSION_BUILD);
+
+ if (options.debug)
+ {
+ SDL_version sdl_version;
+
+ SDL_VERSION(&sdl_version);
+ printf("- SDL %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_IMAGE_VERSION(&sdl_version);
+ printf("- SDL_image %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_MIXER_VERSION(&sdl_version);
+ printf("- SDL_mixer %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_NET_VERSION(&sdl_version);
+ printf("- SDL_net %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+ }
+}
+
int main(int argc, char *argv[])
{
InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX,
InitExitFunction(CloseAllAndExit);
InitPlatformDependentStuff();
- GetOptions(argv, print_usage);
+ GetOptions(argv, print_usage, print_version);
OpenAll();
EventLoop();