diff options
Diffstat (limited to 'ldap/cm/unixstrip.pl')
-rw-r--r-- | ldap/cm/unixstrip.pl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ldap/cm/unixstrip.pl b/ldap/cm/unixstrip.pl new file mode 100644 index 00000000..9d9ae308 --- /dev/null +++ b/ldap/cm/unixstrip.pl @@ -0,0 +1,57 @@ +# +# BEGIN COPYRIGHT BLOCK +# Copyright 2001 Sun Microsystems, Inc. +# Portions copyright 1999, 2001-2003 Netscape Communications Corporation. +# All rights reserved. +# END COPYRIGHT BLOCK +# +use File::Find; + +# +# usage: unixstrip.pl [ directory ... ] [ shlibsign ] +# +# if no arguments are passed, strip files under the current directory. +# +# if 1 argument is passed, strip files under the given directory. +# +# if 2 or more arguments are passed, +# the last argument is considered the path to nss utility shlibsign (NSS3.9~), +# the preceding args are directories, under which files are to be stripped. +# And nss libraries libsoftokn3, libfreebl_pure32_3, libfreebl_hybrid_3 +# are to be checksum'ed with shlibsign. + +my $SHLIBSIGN = ""; +if (@ARGV > 1) { + $SHLIBSIGN = $ARGV[$#ARGV]; + print STDERR "set $SHLIBSIGN \n"; + for (my $i = 0; $i < $#ARGV; $i++) + { + print STDERR "args[$i]: $ARGV[$i]\n"; + find(\&find_cb, $ARGV[$i]); + } +} elsif (@ARGV == 1) { + find(\&find_cb, @ARGV); +} else { + find(\&find_cb, '.'); +} + +sub find_cb { + return if (! -f $_); # only look at plain files + return if (! -B $_); # skip text files + return if (/\.jpg$/); # skip jpg files + return if (/\.gif$/); # skip gif files + return if (/\.jar$/); # skip jar files + return if (/\.zip$/); # skip zip files + return if (/\.gz$/); # skip gzip files + return if (/\.chk$/); # skip chk files + print STDERR "about to strip $_ .\n"; + system("strip $_"); + print STDERR "strip $_ done.\n"; + if ($SHLIBSIGN ne "" && /libsoftokn3|libfreebl_pure32_3|libfreebl_hybrid_3/) + { + print STDERR "$SHLIBSIGN $_\n"; + system("$SHLIBSIGN -v -i $_"); + } +} + +exit 0; |