richter     02/02/27 03:58:26

  Modified:    .        Tag: Embperl2c Changes.pod Embperl.pm ep2.h epcfg.h
                        epdat2.h epdom.c epdom.h epeval.c epinit.c epio.c
                        epmain.c eputil.c test.pl
               Embperl  Tag: Embperl2c Object.pm
               test/cmp Tag: Embperl2c Execute.htm getsdaturlsess.htm
                        geturlsess.htm setsdaturlsess.htm
               test/conf Tag: Embperl2c httpd.conf.src
               test/html Tag: Embperl2c exit.htm
               test/html/registry Tag: Embperl2c tied.htm
               xsbuilder/maps Tag: Embperl2c ep_structure.map
  Removed:     test/cmp2 Tag: Embperl2c tied.htm
  Log:
  session handling
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.129.4.47 +3 -0      embperl/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Changes.pod,v
  retrieving revision 1.129.4.46
  retrieving revision 1.129.4.47
  diff -u -r1.129.4.46 -r1.129.4.47
  --- Changes.pod       25 Feb 2002 11:20:25 -0000      1.129.4.46
  +++ Changes.pod       27 Feb 2002 11:58:23 -0000      1.129.4.47
  @@ -34,6 +34,9 @@
        were always ignored on the first request.
      - Renamed configuration directive EMBPERL_FILESMATCH to
        EMBPERL_URIMATCH to better describe what it is doing.
  +   - exit works now outside of [$ sub $]
  +   - New configuration directive EMBPERL_SESSION_MODE allows
  +     to configure to pass session inside of the QUERY_STRING
   
   =head1 2.0b5 (BETA) 27. Nov. 2001
   
  
  
  
  1.118.4.91 +3 -3      embperl/Embperl.pm
  
  Index: Embperl.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.pm,v
  retrieving revision 1.118.4.90
  retrieving revision 1.118.4.91
  diff -u -r1.118.4.90 -r1.118.4.91
  --- Embperl.pm        27 Feb 2002 08:19:40 -0000      1.118.4.90
  +++ Embperl.pm        27 Feb 2002 11:58:23 -0000      1.118.4.91
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Embperl.pm,v 1.118.4.90 2002/02/27 08:19:40 richter Exp $
  +#   $Id: Embperl.pm,v 1.118.4.91 2002/02/27 11:58:23 richter Exp $
   #
   ###################################################################################
   
  @@ -88,11 +88,11 @@
   
       if (!ref $param)
           {
  -        Embperl::Req::ExecuteRequest (defined(&Apache::request)?Apache -> 
request:undef, { inputfile => $param, param => [@_]}) ;
  +        Embperl::Req::ExecuteRequest (undef, { inputfile => $param, param => [@_]}) 
;
           }
       else
           {
  -        Embperl::Req::ExecuteRequest (defined(&Apache::request)?Apache -> 
request:undef, $param) ;
  +        Embperl::Req::ExecuteRequest (undef, $param) ;
           }
       }
   
  
  
  
  1.1.2.31  +3 -3      embperl/Attic/ep2.h
  
  Index: ep2.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/ep2.h,v
  retrieving revision 1.1.2.30
  retrieving revision 1.1.2.31
  diff -u -r1.1.2.30 -r1.1.2.31
  --- ep2.h     26 Feb 2002 20:14:42 -0000      1.1.2.30
  +++ ep2.h     27 Feb 2002 11:58:23 -0000      1.1.2.31
  @@ -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.30 2002/02/26 20:14:42 richter Exp $
  +#   $Id: ep2.h,v 1.1.2.31 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -289,10 +289,10 @@
   
   
   #ifdef XALAN
  -    embperl_Xalan_Init (void) ;
  +    int embperl_Xalan_Init (void) ;
   #endif
   #ifdef LIBXSLT
  -    embperl_LibXSLT_Init (void) ;
  +    int embperl_LibXSLT_Init (void) ;
   #endif
   
   
  
  
  
  1.1.2.11  +1 -1      embperl/Attic/epcfg.h
  
  Index: epcfg.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcfg.h,v
  retrieving revision 1.1.2.10
  retrieving revision 1.1.2.11
  diff -u -r1.1.2.10 -r1.1.2.11
  --- epcfg.h   26 Feb 2002 08:48:42 -0000      1.1.2.10
  +++ epcfg.h   27 Feb 2002 11:58:23 -0000      1.1.2.11
  @@ -33,6 +33,7 @@
   EPCFG_AV  (ReqConfig,     AV *,       pPathAV,         PATH, SEPARATOR) 
   EPCFG_INT (ReqConfig,     unsigned,    bDebug,        DEBUG) 
   EPCFG_INT (ReqConfig,     unsigned,    bOptions,      OPTIONS) 
  +EPCFG_INT (ReqConfig,     int   ,  nSessionMode,     SESSION_MODE) 
   #endif
   
   
  @@ -48,7 +49,6 @@
   EPCFG_STR(AppConfig,     char *,  sCookieDomain,    COOKIE_DOMAIN)
   EPCFG_STR(AppConfig,     char *,  sCookiePath,      COOKIE_PATH) 
   EPCFG_STR(AppConfig,     char *,  sCookieExpires,   COOKIE_EXPIRES) 
  -EPCFG_INT(AppConfig,     int   ,  nSessionMode,     SESSION_MODE) 
   EPCFG_STR(AppConfig,     char *,  sLog,             LOG) 
   EPCFG_INT(AppConfig,     unsigned,bDebug,           DEBUG) 
   EPCFG_INT(AppConfig,     bool,    bMaildebug,       MAILDEBUG) 
  
  
  
  1.1.2.29  +2 -2      embperl/Attic/epdat2.h
  
  Index: epdat2.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdat2.h,v
  retrieving revision 1.1.2.28
  retrieving revision 1.1.2.29
  diff -u -r1.1.2.28 -r1.1.2.29
  --- epdat2.h  26 Feb 2002 20:14:42 -0000      1.1.2.28
  +++ epdat2.h  27 Feb 2002 11:58:23 -0000      1.1.2.29
  @@ -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.28 2002/02/26 20:14:42 richter Exp $
  +#   $Id: epdat2.h,v 1.1.2.29 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -102,6 +102,7 @@
       AV *        pPathAV ;
       unsigned    bDebug ;
       unsigned    bOptions ;
  +    int         nSessionMode ;      /**< sets how to pass the session id, see 
smodeXXX constants */
       } tReqConfig ;
   
   typedef struct tReqParam
  @@ -130,7 +131,6 @@
       char *  sCookieDomain ;
       char *  sCookiePath ;
       char *  sCookieExpires ;
  -    int     nSessionMode ;
       char *  sLog ;
       unsigned    bDebug ;
       char *  sMailhost ;
  
  
  
  1.4.2.82  +126 -105  embperl/Attic/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.c,v
  retrieving revision 1.4.2.81
  retrieving revision 1.4.2.82
  diff -u -r1.4.2.81 -r1.4.2.82
  --- epdom.c   12 Feb 2002 21:02:42 -0000      1.4.2.81
  +++ epdom.c   27 Feb 2002 11:58:23 -0000      1.4.2.82
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdom.c,v 1.4.2.81 2002/02/12 21:02:42 richter Exp $
  +#   $Id: epdom.c,v 1.4.2.82 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -1373,130 +1373,143 @@
       if (nRunCheckpoint > nCompileCheckpoint)
           {
           tNodeData * pCompileNode = Node_selfLevel (a, pDomTree, 
pCheckpoints[nCompileCheckpoint].xNode, r -> Component.nCurrRepeatLevel) ;
  -        tNodeData * pRunNode     = Node_selfLevel (a, pDomTree, 
pCheckpoints[nRunCheckpoint].xNode, r -> Component.nCurrRepeatLevel) ;
  -        tNodeData * pPrevNode    = Node_selfPreviousSibling (a, pDomTree, 
pCompileNode, r -> Component.nCurrRepeatLevel) ;
  -        
  -        tNodeData * pCompileParent = NodeAttr_selfParentNode (pDomTree, 
pCompileNode, r -> Component.nCurrRepeatLevel) ;
  -        tNodeData * pRunParent     = NodeAttr_selfParentNode (pDomTree, pRunNode, r 
-> Component.nCurrRepeatLevel) ;
  -
  -        if (pPrevNode)
  -            pPrevNode = Node_selfCondCloneNode (a, pDomTree, pPrevNode, r -> 
Component.nCurrRepeatLevel) ;
  -        else
  +        if (pCheckpoints[nRunCheckpoint].xNode == -1)
               {
  -            pPrevNode = Node_selfCondCloneNode (a, pDomTree, pCompileNode, r -> 
Component.nCurrRepeatLevel) ;
  -            pPrevNode -> bFlags |= nflgIgnore ;
  -            }
  -
  -        if (pCompileParent  -> xNdx == pRunParent -> xNdx )
  -            {
  -            pRunNode = Node_selfCondCloneNode (a, pDomTree, pRunNode, r -> 
Component.nCurrRepeatLevel) ;
  -        
  -            pRunNode -> xPrev = pPrevNode -> xNdx ;
  -            pPrevNode -> xNext = pRunNode -> xNdx ;
  -         pRunNode -> bFlags  |= nflgNewLevelPrev ;
  -         pPrevNode -> bFlags |= nflgNewLevelNext ;
  -
  +            pCompileNode = Node_selfCondCloneNode (a, pDomTree, pCompileNode , r -> 
Component.nCurrRepeatLevel) ;
  +         pCompileNode -> bFlags |= nflgStopOutput ;
               if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  -                 lprintf (a, "[%d]Checkpoint: jump forward DomTree=%d Index=%d 
Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  +                 lprintf (a, "[%d]Checkpoint: stop output DomTree=%d Index=%d 
Node=%d(%d) Line=%d\n", 
                            a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  -                         pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  -                         pPrevNode -> nLinenumber, nRunCheckpoint, 
  -                         pRunNode -> xNdx,  xNode_selfLevelNull(pDomTree,pRunNode), 
  -                         pRunNode -> nLinenumber, sv_count) ; 
  -           
  +                         pCompileNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pCompileNode), 
  +                         pCompileNode -> nLinenumber) ;
  +            return ;
               }
  -        else if (pCompileParent && pRunParent)
  -            {
  -            tNodeData * pCompileParent2 = NodeAttr_selfParentNode (pDomTree, 
pCompileParent, r -> Component.nCurrRepeatLevel) ;
  -            tNodeData * pRunParent2     = NodeAttr_selfParentNode (pDomTree, 
pRunParent, r -> Component.nCurrRepeatLevel) ;
  +        else
  +            {            
  +            tNodeData * pRunNode     = Node_selfLevel (a, pDomTree, 
pCheckpoints[nRunCheckpoint].xNode, r -> Component.nCurrRepeatLevel) ;
  +            tNodeData * pPrevNode    = Node_selfPreviousSibling (a, pDomTree, 
pCompileNode, r -> Component.nCurrRepeatLevel) ;
  +        
  +            tNodeData * pCompileParent = NodeAttr_selfParentNode (pDomTree, 
pCompileNode, r -> Component.nCurrRepeatLevel) ;
  +            tNodeData * pRunParent     = NodeAttr_selfParentNode (pDomTree, 
pRunNode, r -> Component.nCurrRepeatLevel) ;
   
  -            if (pCompileParent2 && pCompileParent2 -> xNdx == pRunParent -> xNdx)
  -             {
  -             pPrevNode = Node_selfCondCloneNode (a, pDomTree, pCompileParent, r -> 
Component.nCurrRepeatLevel) ;
  -             pRunNode  = Node_selfCondCloneNode (a, pDomTree, pRunNode, r -> 
Component.nCurrRepeatLevel) ;
  -             pRunNode -> xPrev = pPrevNode -> xNdx ;
  -             pPrevNode -> xNext = pRunNode -> xNdx ;
  -             pPrevNode -> xChilds = 0 ;
  -             pRunNode -> bFlags  |= nflgNewLevelPrev ;
  -             pPrevNode -> bFlags |= nflgNewLevelNext ;
  +            if (pPrevNode)
  +                pPrevNode = Node_selfCondCloneNode (a, pDomTree, pPrevNode, r -> 
Component.nCurrRepeatLevel) ;
  +            else
  +                {
  +                pPrevNode = Node_selfCondCloneNode (a, pDomTree, pCompileNode, r -> 
Component.nCurrRepeatLevel) ;
  +                pPrevNode -> bFlags |= nflgIgnore ;
  +                }
   
  -             if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  -                 lprintf (a, "[%d]Checkpoint: jump forward last child DomTree=%d 
Index=%d Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  -                         a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  -                         pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  -                         pPrevNode -> nLinenumber, nRunCheckpoint, 
  -                         pRunNode -> xNdx,  xNode_selfLevelNull(pDomTree,pRunNode), 
  -                         pRunNode -> nLinenumber, sv_count) ; 
  -             }
  -            else if (pCompileParent2 && pRunParent2 && pCompileParent2 -> xNdx == 
pRunParent2 -> xNdx )
  +            if (pCompileParent  -> xNdx == pRunParent -> xNdx )
  +                {
  +                pRunNode = Node_selfCondCloneNode (a, pDomTree, pRunNode, r -> 
Component.nCurrRepeatLevel) ;
  +        
  +                pRunNode -> xPrev = pPrevNode -> xNdx ;
  +                pPrevNode -> xNext = pRunNode -> xNdx ;
  +             pRunNode -> bFlags  |= nflgNewLevelPrev ;
  +             pPrevNode -> bFlags |= nflgNewLevelNext ;
  +
  +                if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  +                     lprintf (a, "[%d]Checkpoint: jump forward DomTree=%d Index=%d 
Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  +                             a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  +                             pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                             pPrevNode -> nLinenumber, nRunCheckpoint, 
  +                             pRunNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                             pRunNode -> nLinenumber, sv_count) ; 
  +                           
  +                }
  +            else if (pCompileParent && pRunParent)
                   {
  -             if (pRunParent -> nType != ntypAttr && pCompileParent -> nType != 
ntypAttr) 
  +                tNodeData * pCompileParent2 = NodeAttr_selfParentNode (pDomTree, 
pCompileParent, r -> Component.nCurrRepeatLevel) ;
  +                tNodeData * pRunParent2     = NodeAttr_selfParentNode (pDomTree, 
pRunParent, r -> Component.nCurrRepeatLevel) ;
  +
  +                if (pCompileParent2 && pCompileParent2 -> xNdx == pRunParent -> 
xNdx)
                    {
  -                 pRunParent = Node_selfCondCloneNode (a, pDomTree, pRunParent, r -> 
Component.nCurrRepeatLevel) ;
  -                 pCompileParent = Node_selfCondCloneNode (a, pDomTree, 
pCompileParent, r -> Component.nCurrRepeatLevel) ;
  -                 pRunParent -> xPrev     = pCompileParent -> xNdx ;
  -                 pCompileParent -> xNext = pRunParent -> xNdx ;
  -                 pRunParent -> bFlags  |= nflgNewLevelPrev ;
  -                 pCompileParent -> bFlags |= nflgNewLevelNext ;
  +                 pPrevNode = Node_selfCondCloneNode (a, pDomTree, pCompileParent, r 
-> Component.nCurrRepeatLevel) ;
  +                 pRunNode  = Node_selfCondCloneNode (a, pDomTree, pRunNode, r -> 
Component.nCurrRepeatLevel) ;
  +                 pRunNode -> xPrev = pPrevNode -> xNdx ;
  +                 pPrevNode -> xNext = pRunNode -> xNdx ;
  +                 pPrevNode -> xChilds = 0 ;
  +                 pRunNode -> bFlags  |= nflgNewLevelPrev ;
  +                 pPrevNode -> bFlags |= nflgNewLevelNext ;
  +
  +                 if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  +                     lprintf (a, "[%d]Checkpoint: jump forward last child 
DomTree=%d Index=%d Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  +                             a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  +                             pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                             pPrevNode -> nLinenumber, nRunCheckpoint, 
  +                             pRunNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                             pRunNode -> nLinenumber, sv_count) ; 
                    }
  -             else
  -                 {
  -                 int nCompile = Attr_selfAttrNum(((tAttrData *)pCompileParent)) ;
  -                 int nRun     = Attr_selfAttrNum(((tAttrData *)pRunParent)) ;
  -                 int i ;
  +                else if (pCompileParent2 && pRunParent2 && pCompileParent2 -> xNdx 
== pRunParent2 -> xNdx )
  +                    {
  +                 if (pRunParent -> nType != ntypAttr && pCompileParent -> nType != 
ntypAttr) 
  +                     {
  +                     pRunParent = Node_selfCondCloneNode (a, pDomTree, pRunParent, 
r -> Component.nCurrRepeatLevel) ;
  +                     pCompileParent = Node_selfCondCloneNode (a, pDomTree, 
pCompileParent, r -> Component.nCurrRepeatLevel) ;
  +                     pRunParent -> xPrev     = pCompileParent -> xNdx ;
  +                     pCompileParent -> xNext = pRunParent -> xNdx ;
  +                     pRunParent -> bFlags  |= nflgNewLevelPrev ;
  +                     pCompileParent -> bFlags |= nflgNewLevelNext ;
  +                     }
  +                 else
  +                     {
  +                     int nCompile = Attr_selfAttrNum(((tAttrData *)pCompileParent)) 
;
  +                     int nRun     = Attr_selfAttrNum(((tAttrData *)pRunParent)) ;
  +                     int i ;
   
  -                 pCompileParent2 = Node_selfLevel (a, pDomTree, pCompileParent2 -> 
xNdx, r -> Component.nCurrRepeatLevel) ;
  -                 pCompileParent2 = Node_selfCondCloneNode (a, pDomTree, 
pCompileParent2, r -> Component.nCurrRepeatLevel) ;
  +                     pCompileParent2 = Node_selfLevel (a, pDomTree, pCompileParent2 
-> xNdx, r -> Component.nCurrRepeatLevel) ;
  +                     pCompileParent2 = Node_selfCondCloneNode (a, pDomTree, 
pCompileParent2, r -> Component.nCurrRepeatLevel) ;
   
  -                 for (i = nRun - 1 ; i > nCompile; i--)
  -                     {
  -                     if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a 
-> Config.bDebug) & dbgCheckpoint)
  +                     for (i = nRun - 1 ; i > nCompile; i--)
                            {
  -                         tAttrData * pAttr = Element_selfGetNthAttribut (a, 
pDomTree, pCompileParent2, i) ;
  -                         lprintf (a,  "[%d]Checkpoint: remove attr #%d flags=%x 
attr=%d node=%d\n", a -> pThread -> nPid, i, pAttr -> bFlags, pAttr ->xNdx, 
pCompileParent2 -> xNdx) ; 
  +                         if ((a -> pCurrReq?a -> pCurrReq -> 
Component.Config.bDebug:a -> Config.bDebug) & dbgCheckpoint)
  +                             {
  +                             tAttrData * pAttr = Element_selfGetNthAttribut (a, 
pDomTree, pCompileParent2, i) ;
  +                             lprintf (a,  "[%d]Checkpoint: remove attr #%d flags=%x 
attr=%d node=%d\n", a -> pThread -> nPid, i, pAttr -> bFlags, pAttr ->xNdx, 
pCompileParent2 -> xNdx) ; 
  +                             }
  +                         Element_selfRemoveNthAttribut (a, pDomTree, 
pCompileParent2, r -> Component.nCurrRepeatLevel, i) ;
                            }
  -                     Element_selfRemoveNthAttribut (a, pDomTree, pCompileParent2, r 
-> Component.nCurrRepeatLevel, i) ;
  -                     }
  -                 }
  +                     }
   
  -             pPrevNode -> xNext = Node_selfFirstChild (a, pDomTree, pCompileParent, 
r -> Component.nCurrRepeatLevel) -> xNdx ;
  -             pPrevNode -> bFlags |= nflgNewLevelNext ;
  -                if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  -                    lprintf (a, "[%d]Checkpoint: jump forward2 DomTree=%d Index=%d 
Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  -                                a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  -                                pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  -                                pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  -                                pPrevNode -> nLinenumber, 
  -                                nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  -                                pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  -                                pRunNode -> nLinenumber, sv_count) ; 
  +                 pPrevNode -> xNext = Node_selfFirstChild (a, pDomTree, 
pCompileParent, r -> Component.nCurrRepeatLevel) -> xNdx ;
  +                 pPrevNode -> bFlags |= nflgNewLevelNext ;
  +                    if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a 
-> Config.bDebug) & dbgCheckpoint)
  +                        lprintf (a, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  +                                    a -> pThread -> nPid, r -> 
Component.xCurrDomTree, nCompileCheckpoint, 
  +                                    pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                                    pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  +                                    pPrevNode -> nLinenumber, 
  +                                    nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                                    pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  +                                    pRunNode -> nLinenumber, sv_count) ; 
  +                    }
  +                else
  +                    {
  +                    if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a 
-> Config.bDebug) & dbgCheckpoint)
  +                        lprintf (a, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  +                                    a -> pThread -> nPid, r -> 
Component.xCurrDomTree, nCompileCheckpoint, 
  +                                    pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                                    pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  +                                    pPrevNode -> nLinenumber, 
  +                                    nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                                    pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  +                                    pRunNode -> nLinenumber, sv_count) ; 
  +    
  +                    mydie (a, "Unstrutured forward jump") ;
  +                    }
                   }
               else
                   {
                   if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  -                    lprintf (a, "[%d]Checkpoint: jump forward2 DomTree=%d Index=%d 
Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  -                                a -> pThread -> nPid, r -> Component.xCurrDomTree, 
nCompileCheckpoint, 
  -                                pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  -                                pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  -                                pPrevNode -> nLinenumber, 
  -                                nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  -                                pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  -                                pRunNode -> nLinenumber, sv_count) ; 
  +                     lprintf (a, "[%d]Checkpoint: jump forward DomTree=%d Index=%d 
Node=%d Line=%d -> Index=%d Node=%d Line=%d SVs=%d\n", a -> pThread -> nPid, r -> 
Component.xCurrDomTree, nCompileCheckpoint, pPrevNode -> xNdx, pPrevNode -> 
nLinenumber, nRunCheckpoint, pRunNode -> xNdx, pRunNode -> nLinenumber, sv_count) ; 
       
  -                mydie (a, "Unstrutured forward jump") ;
  +                mydie (a, "Unstrutured forward jump (no parents)") ;
                   }
  +            r -> Component.nCurrCheckpoint = nRunCheckpoint + 1 ;
  +            return ;
               }
  -        else
  -            {
  -            if ((a -> pCurrReq?a -> pCurrReq -> Component.Config.bDebug:a -> 
Config.bDebug) & dbgCheckpoint)
  -                 lprintf (a, "[%d]Checkpoint: jump forward DomTree=%d Index=%d 
Node=%d Line=%d -> Index=%d Node=%d Line=%d SVs=%d\n", a -> pThread -> nPid, r -> 
Component.xCurrDomTree, nCompileCheckpoint, pPrevNode -> xNdx, pPrevNode -> 
nLinenumber, nRunCheckpoint, pRunNode -> xNdx, pRunNode -> nLinenumber, sv_count) ; 
  -    
  -            mydie (a, "Unstrutured forward jump (no parents)") ;
  -            }
  -        r -> Component.nCurrCheckpoint = nRunCheckpoint + 1 ;
  -        return ;
           }
  -        
        {
           tNodeData * pCompileNode = Node_selfLevel (a, pDomTree, 
pCheckpoints[nCompileCheckpoint].xNode, r -> Component.nCurrRepeatLevel) ;
           tNodeData * pRunNode     = Node_selfLevel (a, pDomTree, 
pCheckpoints[nRunCheckpoint].xNode, r -> Component.nCurrRepeatLevel+1) ;
  @@ -3191,7 +3204,15 @@
   
       while (pNode)
        {
  -     if (r -> Component.Config.bDebug & dbgOutput)
  +        if (pNode -> bFlags & nflgStopOutput)
  +            {
  +            if (r -> Component.Config.bDebug & dbgOutput)
  +             lprintf (a,  "[%d]toString: Node=%d(%d) RepeatLevel=%d type=%d 
flags=%x -> stop output\n", r -> pThread -> nPid, pNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pNode), nRepeatLevel, pNode -> nType,  pNode -> bFlags) ; 
  +
  +            return NULL ;
  +            }
  +
  +        if (r -> Component.Config.bDebug & dbgOutput)
            lprintf (a,  "[%d]toString: Node=%d(%d) RepeatLevel=%d type=%d flags=%x 
text=>%s<= (#%d) SVs=%d\n", r -> pThread -> nPid, pNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pNode), nRepeatLevel, pNode -> nType,  pNode -> bFlags, 
Ndx2String (pNode -> nText), pNode -> nText, sv_count) ; 
   
        if (pNode -> nType == ntypDocumentFraq)
  @@ -3368,7 +3389,7 @@
                }
               }
   
  -     pLast   = pNode ;
  +        pLast   = pNode ;
        pNode  = Node_selfNextSibling (a, pDomTree, pNode, nRepeatLevel) ;
   
           if (pNode && pLast -> bFlags & nflgNewLevelNext)
  
  
  
  1.4.2.49  +3 -2      embperl/Attic/epdom.h
  
  Index: epdom.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.h,v
  retrieving revision 1.4.2.48
  retrieving revision 1.4.2.49
  diff -u -r1.4.2.48 -r1.4.2.49
  --- epdom.h   12 Feb 2002 21:02:42 -0000      1.4.2.48
  +++ epdom.h   27 Feb 2002 11:58:23 -0000      1.4.2.49
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdom.h,v 1.4.2.48 2002/02/12 21:02:42 richter Exp $
  +#   $Id: epdom.h,v 1.4.2.49 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -144,7 +144,8 @@
       nflgEscXML            = 8,
       nflgIgnore       = 16,   /**< Ignore this node */
       nflgNewLevelNext = 32,   /**< Next sibling has new RepeatLevel */
  -    nflgNewLevelPrev = 64    /**< Previous sibling has new RepeatLevel */
  +    nflgNewLevelPrev = 64,   /**< Previous sibling has new RepeatLevel */
  +    nflgStopOutput   = 128   /**< Do not make any further output after this node */
       } ;
   
   enum tAttrFlags
  
  
  
  1.23.4.24 +23 -2     embperl/epeval.c
  
  Index: epeval.c
  ===================================================================
  RCS file: /home/cvs/embperl/epeval.c,v
  retrieving revision 1.23.4.23
  retrieving revision 1.23.4.24
  diff -u -r1.23.4.23 -r1.23.4.24
  --- epeval.c  27 Feb 2002 08:19:41 -0000      1.23.4.23
  +++ epeval.c  27 Feb 2002 11:58:23 -0000      1.23.4.24
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epeval.c,v 1.23.4.23 2002/02/27 08:19:41 richter Exp $
  +#   $Id: epeval.c,v 1.23.4.24 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -506,6 +506,8 @@
         if (*pRet)
             SvREFCNT_dec (*pRet) ;
         *pRet = NULL ;
  +         if (r -> Component.Config.bDebug & dbgEval)
  +            lprintf (r -> pApp,  "[%d]EVAL> exit passed through\n", r -> pThread -> 
nPid) ;
         return rcExit ;
         }
        
  @@ -523,7 +525,15 @@
                
            /*struct magic * m = SvMAGIC (pSVErr) ;*/
   
  -         sv_unmagic(pSVErr,'U');
  +            tDomTree * pDomTree = DomTree_self (r -> Component.xCurrDomTree) ;
  +            tIndex n = ArrayGetSize (r -> pApp, pDomTree -> pCheckpoints) ;
  +            if (n > 2)
  +                DomTree_checkpoint (r, n-1)  ;
  +
  +            if (r -> Component.Config.bDebug & dbgEval)
  +                lprintf (r -> pApp,  "[%d]EVAL> exit called\n", r -> pThread -> 
nPid) ;
  +            
  +            sv_unmagic(pSVErr,'U');
            sv_setpv(pSVErr,"");
   
            r -> Component.Config.bOptions |= optNoUncloseWarn ;
  @@ -771,6 +781,8 @@
         if (*pRet)
             SvREFCNT_dec (*pRet) ;
         *pRet = NULL ;
  +         if (r -> Component.Config.bDebug & dbgEval)
  +            lprintf (r -> pApp,  "[%d]EVAL> exit passed through\n", r -> pThread -> 
nPid) ;
         return rcExit ;
         }
        
  @@ -788,6 +800,15 @@
                
            /*struct magic * m = SvMAGIC (pSVErr) ;*/
   
  +            tDomTree * pDomTree = DomTree_self (r -> Component.xCurrDomTree) ;
  +            tIndex n = ArrayGetSize (r -> pApp, pDomTree -> pCheckpoints) ;
  +                lprintf (r -> pApp,  "[%d]EVAL> exit called n = %d\n", r -> pThread 
-> nPid, n) ;
  +            if (n > 2)
  +                DomTree_checkpoint (r, n-1) ;
  +
  +            if (r -> Component.Config.bDebug & dbgEval)
  +                lprintf (r -> pApp,  "[%d]EVAL> exit called\n", r -> pThread -> 
nPid) ;
  +            
            sv_unmagic(pSVErr,'U');
            sv_setpv(pSVErr,"");
   
  
  
  
  1.1.2.32  +81 -77    embperl/Attic/epinit.c
  
  Index: epinit.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epinit.c,v
  retrieving revision 1.1.2.31
  retrieving revision 1.1.2.32
  diff -u -r1.1.2.31 -r1.1.2.32
  --- epinit.c  27 Feb 2002 08:19:41 -0000      1.1.2.31
  +++ epinit.c  27 Feb 2002 11:58:23 -0000      1.1.2.32
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epinit.c,v 1.1.2.31 2002/02/27 08:19:41 richter Exp $
  +#   $Id: epinit.c,v 1.1.2.32 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -204,7 +204,6 @@
       pCfg -> sAppName    = "Embperl" ;
       pCfg -> sCookieName = "EMBPERL_UID" ;
       pCfg -> sSessionHandlerClass = "Apache::SessionX" ;
  -    pCfg -> nSessionMode = smodeUDatCookie ;
   #ifdef WIN32
       pCfg -> sLog        = "\\embperl.log" ;
   #else
  @@ -777,6 +776,7 @@
   
       {
       pCfg -> cMultFieldSep = '\t' ;
  +    pCfg -> nSessionMode = smodeUDatCookie ;
       }
   
   
  @@ -890,12 +890,13 @@
                        else
                               {
                               char * p = strchr(pVal, ':') ;
  -                            if (p)
  +                            if (p && *p)
                                   {
                                   r -> sSessionUserID = ep_pstrdup (r -> pPool, p + 
1) ;
                                   *p = '\0' ;
                                   }
  -                            r -> sSessionStateID = ep_pstrdup (r -> pPool, pVal) ;
  +                            if (*pVal)
  +                                r -> sSessionStateID = ep_pstrdup (r -> pPool, 
pVal) ;
                               }
                           }
   
  @@ -1062,6 +1063,78 @@
       }
   
   
  +/*---------------------------------------------------------------------------
  +* embperl_LogStartReq
  +*/
  +/*!
  +*
  +* \_en                                                                          
  +* Log request startup, headers and environment
  +* \endif                                                                       
  +*
  +* \_de                                                                          
  +* Logged den Requeststart, HTTP-Header und Umgebungsvariablen
  +* \endif                                                                       
  +*                                                                          
  +* ------------------------------------------------------------------------ */
  +
  +
  +static void embperl_LogStartReq (/*i/o*/ req * r)
  +
  +    {
  +    epTHX ;
  +    
  +    if (r -> Config.bDebug)
  +        {
  +        time_t t = time(NULL) ;
  +        lprintf (r -> pApp,  "[%d]REQ: ***** Start Request at %s", r -> pThread -> 
nPid, ctime (&t)) ;
  +        lprintf (r -> pApp,  "[%d]Use App: %s\n", r -> pApp -> pThread -> nPid, r 
-> pApp -> Config.sAppName) ; 
  +#ifdef DMALLOC
  +        dmalloc_message ("[%d]REQ: Start Request at %s\n", r -> pThread -> nPid, 
ctime (time(NULL))) ; 
  +#endif        
  +        }
  +
  +
  +
  +#ifdef APACHE
  +    if (r -> pApacheReq && (r -> Config.bDebug & dbgHeadersIn))
  +        {
  +        int i;
  +        array_header *hdrs_arr;
  +        table_entry  *hdrs;
  +
  +        hdrs_arr = table_elts (r -> pApacheReq->headers_in);
  +        hdrs = (table_entry *)hdrs_arr->elts;
  +
  +        lprintf (r -> pApp,   "[%d]HDR:  %d\n", r -> pThread -> nPid, 
hdrs_arr->nelts) ; 
  +        for (i = 0; i < hdrs_arr->nelts; ++i)
  +         if (hdrs[i].key)
  +                lprintf (r -> pApp,   "[%d]HDR:  %s=%s\n", r -> pThread -> nPid, 
hdrs[i].key, hdrs[i].val) ; 
  +        }
  +#endif
  +    if (r -> Config.bDebug & dbgEnv)
  +        {
  +        SV *   psv ;
  +        HE *   pEntry ;
  +        char * pKey ;
  +        I32    l ;
  +        int  savewarn = dowarn ;
  +        dowarn = 0 ; /* no warnings here */
  +        
  +        hv_iterinit (r -> pThread -> pEnvHash) ;
  +        while ((pEntry = hv_iternext (r -> pThread -> pEnvHash)))
  +            {
  +            pKey = hv_iterkey (pEntry, &l) ;
  +            psv  = hv_iterval (r -> pThread -> pEnvHash, pEntry) ;
  +
  +                lprintf (r -> pApp,   "[%d]ENV:  %s=%s\n", r -> pThread -> nPid, 
pKey, SvPV (psv, na)) ; 
  +            }
  +        dowarn = savewarn ;
  +        }
  +
  +    }
  +
  +
   
   /*---------------------------------------------------------------------------
   * embperl_SetupRequest
  @@ -1195,10 +1268,13 @@
   
       hv_clear (pThread -> pHeaderHash) ;
   
  +    embperl_LogStartReq (r) ;
  +
       embperl_SetupFormData (r) ;
   
       if (r -> sSessionUserID)
           {
  +        tainted = 0 ;
           PUSHMARK(sp);
        XPUSHs(pApp -> pUserObj); 
        XPUSHs(sv_2mortal(newSVpv(r -> sSessionUserID, 0))); 
  @@ -1208,6 +1284,7 @@
   
       if (r -> sSessionStateID)
           {
  +        tainted = 0 ;
           PUSHMARK(sp);
        XPUSHs(pApp -> pStateObj); 
        XPUSHs(sv_2mortal(newSVpv(r -> sSessionStateID, 0))); 
  @@ -1711,77 +1788,6 @@
   
   
   /*---------------------------------------------------------------------------
  -* embperl_LogStartReq
  -*/
  -/*!
  -*
  -* \_en                                                                          
  -* Log request startup, headers and environment
  -* \endif                                                                       
  -*
  -* \_de                                                                          
  -* Logged den Requeststart, HTTP-Header und Umgebungsvariablen
  -* \endif                                                                       
  -*                                                                          
  -* ------------------------------------------------------------------------ */
  -
  -
  -static void embperl_LogStartReq (/*i/o*/ req * r)
  -
  -    {
  -    epTHX ;
  -    
  -    if (r -> Config.bDebug)
  -        {
  -        time_t t = time(NULL) ;
  -        lprintf (r -> pApp,  "[%d]REQ: Start Request at %s\n", r -> pThread -> 
nPid, ctime (&t)) ;
  -#ifdef DMALLOC
  -        dmalloc_message ("[%d]REQ: Start Request at %s\n", r -> pThread -> nPid, 
ctime (time(NULL))) ; 
  -#endif        
  -        }
  -
  -
  -
  -#ifdef APACHE
  -    if (r -> pApacheReq && (r -> Config.bDebug & dbgHeadersIn))
  -        {
  -        int i;
  -        array_header *hdrs_arr;
  -        table_entry  *hdrs;
  -
  -        hdrs_arr = table_elts (r -> pApacheReq->headers_in);
  -        hdrs = (table_entry *)hdrs_arr->elts;
  -
  -        lprintf (r -> pApp,   "[%d]HDR:  %d\n", r -> pThread -> nPid, 
hdrs_arr->nelts) ; 
  -        for (i = 0; i < hdrs_arr->nelts; ++i)
  -         if (hdrs[i].key)
  -                lprintf (r -> pApp,   "[%d]HDR:  %s=%s\n", r -> pThread -> nPid, 
hdrs[i].key, hdrs[i].val) ; 
  -        }
  -#endif
  -    if (r -> Config.bDebug & dbgEnv)
  -        {
  -        SV *   psv ;
  -        HE *   pEntry ;
  -        char * pKey ;
  -        I32    l ;
  -        int  savewarn = dowarn ;
  -        dowarn = 0 ; /* no warnings here */
  -        
  -        hv_iterinit (r -> pThread -> pEnvHash) ;
  -        while ((pEntry = hv_iternext (r -> pThread -> pEnvHash)))
  -            {
  -            pKey = hv_iterkey (pEntry, &l) ;
  -            psv  = hv_iterval (r -> pThread -> pEnvHash, pEntry) ;
  -
  -                lprintf (r -> pApp,   "[%d]ENV:  %s=%s\n", r -> pThread -> nPid, 
pKey, SvPV (psv, na)) ; 
  -            }
  -        dowarn = savewarn ;
  -        }
  -
  -    }
  -
  -
  -/*---------------------------------------------------------------------------
   * embperl_InitRequest
   */
   /*!
  @@ -1849,8 +1855,6 @@
       r -> pApacheConfig = pApacheCfg ;
      
       *ppReq = r ;
  -
  -    embperl_LogStartReq (r) ;
   
       if (r -> Config.pAllow || r -> Config.pUriMatch)
           {
  
  
  
  1.16.4.9  +2 -2      embperl/epio.c
  
  Index: epio.c
  ===================================================================
  RCS file: /home/cvs/embperl/epio.c,v
  retrieving revision 1.16.4.8
  retrieving revision 1.16.4.9
  diff -u -r1.16.4.8 -r1.16.4.9
  --- epio.c    25 Jan 2002 07:04:31 -0000      1.16.4.8
  +++ epio.c    27 Feb 2002 11:58:23 -0000      1.16.4.9
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epio.c,v 1.16.4.8 2002/01/25 07:04:31 richter Exp $
  +#   $Id: epio.c,v 1.16.4.9 2002/02/27 11:58:23 richter Exp $
   #
   
###################################################################################*/
   
  @@ -969,7 +969,7 @@
       a -> lfd = NULL ;
   
       
  -    if (a -> pThread -> pCurrReq && a -> pThread -> pCurrReq -> 
Component.Config.bDebug == 0)
  +    if (a -> pThread -> pCurrReq && a -> Config.bDebug == 0)
        return ok ; /* never write to logfile if debugging is disabled */           
       
       if (!a -> Config.sLog && a -> Config.sLog[0] == '\0')
  
  
  
  1.75.4.104 +6 -5      embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.75.4.103
  retrieving revision 1.75.4.104
  diff -u -r1.75.4.103 -r1.75.4.104
  --- epmain.c  27 Feb 2002 08:19:41 -0000      1.75.4.103
  +++ epmain.c  27 Feb 2002 11:58:24 -0000      1.75.4.104
  @@ -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.103 2002/02/27 08:19:41 richter Exp $
  +#   $Id: epmain.c,v 1.75.4.104 2002/02/27 11:58:24 richter Exp $
   #
   
