You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by "William A. Rowe, Jr." <wr...@rowe-clan.net> on 2004/02/03 20:34:06 UTC
Re: cvs commit: httpd-2.0/server core.c
Uhmmm, this isn't an MMN bump :) If you were adding this new
structure *type* as a member of another structure (say as the last
member of the conn_rec) and the structure grew (in such a way that
folks could be blindly oblivious to the fact that conn_rec just got a
bit bigger), that's an MMN bump. It's not the case here.
MMN bumps are for module authors who must be pedantic, e.g.
they create their own "Apache" structures, e.g. conn_rec's and pass
them around. When a module does something like that, it needs
to be alerted that the structures that it creates might not be 100%
binary compatible.
MMN bumps are for producers of apache-like structures, not for
the consumers who trust the elements they need to retrieve from
the structures are still present in the new version.
Bill
At 04:03 PM 1/25/2004, nd@apache.org wrote:
>nd 2004/01/25 14:03:38
>
> Modified: . CHANGES
> include ap_mmn.h ap_release.h httpd.h
> server core.c
> Log:
> Add core version query function ap_get_server_revision and
> accompanying ap_version_t structure (minor MMN bump).
> The function is similar to apr_version() and allow for exact
> querying of the core revision level.
>
> Revision Changes Path
> 1.1377 +4 -0 httpd-2.0/CHANGES
>
> Index: CHANGES
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/CHANGES,v
> retrieving revision 1.1376
> retrieving revision 1.1377
> diff -u -u -r1.1376 -r1.1377
> --- CHANGES 25 Jan 2004 15:40:07 -0000 1.1376
> +++ CHANGES 25 Jan 2004 22:03:38 -0000 1.1377
> @@ -2,6 +2,10 @@
>
> [Remove entries to the current 2.0 section below, when backported]
>
> + *) Add core version query function (ap_get_server_revision) and
> + accompanying ap_version_t structure (minor MMN bump).
> + [André Malo]
> +
> *) mod_rewrite: EOLs sent by external rewritemaps are now consumed
> as whole. That way, on systems with more than one EOL character
> rewritemap programs no longer need to switch stdout to binary
>
>
>
> 1.63 +2 -1 httpd-2.0/include/ap_mmn.h
>
> Index: ap_mmn.h
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
> retrieving revision 1.62
> retrieving revision 1.63
> diff -u -u -r1.62 -r1.63
> --- ap_mmn.h 1 Jan 2004 13:26:16 -0000 1.62
> +++ ap_mmn.h 25 Jan 2004 22:03:38 -0000 1.63
> @@ -118,6 +118,7 @@
> * 20030821 (2.1.0-dev) bumped mod_include's entire API
> * 20030821.1 (2.1.0-dev) added XHTML doctypes
> * 20030821.2 (2.1.0-dev) added ap_escape_errorlog_item
> + * 20030821.3 (2.1.0-dev) added ap_get_server_revision / ap_version_t
> */
>
> #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
> @@ -125,7 +126,7 @@
> #ifndef MODULE_MAGIC_NUMBER_MAJOR
> #define MODULE_MAGIC_NUMBER_MAJOR 20030821
> #endif
> -#define MODULE_MAGIC_NUMBER_MINOR 2 /* 0...n */
> +#define MODULE_MAGIC_NUMBER_MINOR 3 /* 0...n */
>
> /**
> * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
>
>
>
> 1.81 +14 -3 httpd-2.0/include/ap_release.h
>
> Index: ap_release.h
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/include/ap_release.h,v
> retrieving revision 1.80
> retrieving revision 1.81
> diff -u -u -r1.80 -r1.81
> --- ap_release.h 1 Jan 2004 13:26:16 -0000 1.80
> +++ ap_release.h 25 Jan 2004 22:03:38 -0000 1.81
> @@ -59,6 +59,8 @@
> #ifndef AP_RELEASE_H
> #define AP_RELEASE_H
>
> +#include "apr_general.h" /* stringify */
> +
> /*
> * The below defines the base string of the Server: header. Additional
> * tokens can be added via the ap_add_version_component() API call.
> @@ -73,9 +75,18 @@
> */
> #define AP_SERVER_BASEVENDOR "Apache Software Foundation"
> #define AP_SERVER_BASEPRODUCT "Apache"
> -#define AP_SERVER_MAJORVERSION "2"
> -#define AP_SERVER_MINORVERSION "1"
> -#define AP_SERVER_PATCHLEVEL "0-dev"
> +
> +#define AP_SERVER_MAJORVERSION_NUMBER 2
> +#define AP_SERVER_MINORVERSION_NUMBER 1
> +#define AP_SERVER_PATCHLEVEL_NUMBER 0
> +#define AP_SERVER_ADD_STRING "-dev"
> +
> +/* keep old macros as well */
> +#define AP_SERVER_MAJORVERSION APR_STRINGIFY(AP_SERVER_MAJORVERSION_NUMBER)
> +#define AP_SERVER_MINORVERSION APR_STRINGIFY(AP_SERVER_MINORVERSION_NUMBER)
> +#define AP_SERVER_PATCHLEVEL APR_STRINGIFY(AP_SERVER_PATCHLEVEL_NUMBER) \
> + AP_SERVER_ADD_STRING
> +
> #define AP_SERVER_MINORREVISION AP_SERVER_MAJORVERSION "." AP_SERVER_MINORVERSION
> #define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL
> #define AP_SERVER_BASEVERSION AP_SERVER_BASEPRODUCT "/" AP_SERVER_BASEREVISION
>
>
>
> 1.206 +19 -0 httpd-2.0/include/httpd.h
>
> Index: httpd.h
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/include/httpd.h,v
> retrieving revision 1.205
> retrieving revision 1.206
> diff -u -u -r1.205 -r1.206
> --- httpd.h 1 Jan 2004 13:26:16 -0000 1.205
> +++ httpd.h 25 Jan 2004 22:03:38 -0000 1.206
> @@ -415,6 +415,25 @@
> # define AP_CORE_DECLARE_NONSTD AP_DECLARE_NONSTD
> #endif
>
> +/**
> + * The numeric version information is broken out into fields within this
> + * structure.
> + */
> +typedef struct {
> + int major; /**< major number */
> + int minor; /**< minor number */
> + int patch; /**< patch number */
> + const char *add_string; /**< additional string like "-dev" */
> +} ap_version_t;
> +
> +/**
> + * Return httpd's version information in a numeric form.
> + *
> + * @param version Pointer to a version structure for returning the version
> + * information.
> + */
> +AP_DECLARE(void) ap_get_server_revision(ap_version_t *version);
> +
> /**
> * Get the server version string
> * @return The server version string
>
>
>
> 1.257 +8 -0 httpd-2.0/server/core.c
>
> Index: core.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/server/core.c,v
> retrieving revision 1.256
> retrieving revision 1.257
> diff -u -u -r1.256 -r1.257
> --- core.c 8 Jan 2004 18:56:20 -0000 1.256
> +++ core.c 25 Jan 2004 22:03:38 -0000 1.257
> @@ -2364,6 +2364,14 @@
> return APR_SUCCESS;
> }
>
> +AP_DECLARE(void) ap_get_server_revision(ap_version_t *version)
> +{
> + version->major = AP_SERVER_MAJORVERSION_NUMBER;
> + version->minor = AP_SERVER_MINORVERSION_NUMBER;
> + version->patch = AP_SERVER_PATCHLEVEL_NUMBER;
> + version->add_string = AP_SERVER_ADD_STRING;
> +}
> +
> AP_DECLARE(const char *) ap_get_server_version(void)
> {
> return (server_version ? server_version : AP_SERVER_BASEVERSION);
>
>
>
Re: cvs commit: httpd-2.0/server core.c
Posted by André Malo <nd...@perlig.de>.
* Cliff Woolley <jw...@virginia.edu> wrote:
> On Tue, 3 Feb 2004, William A. Rowe, Jr. wrote:
>
> > Uhmmm, this isn't an MMN bump :) If you were adding this new
> > structure *type* as a member of another structure (say as the last
> > member of the conn_rec) and the structure grew (in such a way that
> > folks could be blindly oblivious to the fact that conn_rec just got a
> > bit bigger), that's an MMN bump. It's not the case here.
>
> I disagree. If you add a function to the API without bumping the MMN,
> then how is a module that wants to use the new function if it exists and
> yet still compile if it doesn't supposed to work? It can't.
Yes, that's my understanding as well: major bumps break backwards compat and
minor bumps keep forward compat.
nd
Re: cvs commit: httpd-2.0/server core.c
Posted by Cliff Woolley <jw...@virginia.edu>.
On Tue, 3 Feb 2004, William A. Rowe, Jr. wrote:
> Uhmmm, this isn't an MMN bump :) If you were adding this new
> structure *type* as a member of another structure (say as the last
> member of the conn_rec) and the structure grew (in such a way that
> folks could be blindly oblivious to the fact that conn_rec just got a
> bit bigger), that's an MMN bump. It's not the case here.
I disagree. If you add a function to the API without bumping the MMN,
then how is a module that wants to use the new function if it exists and
yet still compile if it doesn't supposed to work? It can't.
--Cliff