/*
- * "$Id: parallel.c 6591 2007-06-21 20:35:28Z 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-2011 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
- * property of Easy Software Products and are protected by Federal
- * copyright law. Distribution and use rights are outlined in the file
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
* "LICENSE" which should have been included with this file. If this
- * file is missing or damaged please contact Easy Software Products
- * at:
- *
- * Attn: CUPS Licensing Information
- * Easy Software Products
- * 44141 Airport View Drive, Suite 204
- * Hollywood, Maryland 20636 USA
- *
- * Voice: (301) 373-9600
- * EMail: cups-info@cups.org
- * WWW: http://www.cups.org
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*
* This file is subject to the Apple OS-Developed Software exception.
*
*/
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)
{
- fprintf(stderr, _("Usage: %s job-id user title copies options [file]\n"),
- argv[0]);
+ _cupsLangPrintf(stderr,
+ _("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.
*/
- fputs(_("INFO: Unable to contact printer, queuing on next "
- "printer in class...\n"), stderr);
+ _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)
{
- fputs(_("INFO: Printer busy; will retry in 30 seconds...\n"), stderr);
+ _cupsLangPrintFilter(stderr, "INFO",
+ _("Printer busy; will retry in 30 seconds."));
sleep(30);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
{
- fputs(_("INFO: Printer not connected; will retry in 30 seconds...\n"),
- stderr);
+ _cupsLangPrintFilter(stderr, "INFO",
+ _("Printer not connected; will retry in 30 "
+ "seconds."));
sleep(30);
}
else
{
- fprintf(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)
- fprintf(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);
}
char device[255], /* Device filename */
basedevice[255], /* Base device filename for ports */
device_id[1024], /* Device ID string */
- make_model[1024]; /* Make and model */
+ make_model[1024], /* Make and model */
+ info[1024], /* Info string */
+ uri[1024]; /* Device URI */
if (!access("/dev/parallel/", 0))
* Now grab the IEEE 1284 device ID string...
*/
+ snprintf(uri, sizeof(uri), "parallel:%s", device);
+
if (!backendGetDeviceID(fd, device_id, sizeof(device_id),
make_model, sizeof(make_model),
- NULL, NULL, 0))
- printf("direct parallel:%s \"%s\" \"%s LPT #%d\" \"%s\"\n", device,
- make_model, make_model, i + 1, device_id);
+ NULL, uri, sizeof(uri)))
+ {
+ snprintf(info, sizeof(info), "%s LPT #%d", make_model, i + 1);
+ cupsBackendReport("direct", uri, make_model, info, device_id, NULL);
+ }
else
- printf("direct parallel:%s \"Unknown\" \"LPT #%d\"\n", device, i + 1);
+ {
+ snprintf(info, sizeof(info), "LPT #%d", i + 1);
+ cupsBackendReport("direct", uri, NULL, info, NULL, NULL);
+ }
close(fd);
}
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
* '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))
- {
- fputs(_("WARNING: Failed to read side-channel request!\n"), stderr);
- 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 6591 2007-06-21 20:35:28Z mike $".
+ * End of "$Id: parallel.c 7810 2008-07-29 01:11:15Z mike $".
*/