You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2003/06/29 05:41:17 UTC
cvs commit: httpd-apreq-2/src apreq_params.c apreq_params.h apreq_parsers.h
joes 2003/06/28 20:41:17
Modified: build xsbuilder.pl
glue/perl/xsbuilder/Apache/Cookie Apache__Cookie.h
glue/perl/xsbuilder/Apache/Request Apache__Request.h
Request_pm
glue/perl/xsbuilder/maps apreq_functions.map
src apreq_params.c apreq_params.h apreq_parsers.h
Log:
s/read_bytes/read_ahead/ in apreq_cfg_t,added apreq_request_config & XS wrapper. Modified xsbuilder.pl to allow it to parse the header files in glue/perl/xsbuilder (mainly hoping this will eventually generate better pdd/pod)
Revision Changes Path
1.7 +10 -6 httpd-apreq-2/build/xsbuilder.pl
Index: xsbuilder.pl
===================================================================
RCS file: /home/cvs/httpd-apreq-2/build/xsbuilder.pl,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- xsbuilder.pl 12 Jun 2003 05:55:32 -0000 1.6
+++ xsbuilder.pl 29 Jun 2003 03:41:17 -0000 1.7
@@ -48,7 +48,10 @@
my $mp2_typemaps = Apache::Build->new->typemaps;
read DATA, my $grammar, -s DATA;
-my %c_macro_cache;
+my %c_macro_cache = (
+ XS => sub {s/XS\s*\(([^)]+)\)/void $1()/g},
+
+);
sub c_macro
{
return $c_macro_cache{"@_"} if exists $c_macro_cache{"@_"};
@@ -77,11 +80,12 @@
package My::ParseSource;
+my @dirs = ("$base_dir/src", "$base_dir/glue/perl/xsbuilder");
use base qw/ExtUtils::XSBuilder::ParseSource/;
__PACKAGE__->$_ for shift || ();
-sub package {'Apache::Request'}
-
+sub package {'Apache::libapreq'}
+sub unwanted_includes {["apreq_tables.h"]}
# ParseSource.pm v 0.23 bug: line 214 should read
# my @dirs = @{$self->include_dirs};
# for now, we override it here just to work around the bug
@@ -112,8 +116,7 @@
return $self->{includes} = $self -> sort_includes (\@includes) ;
}
-
-sub include_dirs {["$base_dir/src",]}# "$base_dir/glue/perl/xsinclude"]}
+sub include_dirs {\@dirs}
sub preprocess
{
@@ -126,6 +129,7 @@
::c_macro("APREQ_DECLARE_PARSER", "apreq_parsers.h")->();
::c_macro("APREQ_DECLARE_LOG", "apreq_env.h")->();
::c_macro("APR_DECLARE")->();
+ ::c_macro("XS")-> ();
}
}
@@ -155,7 +159,7 @@
package My::WrapXS;
-
+pop @dirs; # drop mod_h directories- WrapXS takes care of those
use base qw/ExtUtils::XSBuilder::WrapXS/;
our $VERSION = '0.1';
__PACKAGE__ -> $_ for @ARGV;
1.11 +14 -1 httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie/Apache__Cookie.h
Index: Apache__Cookie.h
===================================================================
RCS file: /home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie/Apache__Cookie.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Apache__Cookie.h 28 Jun 2003 17:51:38 -0000 1.10
+++ Apache__Cookie.h 29 Jun 2003 03:41:17 -0000 1.11
@@ -58,6 +58,10 @@
#define apreq_xs_cookie2sv(c,class) apreq_xs_2sv(c,class)
#define apreq_xs_sv2cookie(sv) ((apreq_cookie_t *)SvIVX(SvRV(sv)))
+/**
+ * env
+ * @param The CooKIE
+ */
APREQ_XS_DEFINE_ENV(cookie);
APREQ_XS_DEFINE_ENV(jar);
APREQ_XS_DEFINE_MAKE(cookie);
@@ -83,7 +87,10 @@
APREQ_XS_DEFINE_GET(jar, TABLE_PKG, cookie, COOKIE_PKG, 1);
APREQ_XS_DEFINE_GET(table, TABLE_PKG, cookie, COOKIE_PKG, 1);
-
+/**
+ *Returns serialized version of cookie.
+ *@param $cookie cookie
+ */
static XS(apreq_xs_cookie_as_string)
{
dXSARGS;
@@ -101,6 +108,12 @@
ST(0) = sv_2mortal(sv);
XSRETURN(1);
}
+
+/**
+ * Cookie exipiration time. Depends on cookie version.
+ * @param cookie
+ * @return expiration date.
+ */
static XS(apreq_xs_cookie_expires)
{
1.13 +24 -0 httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Apache__Request.h
Index: Apache__Request.h
===================================================================
RCS file: /home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Apache__Request.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Apache__Request.h 27 Jun 2003 18:23:18 -0000 1.12
+++ Apache__Request.h 29 Jun 2003 03:41:17 -0000 1.13
@@ -180,3 +180,27 @@
XSRETURN_UNDEF;
}
+
+static XS(apreq_xs_request_config)
+{
+ dXSARGS;
+ apreq_request_t *req;
+ apr_status_t status = APR_SUCCESS;
+ int j = 1;
+ if (items == 0)
+ XSRETURN_UNDEF;
+ if (!SvROK(ST(0)))
+ Perl_croak(aTHX_ "usage: $req->config(@settings)");
+
+ req = apreq_xs_sv2(request,ST(0));
+
+ for (j = 1; j + 1 < items; j += 2) {
+ STRLEN alen, vlen;
+ const char *attr = SvPV(ST(j),alen), *val = SvPV(ST(j+1),vlen);
+ status = apreq_request_config(req, attr, alen, val, vlen);
+ if (status != APR_SUCCESS)
+ break;
+ }
+ XSRETURN_IV(status);
+}
+
1.7 +0 -1 httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Request_pm
Index: Request_pm
===================================================================
RCS file: /home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Request_pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Request_pm 24 Jun 2003 22:27:44 -0000 1.6
+++ Request_pm 29 Jun 2003 03:41:17 -0000 1.7
@@ -13,7 +13,6 @@
package Apache::Request;
push our(@ISA), __PACKAGE__ -> env;
-sub config {}
sub new {
my $class = shift;
my $env = shift;
1.11 +1 -0 httpd-apreq-2/glue/perl/xsbuilder/maps/apreq_functions.map
Index: apreq_functions.map
===================================================================
RCS file: /home/cvs/httpd-apreq-2/glue/perl/xsbuilder/maps/apreq_functions.map,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- apreq_functions.map 27 Jun 2003 16:21:03 -0000 1.10
+++ apreq_functions.map 29 Jun 2003 03:41:17 -0000 1.11
@@ -11,6 +11,7 @@
DEFINE_args | apreq_xs_args_get |
DEFINE_body | apreq_xs_body_get |
DEFINE_upload | apreq_xs_upload_get |
+ DEFINE_config | apreq_xs_request_config |
MODULE=Apache::Request PACKAGE=Apache::Request::Table PREFIX=Apache__Request__Table_
DEFINE_get | apreq_xs_table_get |
1.28 +63 -3 httpd-apreq-2/src/apreq_params.c
Index: apreq_params.c
===================================================================
RCS file: /home/cvs/httpd-apreq-2/src/apreq_params.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- apreq_params.c 28 Jun 2003 17:51:38 -0000 1.27
+++ apreq_params.c 29 Jun 2003 03:41:17 -0000 1.28
@@ -60,7 +60,7 @@
#include "apreq_parsers.h"
#include "apreq_env.h"
#include "apr_strings.h"
-
+#include "apr_lib.h"
/** default parser configuration */
@@ -182,8 +182,8 @@
if (val == NULL) {
apreq_cfg_t *cfg = req->cfg;
- if (cfg && cfg->read_bytes) {
- apreq_env_read(req->env, APR_NONBLOCK_READ, cfg->read_bytes);
+ if (cfg && cfg->read_ahead) {
+ apreq_env_read(req->env, APR_NONBLOCK_READ, cfg->read_ahead);
val = apr_table_get(req->body, name);
}
}
@@ -365,4 +365,64 @@
return NULL;
apr_table_do(upload_get, ¶m, req->body, key, NULL);
return param;
+}
+
+APREQ_DECLARE(apr_status_t)
+ apreq_request_config(apreq_request_t *req,
+ const char *attr, apr_size_t alen,
+ const char *val, apr_size_t vlen)
+{
+ apreq_cfg_t *cfg = req->cfg;
+ apr_pool_t *p;
+
+ if (alen < 2)
+ return APR_BADARG;
+
+ if ( attr[0] == '-' || attr[0] == '$' ) {
+ ++attr;
+ --alen;
+ }
+
+ switch (apr_tolower(*attr)) {
+
+ case 'p': /* POST_MAX */
+ cfg->max_len = apreq_atoi64f(val);
+ break;
+
+ case 'd': /* DISABLE_UPLOADS */
+ while (!apr_isdigit(*val)) {
+ if (vlen == 0)
+ return APR_BADARG;
+ ++val;
+ --vlen;
+ }
+ cfg->disable_uploads = *val - '0';
+ break;
+
+ case 'f': /* FIELD_LIMIT */
+ cfg->max_fields = apreq_atoi64f(val);
+ break;
+
+ case 'b': /* BRIGADE_LIMIT */
+ cfg->max_brigade_len = apreq_atoi64f(val);
+ break;
+
+ case 'r': /* READ_AHEAD */
+ cfg->read_ahead = apreq_atoi64f(val);
+ break;
+
+ case 't': /* TEMP_DIR */
+ p = apreq_env_pool(req->env);
+ cfg->temp_dir = (vlen ? apr_pstrmemdup(p,val,vlen) : NULL);
+ break;
+
+ case 'u': /* UPLOAD_HOOK */
+ /* XXX not implemented yet */
+
+ default:
+ return APR_ENOTIMPL;
+
+ };
+
+ return APR_SUCCESS;
}
1.23 +4 -0 httpd-apreq-2/src/apreq_params.h
Index: apreq_params.h
===================================================================
RCS file: /home/cvs/httpd-apreq-2/src/apreq_params.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- apreq_params.h 28 Jun 2003 17:51:38 -0000 1.22
+++ apreq_params.h 29 Jun 2003 03:41:17 -0000 1.23
@@ -243,6 +243,10 @@
APREQ_DECLARE(apreq_param_t *) apreq_upload(const apreq_request_t *req,
const char *key);
+APREQ_DECLARE(apr_status_t)
+ apreq_request_config(apreq_request_t *req,
+ const char *attr, apr_size_t alen,
+ const char *val, apr_size_t vlen);
/** @} */
#ifdef __cplusplus
1.19 +1 -1 httpd-apreq-2/src/apreq_parsers.h
Index: apreq_parsers.h
===================================================================
RCS file: /home/cvs/httpd-apreq-2/src/apreq_parsers.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- apreq_parsers.h 27 Jun 2003 18:23:18 -0000 1.18
+++ apreq_parsers.h 29 Jun 2003 03:41:17 -0000 1.19
@@ -82,7 +82,7 @@
apr_off_t max_len;
apr_size_t max_brigade_len; /* in-memory cutoff */
int max_fields;
- int read_bytes; /* prefetch length */
+ int read_ahead; /* prefetch length */
int disable_uploads;
char *temp_dir;
} apreq_cfg_t;