[asterisk-commits] rmudgett: branch group/issue8824 r168827 - in /team/group/issue8824: ./ apps/...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jan 16 12:39:50 CST 2009
Author: rmudgett
Date: Fri Jan 16 12:39:50 2009
New Revision: 168827
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=168827
Log:
Fixed conflict and restarted automerge.
Merged revisions 168705,168711-168712,168719,168722,168725,168728,168732,168734,168737,168746,168759-168760 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r168705 | seanbright | 2009-01-15 09:33:18 -0600 (Thu, 15 Jan 2009) | 11 lines
Add a missing unlock and properly handle the 'maxusers' setting on MeetMe
conferences. We were using the 'user number' field to compare against the
maximum allowed users, which works assuming users with lower user numbers
didn't leave the conference.
(closes issue #14117)
Reported by: sergedevorop
Patches:
20090114__bug14117-2.diff.txt uploaded by seanbright (license 71)
Tested by: sergedevorop
................
r168711 | oej | 2009-01-15 11:55:53 -0600 (Thu, 15 Jan 2009) | 4 lines
Clarify some misunderstandings and make it even more clear that you can refer to a peer
in the register= line.
................
r168712 | oej | 2009-01-15 12:08:59 -0600 (Thu, 15 Jan 2009) | 3 lines
Make sure that we have the same terminology in sip.conf.sample and the source code warning.
Thanks Nick Lewis for pointing this out in the bug tracker.
................
r168719 | tilghman | 2009-01-15 12:39:56 -0600 (Thu, 15 Jan 2009) | 4 lines
Resolve issue with negative vs non-negative length parameters.
(closes issue #14245)
Reported by: dveiga
................
r168722 | oej | 2009-01-15 12:47:14 -0600 (Thu, 15 Jan 2009) | 10 lines
Merged revisions 168721 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168721 | oej | 2009-01-15 19:43:43 +0100 (Tor, 15 Jan 2009) | 2 lines
Meetme actually has realtime but wasn't documented
........
................
r168725 | mmichelson | 2009-01-15 13:00:06 -0600 (Thu, 15 Jan 2009) | 17 lines
Remove an unneeded condition for line addition to a SIP request/response
In Asterisk 1.4 and 1.6.0, the sip_request structure had a statically
allocated buffer to hold the text of the request. There was a check in the
add_line function to not attempt to write the line into the buffer if we
did not have room for it.
In trunk and Asterisk versions starting with 1.6.1, an expandable ast_str
structure is used to hold the text. Since it may grow to fit an arbitrarily
sized string, this check in add_line is no longer valid.
I found this oddity while attempting to fix issue #14220; however, I do not
believe that this is the fix for that issue since the output supplied by the
reporter did not contain the warning message that would be printed had this
condition been satisfied.
................
r168728 | mmichelson | 2009-01-15 13:16:29 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix the compactheaders option in sip.conf
................
r168732 | mmichelson | 2009-01-15 14:00:46 -0600 (Thu, 15 Jan 2009) | 3 lines
Add missing brace
................
r168734 | kpfleming | 2009-01-15 14:18:53 -0600 (Thu, 15 Jan 2009) | 5 lines
remove the PBX_ODBC logic from the configure script, and add GENERIC_ODCB logic that includes copying the relevant LIB and INCLUDE data from either UnixODBC or iODBC, based on which was found; if both were found, prefer UnixODBC
this stops modules from being linked against both sets of libraries on systems that have both installed
................
r168737 | murf | 2009-01-15 14:54:59 -0600 (Thu, 15 Jan 2009) | 16 lines
This patch allows null args in ast_expr2 func calls, and fixes commas being converted to pipes, which was 1.4 type stuff.
If the user says count=ENUMLOOKUP(${EXTEN},ALL,c,,enum.mydomain.tld);
then it won't complain about the empty arg (c,,...) and fabled's patch
won't let it swap the commas for pipes.
Ran it thru my dialplan and no complaints.
(closes issue #14169)
Reported by: fabled
Patches:
function-argument-separator-fix.diff uploaded by fabled (license 448)
................
r168746 | murf | 2009-01-15 18:34:31 -0600 (Thu, 15 Jan 2009) | 20 lines
Merged revisions 168745 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168745 | murf | 2009-01-15 17:19:12 -0700 (Thu, 15 Jan 2009) | 14 lines
This patch fixes a problem where a goto (or jump, in this case)
fails a consistency check because it can't find a matching
extension. The problem was a missing instruction to end
the range notation in the code where it converts the pattern
into a regex and uses the regex code to determine the match.
I tested using the AEL code the user supplied, and now,
the consistency check passes.
(closes issue #14141)
Reported by: dimas
........
................
r168759 | russell | 2009-01-16 10:18:41 -0600 (Fri, 16 Jan 2009) | 1 line
build in dev mode
................
r168760 | russell | 2009-01-16 11:09:13 -0600 (Fri, 16 Jan 2009) | 2 lines
Fix a spelling mistake.
................
Modified:
team/group/issue8824/ (props changed)
team/group/issue8824/CHANGES
team/group/issue8824/apps/app_meetme.c
team/group/issue8824/apps/app_voicemail.c
team/group/issue8824/build_tools/menuselect-deps.in
team/group/issue8824/cdr/cdr_adaptive_odbc.c
team/group/issue8824/cdr/cdr_odbc.c
team/group/issue8824/channels/chan_sip.c
team/group/issue8824/configs/extconfig.conf.sample
team/group/issue8824/configs/sip.conf.sample
team/group/issue8824/configure
team/group/issue8824/configure.ac
team/group/issue8824/funcs/func_odbc.c
team/group/issue8824/include/asterisk/strings.h
team/group/issue8824/main/ast_expr2.c
team/group/issue8824/main/ast_expr2.h
team/group/issue8824/main/ast_expr2.y
team/group/issue8824/makeopts.in
team/group/issue8824/res/ael/pval.c
team/group/issue8824/res/res_config_odbc.c
team/group/issue8824/res/res_odbc.c
Propchange: team/group/issue8824/
------------------------------------------------------------------------------
automerge = *
Propchange: team/group/issue8824/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/group/issue8824/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Jan 16 12:39:50 2009
@@ -1,1 +1,1 @@
-/trunk:1-168650
+/trunk:1-168822
Modified: team/group/issue8824/CHANGES
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/CHANGES?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/CHANGES (original)
+++ team/group/issue8824/CHANGES Fri Jan 16 12:39:50 2009
@@ -84,7 +84,7 @@
version received is different from the current SDP session version. This
option is required to interoperate with devices that have non-standard SDP
session version implementations (observed with Microsoft OCS). This option
- is diabled by default.
+ is disabled by default.
* The parsing of register => lines in sip.conf has been modified to allow a port
to be present in the "user" portion. Please see the sip.conf.sample file for more
information
Modified: team/group/issue8824/apps/app_meetme.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/apps/app_meetme.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/apps/app_meetme.c (original)
+++ team/group/issue8824/apps/app_meetme.c Fri Jan 16 12:39:50 2009
@@ -2187,10 +2187,12 @@
user->user_no = AST_LIST_LAST(&conf->userlist)->user_no + 1;
if (rt_schedule && conf->maxusers)
- if (user->user_no > conf->maxusers) {
+ if (conf->users >= conf->maxusers) {
/* Sorry, but this confernce has reached the participant limit! */
if (!ast_streamfile(chan, "conf-full", chan->language))
ast_waitstream(chan, "");
+ ast_mutex_unlock(&conf->playlock);
+ user->user_no = 0;
goto outrun;
}
Modified: team/group/issue8824/apps/app_voicemail.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/apps/app_voicemail.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/apps/app_voicemail.c (original)
+++ team/group/issue8824/apps/app_voicemail.c Fri Jan 16 12:39:50 2009
@@ -47,10 +47,8 @@
/*** MAKEOPTS
<category name="MENUSELECT_OPTS_app_voicemail" displayname="Voicemail Build Options" positive_output="yes" remove_on_change="apps/app_voicemail.o apps/app_voicemail.so apps/app_directory.o apps/app_directory.so">
<member name="ODBC_STORAGE" displayname="Storage of Voicemail using ODBC">
- <depend>odbc</depend>
+ <depend>generic_odbc</depend>
<depend>ltdl</depend>
- <use>unixodbc</use>
- <use>iodbc</use>
<conflict>IMAP_STORAGE</conflict>
<defaultenabled>no</defaultenabled>
</member>
Modified: team/group/issue8824/build_tools/menuselect-deps.in
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/build_tools/menuselect-deps.in?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/build_tools/menuselect-deps.in (original)
+++ team/group/issue8824/build_tools/menuselect-deps.in Fri Jan 16 12:39:50 2009
@@ -3,6 +3,7 @@
CURL=@PBX_CURL@
DAHDI=@PBX_DAHDI@
FREETDS=@PBX_FREETDS@
+GENERIC_ODBC=@PBX_GENERIC_ODBC@
GMIME=@PBX_GMIME@
GNU_LD=@GNU_LD@
GSM=@PBX_GSM@
@@ -24,7 +25,6 @@
NBS=@PBX_NBS@
NETSNMP=@PBX_NETSNMP@
NEWT=@PBX_NEWT@
-ODBC=@PBX_ODBC@
OGG=@PBX_OGG@
OPENH323=@PBX_OPENH323@
OSPTK=@PBX_OSPTK@
Modified: team/group/issue8824/cdr/cdr_adaptive_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/cdr/cdr_adaptive_odbc.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/cdr/cdr_adaptive_odbc.c (original)
+++ team/group/issue8824/cdr/cdr_adaptive_odbc.c Fri Jan 16 12:39:50 2009
@@ -25,9 +25,8 @@
*/
/*** MODULEINFO
- <depend>odbc</depend>
- <use>unixodbc</use>
- <use>iodbc</use>
+ <depend>generic_odbc</depend>
+ <depend>ltdl</depend>
***/
#include "asterisk.h"
Modified: team/group/issue8824/cdr/cdr_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/cdr/cdr_odbc.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/cdr/cdr_odbc.c (original)
+++ team/group/issue8824/cdr/cdr_odbc.c Fri Jan 16 12:39:50 2009
@@ -29,10 +29,8 @@
*/
/*** MODULEINFO
- <depend>odbc</depend>
+ <depend>generic_odbc</depend>
<depend>ltdl</depend>
- <use>unixodbc</use>
- <use>iodbc</use>
***/
#include "asterisk.h"
Modified: team/group/issue8824/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/channels/chan_sip.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/channels/chan_sip.c (original)
+++ team/group/issue8824/channels/chan_sip.c Fri Jan 16 12:39:50 2009
@@ -6938,7 +6938,7 @@
if (hostname)
*hostname++ = '\0';
if (ast_strlen_zero(username) || ast_strlen_zero(hostname)) {
- ast_log(LOG_WARNING, "Format for registration is [transport://]user[:secret[:authuser]]@host[:port][/contact][~expiry] at line %d\n", lineno);
+ ast_log(LOG_WARNING, "Format for registration is [transport://]user[:secret[:authuser]]@domain[:port][/extension][~expiry] at line %d\n", lineno);
return -1;
}
@@ -8118,11 +8118,13 @@
return -1;
}
+ if (sip_cfg.compactheaders) {
+ var = find_alias(var, var);
+ }
+
ast_str_append(&req->data, 0, "%s: %s\r\n", var, value);
req->header[req->headers] = req->data->str + req->len;
- if (sip_cfg.compactheaders)
- var = find_alias(var, var);
req->len += strlen(req->header[req->headers]);
req->headers++;
@@ -8148,10 +8150,6 @@
if (!req->lines)
/* Add extra empty return */
req->len += ast_str_append(&req->data, 0, "\r\n");
- if (req->len >= sizeof(req->data->str) - 4) {
- ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
- return -1;
- }
req->line[req->lines] = req->data->str + req->len;
ast_str_append(&req->data, 0, "%s", line);
req->len += strlen(req->line[req->lines]);
Modified: team/group/issue8824/configs/extconfig.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/configs/extconfig.conf.sample?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/configs/extconfig.conf.sample (original)
+++ team/group/issue8824/configs/extconfig.conf.sample Fri Jan 16 12:39:50 2009
@@ -56,6 +56,7 @@
;sipregs => odbc,asterisk
;voicemail => odbc,asterisk
;extensions => odbc,asterisk
+;meetme => mysql,conferences
;queues => odbc,asterisk
;queue_members => odbc,asterisk
;musiconhold => mysql,asterisk
Modified: team/group/issue8824/configs/sip.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/configs/sip.conf.sample?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/configs/sip.conf.sample (original)
+++ team/group/issue8824/configs/sip.conf.sample Fri Jan 16 12:39:50 2009
@@ -421,16 +421,20 @@
;----------------------------------------- OUTBOUND SIP REGISTRATIONS ------------------------
; Asterisk can register as a SIP user agent to a SIP proxy (provider)
; Format for the register statement is:
-; register => [transport://]user[:secret[:authuser]]@host[:port][/extension][~expiry]
+; register => [transport://]user[:secret[:authuser]]@domain[:port][/extension][~expiry]
;
;
+;
+; domain is either
+; - domain in DNS
+; - host name in DNS
+; - the name of a peer defined below or in realtime
+; The domain is where you register your username, so your SIP uri you are registering to
+; is username at domain
;
; If no extension is given, the 's' extension is used. The extension needs to
; be defined in extensions.conf to be able to accept calls from this SIP proxy
; (provider).
-;
-; host is either a host name defined in DNS or the name of a section defined
-; below.
;
; A similar effect can be achieved by adding a "callbackextension" option in a peer section.
; this is equivalent to having the following line in the general section:
Modified: team/group/issue8824/configure.ac
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/configure.ac?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/configure.ac (original)
+++ team/group/issue8824/configure.ac Fri Jan 16 12:39:50 2009
@@ -1319,12 +1319,6 @@
AST_EXT_LIB_CHECK([UNIXODBC], [odbc], [SQLConnect], [sql.h], [])
-PBX_ODBC=0
-if test "$PBX_IODBC" = "1" -o "$PBX_UNIXODBC" = "1"; then
- PBX_ODBC=1
-fi
-AC_SUBST(PBX_ODBC)
-
AST_EXT_LIB_CHECK([OGG], [ogg], [ogg_sync_init], [])
# Non-glibc platforms require libexecinfo for backtrace support
@@ -1682,6 +1676,25 @@
fi
fi
+# build a GENERIC_ODBC result based on the presence of either UnixODBC (preferred)
+# or iODBC
+
+PBX_GENERIC_ODBC=0
+
+if test "${PBX_UNIXODBC}" = 1; then
+ PBX_GENERIC_ODBC=1
+ GENERIC_ODBC_LIB="${UNIXODBC_LIB}"
+ GENERIC_ODBC_INCLUDE="${UNIXODBC_INCLUDE}"
+elif test "${PBX_IODBC}" = 1; then
+ PBX_GENERIC_ODBC=1
+ GENERIC_ODBC_LIB="${IODBC_LIB}"
+ GENERIC_ODBC_INCLUDE="${IODBC_INCLUDE}"
+fi
+
+AC_SUBST([GENERIC_ODBC_LIB])
+AC_SUBST([GENERIC_ODBC_INCLUDE])
+AC_SUBST([PBX_GENERIC_ODBC])
+
AC_CONFIG_FILES([build_tools/menuselect-deps makeopts channels/h323/Makefile])
AST_CHECK_MANDATORY
Modified: team/group/issue8824/funcs/func_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/funcs/func_odbc.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/funcs/func_odbc.c (original)
+++ team/group/issue8824/funcs/func_odbc.c Fri Jan 16 12:39:50 2009
@@ -27,11 +27,7 @@
*/
/*** MODULEINFO
- <depend>odbc</depend>
- <depend>ltdl</depend>
<depend>res_odbc</depend>
- <use>unixodbc</use>
- <use>iodbc</use>
***/
#define USE_ODBC
Modified: team/group/issue8824/include/asterisk/strings.h
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/include/asterisk/strings.h?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/include/asterisk/strings.h (original)
+++ team/group/issue8824/include/asterisk/strings.h Fri Jan 16 12:39:50 2009
@@ -765,17 +765,18 @@
#include <sqlext.h>
#include <sqltypes.h>
-AST_INLINE_API(SQLRETURN ast_str_SQLGetData(struct ast_str **buf, size_t maxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind),
+AST_INLINE_API(SQLRETURN ast_str_SQLGetData(struct ast_str **buf, int pmaxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind),
{
SQLRETURN res;
- if (maxlen == 0) {
+ size_t maxlen;
+ if (pmaxlen == 0) {
if (SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, 0, StrLen_or_Ind) == SQL_SUCCESS_WITH_INFO) {
ast_str_make_space(buf, *StrLen_or_Ind + 1);
}
- maxlen = (*buf)->__AST_STR_LEN;
- } else if (maxlen > 0) {
- ast_str_make_space(buf, maxlen);
- }
+ } else if (pmaxlen > 0) {
+ ast_str_make_space(buf, pmaxlen);
+ }
+ maxlen = (*buf)->__AST_STR_LEN;
res = SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, maxlen, StrLen_or_Ind);
(*buf)->__AST_STR_USED = *StrLen_or_Ind;
return res;
Modified: team/group/issue8824/main/ast_expr2.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/main/ast_expr2.c?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/main/ast_expr2.c (original)
+++ team/group/issue8824/main/ast_expr2.c Fri Jan 16 12:39:50 2009
@@ -372,7 +372,7 @@
} ;
#ifdef STANDALONE
-void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...) __attribute__((format(printf,5,6)));
+void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...) __attribute__ ((format (printf,5,6)));
#endif
struct val {
@@ -485,13 +485,13 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 342 "ast_expr2.y"
+#line 344 "ast_expr2.y"
{
struct val *val;
struct expr_node *arglist;
}
/* Line 187 of yacc.c. */
-#line 493 "ast_expr2.c"
+#line 495 "ast_expr2.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -513,13 +513,13 @@
/* Copy the second part of user declarations. */
-#line 347 "ast_expr2.y"
+#line 349 "ast_expr2.y"
extern int ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
/* Line 216 of yacc.c. */
-#line 521 "ast_expr2.c"
+#line 523 "ast_expr2.c"
#ifdef short
# undef short
@@ -743,7 +743,7 @@
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 4
/* YYNRULES -- Number of rules. */
-#define YYNRULES 27
+#define YYNRULES 28
/* YYNRULES -- Number of states. */
#define YYNSTATES 54
@@ -793,32 +793,33 @@
YYRHS. */
static const yytype_uint8 yyprhs[] =
{
- 0, 0, 3, 5, 6, 8, 12, 17, 19, 23,
- 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
- 66, 69, 73, 77, 81, 85, 89, 95
+ 0, 0, 3, 5, 6, 8, 12, 15, 20, 22,
+ 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
+ 66, 69, 72, 76, 80, 84, 88, 92, 98
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
27, 0, -1, 29, -1, -1, 29, -1, 28, 3,
- 29, -1, 25, 23, 28, 24, -1, 25, -1, 23,
- 29, 24, -1, 29, 6, 29, -1, 29, 7, 29,
- -1, 29, 13, 29, -1, 29, 12, 29, -1, 29,
- 11, 29, -1, 29, 10, 29, -1, 29, 9, 29,
- -1, 29, 8, 29, -1, 29, 15, 29, -1, 29,
- 14, 29, -1, 14, 29, -1, 19, 29, -1, 29,
- 18, 29, -1, 29, 17, 29, -1, 29, 16, 29,
- -1, 29, 22, 29, -1, 29, 21, 29, -1, 29,
- 5, 29, 4, 29, -1, 29, 20, 29, -1
+ 29, -1, 28, 3, -1, 25, 23, 28, 24, -1,
+ 25, -1, 23, 29, 24, -1, 29, 6, 29, -1,
+ 29, 7, 29, -1, 29, 13, 29, -1, 29, 12,
+ 29, -1, 29, 11, 29, -1, 29, 10, 29, -1,
+ 29, 9, 29, -1, 29, 8, 29, -1, 29, 15,
+ 29, -1, 29, 14, 29, -1, 14, 29, -1, 19,
+ 29, -1, 29, 18, 29, -1, 29, 17, 29, -1,
+ 29, 16, 29, -1, 29, 22, 29, -1, 29, 21,
+ 29, -1, 29, 5, 29, 4, 29, -1, 29, 20,
+ 29, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 371, 371, 379, 386, 387, 396, 402, 403, 407,
- 411, 415, 419, 423, 427, 431, 435, 439, 443, 447,
- 451, 455, 459, 463, 467, 471, 475, 480
+ 0, 373, 373, 381, 388, 389, 395, 404, 410, 411,
+ 415, 419, 423, 427, 431, 435, 439, 443, 447, 451,
+ 455, 459, 463, 467, 471, 475, 479, 483, 488
};
#endif
@@ -849,17 +850,17 @@
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 26, 27, 27, 28, 28, 29, 29, 29, 29,
+ 0, 26, 27, 27, 28, 28, 28, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 29, 29
+ 29, 29, 29, 29, 29, 29, 29, 29, 29
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
- 0, 2, 1, 0, 1, 3, 4, 1, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- 2, 3, 3, 3, 3, 3, 5, 3
+ 0, 2, 1, 0, 1, 3, 2, 4, 1, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 3, 3, 3, 5, 3
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -867,12 +868,12 @@
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 3, 0, 0, 0, 7, 0, 2, 19, 20, 0,
+ 3, 0, 0, 0, 8, 0, 2, 20, 21, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
- 0, 4, 0, 9, 10, 16, 15, 14, 13, 12,
- 11, 18, 17, 23, 22, 21, 27, 25, 24, 0,
- 6, 0, 5, 26
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 4, 0, 10, 11, 17, 16, 15, 14, 13,
+ 12, 19, 18, 24, 23, 22, 28, 26, 25, 6,
+ 7, 0, 5, 27
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -1471,119 +1472,119 @@
switch (yytype)
{
case 4: /* "TOK_COLONCOLON" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1475 "ast_expr2.c"
+#line 1478 "ast_expr2.c"
break;
case 5: /* "TOK_COND" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1480 "ast_expr2.c"
+#line 1483 "ast_expr2.c"
break;
case 6: /* "TOK_OR" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1485 "ast_expr2.c"
+#line 1488 "ast_expr2.c"
break;
case 7: /* "TOK_AND" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1490 "ast_expr2.c"
+#line 1493 "ast_expr2.c"
break;
case 8: /* "TOK_NE" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1495 "ast_expr2.c"
+#line 1498 "ast_expr2.c"
break;
case 9: /* "TOK_LE" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1500 "ast_expr2.c"
+#line 1503 "ast_expr2.c"
break;
case 10: /* "TOK_GE" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1505 "ast_expr2.c"
+#line 1508 "ast_expr2.c"
break;
case 11: /* "TOK_LT" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1510 "ast_expr2.c"
+#line 1513 "ast_expr2.c"
break;
case 12: /* "TOK_GT" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1515 "ast_expr2.c"
+#line 1518 "ast_expr2.c"
break;
case 13: /* "TOK_EQ" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1520 "ast_expr2.c"
+#line 1523 "ast_expr2.c"
break;
case 14: /* "TOK_MINUS" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1525 "ast_expr2.c"
+#line 1528 "ast_expr2.c"
break;
case 15: /* "TOK_PLUS" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1530 "ast_expr2.c"
+#line 1533 "ast_expr2.c"
break;
case 16: /* "TOK_MOD" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1535 "ast_expr2.c"
+#line 1538 "ast_expr2.c"
break;
case 17: /* "TOK_DIV" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1540 "ast_expr2.c"
+#line 1543 "ast_expr2.c"
break;
case 18: /* "TOK_MULT" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1545 "ast_expr2.c"
+#line 1548 "ast_expr2.c"
break;
case 19: /* "TOK_COMPL" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1550 "ast_expr2.c"
+#line 1553 "ast_expr2.c"
break;
case 20: /* "TOK_TILDETILDE" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1555 "ast_expr2.c"
+#line 1558 "ast_expr2.c"
break;
case 21: /* "TOK_EQTILDE" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1560 "ast_expr2.c"
+#line 1563 "ast_expr2.c"
break;
case 22: /* "TOK_COLON" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1565 "ast_expr2.c"
+#line 1568 "ast_expr2.c"
break;
case 23: /* "TOK_LP" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1570 "ast_expr2.c"
+#line 1573 "ast_expr2.c"
break;
case 24: /* "TOK_RP" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1575 "ast_expr2.c"
+#line 1578 "ast_expr2.c"
break;
case 25: /* "TOKEN" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1580 "ast_expr2.c"
+#line 1583 "ast_expr2.c"
break;
case 29: /* "expr" */
-#line 365 "ast_expr2.y"
+#line 367 "ast_expr2.y"
{ free_value((yyvaluep->val)); };
-#line 1585 "ast_expr2.c"
+#line 1588 "ast_expr2.c"
break;
default:
@@ -1906,7 +1907,7 @@
switch (yyn)
{
case 2:
-#line 371 "ast_expr2.y"
+#line 373 "ast_expr2.y"
{ ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
((struct parse_io *)parseio)->val->type = (yyvsp[(1) - (1)].val)->type;
if( (yyvsp[(1) - (1)].val)->type == AST_EXPR_number )
@@ -1918,7 +1919,7 @@
break;
case 3:
-#line 379 "ast_expr2.y"
+#line 381 "ast_expr2.y"
{/* nothing */ ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
((struct parse_io *)parseio)->val->type = AST_EXPR_string;
((struct parse_io *)parseio)->val->u.s = strdup("");
@@ -1926,12 +1927,12 @@
break;
case 4:
-#line 386 "ast_expr2.y"
+#line 388 "ast_expr2.y"
{ (yyval.arglist) = alloc_expr_node(AST_EXPR_NODE_VAL); (yyval.arglist)->val = (yyvsp[(1) - (1)].val);;}
break;
case 5:
-#line 387 "ast_expr2.y"
+#line 389 "ast_expr2.y"
{struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
struct expr_node *t;
DESTROY((yyvsp[(2) - (3)].val));
@@ -1941,7 +1942,17 @@
break;
case 6:
-#line 396 "ast_expr2.y"
+#line 395 "ast_expr2.y"
+ {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
+ struct expr_node *t; /* NULL args should OK */
+ DESTROY((yyvsp[(2) - (2)].val));
+ for (t=(yyvsp[(1) - (2)].arglist);t->right;t=t->right)
+ ;
+ (yyval.arglist) = (yyvsp[(1) - (2)].arglist); t->right = x; x->val = make_str("");;}
+ break;
+
+ case 7:
+#line 404 "ast_expr2.y"
{ (yyval.val) = op_func((yyvsp[(1) - (4)].val),(yyvsp[(3) - (4)].arglist), ((struct parse_io *)parseio)->chan);
DESTROY((yyvsp[(2) - (4)].val));
DESTROY((yyvsp[(4) - (4)].val));
@@ -1950,157 +1961,157 @@
;}
break;
- case 7:
-#line 402 "ast_expr2.y"
+ case 8:
+#line 410 "ast_expr2.y"
{(yyval.val) = (yyvsp[(1) - (1)].val);;}
break;
- case 8:
-#line 403 "ast_expr2.y"
+ case 9:
+#line 411 "ast_expr2.y"
{ (yyval.val) = (yyvsp[(2) - (3)].val);
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;
DESTROY((yyvsp[(1) - (3)].val)); DESTROY((yyvsp[(3) - (3)].val)); ;}
break;
- case 9:
-#line 407 "ast_expr2.y"
+ case 10:
+#line 415 "ast_expr2.y"
{ (yyval.val) = op_or ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 10:
-#line 411 "ast_expr2.y"
+ case 11:
+#line 419 "ast_expr2.y"
{ (yyval.val) = op_and ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 11:
-#line 415 "ast_expr2.y"
+ case 12:
+#line 423 "ast_expr2.y"
{ (yyval.val) = op_eq ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 12:
-#line 419 "ast_expr2.y"
+ case 13:
+#line 427 "ast_expr2.y"
{ (yyval.val) = op_gt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 13:
-#line 423 "ast_expr2.y"
+ case 14:
+#line 431 "ast_expr2.y"
{ (yyval.val) = op_lt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 14:
-#line 427 "ast_expr2.y"
+ case 15:
+#line 435 "ast_expr2.y"
{ (yyval.val) = op_ge ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 15:
-#line 431 "ast_expr2.y"
+ case 16:
+#line 439 "ast_expr2.y"
{ (yyval.val) = op_le ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 16:
-#line 435 "ast_expr2.y"
+ case 17:
+#line 443 "ast_expr2.y"
{ (yyval.val) = op_ne ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 17:
-#line 439 "ast_expr2.y"
+ case 18:
+#line 447 "ast_expr2.y"
{ (yyval.val) = op_plus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 18:
-#line 443 "ast_expr2.y"
+ case 19:
+#line 451 "ast_expr2.y"
{ (yyval.val) = op_minus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 19:
-#line 447 "ast_expr2.y"
+ case 20:
+#line 455 "ast_expr2.y"
{ (yyval.val) = op_negate ((yyvsp[(2) - (2)].val));
DESTROY((yyvsp[(1) - (2)].val));
(yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 20:
-#line 451 "ast_expr2.y"
+ case 21:
+#line 459 "ast_expr2.y"
{ (yyval.val) = op_compl ((yyvsp[(2) - (2)].val));
DESTROY((yyvsp[(1) - (2)].val));
(yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 21:
-#line 455 "ast_expr2.y"
+ case 22:
+#line 463 "ast_expr2.y"
{ (yyval.val) = op_times ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 22:
-#line 459 "ast_expr2.y"
+ case 23:
+#line 467 "ast_expr2.y"
{ (yyval.val) = op_div ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 23:
-#line 463 "ast_expr2.y"
+ case 24:
+#line 471 "ast_expr2.y"
{ (yyval.val) = op_rem ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 24:
-#line 467 "ast_expr2.y"
+ case 25:
+#line 475 "ast_expr2.y"
{ (yyval.val) = op_colon ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 25:
-#line 471 "ast_expr2.y"
+ case 26:
+#line 479 "ast_expr2.y"
{ (yyval.val) = op_eqtilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 26:
-#line 475 "ast_expr2.y"
+ case 27:
+#line 483 "ast_expr2.y"
{ (yyval.val) = op_cond ((yyvsp[(1) - (5)].val), (yyvsp[(3) - (5)].val), (yyvsp[(5) - (5)].val));
DESTROY((yyvsp[(2) - (5)].val));
DESTROY((yyvsp[(4) - (5)].val));
@@ -2108,8 +2119,8 @@
(yyloc).first_line=0; (yyloc).last_line=0;;}
break;
- case 27:
-#line 480 "ast_expr2.y"
+ case 28:
+#line 488 "ast_expr2.y"
{ (yyval.val) = op_tildetilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
DESTROY((yyvsp[(2) - (3)].val));
(yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2118,7 +2129,7 @@
/* Line 1267 of yacc.c. */
-#line 2120 "ast_expr2.c"
+#line 2133 "ast_expr2.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2338,7 +2349,7 @@
}
-#line 486 "ast_expr2.y"
+#line 494 "ast_expr2.y"
static struct expr_node *alloc_expr_node(enum node_type nt)
@@ -2556,7 +2567,7 @@
char numbuf[30];
if (t != arglist)
- strcat(argbuf,"|");
+ strcat(argbuf,",");
if (t->val) {
if (t->val->type == AST_EXPR_number) {
Modified: team/group/issue8824/main/ast_expr2.h
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/main/ast_expr2.h?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/main/ast_expr2.h (original)
+++ team/group/issue8824/main/ast_expr2.h Fri Jan 16 12:39:50 2009
@@ -94,7 +94,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 342 "ast_expr2.y"
+#line 344 "ast_expr2.y"
{
struct val *val;
struct expr_node *arglist;
Modified: team/group/issue8824/main/ast_expr2.y
URL: http://svn.digium.com/svn-view/asterisk/team/group/issue8824/main/ast_expr2.y?view=diff&rev=168827&r1=168826&r2=168827
==============================================================================
--- team/group/issue8824/main/ast_expr2.y (original)
[... 97 lines stripped ...]
More information about the asterisk-commits
mailing list