diff --git a/src/etc/Makefile b/src/etc/Makefile index f92154e8..d7be156f 100644 --- a/src/etc/Makefile +++ b/src/etc/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.145 2002/02/13 20:04:57 todd Exp $ +# $OpenBSD: Makefile,v 1.146 2002/02/13 20:23:01 todd Exp $ TZDIR= /usr/share/zoneinfo LOCALTIME= US/Pacific @@ -321,7 +321,7 @@ snap_md: MAKEDEVARCHS+= alpha MAKEDEVARCHS+= amiga #MAKEDEVARCHS+= hp300 -#MAKEDEVARCHS+= hppa +MAKEDEVARCHS+= hppa MAKEDEVARCHS+= i386 MAKEDEVARCHS+= mac68k MAKEDEVARCHS+= macppc diff --git a/src/etc/etc.hppa/MAKEDEV b/src/etc/etc.hppa/MAKEDEV index 010ba935..b88dc895 100644 --- a/src/etc/etc.hppa/MAKEDEV +++ b/src/etc/etc.hppa/MAKEDEV @@ -1,353 +1,412 @@ #!/bin/sh - # -# $OpenBSD: MAKEDEV,v 1.9 2001/09/06 19:40:21 mickey Exp $ -# @(#)MAKEDEV 5.5 (Berkeley) 5/28/91 +# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. +# generated from: +# +# OpenBSD: etc.hppa/MAKEDEV.md,v 1.3 2002/02/13 20:21:54 todd Exp +# OpenBSD: MAKEDEV.mi,v 1.26 2002/02/10 21:52:30 deraadt Exp +# OpenBSD: MAKEDEV.sub,v 1.5 2002/01/23 06:02:19 todd Exp +# +# $OpenBSD: MAKEDEV,v 1.10 2002/02/13 20:23:01 todd Exp $ +# +# Copyright (c) 2001 Todd T. Fries +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Device "make" file. Valid arguments: +# all makes all known devices, including local devices. +# Tries to make the ``standard'' number of each type. # std standard devices # local configuration specific devices # Tapes: -# st* SCSI tape +# st* SCSI tapes # Disks: -# fd* floppy disks +# fd* Floppy disk drives (3 1/2", 5 1/4") # sd* SCSI disks -# cd* CDROM drives -# ccd* "concatenated" pseudo-disks +# cd* SCSI cdrom drives +# ccd* concatenated disk devices # vnd* "file" pseudo-disks -# rd* RAM disks -# Terminal multiplexors: -# tty0* RS-232 single-port serial interface +# rd* "ramdisk" pseudo-disks +# Terminal ports: +# tty0* NS16x50 serial ports # Pseudo terminals: -# pty* set of 16 master and slave pseudo terminals +# tty* set of 16 slave psuedo terminals +# pty* set of 16 master pseudo terminals # Printers: -# lpt* IEEE 1284 cetronics iface +# lpt* IEEE 1284 centronics printer # Call units: # Special purpose devices: -# ch* SCSI media changer -# fd file descriptors -# hil HIL input devices -# bpf* packet filter +# hil HP300 HIL input devices +# fd makes fd/* for the fdescfs +# bpf* Berkeley Packet Filter # tun* network tunnel driver +# pf* Packet Filter # lkm loadable kernel modules interface -# *random inkernel random number generator +# altq/ ALTQ control interface +# *random inkernel random data source # xfs* XFS filesystem devices -# altq ALTQ control interface +# ch* SCSI media changer +# ss* SCSI scanners +# uk* SCSI Unknown device +# pdc PDC device # +PATH=/sbin:/usr/sbin:/bin:/usr/bin +T=$0 -PATH=/sbin:/bin/:/usr/bin:/usr/sbin -umask 77 +# set this to echo for Echo-Only debugging +[ "$eo" ] || eo= -# -# Utility functions -# - -hex () +hex() { case $1 in - [0-9]) echo -n $1 ;; - 10) echo -n a;; - 11) echo -n b;; - 12) echo -n c;; - 13) echo -n d;; - 14) echo -n e;; - 15) echo -n f;; + [0-9]) echo -n $1;; + 10) echo -n a;; + 11) echo -n b;; + 12) echo -n c;; + 13) echo -n d;; + 14) echo -n e;; + 15) echo -n f;; esac } -dodisk () +trunc() { - rm -f ${1}${2}? r${1}${2}? - mknod ${1}${2}a b $3 $(($5 * 16 + $6 + 0)) - mknod ${1}${2}b b $3 $(($5 * 16 + $6 + 1)) - mknod ${1}${2}c b $3 $(($5 * 16 + $6 + 2)) - mknod ${1}${2}d b $3 $(($5 * 16 + $6 + 3)) - mknod ${1}${2}e b $3 $(($5 * 16 + $6 + 4)) - mknod ${1}${2}f b $3 $(($5 * 16 + $6 + 5)) - mknod ${1}${2}g b $3 $(($5 * 16 + $6 + 6)) - mknod ${1}${2}h b $3 $(($5 * 16 + $6 + 7)) - mknod ${1}${2}i b $3 $(($5 * 16 + $6 + 8)) - mknod ${1}${2}j b $3 $(($5 * 16 + $6 + 9)) - mknod ${1}${2}k b $3 $(($5 * 16 + $6 + 10)) - mknod ${1}${2}l b $3 $(($5 * 16 + $6 + 11)) - mknod ${1}${2}m b $3 $(($5 * 16 + $6 + 12)) - mknod ${1}${2}n b $3 $(($5 * 16 + $6 + 13)) - mknod ${1}${2}o b $3 $(($5 * 16 + $6 + 14)) - mknod ${1}${2}p b $3 $(($5 * 16 + $6 + 15)) - mknod r${1}${2}a c $4 $(($5 * 16 + $6 + 0)) - mknod r${1}${2}b c $4 $(($5 * 16 + $6 + 1)) - mknod r${1}${2}c c $4 $(($5 * 16 + $6 + 2)) - mknod r${1}${2}d c $4 $(($5 * 16 + $6 + 3)) - mknod r${1}${2}e c $4 $(($5 * 16 + $6 + 4)) - mknod r${1}${2}f c $4 $(($5 * 16 + $6 + 5)) - mknod r${1}${2}g c $4 $(($5 * 16 + $6 + 6)) - mknod r${1}${2}h c $4 $(($5 * 16 + $6 + 7)) - mknod r${1}${2}i c $4 $(($5 * 16 + $6 + 8)) - mknod r${1}${2}j c $4 $(($5 * 16 + $6 + 9)) - mknod r${1}${2}k c $4 $(($5 * 16 + $6 + 10)) - mknod r${1}${2}l c $4 $(($5 * 16 + $6 + 11)) - mknod r${1}${2}m c $4 $(($5 * 16 + $6 + 12)) - mknod r${1}${2}n c $4 $(($5 * 16 + $6 + 13)) - mknod r${1}${2}o c $4 $(($5 * 16 + $6 + 14)) - mknod r${1}${2}p c $4 $(($5 * 16 + $6 + 15)) - chown root.operator ${1}${2}[a-p] r${1}${2}[a-p] - chmod 640 ${1}${2}[a-p] r${1}${2}[a-p] + # XXX pdksh can't seem to deal with locally scoped variables + # in ${foo#$bar} expansions + arg1="$1" + arg2="$2" + case $3 in + l) echo ${arg2#$arg1} ;; + r|*) echo ${arg1#$arg2} ;; + esac } -# -# End of utility functions -# +unt() +{ + # XXX pdksh can't seem to deal with locally scoped variables + # in ${foo#$bar} expansions + arg="$1" + tmp="${arg#[a-zA-Z]*}" + tmp="${tmp%*[a-zA-Z]}" + while [ "$tmp" != "$arg" ] + do + arg=$tmp + tmp="${arg#[a-zA-Z]*}" + tmp="${tmp%*[a-zA-Z]}" + done + echo $arg +} -for i +dodisk() +{ + [ "$DEBUG" ] && set -x + n=$(($((${5}*${7:-16}))+${6})) count=0 + RMlist="$RMlist $1$2? r$1$2?" + [ 0$7 -ne 8 ] && l="i j k l m n o p" + for d in a b c d e f g h $l + do + M $1$2$d b $3 $(($n+$count)) 640 + M r$1$2$d c $4 $(($n+$count)) 640 + let count=count+1 + done + MKlist="$MKlist;chown root.operator $1$2? r$1$2?" +} + +dodisk2() +{ + n=$(($(($5*${7:-16}))+$6)) + M $1$2a b $3 $n 640 operator + M r$1$2a c $4 $n 640 operator + n=$(($n+2)) + M $1$2c b $3 $n 640 operator + M r$1$2c c $4 $n 640 operator +} + +# M name b/c major minor [mode] [group] +RMlist="rm -f" +MKlist=":" + +mkl() { + [ "${mklist[$1]}" ] && { + mklist[$1]="${mklist[$1]};mknod -m $1 $2 $3 $4 $5" + } || { + mklist[$1]="mknod -m $1 $2 $3 $4 $5" + modes="$modes $1" + } +} + +M() { + RMlist="$RMlist $1" + mkl ${5-666} $1 $2 $3 $4 + mklist="$mklist $1" + G=${6:-wheel} + [ "$7" ] && { + MKlist="$MKlist;chown $7.$G $1" + } || { + case $G in + wheel)g=0;;kmem)g=2;;operator)g=5;;tty)g=4;;dialer)g=117;; + esac + [ "${grplist[$g]}" ] && { + grplist[$g]="${grplist[$g]} $1" + } || { + groups="$groups $g" + grplist[$g]="chgrp $G $1" + } + } + return 0 +} + +R() { +[ "$DEBUG" ] && set -x +for i in "$@" do +U=`unt $i` +[ "$U" ] || U=0 + case $i in +ramdisk) + R std fd st0 st1 sd0 sd1 sd2 sd3 rd0 + R pty0 hil com0 com1 + R bpf0 bpf1 tun0 tun1 lkm random + ;; -all) - sh MAKEDEV std fd st0 st1 ccd0 ccd1 ccd2 - sh MAKEDEV sd0 sd1 sd2 rd0 rd1 pty0 vnd0 vnd1 vnd2 vnd3 - sh MAKEDEV tty00 tty01 tty02 tty03 - sh MAKEDEV bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 - sh MAKEDEV pf tun0 tun1 tun2 tun3 lkm random xfs0 altq - sh MAKEDEV local +std) + M console c 0 0 600 + M tty c 1 0 + M mem c 2 0 640 kmem + M kmem c 2 1 640 kmem + M null c 2 2 + M zero c 2 12 + M stdin c 16 0 + M stdout c 16 1 + M stderr c 16 2 + M ksyms c 29 0 640 kmem + M drum c 3 0 640 kmem + M klog c 6 0 600 ;; -raminst) - sh MAKEDEV std fd st0 st1 sd0 sd1 sd2 sd3 rd0 rd1 - sh MAKEDEV pty0 hil tty00 tty01 - sh MAKEDEV bpf0 bpf1 tun0 tun1 lkm random +uk*) + M uk$U c 15 $U 640 operator ;; -std) - rm -f console drum kmem mem null zero tty klog stdin stdout stderr ksyms - mknod console c 0 0 - mknod tty c 1 0 ; chmod 666 tty - mknod mem c 2 0 ; chmod 640 mem ; chown root.kmem mem - mknod kmem c 2 1 ; chmod 640 kmem ; chown root.kmem kmem - mknod null c 2 2 ; chmod 666 null - mknod zero c 2 12 ; chmod 666 zero - mknod drum c 3 0 ; chmod 640 drum ; chown root.kmem drum - mknod klog c 6 0 ; chmod 600 klog - mknod stdin c 16 0 ; chmod 666 stdin - mknod stdout c 16 1 ; chmod 666 stdout - mknod stderr c 16 2 ; chmod 666 stderr - mknod ksyms c 29 0 ; chmod 640 ksyms ; chown root.kmem ksyms +ss*) + M ss$U c 14 $U 440 operator + RMlist="$RMlist scan$U" + MKlist="$MKlist;umask 77;ln -s ss$U scan$U" ;; -fd) - rm -f fd/* - mkdir fd > /dev/null 2>&1 - n=0 - (cd fd && while [ $n -lt 64 ]; do mknod $n c 24 $n; n="$(( $n + 1 ))"; done ) - chown -R root.wheel fd - chmod 555 fd - chmod 666 fd/* +ch*) + M ch$U c 13 $U 660 operator ;; -st*) - umask 2 ; unit=${i##*[a-z]} - case $i in - st*) name=st; chr=11; blk=5;; - 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 $(($unit * 16 + 0)) - mknod n$name$unit b $blk $(($unit * 16 + 1)) - mknod e$name$unit b $blk $(($unit * 16 + 2)) - mknod en$name$unit b $blk $(($unit * 16 + 3)) - mknod r$name$unit c $chr $(($unit * 16 + 0)) - mknod nr$name$unit c $chr $(($unit * 16 + 1)) - mknod er$name$unit c $chr $(($unit * 16 + 2)) - mknod enr$name$unit c $chr $(($unit * 16 + 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 660 $name$unit n$name$unit e$name$unit en$name$unit \ - r$name$unit nr$name$unit er$name$unit enr$name$unit - umask 77 +xfs*) + M xfs$U c 31 $U 600 ;; -ch*) - umask 2 - name=ch; chr=13 - rm -f $name$unit - mknod ${name}${unit} c $chr $unit - chown root.operator ${name}${unit} - chmod 660 ${name}${unit} - umask 77 +*random) + n=0 + for pre in " " s u p a + do + M ${pre}random c 20 $n 644 + n=$(($n+1)) + done ;; -bpf*) - unit=${i##*[a-z]} - rm -f bpf$unit - mknod bpf$unit c 17 $unit - chmod 600 bpf$unit - chown root.wheel bpf$unit +altq) + RMlist="mkdir -p altq;$RMlist" + for d in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq; do + M altq/$d c 33 $U 644 + U=$(($U+1)) + done ;; -pf) - rm -f pf - mknod pf c 21 0 - chown root.wheel pf - chmod 600 pf +lkm) + M lkm c 19 0 640 kmem + ;; + +pf*) + M pf c 21 0 600 ;; tun*) - unit=${i##*[a-z]} - rm -f tun$unit - mknod tun$unit c 18 $unit - chmod 600 tun$unit - chown root.wheel tun$unit + M tun$U c 18 $U 600 ;; -rd*|cd*) - umask 2 ; unit=${i##*[a-z]} - case $i in - rd*) name=cd; blk=3; chr=9;; - cd*) name=cd; blk=6; chr=12;; - esac - rm -f $name${unit}? r$name${unit}? - mknod ${name}${unit}a b $blk $(($unit * 16 + 0)) - mknod ${name}${unit}c b $blk $(($unit * 16 + 2)) - mknod r${name}${unit}a c $chr $(($unit * 16 + 0)) - mknod r${name}${unit}c c $chr $(($unit * 16 + 2)) - chown root.operator ${name}${unit}[a-h] r${name}${unit}[a-h] - chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] - umask 77 +bpf*) + M bpf$U c 17 $U 600 ;; -ccd*|sd*) - umask 2 ; unit=${i##*[a-z]} +fd) + RMlist="mkdir -p fd;$RMlist" n=0 + while [ $n -lt 64 ];do M fd/$n c 16 $n;n=$(($n+1));done + MKlist="$MKlist;chmod 555 fd" + ;; + +lpt*|lpa*) case $i in - sd*) name=sd; blk=4; chr=10;; - ccd*) name=ccd; blk=1; chr=7;; + lpt*) n=lpt f=0;; + lpa*) n=lpa f=128;; 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) - dodisk $name $unit $blk $chr $unit 0 - ;; - *) - echo bad unit for disk in: $i - ;; - esac - umask 77 + M $n$U c 30 $(($U+$f)) 600 ;; -vnd*) - umask 2 ; unit=${i##*[a-z]} - blk=2; chr=8; - dodisk vnd $unit $blk $chr $unit 0 - dodisk svnd $unit $blk $chr $unit 128 - umask 77 +pty*) + case $U in + 0) off=0 name=p;; + 1) off=16 name=q;; + 2) off=32 name=r;; + 3) off=48 name=s;; + 4) off=64 name=t;; + 5) off=80 name=u;; + 6) off=96 name=v;; + 7) off=112 name=w;; + 8) off=128 name=x;; + 9) off=144 name=y;; + 10) off=160 name=z;; + 11) off=176 name=P;; + 12) off=192 name=Q;; + 13) off=206 name=R;; + 14) off=224 name=S;; + 15) off=240 name=T;; + *) echo bad unit for pty in: $i; continue;; + esac + n=0 + while [ $n -lt 16 ] + do + nam=$name$(hex $n) + M tty$nam c 4 $(($off+$n)) + M pty$nam c 5 $(($off+$n)) + n=$(($n+1)) + done ;; tty0*) - unit=${i##tty0} - case $unit in - 0|1|2|3) - rm -f tty${unit} cua${unit} - mknod tty${unit} c 23 ${unit} - mknod cua${unit} c 23 $((${unit} + 128)) - ;; - *) - echo bad unit for tty in: $i - ;; - esac + M tty$U c 23 $U 660 dialer uucp + M cua$U c 23 $(($U+128)) 660 dialer uucp ;; -lpt*) - unit=${i##*[a-z]} - case $unit in - 0|1|2|3) - rm -f lpt${unit} - mknod lpt${unit} c 30 ${unit} - ;; - *) - echo bad unit for lpt in: $i - ;; - esac +rd*) + dodisk2 rd $U 3 9 $U 0 ;; -lkm) - rm -f lkm - mknod lkm c 19 0 - chown root.kmem lkm - chmod 640 lkm +vnd*) + dodisk vnd $U 2 8 $U 0 + dodisk svnd $U 2 8 $U 128 ;; -pty*) - class=${i##*[a-z]} - case $class in - 0) offset=0 name=p;; - 1) offset=16 name=q;; - 2) offset=32 name=r;; - 3) offset=48 name=s;; - 4) offset=64 name=t;; - 5) offset=80 name=u;; - 6) offset=96 name=v;; - 7) offset=112 name=w;; - 8) offset=128 name=x;; - 9) offset=144 name=y;; - 10) offset=160 name=z;; - 11) offset=176 name=P;; - 12) offset=192 name=Q;; - 13) offset=208 name=R;; - 14) offset=224 name=S;; - 15) offset=240 name=T;; - *) echo bad unit for pty in: $i;; +cd*) + dodisk2 cd $U 6 12 $U 0 + ;; + +fd*) + typnam=$U${i#fd[01]*} + case $typnam in + 0|1) typnum=0;; # no type specified, assume A + *A) typnum=0; typnam=0;; + *B) typnum=1;; + *C) typnum=2;; + *D) typnum=3;; + *E) typnum=4;; + *F) typnum=5;; + *G) typnum=6;; + *H) typnum=7;; + *) echo bad type $typnam for $i; exit 1;; esac - case $class in - 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15) - umask 0 - n=0 - while [ $n -lt 16 ] - do - nam=$name`hex $n` - rm -f {tty,pty}$nam - mknod tty$nam c 4 "$(( $offset + $n ))" - mknod pty$nam c 5 "$(( $offset + $n ))" - n="$(( $n + 1 ))" - done - umask 77 - ;; + case $U in + 0|1) blk=7; chr=24;; + *) echo bad unit $U for $i; exit 1;; esac + nam=fd${typnam} + n=$(($(($U*128))+$(($typnum*16)))) + M ${nam}a b $blk $n 640 operator + M ${nam}b b $blk $(($n+1)) 640 operator + M ${nam}c b $blk $(($n+2)) 640 operator + M r${nam}a c $chr $n 640 operator + M r${nam}b c $chr $(($n+1)) 640 operator + M r${nam}c c $chr $(($n+2)) 640 operator ;; -random|srandom|urandom|prandom|arandom) - rm -f random urandom srandom prandom arandom - mknod random c 20 0 - mknod srandom c 20 1 - mknod urandom c 20 2 - mknod prandom c 20 3 - mknod arandom c 20 4 - chown root.wheel random srandom urandom prandom arandom - chmod 644 random srandom urandom prandom arandom +st*) + n=$(($U*16)) + for pre in " " n e en + do + M ${pre}st$U b 5 $n 660 operator + M ${pre}rst$U c 11 $n 660 operator + n=$(($n+1)) + done ;; -xfs*) - rm -f xfs$unit - mknod xfs$unit c 31 $unit - chmod 600 xfs$unit - chown root.wheel xfs$unit +local) + test -s $T.local && sh $T.local ;; -altq) - mkdir -p altq - chmod 755 altq - unit=0 - for dev in altq cbq wfq afm fifoq red rio localq hfsc \ - cdnr blue priq; do - rm -f altq/$dev - mknod altq/$dev c 33 $unit - chmod 644 altq/$dev - unit=$(($unit + 1)) - done +all) + R xfs0 ss0 ss1 uk0 rndrandom lpa0 lpa1 lpa2 lpt0 lpt1 lpt2 + R lkm tty00 tty01 tty02 tty03 pf altq tun0 tun1 tun2 tun3 bpf0 + R bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 fd1 fd1B fd1C + R fd1D fd1E fd1F fd1G fd1H fd0 fd0B fd0C fd0D fd0E fd0F fd0G + R fd0H rd0 ccd0 ccd1 ccd2 ccd3 vnd0 vnd1 vnd2 vnd3 std cd0 cd1 + R ch0 st0 st1 pty0 pty1 fd sd0 sd1 sd2 sd3 sd4 ;; -local) - umask 0 - test -s MAKEDEV.local && sh MAKEDEV.local +sd*|ccd*) + case $i in + sd*) dodisk sd $U 4 10 $U 0;; + ccd*) dodisk ccd $U 1 7 $U 0;; + esac ;; + *) echo $i: unknown device ;; esac done +} +R "$@" +if [ "$os" = "SunOS" ]; then + eo=transform + transform() { + case $mode in + 600) mask=077;; + 640) mask=027;; + 660) mask=007;; + 644) mask=022;; + 666) mask=0;; + 440) mask=227;; + esac + echo `echo "$@"|sed \ + 's/mknod -m \([0-9]*\) /umask '$mask';mknod /;s/-m [0-9]* //g;\ + s/operator/5/g;s/root.kmem/root.2/g;s/root\./root:/g'` + } +fi +list="$RMlist" +for mode in $modes; do + list="$list;${mklist[$mode]}" +done +for group in $groups; do + list="$list;${grplist[$group]}" +done +list="$list;$MKlist" +if [ "$eo" = "echo" -o "$eo" = "transform" ]; then + $eo "$list" +else + echo "$list" | sh +fi