Marc M. Adkins wrote:
On Sunday 02 May 2004 04:13 pm, Stas Bekman wrote:

Really I was looking at some place where I can define my own map of
code/string pairs and still reuse apr_strerror. I suppose the right way to
go is to define a wrapper function:

char * my_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)
{
    if (statcode < APR_OS_START_USERERR) {
        return apr_strerror(statcode, buf, bufsize);
    }
    else {
        /* handle custom errors here */
    }
}

Is that the right way to go?


I can't speak for the architects of APR but this is what I ended up doing. It doesn't feel like an optimal solution, really. What about people building on your library, what do they do? But it is very similar to other libraries I have used over the years in this respect.

My code ended up looking like:

/* In my include file... */
#define MY_OS_START_ERROR      APR_OS_START_USERERR
#define MY_OS_START_USERERR  (APR_OS_START_USERERR + 500)

/* In the related source file:
char *my_strerror (/* ... */)
{
    if (statcode < MY_OS_START_ERROR) {
        return apr_strerror(/* ... */);
    } else if (statcode < MY_OS_START_USERERR) {
        /* custom errors from my library */
    } else if (statcode < APR_OS_START_CANONERR) {
        /* don't know what this is, throw impossible error code string */
    } else {
       return apr_strerror(/* ... */);
    }
}

It's been awhile since I wrote this code but I think the idea was to provide a higher-level library than mine with a way to have it's own errors which would start at MY_OS_START_USERERR just like mine started at APR_OS_START_USERERR.

Sounds good to me, Marc. Thanks for the sample code and the feedback!

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to