The correct diff, sorry. Index: Makefile =================================================================== RCS file: /cvs/ports/audio/ncmpc/Makefile,v retrieving revision 1.4 diff -u -r1.4 Makefile --- Makefile 16 Dec 2006 12:22:32 -0000 1.4 +++ Makefile 2 Jan 2007 16:04:09 -0000 @@ -6,6 +6,7 @@ COMMENT= "curses based frontend for mpd" DISTNAME= ncmpc-0.11.1 +PKGNAME= ${DISTNAME}p0 CATEGORIES= audio HOMEPAGE= http://hem.bredband.net/kaw/ncmpc/ Index: patches/patch-src_mpdclient_c =================================================================== RCS file: patches/patch-src_mpdclient_c diff -N patches/patch-src_mpdclient_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_mpdclient_c 2 Jan 2007 16:04:09 -0000 @@ -0,0 +1,27 @@ +--- src/mpdclient.c.orig Sun Jan 23 18:37:42 2005 ++++ src/mpdclient.c Tue Jan 2 16:21:06 2007 +@@ -846,10 +846,9 @@ + { + mpdclient_filelist_t *filelist; + mpd_InfoEntity *entity; +- gchar *path_utf8 = locale_to_utf8(path); + +- D("mpdclient_filelist_get(%s)\n", path); +- mpd_sendLsInfoCommand(c->connection, path_utf8); ++ D("mpdclient_filelist_get(%s)\n", utf8_to_locale(path)); ++ mpd_sendLsInfoCommand(c->connection, path); + filelist = g_malloc0(sizeof(mpdclient_filelist_t)); + if( path && path[0] && strcmp(path, "/") ) + { +@@ -871,11 +870,9 @@ + + if( mpdclient_finish_command(c) ) + { +- g_free(path_utf8); + return mpdclient_filelist_free(filelist); + } + +- g_free(path_utf8); + filelist->path = g_strdup(path); + filelist->updated = TRUE; + Index: patches/patch-src_screen_file_c =================================================================== RCS file: patches/patch-src_screen_file_c diff -N patches/patch-src_screen_file_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_screen_file_c 2 Jan 2007 16:04:09 -0000 @@ -0,0 +1,20 @@ +--- src/screen_file.c.orig Sun Jan 23 18:37:42 2005 ++++ src/screen_file.c Tue Jan 2 16:19:47 2007 +@@ -255,7 +255,7 @@ + { + /* enter sub */ + mpd_Directory *dir = entity->info.directory; +- path = utf8_to_locale(dir->path); ++ path = g_strdup(dir->path); + /* save current list window state */ + push_lw_state(); + list_window_reset(lw); +@@ -566,7 +566,7 @@ + static char * + browse_title(char *str, size_t size) + { +- g_snprintf(str, size, _("Browse: %s"), basename(filelist->path)); ++ g_snprintf(str, size, _("Browse: %s"), utf8_to_locale(basename(filelist->path))); + return str; + } + Index: patches/patch-src_support_c =================================================================== RCS file: patches/patch-src_support_c diff -N patches/patch-src_support_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_support_c 2 Jan 2007 16:04:09 -0000 @@ -0,0 +1,29 @@ +--- src/support.c.orig Sun Jan 23 18:37:41 2005 ++++ src/support.c Tue Jan 2 16:16:16 2007 +@@ -149,6 +149,7 @@ + gchar *str; + gsize rb, wb; + GError *error; ++ const char *charset; + + if( noconvert ) + return g_strdup(utf8str); +@@ -156,15 +157,11 @@ + rb = 0; /* bytes read */ + wb = 0; /* bytes written */ + error = NULL; +- str=g_locale_from_utf8(utf8str, +- strlen(utf8str), +- &wb, &rb, +- &error); ++ g_get_charset(&charset); ++ str = g_convert_with_fallback( ++ utf8str, -1, charset, "UTF-8", "?", &rb, &wb, &error); + if( error ) + { +- const char *charset; +- +- g_get_charset(&charset); + screen_status_printf(_("Error: Unable to convert characters to %s"), + charset); + D("utf8_to_locale(): %s\n", error->message);