> On Mon, 23 Jul 2001, Ryan Bloom wrote:
>
> > > Those lines concern the mode variable into the bucket read functions.
> > > apr_util has BLOCK_READ and NONBLOCK_READ. The filters have similar
> > > (but not exactly the same) names and honor a third value PEEK. IIRC,
> > > most compilers start enums at 0 - so I doubt the mismatch is hurting
> > > us as long as we don't pass PEEK to the buckets. It does look like
> > > the filter code (ap_http_filter) is using the PEEK enum for
> > > keepalive/pipelining detection (not being passed to the buckets
> > > though). Since we are using the PEEK value, I don't think we can
> > > just toss the ap_input_mode_t enum.
> >
> > This was done specifically because of the way enums work in C. We
> > need both enums, because filters have more modes than buckets, and
> > filters are a part of Apache, whereas buckets are a part of APR-util.
> > Not much we can do about this, other than to lower the warning level,
> > or cast.
>
> I've brought this up before and don't remember getting any response... so
> anything is better than what's there now as far as I'm concerned. My
> vote: officially santion using a cast to get rid of the warning, document
> the dependency heavily in the header file, and change the places in Apache
> where a conditional is used to do the conversion to a simple cast.
If the two are so dependent, this should be reflected in the ap_input_mode_t
enum like so IMHO (this ofcourse next to the documentation as suggested
by Cliff):
typedef enum {
AP_MODE_BLOCKING = APR_BLOCK_READ,
AP_MODE_NONBLOCKING = APR_NONBLOCK_READ,
AP_MODE_PEEK
} ap_input_mode_t;
Sander