diff options
| author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2001-09-28 23:10:45 +0000 | 
|---|---|---|
| committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2001-09-28 23:10:45 +0000 | 
| commit | 1d0fcf308929bde5749b889373d5c2f338fa8969 (patch) | |
| tree | 624b053028a1ff9505b9fd297107278c5273e17d /mixgtk | |
| parent | 08ae1393b7d415355308856618ca96c3ba2cfbd0 (diff) | |
| download | mdk-1d0fcf308929bde5749b889373d5c2f338fa8969.tar.gz mdk-1d0fcf308929bde5749b889373d5c2f338fa8969.tar.bz2 | |
uniform command line options handling
Diffstat (limited to 'mixgtk')
| -rw-r--r-- | mixgtk/gmixvm.c | 73 | 
1 files changed, 71 insertions, 2 deletions
| diff --git a/mixgtk/gmixvm.c b/mixgtk/gmixvm.c index 59b4b41..91b03f3 100644 --- a/mixgtk/gmixvm.c +++ b/mixgtk/gmixvm.c @@ -1,7 +1,7 @@  /* -*-c-*- -------------- gmixvm.c :   * Main function of the mix gtk front-end   * ------------------------------------------------------------------ - *  Last change: Time-stamp: "2001-04-28 22:37:45 jao" + *  $Id: gmixvm.c,v 1.3 2001/09/28 23:10:45 jao Exp $   * ------------------------------------------------------------------   * Copyright (C) 2001 Free Software Foundation, Inc.   *   @@ -24,6 +24,7 @@  #include <stdlib.h>  #include "mixgtk.h" +static gboolean initfile_ = TRUE;  #ifdef MAKE_GUILE  #  include <mixguile/mixguile.h> @@ -33,15 +34,83 @@ inner_main_ (int argc, char *argv[])  {    mixgtk_init (argc, argv);    mixguile_set_cmd_dispatcher (mixgtk_cmd_dispatcher_get_mix_dispatcher ()); -  mixguile_load_bootstrap (); +  mixguile_load_bootstrap (initfile_);    mixgtk_main ();    mixgtk_release ();  }  #endif +#ifdef HAVE_GETOPT_LONG +#  include <getopt.h> +#else +#  include <lib/getopt.h> +#endif /* HAVE_GETOPT_LONG */ + +enum { +  VER_OPT = 'v', +  NOINIT_OPT = 'q', +  HELP_OPT = 'h', +  USAGE_OPT = 'u' +}; + +static const char *options_ = "vqhu";  + +static struct option long_options_[] = +{ +  {"version", no_argument, 0, VER_OPT}, +  {"help", no_argument, 0, HELP_OPT}, +  {"usage", no_argument, 0, USAGE_OPT}, +  {"noinit", no_argument, 0, NOINIT_OPT}, +  {0, 0, 0, 0} +}; + +static void print_usage_ (const gchar *prog) +{ +  static const char *usage_ = +    "Usage: %s [-vhuq] [--version] [--help] [--usage] [--noinit]\n"; +  fprintf (stderr, usage_, prog); +} +  int  main(int argc, char *argv[])  { +  int c; + +  const char *prog_name = argv[0]; +       +  setlocale (LC_ALL, ""); +  bindtextdomain (PACKAGE, LOCALEDIR); +  textdomain (PACKAGE); + +  while (1) +    { +      c = getopt_long (argc, argv, options_, long_options_, (int*)0); +      +      /* Detect the end of the options. */ +      if (c == -1) +	break; +      +      switch (c) +	{ +     	case VER_OPT: +	  mix_print_license ("gmixvm, GTK MIX virtual machine"); +	  return EXIT_SUCCESS; +	case NOINIT_OPT: +	  initfile_ = FALSE; +	  break; +	case HELP_OPT: +	case USAGE_OPT: +	  print_usage_ (prog_name); +	  return EXIT_SUCCESS; +	case '?': +	  print_usage_ (prog_name); +	  return EXIT_FAILURE; +	default: +	  g_assert_not_reached (); +	  break; +	} +    } +  #ifdef MAKE_GUILE    mixguile_enter (argc, argv, inner_main_);  #else | 
