blob: 19e23a7b5cdbfe0b6e6212d81e8395893faadf76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/*
* Copyright (C) 2020 Ant Financial Services Group. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef __GNUC__
#include "bh_getopt.h"
#include <stdio.h>
#include <string.h>
char *optarg = NULL;
int optind = 1;
int
getopt(int argc, char *const argv[], const char *optstring)
{
static int sp = 1;
int opt;
char *p;
if (sp == 1) {
if ((optind >= argc) || (argv[optind][0] != '-')
|| (argv[optind][1] == 0)) {
return -1;
}
else if (!strcmp(argv[optind], "--")) {
optind++;
return -1;
}
}
opt = argv[optind][sp];
p = strchr(optstring, opt);
if (opt == ':' || p == NULL) {
printf("illegal option : '-%c'\n", opt);
if (argv[optind][++sp] == '\0') {
optind++;
sp = 1;
}
return ('?');
}
if (p[1] == ':') {
if (argv[optind][sp + 1] != '\0')
optarg = &argv[optind++][sp + 1];
else if (++optind >= argc) {
printf("option '-%c' requires an argument :\n", opt);
sp = 1;
return ('?');
}
else {
optarg = argv[optind++];
}
sp = 1;
}
else {
if (argv[optind][++sp] == '\0') {
sp = 1;
optind++;
}
optarg = NULL;
}
return (opt);
}
#endif
|