Home | History | Annotate | Download | only in bzip2
      1 #!/bin/bash
      2 # see the README file for usage etc.
      3 #
      4 # ------------------------------------------------------------------
      5 #  This file is part of bzip2/libbzip2, a program and library for
      6 #  lossless, block-sorting data compression.
      7 #
      8 #  bzip2/libbzip2 version 1.0.6 of 6 September 2010
      9 #  Copyright (C) 1996-2010 Julian Seward <jseward (at] bzip.org>
     10 #
     11 #  Please read the WARNING, DISCLAIMER and PATENTS sections in the 
     12 #  README file.
     13 #
     14 #  This program is released under the terms of the license contained
     15 #  in the file LICENSE.
     16 # ----------------------------------------------------------------
     17 
     18 
     19 usage() {
     20   echo '';
     21   echo 'Usage: xmlproc.sh -[option] <filename.xml>';
     22   echo 'Specify a target from:';
     23   echo '-v      verify xml file conforms to dtd';
     24   echo '-html   output in html format (single file)';
     25   echo '-ps     output in postscript format';
     26   echo '-pdf    output in pdf format';
     27   exit;
     28 }
     29 
     30 if test $# -ne 2; then
     31   usage
     32 fi
     33 # assign the variable for the output type
     34 action=$1; shift
     35 # assign the output filename
     36 xmlfile=$1; shift
     37 # and check user input it correct
     38 if !(test -f $xmlfile); then
     39   echo "No such file: $xmlfile";
     40   exit;
     41 fi
     42 # some other stuff we will use
     43 OUT=output
     44 xsl_fo=bz-fo.xsl
     45 xsl_html=bz-html.xsl
     46 
     47 basename=$xmlfile
     48 basename=${basename//'.xml'/''}
     49 
     50 fofile="${basename}.fo"
     51 htmlfile="${basename}.html"
     52 pdffile="${basename}.pdf"
     53 psfile="${basename}.ps"
     54 xmlfmtfile="${basename}.fmt"
     55 
     56 # first process the xmlfile with CDATA tags
     57 ./format.pl $xmlfile $xmlfmtfile
     58 # so the shell knows where the catalogs live
     59 export XML_CATALOG_FILES=/etc/xml/catalog
     60 
     61 # post-processing tidy up
     62 cleanup() {
     63   echo "Cleaning up: $@" 
     64   while [ $# != 0 ]
     65   do
     66     arg=$1; shift;
     67     echo "  deleting $arg";
     68     rm $arg
     69   done
     70 }
     71 
     72 case $action in
     73   -v)
     74    flags='--noout --xinclude --noblanks --postvalid'
     75    dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd'
     76    xmllint $flags $dtd $xmlfmtfile 2> $OUT 
     77    egrep 'error' $OUT 
     78    rm $OUT
     79   ;;
     80 
     81   -html)
     82    echo "Creating $htmlfile ..."
     83    xsltproc --nonet --xinclude  -o $htmlfile $xsl_html $xmlfmtfile
     84    cleanup $xmlfmtfile
     85   ;;
     86 
     87   -pdf)
     88    echo "Creating $pdffile ..."
     89    xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile
     90    pdfxmltex $fofile >$OUT </dev/null
     91    pdfxmltex $fofile >$OUT </dev/null
     92    pdfxmltex $fofile >$OUT </dev/null
     93    cleanup $OUT $xmlfmtfile *.aux *.fo *.log *.out
     94   ;;
     95 
     96   -ps)
     97    echo "Creating $psfile ..."
     98    xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile
     99    pdfxmltex $fofile >$OUT </dev/null
    100    pdfxmltex $fofile >$OUT </dev/null
    101    pdfxmltex $fofile >$OUT </dev/null
    102    pdftops $pdffile $psfile
    103    cleanup $OUT $xmlfmtfile $pdffile *.aux *.fo *.log *.out
    104 #  passivetex is broken, so we can't go this route yet.
    105 #   xmltex $fofile >$OUT </dev/null
    106 #   xmltex $fofile >$OUT </dev/null
    107 #   xmltex $fofile >$OUT </dev/null
    108 #   dvips -R -q -o bzip-manual.ps *.dvi
    109   ;;
    110 
    111   *)
    112   usage
    113   ;;
    114 esac
    115