FORM 4.3
pre.c File Reference
#include "form3.h"
#include "vector.h"

Go to the source code of this file.

Macros

#define STRINGIFY(x)
#define STRINGIFY__(x)
#define SKIPBUFSIZE   20
#define KILL   "kill"
#define KILLALL   "killall"
#define DAEMON   "daemon"
#define SHELL   "shell"
#define STDERR   "stderr"
#define TRUE_EXPR   "true"
#define FALSE_EXPR   "false"
#define NOSHELL   "noshell"
#define TERMINAL   "terminal"

Functions

UBYTE GetInput ()
VOID ClearPushback ()
UBYTE GetChar (int level)
VOID CharOut (UBYTE c)
VOID UnsetAllowDelay ()
UBYTE * GetPreVar (UBYTE *name, int flag)
int PutPreVar (UBYTE *name, UBYTE *value, UBYTE *args, int mode)
VOID PopPreVars (int tonumber)
VOID IniModule (int type)
VOID IniSpecialModule (int type)
VOID PreProcessor ()
int PreProInstruction ()
int LoadInstruction (int mode)
int LoadStatement (int type)
int ExpandTripleDots (int par)
KEYWORDFindKeyWord (UBYTE *theword, KEYWORD *table, int size)
KEYWORDFindInKeyWord (UBYTE *theword, KEYWORD *table, int size)
int TheDefine (UBYTE *s, int mode)
int DoCommentChar (UBYTE *s)
int DoPreAssign (UBYTE *s)
int DoDefine (UBYTE *s)
int DoRedefine (UBYTE *s)
int ClearMacro (UBYTE *name)
int TheUndefine (UBYTE *name)
int DoUndefine (UBYTE *s)
int DoInclude (UBYTE *s)
int DoReverseInclude (UBYTE *s)
int Include (UBYTE *s, int type)
int DoPreExchange (UBYTE *s)
int DoCall (UBYTE *s)
int DoDebug (UBYTE *s)
int DoTerminate (UBYTE *s)
int DoDo (UBYTE *s)
int DoBreakDo (UBYTE *s)
int DoElse (UBYTE *s)
int DoElseif (UBYTE *s)
int DoEnddo (UBYTE *s)
int DoEndif (UBYTE *s)
int DoEndprocedure (UBYTE *s)
int DoIf (UBYTE *s)
int DoIfdef (UBYTE *s, int par)
int DoIfydef (UBYTE *s)
int DoIfndef (UBYTE *s)
int DoInside (UBYTE *s)
int DoEndInside (UBYTE *s)
int DoMessage (UBYTE *s)
int DoPipe (UBYTE *s)
int DoPrcExtension (UBYTE *s)
int DoPreOut (UBYTE *s)
int DoPrePrintTimes (UBYTE *s)
int DoPreAppend (UBYTE *s)
int DoPreCreate (UBYTE *s)
int DoPreRemove (UBYTE *s)
int DoPreClose (UBYTE *s)
int DoPreWrite (UBYTE *s)
int DoProcedure (UBYTE *s)
int DoPreBreak (UBYTE *s)
int DoPreCase (UBYTE *s)
int DoPreDefault (UBYTE *s)
int DoPreEndSwitch (UBYTE *s)
int DoPreSwitch (UBYTE *s)
int DoPreShow (UBYTE *s)
int DoSystem (UBYTE *s)
int PreLoad (PRELOAD *p, UBYTE *start, UBYTE *stop, int mode, char *message)
int PreSkip (UBYTE *start, UBYTE *stop, int mode)
VOID StartPrepro ()
int EvalPreIf (UBYTE *s)
UBYTE * PreIfEval (UBYTE *s, int *value)
int PreCmp (int type, int val, UBYTE *t, int type2, int val2, UBYTE *t2, int cmpop)
int PreEq (int type, int val, UBYTE *t, int type2, int val2, UBYTE *t2, int eqop)
UBYTE * pParseObject (UBYTE *s, int *type, LONG *val2)
UBYTE * PreCalc ()
UBYTE * PreEval (UBYTE *s, LONG *x)
void AddToPreTypes (int type)
void MessPreNesting (int par)
int DoPreAddSeparator (UBYTE *s)
int DoPreRmSeparator (UBYTE *s)
int DoExternal (UBYTE *s)
int DoPrompt (UBYTE *s)
int DoSetExternal (UBYTE *s)
int DoSetExternalAttr (UBYTE *s)
int DoRmExternal (UBYTE *s)
int DoFromExternal (UBYTE *s)
int DoToExternal (UBYTE *s)
UBYTE * defineChannel (UBYTE *s, HANDLERS *h)
int writeToChannel (int wtype, UBYTE *s, HANDLERS *h)
int DoFactDollar (UBYTE *s)
WORD GetDollarNumber (UBYTE **inp, DOLLARS d)
int DoSetRandom (UBYTE *s)
int DoOptimize (UBYTE *s)
int DoClearOptimize (UBYTE *s)
int DoSkipExtraSymbols (UBYTE *s)
int DoPreReset (UBYTE *s)
int DoPreAppendPath (UBYTE *s)
int DoPrePrependPath (UBYTE *s)
int DoTimeOutAfter (UBYTE *s)

