Date: Mon, 21 Jul 2003 04:10:45 +0200 (CEST) From: Emiel Kollof <coolvibe@hackerheaven.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/54685: ipv6 support for port multimedia/xmms Message-ID: <200307210210.h6L2AjpJ037638@azazel.ipv6.hackerheaven.org> Resent-Message-ID: <200307210220.h6L2KH8R013417@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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@ADDRESS>\n" X "Language-Team: LANGUAGE <LL@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@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@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@dirrm %%DATADIR%%/xmms X@dirrm lib/xmms/Visualization X@dirrm lib/xmms/Output X@dirrm lib/xmms/Input X@dirrm lib/xmms/General X@dirrm lib/xmms/Effect X@dirrm lib/xmms X@dirrm include/xmms X@exec mkdir -p %D/share/xmms/Skins X@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200307210210.h6L2AjpJ037638>