From 2388a159817e1e656515689657c762131b1d4a83 Mon Sep 17 00:00:00 2001 From: csgr Date: Sat, 3 Sep 1994 13:10:09 +0000 Subject: [PATCH] Bring in lptcontrol from 1.1.5.1 Submitted by: Geoff --- usr.sbin/lptcontrol/Makefile | 5 ++ usr.sbin/lptcontrol/lptcontrol.8 | 67 +++++++++++++++++++++++ usr.sbin/lptcontrol/lptcontrol.c | 93 ++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 usr.sbin/lptcontrol/Makefile create mode 100644 usr.sbin/lptcontrol/lptcontrol.8 create mode 100644 usr.sbin/lptcontrol/lptcontrol.c diff --git a/usr.sbin/lptcontrol/Makefile b/usr.sbin/lptcontrol/Makefile new file mode 100644 index 000000000000..110066db369d --- /dev/null +++ b/usr.sbin/lptcontrol/Makefile @@ -0,0 +1,5 @@ +PROG= lptcontrol +CFLAGS+= -Wall +MAN8= lptcontrol.8 + +.include diff --git a/usr.sbin/lptcontrol/lptcontrol.8 b/usr.sbin/lptcontrol/lptcontrol.8 new file mode 100644 index 000000000000..52c34a68a725 --- /dev/null +++ b/usr.sbin/lptcontrol/lptcontrol.8 @@ -0,0 +1,67 @@ +.\" +.\" lptcontrol - a utility for manipulating the lpt driver +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" +.\" $Id: lptcontrol.1,v 1.3 1994/05/22 12:31:54 csgr Exp $ +.TH lptcontrol 1 "March 12, 1994" "" "FreeBSD" + +.SH NAME +lptcontrol - a utility for manipulating the lpt printer driver. +.SH SYNOPSIS +.na +.B lptcontrol +.RB [options] +.SH DESCRIPTION +The +.B lptcontrol +command is used to set either the interrupt-driven or polling mode +of individual lpt devices. When a printer is switched between +interrupt-driven and polled mode, this change will only take effect +the next time the device is opened. +.SH OPTIONS +.TP +The following command line options are supported. +.TP +.B \-i +Turns on interrupt-driven mode. +.TP +.B \-p +Turns on polled mode. +.TP +.BI "\-f\ " file +Sets the mode of the printer device specified by +.I file. +The default value for +.I file +is +.I /dev/lpt0 +.TP +One of +.B \-i +or +.B \-p +must be specified. +.PP +.SH FILES +/dev/lpt? +.PP +.SH BUGS +If the port to be controlled does not have a printer connected and +on-line, then lptcontrol will not be able to open the port in question +for performing ioctl's and will fail. +.sp +Sure to be others. +.SH "SEE ALSO" +.BR lpt (4) , +.BR /sys/i386/conf/GENERICAH +.SH AUTHOR +Geoffrey M. Rehmet diff --git a/usr.sbin/lptcontrol/lptcontrol.c b/usr.sbin/lptcontrol/lptcontrol.c new file mode 100644 index 000000000000..bcb3ad303569 --- /dev/null +++ b/usr.sbin/lptcontrol/lptcontrol.c @@ -0,0 +1,93 @@ +/* + * Copyright (c) 1994 Geoffrey M. Rehmet + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Geoffrey M. Rehmet + * 4. The name of the author may not be used to endorse or promote products + * derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: lptcontrol.c,v 1.2 1994/04/08 22:23:39 csgr Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define DEFAULT_LPT "/dev/lpt0" +#define IRQ_INVALID -1 +#define DO_POLL 0 +#define USE_IRQ 1 + +static char default_printer[] = DEFAULT_LPT; + +static void usage(const char * progname) +{ + fprintf(stderr, "usage: %s -i | -p [-f ]\n", progname); + exit(1); +} + +static void set_interrupt_status(int irq_status, const char * file) +{ + int fd; + + if((fd = open(file, O_WRONLY, 0660)) < 0) { + perror("open"); + exit(1); + } + if(ioctl(fd, LPT_IRQ, &irq_status) < 0) { + perror("ioctl"); + exit(1); + } + close(fd); +} + + +int main (int argc, char * argv[]) +{ + int opt; + int irq_status = -1; + char * file = default_printer; + + while((opt = getopt(argc, argv, "pif:")) != -1) + switch(opt) { + case 'i': irq_status = USE_IRQ; break; + case 'p': irq_status = DO_POLL; break; + case 'f': file = optarg; break; + default : usage(argv[0]); + } + if(irq_status == IRQ_INVALID) usage(argv[0]); + + set_interrupt_status(irq_status, file); + + exit(0); +} + +