update to 1.4.5 [release 1.4.5-1mamba;Wed Jun 23 2021]

This commit is contained in:
Silvan Calarco 2024-01-06 00:32:26 +01:00
parent fe095dd594
commit c34e8b3a01
3 changed files with 711 additions and 33 deletions

View File

@ -2,7 +2,6 @@
Kannel is an open source WAP gateway.
It attempts to provide this essential part of the WAP infrastructure freely to everyone so that the market potential for WAP services, both from wireless operators and specialized service providers, will be realized as efficiently as possible.
Kannel also works as an SMS gateway for GSM networks.
Almost all GSM phones can send and receive SMS messages, so this is a way to serve many more clients than just those using a new WAP phone.

View File

@ -0,0 +1,688 @@
diff -ur gateway-1.4.5.orig/wmlscript/wsgram.y gateway-1.4.5/wmlscript/wsgram.y
--- gateway-1.4.5.orig/wmlscript/wsgram.y 2013-12-17 05:50:51.000000000 -0500
+++ gateway-1.4.5/wmlscript/wsgram.y 2018-08-17 15:43:57.000000000 -0500
@@ -14,18 +14,9 @@
#include "wmlscript/wsint.h"
-/* The required yyerror() function. This is actually not used but to
- report the internal parser errors. All other errors are reported
- by using the `wserror.h' functions. */
-extern void yyerror(char *msg);
-
-#if WS_DEBUG
-/* Just for debugging purposes. */
-WsCompilerPtr global_compiler = NULL;
-#endif /* WS_DEBUG */
-
%}
+
/* The possible semantic values. */
%union
{
@@ -45,6 +36,19 @@
WsExpression *expr;
}
+%{
+/* The required yyerror() function. This is actually not used but to
+ report the internal parser errors. All other errors are reported
+ by using the `wserror.h' functions. */
+extern void yyerror(YYLTYPE* locp, WsCompiler* compiler, const char* msg);
+
+#if WS_DEBUG
+/* Just for debugging purposes. */
+WsCompilerPtr global_compiler = NULL;
+#endif /* WS_DEBUG */
+
+%}
+
/* Tokens. */
/* Language literals. */
@@ -106,6 +110,8 @@
/* Generate reentrant parser. */
%pure-parser
+%parse-param { WsCompiler* compiler }
+%lex-param { WsCompiler* compiler }
/* This grammar has one shift-reduce conflict. It comes from the
if-else statement. */
@@ -119,7 +125,7 @@
Pragmas FunctionDeclarations
| FunctionDeclarations
| error
- { ws_error_syntax(pctx, @1.first_line); }
+ { ws_error_syntax(compiler, @1.first_line); }
;
/* Pragmas. */
@@ -132,7 +138,7 @@
Pragma:
tUSE PragmaDeclaration ';'
| error
- { ws_error_syntax(pctx, @1.first_line); }
+ { ws_error_syntax(compiler, @1.first_line); }
;
PragmaDeclaration:
@@ -143,7 +149,7 @@
ExternalCompilationUnitPragma:
tURL tIDENTIFIER tSTRING
- { ws_pragma_use(pctx, @2.first_line, $2, $3); }
+ { ws_pragma_use(compiler, @2.first_line, $2, $3); }
;
AccessControlPragma:
@@ -153,28 +159,23 @@
AccessControlSpecifier:
tDOMAIN tSTRING
{
- WsCompiler *compiler = (WsCompiler *) pctx;
-
/* Pass this to the byte-code */
if (!ws_bc_add_pragma_access_domain(compiler->bc, $2->data,
$2->len))
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
ws_lexer_free_utf8(compiler, $2);
}
| tPATH tSTRING
{
- WsCompiler *compiler = (WsCompiler *) pctx;
-
/* Pass this to the byte-code */
if (!ws_bc_add_pragma_access_path(compiler->bc, $2->data,
$2->len))
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
ws_lexer_free_utf8(compiler, $2);
}
| tDOMAIN tSTRING tPATH tSTRING
{
- WsCompiler *compiler = (WsCompiler *) pctx;
WsBool success = WS_TRUE;
/* Pass these to the byte-code */
@@ -187,7 +188,7 @@
success = WS_FALSE;
if (!success)
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
ws_lexer_free_utf8(compiler, $2);
ws_lexer_free_utf8(compiler, $4);
@@ -207,8 +208,6 @@
MetaName:
tNAME MetaBody
{
- WsCompiler *compiler = (WsCompiler *) pctx;
-
/* Meta information for the origin servers. Show it
* to the user if requested. */
if (compiler->params.meta_name_cb)
@@ -225,8 +224,6 @@
MetaHttpEquiv:
tHTTP tEQUIV MetaBody
{
- WsCompiler *compiler = (WsCompiler *) pctx;
-
/* Meta information HTTP header that should be
* included to an HTTP response header. Show it to
* the user if requested. */
@@ -246,7 +243,6 @@
tUSER tAGENT MetaBody
{
WsBool success;
- WsCompiler *compiler = (WsCompiler *) pctx;
/* Pass this pragma to the byte-code */
if ($3) {
@@ -272,16 +268,16 @@
ws_pragma_meta_body_free(compiler, $3);
if (!success)
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
}
}
;
MetaBody:
MetaPropertyName MetaContent
- { $$ = ws_pragma_meta_body(pctx, $1, $2, NULL); }
+ { $$ = ws_pragma_meta_body(compiler, $1, $2, NULL); }
| MetaPropertyName MetaContent MetaScheme
- { $$ = ws_pragma_meta_body(pctx, $1, $2, $3); }
+ { $$ = ws_pragma_meta_body(compiler, $1, $2, $3); }
;
MetaPropertyName: tSTRING;
@@ -301,12 +297,12 @@
{
char *name = ws_strdup($3);
- ws_lexer_free_block(pctx, $3);
+ ws_lexer_free_block(compiler, $3);
if (name)
- ws_function(pctx, $1, name, @3.first_line, $5, $7);
+ ws_function(compiler, $1, name, @3.first_line, $5, $7);
else
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
}
;
@@ -317,7 +313,7 @@
FormalParameterListOpt:
/* empty */
- { $$ = ws_list_new(pctx); }
+ { $$ = ws_list_new(compiler); }
| FormalParameterList
;
@@ -332,17 +328,17 @@
char *id;
WsFormalParm *parm;
- id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, $1);
- parm = ws_formal_parameter(pctx, @1.first_line, id);
+ id = ws_f_strdup((compiler)->pool_stree, $1);
+ parm = ws_formal_parameter(compiler, @1.first_line, id);
- ws_lexer_free_block(pctx, $1);
+ ws_lexer_free_block(compiler, $1);
if (id == NULL || parm == NULL) {
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
$$ = NULL;
} else {
- $$ = ws_list_new(pctx);
- ws_list_append(pctx, $$, parm);
+ $$ = ws_list_new(compiler);
+ ws_list_append(compiler, $$, parm);
}
}
| FormalParameterList ',' tIDENTIFIER
@@ -350,16 +346,16 @@
char *id;
WsFormalParm *parm;
- id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, $3);
- parm = ws_formal_parameter(pctx, @1.first_line, id);
+ id = ws_f_strdup(compiler->pool_stree, $3);
+ parm = ws_formal_parameter(compiler, @1.first_line, id);
- ws_lexer_free_block(pctx, $3);
+ ws_lexer_free_block(compiler, $3);
if (id == NULL || parm == NULL) {
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
$$ = NULL;
} else
- ws_list_append(pctx, $1, parm);
+ ws_list_append(compiler, $1, parm);
}
;
@@ -369,22 +365,22 @@
Block
{
if ($1)
- $$ = ws_stmt_block(pctx, $1->first_line, $1->last_line,
+ $$ = ws_stmt_block(compiler, $1->first_line, $1->last_line,
$1);
else
$$ = NULL;
}
| VariableStatement
| ';' /* EmptyStatement */
- { $$ = ws_stmt_empty(pctx, @1.first_line); }
+ { $$ = ws_stmt_empty(compiler, @1.first_line); }
| Expression ';' /* ExpressionStatement */
- { $$ = ws_stmt_expr(pctx, $1->line, $1); }
+ { $$ = ws_stmt_expr(compiler, $1->line, $1); }
| IfStatement
| IterationStatement
| tCONTINUE ';' /* ContinueStatement */
- { $$ = ws_stmt_continue(pctx, @1.first_line); }
+ { $$ = ws_stmt_continue(compiler, @1.first_line); }
| tBREAK ';' /* BreakStatement */
- { $$ = ws_stmt_break(pctx, @1.first_line); }
+ { $$ = ws_stmt_break(compiler, @1.first_line); }
| ReturnStatement
;
@@ -398,56 +394,56 @@
}
| error
{
- ws_error_syntax(pctx, @1.first_line);
+ ws_error_syntax(compiler, @1.first_line);
$$ = NULL;
}
;
StatementListOpt:
/* empty */
- { $$ = ws_list_new(pctx); }
+ { $$ = ws_list_new(compiler); }
| StatementList
;
StatementList:
Statement
{
- $$ = ws_list_new(pctx);
- ws_list_append(pctx, $$, $1);
+ $$ = ws_list_new(compiler);
+ ws_list_append(compiler, $$, $1);
}
| StatementList Statement
- { ws_list_append(pctx, $1, $2); }
+ { ws_list_append(compiler, $1, $2); }
;
VariableStatement:
tVAR VariableDeclarationList ';'
- { $$ = ws_stmt_variable(pctx, @1.first_line, $2); }
+ { $$ = ws_stmt_variable(compiler, @1.first_line, $2); }
| tVAR error
- { ws_error_syntax(pctx, @2.first_line); }
+ { ws_error_syntax(compiler, @2.first_line); }
;
VariableDeclarationList:
VariableDeclaration
{
- $$ = ws_list_new(pctx);
- ws_list_append(pctx, $$, $1);
+ $$ = ws_list_new(compiler);
+ ws_list_append(compiler, $$, $1);
}
| VariableDeclarationList ',' VariableDeclaration
- { ws_list_append(pctx, $1, $3); }
+ { ws_list_append(compiler, $1, $3); }
;
VariableDeclaration:
tIDENTIFIER VariableInitializedOpt
{
- char *id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree,
+ char *id = ws_f_strdup(compiler->pool_stree,
$1);
- ws_lexer_free_block(pctx, $1);
+ ws_lexer_free_block(compiler, $1);
if (id == NULL) {
- ws_error_memory(pctx);
+ ws_error_memory(compiler);
$$ = NULL;
} else
- $$ = ws_variable_declaration(pctx, id, $2);
+ $$ = ws_variable_declaration(compiler, id, $2);
}
;
@@ -460,29 +456,29 @@
IfStatement:
tIF '(' Expression ')' Statement tELSE Statement
- { $$ = ws_stmt_if(pctx, @1.first_line, $3, $5, $7); }
+ { $$ = ws_stmt_if(compiler, @1.first_line, $3, $5, $7); }
| tIF '(' Expression ')' Statement
- { $$ = ws_stmt_if(pctx, @1.first_line, $3, $5, NULL); }
+ { $$ = ws_stmt_if(compiler, @1.first_line, $3, $5, NULL); }
;
IterationStatement:
tWHILE '(' Expression ')' Statement
- { $$ = ws_stmt_while(pctx, @1.first_line, $3, $5); }
+ { $$ = ws_stmt_while(compiler, @1.first_line, $3, $5); }
| ForStatement
;
ForStatement:
tFOR '(' ExpressionOpt ';' ExpressionOpt ';' ExpressionOpt ')'
Statement
- { $$ = ws_stmt_for(pctx, @1.first_line, NULL, $3, $5, $7, $9); }
+ { $$ = ws_stmt_for(compiler, @1.first_line, NULL, $3, $5, $7, $9); }
| tFOR '(' tVAR VariableDeclarationList ';' ExpressionOpt ';'
ExpressionOpt ')' Statement
- { $$ = ws_stmt_for(pctx, @1.first_line, $4, NULL, $6, $8, $10); }
+ { $$ = ws_stmt_for(compiler, @1.first_line, $4, NULL, $6, $8, $10); }
;
ReturnStatement:
tRETURN ExpressionOpt ';'
- { $$ = ws_stmt_return(pctx, @1.first_line, $2); }
+ { $$ = ws_stmt_return(compiler, @1.first_line, $2); }
;
/* Expressions. */
@@ -496,135 +492,135 @@
Expression:
AssignmentExpression
| Expression ',' AssignmentExpression
- { $$ = ws_expr_comma(pctx, @2.first_line, $1, $3); }
+ { $$ = ws_expr_comma(compiler, @2.first_line, $1, $3); }
;
AssignmentExpression:
ConditionalExpression
| tIDENTIFIER '=' AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, '=', $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, '=', $3); }
| tIDENTIFIER tMULA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tMULA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tMULA, $3); }
| tIDENTIFIER tDIVA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tDIVA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tDIVA, $3); }
| tIDENTIFIER tREMA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tREMA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tREMA, $3); }
| tIDENTIFIER tADDA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tADDA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tADDA, $3); }
| tIDENTIFIER tSUBA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tSUBA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tSUBA, $3); }
| tIDENTIFIER tLSHIFTA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tLSHIFTA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tLSHIFTA, $3); }
| tIDENTIFIER tRSSHIFTA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tRSSHIFTA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tRSSHIFTA, $3); }
| tIDENTIFIER tRSZSHIFTA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tRSZSHIFTA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tRSZSHIFTA, $3); }
| tIDENTIFIER tANDA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tANDA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tANDA, $3); }
| tIDENTIFIER tXORA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tXORA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tXORA, $3); }
| tIDENTIFIER tORA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tORA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tORA, $3); }
| tIDENTIFIER tIDIVA AssignmentExpression
- { $$ = ws_expr_assign(pctx, @1.first_line, $1, tIDIVA, $3); }
+ { $$ = ws_expr_assign(compiler, @1.first_line, $1, tIDIVA, $3); }
;
ConditionalExpression:
LogicalORExpression
| LogicalORExpression '?' AssignmentExpression ':' AssignmentExpression
- { $$ = ws_expr_conditional(pctx, @2.first_line, $1, $3, $5); }
+ { $$ = ws_expr_conditional(compiler, @2.first_line, $1, $3, $5); }
;
LogicalORExpression:
LogicalANDExpression
| LogicalORExpression tOR LogicalANDExpression
- { $$ = ws_expr_logical(pctx, @2.first_line, WS_ASM_SCOR, $1, $3); }
+ { $$ = ws_expr_logical(compiler, @2.first_line, WS_ASM_SCOR, $1, $3); }
;
LogicalANDExpression:
BitwiseORExpression
| LogicalANDExpression tAND BitwiseORExpression
- { $$ = ws_expr_logical(pctx, @2.first_line, WS_ASM_SCAND, $1, $3); }
+ { $$ = ws_expr_logical(compiler, @2.first_line, WS_ASM_SCAND, $1, $3); }
;
BitwiseORExpression:
BitwiseXORExpression
| BitwiseORExpression '|' BitwiseXORExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_OR, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_OR, $1, $3); }
;
BitwiseXORExpression:
BitwiseANDExpression
| BitwiseXORExpression '^' BitwiseANDExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_XOR, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_XOR, $1, $3); }
;
BitwiseANDExpression:
EqualityExpression
| BitwiseANDExpression '&' EqualityExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_AND, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_AND, $1, $3); }
;
EqualityExpression:
RelationalExpression
| EqualityExpression tEQ RelationalExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_EQ, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_EQ, $1, $3); }
| EqualityExpression tNE RelationalExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_NE, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_NE, $1, $3); }
;
RelationalExpression:
ShiftExpression
| RelationalExpression '<' ShiftExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_LT, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_LT, $1, $3); }
| RelationalExpression '>' ShiftExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_GT, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_GT, $1, $3); }
| RelationalExpression tLE ShiftExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_LE, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_LE, $1, $3); }
| RelationalExpression tGE ShiftExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_GE, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_GE, $1, $3); }
;
ShiftExpression:
AdditiveExpression
| ShiftExpression tLSHIFT AdditiveExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_LSHIFT, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_LSHIFT, $1, $3); }
| ShiftExpression tRSSHIFT AdditiveExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_RSSHIFT, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_RSSHIFT, $1, $3); }
| ShiftExpression tRSZSHIFT AdditiveExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_B_RSZSHIFT, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_B_RSZSHIFT, $1, $3); }
;
AdditiveExpression:
MultiplicativeExpression
| AdditiveExpression '+' MultiplicativeExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_ADD, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_ADD, $1, $3); }
| AdditiveExpression '-' MultiplicativeExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_SUB, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_SUB, $1, $3); }
;
MultiplicativeExpression:
UnaryExpression
| MultiplicativeExpression '*' UnaryExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_MUL, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_MUL, $1, $3); }
| MultiplicativeExpression '/' UnaryExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_DIV, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_DIV, $1, $3); }
| MultiplicativeExpression tIDIV UnaryExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_IDIV, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_IDIV, $1, $3); }
| MultiplicativeExpression '%' UnaryExpression
- { $$ = ws_expr_binary(pctx, @2.first_line, WS_ASM_REM, $1, $3); }
+ { $$ = ws_expr_binary(compiler, @2.first_line, WS_ASM_REM, $1, $3); }
;
UnaryExpression:
PostfixExpression
| tTYPEOF UnaryExpression
- { $$ = ws_expr_unary(pctx, @1.first_line, WS_ASM_TYPEOF, $2); }
+ { $$ = ws_expr_unary(compiler, @1.first_line, WS_ASM_TYPEOF, $2); }
| tISVALID UnaryExpression
- { $$ = ws_expr_unary(pctx, @1.first_line, WS_ASM_ISVALID, $2); }
+ { $$ = ws_expr_unary(compiler, @1.first_line, WS_ASM_ISVALID, $2); }
| tPLUSPLUS tIDENTIFIER
- { $$ = ws_expr_unary_var(pctx, @1.first_line, WS_TRUE, $2); }
+ { $$ = ws_expr_unary_var(compiler, @1.first_line, WS_TRUE, $2); }
| tMINUSMINUS tIDENTIFIER
- { $$ = ws_expr_unary_var(pctx, @1.first_line, WS_FALSE, $2); }
+ { $$ = ws_expr_unary_var(compiler, @1.first_line, WS_FALSE, $2); }
| '+' UnaryExpression
{
/* There is no direct way to compile unary `+'.
@@ -638,65 +634,65 @@
* because binary `+' accepts strings, which makes the
* type conversion different.
*/
- $$ = ws_expr_binary(pctx, @1.first_line, WS_ASM_SUB, $2,
- ws_expr_const_integer(pctx, @1.first_line, 0));
+ $$ = ws_expr_binary(compiler, @1.first_line, WS_ASM_SUB, $2,
+ ws_expr_const_integer(compiler, @1.first_line, 0));
}
| '-' UnaryExpression
- { $$ = ws_expr_unary(pctx, @1.first_line, WS_ASM_UMINUS, $2); }
+ { $$ = ws_expr_unary(compiler, @1.first_line, WS_ASM_UMINUS, $2); }
| '~' UnaryExpression
- { $$ = ws_expr_unary(pctx, @1.first_line, WS_ASM_B_NOT, $2); }
+ { $$ = ws_expr_unary(compiler, @1.first_line, WS_ASM_B_NOT, $2); }
| '!' UnaryExpression
- { $$ = ws_expr_unary(pctx, @1.first_line, WS_ASM_NOT, $2); }
+ { $$ = ws_expr_unary(compiler, @1.first_line, WS_ASM_NOT, $2); }
;
PostfixExpression:
CallExpression
| tIDENTIFIER tPLUSPLUS
- { $$ = ws_expr_postfix_var(pctx, @1.first_line, WS_TRUE, $1); }
+ { $$ = ws_expr_postfix_var(compiler, @1.first_line, WS_TRUE, $1); }
| tIDENTIFIER tMINUSMINUS
- { $$ = ws_expr_postfix_var(pctx, @1.first_line, WS_FALSE, $1); }
+ { $$ = ws_expr_postfix_var(compiler, @1.first_line, WS_FALSE, $1); }
;
CallExpression:
PrimaryExpression
| tIDENTIFIER Arguments /* LocalScriptFunctionCall */
{
- WsFunctionHash *f = ws_function_hash(pctx, $1);
+ WsFunctionHash *f = ws_function_hash(compiler, $1);
/* Add an usage count for the local script function. */
if (f)
f->usage_count++;
- $$ = ws_expr_call(pctx, @1.first_line, ' ', NULL, $1, $2);
+ $$ = ws_expr_call(compiler, @1.first_line, ' ', NULL, $1, $2);
}
| tIDENTIFIER '#' tIDENTIFIER Arguments /* ExternalScriptFunctionCall*/
- { $$ = ws_expr_call(pctx, @3.first_line, '#', $1, $3, $4); }
+ { $$ = ws_expr_call(compiler, @3.first_line, '#', $1, $3, $4); }
| tIDENTIFIER '.' tIDENTIFIER Arguments /* LibraryFunctionCall */
- { $$ = ws_expr_call(pctx, @3.first_line, '.', $1, $3, $4); }
+ { $$ = ws_expr_call(compiler, @3.first_line, '.', $1, $3, $4); }
;
PrimaryExpression:
tIDENTIFIER
- { $$ = ws_expr_symbol(pctx, @1.first_line, $1); }
+ { $$ = ws_expr_symbol(compiler, @1.first_line, $1); }
| tINVALID
- { $$ = ws_expr_const_invalid(pctx, @1.first_line); }
+ { $$ = ws_expr_const_invalid(compiler, @1.first_line); }
| tTRUE
- { $$ = ws_expr_const_true(pctx, @1.first_line); }
+ { $$ = ws_expr_const_true(compiler, @1.first_line); }
| tFALSE
- { $$ = ws_expr_const_false(pctx, @1.first_line); }
+ { $$ = ws_expr_const_false(compiler, @1.first_line); }
| tINTEGER
- { $$ = ws_expr_const_integer(pctx, @1.first_line, $1); }
+ { $$ = ws_expr_const_integer(compiler, @1.first_line, $1); }
| tFLOAT
- { $$ = ws_expr_const_float(pctx, @1.first_line, $1); }
+ { $$ = ws_expr_const_float(compiler, @1.first_line, $1); }
| tSTRING
- { $$ = ws_expr_const_string(pctx, @1.first_line, $1); }
+ { $$ = ws_expr_const_string(compiler, @1.first_line, $1); }
| '(' Expression ')'
{ $$ = $2; }
;
Arguments:
'(' ')'
- { $$ = ws_list_new(pctx); }
+ { $$ = ws_list_new(compiler); }
| '(' ArgumentList ')'
{ $$ = $2; }
;
@@ -704,17 +700,17 @@
ArgumentList:
AssignmentExpression
{
- $$ = ws_list_new(pctx);
- ws_list_append(pctx, $$, $1);
+ $$ = ws_list_new(compiler);
+ ws_list_append(compiler, $$, $1);
}
| ArgumentList ',' AssignmentExpression
- { ws_list_append(pctx, $1, $3); }
+ { ws_list_append(compiler, $1, $3); }
;
%%
void
-yyerror(char *msg)
+yyerror(YYLTYPE* locp, WsCompiler* compiler, const char* msg)
{
#if WS_DEBUG
fprintf(stderr, "*** %s:%ld: wsc: %s - this msg will be removed ***\n",
diff -ur gateway-1.4.5.orig/wmlscript/wsint.h gateway-1.4.5/wmlscript/wsint.h
--- gateway-1.4.5.orig/wmlscript/wsint.h 2018-01-17 04:24:38.000000000 -0500
+++ gateway-1.4.5/wmlscript/wsint.h 2018-08-17 15:45:26.000000000 -0500
@@ -269,9 +269,6 @@
/********************* Lexer and parser *********************************/
-#define YYPARSE_PARAM pctx
-#define YYLEX_PARAM pctx
-
/* The lexer. */
extern int yylex();
@@ -293,6 +290,6 @@
void ws_lexer_free_utf8(WsCompiler *compiler, WsUtf8String *string);
/* The parser. */
-int ws_yy_parse(void *context);
+int ws_yy_parse(WsCompiler* compiler);
#endif /* not WSINT_H */
diff -ur gateway-1.4.5.orig/wmlscript/wslexer.c gateway-1.4.5/wmlscript/wslexer.c
--- gateway-1.4.5.orig/wmlscript/wslexer.c 2018-01-17 04:24:38.000000000 -0500
+++ gateway-1.4.5/wmlscript/wslexer.c 2018-08-17 15:15:28.000000000 -0500
@@ -218,9 +218,8 @@
/********************* Global functions *********************************/
-int ws_yy_lex(YYSTYPE *yylval, YYLTYPE *yylloc, void *context)
+int ws_yy_lex(YYSTYPE *yylval, YYLTYPE *yylloc, WsCompiler* compiler)
{
- WsCompiler *compiler = (WsCompiler *) context;
WsUInt32 ch, ch2;
WsBuffer buffer;
unsigned char *p;

View File

@ -2,20 +2,23 @@
%define kannel_gid 65041
Name: kannel
Version: 1.4.3
Release: 2mamba
Version: 1.4.5
Release: 1mamba
Summary: A compact and very powerful open source WAP and SMS gateway
Group: System/Servers
Vendor: openmamba
Distribution: openmamba
Packager: Stefano Cotta Ramusino <stefano.cotta@openmamba.org>
URL: http://www.kannel.org
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: https://www.kannel.org/
Source: http://www.kannel.org/download/%{version}/gateway-%{version}.tar.bz2
Source1: %{name}-initscript
Patch0: gateway-1.4.5-fix-build.patch
License: BSD
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
BuildRequires: libmysql5-devel
BuildRequires: liblzma-devel
BuildRequires: libmariadb-devel
BuildRequires: libnsl-devel
BuildRequires: libopenssl-devel
BuildRequires: libpcre-devel
BuildRequires: libpostgresql-devel
@ -27,13 +30,10 @@ BuildRequires: bind-devel
BuildRequires: sqlite3-tools
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Requires(pre): /sbin/chkconfig
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
Kannel is an open source WAP gateway.
It attempts to provide this essential part of the WAP infrastructure freely to everyone so that the market potential for WAP services, both from wireless operators and specialized service providers, will be realized as efficiently as possible.
Kannel also works as an SMS gateway for GSM networks.
Almost all GSM phones can send and receive SMS messages, so this is a way to serve many more clients than just those using a new WAP phone.
@ -45,39 +45,40 @@ Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description devel
Kannel is an open source WAP gateway.
It attempts to provide this essential part of the WAP infrastructure freely to everyone so that the market potential for WAP services, both from wireless operators and specialized service providers, will be realized as efficiently as possible.
Kannel also works as an SMS gateway for GSM networks.
Almost all GSM phones can send and receive SMS messages, so this is a way to serve many more clients than just those using a new WAP phone.
This package contains static libraries and header files needed for development.
This package contains static libraries and header files need for development.
%debug_package
%prep
%setup -q -n gateway-%{version}
%patch0 -p1
%build
%configure \
--enable-pcre \
--disable-docs \
--enable-start-stop-daemon \
--with-sqlite3 \
--with-mysql \
--with-pgsql
--with-pgsql \
CFLAGS="%{optflags} -fcommon"
%make
%make -j1
%install
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%makeinstall
install -D -m 0755 %{S:1} \
%{buildroot}%{_initrddir}/%{name}
#install -D -m 0755 %{S:1} \
# %{buildroot}%{_initrddir}/%{name}
install -D -m 0640 debian/%{name}.conf \
%{buildroot}%{_sysconfdir}/%{name}.conf
sed -i "s/ on Debian//" %{buildroot}%{_sysconfdir}/%{name}.conf
mv %{buildroot}%{_sbindir}/start-stop-daemon \
%{buildroot}%{_sbindir}/%{name}
#mv %{buildroot}%{_sbindir}/start-stop-daemon \
# %{buildroot}%{_sbindir}/%{name}
install -d %{buildroot}%{_localstatedir}/log/%{name}
@ -91,42 +92,32 @@ install -d %{buildroot}%{_localstatedir}/log/%{name}
-d %{_localstatedir}/lib/%{name} -g %{name} -s /bin/false %{name} 2>/dev/null
:
%post
/sbin/chkconfig --add %{name}
[ $1 -eq 1 ] && service %{name} start
:
%preun
# erase
if [ $1 -eq 0 ]; then
service %{name} stop 2>/dev/null
/sbin/chkconfig --del %{name}
userdel %{name} 2>/dev/null
fi
:
%postun
if [ $1 -ge 1 ]; then
service %{name} condrestart 2>/dev/null
fi
:
%files
%defattr(-,root,root)
%{_sbindir}/*
%{_bindir}/*
%{_initrddir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}.conf
%{_mandir}/man?/*
%dir %{_localstatedir}/log/%{name}
%doc AUTHORS COPYING ChangeLog LICENSE NEWS README
%doc AUTHORS COPYING
%files devel
%defattr(-,root,root)
%{_includedir}/%{name}
%{_libdir}/%{name}
%doc ChangeLog LICENSE NEWS README
%changelog
* Wed Jun 23 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 1.4.5-1mamba
- update to 1.4.5
* Wed Jul 24 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 1.4.3-2mamba
- rebuild with libpcre 8.33