make the maximum number of simultaneous SMTP connections an option
[unix-history] / usr / src / usr.sbin / config / mkheaders.c
index 555d351..116b579 100644 (file)
+/*     mkheaders.c     1.13    82/12/09        */
+
 /*
 /*
- *     mkheaders.c     1.5     81/02/26
  * Make all the .h files for the optional entries
  */
 
 #include <stdio.h>
 #include <ctype.h>
 #include "config.h"
  * Make all the .h files for the optional entries
  */
 
 #include <stdio.h>
 #include <ctype.h>
 #include "config.h"
-
-/*
- * This macro reads a line of the form
- *     #define STRING <number>
- * and assigns STRING to wd and <number> to count
- */
-#define rdln(f, wd, count) {\
-       register char *iwd;\
-       if ((wd = get_word(f)) != NULL && wd != EOF)\
-           if ((wd = get_word(f)) != NULL && wd != EOF) {\
-               iwd = ns(wd);\
-               if ((wd = get_word(f)) != NULL && wd != EOF) {\
-                   count = atoi(wd);\
-                   wd = get_word(f);\
-                   wd = iwd;\
-               }\
-           }\
-       }
+#include "y.tab.h"
 
 headers()
 {
 
 headers()
 {
-    register struct file_list *fl;
+       register struct file_list *fl;
 
 
-    for (fl = ftab; fl != NULL; fl = fl->f_next)
-       if (fl->f_needs != NULL)
-           do_count(fl->f_needs, fl->f_needs, TRUE);
+       for (fl = ftab; fl != 0; fl = fl->f_next)
+               if (fl->f_needs != 0)
+                       do_count(fl->f_needs, fl->f_needs, 1);
 }
 
 /*
 }
 
 /*
- * do_count:
- *     Count all the devices of a certain type and recurse to count
- *     whatever the device is connected to
+ * count all the devices of a certain type and recurse to count
+ * whatever the device is connected to
  */
  */
-
 do_count(dev, hname, search)
 do_count(dev, hname, search)
-register char *dev, *hname;
-bool search;
+       register char *dev, *hname;
+       int search;
 {
 {
-    register struct device *dp, *mp;
-    register int count;
+       register struct device *dp, *mp;
+       register int count;
 
 
-    for (count = 0,dp = dtab; dp != NULL; dp = dp->d_next)
-       if (dp->d_unit != -1 && eq(dp->d_name, dev))
-       {
-           count++;
-           if (search)
-           {
-               mp = dp->d_conn;
-               if (mp != NULL && mp != -1 && mp->d_conn != -1)
-               {
-                   do_count(mp->d_name, hname, FALSE);
-                   search = FALSE;
+       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;
+                               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 != (struct device *)-1 &&
+                                   mp->d_conn != (struct device *)-1) {
+                                       do_count(mp->d_name, hname, 0);
+                                       search = 0;
+                               }
+                       }
                }
                }
-           }
-       }
-    do_header(dev, hname, count);
+       do_header(dev, hname, count);
 }
 
 do_header(dev, hname, count)
 }
 
 do_header(dev, hname, count)
