/*###################################################################################
#
# Embperl - Copyright (c) 1997-2008 Gerald Richter / ecos gmbh www.ecos.de
# Embperl - Copyright (c) 2008-2015 Gerald Richter
# Embperl - Copyright (c) 2015-2023 actevy.io
#
# You may distribute under the terms of either the GNU General Public
# License or the Artistic License, as specified in the Perl README file.
# For use with Apache httpd and mod_perl, see also Apache copyright.
#
# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
###################################################################################*/
#include "ep.h"
#include "epmacro.h"
static
char
sDebugGlobName [] =
"main::_<%s"
;
/* ---------------------------------------------------------------------------- */
/* */
/* Setup Debug Informations */
/* */
/* ---------------------------------------------------------------------------- */
int
SetupDebugger (
/*i/o*/
register
req * r)
{
/*HV * pDebugHash ;*/
AV * pDebugArray ;
SV * sDebugNameSV = newSVpvf (sDebugGlobName, r -> Component.sSourcefile) ;
newSVpvf2(sDebugNameSV) ;
char
* p ;
char
* end ;
int
i ;
STRLEN n ;
/*GV * tmpgv ;*/
/*
if ((pDebugHash = perl_get_hv (SvPV (sDebugNameSV, n), TRUE)) == NULL)
{
LogError (r, rcHashError) ;
return 1 ;
}
*/
if
((pDebugArray = perl_get_av (SvPV (sDebugNameSV, n), TRUE)) == NULL)
{
LogError (r, rcArrayError) ;
return
1 ;
}
/*
pDebugArray = GvAV(gv_AVadd(tmpgv = gv_fetchpv(SvPV (sDebugNameSV, n), TRUE, SVt_PVAV))) ;
GvMULTI_on (tmpgv) ;
AvREAL_off (pDebugArray) ;
*/
p = r -> Component.pBuf ;
i = 100 ;
while
(*p)
{
end =
strchr
(p,
'\n'
) ;
if
(end)
{
SV * pLine = newSVpv (p, end - p + 1) ;
/* lprintf (r -> pApp, "i = %d len = %d, str = %s", i, end - p + 1, SvPV (pLine, n)) ; */
av_store (pDebugArray, i++, pLine) ;
p = end + 1 ;
}
else
if
(p < r -> Component.pEndPos)
{
av_store (pDebugArray, i++, newSVpv (p, r -> Component.pEndPos - p + 1)) ;
break
;
}
}
/*
i = 100 ;
while (i < AvFILL (pDebugArray))
{
SV ** pLine = av_fetch (pDebugArray, i++, 0) ;
if (pLine && *pLine)
lprintf (r -> pApp, "i = %d len = %d, str = %s", i, end - p + 1, SvPV (*pLine, n)) ;
}
*/
return
ok ;
}