###################################################################################*/
   
  @@ -706,7 +706,7 @@
           }
   
   
  -    if ((r -> pApp -> Config.nSessionMode & smodeSDatParam) && !r -> 
Component.pPrev)
  +    if ((r -> Config.nSessionMode & smodeSDatParam) && !r -> Component.pPrev)
        {
        char * pCookie = CreateSessionCookie (r, r -> pApp -> pStateObj, 's', 0) ; 
           /* lprintf (r -> pApp,  "opt %x optadd %x options %x cookie %s\n", 
optAddStateSessionToLinks, r -> Component.Config.bOptions & optAddStateSessionToLinks, 
r -> Component.Config.bOptions, SvPV(pCookie, l)) ; */
  @@ -714,7 +714,7 @@
               r -> sSessionID = ep_pstrcat  (r -> pPool, r -> pApp -> 
Config.sCookieName, "=", pCookie, NULL) ;
           }
       
  -    if ((r -> pApp -> Config.nSessionMode & smodeUDatParam) && !r -> 
Component.pPrev)
  +    if ((r -> Config.nSessionMode & smodeUDatParam) && !r -> Component.pPrev)
           {
        char * pCookie = CreateSessionCookie (r, r -> pApp -> pUserObj, 'u', 0) ; 
           if (pCookie)
  @@ -801,7 +801,7 @@
       epTHX_
       char * pCookie = NULL ;
   
  -    if (r -> pApp -> Config.nSessionMode & smodeUDatCookie)
  +    if (r -> Config.nSessionMode & smodeUDatCookie)
           pCookie = CreateSessionCookie (r, r -> pApp -> pUserObj, 'u', 1) ;
        
   #ifdef APACHE
  @@ -1176,6 +1176,7 @@
       int num ;
   
       dSP ;
  +    tainted = 0 ;
   
       if (!pRecipe || !SvOK(pRecipe))
           pRecipe = sv_2mortal(newSVpv("Embperl", 7)) ;
  @@ -1338,7 +1339,7 @@
       if ((c -> Config.bOptions & optReturnError) && r -> bError)
           {        
   #ifdef APACHE
  -        if (r -> pApacheReqSV)
  +        if (r -> pApacheReq && r -> pApacheReqSV)
               {
               dSP ;
               PUSHMARK(sp);
  
  
  
  1.15.4.48 +3 -2      embperl/eputil.c
  
  Index: eputil.c
  ===================================================================
  RCS file: /home/cvs/embperl/eputil.c,v
  retrieving revision 1.15.4.47
  retrieving revision 1.15.4.48
  diff -u -r1.15.4.47 -r1.15.4.48
  --- eputil.c  27 Feb 2002 08:19:41 -0000      1.15.4.47
  +++ eputil.c  27 Feb 2002 11:58:24 -0000      1.15.4.48
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: eputil.c,v 1.15.4.47 2002/02/27 08:19:41 richter Exp $
  +#   $Id: eputil.c,v 1.15.4.48 2002/02/27 11:58:24 richter Exp $
   #
   
###################################################################################*/
   
  @@ -1560,9 +1560,10 @@
       for (i = skip ; i <= AvFILL (pPathAV); i++)
        {
           fn = ep_pstrcat(r -> pPool, SvPV(*av_fetch (pPathAV, i, 0), l), 
PATH_SEPARATOR_STR, sFilename, NULL) ;
  +        /* lprintf (r -> pApp, "i=%d skip=%d, dir=%s, fn=%s\n", i, skip, 
SvPV(*av_fetch (pPathAV, i, 0), l), fn) ; */
           if (stat (fn, &st) == 0)
               {
  -            r -> Component.nPathNdx = skip ;        
  +            r -> Component.nPathNdx = i ;        
               return embperl_File2Abs (r, pPool, fn) ;
               }
           }
  
  
  
  1.70.4.117 +5 -6      embperl/test.pl
  
  Index: test.pl
  ===================================================================
  RCS file: /home/cvs/embperl/test.pl,v
  retrieving revision 1.70.4.116
  retrieving revision 1.70.4.117
  diff -u -r1.70.4.116 -r1.70.4.117
  --- test.pl   27 Feb 2002 08:19:41 -0000      1.70.4.116
  +++ test.pl   27 Feb 2002 11:58:24 -0000      1.70.4.117
  @@ -11,7 +11,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: test.pl,v 1.70.4.116 2002/02/27 08:19:41 richter Exp $
  +#   $Id: test.pl,v 1.70.4.117 2002/02/27 11:58:24 richter Exp $
   #
   ###################################################################################
   
  @@ -341,12 +341,12 @@
               'version'    => 2,
           },
       'exit.htm' => { 
  -        'version'    => 1,
  +        #'version'    => 1,
           'offline'    => 0,
           'cgi'        => 0,
           },
       'exit2.htm' => { 
  -        'version'    => 1,
  +        #'version'    => 1,
           'offline'    => 0,
           },
       'exit3.htm' => { 
  @@ -1302,7 +1302,6 @@
               $sendcookie = $cookie ;
               }
   
  -        
        $request = new HTTP::Request($content?'POST':'GET', $url);
           if ($cookieaction =~ /cookie=(.*?)$/)
               {
  @@ -1776,7 +1775,7 @@
       
       foreach (keys %ENV)
           {
  -        delete $ENV{$_} if (/^EMBPERL_/) ;
  +        delete $ENV{$_} if ((/^EMBPERL_/) && $_ ne 'EMBPERL_LOG'  && $_ ne 
'EMBPERL_DEBUG') ;
           }
       delete $ENV{PATH_TRANSLATED} ;
   
  @@ -2038,7 +2037,7 @@
            {
            print "\nTesting Ouput Caching...\n\n" ;
       
  -         Embperl::Init ($logfile, $defaultdebug) ;
  +         #Embperl::Init ($logfile, $defaultdebug) ;
       
               my $src = '* [+ $param[0] +] *' ;
               my $cmp = '"* $p *"' ;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.10  +2 -40     embperl/Embperl/Attic/Object.pm
  
  Index: Object.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl/Attic/Object.pm,v
  retrieving revision 1.1.2.9
  retrieving revision 1.1.2.10
  diff -u -r1.1.2.9 -r1.1.2.10
  --- Object.pm 25 Feb 2002 14:57:47 -0000      1.1.2.9
  +++ Object.pm 27 Feb 2002 11:58:25 -0000      1.1.2.10
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Object.pm,v 1.1.2.9 2002/02/25 14:57:47 richter Exp $
  +#   $Id: Object.pm,v 1.1.2.10 2002/02/27 11:58:25 richter Exp $
   #
   ###################################################################################
   
  @@ -94,53 +94,15 @@
       return $path ;
       }
   
  
-##########################################################################################
  -
  -sub ScanEnvironment
  -
  -    {
  -    my ($req, $req_rec) = @_ ; 
  -
  -    #Embperl::ScanEnvironment ($req, $req_rec) ;
  -
  -    $req -> {object_base}           = $ENV{EMBPERL_OBJECT_BASE} || '_base.html' ;
  -    $req -> {object_app}            = $ENV{EMBPERL_OBJECT_APP}     if (exists 
($ENV{EMBPERL_OBJECT_APP})) ;
  -    $req -> {object_addpath}        = [split (/;/, $ENV{EMBPERL_OBJECT_ADDPATH})] 
if (exists ($ENV{EMBPERL_OBJECT_ADDPATH})) ;
  -    $req -> {object_stopdir}        = $ENV{EMBPERL_OBJECT_STOPDIR} if (exists 
($ENV{EMBPERL_OBJECT_STOPDIR})) ;
  -    $req -> {object_fallback}       = $ENV{EMBPERL_OBJECT_FALLBACK} if (exists 
($ENV{EMBPERL_OBJECT_FALLBACK})) ;
  -    $req -> {object_handler_class}  = $ENV{EMBPERL_OBJECT_HANDLER_CLASS} if (exists 
($ENV{EMBPERL_OBJECT_HANDLER_CLASS})) ;
  -    $req -> {debug} = 0x7fffffff ;
  -    }
  -
   
   #############################################################################
   
   sub handler
       {
       my $r = shift ;
  -    #my $filename  = $r -> filename ;
  -    #my $mod ;
  -    #if ($filename =~ /^(.*)__(.*?)$/)
  -    #        {
  -    #    $filename  = $1 ;
  -    #        $mod       = $2 ;
  -    #        $mod       =~ s/[^a-zA-Z0-9]/_/g ;
  -    #        }
  -    #else
  -    #        {       
  -    #        $mod = '' ;
  -    #        }
  -    #
   
       my %req ;
   
  -    #ScanEnvironment (\%req, $r) ;
  -    
  -    #$req{'inputfile'} = $filename ;
  -    #$req{'object_base_modifier'}  = $mod ;
  -    #$req{'uri'}       = $r -> Apache::uri ;
  -    #$req{'cleanup'} = -1 if (($req{'options'} & 
Embperl::Constant::optDisableVarCleanup)) ;
  -    #$req{'options'} |= Embperl::Constant::optSendHttpHeader ;
       $req{'req_rec'} = $r ;
       
       Execute (\%req) ;
  @@ -166,7 +128,7 @@
       my $apr        ;
       $apr = $req -> {req_rec} if ($req -> {req_rec}) ;
   
  -    my $basename  = $appcfg -> object_base ;
  +    my $basename  = $appcfg -> object_base or die "Need object_base, please set 
EMBPERL_OBJECT_BASE" ;
       ##$basename     =~ s/%modifier%/$req->{object_base_modifier}/ ;
       my $addpath   = $appcfg -> object_addpath ;
       my $directory ;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.6.3   +5 -5      embperl/test/cmp/Execute.htm
  
  Index: Execute.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/Execute.htm,v
  retrieving revision 1.3.6.2
  retrieving revision 1.3.6.3
  diff -u -r1.3.6.2 -r1.3.6.3
  --- Execute.htm       6 Feb 2002 09:21:08 -0000       1.3.6.2
  +++ Execute.htm       27 Feb 2002 11:58:25 -0000      1.3.6.3
  @@ -69,11 +69,11 @@
   apear at the second include:
   <P>
   
  -$a = (this is the value in $a) <BR>
  -$b = (this is the value in $a) &auml;&ouml;&uuml; <BR>
  -$c = 57 <BR>
  -$d = 1 <BR>
  -$e = 2 <BR>
  +$a = <BR>
  +$b = <BR>
  +$c = <BR>
  +$d = <BR>
  +$e = <BR>
   
   
   First of all assign a value:
  
  
  
  1.1.2.2   +2 -2      embperl/test/cmp/getsdaturlsess.htm
  
  Index: getsdaturlsess.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/getsdaturlsess.htm,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- getsdaturlsess.htm        17 Sep 2001 08:49:59 -0000      1.1.2.1
  +++ getsdaturlsess.htm        27 Feb 2002 11:58:25 -0000      1.1.2.2
  @@ -22,8 +22,8 @@
   ^    <a href=\"cont\.htm\?EMBPERL_UID=[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&EMBPERL_UID=[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&b=2&EMBPERL_UID=[a-f0-9]+\">continue</a>
  -     <form action="cont.htm">
  -^    <input type=\"hidden\" name=\"EMBPERL_UID\" value=\"[a-f0-9]+\"></form>
  +^    <form action="cont.htm"><input type=\"hidden\" name=\"EMBPERL_UID\" 
value=\"[a-f0-9]+\">
  +    </form>
   
   </body>
   </html>
  
  
  
  1.1.2.2   +4 -4      embperl/test/cmp/geturlsess.htm
  
  Index: geturlsess.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/geturlsess.htm,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- geturlsess.htm    17 Sep 2001 08:49:59 -0000      1.1.2.1
  +++ geturlsess.htm    27 Feb 2002 11:58:25 -0000      1.1.2.2
  @@ -22,8 +22,8 @@
   
        ok (num=1)<p>
   
  -     $mdat{cnt} = -- <br>
  -        $udat{cnt} = -- <br>
  +^    \$mdat\{cnt\} = -\d- <br>
  +    $udat{cnt} = -- <br>
   
   
        sessions:
  @@ -32,8 +32,8 @@
   ^    <a href=\"cont\.htm\?EMBPERL_UID=[a-f0-9]*?:[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&EMBPERL_UID=[a-f0-9]*?:[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&b=2&EMBPERL_UID=[a-f0-9]*?:[a-f0-9]+\">continue</a>
  -     <form action="cont.htm">
  -^    <input type=\"hidden\" name=\"EMBPERL_UID\" 
value=\"[a-f0-9]*?:[a-f0-9]+\"></form>
  +^    <form action="cont.htm"><input type=\"hidden\" name=\"EMBPERL_UID\" 
value=\"[a-f0-9]*?:[a-f0-9]+\">
  +    </form>
   
   </body>
   </html>
  
  
  
  1.1.2.2   +2 -2      embperl/test/cmp/setsdaturlsess.htm
  
  Index: setsdaturlsess.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/setsdaturlsess.htm,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- setsdaturlsess.htm        17 Sep 2001 08:49:59 -0000      1.1.2.1
  +++ setsdaturlsess.htm        27 Feb 2002 11:58:25 -0000      1.1.2.2
  @@ -22,8 +22,8 @@
   ^    <a href=\"cont\.htm\?EMBPERL_UID=[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&EMBPERL_UID=[a-f0-9]+\">continue</a>
   ^    <a href=\"cont.htm\?q=1&b=2&EMBPERL_UID=[a-f0-9]+\">continue</a>
  -     <form action="cont.htm">
  -^    <input type=\"hidden\" name=\"EMBPERL_UID\" value=\"[a-f0-9]+\"></form>
  +^    <form action="cont.htm"><input type=\"hidden\" name=\"EMBPERL_UID\" 
value=\"[a-f0-9]+\">
  +    </form>
   
   </body>
   </html>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.24.4.42 +0 -3      embperl/test/conf/httpd.conf.src
  
  Index: httpd.conf.src
  ===================================================================
  RCS file: /home/cvs/embperl/test/conf/httpd.conf.src,v
  retrieving revision 1.24.4.41
  retrieving revision 1.24.4.42
  diff -u -r1.24.4.41 -r1.24.4.42
  --- httpd.conf.src    27 Feb 2002 08:19:43 -0000      1.24.4.41
  +++ httpd.conf.src    27 Feb 2002 11:58:25 -0000      1.24.4.42
  @@ -639,7 +639,6 @@
   SetHandler perl-script
   PerlHandler Embperl
   Options ExecCGI
  -PerlSetEnv EMBPERL_APPNAME sidurl
   PerlSetEnv EMBPERL_SESSION_MODE 0x20
   </Location>
   
  @@ -649,7 +648,6 @@
   SetHandler perl-script
   PerlHandler Embperl
   Options ExecCGI
  -PerlSetEnv EMBPERL_APPNAME uidurl
   PerlSetEnv EMBPERL_SESSION_MODE 0x02
   </Location>
   
  @@ -659,7 +657,6 @@
   SetHandler perl-script
   PerlHandler Embperl
   Options ExecCGI
  -PerlSetEnv EMBPERL_APPNAME sidurl
   PerlSetEnv EMBPERL_SESSION_MODE 0x22
   </Location>
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.6.1   +2 -0      embperl/test/html/exit.htm
  
  Index: exit.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/exit.htm,v
  retrieving revision 1.2
  retrieving revision 1.2.6.1
  diff -u -r1.2 -r1.2.6.1
  --- exit.htm  5 Oct 1999 06:03:41 -0000       1.2
  +++ exit.htm  27 Feb 2002 11:58:26 -0000      1.2.6.1
  @@ -12,4 +12,6 @@
   
   After Exit
   
  +[+ "perl after exit" +]
  +
   </body>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.6.4   +6 -3      embperl/test/html/registry/tied.htm
  
  Index: tied.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/registry/tied.htm,v
  retrieving revision 1.2.6.3
  retrieving revision 1.2.6.4
  diff -u -r1.2.6.3 -r1.2.6.4
  --- tied.htm  6 Feb 2002 09:21:08 -0000       1.2.6.3
  +++ tied.htm  27 Feb 2002 11:58:26 -0000      1.2.6.4
  @@ -51,7 +51,8 @@
   
   $rc = Embperl::Execute ({inputfile  => 'test_numeric',
                                                 input          => 5,
  -                                              mtime      => 1}) ;
  +                                              mtime      => 1,
  +                                              options    => 
Embperl::Constant::optReturnError}) ;
   
   print "rc = $rc\n" ;
   
  @@ -60,7 +61,8 @@
   
   $rc = Embperl::Execute ({inputfile  => 'test_string',
                                                 input          => 'Hi',
  -                                              mtime      => 1}) ;
  +                                              mtime      => 1,
  +                                              options    => 
