BSD 4 release
[unix-history] / usr / src / cmd / pr.c
index 880661e..0150983 100644 (file)
@@ -1,3 +1,4 @@
+static char *sccsid = "@(#)pr.c        4.1 (Berkeley) 10/1/80";
 /*
  *   print file with headings
  *  2+head+2+page[56]+5
 /*
  *   print file with headings
  *  2+head+2+page[56]+5
@@ -8,6 +9,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
+/* Making putcp a macro sped things up by 14%. */
+#define putcp(c)  if (page >= fpage) putchar(c)
+
 int    ncol    = 1;
 char   *header;
 int    col;
 int    ncol    = 1;
 char   *header;
 int    col;
@@ -34,6 +38,7 @@ int   length  = 66;
 int    plength = 61;
 int    margin  = 10;
 int    ntflg;
 int    plength = 61;
 int    margin  = 10;
 int    ntflg;
+int    fflg;
 int    mflg;
 int    tabc;
 char   *tty;
 int    mflg;
 int    tabc;
 char   *tty;
@@ -67,6 +72,11 @@ char **argv;
                                ntflg++;
                                continue;
 
                                ntflg++;
                                continue;
 
+                       case 'f':
+                               fflg++;
+                               plength = 60;
+                               continue;
+
                        case 'l':
                                length = atoi(++*argv);
                                continue;
                        case 'l':
                                length = atoi(++*argv);
                                continue;
@@ -200,14 +210,25 @@ char **argp;
                }
                line = 0;
                if (ntflg==0) {
                }
                line = 0;
                if (ntflg==0) {
-                       sprintf(linebuf, "\n\n%s %s  %s Page %d\n\n\n",
-                               cbuf+4, cbuf+20, header, page);
+                       if (fflg) {
+                               /* Assume a ff takes two blank lines at the
+                                  top of the page. */
+                               line = 2;
+                               sprintf(linebuf, "%s %s  %s Page %d\n\n\n",
+                                       cbuf+4, cbuf+20, header, page);
+                       } else
+                               sprintf(linebuf, "\n\n%s %s  %s Page %d\n\n\n",
+                                       cbuf+4, cbuf+20, header, page);
                        for(cp=linebuf;*cp;) put(*cp++);
                }
                putpage();
                        for(cp=linebuf;*cp;) put(*cp++);
                }
                putpage();
-               if (ntflg==0)
-                       while(line<length)
-                               put('\n');
+               if (ntflg==0) {
+                       if (fflg)
+                               put('\f');
+                       else
+                               while(line<length)
+                                       put('\n');
+               }
                page++;
        }
        fclose(file);
                page++;
        }
        fclose(file);
@@ -413,9 +434,3 @@ put(ac)
                col++;
        putcp(c);
 }
                col++;
        putcp(c);
 }
-
-putcp(c)
-{
-       if (page >= fpage)
-               putchar(c);
-}