You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Roy T. Fielding" <fi...@kiwi.ICS.UCI.EDU> on 2000/06/22 04:05:52 UTC

Re: MODULE_MAGIC_AT_LEAST()

Greg, this is still broken, right?  It sure looks broken.
Let's fix it now in both 1.3 and 2.0.

....Roy

In message <Pi...@nebula.lyra.org>,
Greg Stein writes:
>Has anybody noticed the logic is wrong for this macro? (in ap_mmn.h)
>
>Here is the current definition:
>
>/* Useful for testing for features. */
>#define MODULE_MAGIC_AT_LEAST(major,minor)              \
>    ((major) > MODULE_MAGIC_NUMBER_MAJOR                \
>        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
>            && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
>
>/* For example, suppose you wish to use the ap_overlap_tables
>   function.  You can do this:
>
>#if MODULE_MAGIC_AT_LEAST(19980812,2)
>    ... use ap_overlap_tables()
>#else
>    ... alternative code which doesn't use ap_overlap_tables()
>#endif
>
>*/
>
>
>However, the macro is checking if 19980812 is *greater* than the server
>version. If 19980812 is greater (the server is less/equal), then the
>feature definition doesn't exist! The minor check is also incorrect.
>
>I propose that we patch the macro to:
>#define MODULE_MAGIC_AT_LEAST(major,minor)              \
>    ((major) < MODULE_MAGIC_NUMBER_MAJOR                \
>        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
>            && (minor) <= MODULE_MAGIC_NUMBER_MINOR))
>
>
>Or am I just looking at this wrong?  (which I doubt cuz we found it
>didn't work when we tried it in the mod_dav code for testing if
>case_preserved_filename exists).
>
>I don't see any code in the distribution which actually uses this macro. I
>doubt that third-party modules are using it since it appears to have the
>wrong test.
>
>Cheers,
>-g
>
>
>-- 
>Greg Stein, http://www.lyra.org/
>


Re: MODULE_MAGIC_AT_LEAST()

Posted by Greg Stein <gs...@lyra.org>.
Agreed. Gotta start fresh with a new macro. I'll add some STATUS entries RSN.

Cheers,
-g

On Wed, Jun 21, 2000 at 09:19:39PM -0500, William A. Rowe, Jr. wrote:
> Rethinking,
> 
>   you can't fix it.  That is, it will always be wrong on
> old modules.  Rename it AP_MODULE_MAGIC_AT_LEAST(), add the
> major server rev (in case you are dealing with parallel
> versions), and you should be off to the races.
> 
>   I don't see why we shouldn't abandon, hard, the old macro
> name, since it was so essentially cracked.  Your call
> 
> Bill
> 
> > > -----Original Message-----
> > > From: Roy T. Fielding [mailto:fielding@kiwi.ICS.UCI.EDU]
> > > Sent: Wednesday, June 21, 2000 9:06 PM
> > > To: new-httpd@apache.org
> > > Subject: Re: MODULE_MAGIC_AT_LEAST() 
> > > 
> > > 
> > > Greg, this is still broken, right?  It sure looks broken.
> > > Let's fix it now in both 1.3 and 2.0.
> > > 
> > > ....Roy
> > > 
> > > In message 
> > > <Pi...@nebula.lyra.org>,
> > > Greg Stein writes:
> > > >Has anybody noticed the logic is wrong for this macro? (in 
> > ap_mmn.h)
> > > >
> > > >Here is the current definition:
> > > >
> > > >/* Useful for testing for features. */
> > > >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> > > >    ((major) > MODULE_MAGIC_NUMBER_MAJOR                \
> > > >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> > > >            && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
> > > >
> > > >/* For example, suppose you wish to use the ap_overlap_tables
> > > >   function.  You can do this:
> > > >
> > > >#if MODULE_MAGIC_AT_LEAST(19980812,2)
> > > >    ... use ap_overlap_tables()
> > > >#else
> > > >    ... alternative code which doesn't use ap_overlap_tables()
> > > >#endif
> > > >
> > > >*/
> > > >
> > > >
> > > >However, the macro is checking if 19980812 is *greater* than 
> > > the server
> > > >version. If 19980812 is greater (the server is 
> > less/equal), then the
> > > >feature definition doesn't exist! The minor check is also 
> > incorrect.
> > > >
> > > >I propose that we patch the macro to:
> > > >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> > > >    ((major) < MODULE_MAGIC_NUMBER_MAJOR                \
> > > >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> > > >            && (minor) <= MODULE_MAGIC_NUMBER_MINOR))
> > > >
> > > >
> > > >Or am I just looking at this wrong?  (which I doubt cuz we found it
> > > >didn't work when we tried it in the mod_dav code for testing if
> > > >case_preserved_filename exists).
> > > >
> > > >I don't see any code in the distribution which actually uses 
> > > this macro. I
> > > >doubt that third-party modules are using it since it appears 
> > > to have the
> > > >wrong test.
> > > >
> > > >Cheers,
> > > >-g
> > > >
> > > >
> > > >-- 
> > > >Greg Stein, http://www.lyra.org/
> > > >
> > > 
> > 

-- 
Greg Stein, http://www.lyra.org/

