[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] libc: getopt muss in die unistd.h
! libc: Sowohl getopt.h als auch unistd.h stellen die grundlegende
getopt-Funkionalität bereit.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/include/getopt.h | 74 ++++++++++++++++++++++-------------------
src/modules/include/unistd.h | 4 ++
2 files changed, 44 insertions(+), 34 deletions(-)
diff --git a/src/modules/include/getopt.h b/src/modules/include/getopt.h
index 84717b3..b381947 100644
--- a/src/modules/include/getopt.h
+++ b/src/modules/include/getopt.h
@@ -27,41 +27,10 @@
*/
#ifndef _GETOPT_H_
-#define _GETOPT_H_
-
-// Fuer den has_arg-Member in der option-struct
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-
-/**
- * Struktur die eine lange Option fuer getopt_long oder getopt_long_only
- * beschreibt
- */
-struct option {
- /** Name der Option (der Text wie sie benutzt wird) */
- const char* name;
-
- /**
- * 0 oder no_argument wenn die Option kein Argument nimmt
- * 1 oder required_argument wenn die Option ein Argument haben muss
- * 2 oder optional_argument wenn die Option ein Argument haben kann, aber
- * nicht muss
- */
- int has_arg;
-
- /**
- * Ist dieser Pointer != NULL, wird an dieser Speicherstelle der Wert val
- * abgelegt, wenn diese Option gefunden wird.
- */
- int* flag;
-
- /**
- * Wert den die Funktionen zurueckgeben oder allenfalls ind *flag ablegen
- * */
- int val;
-};
+#ifndef __unistd_only
+#define _GETOPT_H_
+#endif
/** Pointer auf den aktuellen argumentstring zur aktuellen Option oder NULL */
extern char* optarg;
@@ -104,6 +73,41 @@ extern int optreset;
*/
int getopt(int argc, char* const argv[], const char* optstring);
+#ifndef __unistd_only
+
+// Fuer den has_arg-Member in der option-struct
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
+
+/**
+ * Struktur die eine lange Option fuer getopt_long oder getopt_long_only
+ * beschreibt
+ */
+struct option {
+ /** Name der Option (der Text wie sie benutzt wird) */
+ const char* name;
+
+ /**
+ * 0 oder no_argument wenn die Option kein Argument nimmt
+ * 1 oder required_argument wenn die Option ein Argument haben muss
+ * 2 oder optional_argument wenn die Option ein Argument haben kann, aber
+ * nicht muss
+ */
+ int has_arg;
+
+ /**
+ * Ist dieser Pointer != NULL, wird an dieser Speicherstelle der Wert val
+ * abgelegt, wenn diese Option gefunden wird.
+ */
+ int* flag;
+
+ /**
+ * Wert den die Funktionen zurueckgeben oder allenfalls ind *flag ablegen
+ * */
+ int val;
+};
+
/**
* Diese Funktion arbeitet gleich wie getopt, akzeptiert aber auch lange
* Optionen, die mit zwei Minuszeichen eingeleitet werden. Argumente koennen
@@ -147,4 +151,6 @@ int getopt_long(int argc, char* const argv[], const char* optstring,
int getopt_long_only(int argc, char* const argv[], const char* optstring,
const struct option* longopts, int* longindex);
+#endif /* !defined(__unistd_only) */
+
#endif
diff --git a/src/modules/include/unistd.h b/src/modules/include/unistd.h
index 2949dfb..100e3b7 100644
--- a/src/modules/include/unistd.h
+++ b/src/modules/include/unistd.h
@@ -31,6 +31,10 @@
#include <sys/types.h>
#include <lost/config.h>
+#define __unistd_only
+#include <getopt.h>
+#undef __unistd_only
+
/// Nummer der des Posix-Deskriptors fuer stdin
#define STDIN_FILENO 0
--
1.6.0.2