comparison src/modplug/modplugbmp.cxx @ 1601:be8babbd772c

Convert strings to UTF-8 using str_to_utf8(). This solution is not "Correct(tm)", but since the encoding used in module files cannot be known, it's the best bet.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 05 Sep 2007 11:54:05 +0300
parents 49fe2225d236
children d6d8e3cd23c5
comparison
equal deleted inserted replaced
1600:49fe2225d236 1601:be8babbd772c
17 #include "audacious/configdb.h" 17 #include "audacious/configdb.h"
18 #include "audacious/output.h" 18 #include "audacious/output.h"
19 #include "audacious/tuple.h" 19 #include "audacious/tuple.h"
20 #include "audacious/tuple_formatter.h" 20 #include "audacious/tuple_formatter.h"
21 #include "audacious/vfs.h" 21 #include "audacious/vfs.h"
22 #include "audacious/strings.h"
22 } 23 }
23 24
24 static char* format_and_free_ti( Tuple* ti, int* length ) 25 static char* format_and_free_ti( Tuple* ti, int* length )
25 { 26 {
26 char* result = tuple_formatter_make_title_string(ti, get_gentitle_format()); 27 char* result = tuple_formatter_make_title_string(ti, get_gentitle_format());
503 504
504 Tuple* ModplugXMMS::GetSongTuple(const string& aFilename) 505 Tuple* ModplugXMMS::GetSongTuple(const string& aFilename)
505 { 506 {
506 CSoundFile* lSoundFile; 507 CSoundFile* lSoundFile;
507 Archive* lArchive; 508 Archive* lArchive;
508 char* tmps; 509 gchar* tmps;
509 510
510 //open and mmap the file 511 //open and mmap the file
511 lArchive = OpenArchive(aFilename); 512 lArchive = OpenArchive(aFilename);
512 if(lArchive->Size() == 0) 513 if(lArchive->Size() == 0)
513 { 514 {
544 case MOD_TYPE_PSM: tmps = "Protracker Studio Module"; break; 545 case MOD_TYPE_PSM: tmps = "Protracker Studio Module"; break;
545 default: tmps = "ModPlug unknown"; break; 546 default: tmps = "ModPlug unknown"; break;
546 } 547 }
547 tuple_associate_string(ti, "codec", tmps); 548 tuple_associate_string(ti, "codec", tmps);
548 tuple_associate_string(ti, "quality", "sequenced"); 549 tuple_associate_string(ti, "quality", "sequenced");
549 tuple_associate_string(ti, "title", lSoundFile->GetTitle());
550 tuple_associate_int(ti, "length", lSoundFile->GetSongTime() * 1000); 550 tuple_associate_int(ti, "length", lSoundFile->GetSongTime() * 1000);
551
552 /* NOTICE! FIXME? This is actually incorrect. We _cannot_ know what charset
553 * an arbitrary module file uses .. typically it is some DOS CP-variant,
554 * except for true Amiga modules.
555 */
556 tmps = str_to_utf8(lSoundFile->GetTitle());
557 tuple_associate_string(ti, "title", tmps);
558 g_free(tmps);
559
551 560
552 //unload the file 561 //unload the file
553 lSoundFile->Destroy(); 562 lSoundFile->Destroy();
554 delete lSoundFile; 563 delete lSoundFile;
555 delete lArchive; 564 delete lArchive;