static int print(char *name) { static int notfirst = 0; char *date = NULL; char *head = NULL; int c; if (Multi != 'm' && mustopen(name, &Files[0]) == NULL) return (0); if (Multi == 'm' && Nfiles == 0 && mustopen(name, &Files[0]) == NULL) die("cannot open stdin"); if (Buffer) (void) ungetwc(Files->f_nextc, Files->f_f); if (Lnumb) Lnumb = 1; for (Page = 0; ; putpage()) { if (C == WEOF && !(fold && Buffer)) break; if (Buffer) nexbuf(); Inpos = 0; if (get(0) == WEOF) break; (void) fflush(stdout); if (++Page >= Fpage) { /* Pause if -p and not first page */ if (Ttyout && Pause && !notfirst++) { PROMPT(); /* prompt with bell and pause */ while ((c = getc(Ttyin)) != EOF && c != '\n') ; } if (Margin == 0) continue; if (date == NULL) date = GETDATE(); if (head == NULL) head = Head != NULL ? Head : Nfiles < 2 ? Files->f_name : nulls; (void) printf("\n\n"); Nspace = Offset; putspace(); (void) printf(HEAD); } } C = '\0'; return (1); }
int pr(char *name) { char *date = 0, *head = 0; if(Multi != 'm' && mustopen(name, &Files[0]) == 0) return 0; if(Buffer) Bungetc(Files->f_f); if(Lnumb) Lnumb = 1; for(Page = 0;; putpage()) { if(C == -1) break; if(Buffer) nexbuf(); Inpos = 0; if(get(0) == -1) break; Bflush(&bout); Page++; if(Page >= Fpage) { if(Margin == 0) continue; if(date == 0) date = getdate(); if(head == 0) head = Head != 0 ? Head : Nfiles < 2? Files->f_name: nulls; Bprint(&bout, "\n\n"); Nspace = Offset; putspace(); Bprint(&bout, HEAD); } } if(Padodd && (Page&1) == 1) { Line = 0; if(Formfeed) put('\f'); else while(Line < Len) put('\n'); } C = '\0'; return 1; }
int main(int argc, char **argv) { FILS fstr[NFILES]; int nfdone = 0; /* Get locale variables for environment */ (void) setlocale(LC_ALL, ""); #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it weren't */ #endif (void) textdomain(TEXT_DOMAIN); mbcurmax = MB_CUR_MAX; Files = fstr; for (argc = findopt(argc, argv); argc > 0; --argc, ++argv) { if (Multi == 'm') { if (Nfiles >= NFILES - 1) die("too many files"); if (mustopen(*argv, &Files[Nfiles++]) == NULL) ++nfdone; /* suppress printing */ } else { if (print(*argv)) (void) fclose(Files->f_f); ++nfdone; } } if (!nfdone) /* no files named, use stdin */ (void) print(NOFILE); /* on GCOS, use current file, if any */ if (Report) { errprint(); /* print accumulated error reports */ exit(Error); } return (Error); }
void main(int argc, char *argv[]) { Fils fstr[NFILES]; int nfdone = 0; Binit(&bout, 1, OWRITE); Files = fstr; for(argc = findopt(argc, argv); argc > 0; --argc, ++argv) if(Multi == 'm') { if(Nfiles >= NFILES - 1) die("too many files"); if(mustopen(*argv, &Files[Nfiles++]) == 0) nfdone++; /* suppress printing */ } else { if(pr(*argv)) Bterm(Files->f_f); nfdone++; } if(!nfdone) /* no files named, use stdin */ pr(nulls); /* on GCOS, use current file, if any */ errprint(); /* print accumulated error reports */ exits(error? "error": 0); }