diff --git a/Docs/src/bin/halibut/halibut.h b/Docs/src/bin/halibut/halibut.h index dfbbe2bf..67735d53 100644 --- a/Docs/src/bin/halibut/halibut.h +++ b/Docs/src/bin/halibut/halibut.h @@ -268,6 +268,7 @@ void licence(void); /* * version.c */ +void initversionstring(void); const char *const version; /* diff --git a/Docs/src/bin/halibut/main.c b/Docs/src/bin/halibut/main.c index f82414f5..2b413d9e 100644 --- a/Docs/src/bin/halibut/main.c +++ b/Docs/src/bin/halibut/main.c @@ -21,6 +21,8 @@ int main(int argc, char **argv) int reportcols; int debug; + initversionstring(); + /* * Set up initial (default) parameters. */ diff --git a/Docs/src/bin/halibut/version.c b/Docs/src/bin/halibut/version.c index 634bedcf..1b46fc8f 100644 --- a/Docs/src/bin/halibut/version.c +++ b/Docs/src/bin/halibut/version.c @@ -3,6 +3,8 @@ */ #include +#include +#include #ifndef VERSION #define VER "anonymous build (" __DATE__ " " __TIME__ ")" @@ -10,4 +12,31 @@ #define VER "version " VERSION #endif -const char *const version = "version 1.0 (NSIS Custom Build)"; +#define VERSTRFMT "v1.0 (NSIS Custom Build, %s)" +#define VERSTRSCMREVMAX 20 + +static char versionbuf[sizeof(VERSTRFMT)-2+VERSTRSCMREVMAX]; +const char *const version = versionbuf; + +void initversionstring(void) +{ + char scmverbuf[VERSTRSCMREVMAX+1]; + int cchsvnrev = 0; + const char*svnproprev = "$Revision$"; + if ('$' == *svnproprev++) + { + const char*p; + while('$' != *svnproprev && !isdigit(*svnproprev)) svnproprev++; + for (p = svnproprev; isdigit(*p); ++p) cchsvnrev++; + } + if (!cchsvnrev) + { + cchsvnrev = 1; + svnproprev = "?"; + } + + strcpy(scmverbuf, "SVN:r"); + strncat(scmverbuf, svnproprev, cchsvnrev); + sprintf(versionbuf,VERSTRFMT,scmverbuf); +} +