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