1
0
mirror of https://git.zap.org.au/git/trader.git synced 2024-12-04 14:46:45 -05:00

Add the process_cmdline(), show_version() and show_usage() functions

This commit is contained in:
John Zaitseff 2011-06-29 13:15:26 +10:00
parent bdcdf2f131
commit 255dc9aa19

View File

@ -34,6 +34,16 @@
#include "trader.h"
/************************************************************************
* Internal function declarations *
************************************************************************/
int main (int argc, char *argv[]);
static void process_cmdline (int argc, char *argv[]);
static void show_version (void);
static void show_usage (int status);
/************************************************************************
* Main program *
************************************************************************/
@ -42,10 +52,150 @@ int main (int argc, char *argv[])
{
init_program_name(argv);
// Process command line arguments
process_cmdline(argc, argv);
// Testing...
printf("program_name: %s\n", program_name());
printf("home_directory: %s\n", home_directory());
printf("data_directory: %s\n", data_directory());
printf(_("Program name: %s\n"), program_name());
printf(_("Home directory: %s\n"), home_directory());
printf(_("Data directory: %s\n"), data_directory());
return EXIT_SUCCESS;
}
/************************************************************************
* Command line processing *
************************************************************************/
/* Constants for command line options */
static const char options_short[] = "hV?";
/* -h, -? --help
-V --version
*/
static struct option const options_long[] = {
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
/*-----------------------------------------------------------------------
Function: process_cmdline - Process command line arguments
Arguments: argc - Same as passed to main()
argv - Same as passed to main()
Returns: (nothing)
This function processes the command line arguments passed through argc
and argv, setting global variables as appropriate.
*/
static void process_cmdline (int argc, char *argv[])
{
int c;
// Process arguments starting with "-" or "--"
opterr = TRUE;
while (TRUE) {
c = getopt_long(argc, argv, options_short, options_long, NULL);
if (c == EOF)
break;
switch (c) {
case 'h':
case '?':
/* -h, -?, --help: show help */
show_usage(EXIT_SUCCESS);
case 'V':
/* -V, --version: show version information */
show_version();
default:
show_usage(EXIT_FAILURE);
}
}
// Process remaining arguments
if ((optind < argc) && (argv[optind] != NULL)) {
}
}
/*-----------------------------------------------------------------------
Function: show_version - Show program version information
Arguments: (none)
Returns: (nothing)
This function displays version information about this program, then
terminates.
*/
static void show_version (void)
{
printf(_("\
" PACKAGE_NAME " (%s) %s\n\
Copyright (C) %s, John Zaitseff.\n\
\n\
Star Traders is a simple game of interstellar trading, where the object\n\
of the game is to create companies, buy and sell shares, borrow and repay\n\
money, in order to become the wealthiest player (the winner).\n\
\n\
This program is free software that is distributed under the terms of the\n\
GNU General Public License, version 3 or later. You are welcome to\n\
modify and/or distribute it under certain conditions. This program has\n\
NO WARRANTY, to the extent permitted by law; see the License for details.\n\
"), program_name(), PACKAGE_VERSION, "1990-2011");
exit(EXIT_SUCCESS);
}
/*-----------------------------------------------------------------------
Function: show_usage - Show command line usage information
Arguments: status - Exit status
Returns: (nothing)
This function displays usage information to standard output or standard
error, then terminates.
*/
static void show_usage (int status)
{
if (status != EXIT_SUCCESS) {
fprintf(stderr, _("Try `%s --help' for more information.\n"),
program_name());
} else {
printf(_("Usage: %s [OPTION ...] [GAME]\n"), program_name());
printf(_("\
Play Star Traders, a simple game of interstellar trading.\n\n\
"));
printf(_("\
Options:\n\
-V, --version output version information and exit\n\
-h, --help display this help and exit\n\n\
"));
printf(_("\
If GAME is specified as a number between 1 and 9, load and continue\n\
playing that game. If GAME is not specified, start a new game.\n\n\
"));
#ifdef PACKAGE_AUTHOR
printf(_("Report bugs to %s <%s>.\n"), PACKAGE_AUTHOR, PACKAGE_BUGREPORT);
#else
printf(_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
#endif
#ifdef PACKAGE_PACKAGER_BUG_REPORTS
printf(_("Report %s bugs to <%s>.\n"), PACKAGE_PACKAGER, PACKAGE_PACKAGER_BUG_REPORTS);
#endif
#ifdef PACKAGE_URL
printf(_("Star Traders home page: <%s>.\n"), PACKAGE_URL);
#endif
}
exit(status);
}