summaryrefslogtreecommitdiff
path: root/usr/src/cmd/print/bsd-sysv-commands/common.c
diff options
context:
space:
mode:
authorjacobs <none@none>2008-08-01 11:46:18 -0700
committerjacobs <none@none>2008-08-01 11:46:18 -0700
commitc1ecd8b9404ee0d96d93f02e82c441b9bb149a3d (patch)
tree6cf34a99e9a8f197738703c42e7cb1fecfce7ace /usr/src/cmd/print/bsd-sysv-commands/common.c
parent93ea613c68b755e9de237ea85e45b3acc3a797d2 (diff)
downloadillumos-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.c36
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)
{