Author: richter
Date: Tue Jan 22 05:47:20 2013
New Revision: 1436750

URL: http://svn.apache.org/viewvc?rev=1436750&view=rev
Log:
    - Added optChdirToSource = 0x10000000 which will cause
      Embperl to change to the directory of the source file
      prior to execution.


Added:
    perl/embperl/trunk/test/cmp/chdir2src.htm
    perl/embperl/trunk/test/html/chdir/
    perl/embperl/trunk/test/html/chdir/chdir2src.htm   (with props)
Modified:
    perl/embperl/trunk/Changes.pod
    perl/embperl/trunk/MANIFEST
    perl/embperl/trunk/embperl.h
    perl/embperl/trunk/epapfilter.c
    perl/embperl/trunk/epcomp.c
    perl/embperl/trunk/epdat.h
    perl/embperl/trunk/epdat2.h
    perl/embperl/trunk/epdom.c
    perl/embperl/trunk/eputil.c
    perl/embperl/trunk/podsrc/Config.spod
    perl/embperl/trunk/test.pl
    perl/embperl/trunk/test/cmp/epform.htm
    perl/embperl/trunk/test/conf/httpd.conf.src

Modified: perl/embperl/trunk/Changes.pod
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Changes.pod?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/Changes.pod (original)
+++ perl/embperl/trunk/Changes.pod Tue Jan 22 05:47:20 2013
@@ -41,7 +41,12 @@
     - Fix compile problem on non intel plattforms due to missing
       -m32 flag.    
     - Added support for utf8 sourcefiles. By setting
-      input_charset => 'utf8'
+      input_charset => 'utf8' sponsored by Perlover.
+    - Added optChdirToSource = 0x10000000 which will cause
+      Embperl to change to the directory of the source file
+      prior to execution.
+    
+    Adaptions to Perl 5.14/16 were sponsored by NUREG GmbH
 
 =head 2.4.0  4. Oct 2010
 

Modified: perl/embperl/trunk/MANIFEST
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/MANIFEST?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/MANIFEST (original)
+++ perl/embperl/trunk/MANIFEST Tue Jan 22 05:47:20 2013
@@ -250,6 +250,7 @@ test/cmp/sub2.htm
 test/cmp/subouttab.htm
 test/cmp/changeattr.htm
 test/cmp/chdir.htm
+test/cmp/chdir2src.htm
 test/cmp/clearsess.htm
 test/cmp/cookieexpire.htm
 test/cmp/crypto.htm
@@ -480,6 +481,7 @@ test/html/sub2.htm
 test/html/subouttab.htm
 test/html/changeattr.htm
 test/html/chdir.htm
+test/html/chdir/chdir2src.htm
 test/html/clearsess.htm
 test/html/cookieexpire.htm
 test/html/delrdsess.htm

Modified: perl/embperl/trunk/embperl.h
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/embperl.h?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/embperl.h (original)
+++ perl/embperl/trunk/embperl.h Tue Jan 22 05:47:20 2013
@@ -179,7 +179,8 @@ enum opt
     optDisableSelectScan       = 0x800000,
     optEnableChdir             = 0x1000000,
     optFormDataNoUtf8          = 0x2000000,
-    optShowBacktrace           = 0x8000000
+    optShowBacktrace           = 0x8000000,
+    optChdirToSource           = 0x10000000
     } ;
 
 /* --- output escaping --- */

Modified: perl/embperl/trunk/epapfilter.c
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epapfilter.c?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/epapfilter.c (original)
+++ perl/embperl/trunk/epapfilter.c Tue Jan 22 05:47:20 2013
@@ -203,7 +203,6 @@ static apr_status_t ProviderApOutFilter_
     const char *data;
     apr_status_t rv;
     char buf[4096];
-    apr_bucket *eos = NULL;
     epTHX_
 
 
@@ -216,7 +215,6 @@ static apr_status_t ProviderApOutFilter_
         /* if (APR_BUCKET_IS_EOS(b)) */
         if (strcmp (b -> type -> name, "EOS") == 0)
             {
-            eos = b;
             break;
             }
 

