diff options
author | Thomas Heijligen <thomas.heijligen@secunet.com> | 2023-02-20 13:18:50 +0100 |
---|---|---|
committer | Anastasia Klimchuk <aklm@chromium.org> | 2023-04-27 09:31:49 +0000 |
commit | ba6acffc69b679829bf46f3636b4f6c04bfa7729 (patch) | |
tree | aabff1051eef717fe927d0d42e7909be6594c168 /include | |
parent | 7348eb3320d277aa1d42563009f77189701b47f0 (diff) | |
download | flashrom-ba6acffc69b679829bf46f3636b4f6c04bfa7729.tar.gz flashrom-ba6acffc69b679829bf46f3636b4f6c04bfa7729.tar.bz2 flashrom-ba6acffc69b679829bf46f3636b4f6c04bfa7729.zip |
cli_classic: include a fallback inplementation of getopt
Some systems, DJGPP/DOS for now, may not provide getopt and their gnu
extensions. So provide a fallback implementation.
The code is based on musl libc.
Change-Id: I6ebbde075014e3b45b0f9e04b34b72aa969e1197
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/73102
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/cli_classic.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/include/cli_classic.h b/include/cli_classic.h new file mode 100644 index 00000000..e651cc63 --- /dev/null +++ b/include/cli_classic.h @@ -0,0 +1,43 @@ +/* + * This file is part of the flashrom project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef CLI_CLASSIC_H +#define CLI_CLASSIC_H + +#if __has_include(<getopt.h>) +#include <getopt.h> +#else + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +extern char *optarg; +extern int optind, opterr, optopt; + +struct option { + const char *name; + int has_arg; + int *flag; + int val; +}; + +int getopt (int argc, char *const *argv, const char *shortopts); +int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +int getopt_long_only (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); + +#endif /* __has_include() */ +#endif /* CLI_CLASSIC_H */ |