=== 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 @@ Copyright 2004-2009 Jens Oknelid A DC++ port for Linux -LinuxDC++ version: 1.0.3+bzr -Core version: 0.75 +LinuxDC++ version: %s +Core version: %s 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 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 #include #include +#include +#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 #include +#include +#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()) {