#!/usr/bin/perl

require File::Basename;

use strict;

my $back_dir = '/scs/uninstall/p1';
if(! -d $back_dir) {
	system("mkdir -p $back_dir");
}

my ($file_dir, $file_list);
if($ARGV[0] && -d $ARGV[0]) {
	$file_dir = $ARGV[0];
} else { die "Cannot find file dir: $ARGV[0]\n"; } 

if($ARGV[1] && -f $ARGV[1]) {
	$file_list = $ARGV[1];
} else { die "Cannot find file list: $ARGV[1]\n"; } 

open(FH, "<$file_list") || die "Cannot open $file_list: $!\n";
my @files =  <FH>;
close(FH);

# copy the files into place
my ($dst, $name, $src, $cmd, $ret);
foreach my $file (@files) {
	$dst = File::Basename::dirname($file);
	$name = File::Basename::basename($file);
	chomp($dst);
	chomp($name);
	$src = $file_dir.'/'.$name;

	#print "src is: $src\n";
	#print "dst is: $dst\n";
	#print "name is: $name\n";
	if(! -f $src) {
		die "Cannot find file: $src\n";
	}
	
	# backup the orginal
	if(-f $dst.'/'.$name) {
		system("mkdir -p $back_dir/$dst");
		$cmd = "cp $dst/$name $back_dir/$dst";
		#print "backup cmds is: $cmd\n";
		$ret = system($cmd);
		if($ret) {
			warn "Cannot backup file: $dst/$name\n";	
		}
	}

	$cmd = "cp $src $dst/$name";
	print "Coping file: $name\n";
	#print "copy is: $cmd\n";
	$ret = system($cmd); 
	if($ret) {
		die "Cannot copy file: $name";
	}

}

exit 0;
