You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2001/10/31 15:13:52 UTC
cvs commit: embperl epmain.c
richter 01/10/31 06:13:52
Modified: . Tag: Embperl2c epmain.c
Log:
Embperl 2 - verbose error messages
Revision Changes Path
No revision
No revision
1.75.4.49 +85 -58 embperl/epmain.c
Index: epmain.c
===================================================================
RCS file: /home/cvs/embperl/epmain.c,v
retrieving revision 1.75.4.48
retrieving revision 1.75.4.49
diff -u -r1.75.4.48 -r1.75.4.49
--- epmain.c 2001/10/31 13:47:41 1.75.4.48
+++ epmain.c 2001/10/31 14:13:51 1.75.4.49
@@ -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.48 2001/10/31 13:47:41 richter Exp $
+# $Id: epmain.c,v 1.75.4.49 2001/10/31 14:13:51 richter Exp $
#
###################################################################################*/
@@ -75,7 +75,9 @@
const char * msg ;
char * sText ;
SV * pSV ;
+ SV * pSVLine ;
SV ** ppSV ;
+ STRLEN l ;
int n ;
@@ -91,68 +93,93 @@
switch (rc)
{
- case ok: msg ="[%d]ERR: %d: Line %d: ok%s%s" ; break ;
- case rcStackOverflow: msg ="[%d]ERR: %d: Line %d: Stack Overflow%s%s" ; break ;
- case rcArgStackOverflow: msg ="[%d]ERR: %d: Line %d: Argumnet Stack Overflow (%s)%s" ; break ;
- case rcStackUnderflow: msg ="[%d]ERR: %d: Line %d: Stack Underflow%s%s" ; break ;
- case rcEndifWithoutIf: msg ="[%d]ERR: %d: Line %d: endif without if%s%s" ; break ;
- case rcElseWithoutIf: msg ="[%d]ERR: %d: Line %d: else without if%s%s" ; break ;
- case rcEndwhileWithoutWhile: msg ="[%d]ERR: %d: Line %d: endwhile without while%s%s" ; break ;
- case rcEndtableWithoutTable: msg ="[%d]ERR: %d: Line %d: blockend <%s> does not match blockstart <%s>" ; break ;
- case rcTablerowOutsideOfTable: msg ="[%d]ERR: %d: Line %d: <tr> outside of table%s%s" ; break ;
- case rcCmdNotFound: msg ="[%d]ERR: %d: Line %d: Unknown Command %s%s" ; break ;
- case rcOutOfMemory: msg ="[%d]ERR: %d: Line %d: Out of memory%s%s" ; break ;
- case rcPerlVarError: msg ="[%d]ERR: %d: Line %d: Perl variable error %s%s" ; break ;
- case rcHashError: msg ="[%d]ERR: %d: Line %d: Perl hash error, %%%s does not exist%s" ; break ;
- case rcArrayError: msg ="[%d]ERR: %d: Line %d: Perl array error , @%s does not exist%s" ; break ;
- case rcFileOpenErr: msg ="[%d]ERR: %d: Line %d: File %s open error: %s" ; break ;
- case rcLogFileOpenErr: msg ="[%d]ERR: %d: Line %d: Logfile %s open error: %s" ; break ;
- case rcMissingRight: msg ="[%d]ERR: %d: Line %d: Missing right %s%s" ; break ;
- case rcNoRetFifo: msg ="[%d]ERR: %d: Line %d: No Return Fifo%s%s" ; break ;
- case rcMagicError: msg ="[%d]ERR: %d: Line %d: Perl Magic Error%s%s" ; break ;
- case rcWriteErr: msg ="[%d]ERR: %d: Line %d: File write Error%s%s" ; break ;
- case rcUnknownNameSpace: msg ="[%d]ERR: %d: Line %d: Namespace %s unknown%s" ; break ;
- case rcInputNotSupported: msg ="[%d]ERR: %d: Line %d: Input not supported in mod_perl mode%s%s" ; break ;
- case rcCannotUsedRecursive: msg ="[%d]ERR: %d: Line %d: Cannot be called recursivly in mod_perl mode%s%s" ; break ;
- case rcEndtableWithoutTablerow: msg ="[%d]ERR: %d: Line %d: </tr> without <tr>%s%s" ; break ;
- case rcEndtextareaWithoutTextarea: msg ="[%d]ERR: %d: Line %d: </textarea> without <textarea>%s%s" ; break ;
- case rcEvalErr: msg ="[%d]ERR: %d: Line %d: Error in Perl code: %s%s" ; break ;
- case rcNotCompiledForModPerl: msg ="[%d]ERR: %d: Line %d: Embperl is not compiled for mod_perl. Rerun Makefile.PL and give the correct Apache source tree location %s%s" ; break ;
- case rcExecCGIMissing: msg ="[%d]ERR: %d: Line %d: Forbidden %s: Options ExecCGI not set in your Apache configs%s" ; break ;
- case rcIsDir: msg ="[%d]ERR: %d: Line %d: Forbidden %s is a directory%s" ; break ;
- case rcXNotSet: msg ="[%d]ERR: %d: Line %d: Forbidden %s X Bit not set%s" ; break ;
- case rcNotFound: msg ="[%d]ERR: %d: Line %d: Not found %s%s" ; break ;
- case rcUnknownVarType: msg ="[%d]ERR: %d: Line %d: Type for Variable %s is unknown %s" ; break ;
- case rcPerlWarn: msg ="[%d]ERR: %d: Line %d: Warning in Perl code: %s%s" ; break ;
- case rcVirtLogNotSet: msg ="[%d]ERR: %d: Line %d: EMBPERL_VIRTLOG must be set, when dbgLogLink is set %s%s" ; break ;
- case rcMissingInput: msg ="[%d]ERR: %d: Line %d: Sourcedata missing %s%s" ; break ;
- case rcUntilWithoutDo: msg ="[%d]ERR: %d: Line %d: until without do%s%s" ; break ;
- case rcEndforeachWithoutForeach:msg ="[%d]ERR: %d: Line %d: endforeach without foreach%s%s" ; break ;
- case rcMissingArgs: msg ="[%d]ERR: %d: Line %d: Too few arguments%s%s" ; break ;
- case rcNotAnArray: msg ="[%d]ERR: %d: Line %d: Second Argument must be array/list%s%s" ; break ;
- case rcCallInputFuncFailed: msg ="[%d]ERR: %d: Line %d: Call to Input Function failed: %s%s" ; break ;
- case rcCallOutputFuncFailed: msg ="[%d]ERR: %d: Line %d: Call to Output Function failed: %s%s" ; break ;
- case rcSubNotFound: msg ="[%d]ERR: %d: Line %d: Call to unknown Embperl macro %s%s" ; break ;
- case rcImportStashErr: msg ="[%d]ERR: %d: Line %d: Package %s for import unknown%s" ; break ;
- case rcCGIError: msg ="[%d]ERR: %d: Line %d: Setup of CGI.pm failed: %s%s" ; break ;
- case rcUnclosedHtml: msg ="[%d]ERR: %d: Line %d: Unclosed HTML tag <%s> at end of file %s" ; break ;
- case rcUnclosedCmd: msg ="[%d]ERR: %d: Line %d: Unclosed command [$ %s $] at end of file %s" ; break ;
- case rcNotAllowed: msg ="[%d]ERR: %d: Line %d: Forbidden %s: Does not match EMBPERL_ALLOW %s" ; break ;
- case rcNotHashRef: msg ="[%d]ERR: %d: Line %d: %s need hashref in %s" ; break ;
- case rcTagMismatch: msg ="[%d]ERR: %d: Line %d: Endtag '%s' doesn't match starttag '%s'" ; break ;
- case rcCleanupErr: msg ="[%d]ERR: %d: Line %d: Error in cleanup %s%s" ; break ;
- case rcCryptoWrongHeader: msg ="[%d]ERR: %d: Line %d: Decrypt-error: Not encrypted (%s)%s" ; break ;
- case rcCryptoWrongSyntax: msg ="[%d]ERR: %d: Line %d: Decrypt-error: Wrong syntax (%s)%s" ; break ;
- case rcCryptoNotSupported: msg ="[%d]ERR: %d: Line %d: Decrypt-error: Not supported (%s)%s" ; break ;
- case rcCryptoBufferOverflow: msg ="[%d]ERR: %d: Line %d: Decrypt-error: Buffer overflow (%s)%s" ; break ;
- case rcCryptoErr: msg ="[%d]ERR: %d: Line %d: Decrypt-error: OpenSSL error (%s)%s" ; break ;
+ case ok: msg ="[%d]ERR: %d: %s ok%s%s" ; break ;
+ case rcStackOverflow: msg ="[%d]ERR: %d: %s Stack Overflow%s%s" ; break ;
+ case rcArgStackOverflow: msg ="[%d]ERR: %d: %s Argumnet Stack Overflow (%s)%s" ; break ;
+ case rcStackUnderflow: msg ="[%d]ERR: %d: %s Stack Underflow%s%s" ; break ;
+ case rcEndifWithoutIf: msg ="[%d]ERR: %d: %s endif without if%s%s" ; break ;
+ case rcElseWithoutIf: msg ="[%d]ERR: %d: %s else without if%s%s" ; break ;
+ case rcEndwhileWithoutWhile: msg ="[%d]ERR: %d: %s endwhile without while%s%s" ; break ;
+ case rcEndtableWithoutTable: msg ="[%d]ERR: %d: %s blockend <%s> does not match blockstart <%s>" ; break ;
+ case rcTablerowOutsideOfTable: msg ="[%d]ERR: %d: %s <tr> outside of table%s%s" ; break ;
+ case rcCmdNotFound: msg ="[%d]ERR: %d: %s Unknown Command %s%s" ; break ;
+ case rcOutOfMemory: msg ="[%d]ERR: %d: %s Out of memory%s%s" ; break ;
+ case rcPerlVarError: msg ="[%d]ERR: %d: %s Perl variable error %s%s" ; break ;
+ case rcHashError: msg ="[%d]ERR: %d: %s Perl hash error, %%%s does not exist%s" ; break ;
+ case rcArrayError: msg ="[%d]ERR: %d: %s Perl array error , @%s does not exist%s" ; break ;
+ case rcFileOpenErr: msg ="[%d]ERR: %d: %s File %s open error: %s" ; break ;
+ case rcLogFileOpenErr: msg ="[%d]ERR: %d: %s Logfile %s open error: %s" ; break ;
+ case rcMissingRight: msg ="[%d]ERR: %d: %s Missing right %s%s" ; break ;
+ case rcNoRetFifo: msg ="[%d]ERR: %d: %s No Return Fifo%s%s" ; break ;
+ case rcMagicError: msg ="[%d]ERR: %d: %s Perl Magic Error%s%s" ; break ;
+ case rcWriteErr: msg ="[%d]ERR: %d: %s File write Error%s%s" ; break ;
+ case rcUnknownNameSpace: msg ="[%d]ERR: %d: %s Namespace %s unknown%s" ; break ;
+ case rcInputNotSupported: msg ="[%d]ERR: %d: %s Input not supported in mod_perl mode%s%s" ; break ;
+ case rcCannotUsedRecursive: msg ="[%d]ERR: %d: %s Cannot be called recursivly in mod_perl mode%s%s" ; break ;
+ case rcEndtableWithoutTablerow: msg ="[%d]ERR: %d: %s </tr> without <tr>%s%s" ; break ;
+ case rcEndtextareaWithoutTextarea: msg ="[%d]ERR: %d: %s </textarea> without <textarea>%s%s" ; break ;
+ case rcEvalErr: msg ="[%d]ERR: %d: %s Error in Perl code: %s%s" ; break ;
+ case rcNotCompiledForModPerl: msg ="[%d]ERR: %d: %s Embperl is not compiled for mod_perl. Rerun Makefile.PL and give the correct Apache source tree location %s%s" ; break ;
+ case rcExecCGIMissing: msg ="[%d]ERR: %d: %s Forbidden %s: Options ExecCGI not set in your Apache configs%s" ; break ;
+ case rcIsDir: msg ="[%d]ERR: %d: %s Forbidden %s is a directory%s" ; break ;
+ case rcXNotSet: msg ="[%d]ERR: %d: %s Forbidden %s X Bit not set%s" ; break ;
+ case rcNotFound: msg ="[%d]ERR: %d: %s Not found %s%s" ; break ;
+ case rcUnknownVarType: msg ="[%d]ERR: %d: %s Type for Variable %s is unknown %s" ; break ;
+ case rcPerlWarn: msg ="[%d]ERR: %d: %s Warning in Perl code: %s%s" ; break ;
+ case rcVirtLogNotSet: msg ="[%d]ERR: %d: %s EMBPERL_VIRTLOG must be set, when dbgLogLink is set %s%s" ; break ;
+ case rcMissingInput: msg ="[%d]ERR: %d: %s Sourcedata missing %s%s" ; break ;
+ case rcUntilWithoutDo: msg ="[%d]ERR: %d: %s until without do%s%s" ; break ;
+ case rcEndforeachWithoutForeach:msg ="[%d]ERR: %d: %s endforeach without foreach%s%s" ; break ;
+ case rcMissingArgs: msg ="[%d]ERR: %d: %s Too few arguments%s%s" ; break ;
+ case rcNotAnArray: msg ="[%d]ERR: %d: %s Second Argument must be array/list%s%s" ; break ;
+ case rcCallInputFuncFailed: msg ="[%d]ERR: %d: %s Call to Input Function failed: %s%s" ; break ;
+ case rcCallOutputFuncFailed: msg ="[%d]ERR: %d: %s Call to Output Function failed: %s%s" ; break ;
+ case rcSubNotFound: msg ="[%d]ERR: %d: %s Call to unknown Embperl macro %s%s" ; break ;
+ case rcImportStashErr: msg ="[%d]ERR: %d: %s Package %s for import unknown%s" ; break ;
+ case rcCGIError: msg ="[%d]ERR: %d: %s Setup of CGI.pm failed: %s%s" ; break ;
+ case rcUnclosedHtml: msg ="[%d]ERR: %d: %s Unclosed HTML tag <%s> at end of file %s" ; break ;
+ case rcUnclosedCmd: msg ="[%d]ERR: %d: %s Unclosed command [$ %s $] at end of file %s" ; break ;
+ case rcNotAllowed: msg ="[%d]ERR: %d: %s Forbidden %s: Does not match EMBPERL_ALLOW %s" ; break ;
+ case rcNotHashRef: msg ="[%d]ERR: %d: %s %s need hashref in %s" ; break ;
+ case rcTagMismatch: msg ="[%d]ERR: %d: %s Endtag '%s' doesn't match starttag '%s'" ; break ;
+ case rcCleanupErr: msg ="[%d]ERR: %d: %s Error in cleanup %s%s" ; break ;
+ case rcCryptoWrongHeader: msg ="[%d]ERR: %d: %s Decrypt-error: Not encrypted (%s)%s" ; break ;
+ case rcCryptoWrongSyntax: msg ="[%d]ERR: %d: %s Decrypt-error: Wrong syntax (%s)%s" ; break ;
+ case rcCryptoNotSupported: msg ="[%d]ERR: %d: %s Decrypt-error: Not supported (%s)%s" ; break ;
+ case rcCryptoBufferOverflow: msg ="[%d]ERR: %d: %s Decrypt-error: Buffer overflow (%s)%s" ; break ;
+ case rcCryptoErr: msg ="[%d]ERR: %d: %s Decrypt-error: OpenSSL error (%s)%s" ; break ;
- default: msg ="[%d]ERR: %d: Line %d: Error %s%s" ; break ;
+ default: msg ="[%d]ERR: %d: %s Error %s%s" ; break ;
}
- pSV = newSVpvf (msg, r -> nPid , rc, r -> Buf.nSourceline, r -> errdat1, r -> errdat2) ;
+ if (rc != rcPerlWarn && rc != rcEvalErr)
+ {
+ int len ;
+ char * p = NULL ;
+ if (!r -> Buf.pFile -> sSourcefile)
+ p = "" ;
+ if (!p)
+ p = strrchr (r -> Buf.pFile -> sSourcefile, '/') ;
+ if (!p)
+ p = strrchr (r -> Buf.pFile -> sSourcefile, '\\') ;
+ else
+ p++ ;
+ if (!p)
+ p = r -> Buf.pFile -> sSourcefile ;
+ else
+ p++ ;
+ len = strlen (p) ;
+ pSVLine = newSVpvf ("%s(%d):", p, r -> Buf.nSourceline) ;
+ }
+
+
+
+ pSV = newSVpvf (msg, r -> nPid , rc, pSVLine?SvPV(pSVLine, l):"", r -> errdat1, r -> errdat2) ;
+
+ if (pSVLine)
+ SvREFCNT_dec(pSVLine) ;
- sText = SvPV (pSV, na) ;
+ sText = SvPV (pSV, l) ;
lprintf (r, "%s\n", sText) ;
---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org