Modified: perl/embperl/trunk/epcomp.c
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epcomp.c?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/epcomp.c (original)
+++ perl/embperl/trunk/epcomp.c Tue Jan 22 05:47:20 2013
@@ -1645,7 +1645,8 @@ int embperl_Compile                 (/*i
     if (r -> Component.Config.bDebug & dbgCompile)
        lprintf (r -> pApp,  "[%d]EPCOMP: Start compiling %s DomTree = %d\n", r 
-> pThread -> nPid, sSourcefile, xDomTree) ; 
 
-    /* ChdirToSource (r, sSourcefile) ;    */
+    if (r -> Component.Config.bOptions & optChdirToSource)
+        ChdirToSource (r, sSourcefile) ; 
 
     r -> Component.nPhase  = phCompile ;
 
@@ -1706,7 +1707,7 @@ int embperl_Compile                 (/*i
 
     if (l > 1)
        {
-       pSV = newSVpvf("package %s ; %s\n%*.*s", r -> Component.sEvalPackage, 
use_utf8, l,l, r -> Component.pProgDef) ;
+       pSV = newSVpvf("package %s ; %s\n%*.*s", r -> Component.sEvalPackage, 
use_utf8, (int)l,(int)l, r -> Component.pProgDef) ;
        newSVpvf2(pSV) ;
        args[0] = r -> _perlsv ;
        args[1] = pDomTree -> pDomTreeSV ;
@@ -1912,7 +1913,7 @@ int embperl_Execute                   (/*in*/ 
     {
     epTHX_
     int            rc  = ok ;
-    /* char *  sSourcefile = r -> Component.sSourcefile  ; */
+    char *  sSourcefile = r -> Component.sSourcefile  ; 
     
     tainted         = 0 ;
 
@@ -1927,7 +1928,8 @@ int embperl_Execute                   (/*in*/ 
             SetHashValueInt (r, r -> pCleanupPackagesHV, r -> 
Component.sCurrPackage, 1) ;
         
         /* --- change working directory --- */
-        /* ChdirToSource (r, sSourcefile) ;    */
+        if (r -> Component.Config.bOptions & optChdirToSource)
+            ChdirToSource (r, sSourcefile) ; 
 
 
         if (c -> Param.pParam)
@@ -1984,7 +1986,6 @@ int embperl_Execute                   (/*in*/ 
 
 
        /* --- restore working directory --- */
-       /*
         if (r -> Component.sResetDir[0])
            {
 #ifdef WIN32
@@ -1994,7 +1995,6 @@ int embperl_Execute                   (/*in*/ 
            strcpy (r -> Component.sCWD,r -> Component.sResetDir) ;
            r -> Component.sResetDir[0] = '\0' ;
             }
-        */
         }
     else
         *pResultDomTree = 0 ;

Modified: perl/embperl/trunk/epdat.h
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epdat.h?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/epdat.h (original)
+++ perl/embperl/trunk/epdat.h Tue Jan 22 05:47:20 2013
@@ -417,11 +417,6 @@ struct tReq
     int            nInsideSub ;        /* Are we inside of a sub? */
     int            bExit ;             /* We should exit the page */
     int            nPathNdx ;          /* gives the index in the path where 
the current file is found */
-    char    sCWD[PATH_MAX] ;    /**< Current working directory */
-    char    sResetDir[PATH_MAX] ; /**< Reset directory to */
-#ifdef WIN32
-    char    nResetDrive ;       /**< Reset drive to */
-#endif
     int     nRequestCount ;     /**< increments by one on each request */
     time_t  nRequestTime ;      /**< time when request starts */
 

Modified: perl/embperl/trunk/epdat2.h
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epdat2.h?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/epdat2.h (original)
+++ perl/embperl/trunk/epdat2.h Tue Jan 22 05:47:20 2013
@@ -287,6 +287,10 @@ struct tComponent
     int            bExit ;             /* We should exit the page */
     int            nPathNdx ;          /* gives the index in the path where 
the current file is found */
     char *  sCWD ;              /**< Current working directory */
+    char    sResetDir[PATH_MAX] ; /**< Reset directory to */
+#ifdef WIN32
+    char    nResetDrive ;       /**< Reset drive to */
+#endif
 
     bool    bEP1Compat ;       /* run in Embperl 1.x compatible mode */    
     int     nPhase ;           /* which phase of the request we are in */

Modified: perl/embperl/trunk/epdom.c
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epdom.c?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/epdom.c (original)
+++ perl/embperl/trunk/epdom.c Tue Jan 22 05:47:20 2013
@@ -137,7 +137,7 @@ tNodeData * dom_malloc (/*in*/ tApp * a,
     if (pMemLast == NULL)
         {
         char buf[256] ;
-        sprintf (buf, "dom_malloc: Out of memory (%u bytes)", sizeof (tPad)) ;
+        sprintf (buf, "dom_malloc: Out of memory (%u bytes)", (unsigned 
int)sizeof (tPad)) ;
        mydie (a, buf) ;
        }
        
@@ -247,7 +247,7 @@ void * str_malloc (/*in*/ tApp * a,
         sprintf (buf, "%zu bytes", n) ;
         LogErrorParam (a, rcOutOfMemory, "str_malloc failed", buf) ;
         */
-        sprintf (buf, "str_malloc: Out of memory (%u bytes)", n + sizeof 
(size_t)) ;
+        sprintf (buf, "str_malloc: Out of memory (%u bytes)", (unsigned int)(n 
+ sizeof (size_t))) ;
        mydie (a, buf) ;
        }
 
@@ -310,7 +310,7 @@ void * str_realloc (/*in*/ tApp * a,
         sprintf (buf, "%zu bytes", n) ;
         LogErrorParam (a, rcOutOfMemory, "str_realloc failed", buf) ;
         */
-        sprintf (buf, "str_realloc: Out of memory (%u bytes)", n + sizeof 
(size_t)) ;
+        sprintf (buf, "str_realloc: Out of memory (%u bytes)", (unsigned 
int)(n + sizeof (size_t))) ;
        mydie (a, buf) ;
        }
     
@@ -3213,7 +3213,6 @@ tNode Node_insertAfter          (/*in*/ 
     tNodeData *        pNewNode      = Node_selfLevel (a, pNewNodeDomTree, 
xNewNode, nNewRepeatLevel) ;
     tNodeData *        pRefNode      = Node_selfLevel (a, pRefNodeDomTree, 
xRefNode, nRefRepeatLevel) ;
     tNodeData *        pNxtNode      = Node_selfNextSibling (a, 
pRefNodeDomTree, pRefNode, nRefRepeatLevel) ;
-    tNode      xOrgNode ;
 
 
     if (pNewNodeDomTree != pRefNodeDomTree)
@@ -3244,7 +3243,6 @@ tNode Node_insertAfter          (/*in*/ 
             pNxtNode = NULL ;
         }
 
-    xOrgNode = pNewNode -> xNdx ;
     if (pNxtNode)
         {
         pNxtNode -> xPrev = pNewNode -> xNdx ;

Modified: perl/embperl/trunk/eputil.c
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/eputil.c?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/eputil.c (original)
+++ perl/embperl/trunk/eputil.c Tue Jan 22 05:47:20 2013
@@ -1563,6 +1563,108 @@ void embperl_SetCWDToFile  (/*i/o*/ regi
         *p = '\0' ;
     }
 
+/* ------------------------------------------------------------------------- */
+/*                                                                           */
+/* Dirname                                                                   */
+/*                                                                           */
+/* returns dir name of file                                                  */
+/*                                                                           */
+/* ------------------------------------------------------------------------- */
+
+
+
+void Dirname (/*in*/ const char * filename,
+              /*out*/ char *      dirname,
+              /*in*/  int         size)
+
+    {
+    char * p = strrchr (filename, '/') ;
+
+    if (p == NULL)
+        {
+        strncpy (dirname, ".", size) ;
+        return ;
+        }
+
+    if (size - 1 > p - filename)
+        size = p - filename ;
+
+    strncpy (dirname, filename, size) ;
+    dirname[size] = '\0' ;
+
+    return ;
+    }
+
+/* 
---------------------------------------------------------------------------- */
+/*                                                                             
 */
+/* Change Dir to sourcefile dir                                                
 */
+/*                                                                             
 */
+/* 
---------------------------------------------------------------------------- */
+
+void ChdirToSource (/*i/o*/ register req * r,
+                    /*in*/  char *         sInputfile)
+
+    {
+    if ((r -> Component.Config.bOptions & optDisableChdir) == 0 &&
+        sInputfile != NULL && *sInputfile != '\0' && 
+        !r -> Component.Param.pInput && !r -> Component.sResetDir[0])
+        {
+        char dir[PATH_MAX];
+#ifdef WIN32
+        char drive[_MAX_DRIVE];
+        char fname[_MAX_FNAME];
+        char ext[_MAX_EXT];
+        char * c = sInputfile ;
+
+        while (*c)
+            { /* convert / to \ */
+            if (*c == '/')
+                *c = '\\' ;
+            c++ ;
+            }
+
+        r -> nResetDrive = _getdrive () ;
+        getcwd (r -> Component.sResetDir, sizeof (r -> Component.sResetDir) - 
1) ;
+
+        _splitpath(sInputfile, drive, dir, fname, ext );
+        _chdrive (drive[0] - 'A' + 1) ;
+#else
+        Dirname (sInputfile, dir, sizeof (dir) - 1) ;
+        getcwd (r -> Component.sResetDir, sizeof (r -> Component.sResetDir) - 
1) ;
+#endif
+        if (dir[0])
+            {
+            if (chdir (dir) < 0)
+                {
+                strncpy (r -> errdat1, dir, sizeof(r -> errdat1) - 1) ;
+                LogError (r, rcChdirError) ;
+                }
+            else
+                {
+                if (!(dir[0] == '/'  
+            #ifdef WIN32
+                    ||
+                    dir[0] == '\\' || 
+                        (isalpha(dir[0]) && dir[1] == ':' && 
+                          (dir[2] == '\\' || dir[2] == '/')) 
+            #endif                  
+                    ))            
+                    {
+                    strcpy (r->Component.sCWD,r -> Component.sResetDir) ;
+                    strcat (r->Component.sCWD,"/") ;
+                    strcat (r->Component.sCWD,dir) ;
+                    }
+                else
+                    strcpy (r->Component.sCWD,dir) ;
+                }
+            }
+        else
+            r -> Component.Config.bOptions |= optDisableChdir ;
+        }
+    else
+        r -> Component.Config.bOptions |= optDisableChdir ;
+    }
+    
 /* 
---------------------------------------------------------------------------- */
 /*                                                                             
 */
 /* Path serach                                                                 
 */

Modified: perl/embperl/trunk/podsrc/Config.spod
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/podsrc/Config.spod?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/podsrc/Config.spod (original)
+++ perl/embperl/trunk/podsrc/Config.spod Tue Jan 22 05:47:20 2013
@@ -1036,6 +1036,10 @@ value is a blank string.
 Disable the removal of spaces and empty lines from the output. This is useful
 for sources other than HTML.
 
+=item optChdirToSource = 0x10000000 (only 2.5 and above) 
+
+Change current working directory to the directory of the sourcefile,
+before executing the source.
 
 =back
 
@@ -1134,10 +1138,9 @@ Set EMBPERL_INPUT_ESCMODE to 0 to get th
 
 =head2 *CFG $component / Embperl_INPUT_CHARSET / input_charset
 
-NOT YET IMPLEMENTED!
-
-
-
+If set to the value "utf8" the source is interpreted as utf8 encoded so
+you can use utf8 literals. It has the same effect as adding "use utf8"
+to a normal Perl script.
 
 
 =head2 *CFG $component / Embperl_Top_Include / top_include / 2.0b10 / no 

Modified: perl/embperl/trunk/test.pl
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/test.pl?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/test.pl (original)
+++ perl/embperl/trunk/test.pl Tue Jan 22 05:47:20 2013
@@ -567,6 +567,11 @@
     'chdir.htm' => { 
         'query_info' => 'a=1&b=2&c=&d=&f=5&g&h=7&=8&=',
         },
+    'chdir/chdir2src.htm' => { 
+        'query_info' => 'a=1&b=2&c=&d=&f=5&g&h=7&=8&=',
+        'option'     => 0x10000000,
+        'cgi'        => 0,
+        },
     'allform/allform.htm' => { 
         'query_info' => 'a=1&b=2&c=&d=&f=5&g&h=7&=8&=',
         'option'     => '8192',
@@ -1196,6 +1201,7 @@ use vars qw ($httpconfsrc $httpconf $EPP
     }
 
 use File::Spec ;
+use FindBin ;
 
 BEGIN 
     { 
@@ -2501,9 +2507,9 @@ do  
        #############
 
         delete $ENV{EMBPERL_ALLOW} ;
-        $frommem = 1 ;
        if ($err == 0)
            {
+            $frommem = 1 ;
            print "\nTesting Ouput Caching...\n\n" ;
     
            #Embperl::Init ($logfile, $defaultdebug) ;

Added: perl/embperl/trunk/test/cmp/chdir2src.htm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/test/cmp/chdir2src.htm?rev=1436750&view=auto
==============================================================================
--- perl/embperl/trunk/test/cmp/chdir2src.htm (added)
+++ perl/embperl/trunk/test/cmp/chdir2src.htm Tue Jan 22 05:47:20 2013
@@ -0,0 +1,38 @@
+<html>
+<head>
+<title>Some tests for Embperl</title>
+</head>
+
+
+<body>
+
+^Script  CWD:
+^Embperl CWD:
+^\$0:
+^\$0 \(absolut\): 
+Equal: No<BR>
+Diff CWD: &gt;/test/html/chdir&lt;<BR>
+^Diff \$0: &gt;
+Test/html: yes
+<table>
+               <tr>
+                       <td>a</td><td>1</td>
+               </tr>
+       
+               <tr>
+                       <td>b</td><td>2</td>
+               </tr>
+       
+               <tr>
+                       <td>f</td><td>5</td>
+               </tr>
+       
+               <tr>
+                       <td>h</td><td>7</td>
+               </tr>
+       </table>
+
+
+
+</body>
+</html>

Modified: perl/embperl/trunk/test/cmp/epform.htm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/test/cmp/epform.htm?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/test/cmp/epform.htm (original)
+++ perl/embperl/trunk/test/cmp/epform.htm Tue Jan 22 05:47:20 2013
@@ -24,20 +24,20 @@ function epform_validate_foo(return_msgs
 do {
 
 do {
-obj = document.foo['datum'] ; if (obj && !(obj.value)) { ids[i] = 'datum' ; 
msgs[i++]='Bitte Datum eintragen'; break;}
+obj = document.foo['datum'] ; if (obj && !(obj instanceof 
NodeList?obj[0].value:obj.value)) { ids[i] = 'datum' ; msgs[i++]='Bitte Datum 
eintragen'; break;}
 obj = document.foo['datum'] ; if (obj && !(obj.value.search(/\d+\.\d+\.\d+/) 
>= 0)) { ids[i] = 'datum' ; msgs[i++]='Datum überprüfen'; break;}
  
 } while (0) ; if (fail) break ;
 
 do {
-obj = document.foo['stunden'] ; if (obj && !(obj.value)) { ids[i] = 'stunden' 
; msgs[i++]='Bitte Stunden eintragen'; break;}
+obj = document.foo['stunden'] ; if (obj && !(obj instanceof 
NodeList?obj[0].value:obj.value)) { ids[i] = 'stunden' ; msgs[i++]='Bitte 
Stunden eintragen'; break;}
 obj = document.foo['stunden'] ; if (obj && 
!(obj.value.search(/^\s*[0-9+-.,][0-9.,eE]*\s*$/) >= 0)) { ids[i] = 'stunden' ; 
msgs[i++]='Stundenzahl nicht numerisch'; break;}
 obj = document.foo['stunden'] ; if (obj && !(obj.value > 0)) { ids[i] = 
'stunden' ; msgs[i++]='Stundenzahl muß >0 sein'; break;}
  
 } while (0) ; if (fail) break ;
 
 do {
-obj = document.foo['kommentar'] ; if (obj && !(obj.value)) { ids[i] = 
'kommentar' ; msgs[i++]='Bitte (sinnvollen) Kommentar eingeben'; break;}
+obj = document.foo['kommentar'] ; if (obj && !(obj instanceof 
NodeList?obj[0].value:obj.value)) { ids[i] = 'kommentar' ; msgs[i++]='Bitte 
(sinnvollen) Kommentar eingeben'; break;}
  
 } while (0) ; if (fail) break ;
  
@@ -54,11 +54,15 @@ obj = document.foo['kommentar'] ; if (ob
             var elems = document.foo[ids[key]] ;
             if (elems)
                 {
-                if (elems.constructor.name != 'NodeList')
+                if (!(elems instanceof NodeList))
                     elems = [elems] ;
+                if (elems[0] instanceof NodeList)
+                    elems = elems[0] ;
                 for (i = 0; i < elems.length ;i++)
                     {
                     var elem = elems[i] ;
+                    if (elem.getAttribute('type') == 'radio')
+                        elem = elem.parentElement ;
                     var eclass = elem.getAttribute('class') ;
                     elem.setAttribute ('class', eclass + ' ' + failed_class) ;
                     elem.setAttribute ('title', msgs[key]) ;
@@ -68,7 +72,10 @@ obj = document.foo['kommentar'] ; if (ob
         }
         
     if (return_msgs)
-        return msgs ;
+        {
+        var ret = [msgs, ids] ;
+        return ret ;
+        }
         
     if (i)
         alert (msgs.join('\n')) ;

Modified: perl/embperl/trunk/test/conf/httpd.conf.src
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/test/conf/httpd.conf.src?rev=1436750&r1=1436749&r2=1436750&view=diff
==============================================================================
--- perl/embperl/trunk/test/conf/httpd.conf.src (original)
+++ perl/embperl/trunk/test/conf/httpd.conf.src Tue Jan 22 05:47:20 2013
@@ -241,6 +241,13 @@ EMBPERL_OPTIONS 16
 EMBPERL_INPUT_ESCMODE 0
 </Location>
 
+<Location /embperl/chdir>
+SetHandler perl-script
+PerlHandler Embperl
+Options ExecCGI
+EMBPERL_OPTIONS 0x10000000
+</Location>
+
 <Location /embperl/nochdir>
 SetHandler perl-script
 PerlHandler Embperl

Added: perl/embperl/trunk/test/html/chdir/chdir2src.htm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/test/html/chdir/chdir2src.htm?rev=1436750&view=auto
==============================================================================
--- perl/embperl/trunk/test/html/chdir/chdir2src.htm (added)
+++ perl/embperl/trunk/test/html/chdir/chdir2src.htm Tue Jan 22 05:47:20 2013
@@ -0,0 +1,36 @@
+<html>
+<head>
+<title>Some tests for Embperl</title>
+</head>
+
+
+<body>
+
+[- use Cwd  ;
+
+$r = shift -]
+
+Script  CWD: [+ $script = getcwd +] <BR>
+Embperl CWD: [+ $ep =     $FindBin::Bin || $ENV{EMBPERL_SRC} +] <BR>
+$0: [+ $abs = $0 +]
+
+[- $abs = $ep . '/' . $0  if (!($0 =~ /^\//)) ; -]
+$0 (absolut): [+ $abs +]
+
+Equal: [+ $script eq $ep?'Yes':'No' +]<BR>
+Diff CWD: [+ do { $script =~ /$ep/ ; ">$'<" } +]<BR>
+Diff $0: [+ do { $abs =~ /$ep/ ; ">$'<" } +]<BR>
+Test/html: [+ $script =~ /test(?:\/|\\)html(?:\/|\\)chdir$/?'yes':'no' +]
+
+[- @ks = sort keys %fdat -]
+
+       <table>
+               <tr>
+                       <td>[+ $ks[$row] +]</td><td>[+ $fdat{$ks[$row] || ''} 
+]</td>
+               </tr>
+       </table>
+
+
+
+</body>
+</html>

Propchange: perl/embperl/trunk/test/html/chdir/chdir2src.htm
------------------------------------------------------------------------------
    svn:executable = *



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

Reply via email to