Implement option strings that we can use in #ifdefs (where unavoidable)
as a replacement for the evil #define NFOO. If 'device npx' is in the static kernel, a synthetic option '#define DEV_NPX 1' will be available to stick in an opt_xxx.h file. "#if NNPX > 0" can be replaced with "#ifdef DEV_NPX" and we can get rid of the overloaded meaning of the device count mechanism.
This commit is contained in:
parent
ba14993920
commit
8f5a6de0b6
@ -86,6 +86,15 @@ int maxusers;
|
||||
|
||||
static void yyerror(char *s);
|
||||
|
||||
static char *
|
||||
devopt(char *dev)
|
||||
{
|
||||
char *ret = malloc(strlen(dev) + 5);
|
||||
|
||||
sprintf(ret, "DEV_%s", dev);
|
||||
raisestr(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
%}
|
||||
%%
|
||||
@ -260,12 +269,28 @@ Dev:
|
||||
Device_spec:
|
||||
DEVICE Dev
|
||||
= {
|
||||
struct opt *op = (struct opt *)malloc(sizeof (struct opt));
|
||||
memset(op, 0, sizeof(*op));
|
||||
op->op_name = devopt($2);
|
||||
op->op_next = opt;
|
||||
op->op_value = ns("1");
|
||||
op->op_line = yyline;
|
||||
opt = op;
|
||||
/* and the device part */
|
||||
cur.d_type = DEVICE;
|
||||
cur.d_name = $2;
|
||||
cur.d_count = UNKNOWN;
|
||||
} |
|
||||
DEVICE Dev NUMBER
|
||||
= {
|
||||
struct opt *op = (struct opt *)malloc(sizeof (struct opt));
|
||||
memset(op, 0, sizeof(*op));
|
||||
op->op_name = devopt($2);
|
||||
op->op_next = opt;
|
||||
op->op_value = ns("1");
|
||||
op->op_line = yyline;
|
||||
opt = op;
|
||||
/* and the device part */
|
||||
cur.d_type = DEVICE;
|
||||
cur.d_name = $2;
|
||||
cur.d_count = $3;
|
||||
|
@ -8,4 +8,4 @@
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#define CONFIGVERS 500005
|
||||
#define CONFIGVERS 500006
|
||||
|
@ -115,7 +115,7 @@ options(void)
|
||||
for (ol = otab; ol != 0; ol = ol->o_next)
|
||||
do_option(ol->o_name);
|
||||
for (op = opt; op; op = op->op_next) {
|
||||
if (!op->op_ownfile) {
|
||||
if (!op->op_ownfile && strncmp(op->op_name, "DEV_", 4)) {
|
||||
printf("%s:%d: unknown option \"%s\"\n",
|
||||
PREFIX, op->op_line, op->op_name);
|
||||
exit(1);
|
||||
|
Loading…
Reference in New Issue
Block a user