Detailed Description

This is the preprocessor and all its routines.

Definition in file pre.c.

Macro Definition Documentation

◆ STRINGIFY

#define STRINGIFY ( x)
Value:
STRINGIFY__(x)

Definition at line 4127 of file pre.c.

◆ STRINGIFY__

#define STRINGIFY__ ( x)
Value:
#x

Definition at line 4128 of file pre.c.

◆ SKIPBUFSIZE

#define SKIPBUFSIZE   20

Definition at line 4251 of file pre.c.

◆ KILL

#define KILL   "kill"

Definition at line 5402 of file pre.c.

◆ KILLALL

#define KILLALL   "killall"

Definition at line 5403 of file pre.c.

◆ DAEMON

#define DAEMON   "daemon"

Definition at line 5404 of file pre.c.

◆ SHELL

#define SHELL   "shell"

Definition at line 5405 of file pre.c.

◆ STDERR

#define STDERR   "stderr"

Definition at line 5406 of file pre.c.

◆ TRUE_EXPR

#define TRUE_EXPR   "true"

Definition at line 5408 of file pre.c.

◆ FALSE_EXPR

#define FALSE_EXPR   "false"

Definition at line 5409 of file pre.c.

◆ NOSHELL

#define NOSHELL   "noshell"

Definition at line 5410 of file pre.c.

◆ TERMINAL

#define TERMINAL   "terminal"

Definition at line 5411 of file pre.c.

Function Documentation

◆ GetInput()

UBYTE GetInput ( )

Definition at line 119 of file pre.c.

◆ ClearPushback()

VOID ClearPushback ( )

Definition at line 148 of file pre.c.

◆ GetChar()

UBYTE GetChar ( int level)

Definition at line 166 of file pre.c.

◆ CharOut()

VOID CharOut ( UBYTE c)

Definition at line 413 of file pre.c.

◆ UnsetAllowDelay()

VOID UnsetAllowDelay ( )

Definition at line 434 of file pre.c.

◆ GetPreVar()

UBYTE * GetPreVar ( UBYTE * name,
int flag )

Definition at line 460 of file pre.c.

◆ PutPreVar()

int PutPreVar ( UBYTE * name,
UBYTE * value,
UBYTE * args,
int mode )

Inserts/Updates a preprocessor variable in the name administration.

Parameters
nameCharacter string with the variable name.
valueCharacter string with a possible value. Special case: if this argument is zero, then we have no value. Note: This is different from having an empty argument! This should only occur when the name starts with a ?
argsCharacter string with possible arguments.
mode=0: always create a new name entry, =1: try to do a redefinition if possible.
Returns
Index of used entry in name list.

