dougm 01/10/08 14:09:08
Modified: src/modules/perl modperl_perl_global.c
Log:
remove hardwire references to MP_perl_global_entries[]; making it possible to use a
different table
Revision Changes Path
1.9 +23 -18 modperl-2.0/src/modules/perl/modperl_perl_global.c
Index: modperl_perl_global.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- modperl_perl_global.c 2001/10/07 22:07:15 1.8
+++ modperl_perl_global.c 2001/10/08 21:09:08 1.9
@@ -245,7 +245,7 @@
#define MP_GLOBAL_OFFSET(m) \
STRUCT_OFFSET(modperl_perl_globals_t, m)
-static modperl_perl_global_entry_t modperl_perl_global_entries[] = {
+static modperl_perl_global_entry_t MP_perl_global_entries[] = {
{"END", MP_GLOBAL_OFFSET(end), MP_GLOBAL_AVCV}, /* END */
{"ENV", MP_GLOBAL_OFFSET(env), MP_GLOBAL_GVHV}, /* %ENV */
{"INC", MP_GLOBAL_OFFSET(inc), MP_GLOBAL_GVAV}, /* @INC */
@@ -262,20 +262,19 @@
modperl_perl_global_##type##_restore( \
aTHX_ (modperl_perl_global_##type##_t *)&(*ptr))
-#define MP_dGLOBAL_PTR(globals, i) \
+#define MP_dGLOBAL_PTR(globals, entries) \
apr_uint64_t **ptr = (apr_uint64_t **) \
- ((char *)globals + (int)(long)modperl_perl_global_entries[i].offset)
+ ((char *)globals + (int)(long)entries->offset)
-static void modperl_perl_global_save(pTHX_ modperl_perl_globals_t *globals)
+static void modperl_perl_global_save(pTHX_ modperl_perl_globals_t *globals,
+ modperl_perl_global_entry_t *entries)
{
- int i;
-
modperl_perl_global_init(aTHX_ globals);
- for (i=0; modperl_perl_global_entries[i].name; i++) {
- MP_dGLOBAL_PTR(globals, i);
+ while (entries->name) {
+ MP_dGLOBAL_PTR(globals, entries);
- switch (modperl_perl_global_entries[i].type) {
+ switch (entries->type) {
case MP_GLOBAL_AVCV:
MP_PERL_GLOBAL_SAVE(avcv, ptr);
break;
@@ -291,18 +290,19 @@
case MP_GLOBAL_SVPV:
MP_PERL_GLOBAL_SAVE(svpv, ptr);
break;
- };
+ }
+
+ entries++;
}
}
-static void modperl_perl_global_restore(pTHX_ modperl_perl_globals_t *globals)
+static void modperl_perl_global_restore(pTHX_ modperl_perl_globals_t *globals,
+ modperl_perl_global_entry_t *entries)
{
- int i;
+ while (entries->name) {
+ MP_dGLOBAL_PTR(globals, entries);
- for (i=0; modperl_perl_global_entries[i].name; i++) {
- MP_dGLOBAL_PTR(globals, i);
-
- switch (modperl_perl_global_entries[i].type) {
+ switch (entries->type) {
case MP_GLOBAL_AVCV:
MP_PERL_GLOBAL_RESTORE(avcv, ptr);
break;
@@ -319,17 +319,22 @@
MP_PERL_GLOBAL_RESTORE(svpv, ptr);
break;
}
+
+ entries++;
}
}
void modperl_perl_global_request_save(pTHX_ request_rec *r)
{
MP_dRCFG;
- modperl_perl_global_save(aTHX_ &rcfg->perl_globals);
+ modperl_perl_global_save(aTHX_ &rcfg->perl_globals,
+ MP_perl_global_entries);
}
void modperl_perl_global_request_restore(pTHX_ request_rec *r)
{
MP_dRCFG;
- modperl_perl_global_restore(aTHX_ &rcfg->perl_globals);
+ modperl_perl_global_restore(aTHX_ &rcfg->perl_globals,
+ MP_perl_global_entries);
+
}