Author: delphij
Date: Tue Dec 14 01:16:56 2010
New Revision: 216423
URL: http://svn.freebsd.org/changeset/base/216423

Log:
  IEEE Std 1003.1-2008, Section 1.4, Utility Description Defaults says
  that when the options section is listed as "None", utility shall
  recognize "--" as a first argument to be discarded.
  
  This implementation is largely based on OpenBSD implementation but
  we do slightly differently:
  
  a) We skip argv[0] as the first step;
  b) We test whether the next argument is "--" and ignore it.
  
  With this change one will get:
  
  %printf
  usage: printf format [arguments ...]
  %printf -v
  -v%printf -- -v
  -v%
  %printf --
  usage: printf format [arguments ...]
  
  Which matches the behavior observed on a Debian system but different
  from the Illumos change.

Modified:
  head/usr.bin/printf/printf.c

Modified: head/usr.bin/printf/printf.c
==============================================================================
--- head/usr.bin/printf/printf.c        Tue Dec 14 00:21:34 2010        
(r216422)
+++ head/usr.bin/printf/printf.c        Tue Dec 14 01:16:56 2010        
(r216423)
@@ -102,7 +102,7 @@ int
 main(int argc, char *argv[])
 {
        size_t len;
-       int ch, chopped, end, rval;
+       int chopped, end, rval;
        char *format, *fmt, *start;
 
 #ifndef SHELL
@@ -111,15 +111,15 @@ main(int argc, char *argv[])
 #ifdef SHELL
        optreset = 1; optind = 1; opterr = 0; /* initialize getopt */
 #endif
-       while ((ch = getopt(argc, argv, "")) != -1)
-               switch (ch) {
-               case '?':
-               default:
-                       usage();
-                       /* NOTREACHED */
-               }
-       argc -= optind;
-       argv += optind;
+       /* Skip argv[0] which is the process name */
+       argv++;
+       argc--;
+
+       /* Need to accept/ignore "--" option. */
+       if (argc >= 1 && strcmp(*argv, "--") == 0) {
+               argc--;
+               argv++;
+       }
 
        if (argc < 1) {
                usage();
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to