Definition at line 642 of file pre.c.

Referenced by ClearOptimize(), Generator(), Optimize(), PF_BroadcastRedefinedPreVars(), StartVariables(), and TheDefine().

◆ PopPreVars()

VOID PopPreVars ( int tonumber)

Definition at line 744 of file pre.c.

◆ IniModule()

VOID IniModule ( int type)

Definition at line 759 of file pre.c.

◆ IniSpecialModule()

VOID IniSpecialModule ( int type)

Definition at line 861 of file pre.c.

◆ PreProcessor()

VOID PreProcessor ( )

Definition at line 871 of file pre.c.

◆ PreProInstruction()

int PreProInstruction ( )

Definition at line 1092 of file pre.c.

◆ LoadInstruction()

int LoadInstruction ( int mode)

Definition at line 1180 of file pre.c.

◆ LoadStatement()

int LoadStatement ( int type)

Definition at line 1378 of file pre.c.

◆ ExpandTripleDots()

int ExpandTripleDots ( int par)

Definition at line 1513 of file pre.c.

◆ FindKeyWord()

KEYWORD * FindKeyWord ( UBYTE * theword,
KEYWORD * table,
int size )

Definition at line 1881 of file pre.c.

◆ FindInKeyWord()

KEYWORD * FindInKeyWord ( UBYTE * theword,
KEYWORD * table,
int size )

Definition at line 1912 of file pre.c.

◆ TheDefine()

int TheDefine ( UBYTE * s,
int mode )

Preprocessor assignment. Possible arguments and values are treated and the new preprocessor variable is put into the name administration.

Parameters
sPointer to the character string following the preprocessor command.
modeBitmask. 0-bit clear: always create a new name entry, 0-bit set: try to redefine an existing name, 1-bit set: ignore preprocessor if/switch status.
Returns
zero: no errors, negative number: errors.

Definition at line 1942 of file pre.c.

References PutPreVar().

◆ DoCommentChar()

int DoCommentChar ( UBYTE * s)

Definition at line 2015 of file pre.c.

◆ DoPreAssign()

int DoPreAssign ( UBYTE * s)

Definition at line 2046 of file pre.c.

◆ DoDefine()

int DoDefine ( UBYTE * s)

Definition at line 2077 of file pre.c.

◆ DoRedefine()

int DoRedefine ( UBYTE * s)

Definition at line 2087 of file pre.c.

◆ ClearMacro()

int ClearMacro ( UBYTE * name)

Definition at line 2099 of file pre.c.

◆ TheUndefine()

int TheUndefine ( UBYTE * name)

Definition at line 2127 of file pre.c.

◆ DoUndefine()

int DoUndefine ( UBYTE * s)

Definition at line 2181 of file pre.c.

◆ DoInclude()

int DoInclude ( UBYTE * s)

Definition at line 2233 of file pre.c.

◆ DoReverseInclude()

int DoReverseInclude ( UBYTE * s)

Definition at line 2240 of file pre.c.

◆ Include()

int Include ( UBYTE * s,
int type )

Definition at line 2247 of file pre.c.

◆ DoPreExchange()

int DoPreExchange ( UBYTE * s)

Definition at line 2408 of file pre.c.

◆ DoCall()

int DoCall ( UBYTE * s)

Definition at line 2469 of file pre.c.

◆ DoDebug()

int DoDebug ( UBYTE * s)

Definition at line 2638 of file pre.c.

◆ DoTerminate()

int DoTerminate ( UBYTE * s)

Definition at line 2675 of file pre.c.

◆ DoDo()

int DoDo ( UBYTE * s)

Definition at line 2704 of file pre.c.

◆ DoBreakDo()

int DoBreakDo ( UBYTE * s)

Definition at line 2919 of file pre.c.

◆ DoElse()

int DoElse ( UBYTE * s)

Definition at line 2988 of file pre.c.

◆ DoElseif()

int DoElseif ( UBYTE * s)

