mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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}*.$$
 |