summaryrefslogtreecommitdiff
path: root/source3/lib/version.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/version.c')
-rw-r--r--source3/lib/version.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/lib/version.c b/source3/lib/version.c
index 3cae02ad2e..38c4f45ac6 100644
--- a/source3/lib/version.c
+++ b/source3/lib/version.c
@@ -59,3 +59,32 @@ const char *samba_version_string(void)
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());
+}