1 #!/usr/bin/perl -w 2 # 3 # ------------------------------------------------------------------ 4 # This file is part of bzip2/libbzip2, a program and library for 5 # lossless, block-sorting data compression. 6 # 7 # bzip2/libbzip2 version 1.0.6 of 6 September 2010 8 # Copyright (C) 1996-2010 Julian Seward <jseward (at] bzip.org> 9 # 10 # Please read the WARNING, DISCLAIMER and PATENTS sections in the 11 # README file. 12 # 13 # This program is released under the terms of the license contained 14 # in the file LICENSE. 15 # ------------------------------------------------------------------ 16 # 17 use strict; 18 19 # get command line values: 20 if ( $#ARGV !=1 ) { 21 die "Usage: $0 xml_infile xml_outfile\n"; 22 } 23 24 my $infile = shift; 25 # check infile exists 26 die "Can't find file \"$infile\"" 27 unless -f $infile; 28 # check we can read infile 29 if (! -r $infile) { 30 die "Can't read input $infile\n"; 31 } 32 # check we can open infile 33 open( INFILE,"<$infile" ) or 34 die "Can't input $infile $!"; 35 36 #my $outfile = 'fmt-manual.xml'; 37 my $outfile = shift; 38 #print "Infile: $infile, Outfile: $outfile\n"; 39 # check we can write to outfile 40 open( OUTFILE,">$outfile" ) or 41 die "Can't output $outfile $! for writing"; 42 43 my ($prev, $curr, $str); 44 $prev = ''; $curr = ''; 45 while ( <INFILE> ) { 46 47 print OUTFILE $prev; 48 $prev = $curr; 49 $curr = $_; 50 $str = ''; 51 52 if ( $prev =~ /<programlisting>$|<screen>$/ ) { 53 chomp $prev; 54 $curr = join( '', $prev, "<![CDATA[", $curr ); 55 $prev = ''; 56 next; 57 } 58 elsif ( $curr =~ /<\/programlisting>|<\/screen>/ ) { 59 chomp $prev; 60 $curr = join( '', $prev, "]]>", $curr ); 61 $prev = ''; 62 next; 63 } 64 } 65 print OUTFILE $curr; 66 close INFILE; 67 close OUTFILE; 68 exit; 69