mlibc: Mescc-tools support: getopt, getopt_long.
[mes.git] / mlibc / include / getopt.h
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
4  * Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
5  *
6  * This file is part of Mes.
7  *
8  * Mes is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or (at
11  * your option) any later version.
12  *
13  * Mes is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
20  */
21 #ifndef __MES_GETOPT_H
22 #define __MES_GETOPT_H 1
23
24 #if __GNUC__ && POSIX
25 #ifndef _GNU_SOURCE
26 #define _GNU_SOURCE
27 #endif
28 #undef __MES_GETOPT_H
29 #include_next <getopt.h>
30
31 #else // ! (__GNUC__ && POSIX)
32 #include <endian.h>
33 int isdigit (int);
34 int isxdigit (int);
35 #endif // ! (__GNUC__ && POSIX)
36
37 char *optarg;
38 int optind;
39 int opterr;
40 struct option
41 {
42   char const *name;
43   int has_arg;
44   int *flag;
45   int val;
46 };
47
48 enum _argtype
49 {
50   no_argument,
51   required_argument,
52   optional_argument
53 };
54
55 int getopt (int argc, char *const *argv, char const *shortopts);
56 int getopt_long (int argc, char *const *argv, char const *shortopts,
57                  struct option const *longopts, int *longind);
58
59 #endif // __MES_GETOPT_H
60