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