Add more support for POSIX 1003.1-2001, which requires removal for
authorJim Meyering <jim@meyering.net>
Sat, 2 Feb 2002 07:58:50 +0000 (07:58 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 2 Feb 2002 07:58:50 +0000 (07:58 +0000)
support of obsolete "-N" option syntax in expand, head, fold,
split, tail, unexpand, uniq, and which prohibits options with
optional arguments in od and pr.

(main): Check for obsolete options.
(main): Fix bug: -- -N was treated as -N --.

src/fold.c

index 8854171dfafc2eb2eb18b88413da6338e7b2be60..ea6f9872946bc56c46ff6cfb5a76e1ef11e30009 100644 (file)
@@ -1,5 +1,5 @@
 /* fold -- wrap each input line to fit in specified width.
-   Copyright (C) 91, 1995-2001 Free Software Foundation, Inc.
+   Copyright (C) 91, 1995-2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -79,6 +79,10 @@ Mandatory arguments to long options are mandatory for short options too.\n\
   -b, --bytes         count bytes rather than columns\n\
   -s, --spaces        break at spaces\n\
   -w, --width=WIDTH   use WIDTH columns instead of 80\n\
+"), stdout);
+      if (POSIX2_VERSION < 200112)
+       fputs (_("\
+  -WIDTH              (obsolete) same as -w WIDTH\n\
 "), stdout);
       fputs (HELP_OPTION_DESCRIPTION, stdout);
       fputs (VERSION_OPTION_DESCRIPTION, stdout);
@@ -246,20 +250,29 @@ main (int argc, char **argv)
 
   break_spaces = count_bytes = have_read_stdin = 0;
 
-  /* Turn any numeric options into -w options.  */
-  for (i = 1; i < argc; i++)
-    {
-      if (argv[i][0] == '-' && ISDIGIT (argv[i][1]))
-       {
-         char *s;
-
-         s = xmalloc (strlen (argv[i]) + 2);
-         s[0] = '-';
-         s[1] = 'w';
-         strcpy (s + 2, argv[i] + 1);
-         argv[i] = s;
-       }
-    }
+  /* If obsolete, turn any numeric options into -w options.  */
+  if (POSIX2_VERSION < 200112)
+    for (i = 1; i < argc; i++)
+      {
+       char const *a = argv[i];
+       if (a[0] == '-')
+         {
+           if (a[1] == '-' && ! a[2])
+             break;
+           if (ISDIGIT (a[1]))
+             {
+               char *s = xmalloc (strlen (a) + 2);
+               s[0] = '-';
+               s[1] = 'w';
+               strcpy (s + 2, a + 1);
+               argv[i] = s;
+               if (OBSOLETE_OPTION_WARNINGS && ! getenv ("POSIXLY_CORRECT"))
+                 error (0, 0,
+                        _("warning: `fold %s' is obsolete; use `fold -w %s'"),
+                        a, a + 1);
+             }
+         }
+      }
 
   while ((optc = getopt_long (argc, argv, "bsw:", longopts, NULL)) != -1)
     {