Hi,

the attached patch updates libshout to version 2.2; changes are listed in the patch itself.

2.2 is very close to what I tested for a very long time on i386 with aggressive MALLOC_OPTIONS, and another extensive test with ices and ices2 shows that it's still good on i386.

This breaks net/ices until it is adjusted (patch follows in a separate mail.)


Moritz
* Update to libshout-2.2 (new: Speex support and bugfixes)
* Enable Theora support
* Use devel/pkgconfig now -- more consistent, but it'll break net/ices!
  (net/ices update comes next)
* PNF
* Patch maintenance
* Fix another double-free() that, unfortunately, didn't make it into 2.2
  in time

diff -pruN --exclude=CVS /usr/ports/net/libshout/Makefile ./Makefile
--- /usr/ports/net/libshout/Makefile    Sun Jan  1 11:23:39 2006
+++ ./Makefile  Fri Jan  6 14:32:04 2006
@@ -2,9 +2,8 @@
 
 COMMENT=       "library for communicating with an icecast server"
 
-DISTNAME=      libshout-2.1
-PKGNAME=       ${DISTNAME}p2
-SHARED_LIBS=           shout   4.0
+DISTNAME=      libshout-2.2
+SHARED_LIBS=           shout   5.0
 MODGNU_SHARED_LIBS=    shout   ''
 CATEGORIES=    net audio
 
@@ -21,15 +20,17 @@ WANTLIB=    m ogg
 
 MASTER_SITES=  http://downloads.xiph.org/releases/libshout/
 
-LIB_DEPENDS=   vorbis.4::audio/libvorbis
+BUILD_DEPENDS= ::devel/pkgconfig \
+               speex.4::audio/speex
+LIB_DEPENDS=   vorbis.4::audio/libvorbis \
+               theora.1::multimedia/libtheora
 
-USE_LIBTOOL=   Yes
+FAKE_FLAGS=    docdir='${PREFIX}/share/examples/libshout'
+
 CONFIGURE_STYLE=gnu
-CONFIGURE_ARGS=        ${CONFIGURE_SHARED} --disable-pkgconfig \
-               --without-theora
+CONFIGURE_ARGS+=${CONFIGURE_SHARED}
 
 SEPARATE_BUILD=        simple
-
-FAKE_FLAGS=    docdir='${PREFIX}/share/examples/libshout'
+USE_LIBTOOL=   Yes
 
 .include <bsd.port.mk>
diff -pruN --exclude=CVS /usr/ports/net/libshout/distinfo ./distinfo
--- /usr/ports/net/libshout/distinfo    Sun Jan  1 11:23:39 2006
+++ ./distinfo  Fri Jan  6 12:30:06 2006
@@ -1,4 +1,4 @@
-MD5 (libshout-2.1.tar.gz) = ca6e98af87fd17c709821d9be82b37d5
-RMD160 (libshout-2.1.tar.gz) = edcbf2c8111bd76ce27734513a4c483986ba2e7e
-SHA1 (libshout-2.1.tar.gz) = c251d0791d807762957235442fa9b777f3f6068c
-SIZE (libshout-2.1.tar.gz) = 455243
+MD5 (libshout-2.2.tar.gz) = d5b273a072785ee14a85ff76f66850aa
+RMD160 (libshout-2.2.tar.gz) = fb1697ce5e95a8e54168656d5a9a735cbb68c972
+SHA1 (libshout-2.2.tar.gz) = e059116226d05758192575db2965017f28424860
+SIZE (libshout-2.2.tar.gz) = 472875
diff -pruN --exclude=CVS /usr/ports/net/libshout/patches/patch-src_avl_avl_c 
./patches/patch-src_avl_avl_c
--- /usr/ports/net/libshout/patches/patch-src_avl_avl_c Tue Apr 19 22:23:44 2005
+++ ./patches/patch-src_avl_avl_c       Sat Dec 31 14:11:30 2005
@@ -1,6 +1,6 @@
 $OpenBSD: patch-src_avl_avl_c,v 1.4 2005/04/19 20:23:44 sturm Exp $
 --- src/avl/avl.c.orig Mon Jul  5 22:44:13 2004
