From 9c45d9ad13fdf439d44d7443ae75da15ea0223ed Mon Sep 17 00:00:00 2001 From: Sam Varshavchik Date: Mon, 19 Aug 2013 16:39:41 -0400 Subject: Initial checkin Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy. --- tcpd/argparse.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tcpd/argparse.c (limited to 'tcpd/argparse.c') diff --git a/tcpd/argparse.c b/tcpd/argparse.c new file mode 100644 index 0000000..dcb56b4 --- /dev/null +++ b/tcpd/argparse.c @@ -0,0 +1,51 @@ +#include "argparse.h" +#include +#include +#include + +/* +** Copyright 2000 Double Precision, Inc. +** See COPYING for distribution information. +*/ + + + +int argparse(int argc, char **argv, struct args *s) +{ +int argn=1; +int i; + + while (argn < argc) + { + const char *p; + int l=0; + + if ( argv[argn][0] != '-') break; + if ( argv[argn][1] == 0) + { + ++argn; + break; + } + for (i=0; s[i].name; i++) + { + l=strlen(s[i].name); + if (strncmp(s[i].name, argv[argn]+1, l) == 0 && + (argv[argn][l+1] == 0 || + argv[argn][l+1] == '=')) break; + } + if (s[i].name == 0) + { + fprintf(stderr, "%s: Invalid option: %s\n", + argv[0], argv[argn]); + exit(1); + } + p=argv[argn]+1+l; + if (*p) ++p; + if (s[i].valuep) + *s[i].valuep=p; + else + (*s[i].funcp)(p); + ++argn; + } + return (argn); +} -- cgit v1.2.3