(linenum→info "unix/slp.c:2238")

glibc/2.7/manual/summary.awk

    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 }
Syntax (Markdown)