This commit is contained in:
commit
47aee91ef4
396 changed files with 32003 additions and 0 deletions
130
tools/cygwin/igawk
Normal file
130
tools/cygwin/igawk
Normal file
|
@ -0,0 +1,130 @@
|
|||
#! /bin/sh
|
||||
|
||||
# igawk --- like gawk but do @include processing
|
||||
# Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
|
||||
# July 1993
|
||||
|
||||
if [ "$1" = debug ]
|
||||
then
|
||||
set -x
|
||||
shift
|
||||
else
|
||||
# cleanup on exit, hangup, interrupt, quit, termination
|
||||
trap 'rm -f /tmp/ig.[se].$$' 0 1 2 3 15
|
||||
fi
|
||||
|
||||
while [ $# -ne 0 ] # loop over arguments
|
||||
do
|
||||
case $1 in
|
||||
--) shift; break;;
|
||||
|
||||
-W) shift
|
||||
set -- -W"$@"
|
||||
continue;;
|
||||
|
||||
-[vF]) opts="$opts $1 '$2'"
|
||||
shift;;
|
||||
|
||||
-[vF]*) opts="$opts '$1'" ;;
|
||||
|
||||
-f) echo @include "$2" >> /tmp/ig.s.$$
|
||||
shift;;
|
||||
|
||||
-f*) f=`echo "$1" | sed 's/-f//'`
|
||||
echo @include "$f" >> /tmp/ig.s.$$ ;;
|
||||
|
||||
-?file=*) # -Wfile or --file
|
||||
f=`echo "$1" | sed 's/-.file=//'`
|
||||
echo @include "$f" >> /tmp/ig.s.$$ ;;
|
||||
|
||||
-?file) # get arg, $2
|
||||
echo @include "$2" >> /tmp/ig.s.$$
|
||||
shift;;
|
||||
|
||||
-?source=*) # -Wsource or --source
|
||||
t=`echo "$1" | sed 's/-.source=//'`
|
||||
echo "$t" >> /tmp/ig.s.$$ ;;
|
||||
|
||||
-?source) # get arg, $2
|
||||
echo "$2" >> /tmp/ig.s.$$
|
||||
shift;;
|
||||
|
||||
-?version)
|
||||
echo igawk: version 1.0 1>&2
|
||||
gawk --version
|
||||
exit 0 ;;
|
||||
|
||||
-[W-]*) opts="$opts '$1'" ;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ ! -s /tmp/ig.s.$$ ]
|
||||
then
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo igawk: no program! 1>&2
|
||||
exit 1
|
||||
else
|
||||
echo "$1" > /tmp/ig.s.$$
|
||||
shift
|
||||
fi
|
||||
fi
|
||||
|
||||
# at this point, /tmp/ig.s.$$ has the program
|
||||
gawk -- '
|
||||
# process @include directives
|
||||
|
||||
function pathto(file, i, t, junk)
|
||||
{
|
||||
if (index(file, "/") != 0)
|
||||
return file
|
||||
|
||||
for (i = 1; i <= ndirs; i++) {
|
||||
t = (pathlist[i] "/" file)
|
||||
if ((getline junk < t) > 0) {
|
||||
# found it
|
||||
close(t)
|
||||
return t
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
BEGIN {
|
||||
path = ENVIRON["AWKPATH"]
|
||||
ndirs = split(path, pathlist, ":")
|
||||
for (i = 1; i <= ndirs; i++) {
|
||||
if (pathlist[i] == "")
|
||||
pathlist[i] = "."
|
||||
}
|
||||
stackptr = 0
|
||||
input[stackptr] = ARGV[1] # ARGV[1] is first file
|
||||
|
||||
for (; stackptr >= 0; stackptr--) {
|
||||
while ((getline < input[stackptr]) > 0) {
|
||||
if (tolower($1) != "@include") {
|
||||
print
|
||||
continue
|
||||
}
|
||||
fpath = pathto($2)
|
||||
if (fpath == "") {
|
||||
printf("igawk:%s:%d: cannot find %s\n", \
|
||||
input[stackptr], FNR, $2) > "/dev/stderr"
|
||||
continue
|
||||
}
|
||||
if (! (fpath in processed)) {
|
||||
processed[fpath] = input[stackptr]
|
||||
input[++stackptr] = fpath
|
||||
} else
|
||||
print $2, "included in", input[stackptr], \
|
||||
"already included in", \
|
||||
processed[fpath] > "/dev/stderr"
|
||||
}
|
||||
close(input[stackptr])
|
||||
}
|
||||
}' /tmp/ig.s.$$ > /tmp/ig.e.$$
|
||||
eval gawk -f /tmp/ig.e.$$ $opts -- "$@"
|
||||
|
||||
exit $?
|
Loading…
Add table
Add a link
Reference in a new issue