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