diff options
author | jacobs <none@none> | 2008-08-01 11:46:18 -0700 |
---|---|---|
committer | jacobs <none@none> | 2008-08-01 11:46:18 -0700 |
commit | c1ecd8b9404ee0d96d93f02e82c441b9bb149a3d (patch) | |
tree | 6cf34a99e9a8f197738703c42e7cb1fecfce7ace /usr/src/cmd/print/bsd-sysv-commands/common.c | |
parent | 93ea613c68b755e9de237ea85e45b3acc3a797d2 (diff) | |
download | illumos-joyent-c1ecd8b9404ee0d96d93f02e82c441b9bb149a3d.tar.gz |
6591929 lp prints postscript source from standard input
6720404 libprint contains a bunch of dead code
6723892 lpstat cores with the queues created with the "-s ipp://" or "-s lpd://" options
6724379 Crash when printing use firefox 3 in papiJobStreamOpen
6727979 printing fails due memory corruption in psm-lpsched.so
6729885 many lpd-port processes let remote printing nearly hang
6731181 pmodes complains about /var/cache/cups in sfw build
6732289 print-service(1m) should know when it's launched from the desktop.
--HG--
rename : usr/src/lib/print/libprint/common/job.c => deleted_files/usr/src/lib/print/libprint/common/job.c
rename : usr/src/lib/print/libprint/common/job.h => deleted_files/usr/src/lib/print/libprint/common/job.h
rename : usr/src/lib/print/libprint/common/misc.c => deleted_files/usr/src/lib/print/libprint/common/misc.c
rename : usr/src/lib/print/libprint/common/misc.h => deleted_files/usr/src/lib/print/libprint/common/misc.h
rename : usr/src/lib/print/libprint/common/network.c => deleted_files/usr/src/lib/print/libprint/common/network.c
rename : usr/src/lib/print/libprint/common/network.h => deleted_files/usr/src/lib/print/libprint/common/network.h
Diffstat (limited to 'usr/src/cmd/print/bsd-sysv-commands/common.c')
-rw-r--r-- | usr/src/cmd/print/bsd-sysv-commands/common.c | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/usr/src/cmd/print/bsd-sysv-commands/common.c b/usr/src/cmd/print/bsd-sysv-commands/common.c index fbc68459f8..92a629f776 100644 --- a/usr/src/cmd/print/bsd-sysv-commands/common.c +++ b/usr/src/cmd/print/bsd-sysv-commands/common.c @@ -400,8 +400,8 @@ strsplit(char *string, const char *seperators) } papi_status_t -jobSubmitSTDIN(papi_service_t svc, char *printer, papi_attribute_t **list, - papi_job_t *job) +jobSubmitSTDIN(papi_service_t svc, char *printer, char *prefetch, int len, + papi_attribute_t **list, papi_job_t *job) { papi_status_t status; papi_stream_t stream = NULL; @@ -409,6 +409,10 @@ jobSubmitSTDIN(papi_service_t svc, char *printer, papi_attribute_t **list, char buf[BUFSIZ]; status = papiJobStreamOpen(svc, printer, list, NULL, &stream); + + if (len > 0) + status = papiJobStreamWrite(svc, stream, prefetch, len); + while ((status == PAPI_OK) && ((rc = read(0, buf, sizeof (buf))) > 0)) status = papiJobStreamWrite(svc, stream, buf, rc); @@ -426,19 +430,12 @@ jobSubmitSTDIN(papi_service_t svc, char *printer, papi_attribute_t **list, #define PS_MAGIC "%!" #define PC_PS_MAGIC "^D%!" int -is_postscript(const char *file) +is_postscript_stream(int fd, char *buf, int *len) { - char buf[3]; - int fd; - - if ((fd = open(file, O_RDONLY)) < 0) - return (-1); - - if (read(fd, buf, sizeof (buf)) < 0) { + if ((*len = read(fd, buf, *len)) < 0) { close(fd); return (-1); } - close(fd); if ((strncmp(buf, PS_MAGIC, sizeof (PS_MAGIC) - 1) == 0) || (strncmp(buf, PC_PS_MAGIC, sizeof (PC_PS_MAGIC) - 1) == 0)) @@ -447,6 +444,23 @@ is_postscript(const char *file) return (0); } +int +is_postscript(const char *file) +{ + int rc = -1; + int fd; + + if ((fd = open(file, O_RDONLY)) >= 0) { + char buf[3]; + int len = sizeof (buf); + + rc = is_postscript_stream(fd, buf, &len); + close(fd); + } + + return (rc); +} + static char ** all_list(papi_service_t svc) { |