Add support for a "version.conf" file in the main directory which can
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 20 Feb 2004 20:36:14 +0000 (20:36 +0000)
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 20 Feb 2004 20:36:14 +0000 (20:36 +0000)
be used to adjust version preferences.  It understands two configuration
directives: "enable", which can be 0 or 1, and "format", which can be any
strftime()-compatible string, e.g. "V12-powered on %A %Y-%m-%d %H:%M:%S".

If no configuration file is present, the configuration defaults to

enable: 1
format: CVS %Y%m%d%H%M%S

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@10139 f5534014-38df-0310-8fa8-9805f1628bb7

gtk/main.c
make-version.pl
mergecap.c
tethereal.c

index 17e9a51344ff32340f6501bd1144e916c3bd9049..9eebdd80326abe5990eb8d3cf9db8e2b57c49936 100644 (file)
@@ -1,6 +1,6 @@
 /* main.c
  *
- * $Id: main.c,v 1.401 2004/02/20 18:37:00 ulfl Exp $
+ * $Id: main.c,v 1.402 2004/02/20 20:36:14 gerald Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
@@ -236,7 +236,7 @@ about_ethereal( GtkWidget *w _U_, gpointer data _U_ )
           
           "Version " VERSION
 #ifdef CVSVERSION
-          " (cvs " CVSVERSION ")"
+          " (" CVSVERSION ")"
 #endif
           " (C) 1998-2004 Gerald Combs <gerald@ethereal.com>\n\n"
 
index ab4db756f99f2a80c9a3bc8d2d7eeb4f8cd941b6..819a627f3f46cc3eb1830e7f90dfd18135cc7c50 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Copyright 2004 Jörg Mayer (see AUTHORS file)
 #
-# $Id: make-version.pl,v 1.5 2004/02/01 11:32:23 obiot Exp $
+# $Id: make-version.pl,v 1.6 2004/02/20 20:36:13 gerald Exp $
 #
 # Ethereal - Network traffic analyzer
 # By Gerald Combs <gerald@ethereal.com>
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # usage:  ./make-version.pl
+#
+# If "version.conf" is present, it is parsed for configuration values.  
+# Possible values are:
+#
+#   enable - Enable or disable versioning.  Zero (0) disables, nonzero
+#            enables.
+#   format - A strftime() formatted string to use as a template for the
+#            version string.
+#
+# Default configuration:
+#
+# enable: 1
+# format: CVS %Y%m%d%H%M%S
 
 use strict;
 
+use Time::Local;
+use POSIX qw(strftime);
+
 my $version_file = 'cvsversion.h';
-my %asctonum = ( "Jan" => "01", "Feb" => "02", "Mar" => "03", "Apr" => "04",
-               "May" => "05", "Jun" => "06", "Jul" => "07", "Aug" => "08",
-               "Sep" => "09", "Oct" => "10", "Nov" => "11", "Dec" => "12" );
+my $vconf_file = 'version.conf';
+my %monthnum = ( "Jan" => "0", "Feb" => "1", "Mar" => "2", "Apr" => "3",
+               "May" => "4", "Jun" => "5", "Jul" => "6", "Aug" => "7",
+               "Sep" => "8", "Oct" => "9", "Nov" => "10", "Dec" => "11" );
 my $last = "";
 my $last_modified = 0;
 my $last_file = undef;
+my %version_pref = ("enable" => 1, "format" => "CVS %Y%m%d%H%M%S");
 
 
 # Recursively find all CVS Entries files starting from the given directory,
@@ -77,11 +95,10 @@ sub lastentry {
                # Regular lines look like this: /ethereal_be.py/1.6/Fri Aug  2 22:55:19 2002//
                next if (/^D/);
                $date = (split(/\//, $_, 5))[3];
-               next if ($date !~ /\d:\d\d:\d\d/);
-               ($wdayascii, $monthascii, $day, $time, $year) = split(/\s+/, $date);
-               $day = substr("0".$day, -2, 2);
-               $time =~ s/://g;
-               $current = "$year$asctonum{$monthascii}$day$time";
+               #                        Month   Day   Hour   Minute Second Year
+               next if ($date !~ /\w{3} (\w{3}) (.\d) (\d\d):(\d\d):(\d\d) (\d{4})/);
+               $current = timegm($5, $4, $3, $2, $monthnum{$1}, $6);
+
                if ($current gt $last) {
                        $last = $current;
                }
@@ -99,7 +116,9 @@ sub print_cvs_version
        my $needs_update = 1;
 
        if ($last ne "") {
-               $cvs_version = "#define CVSVERSION \"$last\"\n";
+               $cvs_version = "#define CVSVERSION \"" . 
+                       strftime($version_pref{"format"}, gmtime($last)) .
+                       "\"\n";
        } else {
                $cvs_version = "/* #define CVSVERSION \"\" */\n";
        }
@@ -120,11 +139,29 @@ sub print_cvs_version
        }
 }
 
+# Read values from the configuration file, if it exists.
+sub get_config {
+       open(FILE, "<$vconf_file") || print STDERR "Version configuration file $vconf_file not found.  Using defaults.\n" && return 1;
+
+       while (<FILE>) {
+               chomp;
+               next if (/^#/);
+               next unless (/^(\w+):\s+(\S.*)/);
+               $version_pref{$1} = $2;
+       }
+       close FILE;
+       return 1;
+}
+
 ##
 ## Start of code
 ##
 
-if (-d "./CVS") {
+&get_config();
+
+if ($version_pref{"enable"} == 0) {
+       print "Version tag disabled in $vconf_file.\n";
+} elsif (-d "./CVS") {
        print "This is a build from CVS (or a CVS snapshot), "
        . "CVS version tag will be computed.\n";
        &find_last_CVS_Entries(".");
index ca36f06b56a4a73552a13dd94ee4aba02d7fa690..d5e9534cd5fbb1e4be29736c62656297d1cc2265 100644 (file)
@@ -1,6 +1,6 @@
 /* Combine two dump files, either by appending or by merging by timestamp
  *
- * $Id: mergecap.c,v 1.17 2004/01/25 22:21:39 guy Exp $
+ * $Id: mergecap.c,v 1.18 2004/02/20 20:36:13 gerald Exp $
  *
  * Written by Scott Renfro <scott@renfro.org> based on
  * editcap by Richard Sharpe and Guy Harris
@@ -469,7 +469,7 @@ main(int argc, char *argv[])
     case 'h':
       printf("mergecap version %s"
 #ifdef CVSVERSION
-         " (cvs " CVSVERSION ")"
+         " (" CVSVERSION ")"
 #endif
          "\n", VERSION);
       usage();
index 9225de5dbf2ef9e68e9badf7d5628c60ad516c0f..ad0d18eb0e34c22a1e0b946dd7faccd806db692e 100644 (file)
@@ -1,6 +1,6 @@
 /* tethereal.c
  *
- * $Id: tethereal.c,v 1.228 2004/01/31 04:10:04 guy Exp $
+ * $Id: tethereal.c,v 1.229 2004/02/20 20:36:13 gerald Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
@@ -1212,7 +1212,7 @@ main(int argc, char *argv[])
       case 'v':        /* Show version and exit */
         printf("t" PACKAGE " " VERSION
 #ifdef CVSVERSION
-           " (cvs " CVSVERSION ")"
+           " (" CVSVERSION ")"
 #endif
            "\n%s\n%s\n",
            comp_info_str->str, runtime_info_str->str);