4 * getopt - get option letter from argv
6 * This is a version of the public domain getopt() implementation by
7 * Henry Spencer, changed for 4.3BSD compatibility (in addition to System V).
8 * It allows rescanning of an option list by setting optind to 0 before
9 * calling, which is why we use it even if the system has its own (in fact,
10 * this one has a unique name so as not to conflict with the system's).
11 * Thanks to Dennis Ferguson for the appropriate modifications.
13 * This file is in the Public Domain.
20 #include "ntp_stdlib.h"
27 char *ntp_optarg
; /* Global argument pointer. */
28 int ntp_optind
= 0; /* Global argv index. */
29 int ntp_opterr
= 1; /* for compatibility, should error be printed? */
30 int ntp_optopt
; /* for compatibility, option character checked */
32 static char *scan
= NULL
; /* Private scan pointer. */
33 static const char *prog
= "amnesia";
36 * Print message about a bad option.
47 (void) putc(ch
, stderr
);
48 (void) putc('\n', stderr
);
61 register const char *place
;
66 if (ntp_optind
== 0) {
71 if (scan
== NULL
|| *scan
== '\0') {
72 if (ntp_optind
>= argc
73 || argv
[ntp_optind
][0] != '-'
74 || argv
[ntp_optind
][1] == '\0') {
77 if (argv
[ntp_optind
][1] == '-'
78 && argv
[ntp_optind
][2] == '\0') {
83 scan
= argv
[ntp_optind
++]+1;
87 ntp_optopt
= c
& 0377;
88 for (place
= optstring
; place
!= NULL
&& *place
!= '\0'; ++place
)
92 if (place
== NULL
|| *place
== '\0' || c
== ':' || c
== '?') {
93 return (badopt(": unknown option -", c
));
101 } else if (ntp_optind
>= argc
) {
102 return (badopt(": option requires argument -", c
));
104 ntp_optarg
= argv
[ntp_optind
++];