update to 1.4.5 [release 1.4.5-1mamba;Wed Jun 23 2021]
This commit is contained in:
parent
fe095dd594
commit
c34e8b3a01
@ -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.
|
||||
|
||||
|
688
gateway-1.4.5-fix-build.patch
Normal file
688
gateway-1.4.5-fix-build.patch
Normal 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;
|
55
kannel.spec
55
kannel.spec
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user