Definition at line 3025 of file pre.c.

◆ DoEnddo()

int DoEnddo ( UBYTE * s)

Definition at line 3060 of file pre.c.

◆ DoEndif()

int DoEndif ( UBYTE * s)

Definition at line 3206 of file pre.c.

◆ DoEndprocedure()

int DoEndprocedure ( UBYTE * s)

Definition at line 3234 of file pre.c.

◆ DoIf()

int DoIf ( UBYTE * s)

Definition at line 3260 of file pre.c.

◆ DoIfdef()

int DoIfdef ( UBYTE * s,
int par )

Definition at line 3284 of file pre.c.

◆ DoIfydef()

int DoIfydef ( UBYTE * s)

Definition at line 3309 of file pre.c.

◆ DoIfndef()

int DoIfndef ( UBYTE * s)

Definition at line 3319 of file pre.c.

◆ DoInside()

int DoInside ( UBYTE * s)

Definition at line 3344 of file pre.c.

◆ DoEndInside()

int DoEndInside ( UBYTE * s)

Definition at line 3437 of file pre.c.

◆ DoMessage()

int DoMessage ( UBYTE * s)

Definition at line 3569 of file pre.c.

◆ DoPipe()

int DoPipe ( UBYTE * s)

Definition at line 3583 of file pre.c.

◆ DoPrcExtension()

int DoPrcExtension ( UBYTE * s)

Definition at line 3606 of file pre.c.

◆ DoPreOut()

int DoPreOut ( UBYTE * s)

Definition at line 3640 of file pre.c.

◆ DoPrePrintTimes()

int DoPrePrintTimes ( UBYTE * s)

Definition at line 3663 of file pre.c.

◆ DoPreAppend()

int DoPreAppend ( UBYTE * s)

Definition at line 3680 of file pre.c.

◆ DoPreCreate()

int DoPreCreate ( UBYTE * s)

Definition at line 3723 of file pre.c.

◆ DoPreRemove()

int DoPreRemove ( UBYTE * s)

Definition at line 3763 of file pre.c.

◆ DoPreClose()

int DoPreClose ( UBYTE * s)

Definition at line 3796 of file pre.c.

◆ DoPreWrite()

int DoPreWrite ( UBYTE * s)

Definition at line 3840 of file pre.c.

◆ DoProcedure()

int DoProcedure ( UBYTE * s)

Definition at line 3881 of file pre.c.

◆ DoPreBreak()

int DoPreBreak ( UBYTE * s)

Definition at line 3923 of file pre.c.

◆ DoPreCase()

int DoPreCase ( UBYTE * s)

Definition at line 3947 of file pre.c.

◆ DoPreDefault()

int DoPreDefault ( UBYTE * s)

Definition at line 3986 of file pre.c.

◆ DoPreEndSwitch()

int DoPreEndSwitch ( UBYTE * s)

Definition at line 4010 of file pre.c.

◆ DoPreSwitch()

int DoPreSwitch ( UBYTE * s)

Definition at line 4037 of file pre.c.

◆ DoPreShow()

int DoPreShow ( UBYTE * s)

Definition at line 4091 of file pre.c.

◆ DoSystem()

int DoSystem ( UBYTE * s)

Definition at line 4130 of file pre.c.

◆ PreLoad()

int PreLoad ( PRELOAD * p,
UBYTE * start,
UBYTE * stop,
int mode,
char * message )

Definition at line 4170 of file pre.c.

◆ PreSkip()

int PreSkip ( UBYTE * start,
UBYTE * stop,
int mode )

Definition at line 4253 of file pre.c.

◆ StartPrepro()

VOID StartPrepro ( )

Definition at line 4308 of file pre.c.

◆ EvalPreIf()

int EvalPreIf ( UBYTE * s)

Definition at line 4336 of file pre.c.

◆ PreIfEval()

UBYTE * PreIfEval ( UBYTE * s,
int * value )

Definition at line 4371 of file pre.c.

