ben         99/07/10 11:58:17

  Modified:    mpm/src/include ap_hooks.h
  Log:
  Use arrays for hooks.
  
  Revision  Changes    Path
  1.4       +12 -7     apache-2.0/mpm/src/include/ap_hooks.h
  
  Index: ap_hooks.h
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/include/ap_hooks.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ap_hooks.h        1999/07/10 13:32:46     1.3
  +++ ap_hooks.h        1999/07/10 18:58:17     1.4
  @@ -10,33 +10,38 @@
   typedef struct _LINK_##name \
       { \
       HOOK_##name *pFunc; \
  -    struct _LINK_##name *pNext; \
       } LINK_##name;
   
   #define HOOK_STRUCT(members) \
   static struct { members } _hooks;
   
   #define HOOK_LINK(name) \
  -    LINK_##name *link_##name;
  +    array_header *link_##name;
   
   #define 
IMPLEMENT_HOOK_BASE(ret,rv_decl,sv,rv,name,args,args2,run_all,term1,term2,rv_final)
 \
   void ap_hook_##name(HOOK_##name *pf) \
       { \
  -    LINK_##name *pHook=ap_palloc(g_pHookPool,sizeof(LINK_##name)); \
  -    pHook->pNext=_hooks.link_##name; \
  +    LINK_##name *pHook; \
  +    if(!_hooks.link_##name) \
  +     _hooks.link_##name=ap_make_array(g_pHookPool,1,sizeof(LINK_##name)); \
  +    pHook=ap_push_array(_hooks.link_##name); \
       pHook->pFunc=pf; \
  -    _hooks.link_##name=pHook; \
       if(g_bDebugHooks) \
        puts("  Hooked " #name); \
       } \
   ret ap_run_##name args \
       { \
       LINK_##name *pHook; \
  +    int n; \
       rv_decl \
  +\
  +    if(!_hooks.link_##name) \
  +     return rv_final; \
   \
  -    for(pHook=_hooks.link_##name ; pHook ; pHook=pHook->pNext) \
  +    pHook=(LINK_##name *)_hooks.link_##name->elts; \
  +    for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
        { \
  -     sv pHook->pFunc args2; \
  +     sv pHook[n].pFunc args2; \
   \
        if(term1 && (!run_all || term2)) \
            return rv; \
  
  
  

Reply via email to