Embperl::Constant::optReturnError}) ;
   
   
   print "rc = $rc\n" ;
  @@ -94,7 +96,8 @@
   
   $rc = Embperl::Execute ({inputfile  => 'test_tied_string',
                                                 input          => $tiedvar1,
  -                                              mtime      => 1}) ;
  +                                              mtime      => 1,
  +                                              options    => 
Embperl::Constant::optReturnError}) ;
   
   
   print "rc = $rc\n" ;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.21  +1 -1      embperl/xsbuilder/maps/Attic/ep_structure.map
  
  Index: ep_structure.map
  ===================================================================
  RCS file: /home/cvs/embperl/xsbuilder/maps/Attic/ep_structure.map,v
  retrieving revision 1.1.2.20
  retrieving revision 1.1.2.21
  diff -u -r1.1.2.20 -r1.1.2.21
  --- ep_structure.map  27 Feb 2002 08:19:44 -0000      1.1.2.20
  +++ ep_structure.map  27 Feb 2002 11:58:26 -0000      1.1.2.21
  @@ -90,7 +90,6 @@
      sCookieDomain | cookie_domain
      sCookiePath | cookie_path
      sCookieExpires | cookie_expires
  -   nSessionMode | session_mode
      sLog | log
      bDebug | debug
      sMailhost | mailhost
  @@ -218,6 +217,7 @@
      pPathAV | path
      bDebug | debug
      bOptions | options
  +   nSessionMode | session_mode
      new
   !   private
    </tReqConfig>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to