From: downsj Date: Mon, 3 Feb 1997 04:22:03 +0000 (+0000) Subject: It's gone. No more. Bye! X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=466495b506373363bb07b3b79e007ed6b79ede4f;p=openbsd It's gone. No more. Bye! --- diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index de5733732af..f4734c94eea 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.23 1997/01/31 14:43:40 graichen Exp $ +# $OpenBSD: Makefile,v 1.24 1997/02/03 04:22:03 downsj Exp $ # not yet done: catman @@ -21,14 +21,14 @@ SUBDIR+=ypbind yppoll ypset ypserv .endif .if make(clean) || make(cleandir) || make(obj) -SUBDIR+=apm apmd bad144 config.old dbsym eeprom fdformat grfconfig grfinfo \ +SUBDIR+=apm apmd bad144 dbsym eeprom fdformat grfconfig grfinfo \ hilinfo iteconfig pcmciad screenblank videomode .elif ${MACHINE} == "amiga" SUBDIR+=grfconfig iteconfig screenblank videomode .elif ${MACHINE} == "atari" SUBDIR+=iteconfig .elif ${MACHINE} == "hp300" -SUBDIR+=grfinfo hilinfo config.old +SUBDIR+=grfinfo hilinfo .elif ${MACHINE} == "i386" SUBDIR+=bad144 apm apmd fdformat pcmciad .elif ${MACHINE} == "pmax" diff --git a/usr.sbin/config.old/Makefile b/usr.sbin/config.old/Makefile deleted file mode 100644 index 845e33cf155..00000000000 --- a/usr.sbin/config.old/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# $OpenBSD: Makefile,v 1.2 1997/01/12 07:43:30 downsj Exp $ -# from: @(#)Makefile 5.12 (Berkeley) 1/16/91 -# $NetBSD: Makefile,v 1.11 1995/08/17 17:22:06 thorpej Exp $ - -PROG= config.old -BINDIR= /usr/sbin -CFLAGS+=-I. -I${.CURDIR} -SRCS= config.c main.c lang.c mkioconf.c mkmakefile.c mkglue.c mkheaders.c \ - mkswapconf.c specfile.c -MAN= config.old.8 -LDADD+= -ll -DPADD+= ${LIBL} -CLEANFILES+=y.tab.h lang.c config.c y.tab.c - -.include diff --git a/usr.sbin/config.old/config.h b/usr.sbin/config.old/config.h deleted file mode 100644 index 871b4db0b84..00000000000 --- a/usr.sbin/config.old/config.h +++ /dev/null @@ -1,208 +0,0 @@ -/* $OpenBSD: config.h,v 1.2 1997/01/12 07:43:31 downsj Exp $ */ -/* $NetBSD: config.h,v 1.20 1996/06/10 02:32:20 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * from: @(#)config.h 5.14 (Berkeley) 7/1/91 - */ - -/* - * Config. - */ -#include -#include -#include - -#define NODEV ((dev_t)-1) - -struct name_expr { - int type; - char *name; - struct name_expr *next,*left,*right; -}; - -struct file_list { - struct file_list *f_next; - char *f_fn; /* the name */ - u_char f_type; /* see below */ - u_char f_flags; /* see below */ - u_char f_was_driver; /* to handle un-included pseudo-drivers*/ - u_char f_needs_count; /* to handle un-included pseudo-drivers*/ - char *f_special; /* special make rule if present */ - struct name_expr *f_needs; - struct name_expr *f_countname; - /* - * Random values: - * swap space parameters for swap areas - * root device, etc. for system specifications - */ - union { - struct { /* when swap specification */ - dev_t fuw_swapdev; - int fuw_swapsize; - } fuw; - struct { /* when system specification */ - dev_t fus_rootdev; - dev_t fus_dumpdev; - } fus; - struct { /* when component dev specification */ - dev_t fup_compdev; - int fup_compinfo; - } fup; - } fun; -#define f_swapdev fun.fuw.fuw_swapdev -#define f_swapsize fun.fuw.fuw_swapsize -#define f_rootdev fun.fus.fus_rootdev -#define f_dumpdev fun.fus.fus_dumpdev -#define f_compdev fun.fup.fup_compdev -#define f_compinfo fun.fup.fup_compinfo -}; - -/* - * Types. - */ -#define DRIVER 1 -#define NORMAL 2 -#define INVISIBLE 3 -#define PROFILING 4 -#define SYSTEMSPEC 5 -#define SWAPSPEC 6 -#define COMPDEVICE 7 -#define COMPSPEC 8 - -/* - * Attributes (flags). - */ -#define CONFIGDEP 0x1 -#define DUPLICATE 0x2 - -struct idlst { - char *id; - struct idlst *id_next; -}; - -struct device { - int d_type; /* CONTROLLER, DEVICE, bus adaptor */ - struct device *d_conn; /* what it is connected to */ - char *d_name; /* name of device (e.g. rk11) */ - struct idlst *d_vec; /* interrupt vectors */ - int d_pri; /* interrupt priority */ - int d_addr; /* address of csr */ - int d_unit; /* unit number */ - int d_drive; /* drive number */ - int d_slave; /* slave number */ -#define QUES -1 /* -1 means '?' */ -#define UNKNOWN -2 /* -2 means not set yet */ - int d_dk; /* if init 1 set to number for iostat */ - int d_flags; /* flags for device init */ - char *d_port; /* io port base manifest constant */ - int d_portn; /* io port base (if number not manifest) */ - char *d_mask; /* interrupt mask */ - int d_maddr; /* io memory base */ - int d_msize; /* io memory size */ - int d_drq; /* DMA request */ - int d_irq; /* interrupt request */ - int d_seq; /* sequential number */ - struct device *d_next; /* Next one in list */ -}; -#define TO_NEXUS (struct device *)-1 -#define TO_VBA (struct device *)-2 - -struct config { - char *c_dev; - char *s_sysname; -}; - -/* - * Config has a global notion of which machine type is - * being used. It uses the name of the machine in choosing - * files and directories. Thus if the name of the machine is ``vax'', - * it will build from ``Makefile.vax'' and use ``../vax/inline'' - * in the makerules, etc. - */ -int machine; -char *machinename; -char *machinearch; -#define MACHINE_HP300 1 - -/* - * For each machine, a set of CPU's may be specified as supported. - * These and the options (below) are put in the C flags in the makefile. - */ -struct cputype { - char *cpu_name; - struct cputype *cpu_next; -} *cputype; - -/* - * A set of options may also be specified which are like CPU types, - * but which may also specify values for the options. - * A separate set of options may be defined for make-style options. - */ -struct opt { - char *op_name; - char *op_value; - struct opt *op_next; -} *opt, *mkopt; - -char *ident; -char *ns(); -char *tc(); -char *qu(); -char *get_word(); -char *get_quoted_word(); -char *path(); -char *raisestr(); - -int do_trace; - -struct device *connect(); -struct device *dtab; -dev_t nametodev(); -char *devtoname(); - -char errbuf[80]; -int yyline; - -struct file_list *ftab, *conf_list, **confp, *comp_list, **compp; - -int zone, hadtz; -int dst; -int profiling; -int debugging; - -int maxusers; -u_int loadaddress; -int fatal_errors; - -#define eq(a,b) (!strcmp(a,b)) diff --git a/usr.sbin/config.old/config.old.8 b/usr.sbin/config.old/config.old.8 deleted file mode 100644 index 8f3f748d2ca..00000000000 --- a/usr.sbin/config.old/config.old.8 +++ /dev/null @@ -1,174 +0,0 @@ -.\" $OpenBSD: config.old.8,v 1.2 1997/01/12 07:43:31 downsj Exp $ -.\" $NetBSD: config.old.8,v 1.9 1995/08/17 17:22:09 thorpej Exp $ -.\" -.\" Copyright (c) 1980, 1991 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" from: @(#)config.8 6.5 (Berkeley) 3/16/91 -.\" -.Dd March 16, 1991 -.Dt CONFIG.OLD 8 -.Os BSD 4 -.Sh NAME -.Nm config.old -.Nd build system configuration files -.Sh SYNOPSIS -.Nm config.old -.Op Fl gkp -.Ar SYSTEM_NAME -.Sh DESCRIPTION -.Pp -.Nm config.old -builds a set of system configuration files from the file -.Ar SYSTEM_NAME -which describes -the system to configure. -A second file -tells -.Nm config.old -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. -(see the -.Sx FILES -section below) -.Pp -Available option and operand: -.Pp -.Bl -tag -width SYSTEM_NAME -.It Fl g -If the -.Fl g -option is supplied, -.Nm config.old -will configure a system for debugging. -.It Fl k -If the -.Fl k -option is supplied, -.Nm config.old -will not fail immediately on detection of a configuration error. -.It Fl p -If the -.Fl p -option is supplied, -.Nm config.old -will configure a system for profiling; for example, -.Xr kgmon 8 -and -.Xr gprof 1 . - -.It Ar SYSTEM_NAME -specifies the name of the system configuration file -containing device specifications, configuration options -and other system parameters for one system configuration. -.El -.Pp -.Nm config.old -should be run from the -.Pa conf -subdirectory of the system source (usually -.Pa /sys/arch/ARCH/conf ) . -.Nm Config.old -assumes the directory -.Pa ../compile/SYSTEM_NAME -exists and places all output files there. -The output of -.Nm config.old -consists of a number of files; for the -.Tn i386 , -they are: -.Pa ioconf.c , -a description -of what I/O devices are attached to the system; -.Pa vector.s , -a set of interrupt service routines for devices -attached to the bus plus -offsets into a structure used for counting per-device interrupts; -.Pa Makefile , -used by -.Xr make 1 -in building the system; -header files, -definitions of -the number of various devices that will be compiled into the system; -swap configuration files, -definitions for -the disk areas to be used for swapping, the root file system, -argument processing, and system dumps. -.Pp -After running -.Nm config.old , -it is necessary to run -.Dq Li make depend -in the directory where the new makefile -was created. -.Nm Config.old -prints a reminder of this when it completes. -.Pp -If any other error messages are produced by -.Nm config.old , -the problems in the configuration file should be corrected and -.Nm config.old -should be run again. -Attempts to compile a system that had configuration errors -are likely to fail. -.Sh FILES -.Bl -tag -width /sys/arch/i386/conf/Makefile.i386 -compact -.It Pa /sys/arch/i386/conf/Makefile.i386 -generic makefile for the -.Tn i386 -.It Pa /sys/conf/files.oldconf -list of common files system is built from -.It Pa /sys/arch/i386/conf/files.i386.oldconf -list of -.Tn i386 -specific files -.It Pa /sys/arch/i386/conf/devices.i386.oldconf -name to major device mapping file for the -.Tn i386 -.It Pa /sys/arch/i386/conf/files.oldconf. Ns Em ERNIE -list of files specific to -.Em ERNIE -system -.El -.Sh SEE ALSO -The SYNOPSIS portion of each device in section 4. -.Rs -.%T "Building 4.3 BSD UNIX System with Config" -.Re -.Sh BUGS -The line numbers reported in error messages are usually off by one. -.Sh HISTORY -The -.Nm -command appeared in -.Bx 4.1 . diff --git a/usr.sbin/config.old/config.y b/usr.sbin/config.old/config.y deleted file mode 100644 index 20392639f96..00000000000 --- a/usr.sbin/config.old/config.y +++ /dev/null @@ -1,1053 +0,0 @@ -%union { - char *str; - int val; - struct file_list *file; - struct idlst *lst; -} - -%token AND -%token ANY -%token ARGS -%token AT -%token BIO -%token COMMA -%token CONFIG -%token CONTROLLER -%token CPU -%token CSR -%token DEVICE -%token DISK -%token DRIVE -%token DRQ -%token DST -%token DUMPS -%token EQUALS -%token FLAGS -%token HIGH -%token HZ -%token IDENT -%token INTERLEAVE -%token IOMEM -%token IOSIZ -%token IRQ -%token MACHIN -%token MAJOR -%token MANUFACTURER -%token MASTER -%token MAXUSERS -%token MINOR -%token MINUS -%token NET -%token NEXUS -%token ON -%token OPTIONS -%token MAKEOPTIONS -%token PORT -%token PRIORITY -%token PRODUCT -%token PSEUDO_DEVICE -%token ROOT -%token SEMICOLON -%token SEQUENTIAL -%token SIZE -%token SLAVE -%token SWAP -%token TIMEZONE -%token TTY -%token TRACE -%token VECTOR - -%token ID -%token NUMBER -%token FPNUMBER - -%type Save_id -%type Opt_value -%type Dev -%type Id_list -%type optional_size -%type optional_sflag -%type device_name -%type major_minor -%type arg_device_spec -%type root_device_spec -%type dump_device_spec -%type swap_device_spec - -%{ -/* $OpenBSD: config.y,v 1.2 1997/01/12 07:43:32 downsj Exp $ */ -/* $NetBSD: config.y,v 1.19 1996/06/10 02:32:21 thorpej Exp $ */ - -/* - * Copyright (c) 1988 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * from: @(#)config.y 5.14 (Berkeley) 7/1/91 - */ - -#include -#include -#include "config.h" -#include "specfile.h" - -struct device cur; -struct device *curp = 0; -char *temp_id; -char *val_id; - -%} -%% -Configuration: - Many_specs - = { verifysystemspecs(); } - ; - -Many_specs: - Many_specs Spec - | - /* lambda */ - ; - -Spec: - Device_spec SEMICOLON - = { newdev(&cur); } | - Config_spec SEMICOLON - | - TRACE SEMICOLON - = { do_trace = !do_trace; } | - SEMICOLON - | - error SEMICOLON - ; - -Config_spec: - MACHIN Save_id - = { - if (!strcmp($2, "hp300")) { - machine = MACHINE_HP300; - machinename = "hp300"; - machinearch = "m68k"; - } else - yyerror("Unknown machine type"); - } | - CPU Save_id - = { - struct cputype *cp = - (struct cputype *)malloc(sizeof (struct cputype)); - cp->cpu_name = ns($2); - cp->cpu_next = cputype; - cputype = cp; - free(temp_id); - } | - OPTIONS Opt_list - | - MAKEOPTIONS Mkopt_list - | - IDENT ID - = { ident = ns($2); } | - System_spec - | - HZ NUMBER - = { yyerror("HZ specification obsolete; delete"); } | - TIMEZONE NUMBER - = { zone = 60 * $2; check_tz(); } | - TIMEZONE NUMBER DST NUMBER - = { zone = 60 * $2; dst = $4; check_tz(); } | - TIMEZONE NUMBER DST - = { zone = 60 * $2; dst = 1; check_tz(); } | - TIMEZONE FPNUMBER - = { zone = $2; check_tz(); } | - TIMEZONE FPNUMBER DST NUMBER - = { zone = $2; dst = $4; check_tz(); } | - TIMEZONE FPNUMBER DST - = { zone = $2; dst = 1; check_tz(); } | - TIMEZONE MINUS NUMBER - = { zone = -60 * $3; check_tz(); } | - TIMEZONE MINUS NUMBER DST NUMBER - = { zone = -60 * $3; dst = $5; check_tz(); } | - TIMEZONE MINUS NUMBER DST - = { zone = -60 * $3; dst = 1; check_tz(); } | - TIMEZONE MINUS FPNUMBER - = { zone = -$3; check_tz(); } | - TIMEZONE MINUS FPNUMBER DST NUMBER - = { zone = -$3; dst = $5; check_tz(); } | - TIMEZONE MINUS FPNUMBER DST - = { zone = -$3; dst = 1; check_tz(); } | - MAXUSERS NUMBER - = { maxusers = $2; }; - -System_spec: - System_id System_parameter_list - = { checksystemspec(*confp); } - ; - -System_id: - CONFIG Save_id - = { mkconf($2); } - ; - -System_parameter_list: - System_parameter_list System_parameter - | System_parameter - ; - -System_parameter: - addr_spec - | swap_spec - | root_spec - | dump_spec - | arg_spec - ; - -addr_spec: - AT NUMBER - = { loadaddress = $2; }; - ; - -swap_spec: - SWAP optional_on swap_device_list - ; - -swap_device_list: - swap_device_list AND swap_device - | swap_device - ; - -swap_device: - swap_device_spec optional_size optional_sflag - = { mkswap(*confp, $1, $2, $3); } - ; - -swap_device_spec: - device_name - = { - struct file_list *fl = newswap(); - - if (eq($1, "generic") || eq($1, "nfs")) - fl->f_fn = $1; - else { - fl->f_swapdev = nametodev($1, 0, 'b'); - fl->f_fn = devtoname(fl->f_swapdev); - } - $$ = fl; - } - | major_minor - = { - struct file_list *fl = newswap(); - - fl->f_swapdev = $1; - fl->f_fn = devtoname($1); - $$ = fl; - } - ; - -root_spec: - ROOT optional_on root_device_spec - = { - struct file_list *fl = *confp; - - if (fl && fl->f_rootdev != NODEV) - yyerror("extraneous root device specification"); - else - fl->f_rootdev = $3; - } - ; - -root_device_spec: - device_name - = { $$ = nametodev($1, 0, 'a'); } - | major_minor - ; - -dump_spec: - DUMPS optional_on dump_device_spec - = { - struct file_list *fl = *confp; - - if (fl && fl->f_dumpdev != NODEV) - yyerror("extraneous dump device specification"); - else - fl->f_dumpdev = $3; - } - - ; - -dump_device_spec: - device_name - = { $$ = nametodev($1, 0, 'b'); } - | major_minor - ; - -arg_spec: - ARGS optional_on arg_device_spec - = { yyerror("arg device specification obsolete, ignored"); } - ; - -arg_device_spec: - device_name - = { $$ = nametodev($1, 0, 'b'); } - | major_minor - ; - -major_minor: - MAJOR NUMBER MINOR NUMBER - = { $$ = makedev($2, $4); } - ; - -optional_on: - ON - | /* empty */ - ; - -optional_size: - SIZE NUMBER - = { $$ = $2; } - | /* empty */ - = { $$ = 0; } - ; - -optional_sflag: - SEQUENTIAL - = { $$ = 2; } - | /* empty */ - = { $$ = 0; } - ; - -device_name: - Save_id - = { $$ = $1; } - | Save_id NUMBER - = { - char buf[80]; - - (void) sprintf(buf, "%s%d", $1, $2); - $$ = ns(buf); free($1); - } - | Save_id NUMBER ID - = { - char buf[80]; - - (void) sprintf(buf, "%s%d%s", $1, $2, $3); - $$ = ns(buf); free($1); - } - ; - -Opt_list: - Opt_list COMMA Option - | - Option - ; - -Option: - Save_id - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = opt; - op->op_value = 0; - opt = op; - free(temp_id); - } | - Save_id EQUALS Opt_value - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = opt; - op->op_value = ns($3); - opt = op; - free(temp_id); - free(val_id); - } ; - -Opt_value: - ID - = { $$ = val_id = ns($1); } | - NUMBER - = { - char nb[16]; - (void) sprintf(nb, "%d", $1); - $$ = val_id = ns(nb); - } ; - - -Save_id: - ID - = { $$ = temp_id = ns($1); } - ; - -Mkopt_list: - Mkopt_list COMMA Mkoption - | - Mkoption - ; - -Mkoption: - Save_id EQUALS Opt_value - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = mkopt; - op->op_value = ns($3); - mkopt = op; - free(temp_id); - free(val_id); - } ; - -Dev: - ID - = { $$ = ns($1); } - ; - -Device_spec: - DEVICE Dev_name Dev_info Int_spec - = { cur.d_type = DEVICE; } | - MASTER Dev_name Dev_info Int_spec - = { cur.d_type = MASTER; } | - DISK Dev_name Dev_info Int_spec - = { cur.d_dk = 1; cur.d_type = DEVICE; } | - CONTROLLER Dev_name Dev_info Int_spec - = { cur.d_type = CONTROLLER; } | - PSEUDO_DEVICE Init_dev Dev - = { - cur.d_name = $3; - cur.d_type = PSEUDO_DEVICE; - } | - PSEUDO_DEVICE Init_dev Dev NUMBER - = { - cur.d_name = $3; - cur.d_type = PSEUDO_DEVICE; - cur.d_slave = $4; - }; - -Dev_name: - Init_dev Dev NUMBER - = { - cur.d_name = $2; - cur.d_unit = $3; - }; - -Init_dev: - /* lambda */ - = { init_dev(&cur); }; - -Dev_info: - Con_info Info_list - | - /* lambda */ - ; - -Con_info: - AT Dev NUMBER - = { - if (eq(cur.d_name, "mba") || eq(cur.d_name, "uba")) { - (void) sprintf(errbuf, - "%s must be connected to a nexus", cur.d_name); - yyerror(errbuf); - } - cur.d_conn = connect($2, $3); - } | - AT NEXUS NUMBER - = { check_nexus(&cur, $3); cur.d_conn = TO_NEXUS; } | - AT MANUFACTURER NUMBER PRODUCT NUMBER - = { check_manuf_prod (&cur, $3, $5); cur.d_conn = TO_NEXUS; } ; - -Info_list: - Info_list Info - | - /* lambda */ - ; - -Info: - CSR NUMBER - = { cur.d_addr = $2; } | - DRIVE NUMBER - = { cur.d_drive = $2; } | - SLAVE NUMBER - = { - if (cur.d_conn != 0 && cur.d_conn != TO_NEXUS && - cur.d_conn->d_type == MASTER) - cur.d_slave = $2; - else - yyerror("can't specify slave--not to master"); - } | - IRQ NUMBER - = { cur.d_irq = $2; } | - DRQ NUMBER - = { cur.d_drq = $2; } | - IOMEM NUMBER - = { cur.d_maddr = $2; } | - IOSIZ NUMBER - = { cur.d_msize = $2; } | - PORT device_name - = { cur.d_port = ns($2); } | - PORT NUMBER - = { cur.d_portn = $2; } | - TTY - = { cur.d_mask = "tty"; } | - BIO - = { cur.d_mask = "bio"; } | - NET - = { cur.d_mask = "net"; } | - HIGH - = { cur.d_mask = "high"; } | - FLAGS NUMBER - = { cur.d_flags = $2; }; - -Int_spec: - VECTOR Id_list - = { cur.d_vec = $2; } | - PRIORITY NUMBER - = { cur.d_pri = $2; } | - /* lambda */ - ; - -Id_list: - Save_id - = { - struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); - a->id = $1; a->id_next = 0; $$ = a; - } | - Save_id Id_list = - { - struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); - a->id = $1; a->id_next = $2; $$ = a; - }; - -%% - -yyerror(s) - char *s; -{ - - fprintf(stderr, "config.old: line %d: %s\n", yyline + 1, s); -} - -/* - * return the passed string in a new space - */ -char * -ns(str) - register char *str; -{ - register char *cp; - - cp = malloc((unsigned)(strlen(str)+1)); - (void) strcpy(cp, str); - return (cp); -} - -/* - * add a device to the list of devices - */ -newdev(dp) - register struct device *dp; -{ - register struct device *np; - - np = (struct device *) malloc(sizeof *np); - *np = *dp; - np->d_next = 0; - if (curp == 0) - dtab = np; - else - curp->d_next = np; - curp = np; -} - -/* - * note that a configuration should be made - */ -mkconf(sysname) - char *sysname; -{ - register struct file_list *fl, **flp; - register struct name_expr *expr; - - fl = (struct file_list *) malloc(sizeof *fl); - expr = (struct name_expr *) malloc(sizeof *expr); - fl->f_type = SYSTEMSPEC; - fl->f_needs = expr; - expr->type = T_IDENTIFIER; - expr->name = sysname; - fl->f_rootdev = NODEV; - fl->f_dumpdev = NODEV; - fl->f_fn = 0; - fl->f_next = 0; - for (flp = confp; *flp; flp = &(*flp)->f_next) - ; - *flp = fl; - confp = flp; -} - -struct file_list * -newflist(ftype) - u_char ftype; -{ - struct file_list *fl = (struct file_list *)malloc(sizeof (*fl)); - - fl->f_type = ftype; - fl->f_next = 0; - fl->f_swapdev = NODEV; - fl->f_swapsize = 0; - fl->f_needs = 0; - fl->f_fn = 0; - return (fl); -} - -struct file_list * -newswap() -{ - struct file_list *fl = (struct file_list *)malloc(sizeof (*fl)); - - fl->f_type = SWAPSPEC; - fl->f_next = 0; - fl->f_swapdev = NODEV; - fl->f_swapsize = 0; - fl->f_needs = 0; - fl->f_fn = 0; - return (fl); -} - -/* - * Add a swap device to the system's configuration - */ -mkswap(system, fl, size) - struct file_list *system, *fl; - int size; -{ - register struct file_list **flp; - char name[80]; - - if (system == 0 || system->f_type != SYSTEMSPEC) { - yyerror("\"swap\" spec precedes \"config\" specification"); - return; - } - if (size < 0) { - yyerror("illegal swap partition size"); - return; - } - /* - * Append swap description to the end of the list. - */ - flp = &system->f_next; - for (; *flp && (*flp)->f_type == SWAPSPEC; flp = &(*flp)->f_next) - ; - fl->f_next = *flp; - *flp = fl; - fl->f_swapsize = size; - /* - * If first swap device for this system, - * set up f_fn field to insure swap - * files are created with unique names. - */ - if (system->f_fn) - return; - if (eq(fl->f_fn, "generic") || eq(fl->f_fn, "nfs")) - system->f_fn = ns(fl->f_fn); - else - system->f_fn = ns(system->f_needs->name); -} - -mkcomp(dp) - register struct device *dp; -{ - register struct file_list *fl, **flp; - register struct name_expr *expr; - char buf[80]; - - fl = (struct file_list *) malloc(sizeof *fl); - expr = (struct name_expr *) malloc(sizeof *expr); - - fl->f_needs = expr; - expr->type = T_DEVICE_DRIVER; - - fl->f_type = COMPDEVICE; - fl->f_compinfo = dp->d_unit; - fl->f_fn = ns(dp->d_name); - (void) sprintf(buf, "%s%d", dp->d_name, dp->d_unit); - fl->f_needs->name = ns(buf); - fl->f_next = 0; - for (flp = compp; *flp; flp = &(*flp)->f_next) - ; - *flp = fl; - compp = flp; -} - -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"); - return; - } - /* - * Append description to the end of the list. - */ - flp = &compdev->f_next; - for (; *flp && (*flp)->f_type == COMPSPEC; flp = &(*flp)->f_next) - ; - fl->f_next = *flp; - *flp = fl; -} - -/* - * find the pointer to connect to the given device and number. - * returns 0 if no such device and prints an error message - */ -struct device * -connect(dev, num) - register char *dev; - register int num; -{ - register struct device *dp; - struct device *huhcon(); - - if (num == QUES) - return (huhcon(dev)); - for (dp = dtab; dp != 0; dp = dp->d_next) { - if ((num != dp->d_unit) || !eq(dev, dp->d_name)) - continue; - if (dp->d_type != CONTROLLER && dp->d_type != MASTER) { - (void) sprintf(errbuf, - "%s connected to non-controller", dev); - yyerror(errbuf); - return (0); - } - return (dp); - } - (void) sprintf(errbuf, "%s %d not defined", dev, num); - yyerror(errbuf); - return (0); -} - -/* - * connect to an unspecific thing - */ -struct device * -huhcon(dev) - register char *dev; -{ - register struct device *dp, *dcp; - struct device rdev; - int oldtype; - - /* - * First make certain that there are some of these to wildcard on - */ - for (dp = dtab; dp != 0; dp = dp->d_next) - if (eq(dp->d_name, dev)) - break; - if (dp == 0) { - (void) sprintf(errbuf, "no %s's to wildcard", dev); - yyerror(errbuf); - return (0); - } - oldtype = dp->d_type; - dcp = dp->d_conn; - /* - * Now see if there is already a wildcard entry for this device - * (e.g. Search for a "uba ?") - */ - for (; dp != 0; dp = dp->d_next) - if (eq(dev, dp->d_name) && dp->d_unit == -1) - break; - /* - * If there isn't, make one because everything needs to be connected - * to something. - */ - if (dp == 0) { - dp = &rdev; - init_dev(dp); - dp->d_unit = QUES; - dp->d_name = ns(dev); - dp->d_type = oldtype; - newdev(dp); - dp = curp; - /* - * Connect it to the same thing that other similar things are - * connected to, but make sure it is a wildcard unit - * (e.g. up connected to sc ?, here we make connect sc? to a - * uba?). If other things like this are on the NEXUS or - * if they aren't connected to anything, then make the same - * connection, else call ourself to connect to another - * unspecific device. - */ - if (dcp == TO_NEXUS || dcp == 0) - dp->d_conn = dcp; - else - dp->d_conn = connect(dcp->d_name, QUES); - } - return (dp); -} - -init_dev(dp) - register struct device *dp; -{ - - dp->d_name = "OHNO!!!"; - dp->d_type = DEVICE; - dp->d_conn = 0; - dp->d_vec = 0; - dp->d_addr = dp->d_pri = dp->d_flags = dp->d_dk = 0; - dp->d_slave = dp->d_drive = dp->d_unit = UNKNOWN; - dp->d_port = (char *)0; - dp->d_portn = 0; - dp->d_irq = -2; - dp->d_drq = -1; - dp->d_maddr = 0; - dp->d_msize = 0; - dp->d_mask = "null"; -} - -/* - * make certain that this is a reasonable type of thing to connect to a nexus - */ -check_nexus(dev, num) - register struct device *dev; - int num; -{ - - switch (machine) { - - case MACHINE_HP300: - if (num != QUES) - dev->d_addr = num; - break; - } -} - -/* - * build a nexus ID out of manufacturer and product code - */ -check_manuf_prod (dev, manuf, prod) - register struct device *dev; - int manuf, prod; -{ - /* need either both wildcard or none */ - if ((manuf == QUES) != (prod == QUES)) - yyerror ("manufacturer and product must either be both set or both wildcard."); - - /* enough to check one now */ - if (manuf != QUES) - dev->d_addr = ((manuf & 0xffff) << 16) | (prod & 0xffff); -} - -/* - * Check the timezone to make certain it is sensible - */ - -check_tz() -{ - if (abs(zone) > 12 * 60) - yyerror("timezone is unreasonable"); - else - hadtz = 1; -} - -/* - * Check system specification and apply defaulting - * rules on root, argument, dump, and swap devices. - */ -checksystemspec(fl) - register struct file_list *fl; -{ - char buf[BUFSIZ]; - register struct file_list *swap; - int generic, nfs; - - if (fl == 0 || fl->f_type != SYSTEMSPEC) { - yyerror("internal error, bad system specification"); - exit(1); - } - swap = fl->f_next; - generic = swap && swap->f_type == SWAPSPEC && eq(swap->f_fn, "generic"); - nfs = swap && swap->f_type == SWAPSPEC && eq(swap->f_fn, "nfs"); - if (fl->f_rootdev == NODEV && !generic && !nfs) { - yyerror("no root device specified"); - exit(1); - } - /* - * Default swap area to be in 'b' partition of root's - * device. If root specified to be other than on 'a' - * partition, give warning, something probably amiss. - */ - if (swap == 0 || swap->f_type != SWAPSPEC) { - dev_t dev; - - swap = newswap(); - dev = fl->f_rootdev; - if (minor(dev) & 07) { - (void) sprintf(buf, -"Warning, swap defaulted to 'b' partition with root on '%c' partition", - (minor(dev) & 07) + 'a'); - yyerror(buf); - } - swap->f_swapdev = - makedev(major(dev), (minor(dev) &~ 07) | ('b' - 'a')); - swap->f_fn = devtoname(swap->f_swapdev); - mkswap(fl, swap, 0); - } - /* - * Make sure a generic swap isn't specified, along with - * other stuff (user must really be confused). - */ - if (generic) { - if (fl->f_rootdev != NODEV) - yyerror("root device specified with generic swap"); - if (fl->f_dumpdev != NODEV) - yyerror("dump device specified with generic swap"); - return; - } - /* - * Default dump device and warn if place is not a - * swap area. - */ - if (fl->f_dumpdev == NODEV) - fl->f_dumpdev = swap->f_swapdev; - if (fl->f_dumpdev != swap->f_swapdev) { - struct file_list *p = swap->f_next; - - for (; p && p->f_type == SWAPSPEC; p = p->f_next) - if (fl->f_dumpdev == p->f_swapdev) - return; - (void) sprintf(buf, - "Warning: dump device is not a swap partition"); - yyerror(buf); - } -} - -/* - * Verify all devices specified in the system specification - * are present in the device specifications. - */ -verifysystemspecs() -{ - register struct file_list *fl; - dev_t checked[50], *verifyswap(); - register dev_t *pchecked = checked; - - for (fl = conf_list; fl; fl = fl->f_next) { - if (fl->f_type != SYSTEMSPEC) - continue; - if (!finddev(fl->f_rootdev)) - deverror(fl->f_needs->name, "root"); - *pchecked++ = fl->f_rootdev; - pchecked = verifyswap(fl->f_next, checked, pchecked); -#define samedev(dev1, dev2) \ - ((minor(dev1) &~ 07) != (minor(dev2) &~ 07)) - if (!alreadychecked(fl->f_dumpdev, checked, pchecked)) { - if (!finddev(fl->f_dumpdev)) - deverror(fl->f_needs->name, "dump"); - *pchecked++ = fl->f_dumpdev; - } - } -} - -/* - * Do as above, but for swap devices. - */ -dev_t * -verifyswap(fl, checked, pchecked) - register struct file_list *fl; - dev_t checked[]; - register dev_t *pchecked; -{ - - for (;fl && fl->f_type == SWAPSPEC; fl = fl->f_next) { - if (eq(fl->f_fn, "generic") || eq(fl->f_fn,"nfs")) - continue; - if (alreadychecked(fl->f_swapdev, checked, pchecked)) - continue; - if (!finddev(fl->f_swapdev)) - fprintf(stderr, - "config.old: swap device %s not configured", fl->f_fn); - *pchecked++ = fl->f_swapdev; - } - return (pchecked); -} - -/* - * Verify that components of a compound device have themselves been config'ed - */ -verifycomp(fl) - register struct file_list *fl; -{ - char *dname = fl->f_needs->name; - - for (fl = fl->f_next; fl; fl = fl->f_next) { - if (fl->f_type != COMPSPEC || finddev(fl->f_compdev)) - continue; - fprintf(stderr, - "config.old: %s: component device %s not configured\n", - dname, fl->f_needs->name); - } -} - -/* - * Has a device already been checked - * for it's existence in the configuration? - */ -alreadychecked(dev, list, last) - dev_t dev, list[]; - register dev_t *last; -{ - register dev_t *p; - - for (p = list; p < last; p++) - if (samedev(*p, dev)) - return (1); - return (0); -} - -deverror(systemname, devtype) - char *systemname, *devtype; -{ - - fprintf(stderr, "config.old: %s: %s device not configured\n", - systemname, devtype); -} - -/* - * Look for the device in the list of - * configured hardware devices. Must - * take into account stuff wildcarded. - */ -/*ARGSUSED*/ -finddev(dev) - dev_t dev; -{ - - /* punt on this right now */ - return (1); -} diff --git a/usr.sbin/config.old/lang.l b/usr.sbin/config.old/lang.l deleted file mode 100644 index 25e48bbb7b2..00000000000 --- a/usr.sbin/config.old/lang.l +++ /dev/null @@ -1,199 +0,0 @@ -%{ -/* $OpenBSD: lang.l,v 1.2 1997/01/12 07:43:33 downsj Exp $ */ -/* $NetBSD: lang.l,v 1.13 1996/06/10 02:32:23 thorpej Exp $ */ - -/*- - * Copyright (c) 1980 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * from: @(#)lang.l 5.8 (Berkeley) 4/19/91 - */ - -#include -#include "y.tab.h" -#include "config.h" - -#define tprintf if (do_trace) printf - -/* - * Key word table - */ - -struct kt { - char *kt_name; - int kt_val; -} key_words[] = { - { "and", AND }, - { "args", ARGS }, - { "at", AT }, - { "config", CONFIG }, - { "controller", CONTROLLER }, - { "cpu", CPU }, - { "csr", CSR }, - { "device", DEVICE }, - { "disk", DISK }, - { "drive", DRIVE }, - { "dst", DST }, - { "dumps", DUMPS }, - { "flags", FLAGS }, - { "hz", HZ }, - { "ident", IDENT }, - { "interleave", INTERLEAVE }, - { "machine", MACHIN }, - { "major", MAJOR }, - { "makeoptions", MAKEOPTIONS }, - { "master", MASTER }, - { "maxusers", MAXUSERS }, - { "minor", MINOR }, - { "nexus", NEXUS }, - { "on", ON }, - { "options", OPTIONS }, - { "priority", PRIORITY }, - { "pseudo-device",PSEUDO_DEVICE }, - { "root", ROOT }, - { "sequential", SEQUENTIAL }, -#if MACHINE_HP300 - { "scode", NEXUS }, -#endif - { "size", SIZE }, - { "slave", SLAVE }, - { "swap", SWAP }, - { "tape", DEVICE }, - { "timezone", TIMEZONE }, - { "trace", TRACE }, - { "vector", VECTOR }, - { 0, 0 }, -}; -%} -WORD [A-Za-z_]([A-Za-z_0-9]+[A-Za-z_])*[-A-Za-z_]* -%% -{WORD} { - int i; - - if ((i = kw_lookup(yytext)) == -1) - { - yylval.str = yytext; - tprintf("id(%s) ", yytext); - return ID; - } - tprintf("(%s) ", yytext); - return i; - } -\"([^\"]|\\\")*\" { - yytext[strlen(yytext)-1] = '\0'; - yylval.str = yytext + 1; - tprintf("QID: %s", yylval.str); - return ID; - } -0[0-7]* { - yylval.val = octal(yytext); - tprintf("#O:%o ", yylval.val); - return NUMBER; - } -0x[0-9a-fA-F]+ { - yylval.val = hex(yytext); - tprintf("#X:%x ", yylval.val); - return NUMBER; - } -[1-9][0-9]* { - yylval.val = atoi(yytext); - tprintf("#D:%d ", yylval.val); - return NUMBER; - } -[0-9]"."[0-9]* { - double atof(); - yylval.val = (int) (60 * atof(yytext) + 0.5); - return FPNUMBER; - } -"-" { - return MINUS; - } -"?" { - yylval.val = -1; - tprintf("? "); - return NUMBER; - } -\n/[ \t] { - yyline++; - tprintf("\n... "); - } -\n { - yyline++; - tprintf("\n"); - return SEMICOLON; - } -#.* { /* Ignored (comment) */; } -[ \t]* { /* Ignored (white space) */; } -";" { return SEMICOLON; } -"," { return COMMA; } -"=" { return EQUALS; } -"@" { return AT; } -. { return yytext[0]; } - -%% -/* - * kw_lookup - * Look up a string in the keyword table. Returns a -1 if the - * string is not a keyword otherwise it returns the keyword number - */ - -kw_lookup(word) -register char *word; -{ - register struct kt *kp; - - for (kp = key_words; kp->kt_name != 0; kp++) - if (eq(word, kp->kt_name)) - return kp->kt_val; - return -1; -} - -/* - * Number conversion routines - */ - -octal(str) -char *str; -{ - int num; - - (void) sscanf(str, "%o", &num); - return num; -} - -hex(str) -char *str; -{ - int num; - - (void) sscanf(str+2, "%x", &num); - return num; -} diff --git a/usr.sbin/config.old/main.c b/usr.sbin/config.old/main.c deleted file mode 100644 index b1e94dbfd2d..00000000000 --- a/usr.sbin/config.old/main.c +++ /dev/null @@ -1,311 +0,0 @@ -/* $OpenBSD: main.c,v 1.3 1997/01/15 23:43:54 millert Exp $ */ -/* $NetBSD: main.c,v 1.14 1996/06/10 02:32:24 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -char copyright[] = -"@(#) Copyright (c) 1980 Regents of the University of California.\n\ - All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)main.c 5.17 (Berkeley) 7/1/91";*/ -static char rcsid[] = "$NetBSD: main.c,v 1.14 1996/06/10 02:32:24 thorpej Exp $"; -#endif /* not lint */ - -#include -#include -#include -#include -#include -#include "y.tab.h" -#include "config.h" - -static char *PREFIX; - -/* - * Config builds a set of files for building a UNIX - * system given a description of the desired system. - */ -main(argc, argv) - int argc; - char **argv; -{ - - extern char *optarg; - extern int optind; - struct stat buf; - int ch; - char *p; - - fatal_errors =1; - while ((ch = getopt(argc, argv, "gpk")) != -1) - switch (ch) { - case 'g': - debugging++; - break; - case 'p': - profiling++; - break; - case 'k': - fatal_errors=0; - break; - case '?': - default: - goto usage; - } - argc -= optind; - argv += optind; - - if (argc != 1) { -usage: fputs("usage: config.old [-gkp] sysname\n", stderr); - exit(1); - } - - if (freopen(PREFIX = *argv, "r", stdin) == NULL) { - perror(PREFIX); - exit(2); - } - if (stat(p = path((char *)NULL), &buf)) { - if (mkdir(p, 0777)) { - perror(p); - exit(2); - } - } - else if ((buf.st_mode & S_IFMT) != S_IFDIR) { - fprintf(stderr, "config.old: %s isn't a directory.\n", p); - exit(2); - } - - loadaddress = -1; - dtab = NULL; - confp = &conf_list; - compp = &comp_list; - if (yyparse()) - exit(3); - switch (machine) { - - case MACHINE_HP300: - hp300_ioconf(); - hpglue(); - break; - - default: - printf("Specify machine type, e.g. ``machine hp300''\n"); - exit(1); - } - /* - * make symbolic links in compilation directory - * for "sys" (to make genassym.c work along with #include ) - * and similarly for "machine". - */ - { - char xxx[200]; - -#ifndef NO_SYMLINK - (void) sprintf(xxx, "../../include"); - (void) symlink(xxx, path("machine")); - (void) sprintf(xxx, "../../../%s/include", machinearch); - (void) symlink(xxx, path(machinearch)); -#else - sprintf (xxx, "/bin/rm -rf %s; /bin/cp -r ../include %s", - path("machine"), path("machine")); - system (xxx); - sprintf (xxx, "/bin/rm -rf %s; /bin/cp -r ../../%s/include %s", - path(machinearch), machinearch, path(machinearch)); - system (xxx); -#endif - } - makefile(); /* build Makefile */ - headers(); /* make a lot of .h files */ - swapconf(); /* swap config files */ - printf("Don't forget to run \"make depend\"\n"); - exit(0); -} - -#define is_paren(x) ((x == '(') || (x == ')')) -#define is_comment(x) (x == '#') -/* - * get_word - * returns EOF on end of file - * NULL on end of line - * pointer to the word otherwise - */ -char * -get_word(fp) - register FILE *fp; -{ - static char line[80]; - register int ch; - register char *cp; - - while ((ch = getc(fp)) != EOF) - if (ch != ' ' && ch != '\t') - break; - if (ch == EOF) - return ((char *)EOF); - if (ch == '\n') - return (NULL); - if (is_paren(ch)) { - line[0] = ch; - line[1] = '\0'; - return line; - } - if (is_comment(ch)) { - while ((ch = getc(fp)) != EOF) - if (ch == '\n') - break; - if (ch == EOF) return ((char *)EOF); - else return NULL; - } - cp = line; - *cp++ = ch; - while ((ch = getc(fp)) != EOF) { - if (isspace(ch) || is_paren(ch)) - break; - *cp++ = ch; - } - *cp = 0; - if (ch == EOF) - return ((char *)EOF); - (void) ungetc(ch, fp); - return (line); -} - -/* - * get_rword - * returns EOF on end of file - * NULL on end of line - * pointer to the word otherwise - */ -char * -get_rword(fp) - register FILE *fp; -{ - static char line[80]; - register int ch; - register char *cp; - - while ((ch = getc(fp)) != EOF) - if (ch != ' ' && ch != '\t') - break; - if (ch == EOF) - return ((char *)EOF); - if (ch == '\n') - return (NULL); - cp = line; - *cp++ = ch; - while ((ch = getc(fp)) != EOF) { - if (isspace(ch) || is_paren(ch)) - break; - *cp++ = ch; - } - *cp = 0; - if (ch == EOF) - return ((char *)EOF); - (void) ungetc(ch, fp); - return (line); -} -/* - * get_quoted_word - * like get_word but will accept something in double or single quotes - * (to allow embedded spaces). - */ -char * -get_quoted_word(fp) - register FILE *fp; -{ - static char line[256]; - register int ch; - register char *cp; - - while ((ch = getc(fp)) != EOF) - if (ch != ' ' && ch != '\t') - break; - if (ch == EOF) - return ((char *)EOF); - if (ch == '\n') - return (NULL); - cp = line; - if (ch == '"' || ch == '\'') { - register int quote = ch; - - while ((ch = getc(fp)) != EOF) { - if (ch == quote) - break; - if (ch == '\n') { - *cp = 0; - printf("config.old: missing quote reading `%s'\n", - line); - exit(2); - } - *cp++ = ch; - } - } else { - *cp++ = ch; - while ((ch = getc(fp)) != EOF) { - if (isspace(ch)) - break; - *cp++ = ch; - } - if (ch != EOF) - (void) ungetc(ch, fp); - } - *cp = 0; - if (ch == EOF) - return ((char *)EOF); - return (line); -} - -/* - * prepend the path to a filename - */ -char * -path(file) - char *file; -{ - register char *cp; - -#define CDIR "../compile/" - cp = malloc((unsigned int)(sizeof(CDIR) + strlen(PREFIX) + - (file ? strlen(file) : 0) + 2)); - (void) strcpy(cp, CDIR); - (void) strcat(cp, PREFIX); - if (file) { - (void) strcat(cp, "/"); - (void) strcat(cp, file); - } - return (cp); -} diff --git a/usr.sbin/config.old/mkglue.c b/usr.sbin/config.old/mkglue.c deleted file mode 100644 index 832304a6fc8..00000000000 --- a/usr.sbin/config.old/mkglue.c +++ /dev/null @@ -1,409 +0,0 @@ -/* $OpenBSD: mkglue.c,v 1.2 1997/01/12 07:43:34 downsj Exp $ */ -/* $NetBSD: mkglue.c,v 1.10 1995/08/17 17:22:14 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkglue.c 5.10 (Berkeley) 1/15/91";*/ -static char rcsid[] = "$NetBSD: mkglue.c,v 1.10 1995/08/17 17:22:14 thorpej Exp $"; -#endif /* not lint */ - -/* - * Make the bus adaptor interrupt glue files. - */ -#include -#include "config.h" -#include "y.tab.h" -#include - -/* - * Create the UNIBUS interrupt vector glue file. - */ -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); - } - gp = fopen(path("ubvec.s"), "w"); - if (gp == 0) { - perror(path("ubvec.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_ubavec(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_std(fp, gp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); - (void) fclose(gp); -} - -static int cntcnt = 0; /* number of interrupt counters allocated */ - -/* - * Print a UNIBUS interrupt vector. - */ -dump_ubavec(fp, vector, number) - register FILE *fp; - char *vector; - int number; -{ - char nbuf[80]; - register char *v = nbuf; - - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", - v, v); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - if (strncmp(vector, "dzx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); - else if (strncmp(vector, "dpx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); - else if (strncmp(vector, "dpr", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); - else { - if (strncmp(vector, "uur", 3) == 0) { - fprintf(fp, "#ifdef UUDMA\n"); - fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); - fprintf(fp, "#endif\n"); - } - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); - } -} - -/* - * Create the VERSAbus interrupt vector glue file. - */ -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); - } - gp = fopen(path("vbvec.s"), "w"); - if (gp == 0) { - perror(path("vbvec.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - struct idlst *id, *id2; - - mp = dp->d_conn; - if (mp == 0 || mp == (struct device *)-1 || - eq(mp->d_name, "mba")) - continue; - for (id = dp->d_vec; id; id = id->id_next) - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id == id2) { - dump_vbavec(fp, id->id, dp->d_unit); - break; - } - if (eq(id->id, id2->id)) - break; - } - } - dump_std(fp, gp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (eq(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); - (void) fclose(gp); -} - -/* - * Print a VERSAbus interrupt vector - */ -dump_vbavec(fp, vector, number) - register FILE *fp; - char *vector; - int number; -{ - char nbuf[80]; - register char *v = nbuf; - - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "SCBVEC(%s):\n", v); - fprintf(fp, "\tCHECK_SFE(4)\n"); - fprintf(fp, "\tSAVE_FPSTAT(4)\n"); - fprintf(fp, "\tPUSHR\n"); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcallf\t$8,_%s\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n"); - fprintf(fp, "\tPOPR\n"); - fprintf(fp, "\tREST_FPSTAT\n"); - fprintf(fp, "\trei\n\n"); -} - -/* - * HP9000/300 interrupts are auto-vectored. - * Code is hardwired in locore.s - */ -hpglue() {} - -/* - * so are AMIGA interrupts - */ -amigaglue() {} - -static char *vaxinames[] = { - "clock", "cnr", "cnx", "tur", "tux", - "mba0", "mba1", "mba2", "mba3", - "uba0", "uba1", "uba2", "uba3" -}; -static char *tahoeinames[] = { - "clock", "cnr", "cnx", "rmtr", "rmtx", "buserr", -}; -static struct stdintrs { - char **si_names; /* list of standard interrupt names */ - int si_n; /* number of such names */ -} stdintrs[] = { - { vaxinames, sizeof (vaxinames) / sizeof (vaxinames[0]) }, - { tahoeinames, (sizeof (tahoeinames) / sizeof (tahoeinames[0])) } -}; -/* - * Start the interrupt name table with the names - * of the standard vectors not directly associated - * with a bus. Also, dump the defines needed to - * reference the associated counters into a separate - * file which is prepended to locore.s. - */ -dump_std(fp, gp) - register FILE *fp, *gp; -{ - register struct stdintrs *si = &stdintrs[machine-1]; - register char **cpp; - register int i; - - fprintf(fp, "\n\t.globl\t_intrnames\n"); - fprintf(fp, "\n\t.globl\t_eintrnames\n"); - fprintf(fp, "\t.data\n"); - fprintf(fp, "_intrnames:\n"); - cpp = si->si_names; - for (i = 0; i < si->si_n; i++) { - register char *cp, *tp; - char buf[80]; - - cp = *cpp; - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } - for (tp = buf; *cp; cp++) - if (islower(*cp)) - *tp++ = toupper(*cp); - else - *tp++ = *cp; - *tp = '\0'; - fprintf(gp, "#define\tI_%s\t%d\n", buf, i*sizeof (long)); - fprintf(fp, "\t.asciz\t\"%s\"\n", *cpp); - cpp++; - } -} - -dump_intname(fp, vector, number) - register FILE *fp; - char *vector; - int number; -{ - register char *cp = vector; - - fprintf(fp, "\t.asciz\t\""); - /* - * Skip any "int" or "intr" in the name. - */ - while (*cp) - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } else { - putc(*cp, fp); - cp++; - } - fprintf(fp, "%d\"\n", number); -} - -/* - * Reserve space for the interrupt counters. - */ -dump_ctrs(fp) - register FILE *fp; -{ - struct stdintrs *si = &stdintrs[machine-1]; - - fprintf(fp, "_eintrnames:\n"); - fprintf(fp, "\n\t.globl\t_intrcnt\n"); - fprintf(fp, "\n\t.globl\t_eintrcnt\n"); - fprintf(fp, "\t.align 2\n"); - fprintf(fp, "_intrcnt:\n"); - fprintf(fp, "\t.space\t4 * %d\n", si->si_n); - fprintf(fp, "_fltintrcnt:\n"); - fprintf(fp, "\t.space\t4 * %d\n", cntcnt); - fprintf(fp, "_eintrcnt:\n\n"); - fprintf(fp, "\t.text\n"); -} - -/* - * Create the ISA interrupt vector glue file. - */ -i386_vector() { - register FILE *fp, *gp; - register struct device *dp, *mp; - int count; - - fp = fopen(path("vector.h"), "w"); - if (fp == 0) { - perror(path("vector.h")); - exit(1); - } - fprintf(fp, "\ -/*\n\ - * AT/386\n\ - * Macros for interrupt vector routines\n\ - * Generated by config program\n\ - */\n\ -\n"); - - fprintf(fp, "\ -#define BUILD_VECTORS \\\n\ - BUILD_VECTOR(clk, 0,0,0, _clockmask, _clockintr,1,1, al);\\\n"); - - count=1; - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && /* mp != (struct device *)-1 &&*/ - eq(mp->d_name, "isa")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - build_vector(fp, dp, id, count); - count++; - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - } - fprintf(fp, "\n\n#define NR_REAL_INT_HANDLERS %d\n", count); - (void) fclose(fp); -} - -build_vector(fp, dp, id, offset) - register FILE *fp; - register struct device *dp; - struct idlst *id; - int offset; -{ - fprintf(fp, "\tBUILD_%sVECTOR(%s%d, %d,%d,%d", - strcmp(dp->d_name, "sio") == 0 ? "FAST_" : "", - dp->d_name, dp->d_unit, dp->d_unit, dp->d_irq, offset); - if (eq(dp->d_mask, "null")) - fprintf(fp, ", _%s%dmask,", dp->d_name, dp->d_unit); - else - fprintf(fp, ", _%smask, ", dp->d_mask); - fprintf(fp, " _%s,%d,1", id->id, 1 + dp->d_irq / 8); - if (dp->d_irq < 8) - fprintf(fp, ", al"); - else - fprintf(fp, "_AND_2, ah"); - fprintf(fp, ");\\\n"); -} diff --git a/usr.sbin/config.old/mkheaders.c b/usr.sbin/config.old/mkheaders.c deleted file mode 100644 index e61fe2c4739..00000000000 --- a/usr.sbin/config.old/mkheaders.c +++ /dev/null @@ -1,239 +0,0 @@ -/* $OpenBSD: mkheaders.c,v 1.2 1997/01/12 07:43:34 downsj Exp $ */ -/* $NetBSD: mkheaders.c,v 1.7 1995/08/17 17:22:15 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkheaders.c 5.7 (Berkeley) 7/1/91";*/ -static char rcsid[] = "$NetBSD: mkheaders.c,v 1.7 1995/08/17 17:22:15 thorpej Exp $"; -#endif /* not lint */ - -/* - * Make all the .h files for the optional entries - */ - -#include -#include -#include "config.h" -#include "y.tab.h" -#include "specfile.h" - -headers() -{ - register struct file_list *fl; - - for (fl = ftab; fl != 0; fl = fl->f_next) - if (fl->f_was_driver) - do_identifiers(fl->f_needs); - else if (fl->f_needs_count) - do_identifiers(fl->f_countname); -} - -do_identifiers(expr) - register struct name_expr *expr; -{ - - if (expr->left) - do_identifiers(expr->left); - if (expr->type == T_IDENTIFIER) - do_count(expr->name, expr->name, 1); - if (expr->right) - do_identifiers(expr->right); -} - -/* - * count all the devices of a certain type and recurse to count - * whatever the device is connected to - */ -do_count(dev, hname, search) - register char *dev, *hname; - int search; -{ - register struct device *dp, *mp; - register int count; - - for (count = 0,dp = dtab; dp != 0; dp = dp->d_next) - if (dp->d_unit != -1 && eq(dp->d_name, dev)) { - if (dp->d_type == PSEUDO_DEVICE) { - count = - dp->d_slave != UNKNOWN ? dp->d_slave : 1; - if (dp->d_flags) - dev = NULL; - break; - } - count++; - /* - * Allow holes in unit numbering, - * assumption is unit numbering starts - * at zero. - */ - if (dp->d_unit + 1 > count) - count = dp->d_unit + 1; - if (search) { - mp = dp->d_conn; - if (mp != 0 && mp != TO_NEXUS && - mp->d_conn != 0 && mp->d_conn != TO_NEXUS) { - do_count(mp->d_name, hname, 0); - search = 0; - } - } - } - do_header(dev, hname, count); -} - -do_header(dev, hname, count) - char *dev, *hname; - int count; -{ - char *file, *name, *inw, *toheader(), *tomacro(), *get_rword(); - struct file_list *fl, *fl_head; - FILE *inf, *outf; - int inc = 0, oldcount; - - file = toheader(hname); - name = tomacro(dev?dev:hname) + (dev == NULL); - inf = fopen(file, "r"); - oldcount = -1; - if (inf == 0) { - outf = fopen(file, "w"); - if (outf == 0) { - perror(file); - exit(1); - } - if (dev || (!dev && count)) - fprintf(outf, "#define %s %d\n", name, count); - (void) fclose(outf); - return; - } - fl_head = 0; - for (;;) { - char *cp; - if ((inw = get_rword(inf)) == 0 || inw == (char *)EOF) - break; - if ((inw = get_rword(inf)) == 0 || inw == (char *)EOF) - break; - inw = ns(inw); - cp = get_rword(inf); - if (cp == 0 || cp == (char *)EOF) - break; - inc = atoi(cp); - if (eq(inw, name)) { - oldcount = inc; - inc = count; - } - cp = get_rword(inf); - if (cp == (char *)EOF) - break; - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = inw; - fl->f_type = inc; - fl->f_next = fl_head; - fl_head = fl; - } - (void) fclose(inf); -/*DEBUG printf("%s: dev=%x, inc=%d, oldcount=%d count=%d\n", - file, dev, inc, oldcount, count); */ - if (!dev && inc == 0 && oldcount == -1 && count == 0) - oldcount = 0; - else if (!dev && count == 0) - oldcount = -1; - if (count == oldcount) { - for (fl = fl_head; fl;) { - struct file_list *fln = fl->f_next; - - free((char *)fl); - fl = fln; - } - return; - } - if (oldcount == -1) { - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = name; - fl->f_type = count; - fl->f_next = fl_head; - fl_head = fl; - } - outf = fopen(file, "w"); - if (outf == 0) { - perror(file); - exit(1); - } - for (fl = fl_head; fl;) { - struct file_list *fln = fl->f_next; - - if (dev || (!dev && count)) - fprintf(outf, "#define %s %u\n", - fl->f_fn, count ? fl->f_type : 0); - free((char *)fl); - fl = fln; - } - (void) fclose(outf); -} - -/* - * convert a dev name to a .h file name - */ -char * -toheader(dev) - char *dev; -{ - static char hbuf[80]; - - (void) strcpy(hbuf, path(dev)); - (void) strcat(hbuf, ".h"); - return (hbuf); -} - -/* - * convert a dev name to a macro name - */ -char *tomacro(dev) - register char *dev; -{ - static char mbuf[20]; - register char *cp; - - cp = mbuf; - *cp++ = 'N'; - while (*dev) { - if (islower(*dev)) - *cp++ = toupper(*dev++); - else - *cp++ = *dev++; - } - *cp++ = 0; - return (mbuf); -} diff --git a/usr.sbin/config.old/mkioconf.c b/usr.sbin/config.old/mkioconf.c deleted file mode 100644 index db71fc7713f..00000000000 --- a/usr.sbin/config.old/mkioconf.c +++ /dev/null @@ -1,234 +0,0 @@ -/* $OpenBSD: mkioconf.c,v 1.2 1997/01/12 07:43:35 downsj Exp $ */ -/* $NetBSD: mkioconf.c,v 1.38 1996/06/10 02:32:25 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkioconf.c 5.18 (Berkeley) 5/10/91";*/ -static char rcsid[] = "$NetBSD: mkioconf.c,v 1.38 1996/06/10 02:32:25 thorpej Exp $"; -#endif /* not lint */ - -#include -#include "y.tab.h" -#include "config.h" - -/* - * build the ioconf.c file - */ -char *qu(); -char *intv(); - -static char *fakepdevs[] = { - "ether", /* XXX */ - "log", /* XXX */ - NULL, -}; - -pseudo_init(fp) - FILE *fp; -{ - struct device *dp; - char **s; - int ok, num; - - fprintf(fp, "\n/* pseudo-devices */\n"); - for (dp = dtab; dp; dp = dp->d_next) { - if (dp->d_type != PSEUDO_DEVICE) - continue; - for (ok = 1, s = fakepdevs; *s && ok; s++) - if (strcmp(dp->d_name, *s) == 0) - ok = 0; - if (ok == 0) - continue; - fprintf(fp, "extern void %sattach __P((int));\n", - dp->d_name); - } - - fprintf(fp, "\nstruct pdevinit pdevinit[] = {\n"); - for (dp = dtab; dp; dp = dp->d_next) { - if (dp->d_type != PSEUDO_DEVICE) - continue; - for (ok = 1, s = fakepdevs; *s && ok; s++) - if (strcmp(dp->d_name, *s) == 0) - ok = 0; - if (ok == 0) - continue; - num = dp->d_slave != UNKNOWN ? dp->d_slave : 0; - fprintf(fp, "\t{ %sattach, %d },\n", - dp->d_name, num); - } - fprintf(fp, "\t{ 0, 0 }\n};\n"); -} - -#if MACHINE_HP300 -hp300_ioconf() -{ - register struct device *dp, *mp, *np; - register int hpib, slave; - FILE *fp; - extern char *wnum(); - - fp = fopen(path("ioconf.c"), "w"); - if (fp == 0) { - perror(path("ioconf.c")); - exit(1); - } - fprintf(fp, "#include \"sys/param.h\"\n"); - fprintf(fp, "#include \"sys/device.h\"\n"); - fprintf(fp, "#include \"sys/buf.h\"\n"); - fprintf(fp, "#include \"sys/map.h\"\n"); - fprintf(fp, "\n"); - fprintf(fp, "#include \"hp300/dev/device.h\"\n\n"); - fprintf(fp, "\n"); - fprintf(fp, "#define C (caddr_t)\n"); - fprintf(fp, "#define D (struct driver *)\n\n"); - /* - * First print the hpib controller initialization structures - */ - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (dp->d_unit == QUES || mp == 0) - continue; - fprintf(fp, "extern struct driver %sdriver;\n", dp->d_name); - } - fprintf(fp, "\nstruct hp_ctlr hp_cinit[] = {\n"); - fprintf(fp, "/*\tdriver,\t\tunit,\talive,\taddr,\tflags */\n"); - 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) - continue; - if (mp != TO_NEXUS) { - printf("%s%s must be attached to an sc (nexus)\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) { - printf("can't specify drive/slave for %s%s\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - fprintf(fp, - "\t{ &%sdriver,\t%d,\t0,\tC 0x%x,\t0x%x },\n", - dp->d_name, dp->d_unit, dp->d_addr, dp->d_flags); - } - fprintf(fp, "\t0\n};\n"); - /* devices */ - fprintf(fp, "\nstruct hp_device hp_dinit[] = {\n"); - fprintf(fp, - "/*driver,\tcdriver,\tunit,\tctlr,\tslave,\taddr,\tdk,\tflags*/\n"); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp == 0 || dp->d_type != DEVICE || hpbadslave(mp, dp)) - continue; - if (mp == TO_NEXUS) { - if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) { - printf("can't specify drive/slave for %s%s\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - slave = QUES; - hpib = QUES; - } else { - if (dp->d_addr != 0) { - printf("can't specify sc for device %s%s\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - if (mp->d_type == CONTROLLER) { - if (dp->d_drive == UNKNOWN) { - printf("must specify drive for %s%s\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - slave = dp->d_drive; - } else { - if (dp->d_slave == UNKNOWN) { - printf("must specify slave for %s%s\n", - dp->d_name, wnum(dp->d_unit)); - continue; - } - slave = dp->d_slave; - } - hpib = mp->d_unit; - } - fprintf(fp, "{ &%sdriver,\t", dp->d_name); - if (mp == TO_NEXUS) - fprintf(fp, "D 0x0,\t"); - else - fprintf(fp, "&%sdriver,", mp->d_name); - fprintf(fp, "\t%d,\t%d,\t%d,\tC 0x%x,\t%d,\t0x%x },\n", - dp->d_unit, hpib, slave, - dp->d_addr, dp->d_dk, dp->d_flags); - } - fprintf(fp, "0\n};\n"); - pseudo_init(fp); - (void) fclose(fp); -} - -#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")) - -hpbadslave(mp, dp) - register struct device *dp, *mp; -{ - extern char *wnum(); - - 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)) { - printf("%s%s must be attached to a scsi\n", - dp->d_name, wnum(dp->d_unit)); - return (1); - } - return (0); -} - -char * - wnum(num) -{ - - if (num == QUES || num == UNKNOWN) - return ("?"); - (void) sprintf(errbuf, "%d", num); - return (errbuf); -} -#endif diff --git a/usr.sbin/config.old/mkmakefile.c b/usr.sbin/config.old/mkmakefile.c deleted file mode 100644 index 18924797021..00000000000 --- a/usr.sbin/config.old/mkmakefile.c +++ /dev/null @@ -1,491 +0,0 @@ -/* $OpenBSD: mkmakefile.c,v 1.3 1997/01/17 07:13:59 millert Exp $ */ -/* $NetBSD: mkmakefile.c,v 1.29 1996/06/10 02:32:26 thorpej Exp $ */ - -/* - * Copyright (c) 1980,1990 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkmakefile.c 5.33 (Berkeley) 7/1/91";*/ -static char rcsid[] = "$NetBSD: mkmakefile.c,v 1.29 1996/06/10 02:32:26 thorpej Exp $"; -#endif /* not lint */ - -/* - * Build the makefile for the system, from - * the information in the files files and the - * additional files for the machine being compiled to. - */ - -#include -#include -#include -#include "y.tab.h" -#include "config.h" - -#define next_word(fp, wd) \ - { register char *word = get_word(fp); \ - if (word == (char *)EOF) \ - return; \ - else \ - wd = word; \ - } -#define next_quoted_word(fp, wd) \ - { register char *word = get_quoted_word(fp); \ - if (word == (char *)EOF) \ - return; \ - else \ - wd = word; \ - } - -static struct file_list *fcur; -char *tail(); - -/* - * Lookup a file, by name. - */ -struct file_list * -fl_lookup(file) - register char *file; -{ - register struct file_list *fp; - - for (fp = ftab ; fp != 0; fp = fp->f_next) { - if (eq(fp->f_fn, file)) - return (fp); - } - return (0); -} - -/* - * Lookup a file, by final component name. - */ -struct file_list * -fltail_lookup(file) - register char *file; -{ - register struct file_list *fp; - - for (fp = ftab ; fp != 0; fp = fp->f_next) { - if (eq(tail(fp->f_fn), tail(file))) - return (fp); - } - return (0); -} - -/* - * Make a new file list entry - */ -struct file_list * -new_fent() -{ - register struct file_list *fp; - - fp = (struct file_list *) malloc(sizeof *fp); - bzero(fp, sizeof *fp); - if (fcur == 0) - fcur = ftab = fp; - else - fcur->f_next = fp; - fcur = fp; - return (fp); -} - -static struct users { - int u_default; - int u_min; - int u_max; -} users[] = { - { 8, 2, 64 }, /* MACHINE_HP300 */ -}; -#define NUSERS (sizeof (users) / sizeof (users[0])) - -/* - * Build the makefile from the skeleton - */ -makefile() -{ - FILE *ifp, *ofp; - char line[BUFSIZ]; - struct opt *op; - struct users *up; - - read_files(); - strcpy(line, "Makefile."); - (void) strcat(line, machinename); - ifp = fopen(line, "r"); - if (ifp == 0) { - perror(line); - exit(1); - } - ofp = fopen(path("Makefile"), "w"); - if (ofp == 0) { - perror(path("Makefile")); - exit(1); - } - fprintf(ofp, "KERN_IDENT=%s\n", raisestr(ident)); /* 29 Jun 92*/ - fprintf(ofp, "IDENT=-D%s", raisestr(ident)); - if (profiling) - fprintf(ofp, " -DGPROF"); - if (cputype == 0) { - printf("cpu type must be specified\n"); - exit(1); - } - { struct cputype *cp; - for (cp = cputype; cp; cp = cp->cpu_next) - fprintf(ofp, " -D%s", cp->cpu_name); - } - for (op = opt; op; op = op->op_next) - if (op->op_value) - fprintf(ofp, " -D%s=\"%s\"", op->op_name, op->op_value); - else - fprintf(ofp, " -D%s", op->op_name); - fprintf(ofp, "\n"); - if (hadtz == 0) - printf("timezone not specified; gmt assumed\n"); - if ((unsigned)machine > NUSERS) { - printf("maxusers config info isn't present, using vax\n"); - up = &users[MACHINE_HP300-1]; - } else - up = &users[machine-1]; - if (maxusers == 0) { - printf("maxusers not specified; %d assumed\n", up->u_default); - maxusers = up->u_default; - } else if (maxusers < up->u_min) { - printf("minimum of %d maxusers assumed\n", up->u_min); - maxusers = up->u_min; - } else if (maxusers > up->u_max) - printf("warning: maxusers > %d (%d)\n", up->u_max, maxusers); - fprintf(ofp, "PARAM=-DTIMEZONE=%d -DDST=%d -DMAXUSERS=%d\n", - zone, dst, maxusers); - if (loadaddress != -1) { - fprintf(ofp, "LOAD_ADDRESS=%X\n", loadaddress); - } - for (op = mkopt; op; op = op->op_next) - fprintf(ofp, "%s=%s\n", op->op_name, op->op_value); - if (debugging) - fprintf(ofp, "DEBUG=-g\n"); - if (profiling) - fprintf(ofp, "PROF=-pg\n"); - while (fgets(line, BUFSIZ, ifp) != 0) { - if (*line != '%') { - fprintf(ofp, "%s", line); - continue; - } - if (eq(line, "%OBJS\n")) - do_objs(ofp); - else if (eq(line, "%CFILES\n")) - do_cfiles(ofp); - else if (eq(line, "%RULES\n")) - do_rules(ofp); - else if (eq(line, "%LOAD\n")) - do_load(ofp); - else - fprintf(stderr, - "Unknown %% construct in generic makefile: %s", - line); - } - (void) fclose(ifp); - (void) fclose(ofp); -} - -/* - * Read in the information about files used in making the system. - * Store it in the ftab linked list. - */ -read_files() -{ - register struct file_list *fl; - char fname[48]; - - ftab = 0; - (void) strcpy(fname, "../../../conf/files.oldconf"); - read_file(fname,1,0); - (void) sprintf(fname, "files.%s.oldconf", machinename); - read_file(fname,1,0); - if (strcmp(machinearch, machinename)) { - (void) sprintf(fname, "../../%s/conf/files.%s.oldconf", - machinearch, machinearch); - read_file(fname,1,0); - } - (void) sprintf(fname, "files.%s.oldconf", raisestr(ident)); - read_file(fname,0,1); - (void) strcpy(fname, "../../../conf/options.oldconf"); - read_file(fname,0,0); - (void) sprintf(fname, "options.%s.oldconf", machinename); - read_file(fname,0,0); - if (strcmp(machinearch, machinename)) { - (void) sprintf(fname, "../../%s/conf/options.%s.oldconf", - machinearch, machinearch); - read_file(fname,0,0); - } - (void) sprintf(fname, "options.%s.oldconf", raisestr(ident)); - read_file(fname,0,1); -} - -opteq(cp, dp) - char *cp, *dp; -{ - char c, d; - - for (; ; cp++, dp++) { - if (*cp != *dp) { - c = isupper(*cp) ? tolower(*cp) : *cp; - d = isupper(*dp) ? tolower(*dp) : *dp; - if (c != d) - return (0); - } - if (*cp == 0) - return (1); - } -} - -do_objs(fp) - FILE *fp; -{ - register struct file_list *tp, *fl; - register int lpos, len; - register char *cp, och, *sp; - char swapname[32]; - - fprintf(fp, "OBJS="); - lpos = 6; - for (tp = ftab; tp != 0; tp = tp->f_next) { - if (tp->f_type == INVISIBLE) - continue; - if (tp->f_type == PROFILING && !profiling) - continue; - sp = tail(tp->f_fn); - for (fl = conf_list; fl; fl = fl->f_next) { - if (fl->f_type != SWAPSPEC) - continue; - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - if (eq(sp, swapname)) - goto cont; - } - cp = sp + (len = strlen(sp)) - 1; - och = *cp; - *cp = 'o'; - if (len + lpos > 72) { - lpos = 8; - fprintf(fp, "\\\n\t"); - } - fprintf(fp, "%s ", sp); - lpos += len + 1; - *cp = och; -cont: - ; - } - if (lpos != 8) - putc('\n', fp); -} - -do_cfiles(fp) - FILE *fp; -{ - register struct file_list *tp, *fl; - register int lpos, len; - char swapname[32]; - - fputs("CFILES=", fp); - lpos = 8; - for (tp = ftab; tp; tp = tp->f_next) { - if (tp->f_type == INVISIBLE) - continue; - if (tp->f_type == PROFILING && !profiling) - continue; - len = strlen(tp->f_fn); - if (tp->f_fn[len - 1] != 'c') - continue; - if ((len = 3 + len) + lpos > 72) { - lpos = 8; - fputs("\\\n\t", fp); - } - fprintf(fp, "$S/%s ", tp->f_fn); - lpos += len + 1; - } - for (fl = conf_list; fl; fl = fl->f_next) - if (fl->f_type == SYSTEMSPEC) { - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - if ((len = 3 + strlen(swapname)) + lpos > 72) { - lpos = 8; - fputs("\\\n\t", fp); - } - if (eq(fl->f_fn, "generic")) - fprintf(fp, "$S/arch/%s/%s/%s ", - machinename, machinename, swapname); - else if (eq(fl->f_fn, "nfs")) - fprintf(fp, "$S/nfs/%s ", swapname); - else - fprintf(fp, "%s ", swapname); - lpos += len + 1; - } - if (lpos != 8) - putc('\n', fp); -} - -char * -tail(fn) - char *fn; -{ - register char *cp; - - cp = strrchr(fn, '/'); - if (cp == 0) - return (fn); - return (cp+1); -} - -/* - * Create the makerules for each file - * which is part of the system. - * Devices are processed with the special c2 option -i - * which avoids any problem areas with i/o addressing - * (e.g. for the VAX); assembler files are processed by as. - */ -do_rules(f) - FILE *f; -{ - register char *cp, *np, och, *tp; - register struct file_list *ftp; - char *special; - - for (ftp = ftab; ftp != 0; ftp = ftp->f_next) { - if (ftp->f_type == INVISIBLE) - continue; - if (ftp->f_type == PROFILING && !profiling) - continue; - cp = (np = ftp->f_fn) + strlen(ftp->f_fn) - 1; - och = *cp; - *cp = '\0'; - if (och == 'o') { - fprintf(f, "%so:\n\t-cp $S/%so .\n\n", tail(np), np); - continue; - } - fprintf(f, "%so: $S/%s%c\n", tail(np), np, och); - tp = tail(np); - special = ftp->f_special; - if (special == 0) { - char *ftype; - static char cmd[128]; - - switch (ftp->f_type) { - - case NORMAL: - ftype = "NORMAL"; - break; - - case DRIVER: - ftype = "DRIVER"; - break; - - case PROFILING: - ftype = "PROFILE"; - break; - - default: - printf("config.old: don't know rules for %s\n", np); - break; - } - (void)sprintf(cmd, "${%s_%c%s}", ftype, toupper(och), - ftp->f_flags & CONFIGDEP? "_C" : ""); - special = cmd; - } - *cp = och; - fprintf(f, "\t%s\n\n", special); - } -} - -/* - * Create the load strings - */ -do_load(f) - register FILE *f; -{ - register struct file_list *fl; - register int first; - struct file_list *do_systemspec(); - - for (first = 1, fl = conf_list; fl; first = 0) - fl = fl->f_type == SYSTEMSPEC ? - do_systemspec(f, fl, first) : fl->f_next; - fputs("all:", f); - for (fl = conf_list; fl; fl = fl->f_next) - if (fl->f_type == SYSTEMSPEC) - fprintf(f, " %s", fl->f_needs->name); - putc('\n', f); -} - -struct file_list * -do_systemspec(f, fl, first) - FILE *f; - register struct file_list *fl; - int first; -{ - fprintf(f, "SYSTEM_SWAP_DEP+= swap%s.o\n", fl->f_fn); - fprintf(f, "%s: ${SYSTEM_DEP} swap%s.o vers.o", fl->f_needs->name, fl->f_fn); - fprintf(f, "\n\t${SYSTEM_LD_HEAD}\n"); - fprintf(f, "\t${SYSTEM_LD} swap%s.o\n", fl->f_fn); - fprintf(f, "\t${SYSTEM_LD_TAIL}\n\n"); - do_swapspec(f, fl->f_fn); - for (fl = fl->f_next; fl && fl->f_type == SWAPSPEC; fl = fl->f_next) - ; - return (fl); -} - -do_swapspec(f, name) - FILE *f; - register char *name; -{ - - if (eq(name, "generic")) - fprintf(f, "swapgeneric.o: ../../%s/swapgeneric.c\n", - machinename); - else if (eq(name, "nfs")) - fprintf(f, "swapnfs.o: ../../../../nfs/swapnfs.c\n"); - else - fprintf(f, "swap%s.o: swap%s.c\n", name, name); - fprintf(f, "\t${NORMAL_C}\n\n"); -} - -char * -raisestr(str) - register char *str; -{ - register char *cp = str; - - while (*str) { - if (islower(*str)) - *str = toupper(*str); - str++; - } - return (cp); -} diff --git a/usr.sbin/config.old/mkswapconf.c b/usr.sbin/config.old/mkswapconf.c deleted file mode 100644 index 82ddc109baf..00000000000 --- a/usr.sbin/config.old/mkswapconf.c +++ /dev/null @@ -1,241 +0,0 @@ -/* $OpenBSD: mkswapconf.c,v 1.2 1997/01/12 07:43:36 downsj Exp $ */ -/* $NetBSD: mkswapconf.c,v 1.11 1995/08/17 17:22:20 thorpej Exp $ */ - -/* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkswapconf.c 5.10 (Berkeley) 7/1/91";*/ -static char rcsid[] = "$NetBSD: mkswapconf.c,v 1.11 1995/08/17 17:22:20 thorpej Exp $"; -#endif /* not lint */ - -/* - * Build a swap configuration file. - */ -#include "config.h" - -#include -#include - -swapconf() -{ - register struct file_list *fl; - struct file_list *do_swap(); - - fl = conf_list; - while (fl) { - if (fl->f_type != SYSTEMSPEC) { - fl = fl->f_next; - continue; - } - fl = do_swap(fl); - } -} - -struct file_list * -do_swap(fl) - register struct file_list *fl; -{ - FILE *fp; - char swapname[80]; - register struct file_list *swap; - dev_t dev; - - if (eq(fl->f_fn, "generic") || eq(fl->f_fn, "nfs")) { - fl = fl->f_next; - return (fl->f_next); - } - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - fp = fopen(path(swapname), "w"); - if (fp == 0) { - perror(path(swapname)); - exit(1); - } - fprintf(fp, "#include \"sys/param.h\"\n"); - fprintf(fp, "#include \"sys/conf.h\"\n"); - fprintf(fp, "\n"); - /* - * If there aren't any swap devices - * specified, just return, the error - * has already been noted. - */ - swap = fl->f_next; - if (swap == 0 || swap->f_type != SWAPSPEC) { - (void) unlink(path(swapname)); - fclose(fp); - return (swap); - } - fprintf(fp, "dev_t\trootdev = makedev(%d, %d);\n", - major(fl->f_rootdev), minor(fl->f_rootdev)); - fprintf(fp, "dev_t\tdumpdev = makedev(%d, %d);\n", - major(fl->f_dumpdev), minor(fl->f_dumpdev)); - fprintf(fp, "\n"); - fprintf(fp, "struct\tswdevt swdevt[] = {\n"); - do { - dev = swap->f_swapdev; - fprintf(fp, "\t{ makedev(%d, %d),\t0,\t%d },\t/* %s */\n", - major(dev), minor(dev), swap->f_swapsize, swap->f_fn); - swap = swap->f_next; - } while (swap && swap->f_type == SWAPSPEC); - fprintf(fp, "\t{ NODEV, 0, 0 }\n"); - fprintf(fp, "};\n\n"); - fprintf(fp, "extern int ffs_mountroot();\n"); - fprintf(fp, "int (*mountroot)() = ffs_mountroot;\n"); - fclose(fp); - return (swap); -} - -static int devtablenotread = 1; -static struct devdescription { - char *dev_name; - int dev_major; - struct devdescription *dev_next; -} *devtable; - -/* - * Given a device name specification figure out: - * major device number - * partition - * device name - * unit number - * This is a hack, but the system still thinks in - * terms of major/minor instead of string names. - */ -dev_t -nametodev(name, defunit, defpartition) - char *name; - int defunit; - char defpartition; -{ - char *cp, partition; - int unit; - register struct devdescription *dp; - - cp = name; - if (cp == 0) { - fprintf(stderr, "config.old: internal error, nametodev\n"); - exit(1); - } - while (*cp && !isdigit(*cp)) - cp++; - unit = *cp ? atoi(cp) : defunit; - if (unit < 0 || unit > 31) { - fprintf(stderr, -"config.old: %s: invalid device specification, unit out of range\n", name); - unit = defunit; /* carry on more checking */ - } - if (*cp) { - *cp++ = '\0'; - while (*cp && isdigit(*cp)) - cp++; - } - partition = *cp ? *cp : defpartition; - if (partition < 'a' || partition > 'h') { - fprintf(stderr, -"config.old: %c: invalid device specification, bad partition\n", *cp); - partition = defpartition; /* carry on */ - } - if (devtablenotread) - initdevtable(); - for (dp = devtable; dp; dp = dp->dev_next) - if (eq(name, dp->dev_name)) - break; - if (dp == 0) { - fprintf(stderr, "config.old: %s: unknown device\n", name); - return (NODEV); - } - return (makedev(dp->dev_major, (unit << 3) + (partition - 'a'))); -} - -char * -devtoname(dev) - dev_t dev; -{ - char buf[80]; - register struct devdescription *dp; - - if (devtablenotread) - initdevtable(); - for (dp = devtable; dp; dp = dp->dev_next) - if (major(dev) == dp->dev_major) - break; - if (dp == 0) - dp = devtable; - (void) sprintf(buf, "%s%d%c", dp->dev_name, - minor(dev) >> 3, (minor(dev) & 07) + 'a'); - return (ns(buf)); -} - -initdevtable() -{ - char linebuf[256]; - char buf[BUFSIZ]; - int maj; - register struct devdescription **dp = &devtable; - FILE *fp; - - if (machinename==NULL) { - fprintf(stderr, "config.old: machine not specified\n"); - exit(1); - } - (void) sprintf(buf, "../conf/devices.%s.oldconf", machinename); - fp = fopen(buf, "r"); - if (fp == NULL) { - fprintf(stderr, "config.old: "); - perror(buf); - exit(1); - } - while(fgets(linebuf,256,fp)) - { - /*******************************\ - * Allow a comment * - \*******************************/ - if(linebuf[0] == '#') continue; - - if (sscanf(linebuf, "%s\t%d\n", buf, &maj) == 2) - { - *dp = (struct devdescription *)malloc(sizeof (**dp)); - (*dp)->dev_name = ns(buf); - (*dp)->dev_major = maj; - dp = &(*dp)->dev_next; - } - else - { - fprintf(stderr,"illegal line in devices file\n"); - break; - } - } - *dp = 0; - fclose(fp); - devtablenotread = 0; -} diff --git a/usr.sbin/config.old/mkubglue.c b/usr.sbin/config.old/mkubglue.c deleted file mode 100644 index 98c5c69c75c..00000000000 --- a/usr.sbin/config.old/mkubglue.c +++ /dev/null @@ -1,200 +0,0 @@ -/* $OpenBSD: mkubglue.c,v 1.2 1997/01/12 07:43:36 downsj Exp $ */ -/* $NetBSD: mkubglue.c,v 1.3 1995/08/17 17:22:21 thorpej Exp $ */ - -/*- - * Copyright (c) 1980 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)mkubglue.c 5.3 (Berkeley) 4/19/91";*/ -static char rcsid[] = "$NetBSD: mkubglue.c,v 1.3 1995/08/17 17:22:21 thorpej Exp $"; -#endif /* not lint */ - -/* - * Make the uba interrupt file ubglue.s - */ -#include -#include "config.h" -#include "y.tab.h" - -ubglue() -{ - register FILE *fp; - register struct device *dp, *mp; - - fp = fopen(path("ubglue.s"), "w"); - if (fp == 0) { - perror(path("ubglue.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_vec(fp, id->id, dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_std(fp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; - - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); -} - -static int cntcnt = 0; /* number of interrupt counters allocated */ - -/* - * print an interrupt vector - */ -dump_vec(fp, vector, number) - register FILE *fp; - char *vector; - int number; -{ - char nbuf[80]; - register char *v = nbuf; - - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", - v, v); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - if (strncmp(vector, "dzx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); - else if (strncmp(vector, "dpx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); - else if (strncmp(vector, "dpr", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); - else { - if (strncmp(vector, "uur", 3) == 0) { - fprintf(fp, "#ifdef UUDMA\n"); - fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); - fprintf(fp, "#endif\n"); - } - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); - } -} - -/* - * Start the interrupt name table with the names - * of the standard vectors not on the unibus. - * The number and order of these names should correspond - * with the definitions in scb.s. - */ -dump_std(fp) - register FILE *fp; -{ - fprintf(fp, "\n\t.globl\t_intrnames\n"); - fprintf(fp, "\n\t.globl\t_eintrnames\n"); - fprintf(fp, "\t.data\n"); - fprintf(fp, "_intrnames:\n"); - fprintf(fp, "\t.asciz\t\"clock\"\n"); - fprintf(fp, "\t.asciz\t\"cnr\"\n"); - fprintf(fp, "\t.asciz\t\"cnx\"\n"); - fprintf(fp, "\t.asciz\t\"tur\"\n"); - fprintf(fp, "\t.asciz\t\"tux\"\n"); - fprintf(fp, "\t.asciz\t\"mba0\"\n"); - fprintf(fp, "\t.asciz\t\"mba1\"\n"); - fprintf(fp, "\t.asciz\t\"mba2\"\n"); - fprintf(fp, "\t.asciz\t\"mba3\"\n"); - fprintf(fp, "\t.asciz\t\"uba0\"\n"); - fprintf(fp, "\t.asciz\t\"uba1\"\n"); - fprintf(fp, "\t.asciz\t\"uba2\"\n"); - fprintf(fp, "\t.asciz\t\"uba3\"\n"); -#define I_FIXED 13 /* number of names above */ -} - -dump_intname(fp, vector, number) - register FILE *fp; - char *vector; - int number; -{ - register char *cp = vector; - - fprintf(fp, "\t.asciz\t\""); - /* - * Skip any "int" or "intr" in the name. - */ - while (*cp) - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } else { - putc(*cp, fp); - cp++; - } - fprintf(fp, "%d\"\n", number); -} - -dump_ctrs(fp) - register FILE *fp; -{ - fprintf(fp, "_eintrnames:\n"); - fprintf(fp, "\n\t.globl\t_intrcnt\n"); - fprintf(fp, "\n\t.globl\t_eintrcnt\n"); - fprintf(fp, "_intrcnt:\n", I_FIXED); - fprintf(fp, "\t.space\t4 * %d\n", I_FIXED); - fprintf(fp, "_fltintrcnt:\n", cntcnt); - fprintf(fp, "\t.space\t4 * %d\n", cntcnt); - fprintf(fp, "_eintrcnt:\n\n"); - fprintf(fp, "\t.text\n"); -} diff --git a/usr.sbin/config.old/specfile.c b/usr.sbin/config.old/specfile.c deleted file mode 100644 index b7224b7224c..00000000000 --- a/usr.sbin/config.old/specfile.c +++ /dev/null @@ -1,602 +0,0 @@ -/* $OpenBSD: specfile.c,v 1.3 1997/01/17 07:14:00 millert Exp $ */ -/* $NetBSD: specfile.c,v 1.10 1995/08/17 17:22:22 thorpej Exp $ */ - -#ifndef lint -static char rcsid[] = "$NetBSD: specfile.c,v 1.10 1995/08/17 17:22:22 thorpej Exp $"; -#endif /* not lint */ - -#include -#include -#include -#include "y.tab.h" -#include "config.h" -#include "specfile.h" - -#define is_paren(x) ((x == '(') || (x == ')')) -struct file_keyword { - char *key; - int token; -} file_kw_table[] = { - "compile-with", T_COMPILE_WITH, - "config-dependent", T_CONFIG_DEPENDENT, - "device-driver", T_DEVICE_DRIVER, - "optional", T_OPTIONAL, - "or", T_OR, - "not", T_NOT, - "requires", T_REQUIRES, - "standard", T_STANDARD, - "needs-count", T_NEEDS_COUNT, - }; - -extern struct file_list *fltail_lookup(),*new_fent(),*fl_lookup(); -static char *current_file; -static int current_line; -static jmp_buf parse_problem; - -int file_tok(token) - char *token; -{ - int i, length; - - if (is_paren(*token)) - return (*token == '(' ? T_LEFTPAREN : T_RIGHTPAREN); - for (i =0; i <(sizeof(file_kw_table)/sizeof(file_kw_table[0])); i++) { - if (!strcmp(file_kw_table[i].key, token)) - return file_kw_table[i].token; - } - length = strlen(token); - for (i = 0; i < length; i++) { - if (!isalnum(token[i]) && (token[i] != '_') && - (token[i] != '-')) return -1; - } - return T_IDENTIFIER; -} - -struct name_expr * -alloc_name_expr(name) - char *name; -{ - struct name_expr *new; - int token,type; - - type = 0; - token = file_tok(name); - switch (token) { - case T_OR: - case T_NOT: - case T_IDENTIFIER: - case T_LEFTPAREN: - case T_RIGHTPAREN: - type = token; - break; - default: return NULL; - } - new = malloc(sizeof(struct name_expr)); - new->type = type; - if (type == T_IDENTIFIER) new->name = ns(name); - else new->name = NULL; - new->left = new->right = new->next = NULL; - return new; -} - -void parse_err(char *emessage) -{ - fprintf(stderr, "%s:%d: %s\n", current_file, current_line, emessage); - if (!fatal_errors) longjmp(parse_problem,1); - exit(1); -} - -delete_expr(expr) - struct name_expr *expr; -{ - if (expr->type == T_IDENTIFIER) - free(expr->name); - free(expr); -} -struct name_expr *yank_node(expr) - struct name_expr **expr; -{ - struct name_expr *node; - - if (*expr == NULL) return NULL; - node = *expr; - *expr = (*expr)->next; - return node; -} -struct name_expr *yank_expr(expr) - struct name_expr **expr; -{ - struct name_expr *node,*tail, *subexpr,*next; - - node = yank_node(expr); - if (node == NULL) return NULL; - if (node->type == T_LEFTPAREN) - for (tail = subexpr = NULL;;) { - next = yank_expr(expr); - if (!next) parse_err("missing ')'"); - if (next->type == T_RIGHTPAREN) { - if (subexpr == NULL) - parse_err("empty inner expression i.e '()' "); - node->left = subexpr; - node->type = EXPR_GROUP; - break; - } else { - if (subexpr == NULL) - tail = subexpr = next; - else { - tail->next = next; - tail = next; - } - tail->next = NULL; - } - } - return(node); -} - -struct name_expr * -paren_squish(tree) - struct name_expr *tree; -{ - struct name_expr *result,*expr,*tail; - - result = tail = NULL; - - while ((expr = yank_expr(&tree)) != NULL) { - if (expr->type == T_RIGHTPAREN) - parse_err("unexpected ')'"); - if (result == NULL) { - tail = result = expr; - } - else { - tail->next = expr; - tail = expr; - } - tail->next = NULL; - } - return(result); -} - -struct name_expr * -not_squish(tree) - struct name_expr *tree; -{ - struct name_expr *result,*next,*tail,*node; - - tail = result = next = NULL; - - while ((next = yank_node(&tree)) != NULL) { - if (next->type == EXPR_GROUP) - next->left = not_squish(next->left); - if (next->type == T_NOT) { - int notlevel = 1; - - node = yank_node(&tree); - while (node->type == T_NOT) { - ++notlevel; - node = yank_node(&tree); - } - if (node == NULL) - parse_err("no expression following 'not'"); - if (node->type == T_OR) - parse_err("nothing between 'not' and 'or'"); - if (notlevel % 2 != 1) - next = node; - else - next->left = node; - } - - /* add the node to our result plan */ - if (result == NULL) - tail = result = next; - else { - tail->next = next; - tail = next; - } - tail->next = NULL; - } - return(result); -} -struct name_expr * -or_squish(tree) - struct name_expr *tree; -{ - struct name_expr *next, *tail,*result; - - tail = result = next = NULL; - - while ((next = yank_node(&tree)) != NULL) { - - if (next->type == EXPR_GROUP) - next->left = or_squish(next->left); - - if (next->type == T_NOT) - next->left = or_squish(next->left); - - if (next->type == T_OR) { - if (result == NULL) - parse_err("no expression before 'or'"); - next->left = result; - next->right = or_squish(tree); - if (next->right == NULL) - parse_err("no expression after 'or'"); - next->next = NULL; - return(next); - } - - /* add the node to our result plan */ - if (result == NULL) - tail = result = next; - else { - tail->next = next; - tail = next; - } - tail->next = NULL; - } - return(result); -} - -struct name_expr * -parse_name_expr(fp,seed, read_ahead) - FILE *fp; - char *seed, **read_ahead; -{ - struct name_expr *list, *tail,*new,*current; - char *str; - - - list = NULL; - *read_ahead = NULL; - if (seed) { - list = alloc_name_expr(seed); - if (list == NULL) { - *read_ahead = seed; - return NULL; - } - } - tail = list; - for (;;) { - str = get_word(fp); - if ((str == (char *)EOF) || str == NULL) { - *read_ahead = str; - break; - } - new = alloc_name_expr(str); - if (!new) { - *read_ahead = str; - break; - } - if (tail) tail->next = new; - else { - list = new; - } - tail = new; - } - list = paren_squish(list); - list = not_squish(list); - list = or_squish(list); - return list; -} -int is_simple(expr) - struct name_expr *expr; -{ - return expr && expr->type == T_IDENTIFIER; -} - -int f_not(expr,explain) - struct name_expr *expr; - int explain; -{ - int result; - - result = !depend_check(expr->left,explain); - return result; -} -int f_or(expr,explain) - struct name_expr *expr; - int explain; -{ - int result; - - if (depend_check(expr->left,explain)) - return 1; - if (depend_check(expr->right,explain)) - return 1; - return 0; -} -int f_identifier(expr,explain) - struct name_expr *expr; - int explain; -{ - struct opt *op; - struct device *dp; - struct cputype *cp; - - for (op = opt; op != 0; op = op->op_next) - if (opteq(op->op_name, expr->name)) return 1; - for (cp = cputype; cp != 0; cp = cp->cpu_next) - if (opteq(cp->cpu_name, expr->name)) return 1; - for (dp = dtab; dp != 0; dp = dp->d_next) - if (eq(dp->d_name, expr->name) && - !(dp->d_type == PSEUDO_DEVICE && dp->d_flags && dp->d_slave == 0)) return 1; - return 0; -} -print_expr(expr) - struct name_expr *expr; -{ - struct name_expr *current; - for (current = expr; current != NULL; current= current->next) { - switch (current->type) { - case T_NOT: - fprintf (stderr, "not "); - print_expr(current->left); - break; - case T_OR: - print_expr(current->left); - fprintf (stderr, "or "); - print_expr(current->right); - break; - case EXPR_GROUP: - fprintf (stderr, "("); - print_expr(current->left); - fprintf (stderr, ")"); - break; - case T_IDENTIFIER: - fprintf(stderr,"%s ", current->name); - break; - default: - parse_err("unknown expression type"); - } - } -} -int depend_check(expr, explain) - struct name_expr *expr; - int explain; -{ - struct name_expr *current; - int result; - - for (current= expr; current; current= current->next) { - switch(current->type) { - case T_NOT: - result = f_not(current,0); - break; - case T_OR: - result = f_or(current,0); - break; - case EXPR_GROUP: - result = depend_check(current->left, 0); - break; - case T_IDENTIFIER: - result = f_identifier(current,0); - break; - } - if (result) continue; - return 0; - } - return 1; -} - - - -read_file(filename, fatal_on_open, override) - char *filename; - int fatal_on_open, override; -{ - FILE *fp; - size_t length; - char ebuf[1024]; - - fp = fopen(filename, "r"); - if (!fp) - if (fatal_on_open) { - perror(filename); - exit(1); - } - else return; - current_line = 0; - current_file = filename; - for (;;) { - char *str, *kf_name, *read_ahead,*compile_with; - extern char *get_word(),*get_quoted_word(); - int token,optional,driver,needs_count,config_depend, - is_dup,filetype,is_option; - struct name_expr *depends_on,*requires; - struct file_list *tp,*tmp, *fl,*pf; - enum {BEFORE_FILENAME,BEFORE_SPEC,BEFORE_DEPENDS,PAST_DEPENDS, - SPECIALS} parse_state; - - - if (setjmp(parse_problem)) { - while (1) { - str = get_word(fp); - if (!str || (str == (char *) EOF)) break; - } - if (!str) current_line++; - continue; - } - str = get_word(fp); - current_line++; - if (str == NULL) continue; - if (str == (char *) EOF) break; - if (*str == '#') { - fprintf(stderr, "shouldn't get here"); - exit(1); - } - parse_state = BEFORE_FILENAME; - kf_name = read_ahead = compile_with = NULL; - optional= driver = config_depend = filetype = needs_count = 0; - depends_on = requires = NULL; - is_dup = 0; - is_option = 0; - while ((str != NULL) && (str != (char *)EOF)) { - switch (parse_state) { - case BEFORE_FILENAME: { - kf_name = ns(str); - if (strncmp(kf_name, "OPTIONS/", 8) == 0) { - kf_name = ns(strchr(kf_name, '/') + 1); - is_option++; - } - parse_state = BEFORE_SPEC; - break; - } - case BEFORE_SPEC: { - token = file_tok(str); - if ((token != T_OPTIONAL) && (token != T_STANDARD)) - parse_err("unexpected token starts inclusion specification"); - optional = (token == T_OPTIONAL); - parse_state = BEFORE_DEPENDS; - break; - } - case BEFORE_DEPENDS: { - depends_on = parse_name_expr(fp,str, &read_ahead); - str = read_ahead; - parse_state = PAST_DEPENDS; - continue; - break; - } - case PAST_DEPENDS: - case SPECIALS: - token = file_tok(str); - switch (token) { - case T_COMPILE_WITH: { - str = get_quoted_word(fp); - if ((str == 0) || (str == (char *) EOF)) - parse_err("missing compile command string"); - compile_with = ns(str); - } - case T_CONFIG_DEPENDENT: { - config_depend = 1; - break; - } - case T_DEVICE_DRIVER: { - driver = 1; - needs_count = 0; - break; - } - case T_REQUIRES: { - requires = parse_name_expr(fp,NULL, &read_ahead); - if (!requires) - parse_err("'requires' but no expression"); - str = read_ahead; - continue; - break; - } - case T_NEEDS_COUNT: { - if (!driver) needs_count = 1; - break; - } - default: - parse_err("unexpected token"); - } - break; - default: - parse_err("unknown state"); - } - str = get_word(fp); - } - if (parse_state == BEFORE_SPEC) - parse_err("filename, but no specification"); - if (is_option) { - struct device dev; - register struct opt *op; - struct opt *lop = 0; - - /* - * Allocate a pseudo-device entry which we will insert into - * the device list below. The flags field is set non-zero to - * indicate an internal entry rather than one generated from - * the configuration file. The slave field is set to define - * the corresponding symbol as 0 should we fail to find the - * option in the option list. - */ - init_dev(&dev); - dev.d_type = PSEUDO_DEVICE; - dev.d_name = ns(kf_name); - dev.d_slave = 0; - dev.d_flags++; - for (op=opt; op; lop=op, op=op->op_next) { - char *od = raisestr(ns(kf_name)); - - /* - * Found an option which matches the current device - * dependency identifier. Set the slave field to - * define the option in the header file. - */ - if (strcmp(op->op_name, od) == 0) { - dev.d_slave = 1; - if (lop == 0) - opt = op->op_next; - else - lop->op_next = op->op_next; - free(op); - op = 0; - } - free(od); - if (op == 0) - break; - } - newdev(&dev); - needs_count = 0; - driver = 1; - filetype = INVISIBLE; - } - else { - if (!kf_name) - parse_err("no filename specified"); - fl = fl_lookup(kf_name); - if (fl && !override) { - (void) sprintf(ebuf, "duplicate file name '%s'", kf_name); - parse_err(ebuf); - } - if ((pf = fl_lookup(kf_name)) && - (pf->f_type != INVISIBLE || (pf->f_flags | DUPLICATE))) - is_dup = 1; - else - is_dup = 0; - if (override && ((tmp = fltail_lookup(kf_name)) != 0)) { - fprintf(stderr, "%s:%d: Local file %s overrides %s.\n", - current_file, current_line, kf_name, tmp->f_fn); - tmp->f_type = INVISIBLE; - } - if (!optional) { - if (driver) - parse_err("'standard' incompatible with 'device-driver'"); - if (depends_on && !needs_count) - parse_err("'standard' can't have dependencies"); - } - else if (!depends_on) - parse_err("'optional' requires dependency specification"); - if (is_simple(depends_on) && - eq("profiling-routine", depends_on->name)) filetype = PROFILING; - else if (!optional || depend_check(depends_on,0)) filetype = NORMAL; - else filetype = INVISIBLE; - - if (filetype == NORMAL && requires && !depend_check(requires,0)) { - fprintf(stderr, "%s:%d: requirement expression failed: ", - current_file, current_line); - print_expr(requires); - fprintf(stderr, "\n"); - parse_err("requirements not met"); - } - } - tp = new_fent(); - tp->f_fn = kf_name; - tp->f_type = filetype; - if (driver) - tp->f_needs = depends_on; - else - tp->f_needs = NULL; - if (needs_count) - tp->f_countname = depends_on; - else - tp->f_countname = NULL; - tp->f_was_driver = driver; - tp->f_needs_count = needs_count; - tp->f_special = compile_with; - tp->f_flags = 0; - tp->f_flags |= (config_depend ? CONFIGDEP : 0); - tp->f_flags |= (is_dup ? DUPLICATE : 0); - } - return; - -} diff --git a/usr.sbin/config.old/specfile.h b/usr.sbin/config.old/specfile.h deleted file mode 100644 index ca6bc20ff40..00000000000 --- a/usr.sbin/config.old/specfile.h +++ /dev/null @@ -1,17 +0,0 @@ -/* $OpenBSD: specfile.h,v 1.2 1997/01/12 07:43:38 downsj Exp $ */ -/* $NetBSD: specfile.h,v 1.2 1995/08/17 17:22:23 thorpej Exp $ */ - -#define T_OPTIONAL 1 -#define T_STANDARD 2 -#define T_COMPILE_WITH 3 -#define T_CONFIG_DEPENDENT 4 -#define T_DEVICE_DRIVER 5 -#define T_PROFILING_ROUTINE 6 -#define T_IDENTIFIER 7 -#define T_OR 8 -#define T_REQUIRES 9 -#define T_NOT 10 -#define EXPR_GROUP 11 -#define T_LEFTPAREN 12 -#define T_RIGHTPAREN 13 -#define T_NEEDS_COUNT 14