diff --git a/ChangeLog b/ChangeLog index c260d7335d..e77e5070fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,8 @@ Changes in version 0.2.0.1-alpha - 2007-??-?? - When warning about missing headers, tell the user to let us know if the compile succeeds anyway, so we can downgrade the warning. + - If we're building from a subversion repository, include the current + SVN revision as part of the version string. o Minor features (logging): - Always prepend "Bug: " to any log message about a bug. diff --git a/doc/TODO b/doc/TODO index 921385a8a8..1cb461d123 100644 --- a/doc/TODO +++ b/doc/TODO @@ -357,8 +357,9 @@ Future version: such errors recently, then don't warn about it. - More consistent error checking in router_parse_entry_from_string(). I can say "banana" as my bandwidthcapacity, and it won't even squeak. - - Include the output of svn info/svk info output into the binary, so - it's trivial to see what version a binary was built from. + o Include the output of svn info in the binary, so it's trivial to see what + version a binary was built from. + - Do the same for svk info. - Add a doxygen style checker to make check-spaces so nick doesn't drift too far from arma's undocumented styleguide. Also, document that styleguide in HACKING. (See r9634 for example.) diff --git a/src/or/Makefile.am b/src/or/Makefile.am index 9991a67a2e..8e2011017e 100644 --- a/src/or/Makefile.am +++ b/src/or/Makefile.am @@ -28,3 +28,17 @@ test_LDADD = ../common/libor.a ../common/libor-crypto.a noinst_HEADERS = or.h eventdns.h eventdns_tor.h +tor_main.o: micro-revision.i + +micro-revision.i: FORCE + rm -f micro-revision.i; \ + if test -d ../../.svn ; then \ + svn info ../.. | \ + sed -n 's/^Revision: \([0-9][0-9]*\).*/"\1"/p' > micro-revision.i \ + || true; \ + fi; \ + if test ! -f micro-revision.i; then \ + echo '""' > micro-revision.i; \ + fi + +FORCE: diff --git a/src/or/config.c b/src/or/config.c index c7b7fdf24b..568cd934be 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -2982,6 +2982,8 @@ check_nickname_list(const char *lst, const char *name, char **msg) return r; } +extern const char tor_svn_revision[]; /* from main.c */ + /** Read a configuration file into options, finding the configuration * file location based on the command line. After loading the options, * validate them for consistency, then take actions based on them. @@ -3018,7 +3020,13 @@ options_init_from_torrc(int argc, char **argv) } if (argc > 1 && (!strcmp(argv[1],"--version"))) { - printf("Tor version %s.\n",VERSION); + char vbuf[128]; + if (tor_svn_revision && strlen(tor_svn_revision)) { + tor_snprintf(vbuf, sizeof(vbuf), " (r%s)", tor_svn_revision); + } else { + vbuf[0] = 0; + } + printf("Tor version %s%s.\n",VERSION,vbuf); if (argc > 2 && (!strcmp(argv[2],"--version"))) { print_svn_version(); } diff --git a/src/or/router.c b/src/or/router.c index 3c3255a49d..ad7ad96a24 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1172,6 +1172,8 @@ router_guess_address_from_dir_headers(uint32_t *guess) return -1; } +extern const char tor_svn_revision[]; /* from main.c */ + /** Set platform (max length len) to a NUL-terminated short * string describing the version of Tor and the operating system we're * currently running on. @@ -1179,8 +1181,17 @@ router_guess_address_from_dir_headers(uint32_t *guess) void get_platform_str(char *platform, size_t len) { - tor_snprintf(platform, len, "Tor %s on %s", - VERSION, get_uname()); + char svn_version_buf[128]; + if (!strcmpend(VERSION, "-dev") && + tor_svn_revision && strlen(tor_svn_revision)) { + tor_snprintf(svn_version_buf, sizeof(svn_version_buf), " (r%s)", + tor_svn_revision); + } else { + svn_version_buf[0] = 0; + } + + tor_snprintf(platform, len, "Tor %s%s on %s", + VERSION, svn_version_buf, get_uname()); return; } diff --git a/src/or/test.c b/src/or/test.c index 73de80fe57..98a10f8d9c 100644 --- a/src/or/test.c +++ b/src/or/test.c @@ -5,6 +5,8 @@ const char test_c_id[] = "$Id$"; +const char tor_svn_revision[] = ""; + /** * \file test.c * \brief Unit tests for many pieces of the lower level Tor modules. diff --git a/src/or/tor_main.c b/src/or/tor_main.c index f6309057c9..c4fb3139ad 100644 --- a/src/or/tor_main.c +++ b/src/or/tor_main.c @@ -5,6 +5,10 @@ const char tor_main_c_id[] = "$Id$"; +const char tor_svn_revision[] = +#include "micro-revision.i" + ""; + /** * \file tor_main.c * \brief Stub module containing a main() function. Allows unit