diff options
author | peter <peter@FreeBSD.org> | 2004-08-30 23:03:58 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2004-08-30 23:03:58 +0000 |
commit | 1d9abdbe783a3f2587fde29b89cda1c8da982097 (patch) | |
tree | 48d9944fb7d50a767ae5d57a3e3f8f4c3facf67e /usr.sbin/config/mkheaders.c | |
parent | 78508cab2611f6e60cfba0bb7d5314c1fd36f4b3 (diff) | |
download | FreeBSD-src-1d9abdbe783a3f2587fde29b89cda1c8da982097.zip FreeBSD-src-1d9abdbe783a3f2587fde29b89cda1c8da982097.tar.gz |
Kill count device support from config. I've changed the last few
remaining consumers to have the count passed as an option. This is
i4b, pc98/wdc, and coda.
Bump configvers.h from 500013 to 600000.
Remove heuristics that tried to parse "device ed5" as 5 units of the ed
device. This broke things like the snd_emu10k1 device, which required
quotes to make it parse right. The no-longer-needed quotes have been
removed from NOTES, GENERIC etc. eg, I've removed the quotes from:
device snd_maestro
device "snd_maestro3"
device snd_mss
I believe everything will still compile and work after this.
Diffstat (limited to 'usr.sbin/config/mkheaders.c')
-rw-r--r-- | usr.sbin/config/mkheaders.c | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/usr.sbin/config/mkheaders.c b/usr.sbin/config/mkheaders.c index 2df6a92..9babe78 100644 --- a/usr.sbin/config/mkheaders.c +++ b/usr.sbin/config/mkheaders.c @@ -47,10 +47,6 @@ static const char rcsid[] = #include "config.h" #include "y.tab.h" -static int do_header(char *, int); -static char *toheader(char *); -static char *tomacro(char *); - void headers(void) { @@ -69,8 +65,6 @@ headers(void) dp->d_done |= DEVDONE; } } - if (fl->f_flags & NEED_COUNT) - errors += do_header(fl->f_needs, match); } } STAILQ_FOREACH(dp, &dtab, d_next) { @@ -79,157 +73,7 @@ headers(void) dp->d_name); errors++; } - if (dp->d_count == UNKNOWN) - continue; - match = 0; - STAILQ_FOREACH(fl, &ftab, f_next) { - if (fl->f_needs == 0) - continue; - if ((fl->f_flags & NEED_COUNT) == 0) - continue; - if (eq(dp->d_name, fl->f_needs)) { - match++; - break; - } - } - if (match == 0) { - warnx("Error: device \"%s\" does not take a count", - dp->d_name); - errors++; - } } if (errors) errx(1, "%d errors", errors); } - -static int -do_header(char *dev, int match) -{ - char *file, *name, *inw; - struct file_list *fl, *tflp; - struct file_list_head fl_head; - struct device *dp; - FILE *inf, *outf; - int inc, oldcount; - int count, hicount; - int errors; - - /* - * After this loop, "count" will be the actual number of units, - * and "hicount" will be the highest unit declared. do_header() - * must use this higher of these values. - */ - errors = 0; - hicount = count = 0; - STAILQ_FOREACH(dp, &dtab, d_next) { - if (eq(dp->d_name, dev)) { - if (dp->d_count == UNKNOWN) { - warnx("Device \"%s\" requires a count", dev); - return 1; - } - count = dp->d_count; - break; - } - } - file = toheader(dev); - name = tomacro(dev); - if (match) - fprintf(stderr, - "FYI: static unit limits for %s are set: %s=%d\n", - dev, name, count); - remember(file); - inf = fopen(file, "r"); - oldcount = -1; - if (inf == 0) { - outf = fopen(file, "w"); - if (outf == 0) - err(1, "%s", file); - fprintf(outf, "#ifndef BURN_BRIDGES\n"); - fprintf(outf, "#define %s %d\n", name, count); - fprintf(outf, "#endif\n"); - (void) fclose(outf); - return 0; - } - STAILQ_INIT(&fl_head); - for (;;) { - char *cp; - if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) - break; - if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) - break; - inw = ns(inw); - cp = get_word(inf); - if (cp == 0 || cp == (char *)EOF) - break; - inc = atoi(cp); - if (eq(inw, name)) { - oldcount = inc; - inc = count; - } - cp = get_word(inf); - if (cp == (char *)EOF) - break; - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = inw; /* malloced */ - fl->f_type = inc; - STAILQ_INSERT_HEAD(&fl_head, fl, f_next); - } - (void) fclose(inf); - if (count == oldcount) { - for (fl = STAILQ_FIRST(&fl_head); fl != NULL; fl = tflp) { - tflp = STAILQ_NEXT(fl, f_next); - free(fl->f_fn); - free(fl); - } - return 0; - } - if (oldcount == -1) { - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = ns(name); - fl->f_type = count; - STAILQ_INSERT_HEAD(&fl_head, fl, f_next); - } - outf = fopen(file, "w"); - if (outf == 0) - err(1, "%s", file); - for (fl = STAILQ_FIRST(&fl_head); fl != NULL; fl = tflp) { - fprintf(outf, - "#define %s %u\n", fl->f_fn, count ? fl->f_type : 0); - tflp = STAILQ_NEXT(fl, f_next); - free(fl->f_fn); - free(fl); - } - (void) fclose(outf); - return 0; -} - -/* - * convert a dev name to a .h file name - */ -static char * -toheader(char *dev) -{ - static char hbuf[MAXPATHLEN]; - - snprintf(hbuf, sizeof(hbuf), "%s.h", path(dev)); - return (hbuf); -} - -/* - * convert a dev name to a macro name - */ -static char * -tomacro(char *dev) -{ - static char mbuf[20]; - char *cp; - - cp = mbuf; - *cp++ = 'N'; - while (*dev) - *cp++ = islower(*dev) ? toupper(*dev++) : *dev++; - *cp++ = 0; - return (mbuf); -} |