diff options
author | gstein <gstein@13f79535-47bb-0310-9956-ffa450edef68> | 2001-11-11 07:23:57 +0000 |
---|---|---|
committer | gstein <gstein@13f79535-47bb-0310-9956-ffa450edef68> | 2001-11-11 07:23:57 +0000 |
commit | 851544f570ff464bc929139e6989424b2a381de8 (patch) | |
tree | e01f23eed86ea10e87a77bf75758f63ef068b91f | |
parent | aab2f13811e727a3ef1c4239dc0a32a8ee7c1d49 (diff) | |
download | libapr-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.h | 149 | ||||
-rw-r--r-- | misc/unix/Makefile.in | 2 | ||||
-rw-r--r-- | misc/unix/version.c | 72 | ||||
-rw-r--r-- | test/.cvsignore | 1 | ||||
-rw-r--r-- | test/Makefile.in | 6 | ||||
-rw-r--r-- | test/testvsn.c | 80 |
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; +} |