Package: xcdroast Version: 0.98+0alpha15-3 Severity: minor If I try to do a cddbquery for a CD from, for example, Hüsker Dü or Motörhead or generally for CDs whith non-ascii signs cddbtool fails because the cddbserver does not return a valid UTF-8 string.
One solution is to build xcdroast without gtk2. Another solution is the attached patch. It works for me but non-ascii signs will be shown as '?' in xcdroast. -- System Information: Debian Release: 3.1 APT prefers unstable APT policy: (100, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.13.4 Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15) Versions of packages xcdroast depends on: ii cdda2wav 4:2.01+01a01-2 Creates WAV files from audio CDs ii cdrecord 4:2.01+01a03-3 command line CD writing tool ii debconf [debconf-2.0] 1.4.30.13 Debian configuration management sy ii libatk1.0-0 1.8.0-4 The ATK accessibility toolkit ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an ii libglib2.0-0 2.6.4-1 The GLib library of C routines ii libgtk2.0-0 2.6.4-3 The GTK+ graphical user interface ii libpango1.0-0 1.8.1-1 Layout and rendering of internatio ii libpcre3 4.5-1.2sarge1 Perl 5 Compatible Regular Expressi ii makedev 2.3.1-77 creates device files in /dev ii mkisofs 4:2.01+01a03-3 Creates ISO-9660 CD-ROM filesystem -- debconf information excluded
--- src/cddbtool.c.orig 2002-12-14 17:08:01.000000000 +0100 +++ src/cddbtool.c 2005-10-28 16:25:00.000000000 +0200 @@ -46,7 +46,11 @@ #define CDDB_HTTP_CMD "GET http://%s/~cddb/cddb.cgi?cmd=" #define CDDB_HTTP_KEEP " HTTP/1.0\r\nHost: %s\r\nConnection: Keep-Alive\r\nProxy-Connection: Keep-Alive\r\n%s\r\n" +#if GTK_MAJOR_VERSION < 2 #define CDDB_HTTP_HELLO "hello=%s+%s+xcdroast+%s&proto=1"CDDB_HTTP_KEEP +#else +#define CDDB_HTTP_HELLO "hello=%s+%s+xcdroast+%s&proto=6"CDDB_HTTP_KEEP +#endif #define CDDB_HTTP_STAT CDDB_HTTP_CMD"stat&"CDDB_HTTP_HELLO #define CDDB_HTTP_MOTD CDDB_HTTP_CMD"motd&"CDDB_HTTP_HELLO #define CDDB_HTTP_QUERY CDDB_HTTP_CMD"cddb+query+%s&"CDDB_HTTP_HELLO @@ -240,11 +244,30 @@ fflush(stdout); return 1; } - + +#if GTK_MAJOR_VERSION > 1 + + g_snprintf(tmp,MAXLINE,"%s %d\r\n", "proto", 6); + if (writen(sockfd,tmp,strlen(tmp), 1) != strlen(tmp)) { + g_print("Error: write error on socket when setting protocol\n"); + fflush(stdout); + return 1; + } + n = read_line2(sockfd, tmp, MAXLINE, 1); + if (n < 0) { + g_print("Error: read error on socket when setting protocol\n"); + fflush(stdout); + return 1; + } +#endif code = get_cddb_code(tmp); switch(code) { - /* all ok */ + /* all ok */ +#if GTK_MAJOR_VERSION < 2 case 200: +#else + case 201: +#endif return 0; /* handshake failed */