diff options
author | TingPing <tingping@tingping.se> | 2015-04-13 16:15:07 -0400 |
---|---|---|
committer | TingPing <tingping@tingping.se> | 2015-04-13 16:25:36 -0400 |
commit | 72d7f64f8b47049842799ae7d5fe9d598922b3ab (patch) | |
tree | 0183e58f237bce0b58859db82cab5907d5fe22e4 | |
parent | c86389f99b17bb5bdc40a92f54f85f5c2ef2b2d6 (diff) |
winamp: Fix utf8 song titles
Fixes #1350
-rw-r--r-- | plugins/winamp/winamp.c | 19 | ||||
-rw-r--r-- | plugins/winamp/winamp.vcxproj | 17 |
2 files changed, 19 insertions, 17 deletions
diff --git a/plugins/winamp/winamp.c b/plugins/winamp/winamp.c index 389adcbc..9b3b4335 100644 --- a/plugins/winamp/winamp.c +++ b/plugins/winamp/winamp.c @@ -13,6 +13,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <glib.h> #include "hexchat-plugin.h" @@ -50,11 +51,12 @@ static int 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 cur_esc[2048]; char truc[2048]; -HWND hwndWinamp = FindWindow("Winamp v1.x",NULL); +HWND hwndWinamp = FindWindowW(L"Winamp v1.x",NULL); if (hwndWinamp) { @@ -109,7 +111,14 @@ HWND hwndWinamp = FindWindow("Winamp v1.x",NULL); 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, '-')) { @@ -142,7 +151,7 @@ HWND hwndWinamp = FindWindow("Winamp v1.x",NULL); } hexchat_commandf(ph, truc); - + g_free (current_play); } else hexchat_print(ph, "Winamp: Nothing being played."); } @@ -170,7 +179,7 @@ hexchat_plugin_init(hexchat_plugin *plugin_handle, *plugin_name = "Winamp"; *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_command (ph, "MENU -ishare\\music.png ADD \"Window/Display Current Song (Winamp)\" \"WINAMP\""); diff --git a/plugins/winamp/winamp.vcxproj b/plugins/winamp/winamp.vcxproj index b325c40d..e6289edc 100644 --- a/plugins/winamp/winamp.vcxproj +++ b/plugins/winamp/winamp.vcxproj @@ -27,22 +27,15 @@ <TargetName>hcwinamp</TargetName> <OutDir>$(HexChatRel)plugins\</OutDir> </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <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'"> + <ItemDefinitionGroup> <ClCompile> <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> <Link> <ModuleDefinitionFile>winamp.def</ModuleDefinitionFile> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup> @@ -52,4 +45,4 @@ <ClCompile Include="winamp.c" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> -</Project> +</Project> \ No newline at end of file |