New getflags(8). Thanks to Christoph Lohmann.
[rsc] --rwxrwxr-x M 840072 glenda sys 240 Feb 12 06:37 rc/bin/ape/ar89
/n/sourcesdump/2006/0212/plan9/rc/bin/ape/ar89:1,13 -
/n/sourcesdump/2006/0213/plan9/rc/bin/ape/ar89:1,15
#!/bin/rc
- ifs='' eval `{getflags cdprtxuv $*}
+ flagfmt='c,d,p,r,t,u,v,x'
+ args='archive [files ...]'
+
+ if(! ifs=() eval `{aux/getflags $*} || ~ $#* 0) {
+ aux/usage
+ exit usage
+ }
+
key=''
- if (~ $#FLAGc 1) key=$key^c
- if (~ $#FLAGd 1) key=$key^d
- if (~ $#FLAGp 1) key=$key^p
- if (~ $#FLAGr 1) key=$key^r
- if (~ $#FLAGt 1) key=$key^t
- if (~ $#FLAGx 1) key=$key^x
- if (~ $#FLAGu 1) key=$key^u
- if (~ $#FLAGv 1) key=$key^v
+ for(i in c d p r t x u v)
+ if(f=flag$i ~ $#$f 1)
+ key=$key$i
exec /$cputype/bin/ar $key $*
[rsc] --rwxrwxr-x M 840072 glenda sys 280 Feb 12 06:37 rc/bin/ape/yacc
/n/sourcesdump/2006/0212/plan9/rc/bin/ape/yacc:1,8 -
/n/sourcesdump/2006/0213/plan9/rc/bin/ape/yacc:1,16
#!/bin/rc
- # ifs='' eval `{getflags dltvb:1p:1 $*}
+
+ flagfmt='d,l,t,v,b stem'
+ args='grammar'
+
+ if(! ifs=() eval `{aux/getflags $*} || ! ~ $#* 1){
+ aux/usage
+ exit usage
+ }
+
y=-S
- #if (~ $#FLAGd 1) y=($y -d)
- #if (~ $#FLAGt 1) y=($y -D2)
- #if (~ $#FLAGv 1) y=($y -v)
- #if (~ $#FLAGb 1) y=($y -s $FLAGb)
+ if (~ $#flagb 1) y=($y -s $flagb)
+ if (~ $#flagd 1) y=($y -d)
+ if (~ $#flagt 1) y=($y -D2)
+ if (~ $#flagv 1) y=($y -v)
exec /$cputype/bin/yacc $y $*
[rsc] --rwxrwxr-x M 840072 glenda sys 1052 Feb 12 06:37 rc/bin/leak
/n/sourcesdump/2006/0212/plan9/rc/bin/leak:2,38 -
/n/sourcesdump/2006/0213/plan9/rc/bin/leak:2,33
rfork e
- usage='prog-or-pid'
- FLAGs=()
- FLAGb=()
- FLAGr=()
- FLAGx=()
- eval `{aux/getflags bsx:1r:1f:1 $*}
-
- if(~ $#* 0) {
- echo 'usage: leak [-s] [-f binary] [-b [-r res] [-x width]] '$usage >[1=2]
+ flagfmt='b,s,f binary,r res,x width'
+ args='name | pid list'
+ if(! ifs=() eval `{aux/getflags $*} || ~ $#* 0){
+ aux/usage
exit usage
}
- sflag=()
- xflag=()
- if(~ $#FLAGs 1)
- sflag=($sflag -s)
- if(~ $#FLAGf 1)
- sflag=($sflag -f $FLAGf)
- if(~ $#FLAGb 1)
- xflag=($xflag -b)
- if(~ $#FLAGr 1)
- xflag=($xflag -r $FLAGr)
- if(~ $#FLAGx 1)
- xflag=($xflag -x $FLAGx)
-
- if(~ $#FLAGs 1 && ~ $#FLAGb 1){
- echo 'cannot use both -s and -b' >[1=2]
+ if(~ $#flags 1 && ~ $#flagb 1){
+ echo 'cannot use both -b and -s' >[1=2]
exit usage
}
+ leakflags=()
+ if(~ $#flags 1)
+ leakflags=($leakflags -s)
+ if(~ $#flagf 1)
+ leakflags=($leakflags -f $flagf)
+ acidleakflags=()
+ if(~ $#flagb 1)
+ acidleakflags=($acidleakflags -b)
+ if(~ $#flagr 1)
+ acidleakflags=($acidleakflags -r $flagr)
+ if(~ $#flagx 1)
+ acidleakflags=($acidleakflags -x $flagx)
+
if(! test -d /proc/$1) {
# x=`{psu | awk '$NF=="'$1'" {print $2}'}
x=`{psu | grep ' '$1'$' | sed 's/^[^ ]+ +([0-9]+).*/\1/'}
/n/sourcesdump/2006/0212/plan9/rc/bin/leak:40,58 -
/n/sourcesdump/2006/0213/plan9/rc/bin/leak:35,54
echo 'no processes named '$1 >[1=2]
exit usage
}
- x=($sflag $xflag $x)
- echo leak $"x
+ echo leak $leakflags $acidleakflags $x
exit
}
- x=`{echo $"* | tr ' ' ,}
+ pidlist=`{echo $"* | tr ' ' ,}
- echo 'leakdump({'$x'})' | acid -lpool -lleak $1 $FLAGf | aux/acidleak $xflag $binary |
- {
- if(~ $#FLAGs 1)
- awk '{print $4}' |
- sort | uniq -c | sort -nr |
- sed 's! *(.*) (0x.*)!src(\2); // \1!'
- if not
- cat
- }
+ echo 'leakdump({'$pidlist'})' |
+ acid -lpool -lleak $1 $flagf |
+ aux/acidleak $acidleakflags $flagf |
+ {
+ if(~ $#flags 1)
+ awk '{print $4}' |
+ sort | uniq -c | sort -nr |
+ sed 's! *(.*) (0x.*)!src(\2); // \1!'
+ if not
+ cat
+ }
[rsc] --rwxrwxr-x M 840072 glenda sys 5119 Feb 12 06:37 rc/bin/lp
[diffs elided - too long]
[diff -c /n/sourcesdump/2006/0212/plan9/rc/bin/lp /n/sourcesdump/2006/0213/plan9/rc/bin/lp]
[rsc] --rw-rw-r-- M 840072 rsc sys 1703 Feb 12 06:37 sys/man/8/getflags
[rsc] --rw-rw-r-- M 840072 rsc sys 1360 Feb 12 06:37 sys/src/cmd/aux/getflags.c
[rsc] --rw-rw-r-- M 840072 glenda sys 1011 Feb 12 06:38 sys/src/cmd/aux/mkfile
/n/sourcesdump/2006/0212/plan9/sys/src/cmd/aux/mkfile:12,17 -
/n/sourcesdump/2006/0213/plan9/sys/src/cmd/aux/mkfile:12,18
data2s\
depend\
disksim\
+ getflags\
lines\
listen\
listen1\
/n/sourcesdump/2006/0212/plan9/sys/src/cmd/aux/mkfile:32,37 -
/n/sourcesdump/2006/0213/plan9/sys/src/cmd/aux/mkfile:33,39
timesync\
trampoline\
typepasswd\
+ usage\
write\
zerotrunc\
[rsc] --rw-rw-r-- M 840072 rsc sys 1095 Feb 12 06:37 sys/src/cmd/aux/usage.c
[rsc] --rwxrwxr-x M 840072 glenda sys 5119 Feb 12 06:37 sys/src/cmd/lp/lp.rc
[diffs elided - too long]
[diff -c /n/sourcesdump/2006/0212/plan9/sys/src/cmd/lp/lp.rc /n/sourcesdump/2006/0213/plan9/sys/src/cmd/lp/lp.rc]
Diagnose bad times. Thanks to Uriel.
[rsc] --rw-rw-r-- M 840072 glenda sys 960 Feb 12 10:28 sys/src/cmd/touch.c
/n/sourcesdump/2006/0212/plan9/sys/src/cmd/touch.c:14,19 -
/n/sourcesdump/2006/0213/plan9/sys/src/cmd/touch.c:14,20
void
main(int argc, char **argv)
{
+ char *t, *s;
int nocreate = 0;
int status = 0;
/n/sourcesdump/2006/0212/plan9/sys/src/cmd/touch.c:20,26 -
/n/sourcesdump/2006/0213/plan9/sys/src/cmd/touch.c:21,30
now = time(0);
ARGBEGIN{
case 't':
- now = strtoul(EARGF(usage()), 0, 0);
+ t = EARGF(usage());
+ now = strtoul(t, &s, 0);
+ if(s == t || *s != '\0')
+ usage();
break;
case 'c':
nocreate = 1;
/n/sourcesdump/2006/0212/plan9/sys/src/cmd/touch.c:51,57 -
/n/sourcesdump/2006/0213/plan9/sys/src/cmd/touch.c:55,61
fprint(2, "touch: %s: cannot wstat: %r\n", name);
return 1;
}
- if ((fd = create(name, OREAD|OEXCL, 0666)) < 0) {
+ if((fd = create(name, OREAD|OEXCL, 0666)) < 0){
fprint(2, "touch: %s: cannot create: %r\n", name);
return 1;
}
[rsc] --rw-rw-r-- M 840072 glenda sys 960 Feb 12 10:28 sys/src/cmd/touch.c
Your text here.
[rsc] --rw-rw-r-- M 840072 glenda sys 2184 Feb 12 06:37 sys/man/2/arg
/n/sourcesdump/2006/0212/plan9/sys/man/2/arg:122,124 -
/n/sourcesdump/2006/0213/plan9/sys/man/2/arg:122,126
.PP
.SH SOURCE
.B /sys/include/libc.h
+ .SH SEE ALSO
+ .IR getflags (8)
|