Commit 7aed0593e00f6369d0b29fbc8cfde653e5187c60

Robert Millan 2006-02-13T20:56:47

Add bsd_getopt

diff --git a/ChangeLog b/ChangeLog
index f33a120..bfb38ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-02-13  Robert Millan  <rmh@aybabtu.com>
+       
+	Add bsd_getopt.
+	* bsd_getopt.c: New.
+	* include/bsd/getopt.h: New.
+	* Versions: Add bsd_getopt and optreset.
+	* Makefile: Add bsd_getopt.c and include/bsd/getopt.h.
+
 2006-02-10  Robert Millan  <rmh@aybabtu.com>
        
 	Add errc, warnc, verrc and vwarnc.
diff --git a/Makefile b/Makefile
index 5190820..a028db0 100644
--- a/Makefile
+++ b/Makefile
@@ -4,9 +4,9 @@
 # $Id$
 #
 
-LIB_SRCS = arc4random.c err.c fgetln.c inet_net_pton.c strlcat.c strlcpy.c md5c.c fmtcheck.c
+LIB_SRCS = arc4random.c bsd_getopt.c err.c fgetln.c inet_net_pton.c strlcat.c strlcpy.c md5c.c fmtcheck.c
 
-LIB_INCLUDES = include/bsd/err.h include/bsd/ip_icmp.h include/bsd/random.h include/bsd/queue.h include/bsd/md5.h include/bsd/string.h include/bsd/bsd.h include/bsd/stdlib.h
+LIB_INCLUDES = include/bsd/err.h include/bsd/getopt.h include/bsd/ip_icmp.h include/bsd/random.h include/bsd/queue.h include/bsd/md5.h include/bsd/string.h include/bsd/bsd.h include/bsd/stdlib.h
 
 LIB_MANS = man/arc4random.3 man/strlcpy.3 man/fgetln.3 man/fmtcheck.3
 
diff --git a/Versions b/Versions
index 49e068c..318bbc3 100644
--- a/Versions
+++ b/Versions
@@ -1,6 +1,7 @@
 LIBBSD_0.0 {
   global:
     arc4random;
+    bsd_getopt; optreset;
     errc; warnc; verrc; vwarnc;
     fgetln;
     fgetwln;
diff --git a/bsd_getopt.c b/bsd_getopt.c
new file mode 100644
index 0000000..8245fc8
--- /dev/null
+++ b/bsd_getopt.c
@@ -0,0 +1,15 @@
+#include <bsd/getopt.h>
+
+int optreset = 0;
+
+int
+bsd_getopt (int argc, char **argv, char *shortopts)
+{
+  if (optreset == 1)
+    {
+      optreset = 0;
+      optind = 0;
+    }
+
+  return getopt (argc, argv, shortopts);
+}
diff --git a/include/bsd/getopt.h b/include/bsd/getopt.h
new file mode 100644
index 0000000..bf78f01
--- /dev/null
+++ b/include/bsd/getopt.h
@@ -0,0 +1,4 @@
+#include <getopt.h>
+extern int optreset;
+
+int bsd_getopt (int, char **, char *);