Autoframework (Jeff Sickel)

This commit is contained in:
rsc 2005-10-19 03:15:30 +00:00
parent f810f8a5b0
commit fc165dcb3e
3 changed files with 87 additions and 5 deletions

53
bin/9l
View file

@ -2,14 +2,16 @@
test -f $PLAN9/config && . $PLAN9/config test -f $PLAN9/config && . $PLAN9/config
libsl="" libsl=""
frameworks=""
doautolib=true doautolib=true
doautoframework=true
verbose=false verbose=false
if [ "x$1" = "x-l" ] if [ "x$1" = "x-l" ]
then then
shift shift
doautolib=false doautolib=false
doautoframework=false
elif [ "x$1" = "x-v" ] elif [ "x$1" = "x-v" ]
then then
shift shift
@ -162,6 +164,51 @@ then
libsl="$libsl -L$X11/lib -lX11" libsl="$libsl -L$X11/lib -lX11"
fi fi
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" extralibs="-lm"
tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}" tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}"
@ -245,7 +292,7 @@ esac
if $verbose if $verbose
then then
echo $ld -L$PLAN9/lib "$@" $libsl $extralibs echo $ld -L$PLAN9/lib "$@" $libsl $extralibs $frameworks
fi fi
xtmp=/tmp/9l.$$.$USER.out xtmp=/tmp/9l.$$.$USER.out
@ -254,7 +301,7 @@ xxout() {
rm -f $xtmp 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 then
xxout xxout
exit 0 exit 0

18
bin/ps
View file

@ -64,9 +64,25 @@ function statestr(s, wchan)
if(start ~ /..:..:../){ # drop :ss if(start ~ /..:..:../){ # drop :ss
sub(/:..$/, "", start); 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); 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 case "${SYSNAME:-`uname`}" in

21
bin/psu
View file

@ -19,4 +19,23 @@ case $# in
exit 1 exit 1
esac 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]
}
}
'