ports/54685: ipv6 support for port multimedia/xmms
Emiel Kollof
coolvibe at hackerheaven.org
Mon Jul 21 02:20:20 UTC 2003
>Number: 54685
>Category: ports
>Synopsis: ipv6 support for port multimedia/xmms
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Sun Jul 20 19:20:16 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Emiel Kollof
>Release: FreeBSD 4.8-STABLE i386
>Organization:
>Environment:
System: FreeBSD azazel.ipv6.hackerheaven.org 4.8-STABLE FreeBSD 4.8-STABLE #3: Tue Jun 24 06:49:56 CEST 2003 root at azazel.ipv6.hackerheaven.org:/usr/obj/usr/src/sys/AZAZEL i386
>Description:
I made a diff from the xmms implementation with ipv6 support on http://www.icecast6.remcom.org/, the
relevant patch is in patch-aa in files. shar archive below. I don't exactly know who the author is though.
I made the ipv6 support available as a WITH_IPV6 knob. Default, ipv6 is off.
>How-To-Repeat:
>Fix:
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# multimedia/xmms
# multimedia/xmms/files
# multimedia/xmms/files/patch-ad
# multimedia/xmms/files/patch-libxmms::util.c
# multimedia/xmms/files/patch-ltmain.sh
# multimedia/xmms/files/patch-aa
# multimedia/xmms/Makefile
# multimedia/xmms/distinfo
# multimedia/xmms/pkg-descr
# multimedia/xmms/pkg-message
# multimedia/xmms/pkg-plist
#
echo c - multimedia/xmms
mkdir -p multimedia/xmms > /dev/null 2>&1
echo c - multimedia/xmms/files
mkdir -p multimedia/xmms/files > /dev/null 2>&1
echo x - multimedia/xmms/files/patch-ad
sed 's/^X//' >multimedia/xmms/files/patch-ad << 'END-of-multimedia/xmms/files/patch-ad'
X
X$FreeBSD: ports/multimedia/xmms/files/patch-ad,v 1.12 2002/05/14 06:21:23 sobomax Exp $
X
X--- configure.orig Mon Mar 4 23:57:01 2002
X+++ configure Tue May 14 09:06:50 2002
X@@ -10576,7 +10576,7 @@
X GMSGFMT="OLD_PO_FILE_INPUT=yes $GMSGFMT"
X MSGFMT="OLD_PO_FILE_INPUT=yes $MSGFMT"
X
X-localedir=${datadir}/locale
X+localedir=${prefix}/share/locale
X
X
X
X@@ -12673,10 +12673,6 @@
X *) # Relative path.
X ac_sub_cache_file="$ac_dots$cache_file" ;;
X esac
X- case "$ac_given_INSTALL" in
X- [/$]*) INSTALL="$ac_given_INSTALL" ;;
X- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
X- esac
X
X echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
X # The eval makes quoting arguments work.
END-of-multimedia/xmms/files/patch-ad
echo x - multimedia/xmms/files/patch-libxmms::util.c
sed 's/^X//' >multimedia/xmms/files/patch-libxmms::util.c << 'END-of-multimedia/xmms/files/patch-libxmms::util.c'
X--- libxmms/util.c.orig Fri Jun 1 15:07:49 2001
X+++ libxmms/util.c Sun Oct 6 18:40:25 2002
X@@ -11,6 +11,7 @@
X #endif
X
X #ifdef __FreeBSD__
X+#include <sys/types.h>
X #include <sys/sysctl.h>
X #endif
X
END-of-multimedia/xmms/files/patch-libxmms::util.c
echo x - multimedia/xmms/files/patch-ltmain.sh
sed 's/^X//' >multimedia/xmms/files/patch-ltmain.sh << 'END-of-multimedia/xmms/files/patch-ltmain.sh'
X
X$FreeBSD: ports/multimedia/xmms/files/patch-ltmain.sh,v 1.2 2002/03/05 21:09:09 pat Exp $
X
X--- ltmain.sh.orig Mon Sep 24 14:12:50 2001
X+++ ltmain.sh Tue Mar 5 11:16:25 2002
X@@ -2444,6 +2444,9 @@
X *-*-openbsd*)
X # Do not include libc due to us having libc/libc_r.
X ;;
X+ *-*-freebsd*)
X+ # FreeBSD doesn't need this...
X+ ;;
X *)
X # Add libc to deplibs on all other systems if necessary.
X if test $build_libtool_need_lc = "yes"; then
X@@ -4210,10 +4213,12 @@
X fi
X
X # Install the pseudo-library for information purposes.
X+ if /usr/bin/false; then
X name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
X instname="$dir/$name"i
X $show "$install_prog $instname $destdir/$name"
X $run eval "$install_prog $instname $destdir/$name" || exit $?
X+ fi
X
X # Maybe install the static library, too.
X test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
END-of-multimedia/xmms/files/patch-ltmain.sh
echo x - multimedia/xmms/files/patch-aa
sed 's/^X//' >multimedia/xmms/files/patch-aa << 'END-of-multimedia/xmms/files/patch-aa'
Xdiff -ur ../xmms-1.2.7/Input/mpg123/common.c ./Input/mpg123/common.c
X--- ../xmms-1.2.7/Input/mpg123/common.c Wed Feb 20 15:17:30 2002
X+++ ./Input/mpg123/common.c Tue Aug 6 09:24:16 2002
X@@ -654,6 +654,7 @@
X void mpg123_open_stream(char *bs_filenam, int fd)
X {
X filept_opened = 1;
X+
X if (!strncasecmp(bs_filenam, "http://", 7))
X {
X filept = NULL;
Xdiff -ur ../xmms-1.2.7/Input/mpg123/http.c ./Input/mpg123/http.c
X--- ../xmms-1.2.7/Input/mpg123/http.c Mon Jan 7 15:08:04 2002
X+++ ./Input/mpg123/http.c Tue Aug 6 09:23:52 2002
X@@ -45,6 +45,10 @@
X /* Static udp channel functions */
X static int udp_establish_listener (gint *sock);
X static int udp_check_for_data(gint sock);
X+#ifdef IPV6
X+static int udp6_establish_listener (gint *sock);
X+static int udp6_check_for_data(gint sock);
X+#endif
X
X extern gint mpg123_bitrate, mpg123_frequency, mpg123_stereo;
X extern gboolean mpg123_stereo;
X@@ -58,6 +62,12 @@
X
X static FILE *output_file = NULL;
X
X+#ifdef IPV6
X+#define ADDR_IS_INVALID 0
X+#define ADDR_IS_IPV4 1
X+#define ADDR_IS_IPV6 2
X+#endif
X+
X #define BASE64_LENGTH(len) (4 * (((len) + 2) / 3))
X
X /* Encode the string S of length LENGTH to base64 format and place it
X@@ -120,9 +130,17 @@
X {
X gchar *h, *p, *pt, *f, *temp, *ptr;
X
X+ /*
X+ * http://user:pass@host:port/filename
X+ */
X+
X temp = g_strdup(url);
X ptr = temp;
X
X+#ifdef IPV6
X+ printf("url %s\n", ptr);
X+#endif
X+
X if (!strncasecmp("http://", ptr, 7))
X ptr += 7;
X h = strchr(ptr, '@');
X@@ -149,7 +167,17 @@
X *pass = NULL;
X h = ptr;
X }
X+
X+#ifdef IPV6
X+ /*
X+ * xxxx:xxxx:xxxx:xxxx::xxxx:port/filename
X+ * wwww.ipv6-site.com:port/filename
X+ */
X+
X+ pt = rindex(ptr, ':');
X+#else
X pt = strchr(ptr, ':');
X+#endif
X if (pt != NULL && (f == NULL || pt < f))
X {
X *pt = '\0';
X@@ -167,6 +195,15 @@
X *filename = g_strdup(f + 1);
X else
X *filename = NULL;
X+
X+#ifdef IPV6
X+ printf("user : %s\n", *user);
X+ printf("pass : %s\n", *pass);
X+ printf("host : %s\n", *host);
X+ printf("port : %d\n", *port);
X+ printf("file : %s\n", *filename);
X+#endif
X+
X g_free(temp);
X }
X
X@@ -323,6 +360,71 @@
X return i;
X }
X
X+#ifdef IPV6
X+char *sock_ntop(struct sockaddr *sa)
X+{
X+ int len;
X+ char *buf;
X+ if (sa==NULL)
X+ return "<null>";
X+
X+ switch(sa->sa_family) {
X+ case AF_INET:
X+ len = INET_ADDRSTRLEN;
X+ break;
X+ case AF_INET6:
X+ len = INET6_ADDRSTRLEN;
X+ break;
X+ default:
X+ return "<unknown>";
X+ }
X+
X+ buf = (char *)malloc(len);
X+ if ((inet_ntop(sa->sa_family, &sa->sa_data[2], buf, (size_t)len))!=NULL)
X+ return buf;
X+ else return "<null>";
X+}
X+
X+
X+int check_hostport(char *hostname, int port)
X+{
X+ struct hostent *h;
X+ char buf[INET6_ADDRSTRLEN];
X+ int retcode;
X+
X+ h = gethostbyname2(hostname, AF_INET6);
X+
X+ if (h == NULL) {
X+ h = gethostbyname2(hostname, AF_INET);
X+ if (h == NULL)
X+ return ADDR_IS_INVALID;
X+ }
X+
X+ if (h->h_name)
X+ printf("%-30s\t", h->h_name);
X+
X+ switch (h->h_addrtype) {
X+ case AF_INET:
X+ printf("%-10s\t", "AF_INET");
X+ retcode = ADDR_IS_IPV4;
X+ break;
X+ case AF_INET6:
X+ printf("%-10s\t", "AF_INET6");
X+ retcode = ADDR_IS_IPV6;
X+ break;
X+ default:
X+ printf("%-10s\t", "unknown");
X+ retcode = ADDR_IS_INVALID;
X+ break;
X+ }
X+ inet_ntop(h->h_addrtype, h->h_addr, buf, INET6_ADDRSTRLEN);
X+ printf("%s\n", buf);
X+
X+ return retcode;
X+}
X+
X+#endif
X+
X static void *http_buffer_loop(void *arg)
X {
X gchar line[1024], *user, *pass, *host, *filename,
X@@ -332,7 +434,11 @@
X gboolean redirect;
X int udp_sock = 0;
X fd_set set;
X- struct hostent *hp;
X+ struct hostent *hp = NULL;
X+#ifdef IPV6
X+ struct sockaddr_in6 address6;
X+ int use_ipv6 = 0;
X+#endif
X struct sockaddr_in address;
X struct timeval tv;
X
X@@ -355,14 +461,52 @@
X chost = mpg123_cfg.use_proxy ? mpg123_cfg.proxy_host : host;
X cport = mpg123_cfg.use_proxy ? mpg123_cfg.proxy_port : port;
X
X+#ifdef IPV6
X+ if ((check_hostport(host, port)) == ADDR_IS_IPV6)
X+ use_ipv6 = 1;
X+ else use_ipv6 = 0;
X+
X+ if (use_ipv6) {
X+ sock = socket(AF_INET6, SOCK_STREAM, 0);
X+ fcntl(sock, F_SETFL, O_NONBLOCK);
X+ address6.sin6_family = AF_INET6;
X+ } else {
X+ sock = socket(AF_INET, SOCK_STREAM, 0);
X+ fcntl(sock, F_SETFL, O_NONBLOCK);
X+ address.sin_family = AF_INET;
X+ }
X+#else
X sock = socket(AF_INET, SOCK_STREAM, 0);
X fcntl(sock, F_SETFL, O_NONBLOCK);
X address.sin_family = AF_INET;
X+#endif
X
X status = g_strdup_printf(_("LOOKING UP %s"), chost);
X mpg123_ip.set_info_text(status);
X g_free(status);
X
X+#ifdef IPV6
X+ if (use_ipv6) {
X+ if ((hp = gethostbyname2(chost, AF_INET6)) == NULL) {
X+ status = g_strdup_printf(_("Couldn't look up host %s"), chost);
X+ show_error_message(status);
X+ g_free(status);
X+
X+ mpg123_ip.set_info_text(NULL);
X+ eof = TRUE;
X+ }
X+ } else {
X+ if (!(hp = gethostbyname(chost)))
X+ {
X+ status = g_strdup_printf(_("Couldn't look up host %s"), chost);
X+ show_error_message(status);
X+ g_free(status);
X+
X+ mpg123_ip.set_info_text(NULL);
X+ eof = TRUE;
X+ }
X+ }
X+#else
X if (!(hp = gethostbyname(chost)))
X {
X status = g_strdup_printf(_("Couldn't look up host %s"), chost);
X@@ -372,20 +516,54 @@
X mpg123_ip.set_info_text(NULL);
X eof = TRUE;
X }
X+#endif
X
X if (!eof)
X {
X- memcpy(&address.sin_addr.s_addr, *(hp->h_addr_list), sizeof (address.sin_addr.s_addr));
X+#ifdef IPV6
X+ int retcode;
X+
X+ if (use_ipv6) {
X+ memcpy(&address6.sin6_addr, hp->h_addr, sizeof(struct in6_addr));
X+ address6.sin6_port = g_htons(cport);
X+ } else {
X+ memcpy(&address.sin_addr.s_addr, *(hp->h_addr_list), sizeof (address.sin_addr.s_addr));
X+ address.sin_port = g_htons(cport);
X+ }
X+
X+ status = g_strdup_printf(_("CONNECTING TO %s:%d"), chost, cport);
X+ mpg123_ip.set_info_text(status);
X+ g_free(status);
X+
X+ if (use_ipv6)
X+ retcode = connect(sock, (struct sockaddr *) &address6, sizeof(struct sockaddr_in6));
X+ else
X+ retcode = connect(sock, (struct sockaddr *) &address, sizeof(struct sockaddr_in));
X+
X+ if (retcode == -1) {
X+ if (errno != EINPROGRESS) {
X+ status = g_strdup_printf(_("Couldn't connect to host %s"), chost);
X+ show_error_message(status);
X+ g_free(status);
X+
X+ mpg123_ip.set_info_text(NULL);
X+ eof = TRUE;
X+ }
X+ }
X+#else
X+ memcpy(&address.sin_addr.s_addr, *(hp->h_addr_list), sizeof(address.sin_addr.s_addr));
X address.sin_port = g_htons(cport);
X
X status = g_strdup_printf(_("CONNECTING TO %s:%d"), chost, cport);
X mpg123_ip.set_info_text(status);
X g_free(status);
X- if (connect(sock, (struct sockaddr *) &address, sizeof (struct sockaddr_in)) == -1)
X+
X+ if (connect(sock, (struct sockaddr *) &address, sizeof(struct sockaddr_in)) == -1)
X {
X if (errno != EINPROGRESS)
X {
X status = g_strdup_printf(_("Couldn't connect to host %s"), chost);
X+ printf("4. error\n");
X show_error_message(status);
X g_free(status);
X
X@@ -393,6 +571,7 @@
X eof = TRUE;
X }
X }
X+#endif
X while (going)
X {
X tv.tv_sec = 0;
X@@ -425,7 +604,14 @@
X
X if (mpg123_cfg.use_udp_channel)
X {
X- udp_port = udp_establish_listener (&udp_sock);
X+#ifdef IPV6
X+ if (use_ipv6)
X+ udp_port = udp6_establish_listener(&udp_sock);
X+ else
X+ udp_port = udp_establish_listener(&udp_sock);
X+#else
X+ udp_port = udp_establish_listener(&udp_sock, &udp_socklen);
X+#endif
X if (udp_port > 0)
X sprintf (udpspace, "x-audiocast-udpport: %d\r\n", udp_port);
X else
X@@ -505,6 +691,7 @@
X else
X {
X status = g_strdup_printf(_("Couldn't connect to host %s\nServer reported: %s"), chost, status);
X+ printf("6. error\n");
X show_error_message(status);
X g_free(status);
X break;
X@@ -635,12 +822,27 @@
X else
X xmms_usleep(10000);
X
X- if (mpg123_cfg.use_udp_channel && udp_sock != 0)
X+ if (mpg123_cfg.use_udp_channel && udp_sock != 0){
X+#ifdef IPV6
X+ if (use_ipv6){
X+ if (udp6_check_for_data(udp_sock) < 0){
X+ close(udp_sock);
X+ udp_sock = 0;
X+ }
X+ } else {
X+ if (udp_check_for_data(udp_sock) < 0){
X+ close(udp_sock);
X+ udp_sock = 0;
X+ }
X+ }
X+#else
X if (udp_check_for_data(udp_sock) < 0)
X {
X close(udp_sock);
X udp_sock = 0;
X }
X+#endif
X+ }
X }
X if (output_file)
X {
X@@ -664,7 +866,6 @@
X int mpg123_http_open(gchar * _url)
X {
X gchar *url;
X-
X url = g_strdup(_url);
X
X rd_index = 0;
X@@ -692,18 +893,143 @@
X return g_strdup(url);
X }
X
X-/* Start UDP Channel specific stuff */
X+#ifdef IPV6
X+
X+static int udp6_establish_listener(int *sock)
X+{
X+ struct sockaddr_in6 sin;
X+ socklen_t sinlen = sizeof(struct sockaddr_in6);
X+
X+#ifdef DEBUG_UDP
X+ fprintf (stderr,"Establishing udp6 listener\n");
X+#endif
X+
X+ if ((*sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
X+ g_log(NULL, G_LOG_LEVEL_CRITICAL,
X+ "udp_establish_listener(): unable to create socket");
X+ return -1;
X+ }
X+
X+ memset(&sin, 0, sinlen);
X+ sin.sin6_family = AF_INET;
X+ sin.sin6_addr = in6addr_any;
X+
X+ if ((bind(*sock, (struct sockaddr *)&sin, sinlen)) < 0) {
X+ g_log(NULL, G_LOG_LEVEL_CRITICAL,
X+ "udp_establish_listener(): Failed to bind socket to localhost: %s", strerror(errno));
X+ close(*sock);
X+ return -1;
X+ }
X+
X+ if (fcntl(*sock, F_SETFL, O_NONBLOCK) < 0) {
X+ g_log(NULL, G_LOG_LEVEL_CRITICAL,
X+ "udp_establish_listener(): Failed to set flags: %s", strerror(errno));
X+ close(*sock);
X+ return -1;
X+ }
X+
X+ memset(&sin, 0, sinlen);
X+ if (getsockname(*sock, (struct sockaddr *)&sin, &sinlen) < 0) {
X+ g_log(NULL, G_LOG_LEVEL_CRITICAL,
X+ "udp_establish_listener(): Failed to retrieve socket info: %s", strerror(errno));
X+ close(*sock);
X+ return -1;
X+ }
X+
X+#ifdef DEBUG_UDP
X+ fprintf (stderr,"Listening on local %s:%d\n", sock_ntop((struct sockaddr *)&sin), g_ntohs(sin.sin6_port));
X+#endif
X+
X+ return g_ntohs(sin.sin6_port);
X+}
X+
X+static int udp6_check_for_data(int sock)
X+{
X+ char buf[1025], **lines;
X+ char *valptr;
X+ gchar *title;
X+ gint len, i;
X+ struct sockaddr_in6 from;
X+ socklen_t fromlen;
X+
X+ fromlen = sizeof(struct sockaddr_in6);
X+
X+ if ((len = recvfrom(sock, buf, 1024, 0, (struct sockaddr *)&from, &fromlen)) < 0) {
X+ if (errno != EAGAIN) {
X+ g_log(NULL, G_LOG_LEVEL_CRITICAL,
X+ "udp_read_data(): Error reading from socket: %s", strerror(errno));
X+ return -1;
X+ }
X+ return 0;
X+ }
X+
X+ buf[len] = '\0';
X+
X+#ifdef DEBUG_UDP
X+ fprintf (stderr,"Received: [%s]\n", buf);
X+#endif
X+
X+ lines = g_strsplit(buf, "\n", 0);
X+
X+ if (!lines)
X+ return 0;
X+
X+ for (i = 0; lines[i]; i++){
X+ while ((lines[i][strlen(lines[i]) - 1] == '\n') ||
X+ (lines[i][strlen(lines[i]) - 1] == '\r'))
X+ lines[i][strlen(lines[i]) - 1] = '\0';
X+
X+ valptr = strchr(lines[i], ':');
X+
X+ if (!valptr)
X+ continue;
X+ else
X+ valptr++;
X+
X+ g_strstrip(valptr);
X+ if (!strlen(valptr))
X+ continue;
X+
X+ if (strstr(lines[i], "x-audiocast-streamtitle") != NULL){
X+ title = g_strdup_printf ("%s (%s)", valptr, icy_name);
X+ if (going)
X+ mpg123_ip.set_info(title, -1, mpg123_bitrate * 1000, mpg123_frequency, mpg123_stereo);
X+ g_free (title);
X+ } else if (strstr(lines[i], "x-audiocast-streammsg") != NULL){
X+ g_message("Stream_message: %s", valptr);
X+ } else if (strstr(lines[i], "x-audiocast-udpseqnr:") != NULL){
X+ gchar obuf[60];
X+ sprintf(obuf, "x-audiocast-ack: %ld \r\n", atol(valptr));
X+ if (sendto(sock, obuf, strlen(obuf), 0, (struct sockaddr *) &from, fromlen) < 0){
X+ g_log(NULL, G_LOG_LEVEL_WARNING,
X+ "udp_check_for_data(): Unable to send ack to server: %s", strerror(errno));
X+ }
X+#ifdef DEBUG_UDP
X+ else
X+ fprintf(stderr,"Sent ack: %s", obuf);
X+ fprintf (stderr,"Remote: %s:%d\n", sock_ntop((struct sockaddr *)&from), g_ntohs(from.sin6_port));
X+#endif
X+ }
X+ }
X+ g_strfreev(lines);
X+ return 0;
X+}
X+#endif
X+
X+/*
X+ * Start UDP Channel specific stuff
X+ * Find a good local udp port and bind udp_sock to it, return the port
X+ */
X
X-/* Find a good local udp port and bind udp_sock to it, return the port */
X static int udp_establish_listener(int *sock)
X {
X struct sockaddr_in sin;
X- socklen_t sinlen = sizeof (struct sockaddr_in);
X+ socklen_t sinlen = sizeof(struct sockaddr_in);
X
X #ifdef DEBUG_UDP
X fprintf (stderr,"Establishing udp listener\n");
X #endif
X-
X+
X if ((*sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
X {
X g_log(NULL, G_LOG_LEVEL_CRITICAL,
Xdiff -ur ../xmms-1.2.7/config.h.in ./config.h.in
X--- ../xmms-1.2.7/config.h.in Mon Mar 4 22:56:50 2002
X+++ ./config.h.in Tue Aug 6 09:02:15 2002
X@@ -314,3 +314,5 @@
X /* Define to disable per user plugin directory */
X #undef DISABLE_USER_PLUGIN_DIR
X
X+/* Define if you want to use IPv6 streaming for mpg123 */
X+#undef IPV6
Xdiff -ur ../xmms-1.2.7/configure ./configure
X--- ../xmms-1.2.7/configure Mon Mar 4 22:57:01 2002
X+++ ./configure Tue Aug 6 09:09:40 2002
X@@ -256,6 +256,8 @@
X --with-catgets use catgets functions if available"
X ac_help="$ac_help
X --enable-3dnow build with 3DNow! instructions support"
X+ac_help="$ac_help
X+ --enable-ipv6 enable IPv6 streaming support for mpg123"
X
X # Initialize some variables set by options.
X # The variables have the same names as the options, with
X@@ -10592,11 +10594,6 @@
X
X
X
X-
X-
X-
X-
X-
X # Check whether --enable-3dnow or --disable-3dnow was given.
X if test "${enable_3dnow+set}" = set; then
X enableval="$enable_3dnow"
X@@ -10619,6 +10616,22 @@
X else
X USE_3DNOW_TRUE='#'
X USE_3DNOW_FALSE=
X+fi
X+
X+
X+# Check whether --enable-ipv6 or --disable-ipv6 was given.
X+if test "${enable_ipv6+set}" = set; then
X+ enableval="$enable_ipv6"
X+ IPV6=$enableval
X+else
X+ IPV6=no
X+fi
X+
X+if test "x$IPV6" = xyes; then
X+ cat >> confdefs.h <<\EOF
X+#define IPV6 1
X+EOF
X+
X fi
X
X
Xdiff -ur ../xmms-1.2.7/po/xmms.pot ./po/xmms.pot
X--- ../xmms-1.2.7/po/xmms.pot Mon Mar 4 22:59:08 2002
X+++ ./po/xmms.pot Tue Aug 6 05:44:41 2002
X@@ -6,13 +6,13 @@
X msgid ""
X msgstr ""
X "Project-Id-Version: PACKAGE VERSION\n"
X-"POT-Creation-Date: 2002-03-04 15:59-0600\n"
X+"POT-Creation-Date: 2002-08-05 23:44-0400\n"
X "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
X "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
X "Language-Team: LANGUAGE <LL at li.org>\n"
X "MIME-Version: 1.0\n"
X "Content-Type: text/plain; charset=CHARSET\n"
X-"Content-Transfer-Encoding: ENCODING\n"
X+"Content-Transfer-Encoding: 8bit\n"
X
X #: Effect/echo_plugin/echo.c:43
X #, c-format
X@@ -41,7 +41,7 @@
X #: Input/mpg123/configure.c:633 Input/mpg123/fileinfo.c:118
X #: Input/mpg123/fileinfo.c:123 Input/mpg123/fileinfo.c:157
X #: Input/mpg123/fileinfo.c:161 Input/mpg123/fileinfo.c:167
X-#: Input/mpg123/http.c:208 Input/mpg123/mpg123.c:1100
X+#: Input/mpg123/http.c:216 Input/mpg123/mpg123.c:1100
X #: Input/tonegen/tonegen.c:54 Input/vorbis/configure.c:347
X #: Input/vorbis/fileinfo.c:202 Input/vorbis/http.c:208
X #: Input/vorbis/vorbis.c:601 Output/OSS/about.c:45 Output/OSS/configure.c:308
X@@ -431,6 +431,7 @@
X msgstr ""
X
X #: General/song_change/song_change.c:154
X+#, c-format
X msgid ""
X "Shell-command to run when xmms changes song. It can optionally include the "
X "string %%s which will be replaced by the new song title."
X@@ -944,44 +945,44 @@
X "Filesize: %lu B"
X msgstr ""
X
X-#: Input/mpg123/http.c:208 Input/vorbis/http.c:208
X+#: Input/mpg123/http.c:216 Input/vorbis/http.c:208
X #: Output/disk_writer/disk_writer.c:127
X msgid "Error"
X msgstr ""
X
X-#: Input/mpg123/http.c:362 Input/vorbis/http.c:317
X+#: Input/mpg123/http.c:375 Input/vorbis/http.c:317
X #, c-format
X msgid "LOOKING UP %s"
X msgstr ""
X
X-#: Input/mpg123/http.c:368 Input/vorbis/http.c:323
X+#: Input/mpg123/http.c:381 Input/vorbis/http.c:323
X #, c-format
X msgid "Couldn't look up host %s"
X msgstr ""
X
X-#: Input/mpg123/http.c:381 Input/vorbis/http.c:336
X+#: Input/mpg123/http.c:394 Input/vorbis/http.c:336
X #, c-format
X msgid "CONNECTING TO %s:%d"
X msgstr ""
X
X-#: Input/mpg123/http.c:388 Input/mpg123/http.c:408 Input/vorbis/http.c:343
X+#: Input/mpg123/http.c:401 Input/mpg123/http.c:421 Input/vorbis/http.c:343
X #: Input/vorbis/http.c:363
X #, c-format
X msgid "Couldn't connect to host %s"
X msgstr ""
X
X-#: Input/mpg123/http.c:466 Input/vorbis/http.c:407
X+#: Input/mpg123/http.c:479 Input/vorbis/http.c:407
X msgid "CONNECTED: WAITING FOR REPLY"
X msgstr ""
X
X-#: Input/mpg123/http.c:507 Input/vorbis/http.c:448
X+#: Input/mpg123/http.c:520 Input/vorbis/http.c:448
X #, c-format
X msgid ""
X "Couldn't connect to host %s\n"
X "Server reported: %s"
X msgstr ""
X
X-#: Input/mpg123/http.c:628 Input/vorbis/http.c:559
X+#: Input/mpg123/http.c:641 Input/vorbis/http.c:559
X #, c-format
X msgid "PRE-BUFFERING: %dKB/%dKB"
X msgstr ""
X@@ -3375,14 +3376,17 @@
X msgstr ""
X
X #: xmms/main.c:2022
X+#, c-format
X msgid "SEEK TO: %d:%-2.2d/%d:%-2.2d (%d%%)"
X msgstr ""
X
X #: xmms/main.c:2047 xmms/main.c:2590
X+#, c-format
X msgid "VOLUME: %d%%"
X msgstr ""
X
X #: xmms/main.c:2076 xmms/main.c:2595
X+#, c-format
X msgid "BALANCE: %d%% LEFT"
X msgstr ""
X
X@@ -3391,6 +3395,7 @@
X msgstr ""
X
X #: xmms/main.c:2086 xmms/main.c:2601
X+#, c-format
X msgid "BALANCE: %d%% RIGHT"
X msgstr ""
X
Xdiff -ur ../xmms-1.2.7/xmms/urldecode.c ./xmms/urldecode.c
X--- ../xmms-1.2.7/xmms/urldecode.c Fri Jun 1 15:07:49 2001
X+++ ./xmms/urldecode.c Tue Aug 6 09:30:30 2002
X@@ -27,7 +27,6 @@
X {
X char *tmp = NULL, *cur = NULL, *ext = NULL;
X int realchar;
X-
X if (!encoded_path || *encoded_path == '\0' ||
X strncasecmp(encoded_path, "file:", 5))
X return(NULL);
END-of-multimedia/xmms/files/patch-aa
echo x - multimedia/xmms/Makefile
sed 's/^X//' >multimedia/xmms/Makefile << 'END-of-multimedia/xmms/Makefile'
X# New ports collection makefile for: xmms
X# Date created: 3 July 1999
X# Whom: Espen Skoglund <esk at ira.uka.de>
X#
X# $FreeBSD: ports/multimedia/xmms/Makefile,v 1.50 2003/04/20 19:35:01 marcus Exp $
X#
X
XPORTNAME= xmms
XPORTVERSION= 1.2.7
XPORTREVISION= 3
XCATEGORIES+= multimedia audio
XMASTER_SITES= ftp://ftp.xmms.org/xmms/1.2.x/ \
X http://www.xmms.org/files/1.2.x/ \
X ftp://ftp.sunet.se/pub/multimedia/xmms/1.2.x/
X
XMAINTAINER?= esk at ira.uka.de
XCOMMENT?= X Multimedia System --- An audio player with a Winamp GUI
X
XUSE_BZIP2= yes
XUSE_X_PREFIX= yes
XUSE_GNOME= gtk12 gnomehack libxml
XUSE_REINPLACE= yes
XWANT_GNOME= yes
XUSE_GMAKE= yes
XINSTALLS_SHLIB= yes
XGNU_CONFIGURE= yes
XCONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
X LIBS="-L${LOCALBASE}/lib" \
X INPUT_PLUGINS="${INPUT_PLUGINS}" \
X OUTPUT_PLUGINS="${OUTPUT_PLUGINS}" \
X VISUALIZATION_PLUGINS="${VISUALIZATION_PLUGINS}"
XMAN1= gnomexmms.1 wmxmms.1 xmms.1
X
XINPUT_PLUGINS= cdaudio,idcin,mpg123,tonegen,wav
XOUTPUT_PLUGINS= OSS,disk_writer
XVISUALIZATION_PLUGINS= blur_scope,sanalyzer
X
X.include <bsd.port.pre.mk>
X
X.if !defined(WITHOUT_MIKMOD)
XLIB_DEPENDS+= mikmod.2:${PORTSDIR}/audio/libmikmod
XINPUT_PLUGINS+= mikmod
XPLIST_SUB+= MIKMODPLUGIN:=""
X.else
XCONFIGURE_ARGS+= --disable-mikmod
XPLIST_SUB+= MIKMODPLUGIN:="@comment "
X.endif
X
X.if !defined(WITHOUT_VORBIS)
XLIB_DEPENDS+= vorbis.2:${PORTSDIR}/audio/libvorbis
XINPUT_PLUGINS+= vorbis
XPLIST_SUB+= VORBISPLUGIN:=""
X.else
XCONFIGURE_ARGS+= --disable-vorbis
XPLIST_SUB+= VORBISPLUGIN:="@comment "
X.endif
X
X.if defined(WITH_IPV6)
XCONFIGURE_ARGS+= --enable-ipv6
XPKGNAMESUFFIX= -ipv6
X.endif
X
X.if ${HAVE_GNOME:Mesound}!=""
XUSE_GNOME+= esound
XOUTPUT_PLUGINS+= esd
XPLIST_SUB+= ESDPLUGIN:=""
X.if defined(PKGNAMESUFFIX)
XPKGNAMESUFFIX:= ${PKGNAMESUFFIX}-esound
X.else
XPKGNAMESUFFIX= -esound
X.endif
X.else
XCONFIGURE_ARGS+= --disable-esd
XPLIST_SUB+= ESDPLUGIN:="@comment "
X.endif
X
X.if ${HAVE_GNOME:Mlibpanel}!=""
XUSE_GNOME+= libpanel gnomeprefix
X.if defined(PKGNAMESUFFIX)
XPKGNAMESUFFIX:= ${PKGNAMESUFFIX}-gnome
X.else
XPKGNAMESUFFIX= -gnome
X.endif
XPLIST_SUB+= DATADIR="share/gnome" PANEL:=""
X.else
XCONFIGURE_ARGS+= --without-gnome
XPLIST_SUB+= DATADIR="share" PANEL:="@comment "
X.endif
X
X.if ${MACHINE_ARCH} != "i386"
XWITHOUT_3DNOW= yes
X.endif
X
X.if !defined(WITHOUT_3DNOW) && ${OSVERSION} >= 400021
XCONFIGURE_ARGS+= --enable-3dnow
X.endif
X
X.if defined(WITHOUT_3DNOW) || ${OSVERSION} < 400021
Xpost-extract:
X (cd ${WRKSRC}/Input/mpg123 && ${MV} decode_i586.s decode_i586.S && \
X cd ${WRKSRC}/Visualization/blur_scope && ${MV} blur_8.s blur_8.S);
X ${REINPLACE_CMD} -e 's:\.s :\.S :g' ${WRKSRC}/Input/mpg123/Makefile.in
X ${REINPLACE_CMD} -e 's:blur_8.s:blur_8.S:g' \
X ${WRKSRC}/Visualization/blur_scope/Makefile.in
X.endif
X
Xpre-extract:
X.if !defined(WITHOUT_MIKMOD) || !defined(WITHOUT_VORBIS) || ( !defined(WITHOUT_3DNOW) && ${OSVERSION} >= 400021 ) || ${HAVE_GNOME:Mesound}!=""
X @${ECHO_MSG}
X.if !defined(WITHOUT_MIKMOD)
X @${ECHO_MSG} "You can disable support for mikmod by defining WITHOUT_MIKMOD."
X.endif
X.if !defined(WITHOUT_VORBIS)
X @${ECHO_MSG} "You can disable support for vorbis by defining WITHOUT_VORBIS."
X.endif
X.if !defined(WITHOUT_3DNOW) && ${OSVERSION} >= 400021
X @${ECHO_MSG} "You can disable 3DNow! optimized decoding routines by defining WITHOUT_3DNOW."
X.endif
X.if !defined(WITH_IPV6)
X @$(ECHO_MSG) "You can enable ipv6 streaming support by defining WITH_IPV6."
X.endif
X.if ${HAVE_GNOME:Mesound}!=""
X @${ECHO_MSG} "You can disable support for esound by defining WITHOUT_GNOME=esound."
X.endif
X @${ECHO_MSG}
X.endif
X
Xpost-patch:
X @find ${WRKSRC} -name "Makefile.in*" | xargs ${REINPLACE_CMD} -e \
X 's|\(datadir\)/aclocal|(prefix)/share/aclocal|g'
X
Xpost-install:
X @${MKDIR} ${PREFIX}/share/xmms/Skins
X @${CAT} ${PKGMESSAGE}
X
X.include <bsd.port.post.mk>
END-of-multimedia/xmms/Makefile
echo x - multimedia/xmms/distinfo
sed 's/^X//' >multimedia/xmms/distinfo << 'END-of-multimedia/xmms/distinfo'
XMD5 (xmms-1.2.7.tar.bz2) = 9bec488842920df359516b7d062d15dc
END-of-multimedia/xmms/distinfo
echo x - multimedia/xmms/pkg-descr
sed 's/^X//' >multimedia/xmms/pkg-descr << 'END-of-multimedia/xmms/pkg-descr'
XXMMS --- X Multimedia System. XMMS is a multimedia player based on the look of
XWinamp. Currently it plays mpeg layer 1/2/3, wav, au, CD audio, etc.
X
XWWW: http://www.xmms.org/
X
X eSk
END-of-multimedia/xmms/pkg-descr
echo x - multimedia/xmms/pkg-message
sed 's/^X//' >multimedia/xmms/pkg-message << 'END-of-multimedia/xmms/pkg-message'
XXmms supports Gzipped and uncompressed skins. If you would like to use
XZip format skins you will need to ensure archivers/unzip is installed.
END-of-multimedia/xmms/pkg-message
echo x - multimedia/xmms/pkg-plist
sed 's/^X//' >multimedia/xmms/pkg-plist << 'END-of-multimedia/xmms/pkg-plist'
Xbin/wmxmms
Xbin/xmms
Xbin/xmms-config
X%%PANEL:%%bin/gnomexmms
X%%PANEL:%%etc/CORBA/servers/gnomexmms.gnorba
X%%PANEL:%%share/gnome/applets/Multimedia/gnomexmms.desktop
Xinclude/xmms/configfile.h
Xinclude/xmms/dirbrowser.h
Xinclude/xmms/formatter.h
Xinclude/xmms/fullscreen.h
Xinclude/xmms/plugin.h
Xinclude/xmms/titlestring.h
Xinclude/xmms/util.h
Xinclude/xmms/xmmsctrl.h
Xlib/libxmms.a
Xlib/libxmms.so
Xlib/libxmms.so.3
Xlib/xmms/Effect/libecho.so
Xlib/xmms/Effect/libstereo.so
Xlib/xmms/Effect/libvoice.so
Xlib/xmms/General/libir.so
Xlib/xmms/General/libsong_change.so
Xlib/xmms/Input/libcdaudio.so
Xlib/xmms/Input/libidcin.so
Xlib/xmms/Input/libmpg123.so
Xlib/xmms/Input/libtonegen.so
Xlib/xmms/Input/libwav.so
X%%MIKMODPLUGIN:%%lib/xmms/Input/libmikmod.so
X%%VORBISPLUGIN:%%lib/xmms/Input/libvorbis.so
Xlib/xmms/Output/libOSS.so
Xlib/xmms/Output/libdisk_writer.so
X%%ESDPLUGIN:%%lib/xmms/Output/libesdout.so
Xlib/xmms/Visualization/libbscope.so
Xlib/xmms/Visualization/libsanalyzer.so
Xshare/aclocal/xmms.m4
X%%DATADIR%%/xmms/wmxmms.xpm
Xshare/locale/af/LC_MESSAGES/xmms.mo
Xshare/locale/az/LC_MESSAGES/xmms.mo
Xshare/locale/bg/LC_MESSAGES/xmms.mo
Xshare/locale/ca/LC_MESSAGES/xmms.mo
Xshare/locale/cs/LC_MESSAGES/xmms.mo
Xshare/locale/da/LC_MESSAGES/xmms.mo
Xshare/locale/de/LC_MESSAGES/xmms.mo
Xshare/locale/el/LC_MESSAGES/xmms.mo
Xshare/locale/eo/LC_MESSAGES/xmms.mo
Xshare/locale/es/LC_MESSAGES/xmms.mo
Xshare/locale/eu/LC_MESSAGES/xmms.mo
Xshare/locale/fr/LC_MESSAGES/xmms.mo
Xshare/locale/ga/LC_MESSAGES/xmms.mo
Xshare/locale/gl/LC_MESSAGES/xmms.mo
Xshare/locale/hr/LC_MESSAGES/xmms.mo
Xshare/locale/hu/LC_MESSAGES/xmms.mo
Xshare/locale/id/LC_MESSAGES/xmms.mo
Xshare/locale/it/LC_MESSAGES/xmms.mo
Xshare/locale/ja/LC_MESSAGES/xmms.mo
Xshare/locale/ko/LC_MESSAGES/xmms.mo
Xshare/locale/lt/LC_MESSAGES/xmms.mo
Xshare/locale/lv/LC_MESSAGES/xmms.mo
Xshare/locale/nl/LC_MESSAGES/xmms.mo
Xshare/locale/nn/LC_MESSAGES/xmms.mo
Xshare/locale/no/LC_MESSAGES/xmms.mo
Xshare/locale/pl/LC_MESSAGES/xmms.mo
Xshare/locale/pt/LC_MESSAGES/xmms.mo
Xshare/locale/pt_BR/LC_MESSAGES/xmms.mo
Xshare/locale/ro/LC_MESSAGES/xmms.mo
Xshare/locale/ru/LC_MESSAGES/xmms.mo
Xshare/locale/sk/LC_MESSAGES/xmms.mo
Xshare/locale/sr/LC_MESSAGES/xmms.mo
Xshare/locale/sv/LC_MESSAGES/xmms.mo
Xshare/locale/tg/LC_MESSAGES/xmms.mo
Xshare/locale/th/LC_MESSAGES/xmms.mo
Xshare/locale/tr/LC_MESSAGES/xmms.mo
Xshare/locale/uk/LC_MESSAGES/xmms.mo
Xshare/locale/vi/LC_MESSAGES/xmms.mo
Xshare/locale/wa/LC_MESSAGES/xmms.mo
Xshare/locale/zh_CN.GB2312/LC_MESSAGES/xmms.mo
Xshare/locale/zh_TW/LC_MESSAGES/xmms.mo
X at dirrm %%DATADIR%%/xmms
X at dirrm lib/xmms/Visualization
X at dirrm lib/xmms/Output
X at dirrm lib/xmms/Input
X at dirrm lib/xmms/General
X at dirrm lib/xmms/Effect
X at dirrm lib/xmms
X at dirrm include/xmms
X at exec mkdir -p %D/share/xmms/Skins
X at unexec rmdir %D/share/xmms/Skins %D/share/xmms 2>/dev/null || echo "If you are permanently removing xmms, do not forget to remove skin files left under %D/share/xmms/Skins. Use \`\`rm -Rf %D/share/xmms/Skins; rmdir %D/share/xmms''" | fmt
END-of-multimedia/xmms/pkg-plist
exit
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list