1# $Id: manlinks.sed,v 1.14 2020/02/02 23:34:34 tom Exp $ 2############################################################################## 3# Copyright 2020 Thomas E. Dickey # 4# Copyright 2000-2003,2008 Free Software Foundation, Inc. # 5# # 6# Permission is hereby granted, free of charge, to any person obtaining a # 7# copy of this software and associated documentation files (the "Software"), # 8# to deal in the Software without restriction, including without limitation # 9# the rights to use, copy, modify, merge, publish, distribute, distribute # 10# with modifications, sublicense, and/or sell copies of the Software, and to # 11# permit persons to whom the Software is furnished to do so, subject to the # 12# following conditions: # 13# # 14# The above copyright notice and this permission notice shall be included in # 15# all copies or substantial portions of the Software. # 16# # 17# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # 18# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # 19# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # 20# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # 21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # 22# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # 23# DEALINGS IN THE SOFTWARE. # 24# # 25# Except as contained in this notice, the name(s) of the above copyright # 26# holders shall not be used in advertising or otherwise to promote the sale, # 27# use or other dealings in this Software without prior written # 28# authorization. # 29############################################################################## 30# Given a manpage (nroff) as input, writes a list of the names that are 31# listed in the "NAME" section, i.e., the names that we would like to use 32# as aliases for the manpage -T.Dickey 33# 34# eliminate formatting controls that get in the way 35/^'\\"/d 36/\.\\"/d 37/^\.br/d 38/^\.sp/d 39/typedef/d 40s/^\.IX// 41s/\\f.//g 42s/[:,]/ /g 43# 44# eliminate unnecessary whitespace, convert multiple blanks to single space 45s/^[ ][ ]*// 46s/[ ][ ]*$// 47s/[ ][ ]*/ /g 48# 49# convert ".SH" into a more manageable form 50s/\.SH[ ][ ]*/.SH_(/ 51# 52# in ".SH NAME" 53# change "\-" to "-", eliminate text after "-", and split the remaining lines 54# at each space, making a list of names: 55/^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{ 56s/\\-.*/ -/ 57/ -/{ 58s/ -.*// 59s/ /\ 60/g 61} 62/^-/{ 63d 64} 65s/ /\ 66/g 67} 68# 69# in ".SH SYNOPSIS" 70# remove any line that does not contain a '(', since we only want functions. 71# then strip off return-type of each function. 72# finally, remove the parameter list, which begins with a '('. 73/^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{ 74/^[^(]*$/d 75# reduce 76# .B "int add_wch( const cchar_t *\fIwch\fB );" 77# to 78# add_wch( const cchar_t *\fIwch\fB );" 79s/^\([^ (]* [^ (]* [*]*\)//g 80s/^\([^ (]* [*]*\)//g 81# trim blanks in case we have 82# void (*) (FORM *) field_init(const FORM *form); 83s/) (/)(/g 84# reduce stuff like 85# void (*)(FORM *) field_init(const FORM *form); 86# to 87# field_init(const FORM *form); 88s/^\(([^)]*)\)\(([^)]*)\)*[ ]*//g 89# rename marker temporarily 90s/\.SH_(/.SH_/ 91# kill lines with ");", and trim off beginning of argument list. 92s/[()].*// 93# rename marker back 94s/\.SH_/.SH_(/ 95} 96# 97# delete ".SH DESCRIPTION" and following lines 98/^\.SH_(DESCRIPTION/,${ 99d 100} 101# 102# delete any remaining directives 103/^\./d 104