cvs commit: modperl-2.0/src/modules/perl modperl_mgv.c modperl_util.c modperl_util.h

2001-10-12 Thread dougm

dougm   01/10/12 20:22:15

  Modified:src/modules/perl modperl_mgv.c modperl_util.c modperl_util.h
  Log:
  making modperl_perl_hv_fetch_he a public function
  
  Revision  ChangesPath
  1.15  +0 -33 modperl-2.0/src/modules/perl/modperl_mgv.c
  
  Index: modperl_mgv.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_mgv.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- modperl_mgv.c 2001/04/25 03:13:58 1.14
  +++ modperl_mgv.c 2001/10/13 03:22:15 1.15
  @@ -17,39 +17,6 @@
   #define modperl_mgv_new_namen(mgv, p, n) \
   modperl_mgv_new_w_name(mgv, p, n, 0)
   
  -/*
  - * similar to hv_fetch_ent, but takes string key and key len rather than SV
  - * also skips magic and utf8 fu, since we are only dealing with symbol tables
  - */
  -static HE *S_hv_fetch_he(pTHX_ HV *hv,
  - register char *key,
  - register I32 klen,
  - register U32 hash)
  -{
  -register XPVHV *xhv;
  -register HE *entry;
  -
  -xhv = (XPVHV *)SvANY(hv);
  -if (!xhv->xhv_array) {
  -return 0;
  -}
  -entry = ((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max];
  -
  -for (; entry; entry = HeNEXT(entry)) {
  -if (HeHASH(entry) != hash)
  -continue;
  -if (HeKLEN(entry) != klen)
  -continue;
  -if (HeKEY(entry) != key && memNE(HeKEY(entry),key,klen))
  -continue;
  -return entry;
  -}
  -
  -return 0;
  -}
  -
  -#define hv_fetch_he(hv,k,l,h) S_hv_fetch_he(aTHX_ hv,k,l,h)
  -
   int modperl_mgv_equal(modperl_mgv_t *mgv1,
 modperl_mgv_t *mgv2)
   {
  
  
  
  1.26  +35 -0 modperl-2.0/src/modules/perl/modperl_util.c
  
  Index: modperl_util.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- modperl_util.c2001/10/08 23:34:07 1.25
  +++ modperl_util.c2001/10/13 03:22:15 1.26
  @@ -399,6 +399,41 @@
   }
   }
   
  +/*
  + * similar to hv_fetch_ent, but takes string key and key len rather than SV
  + * also skips magic and utf8 fu, since we are only dealing with internal tables
  + */
  +HE *modperl_perl_hv_fetch_he(pTHX_ HV *hv,
  + register char *key,
  + register I32 klen,
  + register U32 hash)
  +{
  +register XPVHV *xhv;
  +register HE *entry;
  +
  +xhv = (XPVHV *)SvANY(hv);
  +if (!xhv->xhv_array) {
  +return 0;
  +}
  +
  +entry = ((HE**)xhv->xhv_array)[hash & (I32)xhv->xhv_max];
  +
  +for (; entry; entry = HeNEXT(entry)) {
  +if (HeHASH(entry) != hash) {
  +continue;
  +}
  +if (HeKLEN(entry) != klen) {
  +continue;
  +}
  +if (HeKEY(entry) != key && memNE(HeKEY(entry), key, klen)) {
  +continue;
  +}
  +return entry;
  +}
  +
  +return 0;
  +}
  +
   void modperl_perl_call_list(pTHX_ AV *subs, const char *name)
   {
   I32 i, oldscope = PL_scopestack_ix;
  
  
  
  1.25  +8 -0  modperl-2.0/src/modules/perl/modperl_util.h
  
  Index: modperl_util.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- modperl_util.h2001/10/08 23:34:07 1.24
  +++ modperl_util.h2001/10/13 03:22:15 1.25
  @@ -68,6 +68,14 @@
   
   MP_INLINE void modperl_perl_av_push_elts_ref(pTHX_ AV *dst, AV *src);
   
  +HE *modperl_perl_hv_fetch_he(pTHX_ HV *hv,
  + register char *key,
  + register I32 klen,
  + register U32 hash);
  +
  +#define hv_fetch_he(hv,k,l,h) \
  +modperl_perl_hv_fetch_he(aTHX_ hv, k, l, h)
  +
   void modperl_perl_call_list(pTHX_ AV *subs, const char *name);
   
   void modperl_perl_exit(pTHX_ int status);
  
  
  



cvs commit: modperl-2.0/src/modules/perl modperl_mgv.c modperl_util.c modperl_util.h

2001-04-24 Thread dougm

dougm   01/04/24 20:13:59

  Modified:src/modules/perl modperl_mgv.c modperl_util.c modperl_util.h
  Log:
  be less noisy about failed requires if our last guess succeeds
  
  Revision  ChangesPath
  1.14  +14 -3 modperl-2.0/src/modules/perl/modperl_mgv.c
  
  Index: modperl_mgv.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_mgv.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- modperl_mgv.c 2001/04/19 21:26:35 1.13
  +++ modperl_mgv.c 2001/04/25 03:13:58 1.14
  @@ -291,7 +291,7 @@
   MP_TRACE_h(MP_FUNC,
  "package %s not defined, attempting to load\n", name);
   
  -if (modperl_require_module(aTHX_ name)) {
  +if (modperl_require_module(aTHX_ name, FALSE)) {
   MP_TRACE_h(MP_FUNC, "loaded %s package\n", name);
   if (!(stash = gv_stashpv(name, FALSE))) {
   MP_TRACE_h(MP_FUNC, "%s package still does not exist\n",
  @@ -300,6 +300,8 @@
   }
   }
   else {
  +I32 errlen = 0;
  +char *errpv;
   int ix = ap_rind(name, ':');
   stash = Nullhv;
   
  @@ -311,13 +313,22 @@
   char *try_package = apr_pstrndup(p, name, ix-1);
   handler_name = apr_pstrdup(p, name + ix + 1);
   
  -if (modperl_require_module(aTHX_ try_package)) {
  +/* if this fails we want to log $@ from failure above */
  +errlen = SvCUR(ERRSV);
  +errpv  = apr_pstrndup(p, SvPVX(ERRSV), errlen);
  +
  +if (modperl_require_module(aTHX_ try_package, FALSE)) {
   MP_TRACE_h(MP_FUNC, "loaded %s package\n", try_package);
   stash = gv_stashpv(try_package, FALSE);
   }
   }
   
   if (!stash) {
  +if (errlen) {
  +sv_setpvn(ERRSV, errpv, errlen);
  +}
  +(void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR,
  +NULL, NULL);
   MP_TRACE_h(MP_FUNC, "failed to load %s package\n", name);
   return 0;
   }
  @@ -385,7 +396,7 @@
   char *package =
   modperl_mgv_as_string(aTHX_ symbol, p, 1);
   
  -if (modperl_require_module(aTHX_ package)) {
  +if (modperl_require_module(aTHX_ package, TRUE)) {
   MP_TRACE_h(MP_FUNC, "reloaded %s for server %s\n",
  package, modperl_server_desc(s, p));
   return TRUE;
  
  
  
  1.8   +5 -2  modperl-2.0/src/modules/perl/modperl_util.c
  
  Index: modperl_util.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- modperl_util.c2001/04/20 01:57:25 1.7
  +++ modperl_util.c2001/04/25 03:13:59 1.8
  @@ -1,6 +1,6 @@
   #include "mod_perl.h"
   
  -int modperl_require_module(pTHX_ const char *pv)
  +int modperl_require_module(pTHX_ const char *pv, int logfailure)
   {
   SV *sv;
   
  @@ -15,7 +15,10 @@
   POPSTACK;
   
   if (SvTRUE(ERRSV)) {
  -(void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR, NULL, NULL);
  +if (logfailure) {
  +(void)modperl_errsv(aTHX_ HTTP_INTERNAL_SERVER_ERROR,
  +NULL, NULL);
  +}
   return FALSE;
   }
   
  
  
  
  1.9   +1 -1  modperl-2.0/src/modules/perl/modperl_util.h
  
  Index: modperl_util.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_util.h2001/04/20 01:57:25 1.8
  +++ modperl_util.h2001/04/25 03:13:59 1.9
  @@ -27,7 +27,7 @@
   
   int modperl_errsv(pTHX_ int status, request_rec *r, server_rec *s);
   
  -int modperl_require_module(pTHX_ const char *pv);
  +int modperl_require_module(pTHX_ const char *pv, int logfailure);
   
   char *modperl_server_desc(server_rec *s, apr_pool_t *p);