/* Unix SMB/CIFS implementation. Samba Version functions Copyright (C) Stefan Metzmacher 2003 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 3 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, see . */ #include "includes.h" #include const char *samba_version_string(void) { #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 } void samba_extended_info_version(struct smb_extended_info *extended_info) { assert(extended_info != NULL); extended_info->samba_magic = SAMBA_EXTENDED_INFO_MAGIC; extended_info->samba_version = ((SAMBA_VERSION_MAJOR & 0xff) << 24) | ((SAMBA_VERSION_MINOR & 0xff) << 16) | ((SAMBA_VERSION_RELEASE & 0xff) << 8); #ifdef SAMBA_VERSION_REVISION extended_info->samba_version |= (tolower(*SAMBA_VERSION_REVISION) - 'a' + 1) & 0xff; #endif #ifdef SAMBA_VERSION_RC_RELEASE extended_info->samba_subversion |= (SAMBA_VERSION_RC_RELEASE & 0xff) << 24; #else #ifdef SAMBA_VERSION_PRE_RELEASE extended_info->samba_subversion |= (SAMBA_VERSION_PRE_RELEASE & 0xff) << 16; #endif #endif #ifdef SAMBA_VERSION_VENDOR_PATCH extended_info->samba_subversion |= (SAMBA_VERSION_VENDOR_PATCH & 0xffff); #endif /* FIXME: samba_gitcommitdate should contain the git commit date. */ unix_to_nt_time(&extended_info->samba_gitcommitdate, time(NULL)); snprintf (extended_info->samba_version_string, SAMBA_EXTENDED_INFO_VERSION_STRING_LENGTH, "%s", samba_version_string()); }