changeset 2466:ca34f4d14807

Update from glibc.
author Jim Meyering <jim@meyering.net>
date Thu, 04 May 2000 05:34:55 +0000
parents 25a73ffdc1a3
children 44b4f0b3ee61
files lib/getopt.c
diffstat 1 files changed, 20 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lib/getopt.c
+++ b/lib/getopt.c
@@ -2,7 +2,7 @@
    NOTE: The canonical source of this file is maintained with the GNU
    C Library.  Bugs can be reported to bug-glibc@gnu.org.
 
-   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
    	Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
@@ -515,6 +515,13 @@
      int *longind;
      int long_only;
 {
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
   optarg = NULL;
 
   if (optind == 0 || !__getopt_initialized)
@@ -671,7 +678,7 @@
 
       if (ambig && !exact)
 	{
-	  if (opterr)
+	  if (print_errors)
 	    fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
 		     argv[0], argv[optind]);
 	  nextchar += strlen (nextchar);
@@ -692,7 +699,7 @@
 		optarg = nameend + 1;
 	      else
 		{
-		  if (opterr)
+		  if (print_errors)
 		    {
 		      if (argv[optind - 1][1] == '-')
 			/* --option */
@@ -718,7 +725,7 @@
 		optarg = argv[optind++];
 	      else
 		{
-		  if (opterr)
+		  if (print_errors)
 		    fprintf (stderr,
 			   _("%s: option `%s' requires an argument\n"),
 			   argv[0], argv[optind - 1]);
@@ -745,7 +752,7 @@
       if (!long_only || argv[optind][1] == '-'
 	  || my_index (optstring, *nextchar) == NULL)
 	{
-	  if (opterr)
+	  if (print_errors)
 	    {
 	      if (argv[optind][1] == '-')
 		/* --option */
@@ -775,7 +782,7 @@
 
     if (temp == NULL || c == ':')
       {
-	if (opterr)
+	if (print_errors)
 	  {
 	    if (posixly_correct)
 	      /* 1003.2 specifies the format of this message.  */
@@ -809,7 +816,7 @@
 	  }
 	else if (optind == argc)
 	  {
-	    if (opterr)
+	    if (print_errors)
 	      {
 		/* 1003.2 specifies the format of this message.  */
 		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
@@ -858,7 +865,7 @@
 	    }
 	if (ambig && !exact)
 	  {
-	    if (opterr)
+	    if (print_errors)
 	      fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
 		       argv[0], argv[optind]);
 	    nextchar += strlen (nextchar);
@@ -876,7 +883,7 @@
 		  optarg = nameend + 1;
 		else
 		  {
-		    if (opterr)
+		    if (print_errors)
 		      fprintf (stderr, _("\
 %s: option `-W %s' doesn't allow an argument\n"),
 			       argv[0], pfound->name);
@@ -891,7 +898,7 @@
 		  optarg = argv[optind++];
 		else
 		  {
-		    if (opterr)
+		    if (print_errors)
 		      fprintf (stderr,
 			       _("%s: option `%s' requires an argument\n"),
 			       argv[0], argv[optind - 1]);
@@ -938,12 +945,12 @@
 	      }
 	    else if (optind == argc)
 	      {
-		if (opterr)
+		if (print_errors)
 		  {
 		    /* 1003.2 specifies the format of this message.  */
 		    fprintf (stderr,
-			   _("%s: option requires an argument -- %c\n"),
-			   argv[0], c);
+			     _("%s: option requires an argument -- %c\n"),
+			     argv[0], c);
 		  }
 		optopt = c;
 		if (optstring[0] == ':')