Use err(3), add usage(). -Wall clean.
This commit is contained in:
parent
130c7bee5c
commit
b8c46235c5
@ -42,16 +42,15 @@
|
||||
.Op Fl gpn
|
||||
.Ar SYSTEM_NAME
|
||||
.Sh DESCRIPTION
|
||||
.Pp
|
||||
This is the old version of the
|
||||
.Nm config
|
||||
.Nm
|
||||
program.
|
||||
It understands the old autoconfiguration scheme
|
||||
used on the HP300, i386, DECstation, and derivative platforms.
|
||||
The new version of config is used with the
|
||||
SPARC platform.
|
||||
Only the version of
|
||||
.Nm config
|
||||
.Nm
|
||||
applicable to the architecture that you are running
|
||||
will be installed on your machine.
|
||||
.Pp
|
||||
@ -62,45 +61,33 @@ which describes
|
||||
the system to configure.
|
||||
A second file
|
||||
tells
|
||||
.Nm config
|
||||
.Nm
|
||||
what files are needed to generate a system and
|
||||
can be augmented by configuration specific set of files
|
||||
that give alternate files for a specific machine.
|
||||
that give alternate files for a specific machine
|
||||
(see the
|
||||
.Sx FILES
|
||||
section below)
|
||||
section below).
|
||||
.Pp
|
||||
Available options and operands:
|
||||
.Pp
|
||||
.Bl -tag -width SYSTEM_NAME
|
||||
.It Fl g
|
||||
If the
|
||||
.Fl g
|
||||
option is supplied,
|
||||
.Nm config
|
||||
will configure a system for debugging.
|
||||
Configure a system for debugging.
|
||||
.It Fl p
|
||||
If the
|
||||
.Fl p
|
||||
option is supplied,
|
||||
.Nm config
|
||||
will configure a system for profiling; for example,
|
||||
Configure a system for profiling; for example,
|
||||
.Xr kgmon 8
|
||||
and
|
||||
.Xr gprof 1 .
|
||||
If two or more
|
||||
.Fl p
|
||||
options are supplied,
|
||||
.Nm config
|
||||
.Nm
|
||||
will configure a system for high resolution profiling.
|
||||
.It Fl n
|
||||
If the
|
||||
.Fl n
|
||||
flag is specified,
|
||||
.Nm config
|
||||
will not remove the old compile directory (see below).
|
||||
Do not remove the old compile directory (see below).
|
||||
.It Ar SYSTEM_NAME
|
||||
specifies the name of the system configuration file
|
||||
Specifies the name of the system configuration file
|
||||
containing device specifications, configuration options
|
||||
and other system parameters for one system configuration.
|
||||
.El
|
||||
@ -116,12 +103,12 @@ will create the directory
|
||||
as necessary and place all output files there.
|
||||
If the directory already exists, it will be removed
|
||||
first unless the
|
||||
.Pa -n
|
||||
.Fl n
|
||||
flag was specified or the environment variable
|
||||
.Nm NO_CONFIG_CLOBBER
|
||||
.Ev NO_CONFIG_CLOBBER
|
||||
is set.
|
||||
The output of
|
||||
.Nm config
|
||||
.Nm
|
||||
consists of a number of files; for the
|
||||
.Tn i386 ,
|
||||
they are:
|
||||
@ -155,7 +142,7 @@ prints a reminder of this when it completes.
|
||||
If any other error messages are produced by
|
||||
.Nm config ,
|
||||
the problems in the configuration file should be corrected and
|
||||
.Nm config
|
||||
.Nm
|
||||
should be run again.
|
||||
Attempts to compile a system that had configuration errors
|
||||
are likely to fail.
|
||||
@ -165,7 +152,7 @@ entire input file is embedded in the new kernel. This means that
|
||||
.Xr strings 1
|
||||
can be used to extract it from a kernel.
|
||||
.Pp
|
||||
strings | grep ___ will print just the configure information.
|
||||
Strings | grep ___ will print just the configure information.
|
||||
.Sh FILES
|
||||
.Bl -tag -width /sys/i386/conf/Makefile.i386 -compact
|
||||
.It Pa /sys/conf/files
|
||||
|
@ -117,8 +117,8 @@
|
||||
#include <sys/diskslice.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
struct device cur;
|
||||
@ -126,6 +126,12 @@ struct device *curp = 0;
|
||||
|
||||
#define ns(s) strdup(s)
|
||||
|
||||
void init_dev __P((struct device *));
|
||||
int finddev __P((dev_t));
|
||||
void deverror __P((char *, char *));
|
||||
int alreadychecked __P((dev_t, dev_t[], dev_t *));
|
||||
void verifycomp __P((struct file_list *));
|
||||
|
||||
%}
|
||||
%%
|
||||
Configuration:
|
||||
@ -398,7 +404,7 @@ Option:
|
||||
op->op_next = opt;
|
||||
op->op_value = 0;
|
||||
opt = op;
|
||||
if (s = strchr(op->op_name, '=')) {
|
||||
if ((s = strchr(op->op_name, '='))) {
|
||||
/* AARGH!!!! Old-style bogon */
|
||||
*s = '\0';
|
||||
op->op_value = ns(s + 1);
|
||||
@ -652,16 +658,17 @@ Id_list:
|
||||
|
||||
%%
|
||||
|
||||
void
|
||||
yyerror(s)
|
||||
char *s;
|
||||
{
|
||||
|
||||
fprintf(stderr, "config: line %d: %s\n", yyline + 1, s);
|
||||
warnx("line %d: %s", yyline + 1, s);
|
||||
}
|
||||
|
||||
/*
|
||||
* add a device to the list of devices
|
||||
*/
|
||||
void
|
||||
newdev(dp)
|
||||
register struct device *dp;
|
||||
{
|
||||
@ -681,6 +688,7 @@ newdev(dp)
|
||||
/*
|
||||
* note that a configuration should be made
|
||||
*/
|
||||
void
|
||||
mkconf(sysname)
|
||||
char *sysname;
|
||||
{
|
||||
@ -719,12 +727,12 @@ newflist(ftype)
|
||||
/*
|
||||
* Add a swap device to the system's configuration
|
||||
*/
|
||||
void
|
||||
mkswap(system, fl, size, flag)
|
||||
struct file_list *system, *fl;
|
||||
int size, flag;
|
||||
{
|
||||
register struct file_list **flp;
|
||||
char name[80];
|
||||
|
||||
if (system == 0 || system->f_type != SYSTEMSPEC) {
|
||||
yyerror("\"swap\" spec precedes \"config\" specification");
|
||||
@ -757,6 +765,7 @@ mkswap(system, fl, size, flag)
|
||||
system->f_fn = ns(system->f_needs);
|
||||
}
|
||||
|
||||
void
|
||||
mkcomp(dp)
|
||||
register struct device *dp;
|
||||
{
|
||||
@ -777,11 +786,11 @@ mkcomp(dp)
|
||||
compp = flp;
|
||||
}
|
||||
|
||||
void
|
||||
addcomp(compdev, fl)
|
||||
struct file_list *compdev, *fl;
|
||||
{
|
||||
register struct file_list **flp;
|
||||
char name[80];
|
||||
|
||||
if (compdev == 0 || compdev->f_type != COMPDEVICE) {
|
||||
yyerror("component spec precedes device specification");
|
||||
@ -887,6 +896,7 @@ huhcon(dev)
|
||||
return (dp);
|
||||
}
|
||||
|
||||
void
|
||||
init_dev(dp)
|
||||
register struct device *dp;
|
||||
{
|
||||
@ -912,6 +922,7 @@ init_dev(dp)
|
||||
/*
|
||||
* make certain that this is a reasonable type of thing to connect to a nexus
|
||||
*/
|
||||
void
|
||||
check_nexus(dev, num)
|
||||
register struct device *dev;
|
||||
int num;
|
||||
@ -955,6 +966,7 @@ check_nexus(dev, num)
|
||||
* Check system specification and apply defaulting
|
||||
* rules on root, argument, dump, and swap devices.
|
||||
*/
|
||||
void
|
||||
checksystemspec(fl)
|
||||
register struct file_list *fl;
|
||||
{
|
||||
@ -1022,6 +1034,7 @@ checksystemspec(fl)
|
||||
* Verify all devices specified in the system specification
|
||||
* are present in the device specifications.
|
||||
*/
|
||||
void
|
||||
verifysystemspecs()
|
||||
{
|
||||
register struct file_list *fl;
|
||||
@ -1059,8 +1072,7 @@ verifyswap(fl, checked, pchecked)
|
||||
if (alreadychecked(fl->f_swapdev, checked, pchecked))
|
||||
continue;
|
||||
if (!finddev(fl->f_swapdev))
|
||||
fprintf(stderr,
|
||||
"config: swap device %s not configured", fl->f_fn);
|
||||
warnx("swap device %s not configured", fl->f_fn);
|
||||
*pchecked++ = fl->f_swapdev;
|
||||
}
|
||||
return (pchecked);
|
||||
@ -1069,6 +1081,7 @@ verifyswap(fl, checked, pchecked)
|
||||
/*
|
||||
* Verify that components of a compound device have themselves been config'ed
|
||||
*/
|
||||
void
|
||||
verifycomp(fl)
|
||||
register struct file_list *fl;
|
||||
{
|
||||
@ -1077,9 +1090,7 @@ verifycomp(fl)
|
||||
for (fl = fl->f_next; fl; fl = fl->f_next) {
|
||||
if (fl->f_type != COMPSPEC || finddev(fl->f_compdev))
|
||||
continue;
|
||||
fprintf(stderr,
|
||||
"config: %s: component device %s not configured\n",
|
||||
dname, fl->f_needs);
|
||||
warnx("%s: component device %s not configured", dname, fl->f_needs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1087,6 +1098,7 @@ verifycomp(fl)
|
||||
* Has a device already been checked
|
||||
* for its existence in the configuration?
|
||||
*/
|
||||
int
|
||||
alreadychecked(dev, list, last)
|
||||
dev_t dev, list[];
|
||||
register dev_t *last;
|
||||
@ -1099,12 +1111,11 @@ alreadychecked(dev, list, last)
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
deverror(systemname, devtype)
|
||||
char *systemname, *devtype;
|
||||
{
|
||||
|
||||
fprintf(stderr, "config: %s: %s device not configured\n",
|
||||
systemname, devtype);
|
||||
warnx("%s: %s device not configured", systemname, devtype);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1113,6 +1124,7 @@ deverror(systemname, devtype)
|
||||
* take into account stuff wildcarded.
|
||||
*/
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
finddev(dev)
|
||||
dev_t dev;
|
||||
{
|
||||
|
@ -114,6 +114,12 @@ struct kt {
|
||||
{ "vector", VECTOR },
|
||||
{ 0, 0 },
|
||||
};
|
||||
|
||||
|
||||
int kw_lookup __P((char *));
|
||||
int octal __P((char *));
|
||||
int hex __P((char *));
|
||||
|
||||
%}
|
||||
WORD [A-Za-z_][-A-Za-z_]*
|
||||
%%
|
||||
@ -192,6 +198,7 @@ WORD [A-Za-z_][-A-Za-z_]*
|
||||
* string is not a keyword otherwise it returns the keyword number
|
||||
*/
|
||||
|
||||
int
|
||||
kw_lookup(word)
|
||||
register char *word;
|
||||
{
|
||||
@ -207,6 +214,7 @@ register char *word;
|
||||
* Number conversion routines
|
||||
*/
|
||||
|
||||
int
|
||||
octal(str)
|
||||
char *str;
|
||||
{
|
||||
@ -216,6 +224,7 @@ char *str;
|
||||
return num;
|
||||
}
|
||||
|
||||
int
|
||||
hex(str)
|
||||
char *str;
|
||||
{
|
||||
|
@ -32,23 +32,28 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
static const char copyright[] =
|
||||
"@(#) Copyright (c) 1980, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/mman.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <sysexits.h>
|
||||
#include <unistd.h>
|
||||
#include "y.tab.h"
|
||||
#include "config.h"
|
||||
|
||||
@ -64,17 +69,19 @@ static char *PREFIX;
|
||||
static int no_config_clobber = FALSE;
|
||||
int old_config_present;
|
||||
|
||||
static void usage __P((void));
|
||||
void configfile __P((void));
|
||||
|
||||
/*
|
||||
* Config builds a set of files for building a UNIX
|
||||
* system given a description of the desired system.
|
||||
*/
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
struct stat buf;
|
||||
int ch;
|
||||
char *p;
|
||||
@ -92,33 +99,26 @@ main(argc, argv)
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
goto usage;
|
||||
usage();
|
||||
}
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (argc != 1) {
|
||||
usage: fputs("usage: config [-gpn] sysname\n", stderr);
|
||||
exit(1);
|
||||
}
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
||||
if (freopen(PREFIX = *argv, "r", stdin) == NULL) {
|
||||
perror(PREFIX);
|
||||
exit(2);
|
||||
}
|
||||
if (freopen(PREFIX = *argv, "r", stdin) == NULL)
|
||||
err(2, "%s", PREFIX);
|
||||
if (getenv("NO_CONFIG_CLOBBER"))
|
||||
no_config_clobber = TRUE;
|
||||
|
||||
p = path((char *)NULL);
|
||||
if (stat(p, &buf)) {
|
||||
if (mkdir(p, 0777)) {
|
||||
perror(p);
|
||||
exit(2);
|
||||
}
|
||||
if (mkdir(p, 0777))
|
||||
err(2, "%s", p);
|
||||
}
|
||||
else if ((buf.st_mode & S_IFMT) != S_IFDIR) {
|
||||
fprintf(stderr, "config: %s isn't a directory.\n", p);
|
||||
exit(2);
|
||||
errx(2, "%s isn't a directory", p);
|
||||
}
|
||||
#ifndef NO_CLOBBER_EVER
|
||||
else if (!no_config_clobber) {
|
||||
@ -129,14 +129,11 @@ usage: fputs("usage: config [-gpn] sysname\n", stderr);
|
||||
sprintf(tmp, "rm -rf %s", p);
|
||||
if (system(tmp)) {
|
||||
fprintf(stderr, "Failed!\n");
|
||||
perror(tmp);
|
||||
exit(2);
|
||||
err(2, "%s", tmp);
|
||||
}
|
||||
fprintf(stderr, "Done.\n");
|
||||
if (mkdir(p, 0777)) {
|
||||
perror(p);
|
||||
exit(2);
|
||||
}
|
||||
if (mkdir(p, 0777))
|
||||
err(2, "%s", p);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
@ -204,6 +201,13 @@ usage: fputs("usage: config [-gpn] sysname\n", stderr);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void
|
||||
usage()
|
||||
{
|
||||
fprintf(stderr, "usage: config [-gpn] sysname\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* get_word
|
||||
* returns EOF on end of file
|
||||
@ -333,6 +337,7 @@ path(file)
|
||||
return (cp);
|
||||
}
|
||||
|
||||
void
|
||||
configfile()
|
||||
{
|
||||
FILE *fi, *fo;
|
||||
@ -340,15 +345,11 @@ configfile()
|
||||
int i;
|
||||
|
||||
fi = fopen(PREFIX,"r");
|
||||
if(!fi) {
|
||||
perror(PREFIX);
|
||||
exit(2);
|
||||
}
|
||||
if(!fi)
|
||||
err(2, "%s", PREFIX);
|
||||
fo = fopen(p=path("config.c.new"),"w");
|
||||
if(!fo) {
|
||||
perror(p);
|
||||
exit(2);
|
||||
}
|
||||
if(!fo)
|
||||
err(2, "%s", p);
|
||||
fprintf(fo,"#include \"opt_config.h\"\n");
|
||||
fprintf(fo,"#ifdef INCLUDE_CONFIG_FILE \n");
|
||||
fprintf(fo,"static char *config = \"\n");
|
||||
|
@ -32,35 +32,45 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkglue.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
* Make the bus adaptor interrupt glue files.
|
||||
*/
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include "y.tab.h"
|
||||
#include <ctype.h>
|
||||
|
||||
void vector_devtab __P((FILE *, char *, int *));
|
||||
void vector __P((void));
|
||||
void dump_ctrs __P((FILE *));
|
||||
void dump_intname __P((FILE *, char *, int));
|
||||
void dump_std __P((FILE *, FILE *));
|
||||
void dump_vbavec __P((FILE *, char *, int));
|
||||
void dump_ubavec __P((FILE *, char *, int));
|
||||
|
||||
/*
|
||||
* Create the UNIBUS interrupt vector glue file.
|
||||
*/
|
||||
void
|
||||
ubglue()
|
||||
{
|
||||
register FILE *fp, *gp;
|
||||
register struct device *dp, *mp;
|
||||
|
||||
fp = fopen(path("ubglue.s"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ubglue.s"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ubglue.s"));
|
||||
gp = fopen(path("ubvec.s"), "w");
|
||||
if (gp == 0) {
|
||||
perror(path("ubvec.s"));
|
||||
exit(1);
|
||||
}
|
||||
if (gp == 0)
|
||||
err(1, "%s", path("ubvec.s"));
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp != 0 && mp != (struct device *)-1 &&
|
||||
@ -110,6 +120,7 @@ static int cntcnt = 0; /* number of interrupt counters allocated */
|
||||
/*
|
||||
* Print a UNIBUS interrupt vector.
|
||||
*/
|
||||
void
|
||||
dump_ubavec(fp, vector, number)
|
||||
register FILE *fp;
|
||||
char *vector;
|
||||
@ -143,21 +154,18 @@ dump_ubavec(fp, vector, number)
|
||||
/*
|
||||
* Create the VERSAbus interrupt vector glue file.
|
||||
*/
|
||||
void
|
||||
vbglue()
|
||||
{
|
||||
register FILE *fp, *gp;
|
||||
register struct device *dp, *mp;
|
||||
|
||||
fp = fopen(path("vbglue.s"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("vbglue.s"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("vbglue.s"));
|
||||
gp = fopen(path("vbvec.s"), "w");
|
||||
if (gp == 0) {
|
||||
perror(path("vbvec.s"));
|
||||
exit(1);
|
||||
}
|
||||
if (gp == 0)
|
||||
err(1, "%s", path("vbvec.s"));
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
struct idlst *id, *id2;
|
||||
|
||||
@ -203,6 +211,7 @@ vbglue()
|
||||
/*
|
||||
* Print a VERSAbus interrupt vector
|
||||
*/
|
||||
void
|
||||
dump_vbavec(fp, vector, number)
|
||||
register FILE *fp;
|
||||
char *vector;
|
||||
@ -229,6 +238,7 @@ dump_vbavec(fp, vector, number)
|
||||
* HP9000/300 interrupts are auto-vectored.
|
||||
* Code is hardwired in locore.s
|
||||
*/
|
||||
void
|
||||
hpglue() {}
|
||||
|
||||
static char *vaxinames[] = {
|
||||
@ -253,6 +263,7 @@ static struct stdintrs {
|
||||
* reference the associated counters into a separate
|
||||
* file which is prepended to locore.s.
|
||||
*/
|
||||
void
|
||||
dump_std(fp, gp)
|
||||
register FILE *fp, *gp;
|
||||
{
|
||||
@ -287,6 +298,7 @@ dump_std(fp, gp)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dump_intname(fp, vector, number)
|
||||
register FILE *fp;
|
||||
char *vector;
|
||||
@ -313,6 +325,7 @@ dump_intname(fp, vector, number)
|
||||
/*
|
||||
* Reserve space for the interrupt counters.
|
||||
*/
|
||||
void
|
||||
dump_ctrs(fp)
|
||||
register FILE *fp;
|
||||
{
|
||||
@ -341,16 +354,15 @@ dump_ctrs(fp)
|
||||
* simplify the correspondence between devices and interrupt handlers.
|
||||
* The order must match that in mkioconf.c.
|
||||
*/
|
||||
void
|
||||
vector()
|
||||
{
|
||||
int dev_id;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("vector.h.new"), "w");
|
||||
if (fp == NULL) {
|
||||
perror(path("vector.h.new"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == NULL)
|
||||
err(1, "%s", path("vector.h.new"));
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * vector.h\n");
|
||||
fprintf(fp, " * Macros for interrupt vector routines\n");
|
||||
@ -378,6 +390,7 @@ vector()
|
||||
moveifchanged(path("vector.h.new"), path("vector.h"));
|
||||
}
|
||||
|
||||
void
|
||||
vector_devtab(fp, table, dev_idp)
|
||||
FILE *fp;
|
||||
char *table;
|
||||
|
@ -32,21 +32,30 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkheaders.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
* Make all the .h files for the optional entries
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "config.h"
|
||||
#include "y.tab.h"
|
||||
|
||||
#define ns(s) strdup(s)
|
||||
|
||||
void do_header __P((char *, char *, int));
|
||||
void do_count __P((char *, char *, int));
|
||||
|
||||
void
|
||||
headers()
|
||||
{
|
||||
register struct file_list *fl;
|
||||
@ -60,6 +69,7 @@ headers()
|
||||
* count all the devices of a certain type and recurse to count
|
||||
* whatever the device is connected to
|
||||
*/
|
||||
void
|
||||
do_count(dev, hname, search)
|
||||
register char *dev, *hname;
|
||||
int search;
|
||||
@ -99,6 +109,7 @@ do_count(dev, hname, search)
|
||||
do_header(dev, hname, count > hicount ? count : hicount);
|
||||
}
|
||||
|
||||
void
|
||||
do_header(dev, hname, count)
|
||||
char *dev, *hname;
|
||||
int count;
|
||||
@ -114,10 +125,8 @@ do_header(dev, hname, count)
|
||||
oldcount = -1;
|
||||
if (inf == 0) {
|
||||
outf = fopen(file, "w");
|
||||
if (outf == 0) {
|
||||
perror(file);
|
||||
exit(1);
|
||||
}
|
||||
if (outf == 0)
|
||||
err(1, "%s", file);
|
||||
fprintf(outf, "#define %s %d\n", name, count);
|
||||
(void) fclose(outf);
|
||||
return;
|
||||
@ -166,10 +175,8 @@ do_header(dev, hname, count)
|
||||
fl_head = fl;
|
||||
}
|
||||
outf = fopen(file, "w");
|
||||
if (outf == 0) {
|
||||
perror(file);
|
||||
exit(1);
|
||||
}
|
||||
if (outf == 0)
|
||||
err(1, "%s", file);
|
||||
for (fl = fl_head; fl != NULL; fl = tflp) {
|
||||
fprintf(outf,
|
||||
"#define %s %u\n", fl->f_fn, count ? fl->f_type : 0);
|
||||
|
@ -32,9 +32,14 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkioconf.c 8.2 (Berkeley) 1/21/94";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include "y.tab.h"
|
||||
#include "config.h"
|
||||
@ -46,8 +51,18 @@ char *qu();
|
||||
char *intv();
|
||||
char *wnum();
|
||||
void pseudo_ioconf();
|
||||
void comp_config __P((FILE *));
|
||||
void scbus_devtab __P((FILE *, FILE *, int *));
|
||||
void isa_devtab __P((FILE *, char *, int *));
|
||||
void isa_biotab __P((FILE *, char *));
|
||||
void i386_ioconf __P((void));
|
||||
void hp300_ioconf __P((void));
|
||||
int hpbadslave __P((struct device *, struct device *));
|
||||
void tahoe_ioconf __P((void));
|
||||
void vax_ioconf __P((void));
|
||||
|
||||
#if MACHINE_VAX
|
||||
void
|
||||
vax_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
@ -55,10 +70,8 @@ vax_ioconf()
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c"));
|
||||
fprintf(fp, "#include <vax/include/pte.h>\n");
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <sys/buf.h>\n");
|
||||
@ -291,6 +304,7 @@ vax_ioconf()
|
||||
#endif
|
||||
|
||||
#if MACHINE_TAHOE
|
||||
void
|
||||
tahoe_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
@ -298,10 +312,8 @@ tahoe_ioconf()
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c"));
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <tahoe/include/pte.h>\n");
|
||||
fprintf(fp, "#include <sys/buf.h>\n");
|
||||
@ -465,6 +477,7 @@ tahoe_ioconf()
|
||||
#endif
|
||||
|
||||
#if MACHINE_HP300 || MACHINE_LUNA68K
|
||||
void
|
||||
hp300_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp;
|
||||
@ -472,10 +485,8 @@ hp300_ioconf()
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c"));
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <sys/buf.h>\n");
|
||||
fprintf(fp, "\n");
|
||||
@ -500,7 +511,7 @@ hp300_ioconf()
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES ||
|
||||
dp->d_type != MASTER && dp->d_type != CONTROLLER)
|
||||
(dp->d_type != MASTER && dp->d_type != CONTROLLER))
|
||||
continue;
|
||||
if (mp != TO_NEXUS) {
|
||||
printf("%s%s must be attached to an sc (nexus)\n",
|
||||
@ -573,20 +584,21 @@ hp300_ioconf()
|
||||
#define ishpibdev(n) (eq(n,"rd") || eq(n,"ct") || eq(n,"mt") || eq(n,"ppi"))
|
||||
#define isscsidev(n) (eq(n,"sd") || eq(n,"st") || eq(n,"ac"))
|
||||
|
||||
int
|
||||
hpbadslave(mp, dp)
|
||||
register struct device *dp, *mp;
|
||||
{
|
||||
|
||||
if (mp == TO_NEXUS && ishpibdev(dp->d_name) ||
|
||||
mp != TO_NEXUS && eq(mp->d_name, "hpib") &&
|
||||
!ishpibdev(dp->d_name)) {
|
||||
if ((mp == TO_NEXUS && ishpibdev(dp->d_name)) ||
|
||||
(mp != TO_NEXUS && eq(mp->d_name, "hpib") &&
|
||||
!ishpibdev(dp->d_name))) {
|
||||
printf("%s%s must be attached to an hpib\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
return (1);
|
||||
}
|
||||
if (mp == TO_NEXUS && isscsidev(dp->d_name) ||
|
||||
mp != TO_NEXUS && eq(mp->d_name, "scsi") &&
|
||||
!isscsidev(dp->d_name)) {
|
||||
if ((mp == TO_NEXUS && isscsidev(dp->d_name)) ||
|
||||
(mp != TO_NEXUS && eq(mp->d_name, "scsi") &&
|
||||
!isscsidev(dp->d_name))) {
|
||||
printf("%s%s must be attached to a scsi\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
return (1);
|
||||
@ -599,20 +611,18 @@ hpbadslave(mp, dp)
|
||||
char *shandler();
|
||||
char *sirq();
|
||||
|
||||
void
|
||||
i386_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
register int uba_n, slave;
|
||||
register struct device *dp, *mp;
|
||||
int dev_id;
|
||||
FILE *fp, *fp1;
|
||||
static char *old_d_name;
|
||||
static char old_shandler[32 + 1];
|
||||
|
||||
fp = fopen(path("ioconf.c.new"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c.new"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c.new"));
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * I/O configuration.\n");
|
||||
fprintf(fp, " * DO NOT EDIT-- this file is automatically generated.\n");
|
||||
@ -623,10 +633,8 @@ i386_ioconf()
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#define C (caddr_t)\n");
|
||||
fp1 = fopen(path("ioconf.h.new"), "w");
|
||||
if (fp1 == 0) {
|
||||
perror(path("ioconf.h.new"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp1 == 0)
|
||||
err(1, "%s", path("ioconf.h.new"));
|
||||
fprintf(fp1, "/*\n");
|
||||
fprintf(fp1, " * Extern declarations for I/O configuration.\n");
|
||||
fprintf(fp1, " * DO NOT EDIT-- this file is automatically generated.\n");
|
||||
@ -705,6 +713,7 @@ i386_ioconf()
|
||||
moveifchanged(path("ioconf.h.new"), path("ioconf.h"));
|
||||
}
|
||||
|
||||
void
|
||||
isa_biotab(fp, table)
|
||||
FILE *fp;
|
||||
char *table;
|
||||
@ -737,6 +746,7 @@ isa_biotab(fp, table)
|
||||
*
|
||||
* 4/26/93 rgrimes
|
||||
*/
|
||||
void
|
||||
isa_devtab(fp, table, dev_idp)
|
||||
FILE *fp;
|
||||
char *table;
|
||||
@ -769,7 +779,8 @@ isa_devtab(fp, table, dev_idp)
|
||||
fprintf(fp, "0\n};\n");
|
||||
}
|
||||
|
||||
static char *id(int unit)
|
||||
static char *
|
||||
id(int unit)
|
||||
{
|
||||
char *s;
|
||||
switch(unit)
|
||||
@ -839,6 +850,7 @@ is_old_scsi_device(char *name)
|
||||
* All that nice "conflicting SCSI ID checking" is now
|
||||
* lost and should be put back in.
|
||||
*/
|
||||
void
|
||||
scbus_devtab(fp, fp1, dev_idp)
|
||||
FILE *fp;
|
||||
FILE *fp1;
|
||||
@ -967,16 +979,15 @@ sirq(num)
|
||||
#endif
|
||||
|
||||
#if MACHINE_PMAX
|
||||
void
|
||||
pmax_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c"));
|
||||
fprintf(fp, "#include <sys/types.h>\n");
|
||||
fprintf(fp, "#include <sys/time.h>\n");
|
||||
fprintf(fp, "#include <pmax/dev/device.h>\n\n");
|
||||
@ -1022,7 +1033,7 @@ pmax_ioconf()
|
||||
continue;
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 ||
|
||||
!eq(mp->d_name, "asc") && !eq(mp->d_name, "sii")) {
|
||||
(!eq(mp->d_name, "asc") && !eq(mp->d_name, "sii"))) {
|
||||
printf("%s%s: devices must be attached to a SCSI (asc or sii) controller\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
@ -1054,6 +1065,7 @@ int have_iop = 0;
|
||||
int have_hb = 0;
|
||||
int have_vme = 0;
|
||||
|
||||
void
|
||||
news_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp;
|
||||
@ -1061,10 +1073,8 @@ news_ioconf()
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ioconf.c"));
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <sys/buf.h>\n");
|
||||
fprintf(fp, "#include <vm/vm.h>\n");
|
||||
@ -1120,8 +1130,8 @@ news_ioconf()
|
||||
continue;
|
||||
}
|
||||
if (dp->d_flags) {
|
||||
printf("controllers (e.g. %s%d) don't have flags, ");
|
||||
printf("only devices do\n",
|
||||
printf(
|
||||
"controllers (e.g. %s%d) don't have flags, only devices do\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
@ -1281,6 +1291,7 @@ pseudo_ioconf(fp)
|
||||
comp_config(fp);
|
||||
}
|
||||
|
||||
void
|
||||
comp_config(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
|
@ -32,7 +32,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkmakefile.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -41,9 +45,10 @@ static char sccsid[] = "@(#)mkmakefile.c 8.1 (Berkeley) 6/6/93";
|
||||
* additional files for the machine being compiled to.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "y.tab.h"
|
||||
#include "config.h"
|
||||
|
||||
@ -68,6 +73,18 @@ static struct file_list *fcur;
|
||||
char *tail();
|
||||
extern int old_config_present;
|
||||
|
||||
void do_swapspec __P((FILE *, char *));
|
||||
void do_clean __P((FILE *));
|
||||
void do_load __P((FILE *));
|
||||
void do_rules __P((FILE *));
|
||||
void do_sfiles __P((FILE *));
|
||||
void do_cfiles __P((FILE *));
|
||||
void do_objs __P((FILE *));
|
||||
void do_before_depend __P((FILE *));
|
||||
int opteq __P((char *, char *));
|
||||
void read_files __P((void));
|
||||
void makefile __P((void));
|
||||
|
||||
/*
|
||||
* Lookup a file, by name.
|
||||
*/
|
||||
@ -137,6 +154,7 @@ static struct users {
|
||||
/*
|
||||
* Build the makefile from the skeleton
|
||||
*/
|
||||
void
|
||||
makefile()
|
||||
{
|
||||
FILE *ifp, *ofp;
|
||||
@ -149,15 +167,11 @@ makefile()
|
||||
strcpy(line, "Makefile.");
|
||||
(void) strcat(line, machinename);
|
||||
ifp = fopen(line, "r");
|
||||
if (ifp == 0) {
|
||||
perror(line);
|
||||
exit(1);
|
||||
}
|
||||
if (ifp == 0)
|
||||
err(1, "%s", line);
|
||||
ofp = fopen(path("Makefile.new"), "w");
|
||||
if (ofp == 0) {
|
||||
perror(path("Makefile.new"));
|
||||
exit(1);
|
||||
}
|
||||
if (ofp == 0)
|
||||
err(1, "%s", path("Makefile.new"));
|
||||
fprintf(ofp, "KERN_IDENT=%s\n", raise(ident));
|
||||
fprintf(ofp, "IDENT=");
|
||||
if (profiling)
|
||||
@ -251,6 +265,7 @@ makefile()
|
||||
* Read in the information about files used in making the system.
|
||||
* Store it in the ftab linked list.
|
||||
*/
|
||||
void
|
||||
read_files()
|
||||
{
|
||||
FILE *fp;
|
||||
@ -267,10 +282,8 @@ read_files()
|
||||
(void) snprintf(fname, sizeof fname, "../../conf/files");
|
||||
openit:
|
||||
fp = fopen(fname, "r");
|
||||
if (fp == 0) {
|
||||
perror(fname);
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", fname);
|
||||
if(ident == NULL) {
|
||||
printf("no ident line specified\n");
|
||||
exit(1);
|
||||
@ -491,6 +504,7 @@ read_files()
|
||||
goto next;
|
||||
}
|
||||
|
||||
int
|
||||
opteq(cp, dp)
|
||||
char *cp, *dp;
|
||||
{
|
||||
@ -508,12 +522,12 @@ opteq(cp, dp)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
do_before_depend(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
register struct file_list *tp, *fl;
|
||||
register struct file_list *tp;
|
||||
register int lpos, len;
|
||||
char swapname[32];
|
||||
|
||||
fputs("BEFORE_DEPEND=", fp);
|
||||
lpos = 15;
|
||||
@ -534,6 +548,7 @@ do_before_depend(fp)
|
||||
putc('\n', fp);
|
||||
}
|
||||
|
||||
void
|
||||
do_objs(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
@ -572,6 +587,7 @@ do_objs(fp)
|
||||
putc('\n', fp);
|
||||
}
|
||||
|
||||
void
|
||||
do_cfiles(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
@ -611,6 +627,7 @@ do_cfiles(fp)
|
||||
putc('\n', fp);
|
||||
}
|
||||
|
||||
void
|
||||
do_sfiles(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
@ -655,6 +672,7 @@ tail(fn)
|
||||
* which avoids any problem areas with i/o addressing
|
||||
* (e.g. for the VAX); assembler files are processed by as.
|
||||
*/
|
||||
void
|
||||
do_rules(f)
|
||||
FILE *f;
|
||||
{
|
||||
@ -725,6 +743,7 @@ do_rules(f)
|
||||
/*
|
||||
* Create the load strings
|
||||
*/
|
||||
void
|
||||
do_load(f)
|
||||
register FILE *f;
|
||||
{
|
||||
@ -742,12 +761,12 @@ do_load(f)
|
||||
putc('\n', f);
|
||||
}
|
||||
|
||||
void
|
||||
do_clean(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
register struct file_list *tp, *fl;
|
||||
register struct file_list *tp;
|
||||
register int lpos, len;
|
||||
char swapname[32];
|
||||
|
||||
fputs("CLEAN=", fp);
|
||||
lpos = 7;
|
||||
@ -785,6 +804,7 @@ do_systemspec(f, fl, first)
|
||||
return (fl);
|
||||
}
|
||||
|
||||
void
|
||||
do_swapspec(f, name)
|
||||
FILE *f;
|
||||
register char *name;
|
||||
|
@ -33,30 +33,37 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkheaders.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
* Make all the .h files for the optional entries
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "config.h"
|
||||
#include "y.tab.h"
|
||||
|
||||
#define ns(s) strdup(s)
|
||||
|
||||
static char *lower __P((char *));
|
||||
void read_options __P((void));
|
||||
void do_option __P((char *));
|
||||
|
||||
void
|
||||
options()
|
||||
{
|
||||
struct opt_list *ol;
|
||||
|
||||
/* fake the cpu types as options */
|
||||
/* Please forgive me for this hack.. :-) */
|
||||
struct opt *op;
|
||||
struct cputype *cp;
|
||||
|
||||
for (cp = cputype; cp; cp = cp->cpu_next) {
|
||||
@ -77,6 +84,7 @@ options()
|
||||
* Generate an <options>.h file
|
||||
*/
|
||||
|
||||
void
|
||||
do_option(name)
|
||||
char *name;
|
||||
{
|
||||
@ -105,10 +113,8 @@ do_option(name)
|
||||
inf = fopen(file, "r");
|
||||
if (inf == 0) {
|
||||
outf = fopen(file, "w");
|
||||
if (outf == 0) {
|
||||
perror(file);
|
||||
exit(1);
|
||||
}
|
||||
if (outf == 0)
|
||||
err(1, "%s", file);
|
||||
|
||||
/* was the option in the config file? */
|
||||
if (value) {
|
||||
@ -177,10 +183,8 @@ do_option(name)
|
||||
}
|
||||
|
||||
outf = fopen(file, "w");
|
||||
if (outf == 0) {
|
||||
perror(file);
|
||||
exit(1);
|
||||
}
|
||||
if (outf == 0)
|
||||
err(1, "%s", file);
|
||||
for (op = op_head; op != NULL; op = topp) {
|
||||
/* was the option in the config file? */
|
||||
if (op->op_value) {
|
||||
@ -223,6 +227,7 @@ tooption(name)
|
||||
/*
|
||||
* read the options and options.<machine> files
|
||||
*/
|
||||
void
|
||||
read_options()
|
||||
{
|
||||
FILE *fp;
|
||||
|
@ -32,12 +32,18 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkswapconf.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
* Build a swap configuration file.
|
||||
*/
|
||||
#include <err.h>
|
||||
#include <unistd.h>
|
||||
#include "config.h"
|
||||
|
||||
#include <sys/disklabel.h>
|
||||
@ -49,6 +55,9 @@ static char sccsid[] = "@(#)mkswapconf.c 8.1 (Berkeley) 6/6/93";
|
||||
|
||||
#define ns(s) strdup(s)
|
||||
|
||||
void initdevtable __P((void));
|
||||
|
||||
void
|
||||
swapconf()
|
||||
{
|
||||
register struct file_list *fl;
|
||||
@ -72,7 +81,6 @@ do_swap(fl)
|
||||
char newswapname[80];
|
||||
char swapname[80];
|
||||
register struct file_list *swap;
|
||||
dev_t dev;
|
||||
|
||||
if (eq(fl->f_fn, "generic")) {
|
||||
fl = fl->f_next;
|
||||
@ -81,10 +89,8 @@ do_swap(fl)
|
||||
(void) sprintf(swapname, "swap%s.c", fl->f_fn);
|
||||
(void) sprintf(newswapname, "swap%s.c.new", fl->f_fn);
|
||||
fp = fopen(path(newswapname), "w");
|
||||
if (fp == 0) {
|
||||
perror(path(newswapname));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path(newswapname));
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <sys/conf.h>\n");
|
||||
fprintf(fp, "\n");
|
||||
@ -144,16 +150,13 @@ nametodev(name, defunit, defslice, defpartition)
|
||||
register struct devdescription *dp;
|
||||
|
||||
cp = name;
|
||||
if (cp == 0) {
|
||||
fprintf(stderr, "config: internal error, nametodev\n");
|
||||
exit(1);
|
||||
}
|
||||
if (cp == 0)
|
||||
errx(1, "internal error, nametodev");
|
||||
while (*cp && !isdigit(*cp))
|
||||
cp++;
|
||||
unit = *cp ? atoi(cp) : defunit;
|
||||
if (unit < 0 || unit > 31) {
|
||||
fprintf(stderr,
|
||||
"config: %s: invalid device specification, unit out of range\n", name);
|
||||
warnx("%s: invalid device specification, unit out of range", name);
|
||||
unit = defunit; /* carry on more checking */
|
||||
}
|
||||
if (*cp) {
|
||||
@ -167,8 +170,8 @@ nametodev(name, defunit, defslice, defpartition)
|
||||
if (*cp) {
|
||||
slice = atoi(cp);
|
||||
if (slice < 0 || slice >= MAX_SLICES - 1) {
|
||||
fprintf(stderr,
|
||||
"config: %s: invalid device specification, slice out of range\n", cp);
|
||||
warnx("%s: invalid device specification, slice out of range",
|
||||
cp);
|
||||
slice = defslice;
|
||||
}
|
||||
if (slice != COMPATIBILITY_SLICE)
|
||||
@ -180,8 +183,7 @@ nametodev(name, defunit, defslice, defpartition)
|
||||
}
|
||||
partition = *cp ? *cp : defpartition;
|
||||
if (partition < 'a' || partition > 'h') {
|
||||
fprintf(stderr,
|
||||
"config: %c: invalid device specification, bad partition\n", *cp);
|
||||
warnx("%c: invalid device specification, bad partition", *cp);
|
||||
partition = defpartition; /* carry on */
|
||||
}
|
||||
if (devtablenotread)
|
||||
@ -190,7 +192,7 @@ nametodev(name, defunit, defslice, defpartition)
|
||||
if (eq(name, dp->dev_name))
|
||||
break;
|
||||
if (dp == 0) {
|
||||
fprintf(stderr, "config: %s: unknown device\n", name);
|
||||
warnx("%s: unknown device", name);
|
||||
return (NODEV);
|
||||
}
|
||||
return (makedev(dp->dev_major,
|
||||
@ -229,6 +231,7 @@ devtoname(dev)
|
||||
return (ns(buf));
|
||||
}
|
||||
|
||||
void
|
||||
initdevtable()
|
||||
{
|
||||
char linebuf[256];
|
||||
@ -239,10 +242,8 @@ initdevtable()
|
||||
|
||||
(void) sprintf(buf, "../conf/devices.%s", machinename);
|
||||
fp = fopen(buf, "r");
|
||||
if (fp == NULL) {
|
||||
fprintf(stderr, "config: can't open %s\n", buf);
|
||||
exit(1);
|
||||
}
|
||||
if (fp == NULL)
|
||||
errx(1, "can't open %s", buf);
|
||||
while(fgets(linebuf,256,fp)) {
|
||||
/*******************************\
|
||||
* Allow a comment *
|
||||
|
@ -32,7 +32,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkubglue.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -48,10 +52,8 @@ ubglue()
|
||||
register struct device *dp, *mp;
|
||||
|
||||
fp = fopen(path("ubglue.s"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ubglue.s"));
|
||||
exit(1);
|
||||
}
|
||||
if (fp == 0)
|
||||
err(1, "%s", path("ubglue.s"));
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp != 0 && mp != (struct device *)-1 &&
|
||||
|
Loading…
Reference in New Issue
Block a user