Add -e option and change unit to device access in lptcontrol.8
Change unit to device access in lptcontrol.c. Now usage is lptcontrol -i | -p | -e [-d /dev/lpt?]
This commit is contained in:
parent
9576e3690f
commit
3876b69238
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=43993
@ -11,7 +11,7 @@
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\"
|
||||
.\"
|
||||
.\" $Id: lptcontrol.8,v 1.6 1997/09/25 06:36:28 charnier Exp $
|
||||
.\" $Id: lptcontrol.8,v 1.7 1998/03/23 08:23:49 charnier Exp $
|
||||
.Dd September 3, 1994
|
||||
.Dt LPTCONTROL 8
|
||||
.Os FreeBSD 2
|
||||
@ -23,16 +23,21 @@
|
||||
.Cm -i
|
||||
|
|
||||
.Cm -p
|
||||
.Op Fl u Ar unit no
|
||||
|
|
||||
.Cm -e
|
||||
.Op Fl d Ar device
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
command is used to set either the interrupt-driven or polling mode
|
||||
command is used to set either the interrupt-driven, extended or polling mode
|
||||
of individual
|
||||
.Xr lpt 4
|
||||
devices. When a printer is switched between
|
||||
interrupt-driven and polled mode, this change will only take effect
|
||||
devices. When a printer is switched from
|
||||
a mode to another, this change will only take effect
|
||||
the next time the device is opened.
|
||||
.Pp
|
||||
Extended mode is anything the parallel port interface can support. For an
|
||||
ECP/ISA parallel port, it may be FIFO+DMA or ECP.
|
||||
.Sh OPTIONS
|
||||
.TP
|
||||
The following command line options are supported:
|
||||
@ -41,21 +46,23 @@ The following command line options are supported:
|
||||
Turn on interrupt-driven mode.
|
||||
.It Fl p
|
||||
Turn on polled mode.
|
||||
.It Fl u Ar n
|
||||
.It Fl e
|
||||
Turn on extended mode.
|
||||
.It Fl d Ar dev
|
||||
Set the mode of the printer device specified by
|
||||
.Em n .
|
||||
.Em dev .
|
||||
The default value for
|
||||
.Em n
|
||||
.Em dev
|
||||
is
|
||||
.Em 0
|
||||
(ie.
|
||||
.Pa /dev/lpt0 )
|
||||
.Em /dev/lpt0
|
||||
.El
|
||||
.Pp
|
||||
One of
|
||||
.Fl i
|
||||
or
|
||||
,
|
||||
.Fl p
|
||||
or
|
||||
.Fl e
|
||||
must be specified.
|
||||
.Pp
|
||||
.Sh FILES
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static const char rcsid[] =
|
||||
"$Id: lptcontrol.c,v 1.6 1997/09/25 06:36:29 charnier Exp $";
|
||||
"$Id: lptcontrol.c,v 1.7 1999/01/10 12:04:56 nsouch Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <ctype.h>
|
||||
@ -49,7 +49,7 @@ static const char rcsid[] =
|
||||
|
||||
|
||||
#define PATH_LPCTL _PATH_DEV "lpctl"
|
||||
#define DEFAULT_UNIT "0"
|
||||
#define DEFAULT_DEVICE "/dev/lpt0"
|
||||
#define IRQ_INVALID -1
|
||||
#define DO_POLL 0
|
||||
#define USE_IRQ 1
|
||||
@ -58,7 +58,7 @@ static const char rcsid[] =
|
||||
|
||||
static void usage()
|
||||
{
|
||||
fprintf(stderr, "usage: lptcontrol -i | -p | -s | -e [-u <unit no.>]\n");
|
||||
fprintf(stderr, "usage: lptcontrol -i | -p | -s | -e [-d device]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -73,40 +73,25 @@ static void set_interrupt_status(int irq_status, const char * file)
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static char * dev_file(char unit_no)
|
||||
{
|
||||
static char devname[_POSIX_PATH_MAX+1];
|
||||
int len;
|
||||
|
||||
strncpy(devname, PATH_LPCTL, _POSIX_PATH_MAX);
|
||||
devname[len = strlen(devname)] = unit_no;
|
||||
devname[++len] = '\0';
|
||||
|
||||
return(devname);
|
||||
}
|
||||
|
||||
int main (int argc, char * argv[])
|
||||
{
|
||||
int opt;
|
||||
int irq_status = IRQ_INVALID;
|
||||
char * unit = DEFAULT_UNIT;
|
||||
char *device = DEFAULT_DEVICE;
|
||||
|
||||
while((opt = getopt(argc, argv, "ipesu:")) != -1)
|
||||
while((opt = getopt(argc, argv, "ipesd:")) != -1)
|
||||
switch(opt) {
|
||||
case 'i': irq_status = USE_IRQ; break;
|
||||
case 'p': irq_status = DO_POLL; break;
|
||||
case 'e': irq_status = USE_EXT_MODE; break;
|
||||
case 's': irq_status = USE_STD_MODE; break;
|
||||
case 'u': unit = optarg;
|
||||
if(!isdigit(*unit))
|
||||
usage();
|
||||
break;
|
||||
case 'd': device = optarg; break;
|
||||
default : usage();
|
||||
}
|
||||
if(irq_status == IRQ_INVALID)
|
||||
usage();
|
||||
|
||||
set_interrupt_status(irq_status, dev_file(*unit));
|
||||
set_interrupt_status(irq_status, device);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user