Thanks for looking into that. Unfortunately POSIX says -p should be ignored only if standard output is a terminal, and that newline should be read from /dev/tty, not from standard input. This is so that users can pipe into 'pr -p'. So the proposed patch needs some changes. Here are the issues I found:

+  pr now supports the -p option, to pause upon printing each page until
+  a newline character is read from standard input, as required by POSIX
+  Issue 6.  The corresponding long option is --pause.

This should be /dev/tty, not standard input.


+After printing each page, print an alert (bell) to standard error and
+wait for a newline to be read from standard input before printing the

Likewise.

+next page.  This option is ignored unless both standard input and
+standard output are a tty.

This should mention only standard output.


+  if (pause_option)
+    pause_option = isatty (STDOUT_FILENO) && isatty (STDIN_FILENO);

This should check only standard output.


-  if (have_read_stdin && fclose (stdin) == EOF)
+  if ((have_read_stdin || pause_option) && fclose (stdin) == EOF)
     error (EXIT_FAILURE, errno, _("standard input"));

This change should be omitted.


-  while (print_page ())
-    ;
+  for (;;)
+    {
+      if (pause_option)
+        {
+          putc ('\a', stderr);
+          while (getchar () != '\n')
+            ;
+        }
+      if (! print_page ())
+        break;
+    }

This should read from /dev/tty, not from stdin.


+  -p, --pause       pause at the beginning of each page until a newline\n\
+                    is read from standard input.\n\

This should mention /dev/tty, not standard input.



Reply via email to