From 4d906d944bf34de355f55e0e278550bebee8a106 Mon Sep 17 00:00:00 2001 From: Chris Friedt Date: Thu, 1 Dec 2022 21:12:29 -0500 Subject: [PATCH] Revert "posix: getopt: move declarations to unistd.h" This seems to have caused build failures in spite of CI being green in PR 52653. This reverts commit fc92eb1b37ec00c492d125f69f2514f005c130c0. Signed-off-by: Chris Friedt --- include/zephyr/posix/unistd.h | 6 ----- lib/os/crc_shell.c | 7 ++---- lib/posix/getopt/getopt.c | 5 ---- lib/posix/getopt/getopt.h | 25 ++++++++++++++++++++ samples/subsys/shell/shell_module/src/main.c | 6 ----- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/include/zephyr/posix/unistd.h b/include/zephyr/posix/unistd.h index e2e8fdd8cee..3857f1331bd 100644 --- a/include/zephyr/posix/unistd.h +++ b/include/zephyr/posix/unistd.h @@ -43,12 +43,6 @@ static inline int gethostname(char *buf, size_t len) #endif /* CONFIG_POSIX_API */ -#ifdef CONFIG_GETOPT -int getopt(int argc, char *const argv[], const char *optstring); -extern char *optarg; -extern int opterr, optind, optopt; -#endif - unsigned sleep(unsigned int seconds); int usleep(useconds_t useconds); diff --git a/lib/os/crc_shell.c b/lib/os/crc_shell.c index e75d88623e1..6b6125deffd 100644 --- a/lib/os/crc_shell.c +++ b/lib/os/crc_shell.c @@ -5,14 +5,10 @@ */ #include +#include #include #include #include -#ifdef CONFIG_ARCH_POSIX -#include -#else -#include -#endif #include #include @@ -75,6 +71,7 @@ static int cmd_crc(const struct shell *sh, size_t argc, char **argv) enum crc_type type = CRC32_IEEE; optind = 1; + optreset = 1; while ((rv = getopt(argc, argv, "fhlp:rs:t:")) != -1) { switch (rv) { diff --git a/lib/posix/getopt/getopt.c b/lib/posix/getopt/getopt.c index 514af721cb5..f1d5c8ee73b 100644 --- a/lib/posix/getopt/getopt.c +++ b/lib/posix/getopt/getopt.c @@ -30,11 +30,6 @@ */ #include -#ifdef CONFIG_ARCH_POSIX -#include -#else -#include -#endif #include "getopt.h" #include "getopt_common.h" diff --git a/lib/posix/getopt/getopt.h b/lib/posix/getopt/getopt.h index 4dfcc8b5f57..0cbdda651fa 100644 --- a/lib/posix/getopt/getopt.h +++ b/lib/posix/getopt/getopt.h @@ -28,7 +28,11 @@ struct getopt_state { #endif }; +extern int opterr; /* if error message should be printed */ +extern int optind; /* index into parent argv vector */ +extern int optopt; /* character checked for validity */ extern int optreset; /* reset getopt */ +extern char *optarg; /* argument associated with option */ #define no_argument 0 #define required_argument 1 @@ -54,6 +58,27 @@ void getopt_init(void); /* Function returns getopt_state structure for the current thread. */ struct getopt_state *getopt_state_get(void); +/** + * @brief Parses the command-line arguments. + * + * It is based on FreeBSD implementation. + * + * @param[in] argc Arguments count. + * @param[in] argv Arguments. + * @param[in] options String containing the legitimate option characters. + * + * @return If an option was successfully found, function returns + * the option character. + * @return If options have been detected that is not in @p options + * function will return '?'. + * If function encounters an option with a missing + * argument, then the return value depends on the first + * character in optstring: if it is ':', then ':' is + * returned; otherwise '?' is returned. + * @return -1 If all options have been parsed. + */ +int getopt(int nargc, char *const nargv[], const char *ostr); + /** * @brief Parses the command-line arguments. * diff --git a/samples/subsys/shell/shell_module/src/main.c b/samples/subsys/shell/shell_module/src/main.c index b78490d7eb7..41275a8a761 100644 --- a/samples/subsys/shell/shell_module/src/main.c +++ b/samples/subsys/shell/shell_module/src/main.c @@ -13,12 +13,6 @@ #include #include -#ifdef CONFIG_ARCH_POSIX -#include -#else -#include -#endif - LOG_MODULE_REGISTER(app); extern void foo(void);