Include stdlib.
[cfd] / mdwopt.h
index 3638b7c..1205b7b 100644 (file)
--- a/mdwopt.h
+++ b/mdwopt.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: mdwopt.h,v 1.4 1999/05/15 10:25:38 mdw Exp $
+ * $Id: mdwopt.h,v 1.8 1999/08/19 18:37:43 mdw Exp $
  *
  * Options parsing, similar to GNU @getopt_long@
  *
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: mdwopt.h,v $
+ * Revision 1.8  1999/08/19 18:37:43  mdw
+ * Fix stupid error.
+ *
+ * Revision 1.7  1999/08/19 18:35:10  mdw
+ * Add a couple more flag constants.
+ *
+ * Revision 1.6  1999/05/20 23:00:30  mdw
+ * Carry through changes to the interface properly in the documentation.
+ * Other little formatting things.
+ *
+ * Revision 1.5  1999/05/19 20:23:59  mdw
+ * Change naming to match newer mLib conventions.
+ *
  * Revision 1.4  1999/05/15 10:25:38  mdw
  * Fix copyright information.
  *
 /* --- @mdwopt_data@ --- *
  *
  * Contains all the information needed by the @mdwopt@ routine to do its
- * work.
+ * work.  Try not to use @prog@ any more.  If you're using mLib, the @quis@/
+ * @ego@ interface works better.
  */
 
 typedef struct {
+
   /* --- Public variables --- */
 
   char *arg;                           /* Arg of current option, or 0 */
@@ -138,27 +153,42 @@ enum {
 /* --- New style flag names --- */
 
 enum {
-  gFlag_argReq = 1,                    /* Required argument */
-  gFlag_argOpt = 2,                    /* Optional argument */
-  gFlag_switch = 4,                    /* OR val into flag, don't store */
-  gFlag_negate = 8,                    /* Allow long option to be negated */
-  gFlag__last_long_opt_flag = 0                /* Dummy value */
+  OPTF_NOARG = 0,                      /* No argument */
+  OPTF_ARGREQ = 1,                     /* Required argument */
+  OPTF_ARGOPT = 2,                     /* Optional argument */
+  OPTF_ARG = 3,                                /* Argument type bitmask */
+  OPTF_SWITCH = 4,                     /* OR val into flag, don't store */
+  OPTF_NEGATE = 8                      /* Allow long option to be negated */
+};
+
+enum {
+  OPTF_NOLONGS = 1,                    /* Don't read long options */
+  OPTF_NOSHORTS = 2,                   /* Don't read short options */
+  OPTF_NUMBERS = 4,                    /* Read numeric options */
+  OPTF_NEGATION = 8,                   /* Allow `%|+|%' for negations */
+  OPTF_ENVVAR = 16,                    /* Parse options from env var */
+  OPTF_NOPROGNAME = 32,                        /* Don't set @optprog@  */
+  OPTF_NEGNUMBER = 64                  /* Allow negated number options */
 };
 
 enum {
-  gFlag_noLongs = 1,                   /* Don't read long options */
-  gFlag_noShorts = 2,                  /* Don't read short options */
-  gFlag_numbers = 4,                   /* Read numeric options */
-  gFlag_negation = 8,                  /* Allow `%|+|%' for negations */
-  gFlag_envVar = 16,                   /* Parse options from env var */
-  gFlag_noProgName = 32,               /* Don't set @optprog@  */
-  gFlag_negNumber = 64,                        /* Allow negated number options */
-  gFlag__last_mdwopt_flag = 0          /* Dummy value */
+  OPTF_NEGATED = 256                   /* Option flag was negated by user */
+};
+
+/* --- Older new-style names --- */
+
+enum {
+  gFlag_argReq = 1, gFlag_argOpt = 2, gFlag_switch = 4, gFlag_negate = 8
 };
 
 enum {
-  gFlag_negated = 256,                 /* Option flag was negated by user */
-  gFlag__last_return_flag = 0          /* Dummy value */
+  gFlag_noLongs = 1, gFlag_noShorts = 2, gFlag_numbers = 4,
+  gFlag_negation = 8, gFlag_envVar = 16, gFlag_noProgName = 32,
+  gFlag_negNumber = 64
+};
+
+enum {
+  gFlag_negated = 256
 };
 
 /*----- Main code ---------------------------------------------------------*/
@@ -315,7 +345,7 @@ enum {
  *              the caller.  A pointer to an argument is stored in
  *              @data->arg@, or @NULL@ is stored if there was no argument.
  *              If a negated option was found, the option character is
- *              returned ORred with @gFlag_negated@ (bit 8 set).
+ *              returned ORred with @OPTF_NEGATED@ (bit 8 set).
  *
  *              Long options are described in a table.  Each entry in the
  *              table is of type @struct option@, and the table is terminated
@@ -333,9 +363,9 @@ enum {
  *              table entry.  If @flag@ is nonzero, it points to an integer
  *              to be modified by mdwopt.  Usually the value in the @val@
  *              field is simply stored in the @flag@ variable. If the flag
- *              @gFlag_switch@ is set, however, the value is combined with
+ *              @OPTF_SWITCH@ is set, however, the value is combined with
  *              the existing value of the flags using a bitwise OR.  If
- *              @gFlag_negate@ is set, then the flag bit will be cleared if a
+ *              @OPTF_NEGATE@ is set, then the flag bit will be cleared if a
  *              matching negated long option is found.  The value 0 is
  *              returned.
  *
@@ -348,11 +378,12 @@ enum {
  *              Numeric options, if enabled, cause the value `%|#|%' to be
  *              returned, and the numeric value to be stored in @data->opt@.
  *
- *              If the flag @gFlag_envVar@ is set on entry, options will be
+ *              If the flag @OPTF_ENVVAR@ is set on entry, options will be
  *              extracted from an environment variable whose name is built by
- *              capitalising all the letters of the program's name.  (This
+ *              capitalizing all the letters of the program's name.  (This
  *              allows a user to have different default settings for a
- *              program, by calling it through different symbolic links.)  */
+ *              program, by calling it through different symbolic links.)
+ */
 
 extern int mdwopt(int /*argc*/, char *const */*argv*/,
                  const char */*shortopt*/,
@@ -361,10 +392,10 @@ extern int mdwopt(int /*argc*/, char *const */*argv*/,
 
 /* --- Macros for more commonly used routines --- */
 
-#define getopt(c, v, o) mdwopt(c, v, o, 0, 0, 0, gFlag_noLongs)
+#define getopt(c, v, o) mdwopt(c, v, o, 0, 0, 0, OPTF_NOLONGS)
 #define getopt_long(c, v, o, l, li) mdwopt(c, v, o, l, li, 0, 0)
 #define getopt_long_only(c, v, o, l, li)                               \
-  mdwopt(c, v, o, l, li, 0, gFlag_noShorts)
+  mdwopt(c, v, o, l, li, 0, OPTF_NOSHORTS)
 
 #ifdef __cplusplus
 }