OSSP CVS Repository

ossp - Difference in ossp-pkg/rc/rc_cliopt.c versions 1.2 and 1.3
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/rc/rc_cliopt.c 1.2 -> 1.3

--- rc_cliopt.c  2002/04/11 16:52:45     1.2
+++ rc_cliopt.c  2002/04/12 19:15:12     1.3
@@ -36,46 +36,7 @@
 #include "rc_config.h"
 #include "popt.h"       /* OSSP popt options library    */
 
-static char *s_szOptuples[RC_NUMOPTS];  /* Option name value tuples */
-static struct popt_option optionsTable[] = {
-    /* Long options with short keys but no arguments */
-    { RC_USE_NAME, '?', POPT_ARG_NONE,   0, RC_USE_VAL, RC_USE_DESC, NULL },
-    { RC_DBG_NAME, 'd', POPT_ARG_NONE,   0, RC_DBG_VAL, RC_DBG_DESC, NULL },
-    { RC_VER_NAME, 'V', POPT_ARG_NONE,   0, RC_VER_VAL, RC_VER_DESC, NULL },
-    { RC_EVL_NAME, 'e', POPT_ARG_NONE,   0, RC_EVL_VAL, RC_EVL_DESC, NULL },
-    { RC_HLP_NAME, 'h', POPT_ARG_NONE,   0, RC_HLP_VAL, RC_HLP_DESC, NULL },
-    { RC_INF_NAME, 'i', POPT_ARG_NONE,   0, RC_INF_VAL, RC_INF_DESC, NULL },
-    { RC_LBL_NAME, 'l', POPT_ARG_NONE,   0, RC_LBL_VAL, RC_LBL_DESC, NULL },
-    { RC_PRN_NAME, 'p', POPT_ARG_NONE,   0, RC_PRN_VAL, RC_PRN_DESC, NULL },
-    { RC_SIL_NAME, 's', POPT_ARG_NONE,   0, RC_SIL_VAL, RC_SIL_DESC, NULL },
-    { RC_RAW_NAME, 'r', POPT_ARG_NONE,   0, RC_RAW_VAL, RC_RAW_DESC, NULL },
-    { RC_VRB_NAME, 'v', POPT_ARG_NONE,   0, RC_VRB_VAL, RC_VRB_DESC, NULL },
-    { RC_EXC_NAME, 'x', POPT_ARG_NONE,   0, RC_EXC_VAL, RC_EXC_DESC, NULL },
-                                          
-    /* Single argument long options with short keys */
-    {RC_LOC_NAME, 'L', POPT_ARG_STRING, 0, RC_LOC_VAL, RC_LOC_DESC, "regx"},
-    {RC_CNF_NAME, 'c', POPT_ARG_STRING, 0, RC_CNF_VAL, RC_CNF_DESC, "path"},
-    {RC_FNC_NAME, 'f', POPT_ARG_STRING, 0, RC_FNC_VAL, RC_FNC_DESC, "path"},
-    {RC_QRY_NAME, 'q', POPT_ARG_STRING, 0, RC_QRY_VAL, RC_QRY_DESC, "varx"},
-    {RC_TMP_NAME, 't', POPT_ARG_STRING, 0, RC_TMP_VAL, RC_TMP_DESC, "path"},
-
-    /* Single argument long options without short keys */
-    { RC_OWN_NAME, 0, POPT_ARG_STRING, 0, RC_OWN_VAL, RC_OWN_DESC, "user" },
-    { RC_GRP_NAME, 0, POPT_ARG_STRING, 0, RC_GRP_VAL, RC_GRP_DESC, "group"},
-    { RC_MSK_NAME, 0, POPT_ARG_INT,    0, RC_MSK_VAL, RC_MSK_DESC, "umask"},
-    { RC_ASS_NAME, 0, POPT_ARG_STRING, 0, RC_ASS_VAL, RC_ASS_DESC, "regx" },
-    { RC_DEF_NAME, 0, POPT_ARG_STRING, 0, RC_DEF_VAL, RC_DEF_DESC, "regx" },
-    { RC_REF_NAME, 0, POPT_ARG_STRING, 0, RC_REF_VAL, RC_REF_DESC, "regx" },
-    { RC_PRM_NAME, 0, POPT_ARG_STRING, 0, RC_PRM_VAL, RC_PRM_DESC, "regx" },
-    { RC_TRM_NAME, 0, POPT_ARG_STRING, 0, RC_TRM_VAL, RC_TRM_DESC, "regx" },
-    { RC_NCF_NAME, 0, POPT_ARG_STRING, 0, RC_NCF_VAL, RC_NCF_DESC, "name" },
-    { RC_CMN_NAME, 0, POPT_ARG_STRING, 0, RC_CMN_VAL, RC_CMN_DESC, "name" },
-    { RC_DFL_NAME, 0, POPT_ARG_STRING, 0, RC_DFL_VAL, RC_DFL_DESC, "name" },
-    { RC_ERR_NAME, 0, POPT_ARG_STRING, 0, RC_ERR_VAL, RC_ERR_DESC, "name" },
-
-    POPT_AUTOHELP
-    { NULL, 0, 0, NULL, 0 }
-};
+static char *m_szOptuples[RC_NUMOPTS];  /* Option name value tuples */
 
 
 /***************************************
@@ -94,9 +55,9 @@
 /*    s_pBintab->pOptlist->pvData = NULL;
     s_pBintab->pOptlist->pvNext = NULL;*/
 
