aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/rman/contrib/rman_html_split
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/extras/rman/contrib/rman_html_split')
-rw-r--r--nx-X11/extras/rman/contrib/rman_html_split324
1 files changed, 324 insertions, 0 deletions
diff --git a/nx-X11/extras/rman/contrib/rman_html_split b/nx-X11/extras/rman/contrib/rman_html_split
new file mode 100644
index 000000000..aafb023c5
--- /dev/null
+++ b/nx-X11/extras/rman/contrib/rman_html_split
@@ -0,0 +1,324 @@
+#!/bin/sh
+#
+# Script to break up rman html output into separate sections in a directory.
+#
+# Author: Robert Moniot <moniot@fordham.edu>
+# Date: 4 Aug 1998
+#
+
+version="rman_html_split V1.0 (c) 1998 Robert K. Moniot"
+
+ # Usage function prints synopsis and exits
+Usage(){
+ myname=`echo $0 | sed -e 's,.*/,,'`
+cat <<EOF
+
+Usage: $myname [ options ] [ file ]
+
+Breaks up rman HTML output in file (or standard input) into separate
+section files, placing them into a directory.
+
+Options:
+ -d | --html-dir dir Place output into directory dir (default = html).
+ -m | --merge # Merge sections 0 thru # (default 1) into one file.
+ -t | --toc-first Link index.html to table of contents instead
+ of to sect0.html.
+ -T | --title "title" Use "title" as title on top of each page
+ instead of rman's title. "title" may be empty.
+ -h | --help Print synopsis and exit.
+ -V | --version Print version information and exit.
+EOF
+ exit 0
+}
+
+ # Version function prints version number and exits
+Version(){
+ echo "$version"
+ exit 0
+}
+
+ # This function puts out header needed by all but 1st page.
+do_header(){
+cat <<EOF
+<HTML>
+<HEAD>
+<TITLE>$*</TITLE>
+</HEAD>
+<BODY>
+EOF
+do_title
+}
+
+ # This function puts out the title with name of manpage
+do_title(){
+ if [ -n "$title" ]
+ then
+ echo "<H2>$title</H2>"
+ fi
+}
+
+ # This function puts out ref to table of contents that
+ # follows header for all but 1st and toc page.
+do_href_toc(){
+cat <<EOF
+<A HREF="toc.html">Table of Contents</A><P>
+EOF
+}
+
+ # This function puts out ref to previous section
+do_href_prev(){
+ echo "<P>Previous: <A HREF=\"$1.html\">$2</A><HR><P>"
+}
+
+ # This function puts out footer needed by all but last page.
+do_footer(){
+cat <<EOF
+</BODY></HTML>
+EOF
+}
+
+ # This function changes the trailing NAME anchor
+ # of a section into an href to the next section.
+ # The first edit is for sections. The second edit
+ # handles the toc anchor, which has no href and so
+ # is missed by the first edit.
+do_href_next(){
+ sed -e '$s,^.*<A NAME="\([^"]*\)" HREF=[^>]*>\([^<]*\).*$,<P><HR><P>Next: <A HREF="\1.html">\2</A>,' \
+ -e '$s,<A NAME="\(toc[^"]*\)",Next: <A HREF="\1.html",'
+}
+
+ # This function adapts internal refs from one-big-file
+ # form into multi-file format.
+ # First edit changes "#tocn" into "toc.html#tocn"
+ # Second edit changes "#sectn" into "sectn.html#sectn"
+ # Third edit changes "#toc" into "toc.html"
+change_hrefs(){
+ sed -e 's,HREF="#toc\([0-9][0-9]*\)",HREF="toc.html#toc\1",g' \
+ -e 's,HREF="#sect\([0-9][0-9]*\)",HREF="sect\1.html#sect\1",g' \
+ -e 's,HREF="#\(toc\)",HREF="\1.html",g'
+}
+
+
+# Execution begins here.
+
+ # Process the command-line options.
+htmldir="html"
+mergesect="1"
+
+while [ $# != 0 ]
+do
+ case $1 in
+
+ -d | --html-dir)
+ shift
+ if [ $# != 0 ]
+ then
+ htmldir="$1"
+ shift
+ fi
+ ;;
+
+ -m | --merge)
+ shift
+ if [ $# != 0 ]
+ then
+ mergesect="$1"
+ shift
+ fi
+ case $mergesect in
+ [0-9])
+ ;;
+ *)
+ echo "ERROR: merge section must be a digit from 0 to 9."
+ Usage
+ ;;
+ esac
+ ;;
+
+ -t | --toc-first)
+ shift
+ tocfirst="t"
+ ;;
+
+ -T | --title)
+ shift
+ if [ $# != 0 ]
+ then
+ title="$1"
+ shift
+ fi
+ if [ -z "$title" ] # If title is the null string, set notitle
+ then
+ notitle="t"
+ fi
+ ;;
+
+ -h | --help)
+ Usage
+ ;;
+
+ -V | --version)
+ Version
+ ;;
+
+ # Unrecognized flag.
+ -*)
+ echo "Unrecognized option: $1"
+ Usage
+ ;;
+
+ # Non-flag: go to process file.
+ *)
+ break
+ ;;
+ esac
+done
+
+ # At this point we should have at most one
+ # argument, the file name. Check it.
+if [ $# -gt 1 ]
+then
+ Usage
+fi
+
+if [ $# = 1 ]
+then
+ if [ ! -r "$1" ]
+ then
+ echo "ERROR: Cannot open file $1."
+ exit 1
+ fi
+fi
+
+ # Filter the input (file arg or stdin) thru a sed script
+ # that fixes cases where an anchor for a section has
+ # had its section title split across two or more lines.
+ # Put the result in a tmp file so it can be re-read.
+
+filename="/tmp/rman_html_split_$$.html"
+trap "rm -f $filename" 0
+sed -e ':top' \
+ -e '/^<H[1-9]><A NAME="sect.*[^>]$/N' \
+ -e '/^<LI><A NAME="toc.*[^>]$/N' \
+ -e 's/\n/ /' \
+ -e 't top' $1 > $filename
+
+ # If user did not supply title, get title for top of
+ # each page from rman-generated <TITLE> line. If user
+ # gave a blank title then leave it blank.
+if [ -z "$title" -a -z "$notitle" ]
+then
+ title=`sed -e '/^<TITLE>/q' $filename |
+ sed -n -e 's,^<TITLE>\([^<]*\).*$,\1,p'`
+fi
+
+ # Get a list of all the sections. Separate it into a
+ # list of merged sections and a list of all other sections.
+ # Merged sects are combined and get special treatment besides.
+allsects=`sed -n 's,^.*<A NAME="\(sect[0-9][0-9]*\)".*$,\1,p' $filename`
+
+mergesects=`echo $allsects | \
+ awk '{for(i=1; i<=NF && i<'"$mergesect"+2'; i++) print \$i;}'`
+
+sectlist=`echo $allsects |
+ awk '{for(i='"$mergesect"'+2; i<=NF; i++) print \$i;}'`
+
+
+# This little bit, copied from GNU configure, sets ac_n and ac_c such
+# that echo $ac_n "stuff $ac_c" yields "stuff " w/o following newline.
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+ # Create html directory if it does not exist.
+if [ -d $htmldir ]
+then
+ echo "Re-using directory $htmldir."
+else
+ echo "Creating directory $htmldir..."
+ if mkdir $htmldir
+ then
+ true
+ else
+ echo "Failed!"
+ exit 1
+ fi
+fi
+
+echo "Creating section pages..."
+
+ # Produce index page. It is special, since it combines
+ # merged sections and uses the rman-generated header.
+nextsect=`echo $sectlist | awk '{print $1;}'`
+echo $ac_n $mergesects "$ac_c"
+(do_title ;
+ sed -n -e "1,/^<H[23]><A NAME=\"$nextsect\"/p" $filename | \
+ do_href_next | \
+ change_hrefs ;
+ do_footer) > $htmldir/sect0.html
+
+ # Produce pages for all other sections except toc.
+prevsect="sect$mergesect"
+prevtext=`sed -n 's,^<H[23]><A NAME="'$prevsect'" HREF="#toc[0-9][0-9]*">\([^<]*\).*$,\1,p' $filename | sed -e 's/ *$//'`
+for sect in $sectlist;
+do
+ echo $ac_n "$sect $ac_c"
+ headtext=`sed -n 's,^<H[23]><A NAME="'$sect'" HREF="#toc[0-9][0-9]*">\([^<]*\).*$,\1,p' $filename | sed -e 's/ *$//'`
+ (do_header $headtext ;
+ do_href_toc ;
+ do_href_prev "$prevsect" "$prevtext" ;
+ sed -n -e '/<A NAME="'$sect'"/,/<A NAME=/p' $filename |
+ do_href_next |
+ change_hrefs ;
+ do_footer) > $htmldir/$sect.html
+ prevsect="$sect"
+ prevtext="$headtext"
+done
+
+
+ # Produce table of contents
+echo "toc"
+(do_header Table of Contents ;
+ sed -n -e '/<A NAME="toc">/,$p' $filename | \
+ change_hrefs ;
+) > $htmldir/toc.html
+
+
+ # Finally, make sure the symlinks index.html and
+ # sect1.html -> sect0.html are in place, and if not,
+ # create them. If --tocfirst is not specified, then
+ # link index.html to section 0, otherwise link it to
+ # index.html
+
+echo "Doing symlinks..."
+cd $htmldir
+
+rm -f index.html
+if [ -z "$tocfirst" ]
+then
+ echo "Linking index.html -> sect0.html"
+ ln -s sect0.html index.html
+else
+ echo "Linking index.html -> toc.html"
+ ln -s toc.html index.html
+fi
+
+for sect in $mergesects
+do
+ if [ "$sect" != "sect0" ]
+ then
+ echo "Linking $sect.html -> sect0.html"
+ rm -f $sect.html
+ ln -fs sect0.html $sect.html
+ fi
+done
+
+echo "Done."