diff options
Diffstat (limited to 'source/lib/version.c')
-rw-r--r-- | source/lib/version.c | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/source/lib/version.c b/source/lib/version.c index 3982646f56..3cae02ad2e 100644 --- a/source/lib/version.c +++ b/source/lib/version.c @@ -23,16 +23,39 @@ const char *samba_version_string(void) { -#ifdef SAMBA_VERSION_VENDOR_FUNCTION - return SAMBA_VERSION_VENDOR_FUNCTION; -#else /* SAMBA_VERSION_VENDOR_FUNCTION */ - #ifdef SAMBA_VERSION_VENDOR_SUFFIX - #ifdef SAMBA_VERSION_VENDOR_PATCH - return SAMBA_VERSION_OFFICIAL_STRING "-" SAMBA_VERSION_VENDOR_SUFFIX \ - "-" SAMBA_VERSION_VENDOR_PATCH; - #endif /* SAMBA_VERSION_VENDOR_PATCH */ - return SAMBA_VERSION_OFFICIAL_STRING "-" SAMBA_VERSION_VENDOR_SUFFIX; - #endif /* SAMBA_VERSION_VENDOR_SUFFIX */ -#endif /* SAMBA_VERSION_VENDOR_FUNCTION */ +#ifndef SAMBA_VERSION_VENDOR_SUFFIX return SAMBA_VERSION_OFFICIAL_STRING; +#else + static char *samba_version; + int res; +#ifdef SAMBA_VERSION_VENDOR_PATCH + char *tmp_version; +#endif + + if (samba_version != NULL) + return samba_version; + + res = asprintf(&samba_version, "%s-%s", + SAMBA_VERSION_OFFICIAL_STRING, + SAMBA_VERSION_VENDOR_SUFFIX); + /* + * Can't use smb_panic here due to dependencies + */ + assert(res != -1); + +#ifdef SAMBA_VERSION_VENDOR_PATCH + res = asprintf(&tmp_version, "%s-%d", samba_version, + SAMBA_VERSION_VENDOR_PATCH); + /* + * Can't use smb_panic here due to dependencies + */ + assert(res != -1); + + SAFE_FREE(samba_version); + + samba_version = tmp_version; +#endif + + return samba_version; +#endif } |