Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv6121

Modified Files:
        Makefile channel.c utils.c 
Log Message:
first phase of proper fix for portable string function problems (bug #4669)


Index: Makefile
===================================================================
RCS file: /usr/cvsroot/asterisk/Makefile,v
retrieving revision 1.179
retrieving revision 1.180
diff -u -d -r1.179 -r1.180
--- Makefile    14 Jul 2005 19:40:15 -0000      1.179
+++ Makefile    15 Jul 2005 00:39:01 -0000      1.180
@@ -249,7 +249,7 @@
 CFLAGS+=-D__Darwin__
 endif
 ifeq (${OSARCH},FreeBSD)
-LIBS+=-lcrypto -lstrfunc
+LIBS+=-lcrypto
 endif
 ifeq (${OSARCH},NetBSD)
 LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/local/lib 
-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses

Index: channel.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channel.c,v
retrieving revision 1.218
retrieving revision 1.219
diff -u -d -r1.218 -r1.219
--- channel.c   12 Jul 2005 16:00:23 -0000      1.218
+++ channel.c   15 Jul 2005 00:39:01 -0000      1.219
@@ -31,12 +31,6 @@
 #error "You need newer zaptel!  Please cvs update zaptel"
 #endif
 #endif
-#ifdef __FreeBSD__
-#include <strfunc.h>
-#if (!defined(__STRFUNC_H__) && (!defined(STRFUNC_H)))
-#error "Please install the strfunc library located in the ports collection at 
/usr/ports/devel/libstrfunc"
-#endif
-#endif
 
 #include "asterisk.h"
 
@@ -1759,8 +1753,8 @@
                        break; /* no frame */
                if (f->frametype == AST_FRAME_CONTROL && f->subclass == 
AST_CONTROL_HANGUP)
                        done = 1;       /* force a break */
-               else if (f->frametype == AST_FRAME_TEXT) {      /* what we want 
*/
-                       buf = strndup((char *)f->data, f->datalen);     /* dup 
and break */
+               else if (f->frametype == AST_FRAME_TEXT) {                      
/* what we want */
+                       buf = ast_strndup((char *) f->data, f->datalen);        
/* dup and break */
                        done = 1;
                }
                ast_frfree(f);

Index: utils.c
===================================================================
RCS file: /usr/cvsroot/asterisk/utils.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- utils.c     24 Jun 2005 22:45:15 -0000      1.53
+++ utils.c     15 Jul 2005 00:39:01 -0000      1.54
@@ -535,4 +535,28 @@
                return NULL;
        }
 }
-#endif /* LINUX */
+
+size_t ast_strnlen(const char *s, size_t n)
+{
+       size_t len;
+
+       for (len=0; len < n; len++)
+               if (s[len] == '\0')
+                       break;
+
+       return len;
+}
+
+char *ast_strndup(const char *s, size_t n)
+{
+       size_t len = ast_strnlen(s, n);
+       char *new = malloc(len + 1);
+
+       if (!new)
+               return NULL;
+
+       new[len] = '\0';
+       return memcpy(new, s, len);
+}
+
+#endif /* !LINUX */

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to