diff options
Diffstat (limited to 'win32utils/updateopenssl.pl')
-rw-r--r-- | win32utils/updateopenssl.pl | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/win32utils/updateopenssl.pl b/win32utils/updateopenssl.pl new file mode 100644 index 0000000..6376a74 --- /dev/null +++ b/win32utils/updateopenssl.pl @@ -0,0 +1,106 @@ +#!/usr/bin/perl +# +# Copyright (C) 2006, 2007 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: updateopenssl.pl,v 1.8 2007/08/06 04:42:38 marka Exp $ + +# updateopenssl.pl +# This script locates the latest version of OpenSSL in the grandparent +# directory and updates the build scripts to use that version. +# +# Path and directory +$path = "..\\..\\"; + +# List of files that need to be updated with the actual version of the +# openssl directory +@filelist = ("BuildOpenSSL.bat", + "../lib/dns/win32/libdns.mak", + "../lib/dns/win32/libdns.dsp"); + +# Locate the openssl directory +$substr = getdirectory(); +if ($substr eq 0) { + print "No directory found\n"; +} +else { + print "Found $substr directory\n"; +} +#Update the list of files +if ($substr ne 0) { + $ind = 0; + foreach $file (@filelist) { + print "Updating file $file\n"; + updatefile($file, $substr); + $ind++; + } +} + +# Function to find the +sub getdirectory { + my(@namelist); + my($file, $name); + my($cnt); + opendir(DIR,$path) || die "No Directory: $!"; + @namelist = grep (/^openssl-[0-9]+\.[0-9]+\.[0-9]+[a-z]$/i, readdir(DIR)); + closedir(DIR); + + # Make sure we have something + if (scalar(@namelist) == 0) { + return (0); + } + # Now see if we have a directory or just a file. + # Make sure we are case insensitive + foreach $file (sort {uc($a) cmp uc($b)} @namelist) { + if (-d $path.$file) { + $name = $file; + } + } + + # If we have one use it otherwise report the error + # Note that we are only interested in the last one + # since the sort should have taken care of getting + # the latest + if (defined($name)) { + return ($name); + } + else { + return (0); + } +} + +# function to replace the openssl directory name with the latest one +sub updatefile { + my($filename, $substr, $line); + my(@Lines); + + $filename = $_[0]; + $substr = $_[1]; + + open (RFILE, $filename) || die "Can't open file $filename: $!"; + @Lines = <RFILE>; + close (RFILE); + + # Replace the string + foreach $line (@Lines) { + $line =~ s/openssl-[0-9]+\.[0-9]+\.[0-9]+[a-z]/$substr/gi; + } + #update the file + open (RFILE, ">$filename") || die "Can't open file $filename: $!"; + foreach $line (@Lines) { + print RFILE $line; + } + close(RFILE); +} + |