apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wesley W. Garland" <wes.garl...@gmail.com>
Subject Re: advice on use of APR_STATUS_IS_*
Date Thu, 12 May 2005 02:20:39 GMT
Good Point, Will -- definately an argument *for* using the
APR_STATUS_IS* macros.

I generally forget those exceptions (and that example is a very common
one) due to my habit of solving that issue with a switch(), combined
with the fact that I'm very UNIX-centric. (I don't use APR because
it's portable -- I use it because it's good and I like pools).

If I had my fantasy implementation, though, codes like EAGAIN and
EWOULDBLOCK would be merged into one result... but that would
require... well, all factors considered, a time travel machine and way
to encourage cooperation between the USL and BSD guys prior to 4.3
Reno or so.

Wes

On 5/11/05, William A. Rowe, Jr. <wrowe@rowe-clan.net> wrote:
> IIUC, if you look, there are groups of status results under
> a single case.  This is especially true on OS/X and Win32.
> 
> But even on unix; consider
> 
> /** operation would block */
> #if !defined(EWOULDBLOCK) || !defined(EAGAIN)
> #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
> #elif (EWOULDBLOCK == EAGAIN)
> #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)
> #else
> #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \
>                                       || (s) == EWOULDBLOCK)
> #endif
> 
> which deals with this fundemental discrepancy between implementations.
> 
> At 08:38 PM 5/11/2005, Wesley W. Garland wrote:
> >Aside from stylistic consistency, I can't see a compelling reason for
> >using the APR_STATUS_IS_* macro group -- and I think a viable case
> >could be made for avoiding them entirely for a fresh codebase. (For
> >example, I have 49,773 lines of apr-centric application code here...
> >and zero lines where APR_STATUS_IS_* appears).
> >
> >If I was working on PERL APR:: bindings, I would choose whatever is
> >the best expression for the language. Not knowing PERL, I can't really
> >comment there.
> >
> >For what it's worth, I feel fairly strong about using two types of return calls:
> >
> >1. check against != APR_SUCCESS
> >2. check using switch() with a default: case
> >
> >...and I really hate unnecessary macros.
> >
> >But this is more of a religious discussion than an APR discussion, so
> >I won't expound further. :)
> >
> >Wes
> >
> >On 5/8/05, Randy Kobes <randy@theoryx5.uwinnipeg.ca> wrote:
> >> mod_perl 2 supplies some APR::* modules for binding to apr,
> >> and a question has arisen regarding checking error codes
> >> against the appropriate APR_* constants. In apr_errno.h
> >> there are warnings about using the corresponding
> >> APR_STATUS_IS_* macros, as there could be more than one
> >> variant satisfying an error condition (eg,
> >> APR_STATUS_IS_ENOENT). There are a number of cases though
> >> for which at present there's only one such condition (eg,
> >> APR_STATUS_IS_EOF). What we were wondering is if the
> >> APR_STATUS_IS_* macros are still strongly recommended to use
> >> in cases where there is only one variant? Or, for such
> >> cases, has common useage become just to compare against the
> >> corresponding APR_* constant (eg, APR_EOF)? Thanks very
> >> much.
> >>
> >> --
> >> best regards,
> >> randy kobes
> >>
> >
> >
> >--
> >Wesley W. Garland
> >Director, Product Development
> >PageMail, Inc.
> >+1 613 542 2787 x 102
> 
> 


-- 
Wesley W. Garland
Director, Product Development
PageMail, Inc.
+1 613 542 2787 x 102

Mime
View raw message