[asterisk-commits] tilghman: trunk r117986 - in /trunk: configs/ pbx/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu May 22 16:42:51 CDT 2008


Author: tilghman
Date: Thu May 22 16:42:50 2008
New Revision: 117986

URL: http://svn.digium.com/view/asterisk?view=rev&rev=117986
Log:
Add a compatibility option for upgrading realtime extensions

Added:
    trunk/configs/pbx_realtime.conf   (with props)
Modified:
    trunk/pbx/pbx_realtime.c

Added: trunk/configs/pbx_realtime.conf
URL: http://svn.digium.com/view/asterisk/trunk/configs/pbx_realtime.conf?view=auto&rev=117986
==============================================================================
--- trunk/configs/pbx_realtime.conf (added)
+++ trunk/configs/pbx_realtime.conf Thu May 22 16:42:50 2008
@@ -1,0 +1,11 @@
+[general]
+; The native delimiters for application arguments changed in 1.6 to be commas,
+; instead of pipes.  For people who don't want to upgrade their databases
+; immediately, there is this compatibility option, which will allow them to
+; use pipes, via a translation done at runtime.  Set compat to 1.4, if you
+; want to turn this translation ON.  Set compat to 1.6 if you've already made
+; the transition.
+;
+; compat=1.4
+compat=1.6
+

Propchange: trunk/configs/pbx_realtime.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/configs/pbx_realtime.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: trunk/configs/pbx_realtime.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: trunk/pbx/pbx_realtime.c
URL: http://svn.digium.com/view/asterisk/trunk/pbx/pbx_realtime.c?view=diff&rev=117986&r1=117985&r2=117986
==============================================================================
--- trunk/pbx/pbx_realtime.c (original)
+++ trunk/pbx/pbx_realtime.c Thu May 22 16:42:50 2008
@@ -53,6 +53,8 @@
 
 #define EXT_DATA_SIZE 256
 
+/* If set to 0, translate commas to "\," and pipes to "," */
+static int compat16 = 1;
 
 /* Realtime switch looks up extensions in the supplied realtime table.
 
@@ -176,8 +178,24 @@
 		for (v = var; v ; v = v->next) {
 			if (!strcasecmp(v->name, "app"))
 				app = ast_strdupa(v->value);
-			else if (!strcasecmp(v->name, "appdata"))
-				tmp = ast_strdupa(v->value);
+			else if (!strcasecmp(v->name, "appdata")) {
+				if (!compat16) {
+					char *ptr;
+					tmp = alloca(strlen(v->value) * 2 + 1);
+					for (ptr = tmp; *v->value; v->value++) {
+						if (*v->value == ',') {
+							*ptr++ = '\\';
+							*ptr++ = ',';
+						} else if (*v->value == '|') {
+							*ptr++ = ',';
+						} else {
+							*ptr++ = *v->value;
+						}
+					}
+				} else {
+					tmp = ast_strdupa(v->value);
+				}
+			}
 		}
 		ast_variables_destroy(var);
 		if (!ast_strlen_zero(app)) {
@@ -243,6 +261,18 @@
 
 static int load_module(void)
 {
+	struct ast_flags flags = { 0 };
+	struct ast_config *cfg = ast_config_load("pbx_realtime.conf", flags);
+	if (cfg) {
+		const char *tmp = ast_variable_retrieve(cfg, "general", "compat");
+		if (tmp && strncmp(tmp, "1.6", 3)) {
+			compat16 = 0;
+		} else {
+			compat16 = 1;
+		}
+		ast_config_destroy(cfg);
+	}
+
 	if (ast_register_switch(&realtime_switch))
 		return AST_MODULE_LOAD_FAILURE;
 	return AST_MODULE_LOAD_SUCCESS;




More information about the asterisk-commits mailing list