svn commit: trunk/uClibc/libc/unistd

bernds at uclibc.org bernds at uclibc.org
Thu Jun 5 17:42:12 UTC 2008


Author: bernds
Date: 2008-06-05 10:42:11 -0700 (Thu, 05 Jun 2008)
New Revision: 22239

Log:
Revert revision 22027 which totally broke getopt.


Modified:
   trunk/uClibc/libc/unistd/getopt.c
   trunk/uClibc/libc/unistd/getopt_int.h


Changeset:
Modified: trunk/uClibc/libc/unistd/getopt.c
===================================================================
--- trunk/uClibc/libc/unistd/getopt.c	2008-06-05 16:29:50 UTC (rev 22238)
+++ trunk/uClibc/libc/unistd/getopt.c	2008-06-05 17:42:11 UTC (rev 22239)
@@ -162,6 +162,10 @@
 
 int optopt = '?';
 
+/* Keep a global copy of all internal members of getopt_data.  */
+
+static struct _getopt_data getopt_data;
+
 
 #ifndef __GNU_LIBRARY__
 
@@ -1154,9 +1158,7 @@
 		  const struct option *longopts, int *longind, int long_only)
 {
   int result;
-  struct _getopt_data getopt_data;
 
-  memset(&getopt_data, 0, sizeof(getopt_data));
   getopt_data.optind = optind;
   getopt_data.opterr = opterr;
 

Modified: trunk/uClibc/libc/unistd/getopt_int.h
===================================================================
--- trunk/uClibc/libc/unistd/getopt_int.h	2008-06-05 16:29:50 UTC (rev 22238)
+++ trunk/uClibc/libc/unistd/getopt_int.h	2008-06-05 17:42:11 UTC (rev 22239)
@@ -30,30 +30,30 @@
 /* Reentrant versions which can handle parsing multiple argument
    vectors at the same time.  */
 
-enum
-  {
-    REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-  };
-
 /* Data type for reentrant functions.  */
 struct _getopt_data
 {
   /* These have exactly the same meaning as the corresponding global
      variables, except that they are used for the reentrant
      versions of getopt.  */
-  char *optarg;
   int optind;
   int opterr;
   int optopt;
+  char *optarg;
 
   /* Internal members.  */
 
   /* True if the internal members have been initialized.  */
-  smallint __initialized;
+  int __initialized;
 
-  /* If the POSIXLY_CORRECT environment variable is set.  */
-  smallint __posixly_correct;
+  /* The next char to be scanned in the option-element
+     in which the last option character we returned was found.
+     This allows us to pick up the scan where we left off.
 
+     If this is zero, or a null string, it means resume the scan
+     by advancing to the next ARGV-element.  */
+  char *__nextchar;
+
   /* Describe how to deal with options that follow non-option ARGV-elements.
 
      If the caller did not specify anything,
@@ -82,16 +82,16 @@
      The special argument `--' forces an end of option-scanning regardless
      of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
      `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
-  smallint __ordering;
 
-  /* The next char to be scanned in the option-element
-     in which the last option character we returned was found.
-     This allows us to pick up the scan where we left off.
+  enum
+    {
+      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+    } __ordering;
 
-     If this is zero, or a null string, it means resume the scan
-     by advancing to the next ARGV-element.  */
-  char *__nextchar;
+  /* If the POSIXLY_CORRECT environment variable is set.  */
+  int __posixly_correct;
 
+
   /* Handle permutation of arguments.  */
 
   /* Describe the part of ARGV that contains non-options that have




More information about the uClibc-cvs mailing list