mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 07:14:17 +01:00
47 lines
952 B
C
47 lines
952 B
C
|
#include <unistd.h>
|
||
|
|
||
|
char *optarg;
|
||
|
|
||
|
static const char *match(char c, const char *optstring) {
|
||
|
int i;
|
||
|
for (i=0;optstring[i]; i++)
|
||
|
if (c == optstring[i])
|
||
|
return &optstring[i];
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
int getopt(int argc, char * const argv[], const char *optstring) {
|
||
|
static int lastargc = 0;
|
||
|
char *arg;
|
||
|
const char *theopt;
|
||
|
if (lastargc == 0) {
|
||
|
lastargc = 1;
|
||
|
}
|
||
|
optarg = 0;
|
||
|
if (lastargc >= argc) {
|
||
|
lastargc = 0;
|
||
|
return -1;
|
||
|
}
|
||
|
arg = argv[lastargc++];
|
||
|
if (arg[0] != '-') {
|
||
|
lastargc = 0;
|
||
|
return -1;
|
||
|
}
|
||
|
theopt = match(arg[1], optstring);
|
||
|
if (!theopt) {
|
||
|
lastargc = 0;
|
||
|
return -1;
|
||
|
}
|
||
|
if (theopt[1] == ':') {
|
||
|
if (arg[2])
|
||
|
optarg = &arg[2];
|
||
|
else if (lastargc >= argc) {
|
||
|
lastargc = 0;
|
||
|
return -1;
|
||
|
} else
|
||
|
optarg = argv[lastargc++];
|
||
|
}
|
||
|
return theopt[0];
|
||
|
}
|
||
|
|