
1: # awk script to create summary.texinfo from the library texinfo files. 2: # Copyright (C) 1992, 1993, 1997, 2001 Free Software Foundation, Inc. 3: # This file is part of the GNU C Library. 4: 5: # The GNU C Library is free software; you can redistribute it and/or 6: # modify it under the terms of the GNU Lesser General Public 7: # License as published by the Free Software Foundation; either 8: # version 2.1 of the License, or (at your option) any later version. 9: 10: # The GNU C Library is distributed in the hope that it will be useful, 11: # but WITHOUT ANY WARRANTY; without even the implied warranty of 12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13: # Lesser General Public License for more details. 14: 15: # You should have received a copy of the GNU Lesser General Public 16: # License along with the GNU C Library; if not, write to the Free 17: # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 18: # 02111-1307 USA. 19: 20: # This script recognizes sequences that look like: 21: # @comment HEADER.h 22: # @comment STANDARD 23: # @def... ITEM | @item ITEM | @vindex ITEM 24: 25: BEGIN { header = 0; 26: nameword["@defun"]=1 27: nameword["@defunx"]=1 28: nameword["@defmac"]=1 29: nameword["@defmacx"]=1 30: nameword["@defspec"]=1 31: nameword["@defspecx"]=1 32: nameword["@defvar"]=1 33: nameword["@defvarx"]=1 34: nameword["@defopt"]=1 35: nameword["@defoptx"]=1 36: nameword["@deffn"]=2 37: nameword["@deffnx"]=2 38: nameword["@defvr"]=2 39: nameword["@defvrx"]=2 40: nameword["@deftp"]=2 41: nameword["@deftpx"]=2 42: nameword["@deftypefun"]=2 43: nameword["@deftypefunx"]=2 44: nameword["@deftypevar"]=2 45: nameword["@deftypevarx"]=2 46: nameword["@deftypefn"]=3 47: nameword["@deftypefnx"]=3 48: nameword["@deftypevr"]=3 49: nameword["@deftypevrx"]=3 50: firstword["@defun"]=1 51: firstword["@defunx"]=1 52: firstword["@defmac"]=1 53: firstword["@defmacx"]=1 54: firstword["@defspec"]=1 55: firstword["@defspecx"]=1 56: firstword["@defvar"]=1 57: firstword["@defvarx"]=1 58: firstword["@defopt"]=1 59: firstword["@defoptx"]=1 60: firstword["@deffn"]=2 61: firstword["@deffnx"]=2 62: firstword["@defvr"]=2 63: firstword["@defvrx"]=2 64: firstword["@deftp"]=2 65: firstword["@deftpx"]=2 66: firstword["@deftypefun"]=1 67: firstword["@deftypefunx"]=1 68: firstword["@deftypevar"]=1 69: firstword["@deftypevarx"]=1 70: firstword["@deftypefn"]=2 71: firstword["@deftypefnx"]=2 72: firstword["@deftypevr"]=2 73: firstword["@deftypevrx"]=2 74: nameword["@item"]=1 75: firstword["@item"]=1 76: nameword["@itemx"]=1 77: firstword["@itemx"]=1 78: nameword["@vindex"]=1 79: firstword["@vindex"]=1 80: 81: print "@c DO NOT EDIT THIS FILE!" 82: print "@c This file is generated by summary.awk from the Texinfo sources." 83: } 84: 85: $1 == "@node" { node=$2; 86: for (i = 3; i <= NF; ++i) 87: { node=node " " $i; if ( $i ~ /,/ ) break; } 88: sub (/,[, ]*$/, "", node); 89: } 90: 91: $1 == "@comment" && $2 ~ /\.h$/ { header="@file{" $2 "}"; 92: for (i = 3; i <= NF; ++i) 93: header=header ", @file{" $i "}" 94: } 95: 96: $1 == "@comment" && $2 == "(none)" { header = -1; } 97: 98: $1 == "@comment" && header != 0 { std=$2; 99: for (i=3;i<=NF;++i) std=std " " $i } 100: 101: header != 0 && $1 ~ /@def|@item|@vindex/ \ 102: { defn=""; name=""; curly=0; n=1; 103: for (i = 2; i <= NF; ++i) { 104: if ($i ~ /^{/ && $i !~ /}/) { 105: curly=1 106: word=substr ($i, 2, length ($i)) 107: } 108: else { 109: if (curly) { 110: if ($i ~ /}$/) { 111: curly=0 112: word=word " " substr ($i, 1, length ($i) - 1) 113: } else 114: word=word " " $i 115: } 116: # Handle a single word in braces. 117: else if ($i ~ /^{.*}$/) 118: word=substr ($i, 2, length ($i) - 2) 119: else 120: word=$i 121: if (!curly) { 122: if (n >= firstword[$1]) 123: defn=defn " " word 124: if (n == nameword[$1]) 125: name=word 126: ++n 127: } 128: } 129: } 130: printf "@comment %s%c", name, 12 # FF 131: printf "@item%s%c%c", defn, 12, 12 132: if (header != -1) printf "%s ", header; 133: printf "(%s): @ref{%s}.%c\n", std, node, 12; 134: header = 0 }