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 */

Reply via email to