-+++ src/avl/avl.c      Tue Apr 19 22:18:54 2005
++++ src/avl/avl.c      Sat Dec 31 14:11:23 2005
 @@ -35,6 +35,7 @@
  
  #include <stdio.h>
@@ -9,12 +9,14 @@ $OpenBSD: patch-src_avl_avl_c,v 1.4 2005
  
  #include "avl.h"
  
-@@ -1063,9 +1064,11 @@ typedef struct _link_node {
+@@ -1062,10 +1063,12 @@ typedef struct _link_node {
+ 
  static char balance_chars[3] = {'\\', '-', '/'};
  
- static int
+-static int
 -default_key_printer (char * buffer, void * key)
-+default_key_printer (char * buffer, size_t size, void * key)
++static unsigned int
++default_key_printer (char * buffer, unsigned int size, void * key)
  {
 -  return sprintf (buffer, "%p", key);
 +  snprintf (buffer, size, "%p", key);
@@ -23,13 +25,11 @@ $OpenBSD: patch-src_avl_avl_c,v 1.4 2005
  }  
  
  /*
-@@ -1108,8 +1111,8 @@ print_node (avl_key_printer_fun_type key
-         link_node * link)
+@@ -1109,7 +1112,7 @@ print_node (avl_key_printer_fun_type key
  {
    char buffer[256];
--  unsigned int width;
+   unsigned int width;
 -  width = key_printer (buffer, node->key);
-+  size_t width;
 +  width = key_printer (buffer, sizeof(buffer), node->key);
  
    if (node->right) {
diff -pruN --exclude=CVS /usr/ports/net/libshout/patches/patch-src_avl_avl_h 
./patches/patch-src_avl_avl_h
--- /usr/ports/net/libshout/patches/patch-src_avl_avl_h Tue Apr 19 22:07:11 2005
+++ ./patches/patch-src_avl_avl_h       Sat Dec 31 14:11:30 2005
@@ -1,12 +1,12 @@
 $OpenBSD: patch-src_avl_avl_h,v 1.1 2005/04/19 20:07:11 sturm Exp $
---- src/avl/avl.h.orig Sun Apr 17 02:44:39 2005
-+++ src/avl/avl.h      Sun Apr 17 02:45:06 2005
+--- src/avl/avl.h.orig Mon Jul  5 22:44:13 2004
++++ src/avl/avl.h      Sat Dec 31 14:10:34 2005
 @@ -55,7 +55,7 @@ typedef int (*avl_key_compare_fun_type) 
  typedef int (*avl_iter_fun_type)    (void * key, void * iter_arg);
  typedef int (*avl_iter_index_fun_type)    (unsigned long index, void * key, 
void * iter_arg);
  typedef int (*avl_free_key_fun_type)    (void * key);
 -typedef int (*avl_key_printer_fun_type)    (char *, void *);
-+typedef int (*avl_key_printer_fun_type)    (char *, size_t, void *);
++typedef unsigned int (*avl_key_printer_fun_type)    (char *, unsigned int, 
void *);
  
  /*
   * <compare_fun> and <compare_arg> let us associate a particular compare
diff -pruN --exclude=CVS /usr/ports/net/libshout/patches/patch-src_shout_c 
./patches/patch-src_shout_c
--- /usr/ports/net/libshout/patches/patch-src_shout_c   Tue Apr 19 22:07:11 2005
+++ ./patches/patch-src_shout_c Fri Jan  6 12:31:10 2006
@@ -1,7 +1,36 @@
 $OpenBSD: patch-src_shout_c,v 1.1 2005/04/19 20:07:11 sturm Exp $
---- src/shout.c.orig   Sun Apr 17 12:25:25 2005
-+++ src/shout.c        Sun Apr 17 12:51:32 2005
-@@ -489,7 +489,7 @@ int shout_set_mount(shout_t *self, const
+--- src/shout.c.orig   Tue Jan  3 19:56:39 2006
++++ src/shout.c        Fri Jan  6 12:30:31 2006
+@@ -165,6 +165,8 @@ int shout_close(shout_t *self)
+       if (self->close)
+               self->close(self);
+ 
++      self->close = NULL;
++      self->send = NULL;
+       sock_close(self->socket);
+       self->state = SHOUT_STATE_UNCONNECTED;
+       self->starttime = 0;
+@@ -183,6 +185,9 @@ int shout_send(shout_t *self, const unsi
+       if (self->state != SHOUT_STATE_CONNECTED)
+               return self->error = SHOUTERR_UNCONNECTED;
+ 
++      if (self->send == NULL)
++              return self->error = SHOUTERR_NOCONNECT;
++
+       if (self->starttime <= 0)
+               self->starttime = timing_get_time();
+ 
+@@ -202,6 +207,9 @@ ssize_t shout_send_raw(shout_t *self, co
+       if (self->state != SHOUT_STATE_CONNECTED)
+               return SHOUTERR_UNCONNECTED;
+ 
++      if (self->send == NULL)
++              return self->error = SHOUTERR_NOCONNECT;
++
+       self->error = SHOUTERR_SUCCESS;
+ 
+       /* send immediately if possible (should be the common case) */
+@@ -489,7 +497,7 @@ int shout_set_mount(shout_t *self, const
        if (!(self->mount = malloc(len)))
                return self->error = SHOUTERR_MALLOC;
  
@@ -10,44 +39,30 @@ $OpenBSD: patch-src_shout_c,v 1.1 2005/0
  
        return self->error = SHOUTERR_SUCCESS;
  }
-@@ -1145,6 +1145,7 @@ static char *http_basic_authorization(sh
+@@ -1146,7 +1154,7 @@ static int create_http_request(shout_t *
+ static char *http_basic_authorization(shout_t *self)
  {
        char *out, *in;
-       int len;
-+      int ret;
+-      int len;
++      size_t len;
  
        if (!self || !self->user || !self->password)
                return NULL;
-@@ -1152,7 +1153,11 @@ static char *http_basic_authorization(sh
+@@ -1154,7 +1162,7 @@ static char *http_basic_authorization(sh
        len = strlen(self->user) + strlen(self->password) + 2;
        if (!(in = malloc(len)))
                return NULL;
 -      sprintf(in, "%s:%s", self->user, self->password);
-+      ret = snprintf(in, len, "%s:%s", self->user, self->password);
-+      if (ret == -1 || ret >= len) {
-+              free(in);
-+              return NULL;
-+      }
++      snprintf(in, len, "%s:%s", self->user, self->password);
        out = _shout_util_base64_encode(in);
        free(in);
  
-@@ -1161,10 +1166,15 @@ static char *http_basic_authorization(sh
+@@ -1163,7 +1171,7 @@ static char *http_basic_authorization(sh
                free(out);
                return NULL;
        }
 -      sprintf(in, "Authorization: Basic %s\r\n", out);
--      free(out);
--      
--      return in;
-+      ret = snprintf(in, len, "Authorization: Basic %s\r\n", out);
-+      if (ret == -1 || ret >= len) {
-+              free(in);
-+              free(out);
-+              return NULL;
-+      } else {
-+              free(out);
-+              return in;
-+      }
- }
- 
- static int parse_response(shout_t *self)
++      snprintf(in, len, "Authorization: Basic %s\r\n", out);
+       free(out);
+       
+       return in;
diff -pruN --exclude=CVS /usr/ports/net/libshout/patches/patch-src_util_c 
./patches/patch-src_util_c
--- /usr/ports/net/libshout/patches/patch-src_util_c    Tue Aug 23 01:25:39 2005
+++ ./patches/patch-src_util_c  Sat Dec 31 11:23:50 2005
@@ -1,6 +1,6 @@
 $OpenBSD: patch-src_util_c,v 1.2 2005/08/22 23:25:39 pvalchev Exp $
 --- src/util.c.orig    Sun Mar 21 05:03:34 2004
-+++ src/util.c Fri Aug 19 21:04:04 2005
++++ src/util.c Sat Dec 31 11:23:42 2005
 @@ -254,6 +254,7 @@ char *_shout_util_dict_urlencode(util_di
        char *res, *tmp;
        char *enc;
@@ -9,25 +9,18 @@ $OpenBSD: patch-src_util_c,v 1.2 2005/08
  
        for (res = NULL; dict; dict = dict->next) {
                /* encode key */
-@@ -265,21 +266,39 @@ char *_shout_util_dict_urlencode(util_di
+@@ -265,21 +266,24 @@ char *_shout_util_dict_urlencode(util_di
                        return NULL;
                }
                if (start) {
 -                      if (!(res = malloc(strlen(enc) + 1))) {
-+                      int ret;
-+
 +                      buflen = strlen(enc) + 1;
 +                      if ((res = malloc(buflen)) == NULL) {
                                free(enc);
                                return NULL;
                        }
 -                      sprintf(res, "%s", enc);
-+                      ret = snprintf(res, buflen, "%s", enc);
-+                      if (ret == -1 || ret >= buflen) {
-+                              free(enc);
-+                              free(res);
-+                              return NULL;
-+                      }
++                      snprintf(res, buflen, "%s", enc);
                        free(enc);
                        start = 0;
                } else {
@@ -37,24 +30,15 @@ $OpenBSD: patch-src_util_c,v 1.2 2005/08
                                free(enc);
                                free(res);
                                return NULL;
--                      } else
-+                      } else {
-+                              int ret;
-+
+                       } else
                                res = tmp;
 -                      sprintf(res + strlen(res), "%c%s", delim, enc);
-+                              ret = snprintf(res + strlen(res), buflen - 
strlen(res),
-+                                             "%c%s", delim, enc);
-+                              if (ret == -1 || ret >= buflen - strlen(res)) {
-+                                      free(enc);
-+                                      free(res);
-+                                      return NULL;
-+                              }
-+                      }
++                      snprintf(res + strlen(res), buflen - strlen(res),
++                                     "%c%s", delim, enc);
                        free(enc);
                }
  
-@@ -291,14 +310,25 @@ char *_shout_util_dict_urlencode(util_di
+@@ -291,13 +295,14 @@ char *_shout_util_dict_urlencode(util_di
                        return NULL;
                }
  
@@ -64,23 +48,10 @@ $OpenBSD: patch-src_util_c,v 1.2 2005/08
                        free(enc);
                        free(res);
                        return NULL;
--              } else
-+              } else {
-+                      int ret;
-+                      size_t reslen;
+               } else
                        res = tmp;
 -              sprintf(res + strlen(res), "=%s", enc);
--              free(enc);
-+                      reslen = strlen(res);
-+                      ret = snprintf(res + reslen, buflen - reslen, "=%s", 
enc);
-+                      if (ret == -1 || ret >= buflen - reslen) {
-+                              free(enc);
-+                              free(res);
-+                              return NULL;
-+                      }
-+                      free(enc);
-+                      enc = NULL;
-+              }
++              snprintf(res + strlen(res), buflen - strlen(res), "=%s", enc);
+               free(enc);
        }
  
-       return res;
diff -pruN --exclude=CVS /usr/ports/net/libshout/pkg/PLIST ./pkg/PLIST
--- /usr/ports/net/libshout/pkg/PLIST   Sun Feb 27 20:14:40 2005
+++ ./pkg/PLIST Fri Jan  6 12:56:01 2006
@@ -1,13 +1,15 @@
 @comment $OpenBSD: PLIST,v 1.4 2005/02/27 19:14:40 naddy Exp $
-bin/shout-config
 include/shout/
 include/shout/shout.h
 lib/libshout.a
 lib/libshout.la
+lib/pkgconfig/
+lib/pkgconfig/shout.pc
 share/aclocal/
 share/aclocal/shout.m4
 share/examples/libshout/
 @comment share/examples/libshout/COPYING
[EMAIL PROTECTED] share/examples/libshout/NEWS
 @comment share/examples/libshout/README
 share/examples/libshout/example.c
 share/examples/libshout/nonblocking.c

Reply via email to