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 <cfriedt@meta.com>
diff --git a/include/zephyr/posix/unistd.h b/include/zephyr/posix/unistd.h
index e2e8fdd..3857f13 100644
--- a/include/zephyr/posix/unistd.h
+++ b/include/zephyr/posix/unistd.h
@@ -43,12 +43,6 @@
 
 #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 e75d886..6b6125d 100644
--- a/lib/os/crc_shell.c
+++ b/lib/os/crc_shell.c
@@ -5,14 +5,10 @@
  */
 
 #include <errno.h>
+#include <getopt.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdlib.h>
-#ifdef CONFIG_ARCH_POSIX
-#include <unistd.h>
-#else
-#include <zephyr/posix/unistd.h>
-#endif
 
 #include <zephyr/kernel.h>
 #include <zephyr/shell/shell.h>
@@ -75,6 +71,7 @@
 	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 514af72..f1d5c8e 100644
--- a/lib/posix/getopt/getopt.c
+++ b/lib/posix/getopt/getopt.c
@@ -30,11 +30,6 @@
  */
 
 #include <string.h>
-#ifdef CONFIG_ARCH_POSIX
-#include <unistd.h>
-#else
-#include <zephyr/posix/unistd.h>
-#endif
 #include "getopt.h"
 #include "getopt_common.h"
 
diff --git a/lib/posix/getopt/getopt.h b/lib/posix/getopt/getopt.h
index 4dfcc8b..0cbdda6 100644
--- a/lib/posix/getopt/getopt.h
+++ b/lib/posix/getopt/getopt.h
@@ -28,7 +28,11 @@
 #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
@@ -57,6 +61,27 @@
 /**
  * @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.
+ *
  * The getopt_long() function works like @ref getopt() except
  * it also accepts long options, started with two dashes.
  *
diff --git a/samples/subsys/shell/shell_module/src/main.c b/samples/subsys/shell/shell_module/src/main.c
index b78490d..41275a8 100644
--- a/samples/subsys/shell/shell_module/src/main.c
+++ b/samples/subsys/shell/shell_module/src/main.c
@@ -13,12 +13,6 @@
 #include <zephyr/usb/usb_device.h>
 #include <ctype.h>
 
-#ifdef CONFIG_ARCH_POSIX
-#include <unistd.h>
-#else
-#include <zephyr/posix/unistd.h>
-#endif
-
 LOG_MODULE_REGISTER(app);
 
 extern void foo(void);