Mailing List Archive

svn commit: r1436750 - in /perl/embperl/trunk: ./ podsrc/ test/cmp/ test/conf/ test/html/chdir/
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-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org