Add rcsid. Add usage() with up to date flag list. Use err(3).

This commit is contained in:
Philippe Charnier 1998-01-22 07:28:26 +00:00
parent ea9e39333c
commit 2cc11a3c27

View File

@ -5,6 +5,12 @@
* able to read and write the binary as well, but haven't
* mastered this yet.
*/
#ifndef lint
static const char rcsid[] =
"$Id$";
#endif /* not lint */
#include <stdio.h>
#if !defined(SYS_VAX) && !defined(SYS_BSD)
@ -45,6 +51,7 @@ main(int argc, char ** argv)
}
#else /* not Linux... kmem tweaking: */
#include <err.h>
#include <sys/types.h>
#ifndef SYS_BSD
#include <sys/file.h>
@ -86,7 +93,6 @@ main(int argc, char ** argv)
#define KMEM "/dev/kmem"
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
char *progname;
int debug;
int dokmem = 1;
@ -107,10 +113,17 @@ static int openfile P((char *, int));
static void writevar P((int, unsigned long, int));
static void readvar P((int, unsigned long, int *));
static void
usage()
{
fprintf(stderr, "usage: tickadj [-Adkpqs] [-a newadj] [-t newtick]\n");
exit(2);
}
/*
* main - parse arguments and handle options
*/
void
int
main(argc, argv)
int argc;
char *argv[];
@ -135,7 +148,6 @@ char *argv[];
void readvar();
void writevar();
progname = argv[0];
while ((c = ntp_getopt(argc, argv, "a:Adkqpst:")) != EOF)
switch (c) {
case 'd':
@ -153,9 +165,8 @@ char *argv[];
case 'a':
writetickadj = atoi(ntp_optarg);
if (writetickadj <= 0) {
(void) fprintf(stderr,
"%s: unlikely value for tickadj: %s\n",
progname, ntp_optarg);
warnx("unlikely value for tickadj: %s",
ntp_optarg);
errflg++;
}
break;
@ -168,9 +179,8 @@ char *argv[];
case 't':
writetick = atoi(ntp_optarg);
if (writetick <= 0) {
(void) fprintf(stderr,
"%s: unlikely value for tick: %s\n",
progname, ntp_optarg);
warnx("unlikely value for tick: %s",
ntp_optarg);
errflg++;
}
break;
@ -178,11 +188,8 @@ char *argv[];
errflg++;
break;
}
if (errflg || ntp_optind != argc) {
(void) fprintf(stderr,
"usage: %s [-Aqsp] [-a newadj] [-t newtick]\n", progname);
exit(2);
}
if (errflg || ntp_optind != argc)
usage();
kernel = getoffsets(kernel, &tick_offset,
&tickadj_offset, &dosync_offset, &noprintf_offset);
@ -194,26 +201,22 @@ char *argv[];
}
if (setnoprintf && (noprintf_offset == 0)) {
(void) fprintf(stderr,
"No noprintf kernal variable\n");
warnx("no noprintf kernel variable");
errflg++;
}
if (unsetdosync && (dosync_offset == 0)) {
(void) fprintf(stderr,
"No dosynctodr kernal variable\n");
warnx("no dosynctodr kernel variable");
errflg++;
}
if (writeopttickadj && (tickadj_offset == 0)) {
(void) fprintf(stderr,
"No tickadj kernal variable\n");
warnx("no tickadj kernel variable");
errflg++;
}
if (writetick && (tick_offset == 0)) {
(void) fprintf(stderr,
"No tick kernal variable\n");
warnx("no tick kernel variable");
errflg++;
}
@ -233,11 +236,8 @@ char *argv[];
readvar(fd, noprintf_offset, &noprintf);
(void) close(fd);
if (unsetdosync && dosync_offset == 0) {
(void) fprintf(stderr,
"%s: can't find dosynctodr in namelist\n", progname);
exit(1);
}
if (unsetdosync && dosync_offset == 0)
errx(1, "can't find dosynctodr in namelist");
if (!quiet) {
(void) printf("tick = %d us",tick);
@ -250,11 +250,8 @@ char *argv[];
(void) printf("kernel level printf's: %s\n", noprintf ? "off" : "on");
}
if (tick <= 0) {
(void) fprintf(stderr, "%s: the value of tick is silly!\n",
progname);
exit(1);
}
if (tick <= 0)
errx(1, "the value of tick is silly!");
hz = (int)(1000000L / (long)tick);
hz_hundredths = (int)((100000000L / (long)tick) - ((long)hz * 100L));
@ -458,12 +455,8 @@ getoffsets(filex, tick_off, tickadj_off, dosync_off, noprintf_off)
break;
}
#endif
if (*kname == NULL) {
(void) fprintf(stderr,
"%s: nlist fails: can't find/read /vmunix or /unix\n",
progname);
exit(1);
}
if (*kname == NULL)
errx(1, "nlist fails: can't find/read kernel boot file name");
if (dokmem)
file = kmem;
@ -521,11 +514,8 @@ openfile(name, mode)
int fd;
fd = open(name, mode);
if (fd < 0) {
(void) fprintf(stderr, "%s: open %s: ", progname, name);
perror("");
exit(1);
}
if (fd < 0)
err(1, "open %s", name);
return fd;
}
@ -540,16 +530,10 @@ writevar(fd, off, var)
int var;
{
if (lseek(fd, off, L_SET) == -1) {
(void) fprintf(stderr, "%s: lseek fails: ", progname);
perror("");
exit(1);
}
if (write(fd, (char *)&var, sizeof(int)) != sizeof(int)) {
(void) fprintf(stderr, "%s: write fails: ", progname);
perror("");
exit(1);
}
if (lseek(fd, off, L_SET) == -1)
err(1, "lseek fails");
if (write(fd, (char *)&var, sizeof(int)) != sizeof(int))
err(1, "write fails");
}
@ -564,21 +548,12 @@ readvar(fd, off, var)
{
int i;
if (lseek(fd, off, L_SET) == -1) {
(void) fprintf(stderr, "%s: lseek fails: ", progname);
perror("");
exit(1);
}
if (lseek(fd, off, L_SET) == -1)
err(1, "lseek fails");
i = read(fd, (char *)var, sizeof(int));
if (i < 0) {
(void) fprintf(stderr, "%s: read fails: ", progname);
perror("");
exit(1);
}
if (i != sizeof(int)) {
(void) fprintf(stderr, "%s: read expected %d, got %d\n",
progname, (int)sizeof(int), i);
exit(1);
}
if (i < 0)
err(1, "read fails");
if (i != sizeof(int))
errx(1, "read expected %d, got %d", (int)sizeof(int), i);
}
#endif /* not Linux */