Print options only supported by device, back out printing options separately
Pointed-by: bde
This commit is contained in:
parent
2553c04ce2
commit
09dd94d856
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=59838
@ -7,9 +7,9 @@
|
||||
.Nd control an special tty device.
|
||||
.Sh SYNOPSIS
|
||||
.Nm comcontrol
|
||||
.Ar special_device | -
|
||||
.Op dtrwait Op number
|
||||
.Op drainwait Op number
|
||||
.Ar special_device | Fl
|
||||
.Op dtrwait Ar number
|
||||
.Op drainwait Ar number
|
||||
.Sh DESCRIPTION
|
||||
.Nm Comcontrol
|
||||
is used to examine and modify some of the special characteristics
|
||||
@ -22,8 +22,6 @@ Only the superuser can change the settings.
|
||||
.Pp
|
||||
The following options are available:
|
||||
.Bl -tag -width indent
|
||||
.It Cm dtrwait
|
||||
Print current DTR wait time.
|
||||
.It Cm dtrwait Ar number
|
||||
Set the time to wait after dropping DTR
|
||||
to the given number.
|
||||
@ -31,8 +29,6 @@ The units are hundredths of a second.
|
||||
The default is 300 hundredths, i.e., 3 seconds.
|
||||
This option needed mainly to set proper recover time after
|
||||
modem reset.
|
||||
.It Cm drainwait
|
||||
Print current output drain timeout.
|
||||
.It Cm drainwait Ar number
|
||||
Set the time to wait for output drain
|
||||
to the given number.
|
||||
|
@ -33,6 +33,7 @@ static const char rcsid[] =
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -44,7 +45,7 @@ static void
|
||||
usage()
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: comcontrol <filename|-> [dtrwait [<n>]] [drainwait [<n>]]\n");
|
||||
"usage: comcontrol <filename>|- [dtrwait <n>] [drainwait <n>]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -53,9 +54,8 @@ main(int argc, char *argv[])
|
||||
{
|
||||
int fd;
|
||||
int res = 0;
|
||||
int print_dtrwait = 1, print_drainwait = 1;
|
||||
int dtrwait = -1, drainwait = -1;
|
||||
int temp;
|
||||
int output = 0;
|
||||
|
||||
if (argc < 2)
|
||||
usage();
|
||||
@ -69,50 +69,40 @@ main(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (argc == 2) {
|
||||
if (ioctl(fd, TIOCMGDTRWAIT, &dtrwait) < 0) {
|
||||
res = 1;
|
||||
warn("TIOCMGDTRWAIT");
|
||||
print_dtrwait = 0;
|
||||
if (errno != ENOTTY) {
|
||||
res = 1;
|
||||
warn("TIOCMGDTRWAIT");
|
||||
}
|
||||
}
|
||||
if (ioctl(fd, TIOCGDRAINWAIT, &drainwait) < 0) {
|
||||
res = 1;
|
||||
warn("TIOCGDRAINWAIT");
|
||||
print_drainwait = 0;
|
||||
if (errno != ENOTTY) {
|
||||
res = 1;
|
||||
warn("TIOCGDRAINWAIT");
|
||||
}
|
||||
}
|
||||
printf("dtrwait %d drainwait %d ", dtrwait, drainwait);
|
||||
output = 1;
|
||||
if (print_dtrwait)
|
||||
printf("dtrwait %d ", dtrwait);
|
||||
if (print_drainwait)
|
||||
printf("drainwait %d ", drainwait);
|
||||
printf("\n");
|
||||
} else {
|
||||
while (argv[2] != NULL) {
|
||||
if (!strcmp(argv[2],"dtrwait")) {
|
||||
if (argv[3] == NULL || !isdigit(argv[3][0])) {
|
||||
if (ioctl(fd, TIOCMGDTRWAIT, &temp) < 0) {
|
||||
res = 1;
|
||||
temp = -1;
|
||||
warn("TIOCMGDTRWAIT");
|
||||
}
|
||||
printf("dtrwait %d ", temp);
|
||||
output = 1;
|
||||
argv++;
|
||||
continue;
|
||||
}
|
||||
if (dtrwait >= 0)
|
||||
usage();
|
||||
if (argv[3] == NULL || !isdigit(argv[3][0]))
|
||||
usage();
|
||||
dtrwait = atoi(argv[3]);
|
||||
argv += 2;
|
||||
} else if (!strcmp(argv[2],"drainwait")) {
|
||||
if (argv[3] == NULL || !isdigit(argv[3][0])) {
|
||||
if (ioctl(fd, TIOCGDRAINWAIT, &temp) < 0) {
|
||||
res = 1;
|
||||
temp = -1;
|
||||
warn("TIOCGDRAINWAIT");
|
||||
}
|
||||
printf("drainwait %d ", temp);
|
||||
argv++;
|
||||
output = 1;
|
||||
continue;
|
||||
}
|
||||
if (drainwait >= 0)
|
||||
usage();
|
||||
if (argv[3] == NULL || !isdigit(argv[3][0]))
|
||||
usage();
|
||||
drainwait = atoi(argv[3]);
|
||||
argv += 2;
|
||||
} else
|
||||
@ -133,7 +123,5 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
close(fd);
|
||||
if (output)
|
||||
printf("\n");
|
||||
return res;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user