ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MinGW/msys/1.0/bin/igawk
Revision: 1046
Committed: Mon Aug 29 13:19:38 2016 UTC (9 years, 2 months ago) by alloc
File size: 3091 byte(s)
Log Message:
Daodan: Added Windows MinGW and build batch file

File Contents

# Content
1 #! /bin/sh
2 # igawk --- like gawk but do @include processing
3 #
4 # Arnold Robbins, arnold@skeeve.com, Public Domain
5 # July 1993
6
7 if [ "$1" = debug ]
8 then
9 set -x
10 shift
11 fi
12
13 # A literal newline, so that program text is formatted correctly
14 n='
15 '
16
17 # Initialize variables to empty
18 program=
19 opts=
20
21 while [ $# -ne 0 ] # loop over arguments
22 do
23 case $1 in
24 --) shift; break;;
25
26 -W) shift
27 # The ${x?'message here'} construct prints a
28 # diagnostic if $x is the null string
29 set -- -W"${@?'missing operand'}"
30 continue;;
31
32 -[vF]) opts="$opts $1 '${2?'missing operand'}'"
33 shift;;
34
35 -[vF]*) opts="$opts '$1'" ;;
36
37 -f) program="$program$n@include ${2?'missing operand'}"
38 shift;;
39
40 -f*) f=`expr "$1" : '-f\(.*\)'`
41 program="$program$n@include $f";;
42
43 -[W-]file=*)
44 f=`expr "$1" : '-.file=\(.*\)'`
45 program="$program$n@include $f";;
46
47 -[W-]file)
48 program="$program$n@include ${2?'missing operand'}"
49 shift;;
50
51 -[W-]source=*)
52 t=`expr "$1" : '-.source=\(.*\)'`
53 program="$program$n$t";;
54
55 -[W-]source)
56 program="$program$n${2?'missing operand'}"
57 shift;;
58
59 -[W-]version)
60 echo igawk: version 2.0 1>&2
61 gawk --version
62 exit 0 ;;
63
64 -[W-]*) opts="$opts '$1'" ;;
65
66 *) break;;
67 esac
68 shift
69 done
70
71 if [ -z "$program" ]
72 then
73 program=${1?'missing program'}
74 shift
75 fi
76
77 # At this point, `program' has the program.
78 expand_prog='
79
80 function pathto(file, i, t, junk)
81 {
82 if (index(file, "/") != 0)
83 return file
84
85 for (i = 1; i <= ndirs; i++) {
86 t = (pathlist[i] "/" file)
87 if ((getline junk < t) > 0) {
88 # found it
89 close(t)
90 return t
91 }
92 }
93 return ""
94 }
95 BEGIN {
96 path = ENVIRON["AWKPATH"]
97 ndirs = split(path, pathlist, ":")
98 for (i = 1; i <= ndirs; i++) {
99 if (pathlist[i] == "")
100 pathlist[i] = "."
101 }
102 stackptr = 0
103 input[stackptr] = ARGV[1] # ARGV[1] is first file
104
105 for (; stackptr >= 0; stackptr--) {
106 while ((getline < input[stackptr]) > 0) {
107 if (tolower($1) != "@include") {
108 print
109 continue
110 }
111 fpath = pathto($2)
112 if (fpath == "") {
113 printf("igawk:%s:%d: cannot find %s\n",
114 input[stackptr], FNR, $2) > "/dev/stderr"
115 continue
116 }
117 if (! (fpath in processed)) {
118 processed[fpath] = input[stackptr]
119 input[++stackptr] = fpath # push onto stack
120 } else
121 print $2, "included in", input[stackptr],
122 "already included in",
123 processed[fpath] > "/dev/stderr"
124 }
125 close(input[stackptr])
126 }
127 }' # close quote ends `expand_prog' variable
128
129 processed_program=`gawk -- "$expand_prog" /dev/stdin <<EOF
130 $program
131 EOF
132 `
133 eval gawk $opts -- '"$processed_program"' '"$@"'