/* skip - output "n" blank lines */ skip (n) /******/ int n; { int t; t = n; while (t-- > 0) fputs ("\n", dev_lst); return (n); } /* skip */ #define margin1 0 /* top of page to title line */ #define margin2 2 /* title line to body */ #define margin3 8 /* body to bottom of page */ #define page_size 66 char *title; int line_of_page; int page; /* paginate - separate stream of buffers into pages */ paginate (buf) /************/ char *buf; { if (page != 0) /* M. A. Jacksons's program inversion */ goto resume; /* technique used */ /* read */ while (buf != NULL) /* while not end of file */ { ++page; fputs ("\f", dev_lst); line_of_page = skip (margin1); if (title != NULL) /* output title and page nr. */ { fprintf (dev_lst, "%-60spage %1d", title, page); line_of_page += skip (margin2); } while (buf != NULL && line_of_page < page_size - margin3) { fputs (buf, dev_lst); ++line_of_page; /* read */ return; resume: ; } line_of_page = 0; } page = 0; } /* paginate */ .