Enlightenment CVS committal

Author  : mej
Project : eterm
Module  : libast

Dir     : eterm/libast/src


Modified Files:
        options.c strings.c 


Log Message:
Mon Jun 16 20:43:43 2003                        Michael Jennings (mej)

Additional documentation.

Added support for versions containing "rc."

===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/options.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- options.c   8 Mar 2003 04:52:56 -0000       1.7
+++ options.c   17 Jun 2003 00:44:08 -0000      1.8
@@ -29,9 +29,11 @@
  * option parser.
  *
  * @author Michael Jennings <[EMAIL PROTECTED]>
+ * $Revision: 1.8 $
+ * $Date: 2003/06/17 00:44:08 $
  */
 
-static const char cvs_ident[] = "$Id: options.c,v 1.7 2003/03/08 04:52:56 mej Exp $";
+static const char cvs_ident[] = "$Id: options.c,v 1.8 2003/06/17 00:44:08 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -39,16 +41,57 @@
 
 #include <libast_internal.h>
 
+/[EMAIL PROTECTED]/
+/**
+ * @name Internal Parser Macros
+ * Macros to simply certain parser operations.
+ *
+ * This group of macros is used internally by the command line option
+ * parser.  They are not available for use by client programs and are
+ * documented here solely for completeness and clarity.
+ *
+ * @see DOXGRP_OPT
+ * @ingroup DOXGRP_OPT
+ */
+
+/** Next argument.  Proceed to parsing the next argument in the argv[] list. */
 #define NEXT_ARG()       D_OPTIONS(("NEXT_ARG()\n")); i++; opt = argv[i]; continue
+/** Next letter.  Proceed to the next letter in a bundled option series. */
 #define NEXT_LETTER()    D_OPTIONS(("NEXT_LETTER(%s)\n", opt)); if (*(opt + 1)) 
{opt++;} else {NEXT_ARG();} continue
+/** Next loop.  Proceed to the next parsing stage (letter or word). */
 #define NEXT_LOOP()      D_OPTIONS(("NEXT_LOOP()\n")); if (islong || val_ptr) 
{NEXT_ARG();} else {NEXT_LETTER();} NOP
+/** Option parse test.  Returns true IFF the option should be parsed on this pass. */
 #define SHOULD_PARSE(j)  ((SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_POSTPARSE) && 
!SPIFOPT_OPT_IS_PREPARSE(j)) \
                            || (!SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_POSTPARSE) && 
SPIFOPT_OPT_IS_PREPARSE(j)))
+/[EMAIL PROTECTED]/
 
+/**
+ * Internal option parser settings.
+ *
+ * This variable holds the actual structure containing the settings
+ * for the option parser.  It should never be accessed directly, but
+ * rather through use of the Option Parser Settings Macros.
+ *
+ * @see DOXGRP_OPT
+ * @ingroup DOXGRP_OPT
+ */
 spifopt_settings_t spifopt_settings;
 
+/**
+ * Option-type-to-string translator.
+ *
+ * This function is used internally by spifopt_usage() to convert an
+ * option's numerical type to a short string representing that type of
+ * option.
+ *
+ * @param type The numeric option type (SPIFOPT_OPT_FLAGS()).
+ * @return     A 6-char-max string describing the option type.
+ *
+ * @see DOXGRP_OPT
+ * @ingroup DOXGRP_OPT
+ */
 static const char *
