rendered paste body=== modified file 'SConstruct'--- SConstruct 2010-02-14 20:35:24 +0000+++ SConstruct 2010-03-15 15:00:02 +0000@@ -41,6 +41,30 @@ context.Result(retval) return retval +def CheckBZRRevision():+ print "Checking tree revision...",+ ret = commands.getoutput('bzr revno')+ print ret+ retval = 0+ try:+ if string.atoi(ret) > 0:+ retval = string.atoi(ret)+ except ValueError:+ print "Error while getting revision number"++ return retval++def config_h_build(target, source, env):+ config_h_defines = env.Dictionary()++ for a_target, a_source in zip(target, source):+ config_h = file(str(a_target), "w")+ config_h_in = file(str(a_source), "r")+ config_h.write(config_h_in.read() % config_h_defines)+ config_h_in.close()+ config_h.close()++ # Install app icons to share/icons and all others to share/linuxdcpp/icons def install_icons(icons_dir, env): prefix = env['FAKE_ROOT'] + os.path.join(env['PREFIX'], 'share')@@ -205,6 +229,13 @@ if conf.CheckHeader(['sys/types.h', 'sys/socket.h', 'ifaddrs.h', 'net/if.h']): conf.env['HAVE_IFADDRS_H'] = True + rev = CheckBZRRevision()+ if rev != 0: + conf.env['LDCPP_BZRREV'] = rev+ else:+ print 'Revision number will not be included'++ env = conf.Finish() @@ -260,7 +291,11 @@ # Build # ---------------------------------------------------------------------- + Export('env')+ import datetime+ env.Append(BUILD_TIME = datetime.datetime.now().strftime("%F %T"))+ config_h = env.AlwaysBuild(env.Command('config.h','config.h.in', config_h_build)) # Build the dcpp library libdcpp = SConscript(dirs = 'dcpp', variant_dir = BUILD_PATH + 'dcpp', duplicate = 0)=== added file 'config.h.in'--- config.h.in 1970-01-01 00:00:00 +0000+++ config.h.in 2010-03-15 15:07:05 +0000@@ -0,0 +1,13 @@+/**+ *+ * Config.h will be re-generated by build script. Do not modify it.+ **/++#if %(LDCPP_BZRREV)d != 0+ #define LDCPP_BZRREV "%(LDCPP_BZRREV)s"+#endif++#define BUILD_TIME "%(BUILD_TIME)s"+++=== modified file 'glade/mainwindow.glade'--- glade/mainwindow.glade 2009-10-11 03:17:46 +0000+++ glade/mainwindow.glade 2010-03-15 11:51:55 +0000@@ -822,8 +822,8 @@ <property name="copyright" translatable="yes">Copyright 2004-2009 Jens Oknelid</property> <property name="comments" translatable="yes">A DC++ port for Linux -LinuxDC++ version: 1.0.3+bzr-Core version: 0.75</property>+LinuxDC++ version: %s+Core version: %s</property> <property name="license" translatable="yes"> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. === modified file 'linux/WulforUtil.cc'--- linux/WulforUtil.cc 2010-03-13 10:34:37 +0000+++ linux/WulforUtil.cc 2010-03-15 12:25:21 +0000@@ -66,13 +66,14 @@ bool WulforUtil::parseArguments(int *argc, char **argv[]) { gchar* magnet = NULL, *address = NULL;- gboolean show = FALSE, refresh = FALSE;+ gboolean show = FALSE, refresh = FALSE, version = FALSE; GOptionEntry entries[] = { { "magnet", 'm', 0, G_OPTION_ARG_STRING, &magnet, "Search magnet from connected hubs.", NULL }, { "connect", 'c', 0, G_OPTION_ARG_STRING, &address, "Connect to given hub", NULL }, { "show", 's', 0, G_OPTION_ARG_NONE, &show, "Show running instance (or start a new one)", NULL }, { "refresh", 'r', 0, G_OPTION_ARG_NONE, &refresh, "Refresh filelist. LinuxDC++ has to be running for this to have an effect.", NULL },+ { "version", 'V', 0, G_OPTION_ARG_NONE, &version, "Print version information and exit.", NULL }, { NULL } }; @@ -89,13 +90,15 @@ else { if (show)- startArguments.show = true;+ startArguments.show = TRUE; if (refresh)- startArguments.refresh = true;+ startArguments.refresh = TRUE; if (magnet) startArguments.magnets.push_back(std::string(magnet)); if (address) startArguments.urls.push_back(std::string(address));+ if (version)+ startArguments.version = TRUE; // Handle extra 'file' arguments passed to commandline parseExtraArguments(*argc, *argv);=== modified file 'linux/WulforUtil.hh'--- linux/WulforUtil.hh 2010-03-13 10:34:37 +0000+++ linux/WulforUtil.hh 2010-03-15 12:23:44 +0000@@ -33,6 +33,7 @@ std::vector<std::string> urls; bool show; bool refresh;+ bool version; }; class WulforUtil=== modified file 'linux/mainwindow.cc'--- linux/mainwindow.cc 2010-03-13 10:34:37 +0000+++ linux/mainwindow.cc 2010-03-15 11:53:28 +0000@@ -36,6 +36,8 @@ #include <dcpp/Upload.h> #include <dcpp/Download.h> #include <dcpp/ClientManager.h>+#include <dcpp/version.h>+#include "version.hh" #include "downloadqueue.hh" #include "favoritehubs.hh" #include "finishedtransfers.hh"@@ -81,6 +83,13 @@ gtk_about_dialog_set_email_hook((GtkAboutDialogActivateLinkFunc)onAboutDialogActivateLink_gui, (gpointer)this, NULL); gtk_about_dialog_set_url_hook((GtkAboutDialogActivateLinkFunc)onAboutDialogActivateLink_gui, (gpointer)this, NULL);+ const char *aboutCommentsFormat = gtk_about_dialog_get_comments(GTK_ABOUT_DIALOG(getWidget("aboutDialog")));+ int len = strlen(aboutCommentsFormat) + strlen(LINUXDCPP_VERSION_STRING) + strlen(VERSIONSTRING) + 1;+ char* commentsStr = new char[len];+ g_snprintf(commentsStr, len, aboutCommentsFormat, LINUXDCPP_VERSION_STRING, VERSIONSTRING);+ gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(getWidget("aboutDialog")), commentsStr);+ delete[] commentsStr;+ // This has to be set in code in order to activate the link gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(getWidget("aboutDialog")), "https://launchpad.net/linuxdcpp"); gtk_window_set_transient_for(GTK_WINDOW(getWidget("aboutDialog")), window);=== added file 'linux/version.hh'--- linux/version.hh 1970-01-01 00:00:00 +0000+++ linux/version.hh 2010-03-15 15:08:14 +0000@@ -0,0 +1,30 @@+/*+ * Copyright 2004-2010 Jens Oknelid, paskharen@gmail.com+ *+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.+ *+ * In addition, as a special exception, compiling, linking, and/or+ * using OpenSSL with this program is allowed.+ */++#include "../config.h"++#ifndef LDCPP_BZRREV+ #define LINUXDCPP_VERSION_STRING "1.1.0"+#else+ #define LINUXDCPP_VERSION_STRING "1.1.0-r" LDCPP_BZRREV+#endif++=== modified file 'linux/wulfor.cc'--- linux/wulfor.cc 2010-03-13 10:34:37 +0000+++ linux/wulfor.cc 2010-03-15 15:07:19 +0000@@ -25,7 +25,9 @@ #include <dcpp/stdinc.h> #include <dcpp/DCPlusPlus.h>+#include <dcpp/version.h> +#include "version.hh" #include "settingsmanager.hh" #include "wulformanager.hh" #include "WulforUtil.hh"@@ -37,6 +39,21 @@ std::cout << "Loading: " << a << std::endl; } +void printVersionInfo() +{+ std::cout << "Version information (Built: " << BUILD_TIME << "): " << std::endl;+ std::cout << "\t" << APPNAME << " version: " << LINUXDCPP_VERSION_STRING << std::endl;+ std::cout << "\t" << "DC++ Core version: " << VERSIONSTRING << std::endl;+ std::cout << "\t" << "GLIB header version: " << GLIB_MAJOR_VERSION << "." << + GLIB_MINOR_VERSION << "." << GLIB_MICRO_VERSION << std::endl;+ std::cout << "\t" << "GLIB version: " << glib_major_version << "." + << glib_minor_version << "." << glib_micro_version << std::endl;+ std::cout << "\t" << "GTK header version: " << GTK_MAJOR_VERSION << "." + << GTK_MINOR_VERSION << "." << GTK_MICRO_VERSION << std::endl;+ std::cout << "\t" << "GTK version: " << gtk_major_version << "." + << gtk_minor_version << "." << gtk_micro_version << std::endl;+}+ int main(int argc, char *argv[]) { // Initialize i18n support@@ -44,11 +61,18 @@ textdomain("linuxdcpp"); bind_textdomain_codeset("linuxdcpp", "UTF-8"); + printVersionInfo();+ if (!WulforUtil::parseArguments(&argc, &argv)) { return -1; } + if (WulforUtil::startArguments.version)+ {+ return 0;+ }+ // Check if profile is locked if (WulforUtil::profileIsLocked()) {