RE: MODULE_MAGIC_AT_LEAST()

Posted by "William A. Rowe, Jr." <wr...@lnd.com>.
Rethinking,

  you can't fix it.  That is, it will always be wrong on
old modules.  Rename it AP_MODULE_MAGIC_AT_LEAST(), add the
major server rev (in case you are dealing with parallel
versions), and you should be off to the races.

  I don't see why we shouldn't abandon, hard, the old macro
name, since it was so essentially cracked.  Your call

Bill

> > -----Original Message-----
> > From: Roy T. Fielding [mailto:fielding@kiwi.ICS.UCI.EDU]
> > Sent: Wednesday, June 21, 2000 9:06 PM
> > To: new-httpd@apache.org
> > Subject: Re: MODULE_MAGIC_AT_LEAST() 
> > 
> > 
> > Greg, this is still broken, right?  It sure looks broken.
> > Let's fix it now in both 1.3 and 2.0.
> > 
> > ....Roy
> > 
> > In message 
> > <Pi...@nebula.lyra.org>,
> > Greg Stein writes:
> > >Has anybody noticed the logic is wrong for this macro? (in 
> ap_mmn.h)
> > >
> > >Here is the current definition:
> > >
> > >/* Useful for testing for features. */
> > >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> > >    ((major) > MODULE_MAGIC_NUMBER_MAJOR                \
> > >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> > >            && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
> > >
> > >/* For example, suppose you wish to use the ap_overlap_tables
> > >   function.  You can do this:
> > >
> > >#if MODULE_MAGIC_AT_LEAST(19980812,2)
> > >    ... use ap_overlap_tables()
> > >#else
> > >    ... alternative code which doesn't use ap_overlap_tables()
> > >#endif
> > >
> > >*/
> > >
> > >
> > >However, the macro is checking if 19980812 is *greater* than 
> > the server
> > >version. If 19980812 is greater (the server is 
> less/equal), then the
> > >feature definition doesn't exist! The minor check is also 
> incorrect.
> > >
> > >I propose that we patch the macro to:
> > >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> > >    ((major) < MODULE_MAGIC_NUMBER_MAJOR                \
> > >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> > >            && (minor) <= MODULE_MAGIC_NUMBER_MINOR))
> > >
> > >
> > >Or am I just looking at this wrong?  (which I doubt cuz we found it
> > >didn't work when we tried it in the mod_dav code for testing if
> > >case_preserved_filename exists).
> > >
> > >I don't see any code in the distribution which actually uses 
> > this macro. I
> > >doubt that third-party modules are using it since it appears 
> > to have the
> > >wrong test.
> > >
> > >Cheers,
> > >-g
> > >
> > >
> > >-- 
> > >Greg Stein, http://www.lyra.org/
> > >
> > 
> 

RE: MODULE_MAGIC_AT_LEAST()

Posted by "William A. Rowe, Jr." <wr...@lnd.com>.
+1

> -----Original Message-----
> From: Roy T. Fielding [mailto:fielding@kiwi.ICS.UCI.EDU]
> Sent: Wednesday, June 21, 2000 9:06 PM
> To: new-httpd@apache.org
> Subject: Re: MODULE_MAGIC_AT_LEAST() 
> 
> 
> Greg, this is still broken, right?  It sure looks broken.
> Let's fix it now in both 1.3 and 2.0.
> 
> ....Roy
> 
> In message 
> <Pi...@nebula.lyra.org>,
> Greg Stein writes:
> >Has anybody noticed the logic is wrong for this macro? (in ap_mmn.h)
> >
> >Here is the current definition:
> >
> >/* Useful for testing for features. */
> >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> >    ((major) > MODULE_MAGIC_NUMBER_MAJOR                \
> >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> >            && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
> >
> >/* For example, suppose you wish to use the ap_overlap_tables
> >   function.  You can do this:
> >
> >#if MODULE_MAGIC_AT_LEAST(19980812,2)
> >    ... use ap_overlap_tables()
> >#else
> >    ... alternative code which doesn't use ap_overlap_tables()
> >#endif
> >
> >*/
> >
> >
> >However, the macro is checking if 19980812 is *greater* than 
> the server
> >version. If 19980812 is greater (the server is less/equal), then the
> >feature definition doesn't exist! The minor check is also incorrect.
> >
> >I propose that we patch the macro to:
> >#define MODULE_MAGIC_AT_LEAST(major,minor)              \
> >    ((major) < MODULE_MAGIC_NUMBER_MAJOR                \
> >        || ((major) == MODULE_MAGIC_NUMBER_MAJOR        \
> >            && (minor) <= MODULE_MAGIC_NUMBER_MINOR))
> >
> >
> >Or am I just looking at this wrong?  (which I doubt cuz we found it
> >didn't work when we tried it in the mod_dav code for testing if
> >case_preserved_filename exists).
> >
> >I don't see any code in the distribution which actually uses 
> this macro. I
> >doubt that third-party modules are using it since it appears 
> to have the
> >wrong test.
> >
> >Cheers,
> >-g
> >
> >
> >-- 
> >Greg Stein, http://www.lyra.org/
> >
>