Lines Matching full:pp
99 /* these two are set from pp->daemon_user, but only if they are needed */
129 static void openrem(const struct printer *pp);
146 printjob(struct printer *pp) in printjob() argument
157 init(pp); /* set up capabilities */ in printjob()
160 if (open(pp->log_file, O_WRONLY|O_APPEND, LOG_FILE_MODE) < 0) { in printjob()
161 syslog(LOG_ERR, "%s: open(%s): %m", pp->printer, in printjob()
162 pp->log_file); in printjob()
184 if (chdir(pp->spool_dir) < 0) { in printjob()
185 syslog(LOG_ERR, "%s: chdir(%s): %m", pp->printer, in printjob()
186 pp->spool_dir); in printjob()
189 statok = stat(pp->lock_file, &stb); in printjob()
193 lfd = open(pp->lock_file, O_WRONLY|O_CREAT|O_EXLOCK|O_NONBLOCK, in printjob()
198 syslog(LOG_ERR, "%s: open(%s): %m", pp->printer, in printjob()
199 pp->lock_file); in printjob()
207 statok = stat(pp->lock_file, &stb); in printjob()
210 syslog(LOG_ERR, "%s: fcntl(%s): %m", pp->printer, in printjob()
211 pp->lock_file); in printjob()
221 syslog(LOG_ERR, "%s: write(%s): %m", pp->printer, in printjob()
222 pp->lock_file); in printjob()
228 if ((nitems = getq(pp, &queue)) < 0) { in printjob()
229 syslog(LOG_ERR, "%s: can't scan %s", pp->printer, in printjob()
230 pp->spool_dir); in printjob()
237 syslog(LOG_ERR, "%s: fchmod(%s): %m", pp->printer, in printjob()
238 pp->lock_file); in printjob()
243 syslog(LOG_ERR, "%s: mkstemp(%s): %m", pp->printer, in printjob()
248 syslog(LOG_ERR, "%s: fchmod(%s): %m", pp->printer, in printjob()
255 openpr(pp); /* open printer or remote */ in printjob()
272 syslog(LOG_ERR, "%s: write(%s): %m", pp->printer, in printjob()
273 pp->lock_file); in printjob()
274 if (!pp->remote) in printjob()
275 i = printit(pp, q->job_cfname); in printjob()
277 i = sendit(pp, q->job_cfname); in printjob()
294 pp->printer, pp->lock_file); in printjob()
302 syslog(LOG_INFO, "restarting %s", pp->printer); in printjob()
310 pp->printer, of_pid); in printjob()
316 pp->printer, pp->lock_file); in printjob()
317 openpr(pp); /* try to reopen printer */ in printjob()
321 pp->printer, in printjob()
322 pp->remote ? "sent to remote host" : "printed", in printjob()
330 sendmail(pp, logname, FATALERR); in printjob()
338 if ((nitems = getq(pp, &queue)) < 0) { in printjob()
339 syslog(LOG_ERR, "%s: can't scan %s", pp->printer, in printjob()
340 pp->spool_dir); in printjob()
346 if (!pp->no_formfeed && !pp->tof) in printjob()
347 (void) write(ofd, pp->form_feed, in printjob()
348 strlen(pp->form_feed)); in printjob()
349 if (pp->trailer != NULL) /* output trailer */ in printjob()
350 (void) write(ofd, pp->trailer, in printjob()
351 strlen(pp->trailer)); in printjob()
375 printit(struct printer *pp, char *file) in printit() argument
387 syslog(LOG_INFO, "%s: fopen(%s): %m", pp->printer, file); in printit()
395 sprintf(&width[2], "%ld", pp->page_width); in printit()
454 if (pp->restricted) { /* restricted */ in printit()
457 sendmail(pp, line+1, bombed); in printit()
499 if (!pp->no_header && !pp->header_last) in printit()
500 banner(pp, line+1, jobname); in printit()
533 pp->printer, file); in printit()
537 pp->printer, line[0], &line[1]); in printit()
540 i = print(pp, line[0], line+1); in printit()
552 sendmail(pp, logname, bombed); in printit()
571 if (!pp->no_header && pp->header_last) in printit()
572 banner(pp, line+1, jobname); in printit()
577 sendmail(pp, line+1, bombed); in printit()
604 print(struct printer *pp, int format, char *file) in print() argument
616 wait4data(pp, file); in print()
620 pp->printer, file, format); in print()
636 if (!pp->no_formfeed && !pp->tof) { /* start on a fresh page */ in print()
637 (void) write(ofd, pp->form_feed, strlen(pp->form_feed)); in print()
638 pp->tof = 1; in print()
640 if (pp->filters[LPF_INPUT] == NULL in print()
642 pp->tof = 0; in print()
653 if (pp->filters[LPF_INPUT] == NULL) { /* use output filter */ in print()
669 if ((prchild = dofork(pp, DORETURN)) == 0) { /* child */ in print()
690 prog = pp->filters[LPF_INPUT]; in print()
708 prog = pp->filters[LPF_INPUT]; in print()
716 prog = pp->filters[LPF_FORTRAN]; in print()
727 pp->printer); in print()
739 prog = (format == 't') ? pp->filters[LPF_TROFF] in print()
740 : ((format == 'n') ? pp->filters[LPF_DITROFF] in print()
741 : pp->filters[LPF_DVI]); in print()
747 prog = pp->filters[LPF_CIFPLOT]; in print()
753 prog = pp->filters[LPF_GRAPH]; in print()
759 prog = pp->filters[LPF_RASTER]; in print()
767 pp->printer, format); in print()
774 pp->printer, format); in print()
785 av[n++] = pp->acct_file; in print()
796 pp->printer); in print()
801 pp->printer, of_pid, WEXITSTATUS(wstatus), in print()
808 if ((child = dofork(pp, DORETURN)) == 0) { /* child */ in print()
819 syslog(LOG_ERR, "%s: cannot execv(%s): %m", pp->printer, in print()
834 pp->printer, prog); in print()
848 pp->tof = 0; in print()
859 pp->printer, format, WTERMSIG(wstatus)); in print()
864 pp->tof = 1; in print()
872 pp->printer, format, retcode); in print()
883 sendit(struct printer *pp, char *file) in sendit() argument
933 if (pp->restricted) { /* restricted */ in sendit()
935 sendmail(pp, line+1, NOACCT); in sendit()
950 switch (sendfile(pp, '\3', last+1, *last, dfcopies)) { in sendit()
959 sendmail(pp, logname, ACCESS); in sendit()
966 if (err == OK && sendfile(pp, '\2', file, '\0', 1) > 0) { in sendit()
990 sendfile(struct printer *pp, int type, char *file, char format, int copyreq) in sendfile() argument
999 wait4data(pp, file); in sendfile()
1004 pp->printer, file); in sendfile()
1010 pp->printer, file); in sendfile()
1051 if (pp->filters[LPF_INPUT]) { in sendfile()
1052 filtcmd = pp->filters[LPF_INPUT]; in sendfile()
1067 av[++narg] = pp->acct_file; in sendfile()
1069 } else if (pp->filters[LPF_OUTPUT]) { in sendfile()
1070 filtcmd = pp->filters[LPF_OUTPUT]; in sendfile()
1089 syslog(LOG_ERR, "%s: mkstemp(%s): %m", pp->printer, in sendfile()
1094 filtstat = execfilter(pp, filtcmd, av, sfd, tfd); in sendfile()
1109 pp->printer, format, filtstat); in sendfile()
1117 pp->printer, tfile); in sendfile()
1139 (resp = response(pp)) < 0 || resp == '\1') { in sendfile()
1145 pstatus(pp, in sendfile()
1149 pp->printer, pp->remote_host); in sendfile()
1153 pstatus(pp, "sending to %s", pp->remote_host); in sendfile()
1159 trstat_init(pp, file, job_dfcnt); in sendfile()
1173 syslog(LOG_INFO, "%s: %s: changed size", pp->printer, file); in sendfile()
1179 if (write(pfd, "", 1) != 1 || response(pp)) { in sendfile()
1184 trstat_write(pp, TR_SENDING, stb.st_size, logname, in sendfile()
1185 pp->remote_host, origin_host); in sendfile()
1202 if (pp->resend_copies && (copycnt < copyreq)) { in sendfile()
1249 wait4data(struct printer *pp, const char *dfile) in wait4data() argument
1275 pstatus(pp, "Waiting for data file from remote host"); in wait4data()
1282 pp->printer, dfile); in wait4data()
1302 pstatus(pp, "Waiting for data file from remote host"); in wait4data()
1317 pp->printer, dfile); in wait4data()
1321 pp->printer, dfile, (unsigned long)amtslept); in wait4data()
1325 pp->printer, (unsigned long)amtslept, dfile); in wait4data()
1339 execfilter(struct printer *pp, char *f_cmd, char *f_av[], int infd, int outfd) in execfilter() argument
1346 fpid = dofork(pp, DORETURN); in execfilter()
1363 pp->printer, f_cmd); in execfilter()
1412 syslog(LOG_ERR, "%s: cannot execv(%s): %m", pp->printer, f_cmd); in execfilter()
1423 response(const struct printer *pp) in response() argument
1428 syslog(LOG_INFO, "%s: lost connection", pp->printer); in response()
1438 banner(struct printer *pp, char *name1, char *name2) in banner() argument
1443 if (!pp->no_formfeed && !pp->tof) in banner()
1444 (void) write(ofd, pp->form_feed, strlen(pp->form_feed)); in banner()
1445 if (pp->short_banner) { /* short banner only */ in banner()
1458 scan_out(pp, ofd, name1, '\0'); in banner()
1460 scan_out(pp, ofd, name2, '\0'); in banner()
1463 scan_out(pp, ofd, class, '\0'); in banner()
1471 if (!pp->no_formfeed) in banner()
1472 (void) write(ofd, pp->form_feed, strlen(pp->form_feed)); in banner()
1473 pp->tof = 1; in banner()
1491 scan_out(struct printer *pp, int scfd, char *scsp, int dlm) in scan_out() argument
1509 nchrs++ >= pp->page_width/(WIDTH+1)-1) in scan_out()
1547 sendmail(struct printer *pp, char *userid, int bombed) in sendmail() argument
1556 if ((s = dofork(pp, DORETURN)) == 0) { /* child */ in sendmail()
1569 printf("Subject: %s printer job \"%s\"\n", pp->printer, in sendmail()
1617 userid, *jobname ? jobname : "<unknown>", pp->printer, cp); in sendmail()
1624 dofork(const struct printer *pp, int action) in dofork() argument
1632 pwd = getpwuid(pp->daemon_user); in dofork()
1635 pp->printer, pp->daemon_user); in dofork()
1656 pp->printer, daemon_uname, daemon_defgid); in dofork()
1662 pp->printer, daemon_defgid); in dofork()
1665 fail = setuid(pp->daemon_user); in dofork()
1668 pp->printer, pp->daemon_user); in dofork()
1683 pp->printer); in dofork()
1686 syslog(LOG_ERR, "%s: dofork(): failure in fork", pp->printer); in dofork()
1720 init(struct printer *pp) in init() argument
1724 sprintf(&width[2], "%ld", pp->page_width); in init()
1725 sprintf(&length[2], "%ld", pp->page_length); in init()
1726 sprintf(&pxwidth[2], "%ld", pp->page_pwidth); in init()
1727 sprintf(&pxlength[2], "%ld", pp->page_plength); in init()
1728 if ((s = checkremote(pp)) != NULL) { in init()
1737 struct printer myprinter, *pp = &myprinter; in startprinting() local
1740 init_printer(pp); in startprinting()
1741 status = getprintcap(printer, pp); in startprinting()
1750 fatal(pp, "potential reference loop detected in printcap file"); in startprinting()
1754 printjob(pp); in startprinting()
1761 openpr(const struct printer *pp) in openpr() argument
1766 if (pp->remote) { in openpr()
1767 openrem(pp); in openpr()
1779 } else if (*pp->lp) { in openpr()
1780 if (strchr(pp->lp, '@') != NULL) in openpr()
1781 opennet(pp); in openpr()
1783 opentty(pp); in openpr()
1786 pp->printer); in openpr()
1793 if (pp->filters[LPF_OUTPUT] && !pp->filters[LPF_INPUT] && !of_pid) { in openpr()
1795 if (pp->remote) { in openpr()
1799 if ((of_pid = dofork(pp, DOABORT)) == 0) { /* child */ in openpr()
1802 dup2(pp->remote ? tfd : pfd, STDOUT_FILENO); in openpr()
1805 if ((cp = strrchr(pp->filters[LPF_OUTPUT], '/')) == NULL) in openpr()
1806 cp = pp->filters[LPF_OUTPUT]; in openpr()
1809 execl(pp->filters[LPF_OUTPUT], cp, width, length, in openpr()
1811 syslog(LOG_ERR, "%s: execl(%s): %m", pp->printer, in openpr()
1812 pp->filters[LPF_OUTPUT]); in openpr()
1828 opennet(const struct printer *pp) in opennet() argument
1836 port = strtoul(pp->lp, &ep, 0); in opennet()
1838 syslog(LOG_ERR, "%s: bad port number: %s", pp->printer, in opennet()
1839 pp->lp); in opennet()
1847 alarm(pp->conn_timeout); in opennet()
1848 pfd = getport(pp, ep, port); in opennet()
1864 pstatus(pp, "waiting for %s to come up", in opennet()
1865 pp->lp); in opennet()
1867 pstatus(pp, in opennet()
1869 pp->lp); in opennet()
1873 pstatus(pp, "sending to %s port %lu", ep, port); in opennet()
1880 opentty(const struct printer *pp) in opentty() argument
1885 pfd = open(pp->lp, pp->rw ? O_RDWR : O_WRONLY); in opentty()
1891 syslog(LOG_ERR, "%s: %m", pp->lp); in opentty()
1895 pstatus(pp, in opentty()
1897 pp->printer); in opentty()
1901 setty(pp); in opentty()
1902 pstatus(pp, "%s is ready and printing", pp->printer); in opentty()
1909 openrem(const struct printer *pp) in openrem() argument
1918 alarm(pp->conn_timeout); in openrem()
1919 pfd = getport(pp, pp->remote_host, 0); in openrem()
1923 if ((writel(pfd, "\2", pp->remote_queue, "\n", in openrem()
1925 == 2 + strlen(pp->remote_queue)) in openrem()
1926 && (resp = response(pp)) == 0) in openrem()
1932 pstatus(pp, "waiting for %s to come up", in openrem()
1933 pp->remote_host); in openrem()
1935 pstatus(pp, in openrem()
1937 pp->remote_host); in openrem()
1943 pstatus(pp, "sending to %s", pp->remote_host); in openrem()
1950 setty(const struct printer *pp) in setty() argument
1955 syslog(LOG_ERR, "%s: ioctl(TIOCEXCL): %m", pp->printer); in setty()
1959 syslog(LOG_ERR, "%s: tcgetattr: %m", pp->printer); in setty()
1962 if (pp->baud_rate > 0) in setty()
1963 cfsetspeed(&ttybuf, pp->baud_rate); in setty()
1964 if (pp->mode_set) { in setty()
1965 char *s = strdup(pp->mode_set), *tmp; in setty()
1971 if (pp->mode_set != 0 || pp->baud_rate > 0) { in setty()
1973 syslog(LOG_ERR, "%s: tcsetattr: %m", pp->printer); in setty()
1981 pstatus(const struct printer *pp, const char *msg, ...) in pstatus() argument
1989 fd = open(pp->status_file, O_WRONLY|O_CREAT|O_EXLOCK, STAT_FILE_MODE); in pstatus()
1991 syslog(LOG_ERR, "%s: open(%s): %m", pp->printer, in pstatus()
1992 pp->status_file); in pstatus()