From 56e0e6be56f4109139bcc2e4b4accd5fd76567cb Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 6 Sep 2019 20:03:16 +0200 Subject: LibC: Borrow a slightly more functional getopt() We were already borrowing a getopt() from the BSD family until the day we write our own. This patch borrows a slightly more modern one so we also get getopt_long(). Fixes #190. See also #91 for the desire to eventually NIH our own getopt().. --- Libraries/LibC/getopt.h | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'Libraries/LibC/getopt.h') diff --git a/Libraries/LibC/getopt.h b/Libraries/LibC/getopt.h index a55f06df52..caad05366e 100644 --- a/Libraries/LibC/getopt.h +++ b/Libraries/LibC/getopt.h @@ -2,12 +2,35 @@ #include +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +struct option { + const char *name; + int has_arg; + int* flag; + int val; +}; + __BEGIN_DECLS -int getopt(int argc, char* const argv[], const char* optstring); -extern char* optarg; +int getopt_long(int, char* const*, const char*, const struct option*, int*); +int getopt_long_only(int, char* const*, const char*, const struct option*, int*); + +#ifndef _GETOPT_DECLARED +#define _GETOPT_DECLARED +int getopt(int, char * const [], const char *); +extern char *optarg; extern int optind; extern int opterr; extern int optopt; +#endif + +#ifndef _OPTRESET_DECLARED +#define _OPTRESET_DECLARED +extern int optreset; +#endif __END_DECLS + -- cgit v1.2.3