summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgstein <gstein@13f79535-47bb-0310-9956-ffa450edef68>2001-11-11 07:23:57 +0000
committergstein <gstein@13f79535-47bb-0310-9956-ffa450edef68>2001-11-11 07:23:57 +0000
commit851544f570ff464bc929139e6989424b2a381de8 (patch)
treee01f23eed86ea10e87a77bf75758f63ef068b91f
parentaab2f13811e727a3ef1c4239dc0a32a8ee7c1d49 (diff)
downloadlibapr-851544f570ff464bc929139e6989424b2a381de8.tar.gz
Add versioning mechanisms/APIs to APR.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@62498 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--include/apr_version.h149
-rw-r--r--misc/unix/Makefile.in2
-rw-r--r--misc/unix/version.c72
-rw-r--r--test/.cvsignore1
-rw-r--r--test/Makefile.in6
-rw-r--r--test/testvsn.c80
6 files changed, 308 insertions, 2 deletions
diff --git a/include/apr_version.h b/include/apr_version.h
new file mode 100644
index 000000000..23b68a26c
--- /dev/null
+++ b/include/apr_version.h
@@ -0,0 +1,149 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+#ifndef APR_VERSION_H
+#define APR_VERSION_H
+
+#include "apr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ APR's Version
+
+ There are several different mechanisms for accessing the version. There
+ is a string form, and a set of numbers; in addition, there are constants
+ which can be compiled into your application, and you can query the library
+ being used for its actual version.
+
+ Note that it is possible for an application to detect that it has been
+ compiled against a different version of APR by use of the compile-time
+ constants and the use of the run-time query function.
+
+ ### we have not defined source/binary compatibility guidelines yet and
+ ### how those map against these (release) version numbers. a strawman
+ ### would be the following text:
+
+ APR is binary-compatible (an app compiled against one version does not
+ need to be recompiled to work against another version) for the same
+ MAJOR and MINOR versions.
+
+ APR is source-compatible (an app needs to be recompiled, but will work
+ the same) for the same MAJOR version.
+
+ If the MAJOR version changes, then an application may need source changes.
+
+ Note that APR is defined to be forward compatible only, meaning that a
+ given application will be compatible with APR releases moving forward in
+ time. An application may not be compatible with earlier versions of an
+ APR library (even if the major and minor versions match). This restriction
+ is because a later version of APR can introduce new APIs.
+*/
+
+/* The numeric compile-time version constants. These constants are the
+ authoritative version numbers for APR. */
+#define APR_MAJOR_VERSION 0
+#define APR_MINOR_VERSION 9
+#define APR_PATCH_VERSION 0
+
+/* This symbol is defined for internal, "development" copies of APR. This
+ symbol will be #undef'd for releases. */
+#define APR_IS_DEV_VERSION
+
+/* The formatted string of APR's version */
+#define APR_VERSION_STRING \
+ APR_STRINGIFY(APR_MAJOR_VERSION) "." \
+ APR_STRINGIFY(APR_MINOR_VERSION) "." \
+ APR_STRINGIFY(APR_PATCH_VERSION) \
+ APR_IS_DEV_STRING
+
+
+/* The numeric version information is broken out into fields within this
+ structure. */
+typedef struct {
+ int major;
+ int minor;
+ int patch;
+ int is_dev;
+} apr_version_t;
+
+/* Return APR's version information information in a numeric form.
+
+ @param pvsn Pointer to a version structure for returning the version
+ information.
+*/
+APR_DECLARE(void) apr_version(apr_version_t *pvsn);
+
+/* Return APR's version information as a string. */
+APR_DECLARE(const char *) apr_version_string(void);
+
+
+/* Internal: helper macros for stringifying the version numbers */
+#define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)
+#define APR_STRINGIFY_HELPER(n) #n
+
+/* Internal: string form of the "is dev" flag */
+#ifdef APR_IS_DEV_VERSION
+#define APR_IS_DEV_STRING "-dev"
+#else
+#define APR_IS_DEV_STRING ""
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* APR_VERSION_H */
diff --git a/misc/unix/Makefile.in b/misc/unix/Makefile.in
index 729af2a6f..f6c81bdb8 100644
--- a/misc/unix/Makefile.in
+++ b/misc/unix/Makefile.in
@@ -1,7 +1,7 @@
TARGETS = \
start.lo getopt.lo otherchild.lo errorcodes.lo rand.lo \
- uuid.lo getuuid.lo
+ uuid.lo getuuid.lo version.lo
# bring in rules.mk for standard functionality
@INCLUDE_RULES@
diff --git a/misc/unix/version.c b/misc/unix/version.c
new file mode 100644
index 000000000..621ea2f61
--- /dev/null
+++ b/misc/unix/version.c
@@ -0,0 +1,72 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+#include "apr_version.h"
+
+APR_DECLARE(void) apr_version(apr_version_t *pvsn)
+{
+ pvsn->major = APR_MAJOR_VERSION;
+ pvsn->minor = APR_MINOR_VERSION;
+ pvsn->patch = APR_PATCH_VERSION;
+#ifdef APR_IS_DEV_VERSION
+ pvsn->is_dev = 1;
+#else
+ pvsn->is_dev = 0;
+#endif
+}
+
+APR_DECLARE(const char *) apr_version_string(void)
+{
+ return APR_VERSION_STRING;
+}
diff --git a/test/.cvsignore b/test/.cvsignore
index 06292c721..4b3264fea 100644
--- a/test/.cvsignore
+++ b/test/.cvsignore
@@ -48,3 +48,4 @@ testsockets
testuser
test.fil
testprocmutex
+testvsn
diff --git a/test/Makefile.in b/test/Makefile.in
index 767e952a5..4019212d1 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -30,7 +30,8 @@ PROGRAMS = \
teststr@EXEEXT@ \
testuser@EXEEXT@ \
testsockets@EXEEXT@ \
- testprocmutex@EXEEXT@
+ testprocmutex@EXEEXT@ \
+ testvsn@EXEEXT@
TARGETS = $(PROGRAMS)
@@ -145,4 +146,7 @@ testuser@EXEEXT@: testuser.lo $(LOCAL_LIBS)
testprocmutex@EXEEXT@: testprocmutex.lo $(LOCAL_LIBS)
$(LINK) testprocmutex.lo $(LOCAL_LIBS) $(ALL_LIBS)
+testvsn@EXEEXT@: testvsn.lo $(LOCAL_LIBS)
+ $(LINK) testvsn.lo $(LOCAL_LIBS) $(ALL_LIBS)
+
# DO NOT REMOVE
diff --git a/test/testvsn.c b/test/testvsn.c
new file mode 100644
index 000000000..1f0b9be59
--- /dev/null
+++ b/test/testvsn.c
@@ -0,0 +1,80 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+#include <stdio.h>
+
+#include "apr_version.h"
+
+
+int main(int argc, char **argv)
+{
+ apr_version_t vsn;
+
+ printf("compiled integer form: %d.%d.%d%s\ncompiled string form: %s\n",
+ APR_MAJOR_VERSION, APR_MINOR_VERSION, APR_PATCH_VERSION,
+#ifdef APR_IS_DEV_VERSION
+ "-dev",
+#else
+ "",
+#endif
+ APR_VERSION_STRING);
+
+ apr_version(&vsn);
+ printf("runtime integer form: %d.%d.%d%s\nruntime string form: %s\n",
+ vsn.major, vsn.minor, vsn.patch,
+ vsn.is_dev ? "-dev" : "",
+ apr_version_string());
+
+ return 0;
+}