diff options
author | iru <devnull@localhost> | 2011-04-14 00:35:48 -0300 |
---|---|---|
committer | iru <devnull@localhost> | 2011-04-14 00:35:48 -0300 |
commit | fd8d404d520a3f10c143f5cbe7c170606fffc75c (patch) | |
tree | fbc8bf7218eca7d6290ffb1109fcc73b5b5cda33 /sys/src/cmd/aux/multi | |
parent | dd468419f2fbaa2c3fec570a88d13e8eae8f3faf (diff) |
Promote the old installer/livecd specific tools to normal tools under /sys/src/cmd. Where similar common tools already existed, I kept them.
Diffstat (limited to 'sys/src/cmd/aux/multi')
-rw-r--r-- | sys/src/cmd/aux/multi/mkfile | 76 | ||||
-rw-r--r-- | sys/src/cmd/aux/multi/mkmulti | 70 | ||||
-rw-r--r-- | sys/src/cmd/aux/multi/multi.c | 38 |
3 files changed, 184 insertions, 0 deletions
diff --git a/sys/src/cmd/aux/multi/mkfile b/sys/src/cmd/aux/multi/mkfile new file mode 100644 index 000000000..a3acc36de --- /dev/null +++ b/sys/src/cmd/aux/multi/mkfile @@ -0,0 +1,76 @@ +objtype=386 +</$objtype/mkfile + +TARG=multi + +PIECES=\ + aux/mouse\ + aux/pcmcia\ + aux/vga\ + aux/zerotrunc\ + disk/fdisk\ + disk/format\ + disk/mbr\ + disk/prep\ +# fossil/fossil\ +# fossil/flfmt\ + ip/ipconfig\ + ip/ppp\ + ndb/cs\ + ndb/dns\ +# replica/applylog\ + 9660srv\ +# awk\ + basename\ + cat\ + chgrp\ + chmod\ + cleanname\ + cmp\ + cp\ + date\ + dd\ + dossrv\ + echo\ + ed\ + ext2srv\ +# fcp\ + grep\ + hget\ + hoc\ + ls\ + mc\ + mount\ + mv\ + ps\ + read\ +# rio\ + rm\ + sed\ + sort\ + srv\ +# stats\ + syscall\ + tail\ + tee\ + test\ + wc\ + xd\ + +8.multi:V: mkmulti mkfile + mkmulti $PIECES + ls -l 8.multi + ls -l /386/bin/$PIECES | awk '{s += $6} END{print s}' + +scripts:V: + rm -rf ../../pc/multi + mkdir ../../pc/multi + for(i in $PIECES){ + b=`{basename $i} + echo '#!/bin/multi' >>../../pc/multi/$b + chmod +x ../../pc/multi/$b + } + +BIN=/sys/lib/dist/bin/$objtype +</sys/src/cmd/mkmany + diff --git a/sys/src/cmd/aux/multi/mkmulti b/sys/src/cmd/aux/multi/mkmulti new file mode 100644 index 000000000..2317e51e8 --- /dev/null +++ b/sys/src/cmd/aux/multi/mkmulti @@ -0,0 +1,70 @@ +#!/bin/rc + +targ=multi + +n=0 +dir=`{pwd} + +fn grab { + echo using $* + for(i){ + n=`{echo 1+$n|hoc} + mv $i $dir/a.$n.8 + } +} + +fn getfiles { + sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' | + sed 's/ [^ ]*\.a//g' +} + +rm a.*.8 +>multi.h +>multiproto.h + +for(i){ +echo $i... + b=`{basename $i} + p=$b + if(~ $b [0-9]*) + p=_$b + echo void $p^_main'(int, char**);' >>$dir/multiproto.h + echo "$b", $p^_main, >>$dir/multi.h + d=`{basename -d $i} + if(~ $i disk/prep disk/fdisk){ + cd /sys/src/cmd/disk/prep + rm 8.$b + files=`{mk 8.$b | getfiles} + } + if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){ + cd /sys/src/cmd/$i + rm 8.out + files=`{mk 8.out | getfiles} + } + if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){ + cd /sys/src/cmd/$i + rm 8.out + files=`{mk 8.$b | getfiles} + } + if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){ + cd /sys/src/cmd/$d + rm 8.$b + files=`{mk 8.$b | getfiles} + } + if not{ + echo do not know how to make $i + exit oops + } + aux/8prefix $p^_ $files + grab $files + switch(`{pwd}){ + case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip + rm 8.$b + case * + mk clean + } +} +cd $dir +8c -FVw multi.c +8l -o 8.$targ multi.8 a.*.8 +# rm a.*.8 diff --git a/sys/src/cmd/aux/multi/multi.c b/sys/src/cmd/aux/multi/multi.c new file mode 100644 index 000000000..a2e3035ad --- /dev/null +++ b/sys/src/cmd/aux/multi/multi.c @@ -0,0 +1,38 @@ +#include <u.h> +#include <libc.h> + +#include "multiproto.h" +struct { + char *name; + void (*fn)(int, char**); +} mains[] = +{ +#include "multi.h" +}; + +void +main(int argc, char **argv) +{ + int i; + char *cmd, *p; + + if(argc == 1){ + fprint(2, "usage: multi cmd args...\n"); + exits("usage"); + } + + cmd = argv[1]; + if(p = strrchr(cmd, '/')) + cmd = p+1; + argv++; + argc--; + + for(i=0; i<nelem(mains); i++){ + if(strcmp(cmd, mains[i].name) == 0){ + mains[i].fn(argc, argv); + return; + } + } + fprint(2, "multi: no such cmd %s\n", cmd); + exits("no cmd"); +} |