From 72d7f64f8b47049842799ae7d5fe9d598922b3ab Mon Sep 17 00:00:00 2001 From: TingPing Date: Mon, 13 Apr 2015 16:15:07 -0400 Subject: winamp: Fix utf8 song titles Fixes #1350 --- plugins/winamp/winamp.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'plugins/winamp/winamp.c') 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 #include #include +#include #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\""); -- cgit 1.4.1