/* Newsgroups: mod.std.unix Subject: public domain AT&T getopt source Date: 3 Nov 85 19:34:15 GMT Here's something you've all been waiting for: the AT&T public domain source for getopt(3). It is the code which was given out at the 1985 UNIFORUM conference in Dallas. I obtained it by electronic mail directly from AT&T. The people there assure me that it is indeed in the public domain. */
/*LINTLIBRARY*/
extern int strlen();
extern int strcmp();
extern char *strchr();
extern int write();
if(opterr){/
char errbuf[2];/
errbuf[0] = c; errbuf[1] = '/n';/
(void) write(2, argv[0], (unsigned)strlen(argv[0]));/
(void) write(2, s, (unsigned)strlen(s));/
int opterr = 1;
int optind = 1;
int optopt;
char *optarg;
{
static int sp = 1;
register int c;
register char *cp;
if(sp == 1)
argv[optind][0] != '-' || argv[optind][1] == '/0')
return(EOF);
else if(strcmp(argv[optind], "--") == NULL) {
optind++;
return(EOF);
}
optopt = c = argv[optind][sp];
if(c == ':' || (cp=strchr(opts, c)) == NULL) {
ERR(": illegal option -- ", c);
if(argv[optind][++sp] == '/0') {
optind++;
sp = 1;
}
return('?'); }
if(*++cp == ':') {
if(argv[optind][sp+1] != '/0')
optarg = &argv[optind++][sp+1];
ERR(": option requires an argument -- ", c);
sp = 1;
return('?');
} else
sp = 1; } else {
if(argv[optind][++sp] == '/0') {
sp = 1;
optind++;
}
}
return(c);
}