Package: vorbis-tools
Version: 1.1.1-1

The comments in Ogg / Vorbis files are meant to be encoded in UTF-8, which
is a very good thing. The tools for handling Ogg / Vorbis files are supposed
to automatically convert between hte user's encoding and UTF-8.

I have found that this encoding conversion does not work with vorbis-tools
1.1.1.

One of the best ways to do such a conversion on a modern Unix operating
system (such as GNU) is to use the nl_langinfo(CODESET) function to query
the encoding from the locale settings, and to use the iconv functions to do
the conversion.

The vorbis-tools do all this right in the share/utf8.c and share/iconvert.c.
Furthermore, they try to use the //TRANSLIT feature of the GNU iconv
function to use replacement compatibility characters instead of unavailable
characters. All this is very good.

As iconv and nl_langinfo are not always available on obsolete Unix, and as
any portable program would, vorbis-tools build system check for their
availability and use remplacement, less efficient, builtin functions if they
are not.

Unfortunately, share/utf8.c and share/iconvert.c do not #include
"../config.h" before they use some #ifdef HAVE_ICONV and #ifdef
HAVE_LANGINFO_CODESET, and no corresponding -D is put on the command line by
the makefiles. The result is that, whereas the correct code is present and
working, it is not used.

Furthermore, it can be noted that the behavior of vorbis-tools 1.0.1-1.5 was
correct.


Example showing the problem:

1. Produce a trivial Ogg Vorbis file:

dd if=/dev/zero bs=176400 count=10 | oggenc -r -o bug.ogg -

2. Add a comment to it, using the raw mode:

eacute=`/usr/bin/printf '\xC3\xA9'`
vorbiscomment -R -w -t eacute="$eacute" bug.ogg

3. Read the comment back:

ogginfo bug.ogg
vorbiscomment bug.ogg

Actual result:

User comments section follows...
        eacute=?

Expected result:

User comments section follows...
        eacute=é

Adding #include "../config.h" at the beginning of share/utf8.c and
share/iconvert.c is enough to get the expected result.


Additionnal (irrelevant) information:

Debian Release: testing/unstable
Architecture: amd64 or i386
Kernel: Linux she-seel 2.6.14.4-she-seel #2 PREEMPT Thu Dec 22 13:08:22 CET
        2005 x86_64 GNU/Linux
    or: Linux hellroy 2.6.12-1-686 #1 Tue Sep 27 12:52:50 JST 2005 i686
        GNU/Linux
Locale settings: LANG, LC_ALL and CHARSET undefined, LC_CTYPE=fr_FR or
        LC_CTYPE_en_US.UTF-8

Versions of packages this package depends on:

libao2 0.8.6-1.1
libc6 2.3.5-8.1
libcurl3-gnutls 7.15.1-1
libflac7 1.1.2-3
libogg0 1.1.2-1
liboggflac3 1.1.2-3
libspeex1 1.1.11.1-1
libvorbis0a 1.1.0-1
libvorbisenc2 1.1.0-1
libvorbisfile3 1.1.0-1

Attachment: signature.asc
Description: Digital signature

Reply via email to