◆ PreCmp()

int PreCmp ( int type,
int val,
UBYTE * t,
int type2,
int val2,
UBYTE * t2,
int cmpop )

Definition at line 4500 of file pre.c.

◆ PreEq()

int PreEq ( int type,
int val,
UBYTE * t,
int type2,
int val2,
UBYTE * t2,
int eqop )

Definition at line 4524 of file pre.c.

◆ pParseObject()

UBYTE * pParseObject ( UBYTE * s,
int * type,
LONG * val2 )

Definition at line 4553 of file pre.c.

◆ PreCalc()

UBYTE * PreCalc ( )

Definition at line 4919 of file pre.c.

◆ PreEval()

UBYTE * PreEval ( UBYTE * s,
LONG * x )

Definition at line 4997 of file pre.c.

◆ AddToPreTypes()

void AddToPreTypes ( int type)

Definition at line 5147 of file pre.c.

◆ MessPreNesting()

void MessPreNesting ( int par)

Definition at line 5165 of file pre.c.

◆ DoPreAddSeparator()

int DoPreAddSeparator ( UBYTE * s)

Definition at line 5188 of file pre.c.

◆ DoPreRmSeparator()

int DoPreRmSeparator ( UBYTE * s)

Definition at line 5213 of file pre.c.

◆ DoExternal()

int DoExternal ( UBYTE * s)

Definition at line 5230 of file pre.c.

◆ DoPrompt()

int DoPrompt ( UBYTE * s)

Definition at line 5313 of file pre.c.

◆ DoSetExternal()

int DoSetExternal ( UBYTE * s)

Definition at line 5346 of file pre.c.

◆ DoSetExternalAttr()

int DoSetExternalAttr ( UBYTE * s)

Definition at line 5416 of file pre.c.

◆ DoRmExternal()

int DoRmExternal ( UBYTE * s)

Definition at line 5532 of file pre.c.

◆ DoFromExternal()

int DoFromExternal ( UBYTE * s)

Definition at line 5597 of file pre.c.

◆ DoToExternal()

int DoToExternal ( UBYTE * s)

Definition at line 5793 of file pre.c.

◆ defineChannel()

UBYTE * defineChannel ( UBYTE * s,
HANDLERS * h )

Definition at line 5840 of file pre.c.

◆ writeToChannel()

int writeToChannel ( int wtype,
UBYTE * s,
HANDLERS * h )

Definition at line 5875 of file pre.c.

◆ DoFactDollar()

int DoFactDollar ( UBYTE * s)

Definition at line 6434 of file pre.c.

◆ GetDollarNumber()

WORD GetDollarNumber ( UBYTE ** inp,
DOLLARS d )

Definition at line 6471 of file pre.c.

◆ DoSetRandom()

int DoSetRandom ( UBYTE * s)

Definition at line 6561 of file pre.c.

◆ DoOptimize()

int DoOptimize ( UBYTE * s)

Definition at line 6604 of file pre.c.

◆ DoClearOptimize()

int DoClearOptimize ( UBYTE * s)

Definition at line 6737 of file pre.c.

◆ DoSkipExtraSymbols()

int DoSkipExtraSymbols ( UBYTE * s)

Definition at line 6757 of file pre.c.

◆ DoPreReset()

int DoPreReset ( UBYTE * s)

Definition at line 6796 of file pre.c.

◆ DoPreAppendPath()

int DoPreAppendPath ( UBYTE * s)

Appends the given path (absolute or relative to the current file directory) to the FORM path.

Syntax: #appendpath <path>

Definition at line 6954 of file pre.c.

◆ DoPrePrependPath()

int DoPrePrependPath ( UBYTE * s)

Prepends the given path (absolute or relative to the current file directory) to the FORM path.

Syntax: #prependpath <path>

Definition at line 6971 of file pre.c.

◆ DoTimeOutAfter()

int DoTimeOutAfter ( UBYTE * s)

Definition at line 6983 of file pre.c.