The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

/*###################################################################################
#
# 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.
#
###################################################################################*/
/*
Errors and Return Codes
*/
enum tRc
{
ok = 0,
rcStackOverflow,
rcStackUnderflow,
rcEndifWithoutIf,
rcElseWithoutIf,
rcEndwhileWithoutWhile,
rcEndtableWithoutTable,
rcCmdNotFound,
rcOutOfMemory,
rcPerlVarError,
rcHashError,
rcArrayError,
rcFileOpenErr,
rcMissingRight,
rcNoRetFifo,
rcMagicError,
rcWriteErr,
rcUnknownNameSpace,
rcInputNotSupported,
rcCannotUsedRecursive,
rcEndtableWithoutTablerow,
rcTablerowOutsideOfTable,
rcEndtextareaWithoutTextarea,
rcArgStackOverflow,
rcEvalErr,
rcNotCompiledForModPerl,
rcLogFileOpenErr,
rcExecCGIMissing,
rcIsDir,
rcXNotSet,
rcDummy,
rcUnknownVarType,
rcPerlWarn,
rcVirtLogNotSet,
rcMissingInput,
rcExit,
rcUntilWithoutDo,
rcEndforeachWithoutForeach,
rcMissingArgs,
rcNotAnArray,
rcCallInputFuncFailed,
rcCallOutputFuncFailed,
rcSubNotFound,
rcImportStashErr,
rcCGIError,
rcUnclosedHtml,
rcUnclosedCmd,
rcNotAllowed,
rcNotHashRef,
rcTagMismatch,
rcCleanupErr,
rcCryptoWrongHeader,
rcCryptoWrongSyntax,
rcCryptoNotSupported,
rcCryptoBufferOverflow,
rcCryptoErr,
rcUnknownProvider,
rcXalanError,
rcLibXSLTError,
rcMissingParam,
rcNotCodeRef,
rcUnknownRecipe,
rcTypeMismatch,
rcChdirError,
rcUnknownSyntax,
rcCannotCheckUri,
rcSetupSessionErr,
rcRefcntNotOne,
rcApacheErr,
rcTooDeepNested,
rcUnknownOption,
rcTimeFormatErr,
rcSubCallNotRequest,
rcTokenNotFound,
rcNotScalarRef,
rcFormDataTruncated,
rcForbidden = 403,
rcNotFound = 404,
rcDecline = -1
} ;
/*
Debug Flags
*/
enum dbg
{
dbgNone = 0,
dbgStd = 1,
dbgMem = 2,
dbgEval = 4,
dbgCmd = 8,
dbgEnv = 16,
dbgForm = 32,
dbgTab = 64,
dbgInput = 128,
dbgFlushOutput = 256,
dbgFlushLog = 512,
dbgAllCmds = 1024,
dbgSource = 2048,
dbgFunc = 4096,
dbgLogLink = 8192,
dbgDefEval = 16384,
dbgOutput = 0x08000,
dbgDOM = 0x10000,
dbgRun = 0x20000,
dbgHeadersIn = 0x40000,
dbgShowCleanup = 0x80000,
dbgProfile = 0x100000,
dbgSession = 0x200000,
dbgImport = 0x400000,
dbgBuildToken = 0x800000,
dbgParse = 0x1000000,
dbgObjectSearch = 0x2000000,
dbgCache = 0x4000000,
dbgCompile = 0x8000000,
dbgXML = 0x10000000,
dbgXSLT = 0x20000000,
dbgCheckpoint = 0x40000000,
dbgAll = -1
} ;
/*
Option Flags
*/
enum opt
{
optDisableVarCleanup = 1,
optDisableEmbperlErrorPage = 2,
optSafeNamespace = 4,
optOpcodeMask = 8,
optRawInput = 16,
optSendHttpHeader = 32,
optEarlyHttpHeader = 64,
optDisableChdir = 128,
optDisableFormData = 256,
optDisableHtmlScan = 512,
optDisableInputScan = 1024,
optDisableTableScan = 2048,
optDisableMetaScan = 4096,
optAllFormData = 8192,
optRedirectStdout = 16384,
optUndefToEmptyValue = 32768,
optNoHiddenEmptyValue = 65536,
optAllowZeroFilesize = 0x20000,
optReturnError = 0x40000,
optKeepSrcInMemory = 0x80000,
optKeepSpaces = 0x100000,
optOpenLogEarly = 0x200000,
optNoUncloseWarn = 0x400000,
optDisableSelectScan = 0x800000,
optEnableChdir = 0x1000000,
optFormDataNoUtf8 = 0x2000000,
optShowBacktrace = 0x8000000,
optChdirToSource = 0x10000000
} ;
/* --- output escaping --- */
enum tEscMode
{
escNone = 0,
escHtml = 1,
escUrl = 2,
escEscape = 4,
escXML = 8,
escStd = 7,
escHtmlUtf8 = 128
} ;
/* --- output mode --- */
enum tOutputMode
{
omodeHtml = 0,
omodeXml = 1,
} ;
/* --- output esc charset --- */
enum tOutputEscChareset
{
ocharsetUtf8 = 0,
ocharsetLatin1 = 1,
ocharsetLatin2 = 2,
} ;
/* --- input escaping --- */
enum tInputEscMode
{
iescNone = 0,
iescHtml = 1,
iescUrl = 2,
iescRemoveTags = 4,
} ;
/* --- session handling --- */
enum tSessionMode
{
smodeNone = 0,
smodeUDatCookie = 1,
smodeUDatParam = 2,
smodeUDatUrl = 4,
smodeSDatParam = 0x20
} ;
#define smodeStd smodeUDatCookie
/* --- misc --- */
#if !defined (pid_t) && defined (WIN32)
#define pid_t int
#endif
extern pid_t nPid ;
#ifdef WIN32
#define PATH_SEPARATOR_CHAR '\\'
#define PATH_SEPARATOR_STR "\\"
#else
#define PATH_SEPARATOR_CHAR '/'
#define PATH_SEPARATOR_STR "/"
#endif