ucspi-ssl
0.99e
TLS encryption for IPv6 communication
ucspi-ssl-0.99e
src
subgetopt.c
Go to the documentation of this file.
1
/* Public domain. */
2
3
#define SUBGETOPTNOSHORT
4
#include "
subgetopt.h
"
5
6
#define sgopt subgetopt
7
#define optind subgetoptind
8
#define optpos subgetoptpos
9
#define optarg subgetoptarg
10
#define optproblem subgetoptproblem
11
#define optdone subgetoptdone
12
13
int
optind
= 1;
14
int
optpos
= 0;
15
const
char
*
optarg
= 0;
16
int
optproblem
= 0;
17
int
optdone
=
SUBGETOPTDONE
;
18
19
int
sgopt
(
int
argc,
char
*
const
*argv,
const
char
*opts)
20
{
21
int
c;
22
const
char
*s;
23
24
optarg
= 0;
25
if
(!argv || (
optind
>= argc) || !argv[
optind
])
return
optdone
;
26
if
(
optpos
&& !argv[optind][
optpos
]) {
27
++
optind
;
28
optpos = 0;
29
if
((optind >= argc) || !argv[optind])
return
optdone
;
30
}
31
if
(!optpos) {
32
if
(argv[optind][0] !=
'-'
)
return
optdone
;
33
++
optpos
;
34
c = argv[
optind
][1];
35
if
((c ==
'-'
) || (c == 0)) {
36
if
(c) ++
optind
;
37
optpos = 0;
38
return
optdone
;
39
}
40
/* otherwise c is reassigned below */
41
}
42
c = argv[
optind
][
optpos
];
43
++
optpos
;
44
s = opts;
45
while
(*s) {
46
if
(c == *s) {
47
if
(s[1] ==
':'
) {
48
optarg
= argv[
optind
] +
optpos
;
49
++
optind
;
50
optpos = 0;
51
if
(!*
optarg
) {
52
optarg
= argv[
optind
];
53
if
((optind >= argc) || !
optarg
) {
/* argument past end */
54
optproblem
= c;
55
return
'?'
;
56
}
57
++
optind
;
58
}
59
}
60
return
c;
61
}
62
++s;
63
if
(*s ==
':'
) ++s;
64
}
65
optproblem
= c;
66
return
'?'
;
67
}
optind
#define optind
Definition:
subgetopt.c:7
SUBGETOPTDONE
#define SUBGETOPTDONE
Definition:
subgetopt.h:16
optproblem
#define optproblem
Definition:
subgetopt.c:10
optpos
#define optpos
Definition:
subgetopt.c:8
subgetopt.h
sgopt
#define sgopt
Definition:
subgetopt.c:6
optdone
#define optdone
Definition:
subgetopt.c:11
optarg
#define optarg
Definition:
subgetopt.c:9
Generated on Wed Jul 11 2018 22:50:46 for ucspi-ssl by
1.8.13