winamp: Fix utf8 song titles

Fixes #1350
This commit is contained in:
TingPing 2015-04-13 16:15:07 -04:00
parent c86389f99b
commit 72d7f64f8b
2 changed files with 19 additions and 17 deletions

View File

@ -13,6 +13,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <glib.h>
#include "hexchat-plugin.h" #include "hexchat-plugin.h"
@ -50,11 +51,12 @@ static int
winamp(char *word[], char *word_eol[], void *userdata) winamp(char *word[], char *word_eol[], void *userdata)
{ {
char current_play[2048], *p; wchar_t wcurrent_play[2048];
char *current_play, *p;
char p_esc[2048]; char p_esc[2048];
char cur_esc[2048]; char cur_esc[2048];
char truc[2048]; char truc[2048];
HWND hwndWinamp = FindWindow("Winamp v1.x",NULL); HWND hwndWinamp = FindWindowW(L"Winamp v1.x",NULL);
if (hwndWinamp) if (hwndWinamp)
{ {
@ -109,7 +111,14 @@ HWND hwndWinamp = FindWindow("Winamp v1.x",NULL);
if (!word_eol[2][0]) if (!word_eol[2][0])
{ {
GetWindowText(hwndWinamp, current_play, sizeof(current_play)); int len = GetWindowTextW(hwndWinamp, wcurrent_play, sizeof(wcurrent_play));
current_play = g_utf16_to_utf8 (wcurrent_play, len, NULL, NULL, NULL);
if (!current_play)
{
hexchat_print (ph, "Winamp: Error getting song information.");
return HEXCHAT_EAT_ALL;
}
if (strchr(current_play, '-')) if (strchr(current_play, '-'))
{ {
@ -142,7 +151,7 @@ HWND hwndWinamp = FindWindow("Winamp v1.x",NULL);
} }
hexchat_commandf(ph, truc); hexchat_commandf(ph, truc);
g_free (current_play);
} }
else hexchat_print(ph, "Winamp: Nothing being played."); else hexchat_print(ph, "Winamp: Nothing being played.");
} }
@ -170,7 +179,7 @@ hexchat_plugin_init(hexchat_plugin *plugin_handle,
*plugin_name = "Winamp"; *plugin_name = "Winamp";
*plugin_desc = "Winamp plugin for HexChat"; *plugin_desc = "Winamp plugin for HexChat";
*plugin_version = "0.5"; *plugin_version = "0.6";
hexchat_hook_command (ph, "WINAMP", HEXCHAT_PRI_NORM, winamp, "Usage: /WINAMP [PAUSE|PLAY|STOP|NEXT|PREV|START] - control Winamp or show what's currently playing", 0); hexchat_hook_command (ph, "WINAMP", HEXCHAT_PRI_NORM, winamp, "Usage: /WINAMP [PAUSE|PLAY|STOP|NEXT|PREV|START] - control Winamp or show what's currently playing", 0);
hexchat_command (ph, "MENU -ishare\\music.png ADD \"Window/Display Current Song (Winamp)\" \"WINAMP\""); hexchat_command (ph, "MENU -ishare\\music.png ADD \"Window/Display Current Song (Winamp)\" \"WINAMP\"");

View File

@ -27,22 +27,15 @@
<TargetName>hcwinamp</TargetName> <TargetName>hcwinamp</TargetName>
<OutDir>$(HexChatRel)plugins\</OutDir> <OutDir>$(HexChatRel)plugins\</OutDir>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WINAMP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<ModuleDefinitionFile>winamp.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;WINAMP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;WINAMP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<ModuleDefinitionFile>winamp.def</ModuleDefinitionFile> <ModuleDefinitionFile>winamp.def</ModuleDefinitionFile>
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>