summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sicontrol/sicontrol.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sicontrol/sicontrol.c')
-rw-r--r--usr.sbin/sicontrol/sicontrol.c201
1 files changed, 101 insertions, 100 deletions
diff --git a/usr.sbin/sicontrol/sicontrol.c b/usr.sbin/sicontrol/sicontrol.c
index 2feec1c..eb93819 100644
--- a/usr.sbin/sicontrol/sicontrol.c
+++ b/usr.sbin/sicontrol/sicontrol.c
@@ -29,21 +29,25 @@
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
- *
- * $Id$
*/
-#include <stdio.h>
+#ifndef lint
+static const char rcsid[] =
+ "$Id$";
+#endif /* not lint */
+
#include <ctype.h>
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/device.h>
#include <sys/tty.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdlib.h>
#include <machine/si.h>
@@ -51,52 +55,64 @@ struct lv {
char *lv_name;
int lv_bit;
} lv[] = {
- "entry", DBG_ENTRY,
- "open", DBG_OPEN,
- "close", DBG_CLOSE,
- "read", DBG_READ,
- "write", DBG_WRITE,
- "param", DBG_PARAM,
- "modem", DBG_MODEM,
- "select", DBG_SELECT,
- "optim", DBG_OPTIM,
- "intr", DBG_INTR,
- "start", DBG_START,
- "lstart", DBG_LSTART,
- "ioctl", DBG_IOCTL,
- "fail", DBG_FAIL,
- "autoboot", DBG_AUTOBOOT,
- "download", DBG_DOWNLOAD,
- "drain", DBG_DRAIN,
- "poll", DBG_POLL,
- 0, 0
+ {"entry", DBG_ENTRY},
+ {"open", DBG_OPEN},
+ {"close", DBG_CLOSE},
+ {"read", DBG_READ},
+ {"write", DBG_WRITE},
+ {"param", DBG_PARAM},
+ {"modem", DBG_MODEM},
+ {"select", DBG_SELECT},
+ {"optim", DBG_OPTIM},
+ {"intr", DBG_INTR},
+ {"start", DBG_START},
+ {"lstart", DBG_LSTART},
+ {"ioctl", DBG_IOCTL},
+ {"fail", DBG_FAIL},
+ {"autoboot", DBG_AUTOBOOT},
+ {"download", DBG_DOWNLOAD},
+ {"drain", DBG_DRAIN},
+ {"poll", DBG_POLL},
+ {0, 0}
};
static int alldev = 0;
-int getnum(char *str);
-int debug(), rxint(), txint();
-int mstate(), nport();
-int ccb_stat(), tty_stat();
+void ccb_stat __P((int, char **));
+void debug __P((int, char **));
+void dostat __P((void));
+int getnum __P((char *));
+int islevel __P((char *));
+int lvls2bits __P((char *));
+void mstate __P((int, char **));
+void nport __P((int, char **));
+void onoff __P((int, char **, int, char *, char *, int));
+int opencontrol __P((void));
+void prlevels __P((int));
+void prusage __P((int, int));
+void rxint __P((int, char **));
+void tty_stat __P((int, char **));
+void txint __P((int, char **));
+
struct opt {
char *o_name;
- int (*o_func)();
+ void (*o_func)();
} opt[] = {
- "debug", debug,
- "rxint_throttle", rxint,
- "int_throttle", txint,
- "nport", nport,
- "mstate", mstate,
- "ccbstat", ccb_stat,
- "ttystat", tty_stat,
- 0, 0,
+ {"debug", debug},
+ {"rxint_throttle", rxint},
+ {"int_throttle", txint},
+ {"nport", nport},
+ {"mstate", mstate},
+ {"ccbstat", ccb_stat},
+ {"ttystat", tty_stat},
+ {0, 0}
};
struct stat_list {
- int (*st_func)();
+ void (*st_func)();
} stat_list[] = {
- mstate,
- 0
+ {mstate},
+ {0}
};
#define U_DEBUG 0
@@ -124,11 +140,12 @@ int ctlfd;
char *Devname;
struct si_tcsi tc;
+int
main(argc, argv)
char **argv;
{
struct opt *op;
- int (*func)() = NULL;
+ void (*func)() = NULL;
if (argc < 2)
prusage(U_ALL, 1);
@@ -145,10 +162,8 @@ main(argc, argv)
strcat(acp, Devname);
Devname = acp;
}
- if (stat(Devname, &st) < 0) {
- fprintf(stderr, "can't stat %s\n", Devname);
- exit(1);
- }
+ if (stat(Devname, &st) < 0)
+ errx(1, "can't stat %s", Devname);
dev.sid_card = SI_CARD(minor(st.st_rdev));
dev.sid_port = SI_PORT(minor(st.st_rdev));
tc.tc_dev = dev;
@@ -175,16 +190,14 @@ main(argc, argv)
exit(0);
}
+int
opencontrol()
{
int fd;
fd = open(CONTROLDEV, O_RDWR|O_NDELAY);
- if (fd < 0) {
- fprintf(stderr, "open on %s - ", CONTROLDEV);
- perror("");
- exit(1);
- }
+ if (fd < 0)
+ err(1, "open on %s", CONTROLDEV);
return(fd);
}
@@ -192,33 +205,34 @@ opencontrol()
* Print a usage message - this relies on U_DEBUG==0 and U_BOOT==1.
* Don't print the DEBUG usage string unless explicity requested.
*/
+void
prusage(strn, eflag)
int strn, eflag;
{
char **cp;
if (strn == U_ALL) {
- fprintf(stderr, "Usage: sicontrol - %s", usage[1]);
- fprintf(stderr, " sicontrol - %s", usage[2]);
- fprintf(stderr, " sicontrol - %s", usage[3]);
+ fprintf(stderr, "usage: sicontrol %s", usage[1]);
+ fprintf(stderr, " sicontrol %s", usage[2]);
+ fprintf(stderr, " sicontrol %s", usage[3]);
fprintf(stderr, " sicontrol devname %s", usage[4]);
for (cp = &usage[5]; *cp; cp++)
fprintf(stderr, " sicontrol devname %s", *cp);
}
else if (strn >= 0 && strn <= U_MAX)
- fprintf(stderr, "Usage: sicontrol devname %s", usage[strn]);
+ fprintf(stderr, "usage: sicontrol devname %s", usage[strn]);
else
fprintf(stderr, "sicontrol: usage ???\n");
exit(eflag);
}
/* print port status */
+void
dostat()
{
char *av[1], *acp;
struct stat_list *stp;
struct si_tcsi stc;
- int (*func)();
int donefirst = 0;
printf("%s: ", alldev ? "ALL" : Devname);
@@ -241,20 +255,20 @@ dostat()
* debug
* debug [[set|add|del debug_lvls] | [off]]
*/
+void
debug(ac, av)
char **av;
{
- int level, cmd;
- char *str;
+ int level;
if (ac > 2)
prusage(U_DEBUG, 1);
if (alldev) {
if (ioctl(ctlfd, TCSIGDBG_ALL, &tc.tc_dbglvl) < 0)
- Perror("TCSIGDBG_ALL on %s", Devname);
+ err(1, "TCSIGDBG_ALL on %s", Devname);
} else {
if (ioctl(ctlfd, TCSIGDBG_LEVEL, &tc) < 0)
- Perror("TCSIGDBG_LEVEL on %s", Devname);
+ err(1, "TCSIGDBG_LEVEL on %s", Devname);
}
switch (ac) {
@@ -282,13 +296,14 @@ debug(ac, av)
}
if (alldev) {
if (ioctl(ctlfd, TCSISDBG_ALL, &tc.tc_dbglvl) < 0)
- Perror("TCSISDBG_ALL on %s", Devname);
+ err(1, "TCSISDBG_ALL on %s", Devname);
} else {
if (ioctl(ctlfd, TCSISDBG_LEVEL, &tc) < 0)
- Perror("TCSISDBG_LEVEL on %s", Devname);
+ err(1, "TCSISDBG_LEVEL on %s", Devname);
}
}
+void
rxint(ac, av)
char **av;
{
@@ -298,7 +313,7 @@ rxint(ac, av)
printf("%s: ", Devname);
case -1:
if (ioctl(ctlfd, TCSIGRXIT, &tc) < 0)
- Perror("TCSIGRXIT");
+ err(1, "TCSIGRXIT");
printf("RX interrupt throttle: %d msec\n", tc.tc_int*10);
break;
case 1:
@@ -306,13 +321,15 @@ rxint(ac, av)
if (tc.tc_int == 0)
tc.tc_int = 1;
if (ioctl(ctlfd, TCSIRXIT, &tc) < 0)
- Perror("TCSIRXIT on %s at %d msec", Devname, tc.tc_int*10);
+ err(1, "TCSIRXIT on %s at %d msec",
+ Devname, tc.tc_int*10);
break;
default:
prusage(U_RXINT, 1);
}
}
+void
txint(ac, av)
char **av;
{
@@ -323,19 +340,20 @@ txint(ac, av)
printf("%s: ", Devname);
case -1:
if (ioctl(ctlfd, TCSIGIT, &tc) < 0)
- Perror("TCSIGIT");
+ err(1, "TCSIGIT");
printf("aggregate interrupt throttle: %d\n", tc.tc_int);
break;
case 1:
tc.tc_int = getnum(av[0]);
if (ioctl(ctlfd, TCSIIT, &tc) < 0)
- Perror("TCSIIT on %s at %d", Devname, tc.tc_int);
+ err(1, "TCSIIT on %s at %d", Devname, tc.tc_int);
break;
default:
prusage(U_TXINT, 1);
}
}
+void
onoff(ac, av, cmd, cmdstr, prstr, usage)
char **av, *cmdstr, *prstr;
int ac, cmd, usage;
@@ -352,7 +370,7 @@ onoff(ac, av, cmd, cmdstr, prstr, usage)
} else
tc.tc_int = -1;
if (ioctl(ctlfd, cmd, &tc) < 0)
- Perror("%s on %s", cmdstr, Devname);
+ err(1, "%s on %s", cmdstr, Devname);
switch (ac) {
case 0:
printf("%s: ", Devname);
@@ -365,11 +383,10 @@ onoff(ac, av, cmd, cmdstr, prstr, usage)
}
}
+void
mstate(ac, av)
char **av;
{
- u_char state;
-
switch (ac) {
case 0:
printf("%s: ", Devname);
@@ -379,7 +396,7 @@ mstate(ac, av)
prusage(U_MSTATE, 1);
}
if (ioctl(ctlfd, TCSISTATE, &tc) < 0)
- Perror("TCSISTATE on %s", Devname);
+ err(1, "TCSISTATE on %s", Devname);
printf("modem bits state - (0x%x)", tc.tc_int);
if (tc.tc_int & IP_DCD) printf(" DCD");
if (tc.tc_int & IP_DTR) printf(" DTR");
@@ -387,6 +404,7 @@ mstate(ac, av)
printf("\n");
}
+void
nport(ac, av)
char **av;
{
@@ -395,10 +413,11 @@ nport(ac, av)
if (ac != 0)
prusage(U_NPORT, 1);
if (ioctl(ctlfd, TCSIPORTS, &ports) < 0)
- Perror("TCSIPORTS on %s", Devname);
+ err(1, "TCSIPORTS on %s", Devname);
printf("SLXOS: total of %d ports\n", ports);
}
+void
ccb_stat(ac, av)
char **av;
{
@@ -406,10 +425,10 @@ char **av;
#define CCB sip.tc_ccb
if (ac != 0)
- prusage(U_STAT_CCB);
+ prusage(U_STAT_CCB, 1);
sip.tc_dev = tc.tc_dev;
if (ioctl(ctlfd, TCSI_CCB, &sip) < 0)
- Perror("TCSI_CCB on %s", Devname);
+ err(1, "TCSI_CCB on %s", Devname);
printf("%s: ", Devname);
/* WORD next - Next Channel */
@@ -449,9 +468,9 @@ char **av;
/* BYTE hi_txbuf[SLXOS_BUFFERSIZE] - */
/* BYTE hi_rxbuf[SLXOS_BUFFERSIZE] - */
/* BYTE res1[0xA0] - */
-
}
+void
tty_stat(ac, av)
char **av;
{
@@ -459,10 +478,10 @@ char **av;
#define TTY sip.tc_tty
if (ac != 0)
- prusage(U_STAT_TTY);
+ prusage(U_STAT_TTY, 1);
sip.tc_dev = tc.tc_dev;
if (ioctl(ctlfd, TCSI_TTY, &sip) < 0)
- Perror("TCSI_TTY on %s", Devname);
+ err(1, "TCSI_TTY on %s", Devname);
printf("%s: ", Devname);
printf("\tt_outq.c_cc %d.\n", TTY.t_outq.c_cc); /* struct clist t_outq */
@@ -478,9 +497,9 @@ char **av;
printf("\tt_cc 0x%x\n", TTY.t_cc); /* t_cc */
printf("\tt_termios.c_ispeed 0x%x\n", TTY.t_termios.c_ispeed); /* t_termios.c_ispeed */
printf("\tt_termios.c_ospeed 0x%x\n", TTY.t_termios.c_ospeed); /* t_termios.c_ospeed */
-
}
+int
islevel(tk)
char *tk;
{
@@ -500,6 +519,7 @@ islevel(tk)
* Convert a string consisting of tokens separated by white space, commas
* or `|' into a bitfield - flag any unrecognised tokens.
*/
+int
lvls2bits(str)
char *str;
{
@@ -514,7 +534,7 @@ lvls2bits(str)
if (strcmp(token, "all") == 0)
return(0xffffffff);
if ((i = islevel(token)) == 0) {
- fprintf(stderr, "sicontrol: unknown token '%s'\n", token);
+ warnx("unknown token '%s'", token);
errflag++;
} else
bits |= i;
@@ -533,10 +553,8 @@ getnum(char *str)
x = 0;
while (*acp) {
- if (!isdigit(*acp)) {
- error("%s is not a number\n", str);
- exit(1);
- }
+ if (!isdigit(*acp))
+ errx(1, "%s is not a number", str);
x *= 10;
x += (*acp - '0');
acp++;
@@ -544,6 +562,7 @@ getnum(char *str)
return(x);
}
+void
prlevels(x)
int x;
{
@@ -564,21 +583,3 @@ prlevels(x)
}
}
-/* VARARGS */
-Perror(str, a1, a2, a3, a4, a5)
- char *str;
- int a1, a2, a3, a4, a5;
-{
- fprintf(stderr, str, a1, a2, a3, a4, a5);
- perror(" ");
- exit(1);
-}
-
-/* VARARGS */
-error(str, a1, a2, a3, a4, a5)
- char *str;
- int a1, a2, a3, a4, a5;
-{
- fprintf(stderr, str, a1, a2, a3, a4, a5);
- exit(1);
-}
OpenPOWER on IntegriCloud