apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan Bloom <rbl...@gmail.com>
Subject Re: using APR_STATUS_IS_SUCCESS
Date Thu, 29 Jul 2004 00:08:05 GMT
Basically, the macro is wrong and needs to be removed.  The contract
that _all_ APR API's live up to is that on a successful result, they
must return APR_SUCCESS.  The reason we chose to use 0 as success is
simple:

1)  Most platforms can check for equality with 0 faster than they can
check for any other integer equality.
2)  It makes checking for success _really_ easy, because all APIs use
the same value for success, there is no guessing or research needed,
if the result wasn't 0, then the function didn't succeed.  It didn't
necessarily fail, because there are status codes that aren't full
success and aren't failures, but more research is needed.
3)  It provides you an opportunity to have a lot of different values
for errors and statuses without having to use a separate variable.

I assumed that the original addition of the macro was so that success
was handled like any other result code, ie you always use a macro.  If
the reason was so that some functions could return non-zero success
codes, then the macro definately needs to go, because that is a really
bad idea.

Ryan

On Wed, 28 Jul 2004 13:47:20 -0700, Geoffrey Young
<geoff@modperlcookbook.org> wrote:
> cross-posted to dev@apr
> 
> Garrett Rooney wrote:
> > Geoffrey Young wrote:
> >
> >> hi all
> >>
> >> I was just in garrett's APR talk here at oscon and he was mentioning the
> >> APR_STATUS_IS_SUCCESS macro, which I found interesting since httpd
> >> only uses
> >> it in a few places, opting for a direct comparison to APR_SUCCESS
> >> instead.
> >>
> >> should we move to APR_STATUS_IS_SUCCESS in all places?  can someone who
> >> groks the nuances of the macro add some insight here?
> >
> >
> > This is actually something I was wondering about as I wrote the
> > presentation.  Neither Apache or Subversion use APR_STATUS_IS_SUCCESS
> > everywhere, but I wonder if we should, since if you look at the
> > definition of the macro there are cases when it's more than just (s) ==
> > APR_SUCCESS.
> 
> just another note, I grep'd the code for "rc == APR_SUCCESS" and it looks
> like not even APR is using the macro everywhere...
> 
> --Geoff
> 


-- 
Ryan Bloom
rbb@apache.org
rbb@redhat.com
rbloom@gmail.com

Mime
View raw message