1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:37:34 +00:00

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()..
This commit is contained in:
Andreas Kling 2019-09-06 20:03:16 +02:00
parent 6ab498edf7
commit 56e0e6be56
2 changed files with 611 additions and 85 deletions

View file

@ -2,12 +2,35 @@
#include <sys/cdefs.h>
#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