You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2002/01/23 11:11:35 UTC

cvs commit: embperl ep2.h epcache.c epdat2.h epmain.c epprovider.c

richter     02/01/23 02:11:35

  Modified:    .        Tag: Embperl2c ep2.h epcache.c epdat2.h epmain.c
                        epprovider.c
  Log:
  
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.26  +12 -8     embperl/Attic/ep2.h
  
  Index: ep2.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/ep2.h,v
  retrieving revision 1.1.2.25
  retrieving revision 1.1.2.26
  diff -u -r1.1.2.25 -r1.1.2.26
  --- ep2.h	17 Jan 2002 23:16:17 -0000	1.1.2.25
  +++ ep2.h	23 Jan 2002 10:11:35 -0000	1.1.2.26
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: ep2.h,v 1.1.2.25 2002/01/17 23:16:17 richter Exp $
  +#   $Id: ep2.h,v 1.1.2.26 2002/01/23 10:11:35 richter Exp $
   #
   ###################################################################################*/
   
  @@ -154,9 +154,9 @@
       int (*fNew)(req * r, tCacheItem * pOutputCache, struct tProviderClass * pProviderClass, HV * pParam)  ;  /**< called to initialize the provider */
       int (*fAppendKey)(req * r, struct tProviderClass * pProviderClass, HV * pParam, SV * pKey)  ;  /**< append the key for the cache of the provider and it's dependencies */
       int (*fUpdateParam)(req * r, struct tProvider * pProvider, HV * pParam)  ;        /**< update the parameter of the provider */
  -    int (*fGetContentSV)(req * r, struct tProvider * pProvider, SV ** pData) ;      /**< Get the content from that provider */
  -    int (*fGetContentPtr)(req * r, struct tProvider * pProvider, void ** pData) ;   /**< Get the content from that provider */
  -    int (*fGetContentIndex)(req * r, struct tProvider * pProvider, tIndex * pData) ;/**< Get the content from that provider */
  +    int (*fGetContentSV)(req * r, struct tProvider * pProvider, SV ** pData, bool bUseCache) ;      /**< Get the content from that provider */
  +    int (*fGetContentPtr)(req * r, struct tProvider * pProvider, void ** pData, bool bUseCache) ;   /**< Get the content from that provider */
  +    int (*fGetContentIndex)(req * r, struct tProvider * pProvider, tIndex * pData, bool bUseCache) ;/**< Get the content from that provider */
       int (*fFreeContent) (req * r, struct tCacheItem * pItem) ;      /**< Called to free memory of associated data */
       int (*fExpires) (req * r, struct tProvider * pProvider) ;       /**< Called to check if provider content is expired */
       } tProviderClass ;
  @@ -208,20 +208,24 @@
   
   int Cache_GetContentSV      (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ SV * *            pData) ;
  +                             /*in*/ SV * *            pData, 
  +                             /*in*/ bool              bUseCache) ;
   
   int Cache_GetContentPtr     (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ void * *          pData) ;
  +                             /*in*/ void * *          pData,
  +                             /*in*/ bool              bUseCache) ;
   
   int Cache_GetContentIndex   (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ tIndex *          pData) ;
  +                             /*in*/ tIndex *          pData,
  +                             /*in*/ bool              bUseCache) ;
   
   int Cache_GetContentSvIndex   (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
                                /*in*/ SV * *            pSVData,
  -                             /*in*/ tIndex *          pData) ;
  +                             /*in*/ tIndex *          pData,
  +                             /*in*/ bool              bUseCache) ;
   
   int Cache_ReleaseContent        (/*in*/ req *             r,
                                    /*in*/ tCacheItem        *pItem) ;
  
  
  
  1.1.2.20  +55 -19    embperl/Attic/epcache.c
  
  Index: epcache.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcache.c,v
  retrieving revision 1.1.2.19
  retrieving revision 1.1.2.20
  diff -u -r1.1.2.19 -r1.1.2.20
  --- epcache.c	18 Jan 2002 16:22:36 -0000	1.1.2.19
  +++ epcache.c	23 Jan 2002 10:11:35 -0000	1.1.2.20
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epcache.c,v 1.1.2.19 2002/01/18 16:22:36 richter Exp $
  +#   $Id: epcache.c,v 1.1.2.20 2002/01/23 10:11:35 richter Exp $
   #
   ###################################################################################*/
   
  @@ -141,7 +141,7 @@
   *                                           expires, 0 = expires never
   *                               expires_func    Perl Function (coderef) that
   *                                               is called and item is expired
  -*                                               if it returns true
  +*                                               if it returns TRUE
   *                               expires_filename    item expires when modification
   *                                                   time of file changes
   *                               cache               set to zero to not cache the content
  @@ -570,7 +570,7 @@
   *   @param  nLastUpdated    When a item on which this one depends, was 
   *                           updated after the given request count, then
   *                           this item is expired
  -*   @return                 TRUE if expired, otherwise false
  +*   @return                 TRUE if expired, otherwise FALSE
   *   \endif                                                                       
   *
   *   \_de									   
  @@ -713,7 +713,7 @@
   *   
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem which should be checked
  -*   @return                 TRUE if expired, otherwise false
  +*   @return                 TRUE if expired, otherwise FALSE
   *   \endif                                                                       
   *
   *   \_de									   
  @@ -755,7 +755,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem which should be checked
   *   @param  pData           Returns the content
  -*   @param  pLen            Returns the length
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -768,7 +768,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem welches �berpr�ft werden soll
   *   @param  pData           Liefert den Inhalt
  -*   @param  pLen            Liefert die L�nge
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -778,15 +778,16 @@
   
   int Cache_GetContentSV      (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ SV * *            pData)
  +                             /*in*/ SV * *            pData,
  +                             /*in*/ bool              bUseCache) 
   
       {
       int rc ;
   
  -    if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pSVData)
  +    if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pSVData))
           {
           if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
  -            if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData))) != ok)
  +            if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData, FALSE))) != ok)
   		{
                   Cache_FreeContent (r, pItem)  ;
   		return rc ;
  @@ -799,6 +800,12 @@
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           *pData = pItem -> pSVData  ;
  +        if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
  +            if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData, TRUE))) != ok)
  +		{
  +                Cache_FreeContent (r, pItem)  ;
  +		return rc ;
  +		}
           }
   
   
  @@ -818,6 +825,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem which should be checked
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -830,6 +838,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem welches �berpr�ft werden soll
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -839,17 +848,18 @@
   
   int Cache_GetContentPtr     (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ void * *          pData)
  +                             /*in*/ void * *          pData,
  +                             /*in*/ bool              bUseCache) 
   
       {
       int rc ;
   
  -    if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pData)
  +    if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pData))
           {
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           if (pItem -> pProvider -> pProviderClass -> fGetContentPtr)
  -            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData)) != ok)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData, FALSE)) != ok)
   		{
                   Cache_FreeContent (r, pItem)  ;
                   return rc ;
  @@ -862,6 +872,12 @@
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           *pData = pItem -> pData ;
  +        if (pItem -> pProvider -> pProviderClass -> fGetContentPtr)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData, TRUE)) != ok)
  +		{
  +                Cache_FreeContent (r, pItem)  ;
  +                return rc ;
  +		}
           }
       return ok ;
       }
  @@ -879,6 +895,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem which should be checked
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -891,6 +908,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem welches �berpr�ft werden soll
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -900,17 +918,18 @@
   
   int Cache_GetContentIndex   (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
  -                             /*in*/ tIndex *          pData)
  +                             /*in*/ tIndex *          pData,
  +                             /*in*/ bool              bUseCache) 
   
       {
       int rc ;
   
  -    if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> xData)
  +    if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> xData))
           {
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
  -            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData)) != ok)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, FALSE)) != ok)
   		{
                   Cache_FreeContent (r, pItem)  ;
                   return rc ;
  @@ -923,6 +942,12 @@
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           *pData = pItem -> xData ;
  +        if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, TRUE)) != ok)
  +		{
  +                Cache_FreeContent (r, pItem)  ;
  +                return rc ;
  +		}
           }
       return ok ;
       }
  @@ -940,6 +965,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem which should be checked
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -952,6 +978,7 @@
   *   @param  r               Embperl request record
   *   @param  pItem           CacheItem welches �berpr�ft werden soll
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -962,13 +989,14 @@
   int Cache_GetContentSvIndex   (/*in*/ req *             r,
                                /*in*/ tCacheItem        *pItem,
                                /*in*/ SV * *            pSVData,
  -                             /*in*/ tIndex *          pData)
  +                             /*in*/ tIndex *          pData,
  +                             /*in*/ bool              bUseCache) 
   
       {
       int rc ;
       bool bUpdate = FALSE ;
   
  -    if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated))
  +    if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated)))
           {
           pItem -> xData = 0 ;
           pItem -> pSVData = NULL ;
  @@ -978,7 +1006,7 @@
           if (r -> Component.Config.bDebug & dbgCache)
               lprintf (r -> pApp,  "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
  -            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData)) != ok)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, FALSE)) != ok)
   		{
                   Cache_FreeContent (r, pItem)  ;
                   return rc ;
  @@ -987,14 +1015,22 @@
           bUpdate = TRUE ;
           }
       else
  +        {
           *pData = pItem -> xData ;
  +        if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, TRUE)) != ok)
  +		{
  +                Cache_FreeContent (r, pItem)  ;
  +                return rc ;
  +		}
  +        }
   
       if (!pItem -> pSVData)
           {
           if ((r -> Component.Config.bDebug & dbgCache) && !bUpdate)
               lprintf (r -> pApp,  "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid,  pItem -> sKey) ; 
           if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
  -            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pSVData)) != ok)
  +            if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pSVData, FALSE)) != ok)
   		{
                   Cache_FreeContent (r, pItem)  ;
                   return rc ;
  
  
  
  1.1.2.14  +6 -1      embperl/Attic/epdat2.h
  
  Index: epdat2.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdat2.h,v
  retrieving revision 1.1.2.13
  retrieving revision 1.1.2.14
  diff -u -r1.1.2.13 -r1.1.2.14
  --- epdat2.h	23 Jan 2002 07:58:26 -0000	1.1.2.13
  +++ epdat2.h	23 Jan 2002 10:11:35 -0000	1.1.2.14
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdat2.h,v 1.1.2.13 2002/01/23 07:58:26 richter Exp $
  +#   $Id: epdat2.h,v 1.1.2.14 2002/01/23 10:11:35 richter Exp $
   #
   ###################################################################################*/
   
  @@ -94,6 +94,11 @@
       int     nSessionMode ;
       char *  sLog ;
       unsigned    bDebug ;
  +    char *  sMailhost ;
  +    char *  sMailhelo ;
  +    char *  sMailfrom ;
  +    bool    bMaildebug ;
  +    char *  sMailErrorsTo ;
       } tAppConfig ;
   
   
  
  
  
  1.75.4.88 +13 -11    embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.75.4.87
  retrieving revision 1.75.4.88
  diff -u -r1.75.4.87 -r1.75.4.88
  --- epmain.c	23 Jan 2002 07:58:26 -0000	1.75.4.87
  +++ epmain.c	23 Jan 2002 10:11:35 -0000	1.75.4.88
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epmain.c,v 1.75.4.87 2002/01/23 07:58:26 richter Exp $
  +#   $Id: epmain.c,v 1.75.4.88 2002/01/23 10:11:35 richter Exp $
   #
   ###################################################################################*/
   
  @@ -187,7 +187,7 @@
           case rcChdirError:		msg ="[%d]ERR:  %d: %s Cannot change to directory %s %s" ; break ; 
           case rcUnknownSyntax:		msg ="[%d]ERR:  %d: %s Unknown syntax '%s'" ; break ; 
   	
  -	default:                        msg ="[%d]ERR:  %d: %s Error %s%s" ; break ; 
  +	default:                        msg ="[%d]ERR:  %d: %s Error (no description) %s %s" ; break ; 
           }
   
       if (r && ((rc != rcPerlWarn && rc != rcEvalErr) || r -> errdat1[0] == '\0'))
  @@ -1297,12 +1297,14 @@
           { /* --- generate error page if necessary --- */
   	dSP;                            /* initialize stack pointer      */
           
  -	/* --- check if error should be mailed --- */
  -	PUSHMARK(sp);                   /* remember the stack pointer    */
  -        XPUSHs(r -> _perlsv) ;            /* push pointer to obeject */
  -        PUTBACK;
  -        perl_call_method ("MailErrorsTo", G_DISCARD) ; /* call the function             */
  -
  +        if (r -> pApp -> Config.sMailErrorsTo)
  +            {
  +            /* --- check if error should be mailed --- */
  +	    PUSHMARK(sp);                   /* remember the stack pointer    */
  +            XPUSHs(r -> _perlsv) ;            /* push pointer to obeject */
  +            PUTBACK;
  +            perl_call_method ("MailErrorsTo", G_DISCARD) ; /* call the function             */
  +            }
           
   	if (r -> Component.Config.bOptions & optReturnError)
   	    {
  @@ -1897,12 +1899,12 @@
   
       if (strncmp (r -> Component.pOutputCache -> pProvider -> sOutputType, "text/", 5) == 0)
   	{
  -	if ((rc = Cache_GetContentSV (r, r -> Component.pOutputCache, &r -> Component.pOutputSV)) != ok)
  +	if ((rc = Cache_GetContentSV (r, r -> Component.pOutputCache, &r -> Component.pOutputSV, FALSE)) != ok)
   	    return rc ;
   	}
       else if (strcmp (r -> Component.pOutputCache -> pProvider -> sOutputType, "X-Embperl/DomTree") == 0)
   	{
  -	if ((rc = Cache_GetContentIndex (r, r -> Component.pOutputCache, &r -> Component.xCurrDomTree)) != ok)
  +	if ((rc = Cache_GetContentIndex (r, r -> Component.pOutputCache, &r -> Component.xCurrDomTree, FALSE)) != ok)
   	    return rc ;
   	}
       else
  @@ -1912,7 +1914,7 @@
   	return rcTypeMismatch ;
   	}
   
  -    return rc ;
  +    return ok ;
       }
   
   
  
  
  
  1.1.2.24  +101 -60   embperl/Attic/epprovider.c
  
  Index: epprovider.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epprovider.c,v
  retrieving revision 1.1.2.23
  retrieving revision 1.1.2.24
  diff -u -r1.1.2.23 -r1.1.2.24
  --- epprovider.c	23 Jan 2002 07:58:26 -0000	1.1.2.23
  +++ epprovider.c	23 Jan 2002 10:11:35 -0000	1.1.2.24
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epprovider.c,v 1.1.2.23 2002/01/23 07:58:26 richter Exp $
  +#   $Id: epprovider.c,v 1.1.2.24 2002/01/23 10:11:35 richter Exp $
   #
   ###################################################################################*/
   
  @@ -307,7 +307,7 @@
   
       pNew = (tProviderFile *)pItem -> pProvider ;
   
  -    sFilename = GetHashValueStr (aTHX_ pParam, "filename", "") ;
  +    sFilename = GetHashValueStr (aTHX_ pParam, "filename",  r -> Component.Param.sInputfile) ;
       /* is it a relative filename? -> append path */
       if (!(sFilename[0] == '/'  
   #ifdef WIN32
  @@ -373,7 +373,7 @@
                                      /*i/o*/ SV *              pKey)
       {
       epTHX_
  -    const char * sFilename = GetHashValueStr  (aTHX_ pParam, "filename", "") ;
  +    const char * sFilename = GetHashValueStr  (aTHX_ pParam, "filename", r -> Component.Param.sInputfile) ;
       const char * sDir = "" ;
   
       /* is it a relative filename? -> append path */
  @@ -406,6 +406,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -416,6 +417,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -425,16 +427,19 @@
   
   static int ProviderFile_GetContentSV (/*in*/ req *             r,
                                /*in*/ tProvider *     pProvider,
  -                             /*in*/ SV * *              pData)
  +                             /*in*/ SV * *              pData,
  +                             /*in*/ bool                bUseCache)
   
       {
       epTHX_
       size_t nSize = pProvider -> pCache -> FileStat.st_size ;
  -    int rc ;
  +    int rc = ok ;
       
       r -> Component.sSourcefile = (char *)((tProviderFile *)pProvider) -> sFilename ;
           
  -    rc  = ReadHTML(r, (char *)((tProviderFile *)pProvider) -> sFilename, &nSize, pData) ;
  +    if (!bUseCache)
  +        rc  = ReadHTML(r, (char *)((tProviderFile *)pProvider) -> sFilename, &nSize, pData) ;
  +    
       if (rc == ok)
           {
           SvREFCNT_inc (*pData) ;
  @@ -530,7 +535,7 @@
   
       pNew = (tProviderMem *)pItem -> pProvider ;
   
  -    pNew -> sName                   = GetHashValueStrDupA (aTHX_ pParam, "name", NULL) ;
  +    pNew -> sName                   = GetHashValueStrDupA (aTHX_ pParam, "name",  r -> Component.Param.sInputfile) ;
       /*
       pNew -> nLastModified           = GetHashValueUInt       (pParam, "mtime", 0) ;
   
  @@ -587,7 +592,7 @@
                                      /*i/o*/ SV *              pKey)
       {
       epTHX_
  -    const char * sName = GetHashValueStr (aTHX_ pParam, "name", "") ;
  +    const char * sName = GetHashValueStr (aTHX_ pParam, "name",  r -> Component.Param.sInputfile) ;
       sv_catpvf (pKey, "*memory:%s", sName) ;
   
       return ok ;
  @@ -657,6 +662,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -667,6 +673,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -676,12 +683,16 @@
   
   static int ProviderMem_GetContentSV (/*in*/ req *             r,
                                /*in*/ tProvider *     pProvider,
  -                             /*in*/ SV * *              pData)
  +                             /*in*/ SV * *              pData,
  +                             /*in*/ bool                bUseCache)
   
       {
       epTHX_
  -    ((tProviderMem *)pProvider) -> nLastModifiedWhileGet = ((tProviderMem *)pProvider) -> nLastModified ; 
  -    *pData = SvREFCNT_inc(((tProviderMem *)pProvider) -> pSource) ;
  +    if (!bUseCache)
  +        {
  +        ((tProviderMem *)pProvider) -> nLastModifiedWhileGet = ((tProviderMem *)pProvider) -> nLastModified ; 
  +        *pData = SvREFCNT_inc(((tProviderMem *)pProvider) -> pSource) ;
  +        }
       return ok ;
       }
   
  @@ -927,6 +938,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -937,6 +949,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -946,7 +959,8 @@
   
   static int ProviderEpParse_GetContentIndex (/*in*/ req *             r,
                                               /*in*/ tProvider *       pProvider,
  -                                            /*in*/ tIndex *          pData)
  +                                            /*in*/ tIndex *          pData,
  +                                            /*in*/ bool              bUseCache)
   
       {
       epTHX_
  @@ -955,13 +969,16 @@
       STRLEN len ;
       SV *   pSource ;
       tCacheItem * pFileCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
  -    if ((rc = Cache_GetContentSV (r, pFileCache, &pSource)) != ok)
  +    if ((rc = Cache_GetContentSV (r, pFileCache, &pSource, bUseCache)) != ok)
           return rc ;
           
       r -> Component.pTokenTable = ((tProviderEpParse *)pProvider) -> pTokenTable ;
  -    p   = SvPV (pSource, len) ;
  -    if ((rc =  embperl_Parse (r, p, len, pData)) != ok)
  -        return rc ;
  +    if (!bUseCache)
  +        {
  +        p   = SvPV (pSource, len) ;
  +        if ((rc =  embperl_Parse (r, p, len, pData)) != ok)
  +            return rc ;
  +        }
   
       return ok ;
       }
  @@ -1084,7 +1101,7 @@
       if ((rc = Provider_NewDependOne (r, sizeof(tProviderEpCompile), "source", pItem, pProviderClass, pParam)) != ok)
           return rc ;
   
  -    if (sPackage = GetHashValueStrDupA (aTHX_ pParam, "package", NULL)) 
  +    if (sPackage = GetHashValueStrDupA (aTHX_ pParam, "package", r -> Component.Config.sPackage)) 
           {
           ((tProviderEpCompile *)(pItem -> pProvider)) -> sPackage = sPackage ;
           }
  @@ -1145,7 +1162,7 @@
       if ((rc = Cache_AppendKey (r, pParam, "source", pKey)) != ok)
           return rc;
   
  -    sv_catpvf (pKey, "*epcompile:%s", GetHashValueStr (aTHX_ pParam, "package", "")) ;
  +    sv_catpvf (pKey, "*epcompile:%s", GetHashValueStr (aTHX_ pParam, "package", r -> Component.Config.sPackage?r -> Component.Config.sPackage:"")) ;
       return ok ;
       }
   
  @@ -1163,6 +1180,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -1174,6 +1192,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -1182,8 +1201,9 @@
   
   
   static int ProviderEpCompile_GetContentIndex (/*in*/ req *             r,
  -                                            /*in*/ tProvider *       pProvider,
  -                                            /*in*/ tIndex *          pData)
  +                                            /*in*/ tProvider *         pProvider,
  +                                            /*in*/ tIndex *            pData,
  +                                            /*in*/ bool                bUseCache)
   
       {
       epTHX_
  @@ -1193,7 +1213,7 @@
       SV *         pProg = NULL ;
   
       pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
  -    if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree)) != ok)
  +    if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree, bUseCache)) != ok)
           return rc ;
           
       r -> Component.sCurrPackage =  ((tProviderEpCompile *)(pProvider)) -> sPackage  ;
  @@ -1201,16 +1221,19 @@
       r -> Component.nEvalPackage =  strlen (((tProviderEpCompile *)(pProvider)) -> sPackage)  ;
       r -> Component.sMainSub     =  ((tProviderEpCompile *)(pProvider)) -> sMainSub ;
       
  -    if ((rc =  embperl_Compile (r, xSrcDomTree, pData, &pProg )) != ok)
  +    if (!bUseCache)
           {
  -	((tProviderEpCompile *)pProvider) -> pSVData = NULL ;
  -	if (pProg)
  -	    SvREFCNT_dec (pProg) ;
  +        if ((rc =  embperl_Compile (r, xSrcDomTree, pData, &pProg )) != ok)
  +            {
  +	    ((tProviderEpCompile *)pProvider) -> pSVData = NULL ;
  +	    if (pProg)
  +	        SvREFCNT_dec (pProg) ;
   
  -	return rc ;
  -	}
  +	    return rc ;
  +	    }
   
  -    ((tProviderEpCompile *)pProvider) -> pSVData = pProg ;
  +        ((tProviderEpCompile *)pProvider) -> pSVData = pProg ;
  +        }
   
       return ok ;
       }
  @@ -1228,6 +1251,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -1248,11 +1272,13 @@
   
   static int ProviderEpCompile_GetContentSV  (/*in*/ req *             r,
                                               /*in*/ tProvider *       pProvider,
  -                                            /*in*/ SV * *            pData)
  +                                            /*in*/ SV * *            pData,
  +                                            /*in*/ bool              bUseCache)
   
       {
       epTHX_
  -    *pData = SvREFCNT_inc (((tProviderEpCompile *)pProvider) -> pSVData) ;
  +    if (!bUseCache)
  +        *pData = SvREFCNT_inc (((tProviderEpCompile *)pProvider) -> pSVData) ;
   
       return ok ;
       }
  @@ -1422,8 +1448,8 @@
       {
       epTHX_
       int          rc ;
  -    const char * sKey        = GetHashValueStr (aTHX_ pParam, "cache_key", "") ;
  -    int          bKeyOptions = GetHashValueInt (aTHX_ pParam, "cache_key_options", 15) ;
  +    const char * sKey        = GetHashValueStr (aTHX_ pParam, "cache_key", r -> Component.Config.sCacheKey) ;
  +    int          bKeyOptions = GetHashValueInt (aTHX_ pParam, "cache_key_options", r -> Component.Config.bCacheKeyOptions) ;
       CV *         pKeyCV ; 
   
       if ((rc = Cache_AppendKey (r, pParam, "source", pKey)) != ok)
  @@ -1434,6 +1460,9 @@
       if ((rc = GetHashValueCREF (r, pParam, "cache_key_func", &pKeyCV)) != ok)
           return rc ;
       
  +    if (!pKeyCV)
  +        pKeyCV = r -> Component.Config.pCacheKeyFunc ;
  +
       if (pKeyCV)
   	{
   	SV * pRet ;
  @@ -1516,6 +1545,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -1526,6 +1556,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -1535,7 +1566,8 @@
   
   static int ProviderEpRun_GetContentIndex   (/*in*/ req *             r,
                                               /*in*/ tProvider *       pProvider,
  -                                            /*in*/ tIndex *          pData)
  +                                            /*in*/ tIndex *          pData,
  +                                            /*in*/ bool              bUseCache)
   
       {
       int         rc ;
  @@ -1544,14 +1576,17 @@
   
       tCacheItem * pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
   
  -    if ((rc = Cache_GetContentSvIndex (r, pSrcCache, (SV **)&pCV, &xSrcDomTree)) != ok)
  +    if ((rc = Cache_GetContentSvIndex (r, pSrcCache, (SV **)&pCV, &xSrcDomTree, bUseCache)) != ok)
           return rc ;
           
  -    if ((rc =  embperl_Execute (r, xSrcDomTree, pCV, pData)) != ok)
  -        return rc ;
  +    if (!bUseCache)
  +        {
  +        if ((rc =  embperl_Execute (r, xSrcDomTree, pCV, pData)) != ok)
  +            return rc ;
   
  -    /* update cache parameter from source */
  -    ProviderEpRun_IsExpired  (r, pProvider) ;
  +        /* update cache parameter from source */
  +        ProviderEpRun_IsExpired  (r, pProvider) ;
  +        }
   
       return ok ;
       }
  @@ -1736,6 +1771,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Returns the content
  +*   @param  bUseCache       Set if the content should not recomputed
   *   @return                 error code
   *   \endif                                                                       
   *
  @@ -1746,6 +1782,7 @@
   *   @param  r               Embperl request record
   *   @param  pProvider       The provider record
   *   @param  pData           Liefert den Inhalt
  +*   @param  bUseCache       Gesetzt wenn der Inhalt nicht neu berechnet werden soll
   *   @return                 Fehlercode
   *   \endif                                                                       
   *                                                                          
  @@ -1755,7 +1792,8 @@
   
   static int ProviderEpToString_GetContentSV (/*in*/ req *             r,
                                               /*in*/ tProvider *       pProvider,
  -                                            /*in*/ SV * *            pData)
  +                                            /*in*/ SV * *            pData,
  +                                            /*in*/ bool              bUseCache)
   
       {
       epTHX_
  @@ -1769,32 +1807,35 @@
   
   
       pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
  -    if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree)) != ok)
  +    if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree, bUseCache)) != ok)
           return rc ;
   
  -    if (xSrcDomTree == 0)
  -	{
  -	strncpy (r -> errdat1, "EpToString source", sizeof (r -> errdat1)) ;
  -	return rcMissingInput ;
  -	}
  +    if (!bUseCache)
  +        {
  +        if (xSrcDomTree == 0)
  +	    {
  +	    strncpy (r -> errdat1, "EpToString source", sizeof (r -> errdat1)) ;
  +	    return rcMissingInput ;
  +	    }
   
           
  -    oRollbackOutput (r, NULL) ;
  -    oBegin (r) ;
  -    pDomTree = DomTree_self (xSrcDomTree) ;
  -    Node_toString (r, pDomTree, pDomTree -> xDocument, 0) ;
  -
  -    pOut = newSV (1) ;
  -    len = GetContentLength (r) + 1 ;
  -    
  -    SvGROW (pOut, len) ;
  -    pBuf = SvPVX (pOut) ;
  -    oCommitToMem (r, NULL, pBuf) ;
  -    oRollbackOutput (r, NULL) ;
  -    SvCUR_set (pOut, len - 1) ;
  -    SvPOK_on (pOut) ;
  +        oRollbackOutput (r, NULL) ;
  +        oBegin (r) ;
  +        pDomTree = DomTree_self (xSrcDomTree) ;
  +        Node_toString (r, pDomTree, pDomTree -> xDocument, 0) ;
  +
  +        pOut = newSV (1) ;
  +        len = GetContentLength (r) + 1 ;
  +    
  +        SvGROW (pOut, len) ;
  +        pBuf = SvPVX (pOut) ;
  +        oCommitToMem (r, NULL, pBuf) ;
  +        oRollbackOutput (r, NULL) ;
  +        SvCUR_set (pOut, len - 1) ;
  +        SvPOK_on (pOut) ;
   
  -    *pData = pOut ;
  +        *pData = pOut ;
  +        }
   
       return ok ;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org