Embperl
view release on metacpan or search on metacpan
pSVK = newSVpv (pKey, nKey) ;
av_push (pFormArray, pSVK) ;
}
if (bDebug)
lprintf (r -> pApp, "[%d]FORM: %s=%s\n", r -> pThread -> nPid, pKey, pVal) ;
}
}
pKey = pVal = p ;
nKey = nVal = 0 ;
mayutf8 = 0 ;
if (*pQueryString == '\0')
{
_free (r, pMem) ;
return ok ;
}
break ;
case '=':
if (!bInValue)
{
nKey = p - pKey ;
*p++ = r -> Config.cMultFieldSep ;
nVal = 0 ;
pVal = p ;
pQueryString++ ;
nLen-- ;
bInValue = 1 ;
break ;
}
/* fall through */
default:
c = *p++ = *pQueryString++ ;
nLen-- ;
#ifdef UTF8_IS_START
if (!bNoUtf8)
mayutf8 += UTF8_IS_START(c) ;
#endif
break ;
}
}
return ok ;
}
/*---------------------------------------------------------------------------
* embperl_SetupFormData
*/
/*!
*
* \_en
* Get the posted form data and put them in %fdat/@ffld
* \endif
*
* \_de
* Lie?t die formular daten ein und legt sie in %fdat/@ffld ab
* \endif
*
* ------------------------------------------------------------------------ */
static int embperl_SetupFormData (/*i/o*/ register req * r)
{
epTHX_
char * p = NULL ;
char * f ;
int rc = ok ;
STRLEN len = 0 ;
char sLen [20] ;
const char * sType ;
hv_clear (r -> pThread -> pFormHash) ;
hv_clear (r -> pThread -> pFormSplitHash) ;
av_clear (r -> pThread -> pFormArray) ;
hv_clear (r -> pThread -> pInputHash) ;
if (r -> Config.bOptions & optDisableFormData)
return ok ;
/* print out of env set tainted, so reset it now */
tainted = 0 ;
#ifdef APACHE
if (r -> pApacheReq)
{
const char * sLength = apr_table_get(r -> pApacheReq->headers_in, "Content-Length") ;
sType = apr_table_get(r -> pApacheReq->headers_in, "Content-Type") ;
len = sLength?atoi (sLength):0 ;
}
else
#endif
{
sLen [0] = '\0' ;
GetHashValue (r, r -> pThread -> pEnvHash, "CONTENT_LENGTH", sizeof (sLen) - 1, sLen) ;
sType = GetHashValueStr (aTHX_ r -> pThread -> pEnvHash, "CONTENT_TYPE", "") ;
len = atoi (sLen) ;
}
if (sType && strncmp (sType, "multipart/form-data", 19) == 0)
{
dSP ;
PUSHMARK(sp);
XPUSHs(r -> _perlsv);
PUTBACK;
perl_call_method ("get_multipart_formdata", G_EVAL) ;
if (SvTRUE (ERRSV))
{
STRLEN l ;
strncpy (r -> errdat1, SvPV (ERRSV, l), sizeof (r -> errdat1) - 1) ;
LogError (r, rcEvalErr) ;
sv_setpv(ERRSV,"");
POPs ; /* cleanup stack */
}
tainted = 0 ;
( run in 1.275 second using v1.01-cache-2.11-cpan-39bf76dae61 )