Blame nss/coreconf/coreconf.pl

Packit 40b132
#
Packit 40b132
# This Source Code Form is subject to the terms of the Mozilla Public
Packit 40b132
# License, v. 2.0. If a copy of the MPL was not distributed with this
Packit 40b132
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit 40b132
sub recursive_copy {
Packit 40b132
    local($fromdir);
Packit 40b132
    local($todir);
Packit 40b132
    local(@dirlist);
Packit 40b132
    $fromdir = shift;
Packit 40b132
    $todir = shift;
Packit 40b132
  
Packit 40b132
    print STDERR "recursive copy called with $fromdir, $todir\n";
Packit 40b132
Packit 40b132
#remove any trailing slashes.
Packit 40b132
    $fromdir =~ s/\/$//;
Packit 40b132
    $todir =~ s/\/$//;
Packit 40b132
    
Packit 40b132
    opendir(DIR, $fromdir);
Packit 40b132
    @dirlist = readdir DIR;
Packit 40b132
    close DIR;
Packit 40b132
Packit 40b132
Packit 40b132
    foreach $file (@dirlist) {
Packit 40b132
	if  (! (($file eq "." ) || ($file eq "..") )) {
Packit 40b132
	    
Packit 40b132
	    if (-d "$fromdir/$file") {
Packit 40b132
		print STDERR "handling directory $todir/$file\n";
Packit 40b132
		&rec_mkdir("$todir/$file");
Packit 40b132
		&recursive_copy("$fromdir/$file","$todir/$file");
Packit 40b132
	    }
Packit 40b132
	    else {
Packit 40b132
		print STDERR "handling file $fromdir/$file\n";
Packit 40b132
		&my_copy("$fromdir/$file","$todir/$file");
Packit 40b132
	    }
Packit 40b132
	}
Packit 40b132
    }
Packit 40b132
}
Packit 40b132
Packit 40b132
sub parse_argv {
Packit 40b132
Packit 40b132
#    print STDERR "Parsing Variables\n";
Packit 40b132
Packit 40b132
    foreach $q ( @ARGV ) {
Packit 40b132
	if (! ($q =~ /=/)) {
Packit 40b132
	    $var{$lastassigned} .= " $q";
Packit 40b132
	}
Packit 40b132
	else {
Packit 40b132
	   $q =~ /^([^=]*)=(.*)/;
Packit 40b132
	   $left = $1;
Packit 40b132
	   $right = $2;
Packit 40b132
	
Packit 40b132
	   $right =~ s/ *$//;
Packit 40b132
	   $var{$left} = $right;
Packit 40b132
Packit 40b132
	   $lastassigned = $left;
Packit 40b132
	
Packit 40b132
	   }
Packit 40b132
	print STDERR "Assigned $lastassigned = $var{$lastassigned}\n";
Packit 40b132
    }
Packit 40b132
}
Packit 40b132
Packit 40b132
Packit 40b132
# usage: &my_copy("dir/fromfile","dir2/tofile");
Packit 40b132
# do a 'copy' - files only, 'to' MUST be a filename, not a directory.
Packit 40b132
Packit 40b132
# fix this to be able to use copy on win nt.
Packit 40b132
Packit 40b132
sub my_copy {
Packit 40b132
    local($from);
Packit 40b132
    local($to);
Packit 40b132
    local($cpcmd);
Packit 40b132
Packit 40b132
    $from = shift;
Packit 40b132
    $to = shift;
Packit 40b132
Packit 40b132
    if ( ! defined $var{OS_ARCH}) {
Packit 40b132
	die "OS_ARCH not defined!";
Packit 40b132
    }
Packit 40b132
    else {
Packit 40b132
	if ($var{OS_ARCH} eq 'WINNT') {
Packit 40b132
	    $cpcmd = 'cp';
Packit 40b132
	    	}
Packit 40b132
	else {
Packit 40b132
	    $cpcmd = 'cp';
Packit 40b132
	    }
Packit 40b132
	print STDERR "COPYING: $cpcmd $from $to\n";
Packit 40b132
	system("$cpcmd $from $to");
Packit 40b132
    }
Packit 40b132
}
Packit 40b132
Packit 40b132
Packit 40b132
sub old_my_copy {
Packit 40b132
    local($from);
Packit 40b132
    local($to);
Packit 40b132
Packit 40b132
    $from = shift;
Packit 40b132
    $to = shift;
Packit 40b132
    open(FIN, "<$from") || die("Can't read from file $from\n");
Packit 40b132
    if ( ! open(FOUT,">$to")) {
Packit 40b132
	close FIN;
Packit 40b132
	die "Can't write to file $to\n";
Packit 40b132
    }
Packit 40b132
    while (read(FIN, $buf, 100000)) {
Packit 40b132
	print FOUT $buf;
Packit 40b132
    }
Packit 40b132
    close (FIN);
Packit 40b132
    close (FOUT);
Packit 40b132
}
Packit 40b132
Packit 40b132
sub rec_mkdir {
Packit 40b132
    local($arg);
Packit 40b132
    local($t);
Packit 40b132
    local($q);
Packit 40b132
Packit 40b132
    $arg = shift;
Packit 40b132
    $t = "";
Packit 40b132
    foreach $q (split(/\//,$arg)) {
Packit 40b132
	$t .= $q;
Packit 40b132
	if (! ($t =~ /\.\.$/)) {
Packit 40b132
	    if ($t =~ /./) {
Packit 40b132
		mkdir($t,0775);
Packit 40b132
	    }
Packit 40b132
	}
Packit 40b132
	$t.= '/';
Packit 40b132
    }
Packit 40b132
}
Packit 40b132
Packit 40b132
1;