This MAKEDEV no longer requires awk.
authortodd <todd@openbsd.org>
Tue, 22 Apr 1997 05:28:56 +0000 (05:28 +0000)
committertodd <todd@openbsd.org>
Tue, 22 Apr 1997 05:28:56 +0000 (05:28 +0000)
It almost is free of expr but will require more work.
PLEASE let me know if this changes anything ASAP!

etc/etc.sparc/MAKEDEV

index 7f1a563..2d6868f 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh -
 #
-#      $OpenBSD: MAKEDEV,v 1.15 1997/04/13 20:08:19 deraadt Exp $
+#      $OpenBSD: MAKEDEV,v 1.16 1997/04/22 05:28:56 todd Exp $
 #
 # Copyright (c) 1990 The Regents of the University of California.
 # All rights reserved.
 PATH=/sbin:/bin/:/usr/bin:/usr/sbin:/usr/etc
 umask 77
 
+case `uname -s` in
+SunOS) add ()
+       {
+               expr $1 + $2
+       }
+       mult ()
+       {
+               expr $1 '*' $2
+       }
+       hex ()
+       {
+               printf "%x" $1
+       }
+       unt ()
+       {
+               expr $1 : '.[yd]\(.*\)[a-p]'
+       }
+        ;;
+OpenBSD) add ()
+       {
+               echo "$(( $1 + $2 ))"
+       }
+       mult ()
+       {
+               echo "$(( $1 * $2 ))"
+       }
+       hex ()
+       {
+               case $1 in
+                       [0-9]) echo -n $1 ;;
+                       1[0-5]) echo -e -n "\\$(( $1 + 131 ))" ;;
+               esac
+       }
+       unt ()
+       {
+               if [ "${1#xy}" -ne "$1" ]
+               then
+                       unt=${1#xy}
+               else
+                       unt=${1#*d}
+               fi
+               echo ${unt%*[a-p]}
+       }
+        ;;
+esac
+
 for i
 do
 
@@ -122,9 +168,8 @@ std)
 fd)
        rm -f fd/*
        mkdir fd > /dev/null 2>&1
-       (cd fd && eval `echo "" | awk ' BEGIN { \
-               for (i = 0; i < 64; i++) \
-                       printf("mknod %d c 24 %d;", i, i)}'`)
+       n=0
+       (cd fd && while [ $n -lt 64 ]; do mknod $n c 24 $n; n=`add $n 1`; done )
        chown -R root.wheel fd
        chmod 555 fd
        chmod 666 fd/*
@@ -196,7 +241,7 @@ fd*)
        0|1)    blk=16; chr=54;;
        *)      echo bad unit $unit for $i; exit 1;;
        esac
-       nam=fd${typnam}${unit}
+       nam=fd${typnam}$unit
        rm -f ${nam}? r${nam}?
        basenum=`expr $unit '*' 128 + $typnum '*' 16`
        mknod ${nam}a   b $blk `expr $basenum + 0`
@@ -238,6 +283,12 @@ fd*)
 
 ccd*|sd*|xd*|xy*|cd*|vnd*)
        umask 2
+       unit=`unt $i`
+       if [ $unit -gt 15 ]
+       then
+               echo bad disk unit: $i - $unit
+               exit 127
+       fi
        case $i in
        ccd*) name=ccd; blk=9; chr=23;;
        sd*) name=sd; blk=7; chr=17;;
@@ -245,50 +296,29 @@ ccd*|sd*|xd*|xy*|cd*|vnd*)
        xy*) name=xy; blk=3; chr=9;;
        cd*)  name=cd; blk=18; chr=58;;
        vnd*) name=vnd; blk=8; chr=110;;
+       *) echo bad unit for disk in: $i;;
        esac
-       case $unit in
-       0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\
-       17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)
-               rm -f ${name}${unit}[a-p] r${name}${unit}[a-p]
-               mknod ${name}${unit}c   b $blk `expr $unit '*' 16 + 2`
-               mknod r${name}${unit}c  c $chr `expr $unit '*' 16 + 2`
-               mknod ${name}${unit}a   b $blk `expr $unit '*' 16 + 0`
-               mknod ${name}${unit}b   b $blk `expr $unit '*' 16 + 1`
-               mknod ${name}${unit}d   b $blk `expr $unit '*' 16 + 3`
-               mknod ${name}${unit}e   b $blk `expr $unit '*' 16 + 4`
-               mknod ${name}${unit}f   b $blk `expr $unit '*' 16 + 5`
-               mknod ${name}${unit}g   b $blk `expr $unit '*' 16 + 6`
-               mknod ${name}${unit}h   b $blk `expr $unit '*' 16 + 7`
-               mknod ${name}${unit}i   b $blk `expr $unit '*' 16 + 8`
-               mknod ${name}${unit}j   b $blk `expr $unit '*' 16 + 9`
-               mknod ${name}${unit}k   b $blk `expr $unit '*' 16 + 10`
-               mknod ${name}${unit}l   b $blk `expr $unit '*' 16 + 11`
-               mknod ${name}${unit}m   b $blk `expr $unit '*' 16 + 12`
-               mknod ${name}${unit}n   b $blk `expr $unit '*' 16 + 13`
-               mknod ${name}${unit}o   b $blk `expr $unit '*' 16 + 14`
-               mknod ${name}${unit}p   b $blk `expr $unit '*' 16 + 15`
-               mknod r${name}${unit}a  c $chr `expr $unit '*' 16 + 0`
-               mknod r${name}${unit}b  c $chr `expr $unit '*' 16 + 1`
-               mknod r${name}${unit}d  c $chr `expr $unit '*' 16 + 3`
-               mknod r${name}${unit}e  c $chr `expr $unit '*' 16 + 4`
-               mknod r${name}${unit}f  c $chr `expr $unit '*' 16 + 5`
-               mknod r${name}${unit}g  c $chr `expr $unit '*' 16 + 6`
-               mknod r${name}${unit}h  c $chr `expr $unit '*' 16 + 7`
-               mknod r${name}${unit}i  c $chr `expr $unit '*' 16 + 8`
-               mknod r${name}${unit}j  c $chr `expr $unit '*' 16 + 9`
-               mknod r${name}${unit}k  c $chr `expr $unit '*' 16 + 10`
-               mknod r${name}${unit}l  c $chr `expr $unit '*' 16 + 11`
-               mknod r${name}${unit}m  c $chr `expr $unit '*' 16 + 12`
-               mknod r${name}${unit}n  c $chr `expr $unit '*' 16 + 13`
-               mknod r${name}${unit}o  c $chr `expr $unit '*' 16 + 14`
-               mknod r${name}${unit}p  c $chr `expr $unit '*' 16 + 15`
-               chown root.operator ${name}${unit}[a-p] r${name}${unit}[a-p]
-               chmod 640 ${name}${unit}[a-p] r${name}${unit}[a-p]
-               ;;
-       *)
-               echo bad unit for disk in: $i
-               ;;
-       esac
+       if [ "$unit" = "" ]
+       then
+               n=0
+               while [ $n -lt 32 ]
+               do
+                       sh MAKEDEV $name$n
+                       n=`add $n 1`
+               done
+       fi
+       rm -f $name$unit? r$name$unit?
+       minor=`mult $unit 8`
+       for slice in a b c d e f g h i j k l m n o p
+       do
+               dev=$name$unit$slice
+               mknod $dev b $blk $minor
+               mknod r$dev b $chr $minor
+               minor=`add $minor 1`
+       done
+       chown root.operator $name$unit? r$name$unit?
+       chmod 640 $name$unit? r$name$unit?
+       umask 77
        umask 77
        ;;
 
@@ -299,22 +329,23 @@ st*)
        esac
        rm -f $name$unit n$name$unit e$name$unit en$name$unit \
                r$name$unit nr$name$unit er$name$unit enr$name$unit 
-       mknod ${name}${unit}    b $blk `expr $unit '*' 16 + 0`
-       mknod n${name}${unit}   b $blk `expr $unit '*' 16 + 1`
-       mknod e${name}${unit}   b $blk `expr $unit '*' 16 + 2`
-       mknod en${name}${unit}  b $blk `expr $unit '*' 16 + 3`
-       mknod r${name}${unit}   c $chr `expr $unit '*' 16 + 0`
-       mknod nr${name}${unit}  c $chr `expr $unit '*' 16 + 1`
-       mknod er${name}${unit}  c $chr `expr $unit '*' 16 + 2`
-       mknod enr${name}${unit} c $chr `expr $unit '*' 16 + 3`
-       chown root.operator ${name}${unit} n${name}${unit} \
+       sixt=`mult $unit 16`
+       mknod $name$unit        b $blk `add $sixt 0`
+       mknod n$name$unit       b $blk `add $sixt 1`
+       mknod e$name$unit       b $blk `add $sixt 2`
+       mknod en$name$unit      b $blk `add $sixt 3`
+       mknod r$name$unit       c $chr `add $sixt 0`
+       mknod nr$name$unit      c $chr `add $sixt 1`
+       mknod er$name$unit      c $chr `add $sixt 2`
+       mknod enr$name$unit     c $chr `add $sixt 3`
+       chown root.operator $name$unit n$name$unit \
                e$name$unit en$name$unit \
-               r${name}${unit} nr${name}${unit} \
-               er${name}${unit} enr${name}${unit} 
-       chmod 640 ${name}${unit} n${name}${unit} \
+               r$name$unit nr$name$unit \
+               er$name$unit enr$name$unit 
+       chmod 640 $name$unit n$name$unit \
                e$name$unit en$name$unit \
-               r${name}${unit} nr${name}${unit} \
-               er${name}${unit} enr${name}${unit} 
+               r$name$unit nr$name$unit \
+               er$name$unit enr$name$unit 
        umask 77
        ;;
 
@@ -324,9 +355,10 @@ ch*)
        ch*) name=ch;  chr=19;;
        esac
        rm -f $name$unit
-       mknod ${name}${unit}    c $chr `expr $unit '*' 16 + 0`
-       chown root.operator ${name}${unit}
-       chmod 640 ${name}${unit}
+       sixt=`mult $unit 16`
+       mknod $name$unit        c $chr `add $sixt 0`
+       chown root.operator $name$unit
+       chmod 640 $name$unit
        umask 77
        ;;
 
@@ -350,11 +382,15 @@ pty*)
        case $unit in
        0|1|2|3|4)
                umask 0
-               eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
-                       for (i = 0; i < 16; i++)
-                               printf("mknod tty%s%x c 20 %d;" \
-                                       "mknod pty%s%x c 21 %d; ", \
-                                       n, i, b+i, n, i, b+i); }'`
+               n=0
+               while [ $n -lt 16 ]
+                do
+                        n=$name`hex $n`
+                        rm -rf {tty,pty}$n
+                        mknod tty$n c 5 `add $offset $n`
+                        mknod pty$n c 6 `add $offset $n`
+                        n=`add $n 1`
+                done
                umask 77
                if [ $unit = 1 ]; then
                        mv ttyqf ttyv0; mv ptyqf ptyv0
@@ -375,7 +411,7 @@ random|srandom|urandom|prandom|arandom)
        ;;
 
 uk*)
-       unit=`expr $i : 'uk\(.*\)'`
+       unit=${i#uk}
        rm -f uk$unit
        mknod uk$unit c 98 $unit
        chown root.operator uk$unit
@@ -383,7 +419,7 @@ uk*)
        ;;
 
 ss*)
-       unit=`expr $i : 'ss\(.*\)'`
+       unit=${i#ss}
        rm -f ss$unit
        mknod ss$unit c 99 $unit
        chown root.operator ss$unit