summaryrefslogtreecommitdiffstats
path: root/dirver.pl
diff options
context:
space:
mode:
authorcvsadm <cvsadm>2005-01-21 00:44:34 +0000
committercvsadm <cvsadm>2005-01-21 00:44:34 +0000
commitb2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch)
treecf58939393a9032182c4fbc4441164a9456e82f8 /dirver.pl
downloadds-ldapserver7x.tar.gz
ds-ldapserver7x.tar.xz
ds-ldapserver7x.zip
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'dirver.pl')
-rwxr-xr-xdirver.pl125
1 files changed, 125 insertions, 0 deletions
diff --git a/dirver.pl b/dirver.pl
new file mode 100755
index 00000000..f360c18a
--- /dev/null
+++ b/dirver.pl
@@ -0,0 +1,125 @@
+#!/usr/bin/perl
+#-----------------------------------------------------------------
+# dirver.pl: Generates ascii format #define for FILEVERSION
+# resource identifier used by Windows executable binaries.
+#
+# Usage: dirver.pl -v <major.minor.patch> [-d mm/dd/yy] [-o outfile]
+# Example: dirver.pl -v 6.5.2 -d 1/19/2005 -o fileversion.h
+#
+# -v <major.minor.patch> Version number.
+# -d <mm/dd/yy> Date. (optional)
+# -o <outfile> Output header file. (optional)
+# -H Print this help message
+#-----------------------------------------------------------------
+
+use Getopt::Std;
+use FileHandle;
+
+autoflush STDERR 1;
+
+getopts('v:d:o:H');
+
+if ($opt_H) {exitHelp();}
+
+# Load arguments
+$version = $opt_v || exitHelp();
+$date = $opt_d;
+$outfile = $opt_o;
+
+# Separate version into components
+my @verComponents = split(/\./, $version);
+
+# Set version components to 0 if not defined
+if ($verComponents[1] == undef) { $verComponents[1] = "0"; }
+if ($verComponents[2] == undef) { $verComponents[2] = "0"; }
+
+# Calculate build version and build date
+my $buildVersion = calcVersion(@verComponents);
+my $buildDate = calcBuildDate($date);
+
+# Write #defines out to stdout or a file is requested
+if ($outfile) {
+ open(OUTFILE,">$outfile") || die "Error: Can't create $outfile: $!";
+ $outhdl = OUTFILE;
+} else {
+ $outhdl = STDOUT;
+}
+
+print $outhdl "#define VI_PRODUCTVERSION $verComponents[0].$verComponents[1]\n";
+print $outhdl "#define PRODUCTTEXT \"$version\"\n";
+print $outhdl "#define VI_FILEVERSION $buildVersion, 0, 0, $buildDate\n";
+print $outhdl "#define VI_FileVersion \"$version Build $buildDate\\0\"\n";
+
+# Close file if not using STDOUT
+if ($outfile) {
+ close(OUTFILE);
+}
+
+#---------- calcVersion subroutine ----------
+sub calcVersion {
+ my @ver = shift;
+ my $nVersion = 0;
+
+ $nVersion = $ver[0];
+ $nVersion <<= 5;
+ $nVersion += $ver[1];
+ $nVersion <<= 7;
+ $nVersion += $ver[2];
+ $nVersion &= 0xFFFF;
+
+ return $nVersion;
+}
+
+#---------- calcBuildDate subroutine ----------
+sub calcBuildDate {
+ my $date = shift;
+ my @dateComponents = ();
+ my $month, $date, $year;
+ my $buildDate = "";
+
+ # Use date if passed in, otherwise use system date
+ if ($date) {
+ # Separate date into month, day, and year
+ @dateComponents = split(/\//, $date);
+
+ # Use struct tm range for month
+ $dateComponents[0]--;
+
+ # Handle 2 digit years like (20)00
+ if ($dateComponents[2] < 70) {
+ $dateComponents[2] += 20;
+ }
+
+ $month = $dateComponents[0];
+ $day = $dateComponents[1];
+ $year = $dateComponents[2];
+ } else {
+ $month = (localtime)[4];
+ $day = (localtime)[3];
+ $year = (localtime)[5] - 80;
+ }
+
+ $buildDate = $year;
+ $buildDate <<= 4;
+ $buildDate += $month;
+ $buildDate <<= 5;
+ $buildDate += $day;
+ $buildDate &= 0xFFFF;
+
+ return $buildDate;
+}
+
+#---------- exitHelp subroutine ----------
+sub exitHelp {
+ print(STDERR "$0: Generates ascii format #define for FILEVERSION
+ \tresource identifier used by Windows executable binaries.
+
+ \tUsage: $0 -v <major.minor.patch> [-d mm/dd/yy] [-o outfile]
+ \tExample: $0 -v 6.5.2 -d 1/19/2005 -o fileversion.h
+
+ \t-v <major.minor.patch> Version number.
+ \t-d <mm/dd/yy> Date. \(optional\)
+ \t-o <outfile> Output header file. \(optional\)
+ \t-H Print this help message\n");
+ exit(0);
+}