Skip to content
Permalink
48d0341cdd
Switch branches/tags

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?
Go to file
 
 
Cannot retrieve contributors at this time
102 lines (80 sloc) 2.62 KB
#!/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}*.$$