aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-10-19 03:15:30 +0000
committerrsc <devnull@localhost>2005-10-19 03:15:30 +0000
commitfc165dcb3eb3f6d5994903ae7f9cb91c9f598cef (patch)
tree282736afb584c2b001381f180385f11eae8ddeb7 /bin
parentf810f8a5b03247430f1d7b219f83bfe31eaeee02 (diff)
downloadplan9port-fc165dcb3eb3f6d5994903ae7f9cb91c9f598cef.tar.gz
plan9port-fc165dcb3eb3f6d5994903ae7f9cb91c9f598cef.tar.bz2
plan9port-fc165dcb3eb3f6d5994903ae7f9cb91c9f598cef.zip
Autoframework (Jeff Sickel)
Diffstat (limited to 'bin')
-rwxr-xr-xbin/9l53
-rwxr-xr-xbin/ps18
-rwxr-xr-xbin/psu21
3 files changed, 87 insertions, 5 deletions
diff --git a/bin/9l b/bin/9l
index b3b86531..af8a2317 100755
--- a/bin/9l
+++ b/bin/9l
@@ -2,14 +2,16 @@
test -f $PLAN9/config && . $PLAN9/config
libsl=""
-
+frameworks=""
doautolib=true
+doautoframework=true
verbose=false
if [ "x$1" = "x-l" ]
then
shift
doautolib=false
+ doautoframework=false
elif [ "x$1" = "x-v" ]
then
shift
@@ -162,6 +164,51 @@ then
libsl="$libsl -L$X11/lib -lX11"
fi
fi
+if $doautoframework
+then
+ ofiles=""
+ for i
+ do
+ case "$i" in
+ *.[ao])
+ ofiles="$ofiles $i"
+ ;;
+ esac
+ done
+
+ # echo "ofiles $ofiles"
+ autoframeworks=""
+ if [ "x$ofiles" != "x" ]
+ then
+ a=`
+ nm $ofiles |
+ grep '__p9l_autoframework_[a-zA-Z0-9+-]*$' |
+ sed 's/.*__p9l_autoframework_//' |
+ sort -u
+ `
+ for i in $a
+ do
+ autoframeworks="$autoframeworks $i"
+ eval "need$i=true"
+ done
+ fi
+
+ if $verbose
+ then
+ echo "autoframeworks $autoframeworks"
+ fi
+
+ for i in $autoframeworks
+ do
+ eval "have$i() { false; }"
+ done
+
+ frameworks=""
+ for i in $autoframeworks
+ do
+ frameworks="-framework $i $frameworks"
+ done
+fi
extralibs="-lm"
tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}"
@@ -245,7 +292,7 @@ esac
if $verbose
then
- echo $ld -L$PLAN9/lib "$@" $libsl $extralibs
+ echo $ld -L$PLAN9/lib "$@" $libsl $extralibs $frameworks
fi
xtmp=/tmp/9l.$$.$USER.out
@@ -254,7 +301,7 @@ xxout() {
rm -f $xtmp
}
-if $ld -L$PLAN9/lib "$@" $libsl $extralibs >$xtmp 2>&1
+if $ld -L$PLAN9/lib "$@" $libsl $extralibs $frameworks >$xtmp 2>&1
then
xxout
exit 0
diff --git a/bin/ps b/bin/ps
index 7a8cd4e4..d6f44d9b 100755
--- a/bin/ps
+++ b/bin/ps
@@ -64,9 +64,25 @@ function statestr(s, wchan)
if(start ~ /..:..:../){ # drop :ss
sub(/:..$/, "", start);
}
- printf("%-8s %11d %8s %8s %8dK %-8s %s\n",
+ sub(/[ ]+$/, "", cmd);
+ line[0+nline++] = sprintf("%s\001%d\001%s\001%s\001%dK\001%s\001%s",
user, pid, start, cputime, mem, statestr(stat, wchan), cmd);
}
+
+END{
+ for(i=0; i<nline; i++){
+ split(line[i], a, "\001");
+ for(j=1; j<=7; j++)
+ if(length(a[j]) > max[j])
+ max[j] = length(a[j]);
+ }
+ for(i=0; i<nline; i++){
+ split(line[i], a, "\001");
+ printf("%-*s %*s %*s %*s %*s %-*s %s\n",
+ max[1], a[1], max[2], a[2], max[3], a[3], max[4], a[4],
+ max[5], a[5], max[6], a[6], a[7]);
+ }
+}
!
case "${SYSNAME:-`uname`}" in
diff --git a/bin/psu b/bin/psu
index 18c8ffb4..5f514f78 100755
--- a/bin/psu
+++ b/bin/psu
@@ -19,4 +19,23 @@ case $# in
exit 1
esac
-9 ps $flag | grep "^$user "
+9 ps $flag | grep "^$user " | awk '
+ BEGIN { min = 1000000 };
+ {
+ line[0+nline++] = $0;
+ n = length;
+ sub(/ +/, "", $0);
+ n -= length;
+ if(n < min)
+ min = n;
+ }
+ END{
+ s = "";
+ for(i=0; i<min-1; i++)
+ s = s " ";
+ for(i=0; i<nline; i++){
+ sub(s, "", line[i])
+ print line[i]
+ }
+ }
+'