[rtems-libbsd commit] ping/ping6: Use getopt_r and make main unique for RTEMS

Joel Sherrill joel at rtems.org
Sat Sep 1 14:42:56 UTC 2012


Module:    rtems-libbsd
Branch:    master
Commit:    234dfb80b5f3406518296314c25512d485ed4a03
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=234dfb80b5f3406518296314c25512d485ed4a03

Author:    Joel Sherrill <joel.sherrill at oarcorp.com>
Date:      Fri Aug 31 19:33:20 2012 -0500

ping/ping6: Use getopt_r and make main unique for RTEMS

---

 freebsd-userspace/commands/sbin/ping/ping.c   |   19 +++++++++++++++++++
 freebsd-userspace/commands/sbin/ping6/ping6.c |   20 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/freebsd-userspace/commands/sbin/ping/ping.c b/freebsd-userspace/commands/sbin/ping/ping.c
index e7128f8..5dc8414 100644
--- a/freebsd-userspace/commands/sbin/ping/ping.c
+++ b/freebsd-userspace/commands/sbin/ping/ping.c
@@ -1,3 +1,7 @@
+#ifdef __rtems__
+#define __need_getopt_newlib
+#include <getopt.h>
+#endif
 /*
  * Copyright (c) 1989, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -225,7 +229,11 @@ static void tvsub(struct timeval *, struct timeval *);
 static void usage(void) __dead2;
 
 int
+#ifdef __rtems__
+main_ping(argc, argv)
+#else
 main(argc, argv)
+#endif
 	int argc;
 	char *const *argv;
 {
@@ -254,6 +262,9 @@ main(argc, argv)
 	char rspace[MAX_IPOPTLEN];	/* record route space */
 #endif
 	unsigned char loop, mttl;
+#ifdef __rtems__
+	struct getopt_data getopt_reent;
+#endif
 
 	payload = source = NULL;
 #ifdef IPSEC_POLICY_IPSEC
@@ -274,13 +285,21 @@ main(argc, argv)
 	alarmtimeout = df = preload = tos = 0;
 
 	outpack = outpackhdr + sizeof(struct ip);
+#ifdef __rtems__
+	memset(&getopt_reent, 0, sizeof(getopt_data));
+	while ((ch = getopt_r(argc, argv,
+#else
 	while ((ch = getopt(argc, argv,
+#endif
 		"Aac:DdfG:g:h:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:"
 #ifdef IPSEC
 #ifdef IPSEC_POLICY_IPSEC
 		"P:"
 #endif /*IPSEC_POLICY_IPSEC*/
 #endif /*IPSEC*/
+#ifdef __rtems__
+		, &getopt_reent
+#endif
 		)) != -1)
 	{
 		switch(ch) {
diff --git a/freebsd-userspace/commands/sbin/ping6/ping6.c b/freebsd-userspace/commands/sbin/ping6/ping6.c
index d28a3c9..20b5f7b 100644
--- a/freebsd-userspace/commands/sbin/ping6/ping6.c
+++ b/freebsd-userspace/commands/sbin/ping6/ping6.c
@@ -1,5 +1,8 @@
 #ifdef __rtems__
 #define USE_RFC2292BIS
+
+#define __need_getopt_newlib
+#include <getopt.h>
 #endif
 /*	$KAME: ping6.c,v 1.169 2003/07/25 06:01:47 itojun Exp $	*/
 
@@ -263,7 +266,11 @@ volatile sig_atomic_t seenint;
 volatile sig_atomic_t seeninfo;
 #endif
 
+#ifdef __rtems__
+int	 main_ping6(int, char *[]);
+#else
 int	 main(int, char *[]);
+#endif
 void	 fill(char *, char *);
 int	 get_hoplim(struct msghdr *);
 int	 get_pathmtu(struct msghdr *);
@@ -295,7 +302,11 @@ char	*nigroup(char *);
 void	 usage(void);
 
 int
+#ifdef __rtems__
+main_ping6(argc, argv)
+#else
 main(argc, argv)
+#endif
 	int argc;
 	char *argv[];
 {
@@ -341,6 +352,9 @@ main(argc, argv)
 #ifdef IPV6_USE_MIN_MTU
 	int mflag = 0;
 #endif
+#ifdef __rtems__
+	struct getopt_data getopt_reent;
+#endif
 
 	/* just to be sure */
 	memset(&smsghdr, 0, sizeof(smsghdr));
@@ -357,8 +371,14 @@ main(argc, argv)
 #define ADDOPTS	"AE"
 #endif /*IPSEC_POLICY_IPSEC*/
 #endif
+#ifdef __rtems__
+	memset(&getopt_reent, 0, sizeof(getopt_data));
+	while ((ch = getopt_r(argc, argv,
+	    "a:b:c:DdfHg:h:I:i:l:mnNop:qrRS:s:tvwW" ADDOPTS, &getopt_reent)) != -1) {
+#else
 	while ((ch = getopt(argc, argv,
 	    "a:b:c:DdfHg:h:I:i:l:mnNop:qrRS:s:tvwW" ADDOPTS)) != -1) {
+#endif
 #undef ADDOPTS
 		switch (ch) {
 		case 'a':




More information about the vc mailing list