#!/usr/bin/perl -w
#
# Copyright (c) 2009 - DRS CenGen, LLC, Columbia, Maryland
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
#   notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
#   notice, this list of conditions and the following disclaimer in
#   the documentation and/or other materials provided with the
#   distribution.
# * Neither the name of DRS CenGen, LLC nor the names of its
#   contributors may be used to endorse or promote products derived
#   from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#

use Getopt::Long;

use strict;

use constant EXAMPLE_DTD_PATH => 'http://configserver/dtd';

my $removepath;
my $dtdpath;
my $help;

&usage and exit 1 unless 
  GetOptions(
             'help'       =>\$help,
             'dtdpath=s'  =>\$dtdpath,
             'removepath' =>\$removepath,

            );

&usage and exit 0 if $help;

die "error: dtdpath must be specified or use --removepath\n" unless $dtdpath || $removepath;


if($^O eq "MSWin32")
{
  $^I = ".bak";
}
else
{
  $^I = "";
}

while(<>)
{
  my $dtd;

  if(m|SYSTEM\s+"(.*)/(.*\..*)"|)
  {
    $dtd = $2;
  }
  elsif(m|SYSTEM\s+"(.*\..*)"|)
  {
    $dtd = $1;
  }
  
  if($dtd)
  {
    $dtd = join('/',$dtdpath,$dtd)
      unless($removepath);
    
    s|SYSTEM ".*"|SYSTEM "$dtd"|;
  }
  
  print;
}

sub usage
{
  print "\n";
  print "usage: emaneconvertdtdpath [OPTIONS]... --dtdpath DTDPATH XMLFILE(S) \n";
  print "\n";
  print "options:\n";
  print " --help                         Print this usage and exit\n";
  print " --dtdpath DTDPATH              Fully qualified DTD path\n";
  print "                                 Example: ",EXAMPLE_DTD_PATH,"\n";
  print " --removepath                   Remove DTD path and leave only basename.\n";
  print "\n";
}