-get_option_type_string(spif_uint32_t type)
+get_option_type_string(spif_uint16_t type)
 {
     switch (type) {
         case SPIFOPT_FLAG_BOOLEAN: return "(bool)"; break;
@@ -59,6 +102,17 @@
     ASSERT_NOTREACHED_RVAL(NULL);
 }
 
+/**
+ * Built-in default function for displaying help information.
+ *
+ * This is the default "help handler" function.  It displays a list of
+ * long and short options along with the description of each.  It also
+ * prints out a brief type identifier as produced by
+ * get_option_type_string().
+ *
+ * @see DOXGRP_MEM, SPIFOPT_HELPHANDLER_SET(), spifopt_helphandler_t
+ * @ingroup DOXGRP_MEM
+ */
 void
 spifopt_usage(void)
 {
@@ -114,6 +168,18 @@
     exit(EXIT_FAILURE);
 }
 
+/**
+ * Find matching long option.
+ *
+ * This function searches the option list for a long option which
+ * matches the given string.
+ *
+ * @param opt The long option string to match against.
+ * @return    The index of the matching option, or -1 if not found.
+ *
+ * @see DOXGRP_OPT, is_valid_option()
+ * @ingroup DOXGRP_OPT
+ */
 static spif_int32_t
 find_long_option(char *opt)
 {
@@ -139,6 +205,18 @@
     return ((spif_int32_t) -1);
 }
 
+/**
+ * Find matching short option.
+ *
+ * This function searches the option list for a short option which
+ * matches the given character.
+ *
+ * @param opt The short option character to match against.
+ * @return    The index of the matching option, or -1 if not found.
+ *
+ * @see DOXGRP_OPT, is_valid_option()
+ * @ingroup DOXGRP_OPT
+ */
 static spif_int32_t
 find_short_option(char opt)
 {
@@ -156,6 +234,23 @@
     return ((spif_int32_t) -1);
 }
 
+/**
+ * Find the value for a long option.
+ *
+ * This function looks for and returns the value associated with a
+ * long option, or NULL if one is not found.
+ *
+ * @param arg      The argument containing the long option.
+ * @param next_arg The next word on the command line.
+ * @param hasequal Address of a toggle variable to return whether or
+ *                 not the value was appended to the option with an
+ *                 equals sign ('=').
+ * @return         The option's value string, or NULL if no value is
+ *                 found.
+ *
+ * @see DOXGRP_OPT, spifopt_parse()
+ * @ingroup DOXGRP_OPT
+ */
 static char *
 find_value_long(char *arg, char *next_arg, unsigned char *hasequal)
 {
@@ -170,10 +265,24 @@
         }
         *hasequal = 0;
     }
-    D_OPTIONS(("hasequal == %d  val_ptr == %10.8p \"%s\"\n", *hasequal, val_ptr, 
(val_ptr ? val_ptr : "(nil)")));
+    D_OPTIONS(("hasequal == %d  val_ptr == %10.8p \"%s\"\n", *hasequal, val_ptr, 
NONULL(val_ptr)));
     return val_ptr;
 }
 
+/**
+ * Find the value for a short option.
+ *
+ * This function looks for and returns the value associated with a
+ * short option, or NULL if one is not found.
+ *
+ * @param arg      The argument containing the short option.
+ * @param next_arg The next word on the command line.
+ * @return         The option's value string, or NULL if no value is
+ *                 found.
+ *
+ * @see DOXGRP_OPT, spifopt_parse()
+ * @ingroup DOXGRP_OPT
+ */
 static char *
 find_value_short(char *arg, char *next_arg)
 {
@@ -188,6 +297,18 @@
     return val_ptr;
 }
 
+/**
+ * Test for a valid boolean value.
+ *
+ * This function compares the given value pointer to the possible
+ * values for a boolean option.
+ *
+ * @param val_ptr The value to be tested.
+ * @return        TRUE if boolean, FALSE if not.
+ *
+ * @see DOXGRP_OPT, spifopt_parse()
+ * @ingroup DOXGRP_OPT
+ */
 static spif_bool_t
 is_boolean_value(char *val_ptr)
 {
@@ -197,6 +318,19 @@
     return ((BOOL_OPT_ISTRUE(val_ptr) || BOOL_OPT_ISFALSE(val_ptr)) ? (TRUE) : 
(FALSE));
 }
 
+/**
+ * Check for a match to the current option.
+ *
+ * This function does some initial parsing, then calls the appropriate
+ * sub-function to look for matches.
+ *
+ * @param opt The argument string.
+ * @return    TRUE if a match is found, FALSE otherwise.
+ *
+ * @see DOXGRP_OPT, spifopt_parse(), find_long_option(),
+ *      find_short_option()
+ * @ingroup DOXGRP_OPT
+ */
 static spif_bool_t
 is_valid_option(char *opt)
 {
@@ -219,6 +353,23 @@
     return FALSE;
 }
 
+/**
+ * Handle a boolean option.
+ *
+ * This function is reponsible for taking the proper action for a
+ * boolean option.  It sets the appropriate bitfield on the
+ * appropriate variable as defined by the settings for that option.
+ *
+ * @param n       The index for the option within the option list.
+ * @param val_ptr A pointer (possibly NULL) to the value specified
+ *                with the option.
+ * @param islong  0 if the option was short, non-zero otherwise.
+ * @return    TRUE if a match is found, FALSE otherwise.
+ *
+ * @see DOXGRP_OPT, spifopt_parse(), find_long_option(),
+ *      find_short_option()
+ * @ingroup DOXGRP_OPT
+ */
 static spif_bool_t
 handle_boolean(spif_int32_t n, char *val_ptr, unsigned char islong)
 {
@@ -257,6 +408,20 @@
     return TRUE;
 }
 
