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:
parent
bdcdf2f131
commit
255dc9aa19
156
src/trader.c
156
src/trader.c
@ -34,6 +34,16 @@
|
|||||||
#include "trader.h"
|
#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 *
|
* Main program *
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
@ -42,10 +52,150 @@ int main (int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
init_program_name(argv);
|
init_program_name(argv);
|
||||||
|
|
||||||
|
// Process command line arguments
|
||||||
|
process_cmdline(argc, argv);
|
||||||
|
|
||||||
|
|
||||||
// Testing...
|
// Testing...
|
||||||
printf("program_name: %s\n", program_name());
|
printf(_("Program name: %s\n"), program_name());
|
||||||
printf("home_directory: %s\n", home_directory());
|
printf(_("Home directory: %s\n"), home_directory());
|
||||||
printf("data_directory: %s\n", data_directory());
|
printf(_("Data directory: %s\n"), data_directory());
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
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);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user