home *** CD-ROM | disk | FTP | other *** search
- # extract.awk --- extract files and run programs
- # from texinfo files
- # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
- # May 1993
-
- BEGIN { IGNORECASE = 1 }
-
- /^@c(omment)?[ \t]+system/ \
- {
- if (NF < 3) {
- e = (FILENAME ":" FNR)
- e = (e ": badly formed `system' line")
- print e > "/dev/stderr"
- next
- }
- $1 = ""
- $2 = ""
- stat = system($0)
- if (stat != 0) {
- e = (FILENAME ":" FNR)
- e = (e ": warning: system returned " stat)
- print e > "/dev/stderr"
- }
- }
- /^@c(omment)?[ \t]+file/ \
- {
- if (NF != 3) {
- e = (FILENAME ":" FNR ": badly formed `file' line")
- print e > "/dev/stderr"
- next
- }
- if ($3 != curfile) {
- if (curfile != "")
- close(curfile)
- curfile = $3
- }
-
- for (;;) {
- if ((getline line) <= 0)
- unexpected_eof()
- if (line ~ /^@c(omment)?[ \t]+endfile/)
- break
- else if (line ~ /^@(end[ \t]+)?group/)
- continue
- if (index(line, "@") == 0) {
- print line > curfile
- continue
- }
- n = split(line, a, "@")
- # if a[1] == "", means leading @,
- # don't add one back in.
- for (i = 2; i <= n; i++) {
- if (a[i] == "") { # was an @@
- a[i] = "@"
- if (a[i+1] == "")
- i++
- }
- }
- print join(a, 1, n, SUBSEP) > curfile
- }
- }
- function unexpected_eof()
- {
- printf("%s:%d: unexpected EOF or error\n", \
- FILENAME, FNR) > "/dev/stderr"
- exit 1
- }
-
- END {
- if (curfile)
- close(curfile)
- }
- # join.awk --- join an array into a string
- # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
- # May 1993
-
- function join(array, start, end, sep, result, i)
- {
- if (sep == "")
- sep = " "
- else if (sep == SUBSEP) # magic value
- sep = ""
- result = array[start]
- for (i = start + 1; i <= end; i++)
- result = result sep array[i]
- return result
- }
-