/*
- * "$Id: parallel.c 7019 2007-10-10 22:48:52Z mike $"
+ * "$Id: parallel.c 7810 2008-07-29 01:11:15Z mike $"
*
- * Parallel port backend for the Common UNIX Printing System (CUPS).
+ * Parallel port backend for CUPS.
*
- * Copyright 2007 by Apple Inc.
+ * Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
*/
static void list_devices(void);
-static void side_cb(int print_fd, int device_fd, int use_bc);
+static int side_cb(int print_fd, int device_fd, int snmp_fd,
+ http_addr_t *addr, int use_bc);
/*
device_fd, /* Parallel device */
use_bc; /* Read back-channel data? */
int copies; /* Number of copies to print */
- size_t tbytes; /* Total number of bytes written */
+ ssize_t tbytes; /* Total number of bytes written */
struct termios opts; /* Parallel port options */
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
else if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
- _("Usage: %s job-id user title copies options [file]\n"),
+ _("Usage: %s job-id user title copies options [file]"),
argv[0]);
return (CUPS_BACKEND_FAILED);
}
if ((print_fd = open(argv[6], O_RDONLY)) < 0)
{
- perror("ERROR: unable to open print file");
+ _cupsLangPrintError("ERROR", _("Unable to open print file"));
return (CUPS_BACKEND_FAILED);
}
* available printer in the class.
*/
- _cupsLangPuts(stderr,
- _("INFO: Unable to contact printer, queuing on next "
- "printer in class...\n"));
+ _cupsLangPrintFilter(stderr, "INFO",
+ _("Unable to contact printer, queuing on next "
+ "printer in class."));
/*
* Sleep 5 seconds to keep the job from requeuing too rapidly...
if (errno == EBUSY)
{
- _cupsLangPuts(stderr,
- _("INFO: Printer busy; will retry in 30 seconds...\n"));
+ _cupsLangPrintFilter(stderr, "INFO",
+ _("Printer busy; will retry in 30 seconds."));
sleep(30);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
{
- _cupsLangPuts(stderr,
- _("INFO: Printer not connected; will retry in 30 "
- "seconds...\n"));
+ _cupsLangPrintFilter(stderr, "INFO",
+ _("Printer not connected; will retry in 30 "
+ "seconds."));
sleep(30);
}
else
{
- _cupsLangPrintf(stderr,
- _("ERROR: Unable to open device file \"%s\": %s\n"),
- resource, strerror(errno));
+ _cupsLangPrintError("ERROR", _("Unable to open device file"));
return (CUPS_BACKEND_FAILED);
}
}
lseek(print_fd, 0, SEEK_SET);
}
- tbytes = backendRunLoop(print_fd, device_fd, use_bc, side_cb);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
if (print_fd != 0 && tbytes >= 0)
- _cupsLangPrintf(stderr,
-#ifdef HAVE_LONG_LONG
- _("INFO: Sent print file, %lld bytes...\n"),
-#else
- _("INFO: Sent print file, %ld bytes...\n"),
-#endif /* HAVE_LONG_LONG */
- CUPS_LLCAST tbytes);
+ _cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
}
/*
if (print_fd != 0)
close(print_fd);
- return (tbytes < 0 ? CUPS_BACKEND_FAILED : CUPS_BACKEND_OK);
+ return (CUPS_BACKEND_OK);
}
basedevice[255], /* Base device filename for ports */
device_id[1024], /* Device ID string */
make_model[1024], /* Make and model */
+ info[1024], /* Info string */
uri[1024]; /* Device URI */
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
make_model, sizeof(make_model),
NULL, uri, sizeof(uri)))
- printf("direct %s \"%s\" \"%s LPT #%d\" \"%s\"\n", uri,
- make_model, make_model, i + 1, device_id);
+ {
+ snprintf(info, sizeof(info), "%s LPT #%d", make_model, i + 1);
+ cupsBackendReport("direct", uri, make_model, info, device_id, NULL);
+ }
else
- printf("direct %s \"Unknown\" \"LPT #%d\"\n", uri, i + 1);
+ {
+ snprintf(info, sizeof(info), "LPT #%d", i + 1);
+ cupsBackendReport("direct", uri, NULL, info, NULL, NULL);
+ }
close(fd);
}
* 'side_cb()' - Handle side-channel requests...
*/
-static void
-side_cb(int print_fd, /* I - Print file */
- int device_fd, /* I - Device file */
- int use_bc) /* I - Using back-channel? */
+static int /* O - 0 on success, -1 on error */
+side_cb(int print_fd, /* I - Print file */
+ int device_fd, /* I - Device file */
+ int snmp_fd, /* I - SNMP socket (unused) */
+ http_addr_t *addr, /* I - Device address (unused) */
+ int use_bc) /* I - Using back-channel? */
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
int datalen; /* Request/response data size */
+ (void)snmp_fd;
+ (void)addr;
+
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
- {
- _cupsLangPuts(stderr, _("WARNING: Failed to read side-channel request!\n"));
- return;
- }
+ return (-1);
switch (command)
{
break;
case CUPS_SC_CMD_GET_BIDI :
+ status = CUPS_SC_STATUS_OK;
data[0] = use_bc;
datalen = 1;
break;
break;
}
- cupsSideChannelWrite(command, status, data, datalen, 1.0);
+ return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
}
/*
- * End of "$Id: parallel.c 7019 2007-10-10 22:48:52Z mike $".
+ * End of "$Id: parallel.c 7810 2008-07-29 01:11:15Z mike $".
*/