Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
glibc/manual/libc-texinfo.sh
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
102 lines (80 sloc)
2.62 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
OUTDIR=$1 | |
shift | |
# Create libc.texinfo from the chapter files. | |
trap "rm -f ${OUTDIR}*.$$; exit 1" 1 2 15 | |
exec 3>${OUTDIR}incl.$$ 4>${OUTDIR}smenu.$$ 5>${OUTDIR}lmenu.$$ | |
build_menu () { | |
while IFS=: read file node; do | |
echo "@include $file" >&3 | |
echo "* $node:: `sed -n 's/^@c %MENU% //p' $file`" >&4 | |
$AWK 'BEGIN { do_menu = 0 } | |
/^@node / { sub(/^@node /, ""); sub(/,.*$/, ""); node = $0 } | |
/^@menu/ { printf "\n%s\n\n", node; do_menu = 1; next } | |
/^@end menu/ { do_menu = 0 } | |
do_menu { print }' $file >&5 | |
done | |
} | |
collect_nodes () { | |
egrep '^(@c )?@node.*Top' "$@" /dev/null | cut -d, -f-2 | | |
sed 's/@c //; s/, /:/; s/:@node /:/; s/ /_/g; s/:/ /g' | | |
$AWK '{ file[$2] = $1; nnode[$2] = $3 } | |
END { for (x in file) | |
if (file[x] != "") | |
print file[x] ":" x, file[nnode[x]] ":" nnode[x] }' | | |
$AWK -f tsort.awk | sed 's/_/ /g' | |
} | |
# Emit "@set ADD-ON" for each add-on contributing a manual chapter. | |
for addon in $2; do | |
addon=`basename $addon .texi` | |
echo >&3 "@set $addon" | |
done | |
collect_nodes $1 | build_menu | |
if [ -n "$2" ]; then | |
{ echo; echo 'Add-ons'; echo; } >&4 | |
egrep '^(@c )?@node.*Top' `echo $2 /dev/null | tr ' ' '\n' | sort` | | |
cut -d, -f1 | sed 's/@c //;s/@node //' | build_menu | |
fi | |
{ echo; echo 'Appendices'; echo; } >&4 | |
collect_nodes $3 | build_menu | |
exec 3>&- 4>&- 5>&- | |
mv -f ${OUTDIR}incl.$$ ${OUTDIR}chapters.texi | |
{ | |
echo '@menu' | |
$AWK -F: ' | |
/^\*/ { | |
printf("%-32s", $1 "::"); | |
x = split($3, word, " "); | |
hpos = 34; | |
for (i = 1; i <= x; i++) { | |
hpos += length(word[i]) + 1; | |
if (hpos > 78) { | |
printf("\n%34s", ""); | |
hpos = 35 + length(word[i]); | |
} | |
printf(" %s", word[i]); | |
} | |
print "."; | |
} | |
!/^\*/ { print; } | |
' ${OUTDIR}smenu.$$ | |
cat <<EOF | |
* Free Manuals:: Free Software Needs Free Documentation. | |
* Copying:: The GNU Lesser General Public License says | |
how you can copy and share the GNU C Library. | |
* Documentation License:: This manual is under the GNU Free | |
Documentation License. | |
Indices | |
* Concept Index:: Index of concepts and names. | |
* Type Index:: Index of types and type qualifiers. | |
* Function Index:: Index of functions and function-like macros. | |
* Variable Index:: Index of variables and variable-like macros. | |
* File Index:: Index of programs and files. | |
@detailmenu | |
--- The Detailed Node Listing --- | |
EOF | |
cat ${OUTDIR}lmenu.$$ | |
echo '@end detailmenu' | |
echo '@end menu'; } >${OUTDIR}top-menu.texi.$$ | |
mv -f ${OUTDIR}top-menu.texi.$$ ${OUTDIR}top-menu.texi | |
rm -f ${OUTDIR}*.$$ |