+/**
+ * Handle an integer option.
+ *
+ * This function is responsible for taking the appropriate action when
+ * an integer option is encountered.  The variable whose address was
+ * given to the option structure is assigned the value of the option.
+ *
+ * @param n       The index of the option.
+ * @param val_ptr The value passed to the option.
+ *
+ * @see DOXGRP_OPT, spifopt_parse(), find_long_option(),
+ *      find_short_option()
+ * @ingroup DOXGRP_OPT
+ */
 static void
 handle_integer(spif_int32_t n, char *val_ptr)
 {
@@ -264,6 +429,20 @@
     *((int *) SPIFOPT_OPT_VALUE(n)) = strtol(val_ptr, (char **) NULL, 0);
 }
 
+/**
+ * Handle a string option.
+ *
+ * This function is responsible for taking the appropriate action when
+ * a string option is encountered.  The variable whose address was
+ * given to the option structure is assigned the value of the option.
+ *
+ * @param n       The index of the option.
+ * @param val_ptr The value passed to the option.
+ *
+ * @see DOXGRP_OPT, spifopt_parse(), find_long_option(),
+ *      find_short_option()
+ * @ingroup DOXGRP_OPT
+ */
 static void
 handle_string(spif_int32_t n, char *val_ptr)
 {
@@ -271,6 +450,25 @@
     *((const char **) SPIFOPT_OPT_VALUE(n)) = STRDUP(val_ptr);
 }
 
+
+/**
+ * Handle an argument list option.
+ *
+ * This function is responsible for taking the appropriate action when
+ * an argument list option is encountered.  An array of arguments is
+ * created at the specified address.  There can be only one of these.
+ *
+ * @param n        The index of the option.
+ * @param val_ptr  The value passed to the option.
+ * @param hasequal TRUE if the long option used '=', FALSE otherwise.
+ * @param i        The index of the current option within argc[].
+ * @param argc     The argument count.
+ * @param argv     The argument list.
+ *
+ * @see DOXGRP_OPT, spifopt_parse(), find_long_option(),
+ *      find_short_option()
+ * @ingroup DOXGRP_OPT
+ */
 static void
 handle_arglist(spif_int32_t n, char *val_ptr, unsigned char hasequal,
                spif_int32_t i, int argc, char *argv[])
@@ -305,6 +503,19 @@
     }
 }
 
+/**
+ * Parse the command line arguments for options.
+ *
+ * This function iterates through the command line arguments looking
+ * for options which have been defined.  Each option encountered is
+ * handled according to its type.
+ *
+ * @param argc The number of arguments.
+ * @param argv The array of argument strings.
+ *
+ * @see DOXGRP_OPT
+ * @ingroup DOXGRP_OPT
+ */
 void
 spifopt_parse(int argc, char *argv[])
 {
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/strings.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- strings.c   24 Feb 2003 03:03:20 -0000      1.9
+++ strings.c   17 Jun 2003 00:44:08 -0000      1.10
@@ -30,7 +30,7 @@
  * @author Michael Jennings <[EMAIL PROTECTED]>
  */
 
-static const char cvs_ident[] = "$Id: strings.c,v 1.9 2003/02/24 03:03:20 mej Exp $";
+static const char cvs_ident[] = "$Id: strings.c,v 1.10 2003/06/17 00:44:08 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -768,7 +768,7 @@
     for (; *v1 && *v2; ) {
         if (isalpha(*v1) && isalpha(*v2)) {
             char *p1 = buff1, *p2 = buff2;
-            spif_int8_t ival1 = 5, ival2 = 5;
+            spif_int8_t ival1 = 6, ival2 = 6;
 
             /* Compare words.  First, copy each word into buffers. */
             for (; isalpha(*v1); v1++, p1++) *p1 = *v1;
@@ -788,6 +788,8 @@
                 ival1 = 3;
             } else if (!strcmp(buff1, "beta")) {
                 ival1 = 4;
+            } else if (!strcmp(buff1, "rc")) {
+                ival1 = 5;
             }
             if (!strcmp(buff2, "snap")) {
                 ival2 = 1;
@@ -797,11 +799,13 @@
                 ival2 = 3;
             } else if (!strcmp(buff2, "beta")) {
                 ival2 = 4;
+            } else if (!strcmp(buff2, "rc")) {
+                ival2 = 5;
             }
             if (ival1 != ival2) {
                 /* If the values are different, compare them. */
                 return SPIF_CMP_FROM_INT(ival1 - ival2);
-            } else if (ival1 == 5) {
+            } else if (ival1 == 6) {
                 int c;
 
                 /* Two arbitrary strings.  Compare them too. */




-------------------------------------------------------
This SF.Net email is sponsored by: INetU
Attention Web Developers & Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to