1 /* ====================================================================
2 * The Apache Software License, Version 1.1
4 * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
19 * 3. The end-user documentation included with the redistribution,
20 * if any, must include the following acknowledgment:
21 * "This product includes software developed by the
22 * Apache Software Foundation (http://www.apache.org/)."
23 * Alternately, this acknowledgment may appear in the software itself,
24 * if and wherever such third-party acknowledgments normally appear.
26 * 4. The names "Apache" and "Apache Software Foundation" must
27 * not be used to endorse or promote products derived from this
28 * software without prior written permission. For written
29 * permission, please contact apache@apache.org.
31 * 5. Products derived from this software may not be called "Apache",
32 * nor may "Apache" appear in their name, without prior written
33 * permission of the Apache Software Foundation.
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * ====================================================================
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation. For more
51 * information on the Apache Software Foundation, please see
52 * <http://www.apache.org/>.
55 #ifndef APACHE_AP_MMN_H
56 #define APACHE_AP_MMN_H
59 * @package Module Magic Number
63 * MODULE_MAGIC_NUMBER_MAJOR
64 * Major API changes that could cause compatibility problems for older modules
65 * such as structure size changes. No binary compatibility is possible across
66 * a change in the major version.
68 * MODULE_MAGIC_NUMBER_MINOR
69 * Minor API changes that do not cause binary compatibility problems.
70 * Should be reset to 0 when upgrading MODULE_MAGIC_NUMBER_MAJOR.
72 * See the MODULE_MAGIC_AT_LEAST macro below for an example.
76 * 20010224 (2.0.13-dev) MODULE_MAGIC_COOKIE reset to "AP20"
77 * 20010523 (2.0.19-dev) bump for scoreboard structure reordering
78 * 20010627 (2.0.19-dev) more API changes than I can count
79 * 20010726 (2.0.22-dev) more big API changes
80 * 20010730 (2.0.23-dev) the dir d_is_absolute bit is introduced
83 #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
85 #ifndef MODULE_MAGIC_NUMBER_MAJOR
86 #define MODULE_MAGIC_NUMBER_MAJOR 20010730
88 #define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
89 #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR /* backward compat */
92 * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
95 * Useful for testing for features.
96 * For example, suppose you wish to use the apr_table_overlap
97 * function. You can do this:
99 * #if MODULE_MAGIC_AT_LEAST(19980812,2)
100 * ... use apr_table_overlap()
102 * ... alternative code which doesn't use apr_table_overlap()
105 * @param major The major module magic number
106 * @param minor The minor module magic number
107 * @deffunc MODULE_MAGIC_AT_LEAST(int major, int minor)
109 #define MODULE_MAGIC_AT_LEAST(major,minor) \
110 ((major) > MODULE_MAGIC_NUMBER_MAJOR \
111 || ((major) == MODULE_MAGIC_NUMBER_MAJOR \
112 && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
114 #endif /* !APACHE_AP_MMN_H */