dougm 01/04/19 10:38:16 Modified: xs/APR/Bucket APR__Bucket.h Log: proper implementation of APR::Bucket->read Revision Changes Path 1.2 +20 -11 modperl-2.0/xs/APR/Bucket/APR__Bucket.h Index: APR__Bucket.h =================================================================== RCS file: /home/cvs/modperl-2.0/xs/APR/Bucket/APR__Bucket.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- APR__Bucket.h 2001/04/18 04:43:44 1.1 +++ APR__Bucket.h 2001/04/19 17:38:12 1.2 @@ -12,24 +12,33 @@ return modperl_bucket_sv_create(aTHX_ sv, offset, len); } -static MP_INLINE const char *mpxs_APR__Bucket_read(apr_bucket *bucket, - apr_ssize_t wanted) +/* this is just so C::Scan will pickup the prototype */ +static MP_INLINE apr_status_t modperl_bucket_read(apr_bucket *bucket, + const char **str, + apr_size_t *len, + apr_read_type_e block) { + return apr_bucket_read(bucket, str, len, block); +} + +static MP_INLINE apr_status_t mpxs_modperl_bucket_read(pTHX_ + apr_bucket *bucket, + SV *buffer, + apr_read_type_e block) +{ int rc; apr_ssize_t len; const char *str; - rc = apr_bucket_read(bucket, &str, &len, wanted); + rc = modperl_bucket_read(bucket, &str, &len, block); - if ((rc != APR_SUCCESS) || !str) { - if (rc != APR_EOF) { - /* XXX: croak */ - } - return NULL; - } - else { - return str; + if ((rc != APR_SUCCESS) && (rc != APR_EOF)) { + /* XXX: croak ? */ } + + sv_setpvn(buffer, str, len); + + return rc; } static MP_INLINE int mpxs_APR__Bucket_is_eos(apr_bucket *bucket)