aboutsummaryrefslogtreecommitdiffstats
path: root/libntlm-0.21/test/getargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'libntlm-0.21/test/getargs.c')
-rw-r--r--libntlm-0.21/test/getargs.c240
1 files changed, 0 insertions, 240 deletions
diff --git a/libntlm-0.21/test/getargs.c b/libntlm-0.21/test/getargs.c
deleted file mode 100644
index ca81fc4d..00000000
--- a/libntlm-0.21/test/getargs.c
+++ /dev/null
@@ -1,240 +0,0 @@
-#include "getargs.h"
-#include <stdio.h>
-#include <string.h>
-
-double dummy(double x)
-{
-return x * 56.7;
-}
-
-static int findString(char *name, char **namelist)
- {
- int i;
-
- for (i=0; *namelist; ++namelist, ++i)
- if (!strcmp(name, *namelist))
- return i;
- return -1;
- }
-
-static char *progName;
-
-typedef int (*fptrNoParam)(void);
-typedef int (*fptrParam)(char*);
-
-static void errorMsg(char c, const char *expected, const char *got)
- {
- fprintf(stderr,"%s: option -%c expected %s parameter, got '%s'\n",progName,c,expected,got);
- }
-
-static void prOptions(argSpec arg[], int specCount)
- {
- int i;
- fprintf(stderr,"%s: options: \n",progName);
-
- for (i=0; i<specCount; ++i)
- {
- fprintf(stderr," -%c ",arg[i].optionChar);
- switch (arg[i].optionType)
- {
- case OptionInteger: fprintf(stderr,"<integer> "); break;
- case OptionLong: fprintf(stderr,"<long> "); break;
- case OptionDouble: fprintf(stderr,"<float> "); break;
- case OptionString: fprintf(stderr,"<string> "); break;
- case OptionBoolean: fprintf(stderr," "); break;
- case OptionEnumerated: fprintf(stderr,"<string> "); break;
- }
- fprintf(stderr,arg[i].helpString);
- if (arg[i].optionType == OptionEnumerated)
- {
- char **s;
- int d = *(unsigned*)arg[i].optionPtr;
- int n;
- fprintf(stderr,"\n");
- fprintf(stderr," where <string> is one of:\n");
- for (n=0,s=arg[i].enumValues; *s; ++s,++n)
- fprintf(stderr," %s%s\n",*s,n==d ? " (default)" : "");
- }
- else
- {
- switch (arg[i].optionType)
- {
- case OptionInteger: fprintf(stderr," (default %d)\n",*(int*)arg[i].optionPtr); break;
- case OptionLong: fprintf(stderr," (default %ld)\n",*(long*)arg[i].optionPtr); break;
- case OptionDouble: fprintf(stderr," (default %f)\n",*(double*)arg[i].optionPtr); break;
- case OptionString: fprintf(stderr," (default '%s')\n",*(char**)arg[i].optionPtr); break;
- case OptionBoolean: fprintf(stderr,"\n"); break;
- case OptionEnumerated: break;
- }
- }
- }
- }
-
-union
- {
- int i;
- long l;
- double d;
- char *p;
- }trash;
-
-int getargs(int argc, char *argv[], argSpec arg[], int specCount)
- {
- int argsUsed;
- char *p;
- int a;
- int argDone;
-
- progName = argv[0];
- argsUsed = 1;
- ++argv;
-
- while (argsUsed < argc)
- {
- /* at this point, argv[0] is the next item to be processed */
-
- p = argv[0];
-
- if (*p != '-')
- return argsUsed;
-
- ++argsUsed;
- ++argv;
-
- ++p;
-
- if (*p =='?')
- {
- prOptions(arg,specCount);
- return -1;
- }
-
- argDone = 0;
-
- for (a=0; a<specCount;)
- {
- char *optionArgPtr = "";
- void *optionPtr = &trash;
-
- if (*p == arg[a].optionChar)
- {
- if (arg[a].optionType != OptionBoolean)
- {
- if (p[1] != '\0')
- optionArgPtr = p+1;
- else
- {
- optionArgPtr = argv[0];
- ++argsUsed;
- ++argv;
- }
-
- if (argsUsed > argc)
- {
- errorMsg(*p,"","");
- return -1;
- }
- }
-
- if (arg[a].optionPtr)
- optionPtr = arg[a].optionPtr;
-
- switch (arg[a].optionType)
- {
- case OptionInteger:
- {
- char *format = "%d";
- if (optionArgPtr[0]=='x')
- {
- format = "%x";
- ++optionArgPtr;
- }
- else if (optionArgPtr[0]=='0' && optionArgPtr[1]=='x')
- {
- format = "%x";
- optionArgPtr+=2;
- }
-
- if (sscanf(optionArgPtr,format,optionPtr) != 1)
- {
- errorMsg(*p,"integer",optionArgPtr);
- return -1;
- }
- break;
- }
-
- case OptionLong:
- if (sscanf(optionArgPtr,"%ld",(long*)optionPtr) != 1)
- {
- errorMsg(*p,"long",optionArgPtr);
- return -1;
- }
- break;
-
- case OptionString:
- *((char**)optionPtr) = strdup(optionArgPtr);
- break;
-
- case OptionDouble:
- if (sscanf(optionArgPtr,"%lf",(double*)optionPtr) != 1)
- {
- errorMsg(*p,"floating point",optionArgPtr);
- return -1;
- }
- break;
-
- case OptionBoolean:
- *((int*)optionPtr) = 1;
- break;
-
- case OptionEnumerated:
- if ((*((int*)optionPtr) = findString(optionArgPtr,arg[a].enumValues)) < 0)
- {
- char **n = arg[a].enumValues;
- fprintf(stderr,"%s: option -%c expects parameter to be one of:\n",progName,*p);
- while (*n)
- {
- fprintf(stderr," %s\n",*n);
- ++n;
- }
- return -1;
- }
- break;
-
- default:
- break;
- }
-
- if (arg[a].funcPtr)
- {
- int s = (*arg[a].funcPtr)(optionArgPtr);
- if (s<0)
- return s;
- }
-
- if (arg[a].optionType == OptionBoolean)
- {
- ++p;
- if (*p != '\0')
- {
- a = 0;
- continue;
- }
- }
-
- argDone = 1;
- break;
- }
- ++a;
- }
-
- if (!argDone)
- {
- fprintf(stderr,"%s: unrecognized option '%c'\n",progName,*p);
- prOptions(arg,specCount);
- return -1;
- }
- }
- return argsUsed;
- }
-