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)