move -lpopt replacement code from source/popt/* to source/lib/popt/*
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Feb 2004 14:21:44 +0000 (14:21 +0000)
committerStefan Metzmacher <metze@samba.org>
Thu, 12 Feb 2004 14:21:44 +0000 (14:21 +0000)
metze
(This used to be commit 9d1018557fdc51cada1ad082d85c0dc48e1b3072)

17 files changed:
source4/configure.in
source4/lib/popt/config.m4
source4/popt/.cvsignore [deleted file]
source4/popt/CHANGES [deleted file]
source4/popt/COPYING [deleted file]
source4/popt/README [deleted file]
source4/popt/config.m4 [deleted file]
source4/popt/dummy.in [deleted file]
source4/popt/findme.c [deleted file]
source4/popt/findme.h [deleted file]
source4/popt/popt.c [deleted file]
source4/popt/popt.h [deleted file]
source4/popt/poptconfig.c [deleted file]
source4/popt/popthelp.c [deleted file]
source4/popt/poptint.h [deleted file]
source4/popt/poptparse.c [deleted file]
source4/popt/system.h [deleted file]

index 38cdd53c1052504c3bdb2c39a139416860210f9c..4bf5a052edd0881d8123e7959ddb0b0889868cbc 100644 (file)
@@ -1951,7 +1951,6 @@ fi
 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
 
 sinclude(nsswitch/config.m4)
-sinclude(popt/config.m4)
 
 dnl exclude these modules 
 AC_ARG_WITH(exclude-modules,
@@ -1983,6 +1982,7 @@ AC_ARG_WITH(static-modules,
        done
 fi ])
 
+sinclude(lib/popt/config.m4)
 sinclude(lib/iconv.m4)
 sinclude(lib/basic.m4)
 sinclude(libcli/config.m4)
index 0be7d308c7d1e411d2c8d1e6387c7051664d3d63..6ac5d91079401838dfb9245cedfaae5238f19f3d 100644 (file)
@@ -25,9 +25,9 @@ fi
 
 AC_MSG_CHECKING(whether to use included popt)
 if test x"$INCLUDED_POPT" != x"no"; then
-       TMP_LIBPOPT_OBJS="popt/findme.o popt/popt.o popt/poptconfig.o \
-                               popt/popthelp.o popt/poptparse.o"
-       CPPFLAGS="$CPPFLAGS -I$srcdir/popt"
+       TMP_LIBPOPT_OBJS="lib/popt/findme.o lib/popt/popt.o lib/popt/poptconfig.o \
+                               lib/popt/popthelp.o lib/popt/poptparse.o"
+       CPPFLAGS="$CPPFLAGS -I$srcdir/lib/popt"
        AC_MSG_RESULT(yes)
 else
        AC_MSG_RESULT(no)
diff --git a/source4/popt/.cvsignore b/source4/popt/.cvsignore
deleted file mode 100644 (file)
index 86b08b5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-ID
-Makefile
-config.cache
-config.h
-config.log
-config.status
-rsync
-zlib/dummy
diff --git a/source4/popt/CHANGES b/source4/popt/CHANGES
deleted file mode 100644 (file)
index b6ab2aa..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-1.3 ->
-       - heavy dose of const's
-       - poptParseArgvString() now NULL terminates the list
-
-1.2.3 -> 1.3
-       - added support for single -
-       - misc bug fixes
-       - portability improvements
-
-1.2.2 -> 1.2.3
-       - fixed memset() in help message generation (Dale Hawkins)
-       - added extern "C" stuff to popt.h for C++ compilers (Dale Hawkins)
-       - const'ified poptParseArgvString (Jeff Garzik)
-
-1.2.1 -> 1.2.2
-       - fixed bug in chaind alias happens which seems to have only
-         affected --triggers in rpm
-       - added POPT_ARG_VAL
-       - popt.3 installed by default
-
-1.2 -> 1.2.1
-       - added POPT_ARG_INTL_DOMAIN (Elliot Lee)
-       - updated Makefile's to be more GNUish (Elliot Lee)
-
-1.1 -> 1.2
-       - added popt.3 man page (Robert Lynch)
-       - don't use mmap anymore (its lack of portability isn't worth the
-         trouble)
-       - added test script
-       - added support for exec
-       - removed support for *_POPT_ALIASES env variable -- it was a bad
-         idea
-       - reorganized into multiple source files
-       - added automatic help generation, POPT_AUTOHELP
-       - added table callbacks
-       - added table inclusion
-       - updated man page for new features
-       - added test scripts
-
-1.0 -> 1.1
-       - moved to autoconf (Fred Fish)
-       - added STRERROR replacement (Norbert Warmuth)
-       - added const keywords (Bruce Perens)
diff --git a/source4/popt/COPYING b/source4/popt/COPYING
deleted file mode 100644 (file)
index b4c7ca8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 1998  Red Hat Software
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from the X Consortium.
diff --git a/source4/popt/README b/source4/popt/README
deleted file mode 100644 (file)
index 7fccc83..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-This is the popt command line option parsing library. While it is similiar
-to getopt(3), it contains a number of enhancements, including:
-
-       1) popt is fully reentrant
-       2) popt can parse arbitrary argv[] style arrays while 
-          getopt(2) makes this quite difficult
-       3) popt allows users to alias command line arguments
-       4) popt provides convience functions for parsting strings
-          into argv[] style arrays
-
-popt is used by rpm, the Red Hat install program, and many other Red Hat
-utilities, all of which provide excellent examples of how to use popt. 
-Complete documentation on popt is available in popt.ps (included in this
-tarball), which is excerpted with permission from the book "Linux
-Application Development" by Michael K. Johnson and Erik Troan (availble
-from Addison Wesley in May, 1998).
-
-Comments on popt should be addressed to ewt@redhat.com.
diff --git a/source4/popt/config.m4 b/source4/popt/config.m4
deleted file mode 100644 (file)
index 0be7d30..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#################################################
-# Check to see if we should use the included popt
-
-INCLUDED_POPT=auto
-AC_ARG_WITH(included-popt,
-[  --with-included-popt    use bundled popt library, not from system],
-[ 
-case "$withval" in
-       yes)
-               INCLUDED_POPT=yes
-               ;;
-        no)
-               INCLUDED_POPT=no
-               ;;
-esac ],
-)
-if test x"$INCLUDED_POPT" != x"yes"; then
-       AC_CHECK_HEADERS(popt.h)
-       AC_CHECK_LIB_EXT(popt, TMP_LIBPOPT_LIBS, poptGetContext, [], [], INCLUDED_POPT=no)
-       if test x"$ac_cv_header_popt_h" = x"no"; then
-               INCLUDED_POPT=yes
-               TMP_LIBPOPT_LIBS=""
-       fi
-fi
-
-AC_MSG_CHECKING(whether to use included popt)
-if test x"$INCLUDED_POPT" != x"no"; then
-       TMP_LIBPOPT_OBJS="popt/findme.o popt/popt.o popt/poptconfig.o \
-                               popt/popthelp.o popt/poptparse.o"
-       CPPFLAGS="$CPPFLAGS -I$srcdir/popt"
-       AC_MSG_RESULT(yes)
-else
-       AC_MSG_RESULT(no)
-fi
-
-SMB_SUBSYSTEM(LIBPOPT,[],
-               [${TMP_LIBPOPT_OBJS}],
-               [],
-               [],
-               [${TMP_LIBPOPT_LIBS}])
diff --git a/source4/popt/dummy.in b/source4/popt/dummy.in
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/source4/popt/findme.c b/source4/popt/findme.c
deleted file mode 100644 (file)
index f2ad05b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#include "system.h"
-#include "findme.h"
-
-const char * findProgramPath(const char * argv0) {
-    char * path = getenv("PATH");
-    char * pathbuf;
-    char * start, * chptr;
-    char * buf, *local = NULL;
-
-    /* If there is a / in the argv[0], it has to be an absolute
-       path */
-    if (strchr(argv0, '/'))
-       return xstrdup(argv0);
-
-    if (!path) return NULL;
-
-    local = start = pathbuf = malloc(strlen(path) + 1);
-    buf = malloc(strlen(path) + strlen(argv0) + 2);
-    strcpy(pathbuf, path);
-
-    chptr = NULL;
-    do {
-       if ((chptr = strchr(start, ':')))
-           *chptr = '\0';
-       sprintf(buf, "%s/%s", start, argv0);
-
-       if (!access(buf, X_OK)) {
-               if (local) free(local);
-               return buf;
-       }
-
-       if (chptr) 
-           start = chptr + 1;
-       else
-           start = NULL;
-    } while (start && *start);
-
-    free(buf);
-    if (local) free(local);
-
-    return NULL;
-}
diff --git a/source4/popt/findme.h b/source4/popt/findme.h
deleted file mode 100644 (file)
index 5e93963..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#ifndef H_FINDME
-#define H_FINDME
-
-const char * findProgramPath(const char * argv0);
-
-#endif
diff --git a/source4/popt/popt.c b/source4/popt/popt.c
deleted file mode 100644 (file)
index 9fa8650..0000000
+++ /dev/null
@@ -1,782 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#include "system.h"
-#include "findme.h"
-#include "poptint.h"
-
-#ifndef HAVE_STRERROR
-static char * strerror(int errno) {
-    extern int sys_nerr;
-    extern char * sys_errlist[];
-
-    if ((0 <= errno) && (errno < sys_nerr))
-       return sys_errlist[errno];
-    else
-       return POPT_("unknown errno");
-}
-#endif
-
-void poptSetExecPath(poptContext con, const char * path, int allowAbsolute) {
-    if (con->execPath) xfree(con->execPath);
-    con->execPath = xstrdup(path);
-    con->execAbsolute = allowAbsolute;
-}
-
-static void invokeCallbacks(poptContext con, const struct poptOption * table,
-                           int post) {
-    const struct poptOption * opt = table;
-    poptCallbackType cb;
-
-    while (opt->longName || opt->shortName || opt->arg) {
-       if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
-           invokeCallbacks(con, opt->arg, post);
-       } else if (((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_CALLBACK) &&
-                  ((!post && (opt->argInfo & POPT_CBFLAG_PRE)) ||
-                   ( post && (opt->argInfo & POPT_CBFLAG_POST)))) {
-           cb = (poptCallbackType)opt->arg;
-           cb(con, post ? POPT_CALLBACK_REASON_POST : POPT_CALLBACK_REASON_PRE,
-              NULL, NULL, opt->descrip);
-       }
-       opt++;
-    }
-}
-
-poptContext poptGetContext(const char * name, int argc, const char ** argv,
-                          const struct poptOption * options, int flags) {
-    poptContext con = malloc(sizeof(*con));
-
-    memset(con, 0, sizeof(*con));
-
-    con->os = con->optionStack;
-    con->os->argc = argc;
-    con->os->argv = argv;
-    con->os->argb = NULL;
-
-    if (!(flags & POPT_CONTEXT_KEEP_FIRST))
-       con->os->next = 1;                      /* skip argv[0] */
-
-    con->leftovers = calloc( (argc + 1), sizeof(char *) );
-    con->options = options;
-    con->aliases = NULL;
-    con->numAliases = 0;
-    con->flags = flags;
-    con->execs = NULL;
-    con->numExecs = 0;
-    con->finalArgvAlloced = argc * 2;
-    con->finalArgv = calloc( con->finalArgvAlloced, sizeof(*con->finalArgv) );
-    con->execAbsolute = 1;
-    con->arg_strip = NULL;
-
-    if (getenv("POSIXLY_CORRECT") || getenv("POSIX_ME_HARDER"))
-       con->flags |= POPT_CONTEXT_POSIXMEHARDER;
-
-    if (name)
-       con->appName = strcpy(malloc(strlen(name) + 1), name);
-
-    invokeCallbacks(con, con->options, 0);
-
-    return con;
-}
-
-static void cleanOSE(struct optionStackEntry *os)
-{
-    if (os->nextArg) {
-       xfree(os->nextArg);
-       os->nextArg = NULL;
-    }
-    if (os->argv) {
-       xfree(os->argv);
-       os->argv = NULL;
-    }
-    if (os->argb) {
-       PBM_FREE(os->argb);
-       os->argb = NULL;
-    }
-}
-
-void poptResetContext(poptContext con) {
-    int i;
-
-    while (con->os > con->optionStack) {
-       cleanOSE(con->os--);
-    }
-    if (con->os->argb) {
-       PBM_FREE(con->os->argb);
-       con->os->argb = NULL;
-    }
-    con->os->currAlias = NULL;
-    con->os->nextCharArg = NULL;
-    con->os->nextArg = NULL;
-    con->os->next = 1;                 /* skip argv[0] */
-
-    con->numLeftovers = 0;
-    con->nextLeftover = 0;
-    con->restLeftover = 0;
-    con->doExec = NULL;
-
-    for (i = 0; i < con->finalArgvCount; i++) {
-       if (con->finalArgv[i]) {
-           xfree(con->finalArgv[i]);
-           con->finalArgv[i] = NULL;
-       }
-    }
-
-    con->finalArgvCount = 0;
-
-    if (con->arg_strip) {
-       PBM_FREE(con->arg_strip);
-       con->arg_strip = NULL;
-    }
-}
-
-/* Only one of longName, shortName may be set at a time */
-static int handleExec(poptContext con, char * longName, char shortName) {
-    int i;
-
-    i = con->numExecs - 1;
-    if (longName) {
-       while (i >= 0 && (!con->execs[i].longName ||
-           strcmp(con->execs[i].longName, longName))) i--;
-    } else {
-       while (i >= 0 &&
-           con->execs[i].shortName != shortName) i--;
-    }
-
-    if (i < 0) return 0;
-
-    if (con->flags & POPT_CONTEXT_NO_EXEC)
-       return 1;
-
-    if (con->doExec == NULL) {
-       con->doExec = con->execs + i;
-       return 1;
-    }
-
-    /* We already have an exec to do; remember this option for next
-       time 'round */
-    if ((con->finalArgvCount + 1) >= (con->finalArgvAlloced)) {
-       con->finalArgvAlloced += 10;
-       con->finalArgv = realloc(con->finalArgv,
-                       sizeof(*con->finalArgv) * con->finalArgvAlloced);
-    }
-
-    i = con->finalArgvCount++;
-    {  char *s  = malloc((longName ? strlen(longName) : 0) + 3);
-       if (longName)
-           sprintf(s, "--%s", longName);
-       else
-           sprintf(s, "-%c", shortName);
-       con->finalArgv[i] = s;
-    }
-
-    return 1;
-}
-
-/* Only one of longName, shortName may be set at a time */
-static int handleAlias(poptContext con, const char * longName, char shortName,
-                      /*@keep@*/ const char * nextCharArg) {
-    int i;
-
-    if (con->os->currAlias && con->os->currAlias->longName && longName &&
-       !strcmp(con->os->currAlias->longName, longName))
-       return 0;
-    if (con->os->currAlias && shortName &&
-           shortName == con->os->currAlias->shortName)
-       return 0;
-
-    i = con->numAliases - 1;
-    if (longName) {
-       while (i >= 0 && (!con->aliases[i].longName ||
-           strcmp(con->aliases[i].longName, longName))) i--;
-    } else {
-       while (i >= 0 &&
-           con->aliases[i].shortName != shortName) i--;
-    }
-
-    if (i < 0) return 0;
-
-    if ((con->os - con->optionStack + 1) == POPT_OPTION_DEPTH)
-       return POPT_ERROR_OPTSTOODEEP;
-
-    if (nextCharArg && *nextCharArg)
-       con->os->nextCharArg = nextCharArg;
-
-    con->os++;
-    con->os->next = 0;
-    con->os->stuffed = 0;
-    con->os->nextArg = NULL;
-    con->os->nextCharArg = NULL;
-    con->os->currAlias = con->aliases + i;
-    poptDupArgv(con->os->currAlias->argc, con->os->currAlias->argv,
-               &con->os->argc, &con->os->argv);
-    con->os->argb = NULL;
-
-    return 1;
-}
-
-static void execCommand(poptContext con) {
-    const char ** argv;
-    int pos = 0;
-    const char * script = con->doExec->script;
-
-    argv = malloc(sizeof(*argv) *
-                       (6 + con->numLeftovers + con->finalArgvCount));
-
-    if (!con->execAbsolute && strchr(script, '/')) return;
-
-    if (!strchr(script, '/') && con->execPath) {
-       char *s = malloc(strlen(con->execPath) + strlen(script) + 2);
-       sprintf(s, "%s/%s", con->execPath, script);
-       argv[pos] = s;
-    } else {
-       argv[pos] = script;
-    }
-    pos++;
-
-    argv[pos] = findProgramPath(con->os->argv[0]);
-    if (argv[pos]) pos++;
-    argv[pos++] = ";";
-
-    memcpy(argv + pos, con->finalArgv, sizeof(*argv) * con->finalArgvCount);
-    pos += con->finalArgvCount;
-
-    if (con->numLeftovers) {
-       argv[pos++] = "--";
-       memcpy(argv + pos, con->leftovers, sizeof(*argv) * con->numLeftovers);
-       pos += con->numLeftovers;
-    }
-
-    argv[pos++] = NULL;
-
-#ifdef __hpux
-    setresuid(getuid(), getuid(),-1);
-#else
-/*
- * XXX " ... on BSD systems setuid() should be preferred over setreuid()"
- * XXX         sez' Timur Bakeyev <mc@bat.ru>
- * XXX from Norbert Warmuth <nwarmuth@privat.circular.de>
- */
-#if defined(HAVE_SETUID)
-    setuid(getuid());
-#elif defined (HAVE_SETREUID)
-    setreuid(getuid(), getuid()); /*hlauer: not portable to hpux9.01 */
-#else
-    ; /* Can't drop privileges */
-#endif
-#endif
-
-    execvp(argv[0], (char *const *)argv);
-}
-
-/*@observer@*/ static const struct poptOption *
-findOption(const struct poptOption * table, const char * longName,
-    char shortName,
-    /*@out@*/ poptCallbackType * callback, /*@out@*/ const void ** callbackData,
-    int singleDash)
-{
-    const struct poptOption * opt = table;
-    const struct poptOption * opt2;
-    const struct poptOption * cb = NULL;
-
-    /* This happens when a single - is given */
-    if (singleDash && !shortName && !*longName)
-       shortName = '-';
-
-    while (opt->longName || opt->shortName || opt->arg) {
-       if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
-           opt2 = findOption(opt->arg, longName, shortName, callback,
-                             callbackData, singleDash);
-           if (opt2) {
-               if (*callback && !*callbackData)
-                   *callbackData = opt->descrip;
-               return opt2;
-           }
-       } else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_CALLBACK) {
-           cb = opt;
-       } else if (longName && opt->longName &&
-                  (!singleDash || (opt->argInfo & POPT_ARGFLAG_ONEDASH)) &&
-                  !strcmp(longName, opt->longName)) {
-           break;
-       } else if (shortName && shortName == opt->shortName) {
-           break;
-       }
-       opt++;
-    }
-
-    if (!opt->longName && !opt->shortName) return NULL;
-    *callbackData = NULL;
-    *callback = NULL;
-    if (cb) {
-       *callback = (poptCallbackType)cb->arg;
-       if (!(cb->argInfo & POPT_CBFLAG_INC_DATA))
-           *callbackData = cb->descrip;
-    }
-
-    return opt;
-}
-
-static const char *findNextArg(poptContext con, unsigned argx, int delete)
-{
-    struct optionStackEntry * os = con->os;
-    const char * arg;
-
-    do {
-       int i;
-       arg = NULL;
-       while (os->next == os->argc && os > con->optionStack) os--;
-       if (os->next == os->argc && os == con->optionStack) break;
-       for (i = os->next; i < os->argc; i++) {
-           if (os->argb && PBM_ISSET(i, os->argb)) continue;
-           if (*os->argv[i] == '-') continue;
-           if (--argx > 0) continue;
-           arg = os->argv[i];
-           if (delete) {
-               if (os->argb == NULL) os->argb = PBM_ALLOC(os->argc);
-               PBM_SET(i, os->argb);
-           }
-           break;
-       }
-       if (os > con->optionStack) os--;
-    } while (arg == NULL);
-    return arg;
-}
-
-static /*@only@*/ const char * expandNextArg(poptContext con, const char * s)
-{
-    const char *a;
-    size_t alen;
-    char *t, *te;
-    size_t tn = strlen(s) + 1;
-    char c;
-
-    te = t = malloc(tn);;
-    while ((c = *s++) != '\0') {
-       switch (c) {
-#if 0  /* XXX can't do this */
-       case '\\':      /* escape */
-           c = *s++;
-           break;
-#endif
-       case '!':
-           if (!(s[0] == '#' && s[1] == ':' && s[2] == '+'))
-               break;
-           if ((a = findNextArg(con, 1, 1)) == NULL)
-               break;
-           s += 3;
-
-           alen = strlen(a);
-           tn += alen;
-           *te = '\0';
-           t = realloc(t, tn);
-           te = t + strlen(t);
-           strncpy(te, a, alen); te += alen;
-           continue;
-           /*@notreached@*/ break;
-       default:
-           break;
-       }
-       *te++ = c;
-    }
-    *te = '\0';
-    t = realloc(t, strlen(t)+1);       /* XXX memory leak, hard to plug */
-    return t;
-}
-
-static void poptStripArg(poptContext con, int which)
-{
-    if(con->arg_strip == NULL) {
-       con->arg_strip = PBM_ALLOC(con->optionStack[0].argc);
-    }
-    PBM_SET(which, con->arg_strip);
-}
-
-/* returns 'val' element, -1 on last item, POPT_ERROR_* on error */
-int poptGetNextOpt(poptContext con)
-{
-    const struct poptOption * opt = NULL;
-    int done = 0;
-
-    /* looks a bit tricky to get rid of alloca properly in this fn */
-#if HAVE_ALLOCA_H
-#define ALLOCA(x) alloca(x)
-#else
-#define ALLOCA(x) malloc(x)
-#endif
-
-
-    while (!done) {
-       const char * origOptString = NULL;
-       poptCallbackType cb = NULL;
-       const void * cbData = NULL;
-       const char * longArg = NULL;
-       int canstrip = 0;
-
-       while (!con->os->nextCharArg && con->os->next == con->os->argc
-               && con->os > con->optionStack) {
-           cleanOSE(con->os--);
-       }
-       if (!con->os->nextCharArg && con->os->next == con->os->argc) {
-           invokeCallbacks(con, con->options, 1);
-           if (con->doExec) execCommand(con);
-           return -1;
-       }
-
-       /* Process next long option */
-       if (!con->os->nextCharArg) {
-           char * localOptString, * optString;
-           int thisopt;
-
-           if (con->os->argb && PBM_ISSET(con->os->next, con->os->argb)) {
-               con->os->next++;
-               continue;
-           }
-           thisopt=con->os->next;
-           origOptString = con->os->argv[con->os->next++];
-
-           if (con->restLeftover || *origOptString != '-') {
-               con->leftovers[con->numLeftovers++] = origOptString;
-               if (con->flags & POPT_CONTEXT_POSIXMEHARDER)
-                   con->restLeftover = 1;
-               continue;
-           }
-
-           /* Make a copy we can hack at */
-           localOptString = optString =
-                       strcpy(ALLOCA(strlen(origOptString) + 1),
-                       origOptString);
-
-           if (!optString[0])
-               return POPT_ERROR_BADOPT;
-
-           if (optString[1] == '-' && !optString[2]) {
-               con->restLeftover = 1;
-               continue;
-           } else {
-               char *oe;
-               int singleDash;
-
-               optString++;
-               if (*optString == '-')
-                   singleDash = 0, optString++;
-               else
-                   singleDash = 1;
-
-               /* XXX aliases with arg substitution need "--alias=arg" */
-               if (handleAlias(con, optString, '\0', NULL))
-                   continue;
-               if (handleExec(con, optString, '\0'))
-                   continue;
-
-               /* Check for "--long=arg" option. */
-               for (oe = optString; *oe && *oe != '='; oe++)
-                   ;
-               if (*oe == '=') {
-                   *oe++ = '\0';
-                   /* XXX longArg is mapped back to persistent storage. */
-                   longArg = origOptString + (oe - localOptString);
-               }
-
-               opt = findOption(con->options, optString, '\0', &cb, &cbData,
-                                singleDash);
-               if (!opt && !singleDash)
-                   return POPT_ERROR_BADOPT;
-           }
-
-           if (!opt) {
-               con->os->nextCharArg = origOptString + 1;
-           } else {
-               if(con->os == con->optionStack &&
-                  opt->argInfo & POPT_ARGFLAG_STRIP) {
-                   canstrip = 1;
-                   poptStripArg(con, thisopt);
-               }
-           }
-       }
-
-       /* Process next short option */
-       if (con->os->nextCharArg) {
-           origOptString = con->os->nextCharArg;
-
-           con->os->nextCharArg = NULL;
-
-           if (handleAlias(con, NULL, *origOptString,
-                           origOptString + 1)) {
-               origOptString++;
-               continue;
-           }
-           if (handleExec(con, NULL, *origOptString))
-               continue;
-
-           opt = findOption(con->options, NULL, *origOptString, &cb,
-                            &cbData, 0);
-           if (!opt)
-               return POPT_ERROR_BADOPT;
-
-           origOptString++;
-           if (*origOptString)
-               con->os->nextCharArg = origOptString;
-       }
-
-       if (opt->arg && (opt->argInfo & POPT_ARG_MASK) == POPT_ARG_NONE) {
-           *((int *)opt->arg) = 1;
-       } else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_VAL) {
-           if (opt->arg)
-               *((int *) opt->arg) = opt->val;
-       } else if ((opt->argInfo & POPT_ARG_MASK) != POPT_ARG_NONE) {
-           if (con->os->nextArg) {
-               xfree(con->os->nextArg);
-               con->os->nextArg = NULL;
-           }
-           if (longArg) {
-               con->os->nextArg = expandNextArg(con, longArg);
-           } else if (con->os->nextCharArg) {
-               con->os->nextArg = expandNextArg(con, con->os->nextCharArg);
-               con->os->nextCharArg = NULL;
-           } else {
-               while (con->os->next == con->os->argc &&
-                      con->os > con->optionStack) {
-                   cleanOSE(con->os--);
-               }
-               if (con->os->next == con->os->argc)
-                   return POPT_ERROR_NOARG;
-
-               /* make sure this isn't part of a short arg or the
-                   result of an alias expansion */
-               if(con->os == con->optionStack &&
-                  opt->argInfo & POPT_ARGFLAG_STRIP &&
-                  canstrip) {
-                   poptStripArg(con, con->os->next);
-               }
-               
-               con->os->nextArg = expandNextArg(con, con->os->argv[con->os->next++]);
-           }
-
-           if (opt->arg) {
-               long aLong;
-               char *end;
-
-               switch (opt->argInfo & POPT_ARG_MASK) {
-                 case POPT_ARG_STRING:
-                   /* XXX memory leak, hard to plug */
-                   *((const char **) opt->arg) = xstrdup(con->os->nextArg);
-                   break;
-
-                 case POPT_ARG_INT:
-                 case POPT_ARG_LONG:
-                   aLong = strtol(con->os->nextArg, &end, 0);
-                   if (!(end && *end == '\0'))
-                       return POPT_ERROR_BADNUMBER;
-
-                   if (aLong == LONG_MIN || aLong == LONG_MAX)
-                       return POPT_ERROR_OVERFLOW;
-                   if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_LONG) {
-                       *((long *) opt->arg) = aLong;
-                   } else {
-                       if (aLong > INT_MAX || aLong < INT_MIN)
-                           return POPT_ERROR_OVERFLOW;
-                       *((int *) opt->arg) = aLong;
-                   }
-                   break;
-
-                 default:
-                   fprintf(stdout, POPT_("option type (%d) not implemented in popt\n"),
-                     opt->argInfo & POPT_ARG_MASK);
-                   exit(EXIT_FAILURE);
-               }
-           }
-       }
-
-       if (cb)
-           cb(con, POPT_CALLBACK_REASON_OPTION, opt, con->os->nextArg, cbData);
-       else if (opt->val && ((opt->argInfo & POPT_ARG_MASK) != POPT_ARG_VAL))
-           done = 1;
-
-       if ((con->finalArgvCount + 2) >= (con->finalArgvAlloced)) {
-           con->finalArgvAlloced += 10;
-           con->finalArgv = realloc(con->finalArgv,
-                           sizeof(*con->finalArgv) * con->finalArgvAlloced);
-       }
-
-       {    char *s = malloc((opt->longName ? strlen(opt->longName) : 0) + 3);
-           if (opt->longName)
-               sprintf(s, "--%s", opt->longName);
-           else
-               sprintf(s, "-%c", opt->shortName);
-           con->finalArgv[con->finalArgvCount++] = s;
-       }
-
-       if (opt->arg && (opt->argInfo & POPT_ARG_MASK) != POPT_ARG_NONE
-                    && (opt->argInfo & POPT_ARG_MASK) != POPT_ARG_VAL) {
-           con->finalArgv[con->finalArgvCount++] = xstrdup(con->os->nextArg);
-       }
-    }
-
-    return opt->val;
-}
-
-const char * poptGetOptArg(poptContext con) {
-    const char * ret = con->os->nextArg;
-    con->os->nextArg = NULL;
-    return ret;
-}
-
-const char * poptGetArg(poptContext con) {
-    if (con->numLeftovers == con->nextLeftover) return NULL;
-    return con->leftovers[con->nextLeftover++];
-}
-
-const char * poptPeekArg(poptContext con) {
-    if (con->numLeftovers == con->nextLeftover) return NULL;
-    return con->leftovers[con->nextLeftover];
-}
-
-const char ** poptGetArgs(poptContext con) {
-    if (con->numLeftovers == con->nextLeftover) return NULL;
-
-    /* some apps like [like RPM ;-) ] need this NULL terminated */
-    con->leftovers[con->numLeftovers] = NULL;
-
-    return (con->leftovers + con->nextLeftover);
-}
-
-void poptFreeContext(poptContext con) {
-    int i;
-
-    poptResetContext(con);
-    if (con->os->argb) free(con->os->argb);
-
-    for (i = 0; i < con->numAliases; i++) {
-       if (con->aliases[i].longName) xfree(con->aliases[i].longName);
-       free(con->aliases[i].argv);
-    }
-
-    for (i = 0; i < con->numExecs; i++) {
-       if (con->execs[i].longName) xfree(con->execs[i].longName);
-       xfree(con->execs[i].script);
-    }
-    if (con->execs) xfree(con->execs);
-
-    free(con->leftovers);
-    free(con->finalArgv);
-    if (con->appName) xfree(con->appName);
-    if (con->aliases) free(con->aliases);
-    if (con->otherHelp) xfree(con->otherHelp);
-    if (con->execPath) xfree(con->execPath);
-    if (con->arg_strip) PBM_FREE(con->arg_strip);
-    
-    free(con);
-}
-
-int poptAddAlias(poptContext con, struct poptAlias newAlias,
-               /*@unused@*/ int flags)
-{
-    int aliasNum = con->numAliases++;
-    struct poptAlias * alias;
-
-    /* SunOS won't realloc(NULL, ...) */
-    if (!con->aliases)
-       con->aliases = malloc(sizeof(newAlias) * con->numAliases);
-    else
-       con->aliases = realloc(con->aliases,
-                              sizeof(newAlias) * con->numAliases);
-    alias = con->aliases + aliasNum;
-
-    alias->longName = (newAlias.longName)
-       ? strcpy(malloc(strlen(newAlias.longName) + 1), newAlias.longName)
-       : NULL;
-    alias->shortName = newAlias.shortName;
-    alias->argc = newAlias.argc;
-    alias->argv = newAlias.argv;
-
-    return 0;
-}
-
-const char * poptBadOption(poptContext con, int flags) {
-    struct optionStackEntry * os;
-
-    if (flags & POPT_BADOPTION_NOALIAS)
-       os = con->optionStack;
-    else
-       os = con->os;
-
-    return os->argv[os->next - 1];
-}
-
-#define POPT_ERROR_NOARG       -10
-#define POPT_ERROR_BADOPT      -11
-#define POPT_ERROR_OPTSTOODEEP -13
-#define POPT_ERROR_BADQUOTE    -15     /* only from poptParseArgString() */
-#define POPT_ERROR_ERRNO       -16     /* only from poptParseArgString() */
-
-const char *poptStrerror(const int error) {
-    switch (error) {
-      case POPT_ERROR_NOARG:
-       return POPT_("missing argument");
-      case POPT_ERROR_BADOPT:
-       return POPT_("unknown option");
-      case POPT_ERROR_OPTSTOODEEP:
-       return POPT_("aliases nested too deeply");
-      case POPT_ERROR_BADQUOTE:
-       return POPT_("error in paramter quoting");
-      case POPT_ERROR_BADNUMBER:
-       return POPT_("invalid numeric value");
-      case POPT_ERROR_OVERFLOW:
-       return POPT_("number too large or too small");
-      case POPT_ERROR_ERRNO:
-       return strerror(errno);
-      default:
-       return POPT_("unknown error");
-    }
-}
-
-int poptStuffArgs(poptContext con, const char ** argv) {
-    int argc;
-
-    if ((con->os - con->optionStack) == POPT_OPTION_DEPTH)
-       return POPT_ERROR_OPTSTOODEEP;
-
-    for (argc = 0; argv[argc]; argc++)
-       ;
-
-    con->os++;
-    con->os->next = 0;
-    con->os->nextArg = NULL;
-    con->os->nextCharArg = NULL;
-    con->os->currAlias = NULL;
-    poptDupArgv(argc, argv, &con->os->argc, &con->os->argv);
-    con->os->argb = NULL;
-    con->os->stuffed = 1;
-
-    return 0;
-}
-
-const char * poptGetInvocationName(poptContext con) {
-    return con->os->argv[0];
-}
-
-int poptStrippedArgv(poptContext con, int argc, char **argv)
-{
-    int i,j=1, numargs=argc;
-    
-    for(i=1; i<argc; i++) {
-       if(PBM_ISSET(i, con->arg_strip)) {
-           numargs--;
-       }
-    }
-    
-    for(i=1; i<argc; i++) {
-       if(PBM_ISSET(i, con->arg_strip)) {
-           continue;
-       } else {
-           if(j<numargs) {
-               argv[j++]=argv[i];
-           } else {
-               argv[j++]='\0';
-           }
-       }
-    }
-    
-    return(numargs);
-}
diff --git a/source4/popt/popt.h b/source4/popt/popt.h
deleted file mode 100644 (file)
index c33ceda..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#ifndef H_POPT
-#define H_POPT
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>                     /* for FILE * */
-
-#define POPT_OPTION_DEPTH      10
-
-#define POPT_ARG_NONE          0
-#define POPT_ARG_STRING                1
-#define POPT_ARG_INT           2
-#define POPT_ARG_LONG          3
-#define POPT_ARG_INCLUDE_TABLE 4       /* arg points to table */
-#define POPT_ARG_CALLBACK      5       /* table-wide callback... must be
-                                          set first in table; arg points 
-                                          to callback, descrip points to 
-                                          callback data to pass */
-#define POPT_ARG_INTL_DOMAIN    6       /* set the translation domain
-                                          for this table and any
-                                          included tables; arg points
-                                          to the domain string */
-#define POPT_ARG_VAL           7       /* arg should take value val */
-#define POPT_ARG_MASK          0x0000FFFF
-#define POPT_ARGFLAG_ONEDASH   0x80000000  /* allow -longoption */
-#define POPT_ARGFLAG_DOC_HIDDEN 0x40000000  /* don't show in help/usage */
-#define POPT_ARGFLAG_STRIP     0x20000000  /* strip this arg from argv (only applies to long args) */
-#define POPT_CBFLAG_PRE                0x80000000  /* call the callback before parse */
-#define POPT_CBFLAG_POST       0x40000000  /* call the callback after parse */
-#define POPT_CBFLAG_INC_DATA   0x20000000  /* use data from the include line,
-                                              not the subtable */
-
-#define POPT_ERROR_NOARG       -10
-#define POPT_ERROR_BADOPT      -11
-#define POPT_ERROR_OPTSTOODEEP -13
-#define POPT_ERROR_BADQUOTE    -15     /* only from poptParseArgString() */
-#define POPT_ERROR_ERRNO       -16     /* only from poptParseArgString() */
-#define POPT_ERROR_BADNUMBER   -17
-#define POPT_ERROR_OVERFLOW    -18
-
-/* poptBadOption() flags */
-#define POPT_BADOPTION_NOALIAS  (1 << 0)  /* don't go into an alias */
-
-/* poptGetContext() flags */
-#define POPT_CONTEXT_NO_EXEC   (1 << 0)  /* ignore exec expansions */
-#define POPT_CONTEXT_KEEP_FIRST        (1 << 1)  /* pay attention to argv[0] */
-#define POPT_CONTEXT_POSIXMEHARDER (1 << 2) /* options can't follow args */
-
-struct poptOption {
-    /*@observer@*/ /*@null@*/ const char * longName;   /* may be NULL */
-    char shortName;            /* may be '\0' */
-    int argInfo;
-    /*@shared@*/ /*@null@*/ void * arg;                /* depends on argInfo */
-    int val;                   /* 0 means don't return, just update flag */
-    /*@shared@*/ /*@null@*/ const char * descrip;      /* description for autohelp -- may be NULL */
-    /*@shared@*/ /*@null@*/ const char * argDescrip;   /* argument description for autohelp */
-};
-
-struct poptAlias {
-    /*@owned@*/ /*@null@*/ const char * longName;      /* may be NULL */
-    char shortName;            /* may be '\0' */
-    int argc;
-    /*@owned@*/ const char ** argv;            /* must be free()able */
-};
-
-extern struct poptOption poptHelpOptions[];
-#define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
-                       0, "Help options", NULL },
-
-typedef struct poptContext_s * poptContext;
-#ifndef __cplusplus
-typedef struct poptOption * poptOption;
-#endif
-
-enum poptCallbackReason { POPT_CALLBACK_REASON_PRE, 
-                         POPT_CALLBACK_REASON_POST,
-                         POPT_CALLBACK_REASON_OPTION };
-typedef void (*poptCallbackType)(poptContext con, 
-                                enum poptCallbackReason reason,
-                                const struct poptOption * opt,
-                                const char * arg, const void * data);
-
-/*@only@*/ poptContext poptGetContext(/*@keep@*/ const char * name,
-               int argc, /*@keep@*/ const char ** argv,
-               /*@keep@*/ const struct poptOption * options, int flags);
-void poptResetContext(poptContext con);
-
-/* returns 'val' element, -1 on last item, POPT_ERROR_* on error */
-int poptGetNextOpt(poptContext con);
-/* returns NULL if no argument is available */
-/*@observer@*/ /*@null@*/ const char * poptGetOptArg(poptContext con);
-/* returns NULL if no more options are available */
-/*@observer@*/ /*@null@*/ const char * poptGetArg(poptContext con);
-/*@observer@*/ /*@null@*/ const char * poptPeekArg(poptContext con);
-/*@observer@*/ /*@null@*/ const char ** poptGetArgs(poptContext con);
-/* returns the option which caused the most recent error */
-/*@observer@*/ const char * poptBadOption(poptContext con, int flags);
-void poptFreeContext( /*@only@*/ poptContext con);
-int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv);
-int poptAddAlias(poptContext con, struct poptAlias alias, int flags);
-int poptReadConfigFile(poptContext con, const char * fn);
-/* like above, but reads /etc/popt and $HOME/.popt along with environment 
-   vars */
-int poptReadDefaultConfig(poptContext con, int useEnv);
-/* argv should be freed -- this allows ', ", and \ quoting, but ' is treated
-   the same as " and both may include \ quotes */
-int poptDupArgv(int argc, const char **argv,
-               /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
-int poptParseArgvString(const char * s,
-               /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
-/*@observer@*/ const char *poptStrerror(const int error);
-void poptSetExecPath(poptContext con, const char * path, int allowAbsolute);
-void poptPrintHelp(poptContext con, FILE * f, int flags);
-void poptPrintUsage(poptContext con, FILE * f, int flags);
-void poptSetOtherOptionHelp(poptContext con, const char * text);
-/*@observer@*/ const char * poptGetInvocationName(poptContext con);
-/* shuffles argv pointers to remove stripped args, returns new argc */
-int poptStrippedArgv(poptContext con, int argc, char **argv);
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/source4/popt/poptconfig.c b/source4/popt/poptconfig.c
deleted file mode 100644 (file)
index eb76941..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#include "system.h"
-#include "poptint.h"
-
-static void configLine(poptContext con, char * line) {
-    int nameLength = strlen(con->appName);
-    char * opt;
-    struct poptAlias alias;
-    char * entryType;
-    char * longName = NULL;
-    char shortName = '\0';
-    
-    if (strncmp(line, con->appName, nameLength)) return;
-    line += nameLength;
-    if (!*line || !isspace(*line)) return;
-    while (*line && isspace(*line)) line++;
-    entryType = line;
-
-    while (!*line || !isspace(*line)) line++;
-    *line++ = '\0';
-    while (*line && isspace(*line)) line++;
-    if (!*line) return;
-    opt = line;
-
-    while (!*line || !isspace(*line)) line++;
-    *line++ = '\0';
-    while (*line && isspace(*line)) line++;
-    if (!*line) return;
-
-    if (opt[0] == '-' && opt[1] == '-')
-       longName = opt + 2;
-    else if (opt[0] == '-' && !opt[2])
-       shortName = opt[1];
-
-    if (!strcmp(entryType, "alias")) {
-       if (poptParseArgvString(line, &alias.argc, &alias.argv)) return;
-       alias.longName = longName, alias.shortName = shortName;
-       poptAddAlias(con, alias, 0);
-    } else if (!strcmp(entryType, "exec")) {
-       con->execs = realloc(con->execs,
-                               sizeof(*con->execs) * (con->numExecs + 1));
-       if (longName)
-           con->execs[con->numExecs].longName = xstrdup(longName);
-       else
-           con->execs[con->numExecs].longName = NULL;
-
-       con->execs[con->numExecs].shortName = shortName;
-       con->execs[con->numExecs].script = xstrdup(line);
-       
-       con->numExecs++;
-    }
-}
-
-int poptReadConfigFile(poptContext con, const char * fn) {
-    char * file=NULL, * chptr, * end;
-    char * buf=NULL, * dst;
-    int fd, rc;
-    int fileLength;
-
-    fd = open(fn, O_RDONLY);
-    if (fd < 0) {
-       if (errno == ENOENT)
-           return 0;
-       else 
-           return POPT_ERROR_ERRNO;
-    }
-
-    fileLength = lseek(fd, 0, SEEK_END);
-    (void) lseek(fd, 0, 0);
-
-    file = malloc(fileLength + 1);
-    if (read(fd, file, fileLength) != fileLength) {
-       rc = errno;
-       close(fd);
-       errno = rc;
-       if (file) free(file);
-       return POPT_ERROR_ERRNO;
-    }
-    close(fd);
-
-    dst = buf = malloc(fileLength + 1);
-
-    chptr = file;
-    end = (file + fileLength);
-    while (chptr < end) {
-       switch (*chptr) {
-         case '\n':
-           *dst = '\0';
-           dst = buf;
-           while (*dst && isspace(*dst)) dst++;
-           if (*dst && *dst != '#') {
-               configLine(con, dst);
-           }
-           chptr++;
-           break;
-         case '\\':
-           *dst++ = *chptr++;
-           if (chptr < end) {
-               if (*chptr == '\n') 
-                   dst--, chptr++;     
-                   /* \ at the end of a line does not insert a \n */
-               else
-                   *dst++ = *chptr++;
-           }
-           break;
-         default:
-           *dst++ = *chptr++;
-           break;
-       }
-    }
-
-    free(file);
-    free(buf);
-
-    return 0;
-}
-
-int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv) {
-    char * fn, * home;
-    int rc;
-
-    if (!con->appName) return 0;
-
-    rc = poptReadConfigFile(con, "/etc/popt");
-    if (rc) return rc;
-    if (getuid() != geteuid()) return 0;
-
-    if ((home = getenv("HOME"))) {
-       fn = malloc(strlen(home) + 20);
-       strcpy(fn, home);
-       strcat(fn, "/.popt");
-       rc = poptReadConfigFile(con, fn);
-       free(fn);
-       if (rc) return rc;
-    }
-
-    return 0;
-}
-
diff --git a/source4/popt/popthelp.c b/source4/popt/popthelp.c
deleted file mode 100644 (file)
index 6b790a6..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#include "system.h"
-#include "poptint.h"
-
-static void displayArgs(poptContext con,
-               /*@unused@*/ enum poptCallbackReason foo,
-               struct poptOption * key, 
-               /*@unused@*/ const char * arg, /*@unused@*/ void * data) {
-    if (key->shortName== '?')
-       poptPrintHelp(con, stdout, 0);
-    else
-       poptPrintUsage(con, stdout, 0);
-    exit(0);
-}
-
-struct poptOption poptHelpOptions[] = {
-    { NULL, '\0', POPT_ARG_CALLBACK, (void *)&displayArgs, '\0', NULL, NULL },
-    { "help", '?', 0, NULL, '?', N_("Show this help message"), NULL },
-    { "usage", '\0', 0, NULL, 'u', N_("Display brief usage message"), NULL },
-    { NULL, '\0', 0, NULL, 0, NULL, NULL }
-} ;
-
-
-/*@observer@*/ /*@null@*/ static const char *
-getTableTranslationDomain(const struct poptOption *table)
-{
-  const struct poptOption *opt;
-
-  for(opt = table;
-      opt->longName || opt->shortName || opt->arg;
-      opt++) {
-    if(opt->argInfo == POPT_ARG_INTL_DOMAIN)
-      return opt->arg;
-  }
-
-  return NULL;
-}
-
-/*@observer@*/ /*@null@*/ static const char *
-getArgDescrip(const struct poptOption * opt, const char *translation_domain)
-{
-    if (!(opt->argInfo & POPT_ARG_MASK)) return NULL;
-
-    if (opt == (poptHelpOptions + 1) || opt == (poptHelpOptions + 2))
-       if (opt->argDescrip) return POPT_(opt->argDescrip);
-
-    if (opt->argDescrip) return D_(translation_domain, opt->argDescrip);
-    return POPT_("ARG");
-}
-
-static void singleOptionHelp(FILE * f, int maxLeftCol, 
-                            const struct poptOption * opt,
-                            const char *translation_domain) {
-    int indentLength = maxLeftCol + 5;
-    int lineLength = 79 - indentLength;
-    const char * help = D_(translation_domain, opt->descrip);
-    int helpLength;
-    const char * ch;
-    char format[10];
-    char * left;
-    const char * argDescrip = getArgDescrip(opt, translation_domain);
-
-    left = malloc(maxLeftCol + 1);
-    *left = '\0';
-
-    if (opt->longName && opt->shortName)
-       sprintf(left, "-%c, --%s", opt->shortName, opt->longName);
-    else if (opt->shortName) 
-       sprintf(left, "-%c", opt->shortName);
-    else if (opt->longName)
-       sprintf(left, "--%s", opt->longName);
-    if (!*left) return ;
-    if (argDescrip) {
-       strcat(left, "=");
-       strcat(left, argDescrip);
-    }
-
-    if (help)
-       fprintf(f,"  %-*s   ", maxLeftCol, left);
-    else {
-       fprintf(f,"  %s\n", left); 
-       goto out;
-    }
-
-    helpLength = strlen(help);
-    while (helpLength > lineLength) {
-       ch = help + lineLength - 1;
-       while (ch > help && !isspace(*ch)) ch--;
-       if (ch == help) break;          /* give up */
-       while (ch > (help + 1) && isspace(*ch)) ch--;
-       ch++;
-
-       sprintf(format, "%%.%ds\n%%%ds", (int) (ch - help), indentLength);
-       fprintf(f, format, help, " ");
-       help = ch;
-       while (isspace(*help) && *help) help++;
-       helpLength = strlen(help);
-    }
-
-    if (helpLength) fprintf(f, "%s\n", help);
-
-out:
-    free(left);
-}
-
-static int maxArgWidth(const struct poptOption * opt,
-                      const char * translation_domain) {
-    int max = 0;
-    int this;
-    const char * s;
-    
-    while (opt->longName || opt->shortName || opt->arg) {
-       if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
-           this = maxArgWidth(opt->arg, translation_domain);
-           if (this > max) max = this;
-       } else if (!(opt->argInfo & POPT_ARGFLAG_DOC_HIDDEN)) {
-           this = opt->shortName ? 2 : 0;
-           if (opt->longName) {
-               if (this) this += 2;
-               this += strlen(opt->longName) + 2;
-           }
-
-           s = getArgDescrip(opt, translation_domain);
-           if (s)
-               this += strlen(s) + 1;
-           if (this > max) max = this;
-       }
-
-       opt++;
-    }
-    
-    return max;
-}
-
-static void singleTableHelp(FILE * f, const struct poptOption * table, 
-                           int left,
-                           const char *translation_domain) {
-    const struct poptOption * opt;
-    const char *sub_transdom;
-
-    opt = table;
-    while (opt->longName || opt->shortName || opt->arg) {
-       if ((opt->longName || opt->shortName) && 
-           !(opt->argInfo & POPT_ARGFLAG_DOC_HIDDEN))
-           singleOptionHelp(f, left, opt, translation_domain);
-       opt++;
-    }
-
-    opt = table;
-    while (opt->longName || opt->shortName || opt->arg) {
-       if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
-           sub_transdom = getTableTranslationDomain(opt->arg);
-           if(!sub_transdom)
-               sub_transdom = translation_domain;
-           
-           if (opt->descrip)
-               fprintf(f, "\n%s\n", D_(sub_transdom, opt->descrip));
-
-           singleTableHelp(f, opt->arg, left, sub_transdom);
-       }
-       opt++;
-    }
-}
-
-static int showHelpIntro(poptContext con, FILE * f) {
-    int len = 6;
-    const char * fn;
-
-    fprintf(f, POPT_("Usage:"));
-    if (!(con->flags & POPT_CONTEXT_KEEP_FIRST)) {
-       fn = con->optionStack->argv[0];
-       if (strchr(fn, '/')) fn = strchr(fn, '/') + 1;
-       fprintf(f, " %s", fn);
-       len += strlen(fn) + 1;
-    }
-
-    return len;
-}
-
-void poptPrintHelp(poptContext con, FILE * f, /*@unused@*/ int flags) {
-    int leftColWidth;
-
-    showHelpIntro(con, f);
-    if (con->otherHelp)
-       fprintf(f, " %s\n", con->otherHelp);
-    else
-       fprintf(f, " %s\n", POPT_("[OPTION...]"));
-
-    leftColWidth = maxArgWidth(con->options, NULL);
-    singleTableHelp(f, con->options, leftColWidth, NULL);
-}
-
-static int singleOptionUsage(FILE * f, int cursor, 
-                            const struct poptOption * opt,
-                            const char *translation_domain) {
-    int len = 3;
-    char shortStr[2] = { '\0', '\0' };
-    const char * item = shortStr;
-    const char * argDescrip = getArgDescrip(opt, translation_domain);
-
-    if (opt->shortName) {
-       if (!(opt->argInfo & POPT_ARG_MASK)) 
-           return cursor;      /* we did these already */
-       len++;
-       *shortStr = opt->shortName;
-       shortStr[1] = '\0';
-    } else if (opt->longName) {
-       len += 1 + strlen(opt->longName);
-       item = opt->longName;
-    }
-
-    if (len == 3) return cursor;
-
-    if (argDescrip) 
-       len += strlen(argDescrip) + 1;
-
-    if ((cursor + len) > 79) {
-       fprintf(f, "\n       ");
-       cursor = 7;
-    } 
-
-    fprintf(f, " [-%s%s%s%s]", opt->shortName ? "" : "-", item,
-           argDescrip ? (opt->shortName ? " " : "=") : "",
-           argDescrip ? argDescrip : "");
-
-    return cursor + len + 1;
-}
-
-static int singleTableUsage(FILE * f, int cursor, const struct poptOption * table,
-                    const char *translation_domain) {
-    const struct poptOption * opt;
-    
-    opt = table;
-    while (opt->longName || opt->shortName || opt->arg) {
-        if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INTL_DOMAIN)
-           translation_domain = (const char *)opt->arg;
-       else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) 
-           cursor = singleTableUsage(f, cursor, opt->arg,
-                                     translation_domain);
-       else if ((opt->longName || opt->shortName) && 
-                !(opt->argInfo & POPT_ARGFLAG_DOC_HIDDEN))
-         cursor = singleOptionUsage(f, cursor, opt, translation_domain);
-
-       opt++;
-    }
-
-    return cursor;
-}
-
-static int showShortOptions(const struct poptOption * opt, FILE * f, 
-                           char * str) {
-    char s[300];               /* this is larger then the ascii set, so
-                                  it should do just fine */
-
-    s[0] = '\0';
-    if (str == NULL) {
-       memset(s, 0, sizeof(s));
-       str = s;
-    }
-
-    while (opt->longName || opt->shortName || opt->arg) {
-       if (opt->shortName && !(opt->argInfo & POPT_ARG_MASK))
-           str[strlen(str)] = opt->shortName;
-       else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE)
-           showShortOptions(opt->arg, f, str);
-
-       opt++;
-    } 
-
-    if (s != str || !*s)
-       return 0;
-
-    fprintf(f, " [-%s]", s);
-    return strlen(s) + 4;
-}
-
-void poptPrintUsage(poptContext con, FILE * f, /*@unused@*/ int flags) {
-    int cursor;
-
-    cursor = showHelpIntro(con, f);
-    cursor += showShortOptions(con->options, f, NULL);
-    singleTableUsage(f, cursor, con->options, NULL);
-
-    if (con->otherHelp) {
-       cursor += strlen(con->otherHelp) + 1;
-       if (cursor > 79) fprintf(f, "\n       ");
-       fprintf(f, " %s", con->otherHelp);
-    }
-
-    fprintf(f, "\n");
-}
-
-void poptSetOtherOptionHelp(poptContext con, const char * text) {
-    if (con->otherHelp) xfree(con->otherHelp);
-    con->otherHelp = xstrdup(text);
-}
diff --git a/source4/popt/poptint.h b/source4/popt/poptint.h
deleted file mode 100644 (file)
index 1847ffa..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#ifndef H_POPTINT
-#define H_POPTINT
-
-/* Bit mask macros. */
-typedef        unsigned int __pbm_bits;
-#define        __PBM_NBITS             (8 * sizeof (__pbm_bits))
-#define        __PBM_IX(d)             ((d) / __PBM_NBITS)
-#define __PBM_MASK(d)          ((__pbm_bits) 1 << ((d) % __PBM_NBITS))
-typedef struct {
-    __pbm_bits bits[1];
-} pbm_set;
-#define        __PBM_BITS(set) ((set)->bits)
-
-#define        PBM_ALLOC(d)    calloc(__PBM_IX (d) + 1, sizeof(__pbm_bits))
-#define        PBM_FREE(s)     free(s);
-#define PBM_SET(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d))
-#define PBM_CLR(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))
-#define PBM_ISSET(d, s) ((__PBM_BITS (s)[__PBM_IX (d)] & __PBM_MASK (d)) != 0)
-
-struct optionStackEntry {
-    int argc;
-    /*@only@*/ const char ** argv;
-    /*@only@*/ pbm_set * argb;
-    int next;
-    /*@only@*/ const char * nextArg;
-    /*@keep@*/ const char * nextCharArg;
-    /*@dependent@*/ struct poptAlias * currAlias;
-    int stuffed;
-};
-
-struct execEntry {
-    const char * longName;
-    char shortName;
-    const char * script;
-};
-
-struct poptContext_s {
-    struct optionStackEntry optionStack[POPT_OPTION_DEPTH];
-    /*@dependent@*/ struct optionStackEntry * os;
-    /*@owned@*/ const char ** leftovers;
-    int numLeftovers;
-    int nextLeftover;
-    /*@keep@*/ const struct poptOption * options;
-    int restLeftover;
-    /*@only@*/ const char * appName;
-    /*@only@*/ struct poptAlias * aliases;
-    int numAliases;
-    int flags;
-    struct execEntry * execs;
-    int numExecs;
-    /*@only@*/ const char ** finalArgv;
-    int finalArgvCount;
-    int finalArgvAlloced;
-    /*@dependent@*/ struct execEntry * doExec;
-    /*@only@*/ const char * execPath;
-    int execAbsolute;
-    /*@only@*/ const char * otherHelp;
-    pbm_set * arg_strip;
-};
-
-#define        xfree(_a)       free((void *)_a)
-
-#define POPT_(foo) (foo)
-#define D_(dom, str) (str)
-#define N_(foo) (foo)
-
-#endif
diff --git a/source4/popt/poptparse.c b/source4/popt/poptparse.c
deleted file mode 100644 (file)
index 8f00769..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
-   file accompanying popt source distributions, available from 
-   ftp://ftp.redhat.com/pub/code/popt */
-
-#include "system.h"
-
-#define POPT_ARGV_ARRAY_GROW_DELTA 5
-
-int poptDupArgv(int argc, const char **argv,
-               int * argcPtr, const char *** argvPtr)
-{
-    size_t nb = (argc + 1) * sizeof(*argv);
-    const char ** argv2;
-    char * dst;
-    int i;
-
-    for (i = 0; i < argc; i++) {
-       if (argv[i] == NULL)
-           return POPT_ERROR_NOARG;
-       nb += strlen(argv[i]) + 1;
-    }
-       
-    dst = malloc(nb);
-    argv2 = (void *) dst;
-    dst += (argc + 1) * sizeof(*argv);
-
-    for (i = 0; i < argc; i++) {
-       argv2[i] = dst;
-       dst += strlen(strcpy(dst, argv[i])) + 1;
-    }
-    argv2[argc] = NULL;
-
-    *argvPtr = argv2;
-    *argcPtr = argc;
-    return 0;
-}
-
-int poptParseArgvString(const char * s, int * argcPtr, const char *** argvPtr)
-{
-    const char * src;
-    char quote = '\0';
-    int argvAlloced = POPT_ARGV_ARRAY_GROW_DELTA;
-    const char ** argv = malloc(sizeof(*argv) * argvAlloced);
-    int argc = 0;
-    int buflen = strlen(s) + 1;
-    char *buf0 = calloc(buflen, 1);
-    char *buf = buf0;
-
-    argv[argc] = buf;
-
-    for (src = s; *src; src++) {
-       if (quote == *src) {
-           quote = '\0';
-       } else if (quote) {
-           if (*src == '\\') {
-               src++;
-               if (!*src) {
-                   free(argv);
-                   free(buf0);
-                   return POPT_ERROR_BADQUOTE;
-               }
-               if (*src != quote) *buf++ = '\\';
-           }
-           *buf++ = *src;
-       } else if (isspace(*src)) {
-           if (*argv[argc]) {
-               buf++, argc++;
-               if (argc == argvAlloced) {
-                   argvAlloced += POPT_ARGV_ARRAY_GROW_DELTA;
-                   argv = realloc(argv, sizeof(*argv) * argvAlloced);
-               }
-               argv[argc] = buf;
-           }
-       } else switch (*src) {
-         case '"':
-         case '\'':
-           quote = *src;
-           break;
-         case '\\':
-           src++;
-           if (!*src) {
-               free(argv);
-               free(buf0);
-               return POPT_ERROR_BADQUOTE;
-           }
-           /*@fallthrough@*/
-         default:
-           *buf++ = *src;
-           break;
-       }
-    }
-
-    if (strlen(argv[argc])) {
-       argc++, buf++;
-    }
-
-    (void) poptDupArgv(argc, argv, argcPtr, argvPtr);
-
-    free(argv);
-    free(buf0);
-    return 0;
-}
diff --git a/source4/popt/system.h b/source4/popt/system.h
deleted file mode 100644 (file)
index 059c045..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "config.h"
-
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-
-#if HAVE_MCHECK_H 
-#include <mcheck.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef __NeXT
-/* access macros are not declared in non posix mode in unistd.h -
- don't try to use posix on NeXTstep 3.3 ! */
-#include <libc.h>
-#endif
-
-/* AIX requires this to be the first thing in the file.  */ 
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
-#pragma alloca
-#  else
-#   ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#   endif
-#  endif
-# endif
-#elif defined(__GNUC__) && defined(__STRICT_ANSI__)
-#define alloca __builtin_alloca
-#endif
-
-/*@only@*/ char * xstrdup (const char *str);
-
-#if HAVE_MCHECK_H && defined(__GNUC__)
-#define        vmefail()       (fprintf(stderr, "virtual memory exhausted.\n"), exit(EXIT_FAILURE), NULL)
-#define xstrdup(_str)   (strcpy((malloc(strlen(_str)+1) ? : vmefail()), (_str)))
-#else
-#define        xstrdup(_str)   strdup(_str)
-#endif  /* HAVE_MCHECK_H && defined(__GNUC__) */
-
-
-#include "popt.h"