diff -dPNur mpg123-0.59r-orig/common.c mpg123-0.59r-new/common.c --- mpg123-0.59r-orig/common.c 2005-07-19 18:43:57.583934801 +0200 +++ mpg123-0.59r-new/common.c 2005-07-19 18:16:40.670756807 +0200 @@ -15,6 +15,7 @@ #endif #endif +#include "rccpatch.h" #include "mpg123.h" #include "genre.h" #include "common.h" @@ -487,6 +488,8 @@ char comment[31]={0,}; char genre[31]={0,}; + char *ctitle, *cartist, *calbum, *ccomment; + if(param.quiet) return; @@ -495,6 +498,11 @@ strncpy(album,tag->album,30); strncpy(year,tag->year,4); strncpy(comment,tag->comment,30); + + ctitle = rccPatchRecode(title); + cartist = rccPatchRecode(artist); + calbum = rccPatchRecode(album); + ccomment = rccPatchRecode(comment); if ( tag->genre <= sizeof(genre_table)/sizeof(*genre_table) ) { strncpy(genre, genre_table[tag->genre], 30); @@ -502,9 +510,14 @@ strncpy(genre,"Unknown",30); } - fprintf(stderr,"Title : %-30s Artist: %s\n",title,artist); - fprintf(stderr,"Album : %-30s Year : %4s\n",album,year); - fprintf(stderr,"Comment: %-30s Genre : %s\n",comment,genre); + fprintf(stderr,"Title : %-30s Artist: %s\n",ctitle?ctitle:title,cartist?cartist:artist); + fprintf(stderr,"Album : %-30s Year : %4s\n",calbum?calbum:album,year); + fprintf(stderr,"Comment: %-30s Genre : %s\n",ccomment?ccomment:comment,genre); + + if (ctitle) free(ctitle); + if (cartist) free(cartist); + if (calbum) free(calbum); + if (ccomment) free(ccomment); } #if 0 diff -dPNur mpg123-0.59r-orig/Makefile mpg123-0.59r-new/Makefile --- mpg123-0.59r-orig/Makefile 2005-07-19 18:43:57.553939726 +0200 +++ mpg123-0.59r-new/Makefile 2005-07-19 20:00:19.566458888 +0200 @@ -581,12 +581,12 @@ mpg123-make: @ $(MAKE) CFLAGS='$(CFLAGS)' BINNAME=mpg123 mpg123 -mpg123: mpg123.o common.o $(OBJECTS) decode_2to1.o decode_4to1.o \ +mpg123: mpg123.o rccpatch.o common.o $(OBJECTS) decode_2to1.o decode_4to1.o \ tabinit.o audio.o layer1.o layer2.o layer3.o buffer.o \ getlopt.o httpget.o xfermem.o equalizer.o \ decode_ntom.o Makefile wav.o readers.o getbits.o \ control_generic.o - $(CC) $(CFLAGS) $(LDFLAGS) mpg123.o tabinit.o common.o layer1.o \ + $(CC) $(CFLAGS) $(LDFLAGS) -lrcc mpg123.o tabinit.o rccpatch.o common.o layer1.o \ layer2.o layer3.o audio.o buffer.o decode_2to1.o equalizer.o \ decode_4to1.o getlopt.o httpget.o xfermem.o decode_ntom.o \ wav.o readers.o getbits.o control_generic.o \ diff -dPNur mpg123-0.59r-orig/mpg123.c mpg123-0.59r-new/mpg123.c --- mpg123-0.59r-orig/mpg123.c 2005-07-19 18:43:57.558938905 +0200 +++ mpg123-0.59r-new/mpg123.c 2005-07-19 19:27:03.000000000 +0200 @@ -33,6 +33,8 @@ #include "buffer.h" #include "term.h" +#include "rccpatch.h" + #include "version.h" static void usage(char *dummy); @@ -904,6 +906,8 @@ exit(0); } #endif + + rccPatchInit(); while ((fname = get_next_file(argc, argv))) { char *dirname, *filename; @@ -1069,6 +1073,8 @@ intflag = FALSE; } } + rccPatchFree(); + #ifndef NOXFERMEM if (param.usebuffer) { buffer_end(); diff -dPNur mpg123-0.59r-orig/rccpatch.c mpg123-0.59r-new/rccpatch.c --- mpg123-0.59r-orig/rccpatch.c 1970-01-01 01:00:00.000000000 +0100 +++ mpg123-0.59r-new/rccpatch.c 2005-07-19 20:00:35.819789685 +0200 @@ -0,0 +1,40 @@ +#include + +#define ID3_CLASS 0 +#define OUT_CLASS 1 +static rcc_class classes[] = { + { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 }, + { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 }, + { NULL } +}; + +static int rcc_initialized = 0; + +void rccPatchFree() { + if (rcc_initialized) { + rccFree(); + rcc_initialized = 0; + } +} + +void rccPatchInit() { + if (rcc_initialized) return; + rccInit(); + rccInitDefaultContext(NULL, 0, 0, classes, 0); + rccLoad(NULL, "xmms"); + rccInitDb4(NULL, NULL, 0); + rcc_initialized = 1; +} + +static void rccPatchTryInit() { + if (!rcc_initialized) { + rccPatchInit(); + if (rcc_initialized) atexit(rccPatchFree); + } +} + +char *rccPatchRecode(const char *str) { + char *res; + rccPatchTryInit(); + return rccRecode(NULL, ID3_CLASS, OUT_CLASS, str); +} diff -dPNur mpg123-0.59r-orig/rccpatch.h mpg123-0.59r-new/rccpatch.h --- mpg123-0.59r-orig/rccpatch.h 1970-01-01 01:00:00.000000000 +0100 +++ mpg123-0.59r-new/rccpatch.h 2005-07-19 18:27:08.390669528 +0200 @@ -0,0 +1,4 @@ +void rccPatchFree(); +void rccPatchInit(); +char *rccPatchRecode(const char *str); +