#!/bin/rc # # -q: faster, but you wont know why it's out of date # -i: to ignore a file you know has changed (eg /sys/include/libc.h) rfork e fn usage { echo usage: outofdate [-q] [-i ignore] file... >[1=2] exit usage } fn newer { m1=`{mtime $1 | awk '{print $1}'} m2=$2 test $m1 -gt $m2 } ignored=() quiet=no while(~ $1 -*){ switch($1){ case -q quiet=yes case -i if (~ $2 '') usage ignored=`{cat $2} shift case -* usage } shift } if (~ $#* 0) usage updated='' for (file in $*){ if (~ `{file $file} *'plan 9 executable'*) { srcs=`{nm -a $file | grep ' z ' | sed -e 's/^.* z //' | grep -v '^$' | sort | uniq} fupdated='' ftime=`{mtime $file | awk '{print $1}'} for (s in $srcs) { if (! ~ $fupdated outofdate || ! ~ $quiet yes) if (test -f $s) if (! ~ $s $ignored) if (newer $s $ftime){ fupdated=outofdate updated=outofdate if (~ $quiet yes) echo $file if not echo $file: $s } } } } exit $updated