#ifndef GETOPT_H
#define GETOPT_H

/* include files needed by this include file */

/* macros defined by this include file */
#define no_argument       0
#define required_argument 1
#define OPTIONAL_ARG      2

/* types defined by this include file */

/* GETOPT_LONG_OPTION_T: The type of long option */
typedef struct GETOPT_LONG_OPTION_T
{
  const char *name;             /* the name of the long option */
  int has_arg;                  /* one of the above macros */
  int *flag;                    /* determines if getopt_long() returns a
                                 * value for a long option; if it is
                                 * non-NULL, 0 is returned as a function
                                 * value and the value of val is stored in
                                 * the area pointed to by flag.  Otherwise,
                                 * val is returned. */
  int val;                      /* determines the value to return if flag is
                                 * NULL. */
} GETOPT_LONG_OPTION_T;

typedef GETOPT_LONG_OPTION_T option;

#ifdef __cplusplus
extern "C"
{
#endif

  /* externally-defined variables */
  extern char *optarg;
  extern int optind;
  extern int opterr;
  extern int optopt;

  /* function prototypes */
#ifndef _AIX
  int getopt (int argc, char **argv, char *optstring);
#endif
  int getopt_long (int argc, char **argv, const char *shortopts,
                   const GETOPT_LONG_OPTION_T * longopts, int *longind);
  int getopt_long_only (int argc, char **argv, const char *shortopts,
                        const GETOPT_LONG_OPTION_T * longopts, int *longind);

#ifdef __cplusplus
};

#endif

#endif /* GETOPT_H */

/* END OF FILE getopt.h */
