Mesa (master): getopt: Make code more portable.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Jan 12 16:59:39 UTC 2011


Module: Mesa
Branch: master
Commit: f9bb5323eb96f47cfb4ab5f93165323df0a1fd61
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9bb5323eb96f47cfb4ab5f93165323df0a1fd61

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed Jan 12 16:08:22 2011 +0000

getopt: Make code more portable.

---

 src/getopt/SConscript    |    2 ++
 src/getopt/getopt.h      |   12 ++++++++----
 src/getopt/getopt_long.c |   16 ++++++++--------
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/getopt/SConscript b/src/getopt/SConscript
index 0fbaab4..14cabed 100644
--- a/src/getopt/SConscript
+++ b/src/getopt/SConscript
@@ -5,6 +5,8 @@ if not env['msvc']:
 
 env = env.Clone()
 
+env.Prepend(CPPPATH = ['.'])
+
 getopt = env.ConvenienceLibrary(
     target = 'getopt',
     source = ['getopt_long.c'],
diff --git a/src/getopt/getopt.h b/src/getopt/getopt.h
index 0311b07..117608f 100644
--- a/src/getopt/getopt.h
+++ b/src/getopt/getopt.h
@@ -33,8 +33,6 @@
 #ifndef _GETOPT_H_
 #define _GETOPT_H_
 
-#include <sys/cdefs.h>
-
 /*
  * GNU-like getopt_long() and 4.4BSD getsubopt()/optreset extensions
  */
@@ -42,6 +40,10 @@
 #define required_argument  1
 #define optional_argument  2
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct option {
 	/* name of long option */
 	const char *name;
@@ -56,7 +58,6 @@ struct option {
 	int val;
 };
 
-__BEGIN_DECLS
 int	 getopt_long(int, char * const *, const char *,
 	    const struct option *, int *);
 int	 getopt_long_only(int, char * const *, const char *,
@@ -73,6 +74,9 @@ extern   int optopt;
 extern   int optreset;
 extern   char *suboptarg;               /* getsubopt(3) external variable */
 #endif
-__END_DECLS
+
+#ifdef __cplusplus
+}
+#endif
  
 #endif /* !_GETOPT_H_ */
diff --git a/src/getopt/getopt_long.c b/src/getopt/getopt_long.c
index eb1e3ef..81268b8 100644
--- a/src/getopt/getopt_long.c
+++ b/src/getopt/getopt_long.c
@@ -49,9 +49,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <err.h>
 #include <errno.h>
 #include <getopt.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -198,7 +198,7 @@ parse_long_options(char * const *nargv, const char *options,
 		else {
 			/* ambiguous abbreviation */
 			if (PRINT_ERROR)
-				warnx(ambig, (int)current_argv_len,
+				fprintf(stderr, ambig, (int)current_argv_len,
 				     current_argv);
 			optopt = 0;
 			return (BADCH);
@@ -208,7 +208,7 @@ parse_long_options(char * const *nargv, const char *options,
 		if (long_options[match].has_arg == no_argument
 		    && has_equal) {
 			if (PRINT_ERROR)
-				warnx(noarg, (int)current_argv_len,
+				fprintf(stderr, noarg, (int)current_argv_len,
 				     current_argv);
 			/*
 			 * XXX: GNU sets optopt to val regardless of flag
@@ -238,7 +238,7 @@ parse_long_options(char * const *nargv, const char *options,
 			 * should be generated.
 			 */
 			if (PRINT_ERROR)
-				warnx(recargstring,
+				fprintf(stderr, recargstring,
 				    current_argv);
 			/*
 			 * XXX: GNU sets optopt to val regardless of flag
@@ -256,7 +256,7 @@ parse_long_options(char * const *nargv, const char *options,
 			return (-1);
 		}
 		if (PRINT_ERROR)
-			warnx(illoptstring, current_argv);
+			fprintf(stderr, illoptstring, current_argv);
 		optopt = 0;
 		return (BADCH);
 	}
@@ -418,7 +418,7 @@ start:
 		if (!*place)
 			++optind;
 		if (PRINT_ERROR)
-			warnx(illoptchar, optchar);
+			fprintf(stderr, illoptchar, optchar);
 		optopt = optchar;
 		return (BADCH);
 	}
@@ -429,7 +429,7 @@ start:
 		else if (++optind >= nargc) {	/* no arg */
 			place = EMSG;
 			if (PRINT_ERROR)
-				warnx(recargchar, optchar);
+				fprintf(stderr, recargchar, optchar);
 			optopt = optchar;
 			return (BADARG);
 		} else				/* white space */
@@ -450,7 +450,7 @@ start:
 			if (++optind >= nargc) {	/* no arg */
 				place = EMSG;
 				if (PRINT_ERROR)
-					warnx(recargchar, optchar);
+					fprintf(stderr, recargchar, optchar);
 				optopt = optchar;
 				return (BADARG);
 			} else




More information about the mesa-commit mailing list