- printf("\n"
- "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n"
- "\n"
- "Options:\n"
- " -d, --display HOSTNAME[:SCREEN] specify X server display\n"
- " -b, --basepath DIRECTORY alternative base DIRECTORY\n"
- " -l, --level DIRECTORY alternative level DIRECTORY\n"
- " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n"
- " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n"
- " -m, --music DIRECTORY alternative music DIRECTORY\n"
- " -n, --network network multiplayer game\n"
- " --serveronly only start network server\n"
- " -v, --verbose verbose mode\n"
- " --debug display debugging information\n"
- " --debug-x11-sync enable X11 synchronous mode\n"
- " -e, --execute COMMAND execute batch COMMAND\n"
- "\n"
- "Valid commands for '--execute' option:\n"
- " \"print graphicsinfo.conf\" print default graphics config\n"
- " \"print soundsinfo.conf\" print default sounds config\n"
- " \"print musicinfo.conf\" print default music config\n"
- " \"print editorsetup.conf\" print default editor config\n"
- " \"print helpanim.conf\" print default helpanim config\n"
- " \"print helptext.conf\" print default helptext config\n"
- " \"dump level FILE\" dump level data from FILE\n"
- " \"dump tape FILE\" dump tape data from FILE\n"
- " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n"
- " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n"
- " \"create images DIRECTORY\" write BMP images to DIRECTORY\n"
- "\n",
- program.command_basename);
+ Print("\n"
+ "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n"
+ "\n"
+ "Options:\n"
+ " -b, --basepath DIRECTORY alternative base DIRECTORY\n"
+ " -l, --level DIRECTORY alternative level DIRECTORY\n"
+ " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n"
+ " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n"
+ " -m, --music DIRECTORY alternative music DIRECTORY\n"
+ " --mytapes use private tapes for tape tests\n"
+ " -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"
+ " -e, --execute COMMAND execute batch COMMAND\n"
+ "\n"
+ "Valid commands for '--execute' option:\n"
+ " \"print graphicsinfo.conf\" print default graphics config\n"
+ " \"print soundsinfo.conf\" print default sounds config\n"
+ " \"print musicinfo.conf\" print default music config\n"
+ " \"print editorsetup.conf\" print default editor config\n"
+ " \"print helpanim.conf\" print default helpanim config\n"
+ " \"print helptext.conf\" print default helptext config\n"
+ " \"dump level FILE\" dump level data from FILE\n"
+ " \"dump tape FILE\" dump tape data from FILE\n"
+ " \"autotest LEVELDIR [NR ...]\" test level tapes for LEVELDIR\n"
+ " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n"
+ " \"autoffwd LEVELDIR [NR ...]\" ffwd level tapes for LEVELDIR\n"
+ " \"autowarp LEVELDIR [NR ...]\" warp level tapes for LEVELDIR\n"
+ " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n"
+ " \"create images DIRECTORY\" write BMP images to DIRECTORY\n"
+ " \"create CE image DIRECTORY\" write BMP image to DIRECTORY\n"
+ "\n",
+ program.command_basename);
+}
+
+static void print_version()
+{
+ Print("%s %d.%d.%d.%d%s\n",
+ PROGRAM_TITLE_STRING,
+ PROGRAM_VERSION_MAJOR,
+ PROGRAM_VERSION_MINOR,
+ PROGRAM_VERSION_PATCH,
+ PROGRAM_VERSION_BUILD,
+ PROGRAM_VERSION_EXTRA);
+
+ if (options.debug)
+ {
+ SDL_version sdl_version;
+
+ SDL_VERSION(&sdl_version);
+ Print("- SDL %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_IMAGE_VERSION(&sdl_version);
+ Print("- SDL_image %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_MIXER_VERSION(&sdl_version);
+ Print("- SDL_mixer %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+
+ SDL_NET_VERSION(&sdl_version);
+ Print("- SDL_net %d.%d.%d\n",
+ sdl_version.major,
+ sdl_version.minor,
+ sdl_version.patch);
+ }
+}
+
+static void InitProgramConfig(char *command_filename)
+{
+ char *program_title = PROGRAM_TITLE_STRING;
+ char *program_icon_file = PROGRAM_ICON_FILENAME;
+ char *config_filename = getProgramConfigFilename(command_filename);
+ char *userdata_basename = getBaseNameNoSuffix(command_filename);
+ char *userdata_subdir;
+ char *userdata_subdir_unix;
+
+ // read default program config, if existing
+ if (fileExists(config_filename))
+ {
+ // if program config file exists, derive Unix user data directory from it
+ userdata_basename = getBaseName(config_filename);
+
+ if (strSuffix(userdata_basename, ".conf"))
+ userdata_basename[strlen(userdata_basename) - 5] = '\0';
+
+ LoadSetupFromFilename(config_filename);
+ }
+
+ // set user data directory for Linux/Unix (but not Mac OS X)
+ userdata_subdir_unix = getStringCat2(".", userdata_basename);
+
+ // set program title from potentially redefined program title
+ if (setup.internal.program_title != NULL &&
+ strlen(setup.internal.program_title) > 0)
+ program_title = getStringCopy(setup.internal.program_title);
+
+ // set program icon file from potentially redefined program icon file
+ if (setup.internal.program_icon_file != NULL &&
+ strlen(setup.internal.program_icon_file) > 0)
+ program_icon_file = getStringCopy(setup.internal.program_icon_file);
+
+#if defined(PLATFORM_WIN32) || defined(PLATFORM_MACOSX)
+ userdata_subdir = program_title;
+#elif defined(PLATFORM_UNIX)
+ userdata_subdir = userdata_subdir_unix;
+#else
+ userdata_subdir = USERDATA_DIRECTORY_OTHER;
+#endif
+
+ // set default window size (only relevant on program startup)
+ if (setup.internal.default_window_width != 0 &&
+ setup.internal.default_window_height != 0)
+ {
+ WIN_XSIZE = setup.internal.default_window_width;
+ WIN_YSIZE = setup.internal.default_window_height;
+ }
+
+ InitProgramInfo(command_filename,
+ config_filename,
+ userdata_subdir,
+ program_title,
+ program_title,
+ program_icon_file,
+ COOKIE_PREFIX,
+ GAME_VERSION_ACTUAL);