diff options
author | marha <marha@users.sourceforge.net> | 2009-11-06 06:59:46 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-11-06 06:59:46 +0000 |
commit | ace7902333b6f61aab5a6035dbcb222763bff186 (patch) | |
tree | 28445e829d5f04c8d79bda2514be37d5fb29738e /libXaw/spec/fixindex.awk | |
parent | c9179017c7e70703b7cac46c2df8b950506319e0 (diff) | |
download | vcxsrv-ace7902333b6f61aab5a6035dbcb222763bff186.tar.gz vcxsrv-ace7902333b6f61aab5a6035dbcb222763bff186.tar.bz2 vcxsrv-ace7902333b6f61aab5a6035dbcb222763bff186.zip |
Added libXaw-1.0.7
Diffstat (limited to 'libXaw/spec/fixindex.awk')
-rw-r--r-- | libXaw/spec/fixindex.awk | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/libXaw/spec/fixindex.awk b/libXaw/spec/fixindex.awk new file mode 100644 index 000000000..e8849f3bd --- /dev/null +++ b/libXaw/spec/fixindex.awk @@ -0,0 +1,73 @@ +BEGIN { + FS = ":"; + BD = "\\s+1\\fB"; + ED = "\\fP\\s-1"; +} + +NR == 1 { + if ($3 != "") + printf(".Ib \"%s\"\n", $2); + major = $2; + minor = $3; + if ($4 == "@DEF@") { + pagelist = BD $1 ED; + } + else { + pagelist = $1; + } + pageno = $1; + oldpageno = $1; + oldpagelist = ""; +} + +NR != 1 { + if ($2 == major && $3 == minor) # neither has changed + { + if ($1 != pageno) { # new page number, append + oldpageno = $1; + oldpagelist = pagelist; + if ($4 == "@DEF@") { + pagelist = pagelist ", " BD $1 ED; + } + else { + pagelist = pagelist ", " $1; + } + } + else { # old page, but check for def + if ($4 == "@DEF@") { + if (pageno == oldpageno) { + if (oldpagelist != "") + oldpagelist = oldpagelist ", " + } + pagelist = oldpagelist BD $1 ED; + } + } + } + else # one has changed + { + if (minor != "") # dump full record + printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist); + else + printf(".I> \"%s\" \"%s\"\n", major, pagelist); + if ($4 == "@DEF@") { # restart pagelist + pagelist = BD $1 ED; + } + else { + pagelist = $1; + } + oldpagelist = ""; + oldpageno = $1; + if ($2 != major && $3 != "") # major has changed, minor not null + printf(".Ib \"%s\"\n", $2); + } + major = $2; + minor = $3; + pageno = $1; +} + +END { + if (minor != "") # dump full record + printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist); + else + printf(".I> \"%s\" \"%s\"\n", major, pagelist); +} |