Simplify samba_version_string.
authorAndreas Schneider <anschneider@suse.de>
Thu, 17 Jul 2008 10:25:31 +0000 (12:25 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 17 Jul 2008 12:16:19 +0000 (14:16 +0200)
This adds a new macro for a vender version function which will be returned
by the samba_version_string() function if defined.

Signed-off-by: Andreas Schneider <anschneider@suse.de>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 8b9301fbc73f28c657ec81c605760a0ff7a1973a)

source3/VERSION
source3/lib/version.c
source3/script/mkversion.sh

index c8206c804f82fb1c13852d8ac733f2edad92cce2..758956e9f74c425d5ccb4b4f9aa05bd861c1648a 100644 (file)
@@ -72,8 +72,6 @@ SAMBA_VERSION_IS_GIT_SNAPSHOT=yes
 
 ########################################################
 # This can be set by vendors if they want...           #
-# This can be a string constant or a function which    #
-# returns a string (const char *)                      #
 #                                                      #
 # <MAJOR>.<MINOR>.<RELEASE>[...]-<VENDOR_SUFFIX>       #
 #                                                      #
@@ -82,18 +80,26 @@ SAMBA_VERSION_IS_GIT_SNAPSHOT=yes
 # e.g. SAMBA_VERSION_VENDOR_SUFFIX="VendorVersion"     #
 #  ->  "CVS 3.0.0rc2-VendorVersion"                    #
 #                                                      #
-# Note: If you want to use a function,                 #
-#       then patch lib/version.c and add this function #
-#       there, because the symbol must be available in #
-#       binary.                                        #
+# Note: If you want to use a function, take a look at  #
+#       SAMBA_VERSION_VENDOR_FUNCTION                  #
 #                                                      #
-# const char *vendor_version(void)                     #
+########################################################
+SAMBA_VERSION_VENDOR_SUFFIX="test"
+SAMBA_VERSION_VENDOR_PATCH=
+
+########################################################
+# This can be set by vendors if they want..            #
+# This have to be a function which returns a string    #
+# (const char *).                                      #
+#                                                      #
+# Patch for example lib/version.c and add something    #
+# like the following example:                          #
+#                                                      #
+# const char *samba_vendor_version(void)               #
 # {                                                    #
-#      return "VendorVersion";                        #
+#   return SAMBA_VERSION_OFFICIAL_STRING "-ENREDO-1.0" #
 # }                                                    #
 #                                                      #
-# e.g. SAMBA_VERSION_VENDOR_SUFFIX=vendor_version()    #
-#  ->  "CVS 3.0.0rc2-VendorVersion"                    #
+# -> "Version 3.2.0-ENREDO-1.0                         #
 ########################################################
-SAMBA_VERSION_VENDOR_SUFFIX="test"
-SAMBA_VERSION_VENDOR_PATCH=
+SAMBA_VERSION_VENDOR_FUNCTION=
index 3cae02ad2ee096c2cae125c1b707f1fdcc891e03..3982646f567b93d1fc06a732c8f29b7cc93ffc56 100644 (file)
 
 const char *samba_version_string(void)
 {
-#ifndef SAMBA_VERSION_VENDOR_SUFFIX
+#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 */
        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
 }
index b67847697698fe8cc156620e1ddb45a9ae4c9e31..695fc7dd9cd6ae65b928797f2a931feb8671273f 100755 (executable)
@@ -30,6 +30,8 @@ SAMBA_VERSION_RELEASE_NICKNAME=`sed -n 's/^SAMBA_VERSION_RELEASE_NICKNAME=//p' $
 SAMBA_VERSION_VENDOR_SUFFIX=`sed -n 's/^SAMBA_VERSION_VENDOR_SUFFIX=//p' $SOURCE_DIR$VERSION_FILE`
 SAMBA_VERSION_VENDOR_PATCH=`sed -n 's/^SAMBA_VERSION_VENDOR_PATCH=//p' $SOURCE_DIR$VERSION_FILE`
 
+SAMBA_VERSION_VENDOR_FUNCTION=`sed -n 's/^SAMBA_VERSION_VENDOR_FUNCTION=//p' $SOURCE_DIR$VERSION_FILE`
+
 echo "/* Autogenerated by script/mkversion.sh */" > $OUTPUT_FILE
 
 echo "#define SAMBA_VERSION_MAJOR ${SAMBA_VERSION_MAJOR}" >> $OUTPUT_FILE
@@ -101,6 +103,10 @@ echo "#define SAMBA_VERSION_OFFICIAL_STRING \"${SAMBA_VERSION_STRING}\"" >> $OUT
 ##
 ## Add the vendor string if present
 ##
+if test -n "${SAMBA_VERSION_VENDOR_FUNCTION}"; then
+  echo "#define SAMBA_VERSION_VENDOR_FUNCTION ${SAMBA_VERSION_VENDOR_FUNCTION}" >> $OUTPUT_FILE
+fi
+
 if test -n "${SAMBA_VERSION_VENDOR_SUFFIX}";then
     echo "#define SAMBA_VERSION_VENDOR_SUFFIX ${SAMBA_VERSION_VENDOR_SUFFIX}" >> $OUTPUT_FILE
     SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-${SAMBA_VERSION_VENDOR_SUFFIX}"