-char *dev, *hname;
-int count;
+       char *dev, *hname;
+       int count;
 {
 {
-    char *file, *name, *inw, *toheader(), *tomacro();
-    struct file_list *fl, *fl_head;
-    FILE *inf, *outf;
-    int inc, oldcount;
+       char *file, *name, *inw, *toheader(), *tomacro();
+       struct file_list *fl, *fl_head;
+       FILE *inf, *outf;
+       int inc, oldcount;
 
 
-    file = toheader(hname);
-    name = tomacro(dev);
-    inf = fopen(file, "r");
-    oldcount = -1;
-    if (inf == NULL)
-    {
+       file = toheader(hname);
+       name = tomacro(dev);
+       inf = fopen(file, "r");
+       oldcount = -1;
+       if (inf == 0) {
+               outf = fopen(file, "w");
+               if (outf == 0) {
+                       perror(file);
+                       exit(1);
+               }
+               fprintf(outf, "#define %s %d\n", name, count);
+               (void) fclose(outf);
+               return;
+       }
+       fl_head = 0;
+       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);
+               fl->f_fn = inw;
+               fl->f_type = inc;
+               fl->f_next = fl_head;
+               fl_head = fl;
+       }
+       (void) fclose(inf);
+       if (count == oldcount) {
+               for (fl = fl_head; fl != 0; fl = fl->f_next)
+                       free((char *)fl);
+               return;
+       }
+       if (oldcount == -1) {
+               fl = (struct file_list *) malloc(sizeof *fl);
+               fl->f_fn = name;
+               fl->f_type = count;
+               fl->f_next = fl_head;
+               fl_head = fl;
+       }
        outf = fopen(file, "w");
        outf = fopen(file, "w");
-       if (outf == NULL) {
-           perror(file);
-           exit(1);
+       if (outf == 0) {
+               perror(file);
+               exit(1);
        }
        }
-       fprintf(outf, "#define %s %d\n", name, count);
-       fclose(outf);
-       return;
-    }
-    fl_head = NULL;
-    while(1)
-    {
-       rdln(inf, inw, inc);
-       if (inw == EOF)
-           break;
-       if (eq(inw, name))
-       {
-           oldcount = inc;
-           inc = count;
+       for (fl = fl_head; fl != 0; fl = fl->f_next) {
+               fprintf(outf, "#define %s %d\n",
+                   fl->f_fn, count ? fl->f_type : 0);
+               free((char *)fl);
        }
        }
-       fl = (struct file_list *) malloc(sizeof *fl);
-       fl->f_fn = inw;
-       fl->f_type = inc;
-       fl->f_next = fl_head;
-       fl_head = fl;
-    }
-    fclose(inf);
-    if (count == oldcount)
-    {
-       for (fl = fl_head; fl != NULL; fl = fl->f_next)
-           free(fl);
-       return;
-    }
-    if (oldcount == -1)
-    {
-       fl = (struct file_list *) malloc(sizeof *fl);
-       fl->f_fn = name;
-       fl->f_type = count;
-       fl->f_next = fl_head;
-       fl_head = fl;
-    }
-    outf = fopen(file, "w");
-    if (outf == NULL) {
-       perror(file);
-       exit(1);
-    }
-    for (fl = fl_head; fl != NULL; fl = fl->f_next)
-    {
-       fprintf(outf, "#define %s %d\n", fl->f_fn, fl->f_type);
-       free(fl);
-    }
-    fclose(outf);
+       (void) fclose(outf);
 }
 
 /*
 }
 
 /*
- * toheader:
- *     Convert a dev name to a .h file nae
+ * convert a dev name to a .h file name
  */
  */
-
-char *toheader(dev)
-char *dev;
+char *
+toheader(dev)
+       char *dev;
 {
 {
-    static char hbuf[80];
+       static char hbuf[80];
 
 
-    strcpy(hbuf, path(dev));
-    strcat(hbuf, ".h");
-    return hbuf;
+       (void) strcpy(hbuf, path(dev));
+       (void) strcat(hbuf, ".h");
+       return (hbuf);
 }
 
 /*
 }
 
 /*
- * tomacro:
- *     Convert a dev name to a macro name
+ * convert a dev name to a macro name
  */
  */
-
 char *tomacro(dev)
 char *tomacro(dev)
-register char *dev;
+       register char *dev;
 {
 {
-    static char mbuf[20];
-    register char *cp;
+       static char mbuf[20];
+       register char *cp;
 
 
-    cp = mbuf;
-    *cp++ = 'N';
-    while(*dev)
-       *cp++ = toupper(*dev++);
-    *cp++ = '\0';
-    return mbuf;
+       cp = mbuf;
+       *cp++ = 'N';
+       while (*dev)
+               *cp++ = toupper(*dev++);
+       *cp++ = 0;
+       return (mbuf);
 }
 }