-    memset(s_szOptuples, NULL, sizeof(s_szOptuples));
+    memset(m_szOptuples, NULL, sizeof(m_szOptuples));
 
-TRACE("cliopt constructed.");
+TRACE("cliopt constructed.\n");
     return(RC_THROW(RC_OK));
 }
 
@@ -106,16 +67,10 @@
 ***************************************/
 const char *clioptGetval(rc_opt_t Optname)
 {
-    ex_t Except;
+    if (!(Optname < RC_NUMOPTS))    /* Validate option range    */
+        RC_THROW(RC_ERR_USE);
 
-    assert(Optname < RC_NUMOPTS);   /* Invalidate if nonexistent option */
-    ex_try {
-        return((const char *)s_szOptuples[Optname]);
-    }
-    ex_catch(Except) {
-        rethrow;
-    }
-    return (NULL);  /* Not reached  */
+    return((const char *)m_szOptuples[Optname]);
 }
 
 /***************************************
@@ -136,95 +91,95 @@
 rc_return_t clioptProcess(int cliOption)
 {
     switch (cliOption) {
-    case RC_USE_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_DBG_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_VER_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_EVL_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_HLP_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_INF_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_LBL_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_PRN_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_SIL_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_RAW_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_VRB_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_EXC_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_LOC_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_CNF_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_FNC_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_QRY_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_TMP_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_OWN_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_GRP_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_MSK_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_ASS_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_DEF_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_REF_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_PRM_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_TRM_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_NCF_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_CMN_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_DFL_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    case RC_ERR_VAL:
-        s_szOptuples[cliOption] = strdup("1");
-        break;
-    default :
-        break;
+        case RC_USE_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_DBG_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_VER_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_EVL_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_HLP_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_INF_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_LBL_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_PRN_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_SIL_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_RAW_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_VRB_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_EXC_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_LOC_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_CNF_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_FNC_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_QRY_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_TMP_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_OWN_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_GRP_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_MSK_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_ASS_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_DEF_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_REF_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_PRM_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_TRM_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_NCF_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_CMN_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_DFL_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        case RC_ERR_VAL:
+            m_szOptuples[cliOption] = strdup("1");
+            break;
+        default :
+            break;
     }
 
     return(RC_THROW(RC_OK));
@@ -236,6 +191,47 @@
 ***************************************/
 rc_return_t clioptParse(int argc, char *argv[])
 {
+    static struct popt_option optionsTable[] = {
+        /* Long options with short keys but no arguments */
+        { RC_USE_NAME, '?', POPT_ARG_NONE,   0, RC_USE_VAL, RC_USE_DESC, NULL },
+        { RC_DBG_NAME, 'd', POPT_ARG_NONE,   0, RC_DBG_VAL, RC_DBG_DESC, NULL },
+        { RC_VER_NAME, 'V', POPT_ARG_NONE,   0, RC_VER_VAL, RC_VER_DESC, NULL },
+        { RC_EVL_NAME, 'e', POPT_ARG_NONE,   0, RC_EVL_VAL, RC_EVL_DESC, NULL },
+        { RC_HLP_NAME, 'h', POPT_ARG_NONE,   0, RC_HLP_VAL, RC_HLP_DESC, NULL },
+        { RC_INF_NAME, 'i', POPT_ARG_NONE,   0, RC_INF_VAL, RC_INF_DESC, NULL },
+        { RC_LBL_NAME, 'l', POPT_ARG_NONE,   0, RC_LBL_VAL, RC_LBL_DESC, NULL },
+        { RC_PRN_NAME, 'p', POPT_ARG_NONE,   0, RC_PRN_VAL, RC_PRN_DESC, NULL },
+        { RC_SIL_NAME, 's', POPT_ARG_NONE,   0, RC_SIL_VAL, RC_SIL_DESC, NULL },
+        { RC_RAW_NAME, 'r', POPT_ARG_NONE,   0, RC_RAW_VAL, RC_RAW_DESC, NULL },
+        { RC_VRB_NAME, 'v', POPT_ARG_NONE,   0, RC_VRB_VAL, RC_VRB_DESC, NULL },
+        { RC_EXC_NAME, 'x', POPT_ARG_NONE,   0, RC_EXC_VAL, RC_EXC_DESC, NULL },
+                                              
+        /* Single argument long options with short keys */
+        {RC_LOC_NAME, 'L', POPT_ARG_STRING, 0, RC_LOC_VAL, RC_LOC_DESC, "regx"},
+        {RC_CNF_NAME, 'c', POPT_ARG_STRING, 0, RC_CNF_VAL, RC_CNF_DESC, "path"},
+        {RC_FNC_NAME, 'f', POPT_ARG_STRING, 0, RC_FNC_VAL, RC_FNC_DESC, "path"},
+        {RC_QRY_NAME, 'q', POPT_ARG_STRING, 0, RC_QRY_VAL, RC_QRY_DESC, "varx"},
+        {RC_TMP_NAME, 't', POPT_ARG_STRING, 0, RC_TMP_VAL, RC_TMP_DESC, "path"},
+
+        /* Single argument long options without short keys */
+        { RC_OWN_NAME, 0, POPT_ARG_STRING, 0, RC_OWN_VAL, RC_OWN_DESC, "user" },
+        { RC_GRP_NAME, 0, POPT_ARG_STRING, 0, RC_GRP_VAL, RC_GRP_DESC, "group"},
+        { RC_MSK_NAME, 0, POPT_ARG_INT,    0, RC_MSK_VAL, RC_MSK_DESC, "umask"},
+        { RC_ASS_NAME, 0, POPT_ARG_STRING, 0, RC_ASS_VAL, RC_ASS_DESC, "regx" },
+        { RC_DEF_NAME, 0, POPT_ARG_STRING, 0, RC_DEF_VAL, RC_DEF_DESC, "regx" },
+        { RC_REF_NAME, 0, POPT_ARG_STRING, 0, RC_REF_VAL, RC_REF_DESC, "regx" },
+        { RC_PRM_NAME, 0, POPT_ARG_STRING, 0, RC_PRM_VAL, RC_PRM_DESC, "regx" },
+        { RC_TRM_NAME, 0, POPT_ARG_STRING, 0, RC_TRM_VAL, RC_TRM_DESC, "regx" },
+        { RC_NCF_NAME, 0, POPT_ARG_STRING, 0, RC_NCF_VAL, RC_NCF_DESC, "name" },
+        { RC_CMN_NAME, 0, POPT_ARG_STRING, 0, RC_CMN_VAL, RC_CMN_DESC, "name" },
+        { RC_DFL_NAME, 0, POPT_ARG_STRING, 0, RC_DFL_VAL, RC_DFL_DESC, "name" },
+        { RC_ERR_NAME, 0, POPT_ARG_STRING, 0, RC_ERR_VAL, RC_ERR_DESC, "name" },
+
+        /* Special stuff    */
+        POPT_AUTOHELP
+        { NULL, 0, 0, NULL, 0 }
+    };
+
     ex_t Except;
     char cliOpt = 0;            /* For argument parsing           */
     char *szCLIBuf = NULL;
@@ -304,19 +300,17 @@
         rethrow;
     }*/
 
-for (i = 0; i < RC_NUMOPTS; i++)
-    if (s_szOptuples[i])
-        TRACEL(i);
-
-    for (i = 0; i < RC_NUMOPTS; i++)                    /* Free the tuple */
-        s_szOptuples[i] ? free(s_szOptuples[i]) : RC_NOP; /* or do nothing  */
+    for (i = 0; i < RC_NUMOPTS; i++)                      /* Free the tuple */
+        m_szOptuples[i] ? free(m_szOptuples[i]) : RC_NOP; /* or do nothing  */
 
-    memset(s_szOptuples, NULL, sizeof(s_szOptuples));     /* Clear tuples   */
+    memset(m_szOptuples, NULL, sizeof(m_szOptuples));     /* Clear tuples   */
 
+/* FIXME BEGIN DEBUG */
 for (i = 0; i < RC_NUMOPTS; i++)
-    if (s_szOptuples[i])
-        TRACE("Problem! Destructor failed!");
-TRACE("cliopt destructed.");
+    if (m_szOptuples[i])
+        TRACE("Problem! Destructor failed!\n");
+TRACE("cliopt destructed.\n");
+/* FIXME END DEBUG */
 
     return(RC_THROW(RC_OK));
 }

CVSTrac 2.0.1