[asterisk-commits] trunk r24020 - /trunk/utils/ael_main.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Mon May 1 13:44:26 MST 2006


Author: rizzo
Date: Mon May  1 15:44:26 2006
New Revision: 24020

URL: http://svn.digium.com/view/asterisk?rev=24020&view=rev
Log:
add missing functions - see the comment in the file explaining
in detail why this is needed and that hopefully this is a
temporary workaround.


Modified:
    trunk/utils/ael_main.c

Modified: trunk/utils/ael_main.c
URL: http://svn.digium.com/view/asterisk/trunk/utils/ael_main.c?rev=24020&r1=24019&r2=24020&view=diff
==============================================================================
--- trunk/utils/ael_main.c (original)
+++ trunk/utils/ael_main.c Mon May  1 15:44:26 2006
@@ -258,3 +258,42 @@
 	
     return 0;
 }
+
+/*
+ * XXX the code below is replicated here from utils.c, because
+ * the #define AST_API_MODULE references functions that are
+ * not available on all platforms.
+ * We hit the problem with strndup (which in turn uses strnlen),
+ * but it is possible that there are more of these issues.
+ *
+ * When utils.c is properly split and functions become available
+ * through a library, this file will just link to the library and
+ * the problem will go away together with the code below.
+ */
+#ifndef HAVE_STRNLEN
+size_t strnlen(const char *s, size_t n)
+{
+        size_t len;   
+
+        for (len=0; len < n; len++)
+                if (s[len] == '\0')
+                        break;
+
+        return len;
+}
+#endif /* !HAVE_STRNLEN */
+
+#if !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC)
+char *strndup(const char *s, size_t n)
+{
+        size_t len = strnlen(s, n);
+        char *new = malloc(len + 1);
+
+        if (!new)
+                return NULL;
+
+        new[len] = '\0';
+        return memcpy(new, s, len);
+}
+#endif /* !defined(HAVE_STRNDUP) && !defined(__AST_DEBUG_MALLOC) */
+



More information about the asterisk-commits mailing list