From e2d517c67ce9c4a100bad0e44f17b930e4b457b7 Mon Sep 17 00:00:00 2001 From: jbj Date: Fri, 22 Oct 1999 18:25:39 +0000 Subject: [PATCH] Modify test1 to do poptResetContext before parsing args. CVS patchset: 3397 CVS date: 1999/10/22 18:25:39 --- popt/po/popt.pot | 2 +- popt/test1.c | 47 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/popt/po/popt.pot b/popt/po/popt.pot index c337343..9238071 100644 --- a/popt/po/popt.pot +++ b/popt/po/popt.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-10-22 14:06-0400\n" +"POT-Creation-Date: 1999-10-22 14:22-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/popt/test1.c b/popt/test1.c index 4a33287..cd8e897 100644 --- a/popt/test1.c +++ b/popt/test1.c @@ -1,5 +1,5 @@ /* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING - file accompanying popt source distributions, available from + file accompanying popt source distributions, available from ftp://ftp.redhat.com/pub/code/popt */ #include @@ -7,10 +7,12 @@ #include "popt.h" +static int pass2 = 0; static void option_callback(poptContext con, enum poptCallbackReason reason, - const struct poptOption * opt, + const struct poptOption * opt, char * arg, void * data) { - fprintf(stdout, "callback: %c %s %s ", opt->val, (char *) data, arg); + if (pass2) + fprintf(stdout, "callback: %c %s %s ", opt->val, (char *) data, arg); } int arg1 = 0; @@ -21,41 +23,52 @@ int shortopt = 0; int singleDash = 0; static struct poptOption moreCallbackArgs[] = { - { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA, + { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA, (void *)option_callback, 0, NULL }, { "cb2", 'c', POPT_ARG_STRING, NULL, 'c', "Test argument callbacks" }, - { NULL, '\0', 0, NULL, 0 } + { NULL, '\0', 0, NULL, 0 } }; static struct poptOption callbackArgs[] = { { NULL, '\0', POPT_ARG_CALLBACK, (void *)option_callback, 0, "sampledata" }, { "cb", 'c', POPT_ARG_STRING, NULL, 'c', "Test argument callbacks" }, { "long", '\0', 0, NULL, 'l', "Unused option for help testing" }, - { NULL, '\0', 0, NULL, 0 } + { NULL, '\0', 0, NULL, 0 } }; static struct poptOption moreArgs[] = { { "inc", 'i', 0, &inc, 0, "An included argument" }, - { NULL, '\0', 0, NULL, 0 } + { NULL, '\0', 0, NULL, 0 } }; static struct poptOption options[] = { { NULL, '\0', POPT_ARG_INCLUDE_TABLE, &moreCallbackArgs, 0, "arg for cb2" }, - { "arg1", '\0', 0, &arg1, 0, "First argument with a really long" + { "arg1", '\0', 0, &arg1, 0, "First argument with a really long" " description. After all, we have to test argument help" " wrapping somehow, right?", NULL }, { "arg2", '2', POPT_ARG_STRING, &arg2, 0, "Another argument", "ARG" }, { "arg3", '3', POPT_ARG_INT, &arg3, 0, "A third argument", "ANARG" }, { "shortoption", '\0', POPT_ARGFLAG_ONEDASH, &shortopt, 0, "Needs a single -", NULL }, - { "hidden", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, NULL, 0, + { "hidden", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, NULL, 0, "This shouldn't show up", NULL }, - { "unused", '\0', POPT_ARG_STRING, NULL, 0, + { "unused", '\0', POPT_ARG_STRING, NULL, 0, "Unused option for help testing", "UNUSED" }, { NULL, '-', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &singleDash, 0 }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, &moreArgs, 0, NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, &callbackArgs, 0, "Callback arguments" }, POPT_AUTOHELP - { NULL, '\0', 0, NULL, 0 } + { NULL, '\0', 0, NULL, 0 } }; +static void resetVars(void) +{ + arg1 = 0; + arg2 = "(none)"; + arg3 = 0; + inc = 0; + shortopt = 0; + singleDash = 0; + pass2 = 0; +} + int main(int argc, char ** argv) { int rc; poptContext optCon; @@ -63,12 +76,20 @@ int main(int argc, char ** argv) { int help = 0; int usage = 0; + resetVars(); optCon = poptGetContext("test1", argc, argv, options, 0); poptReadConfigFile(optCon, "./test-poptrc"); + while ((rc = poptGetNextOpt(optCon)) > 0) /* Read all the options ... */ + ; + + poptResetContext(optCon); /* ... and then start over. */ + resetVars(); + + pass2 = 1; if ((rc = poptGetNextOpt(optCon)) < -1) { - fprintf(stderr, "test1: bad argument %s: %s\n", - poptBadOption(optCon, POPT_BADOPTION_NOALIAS), + fprintf(stderr, "test1: bad argument %s: %s\n", + poptBadOption(optCon, POPT_BADOPTION_NOALIAS), poptStrerror(rc)); return 2; } -- 2.7.4