[SR-Dev] git:master: Kamailio to sip-router module conversion script.

Jan Janak jan at iptel.org
Tue Feb 17 19:16:15 CET 2009


Module: sip-router
Branch: master
Commit: ec898038f34decb415e3adb696f2c0ff2ab007ed
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=ec898038f34decb415e3adb696f2c0ff2ab007ed

Author: Jan Janak <jan at iptel.org>
Committer: Jan Janak <jan at iptel.org>
Date:   Tue Feb 17 19:13:11 2009 +0100

Kamailio to sip-router module conversion script.

This is a simple script which attempts to convert modules that use kamalio
core to sip-router core.

Signed-off-by: Jan Janak <jan at iptel.org>

---

 scripts/kam_to_sr.sh |  107 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/scripts/kam_to_sr.sh b/scripts/kam_to_sr.sh
new file mode 100755
index 0000000..330ee07
--- /dev/null
+++ b/scripts/kam_to_sr.sh
@@ -0,0 +1,107 @@
+#!/usr/bin/env sh
+#
+# This is a simple script which attempts to convert kamailio modules so that
+# they can be used with the sip-router core. Most of the changes done by the
+# script deal with the changes in the database abstraction layer in the
+# sip-router source tree. 
+#
+# Run this script in module directory to convert it from kamailio core to
+# sip-router core. The root of the tree should be two levels up, otherwise
+# relative paths to headers (../..) would not work and the module will not
+# compile.
+# 
+# Some of the changes done by the script:
+#
+#  * Extra defines in the Makefile to make the module link with libsrdb1
+#  * Path to database headers updated to point to lib/srdb1
+#  * db_con_t and db_res_t renamed to db1_con_t and db1_res_t in *.[ch]
+#  * Value type names such as DB_INT changed to DB1_INT in *.[ch]
+#
+# NOTE: There is no guarantee that the update module would compile or even
+#       work. Make a backup before running the script. You have been warned!
+# 
+# Written by Jan Janak <jan at iptel.org>
+#
+
+if [ ! -f Makefile ] ; then
+	echo "ERROR: Could not find module Makefile"
+	echo "       Run this file in the module directory"
+	exit 1
+fi
+
+if ! egrep "Makefile\.modules" Makefile >/dev/null ; then
+	echo "ERROR: Doesn't look like a module..."
+	exit 1
+fi
+
+if ! egrep '^#[ \t]*include[ \t]*".*\/db\/db(_(cap|id|key|op|pool|query|res|row|ut|val))?\.h[ \t]*"' *.[ch] >/dev/null ; then
+	echo "The module does not seem to include old database headers..."
+	exit 0
+fi
+
+echo -n "Updating Makefile..."
+cp Makefile Makefile.backup
+cat Makefile.backup | gawk '
+BEGIN {
+    serlibpath_seen = 0
+    libs_seen = 0
+    defs_seen = 0
+}
+
+# If the define already exists then skip it, this ensures that
+# we do not add the same line more than once.
+/^[ \t]*DEFS[ \t]*\+?=.*OPENSER_MOD_INTERFACE/ {
+    defs_seen = 1
+}
+
+/^[ \t]*SER_LIBS[ \t]*\+?=.*srdb1\/srdb1/ {
+    libs_seen = 1
+}
+
+/^[ \t]*SERLIBPATH[ \t]*=/ {
+    serlibpath_seen = 1
+}
+
+# Write everything just before the line including Makefile.modules,
+# this is most likely the last line in the Makefile
+/^[ \t]*include[ \t]+.*\/Makefile\.modules[ \t]*$/ {
+    if (serlibpath_seen == 0) print "SERLIBPATH=../../lib"
+    if (defs_seen == 0) print "DEFS+=-DOPENSER_MOD_INTERFACE"
+    if (libs_seen == 0) print "SER_LIBS+=$(SERLIBPATH)/srdb1/srdb1"
+}
+
+{ print $0 }
+
+' > Makefile
+echo "done."
+
+for file in *.[ch] ; do
+	echo -n "Updating file $file..."
+	cp $file $file.backup
+	cat $file.backup | gawk '
+
+/^#[ \t]*include[ \t]*".*\/db\/db(_(cap|id|key|op|pool|query|res|row|ut|val))?\.h[ \t]*"/ {
+    sub("/db/", "/lib/srdb1/", $0);
+}
+
+/[^a-zA-Z0-9_](db_(con|res)_t|struct[ \t]+db_(con|res))[^a-zA-Z0-9_]/ {
+    gsub("struct[ \t]+db_con", "struct db1_con", $0);
+    gsub("struct[ \t]+db_res", "struct db1_res", $0);
+    gsub("db_con_t", "db1_con_t", $0);
+    gsub("db_res_t", "db1_res_t", $0);
+}
+
+/[^a-zA-Z0-9_]DB_((BIG)?INT|DOUBLE|STR(ING)?|DATETIME|BLOB|BITMAP)[^a-zA-Z0-9_]/ {
+    gsub("DB_INT", "DB1_INT", $0);
+    gsub("DB_BIGINT", "DB1_BIGINT", $0);
+    gsub("DB_DOUBLE", "DB1_DOUBLE", $0);
+    gsub("DB_STR", "DB1_STR", $0);
+    gsub("DB_DATETIME", "DB1_DATETIME", $0);
+    gsub("DB_BLOB", "DB1_BLOB", $0);
+    gsub("DB_BITMAP", "DB1_BITMAP", $0);
+}
+
+{ print $0 }
+' >$file
+	echo "done."
+done




More information about the sr-dev mailing list