summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/multi
diff options
context:
space:
mode:
authoriru <devnull@localhost>2011-04-14 00:35:48 -0300
committeriru <devnull@localhost>2011-04-14 00:35:48 -0300
commitfd8d404d520a3f10c143f5cbe7c170606fffc75c (patch)
treefbc8bf7218eca7d6290ffb1109fcc73b5b5cda33 /sys/src/cmd/aux/multi
parentdd468419f2fbaa2c3fec570a88d13e8eae8f3faf (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/mkfile76
-rw-r--r--sys/src/cmd/aux/multi/mkmulti70
-rw-r--r--sys/src/cmd/aux/multi/multi.c38
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");
+}