BSD 4_3_Tahoe release
[unix-history] / usr / src / lib / libc / gen / disklabel.c
index e37d0e0..3c055a1 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)disklabel.c        5.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)disklabel.c        5.9 (Berkeley) 1/27/88";
 #endif LIBC_SCCS and not lint
 
 #include <sys/param.h>
 #endif LIBC_SCCS and not lint
 
 #include <sys/param.h>
@@ -22,24 +22,35 @@ struct disklabel *
 getdiskbyname(name)
        char *name;
 {
 getdiskbyname(name)
        char *name;
 {
-       static struct disklabel disk;
-       static char localbuf[100];
-       char *cp, *cq;
+       static struct   disklabel disk;
+       static char     boot[BUFSIZ];
+       char    localbuf[BUFSIZ];
+       char    buf[BUFSIZ];
+       char    *cp, *cq;       /* can't be register */
        register struct disklabel *dp = &disk;
        register struct partition *pp;
        register struct disklabel *dp = &disk;
        register struct partition *pp;
-       char p, max, psize[3], pbsize[3], pfsize[3], poffset[3], ptype[3];
-       char buf[BUFSIZ];
-       u_long *dx;
+       char    p, max, psize[3], pbsize[3],
+               pfsize[3], poffset[3], ptype[3];
+       u_long  *dx;
 
        if (dgetent(buf, name) <= 0)
                return ((struct disklabel *)0);
        bzero((char *)&disk, sizeof(disk));
 
        if (dgetent(buf, name) <= 0)
                return ((struct disklabel *)0);
        bzero((char *)&disk, sizeof(disk));
+       /*
+        * typename
+        */
        cq = dp->d_typename;
        cp = buf;
        while (cq < dp->d_typename + sizeof(dp->d_typename) - 1 &&
            (*cq = *cp) && *cq != '|' && *cq != ':')
                cq++, cp++;
        *cq = '\0';
        cq = dp->d_typename;
        cp = buf;
        while (cq < dp->d_typename + sizeof(dp->d_typename) - 1 &&
            (*cq = *cp) && *cq != '|' && *cq != ':')
                cq++, cp++;
        *cq = '\0';
+       /*
+        * boot name (optional)  xxboot, bootxx
+        */
+       cp = boot;
+       dp->d_boot0 = dgetstr("b0", &cp);
+       dp->d_boot1 = dgetstr("b1", &cp);
        cp = localbuf;
        cq = dgetstr("ty", &cp);
        if (cq && strcmp(cq, "removable") == 0)
        cp = localbuf;
        cq = dgetstr("ty", &cp);
        if (cq && strcmp(cq, "removable") == 0)
@@ -48,6 +59,7 @@ getdiskbyname(name)
                dp->d_flags |= D_RAMDISK;
        if (dgetflag("sf"))
                dp->d_flags |= D_BADSECT;
                dp->d_flags |= D_RAMDISK;
        if (dgetflag("sf"))
                dp->d_flags |= D_BADSECT;
+
 #define getnumdflt(field, dname, dflt) \
        { int f = dgetnum(dname); \
        (field) = f == -1 ? (dflt) : f; }
 #define getnumdflt(field, dname, dflt) \
        { int f = dgetnum(dname); \
        (field) = f == -1 ? (dflt) : f; }
@@ -360,30 +372,13 @@ gettype(t, names)
        register char **nm;
 
        for (nm = names; *nm; nm++)
        register char **nm;
 
        for (nm = names; *nm; nm++)
-               if (ustrcmp(t, *nm) == 0)
+               if (strcasecmp(t, *nm) == 0)
                        return (nm - names);
        if (isdigit(*t))
                return (atoi(t));
        return (0);
 }
 
                        return (nm - names);
        if (isdigit(*t))
                return (atoi(t));
        return (0);
 }
 
-static
-ustrcmp(s1, s2)
-       register char *s1, *s2;
-{
-#define        lower(c)        (islower(c) ? (c) : tolower(c))
-
-       for (; *s1; s1++, s2++) {
-               if (*s1 == *s2)
-                       continue;
-               if (isalpha(*s1) && isalpha(*s2) &&
-                   lower(*s1) == lower(*s2))
-                       continue;
-               return (*s2 - *s1);
-       }
-       return (0);
-}
-
 dkcksum(lp)
        register struct disklabel *lp;
 {
 dkcksum(lp)
        register struct disklabel *lp;
 {