On Tue, Jan 02, 2007 at 09:28:06AM +0100, Jasper Lievisse Adriaanse wrote:
> [...]

Turns out that ncmpc converts the directory name to ascii and later back
to utf8 to 'ls' a directory.

Tobias

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 14:33:55 -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 14:33:55 -0000
@@ -0,0 +1,30 @@
+--- src/mpdclient.c.orig       Tue Jan  2 14:33:11 2007
++++ src/mpdclient.c    Tue Jan  2 14:43:01 2007
+@@ -846,10 +846,10 @@
+ {
+   mpdclient_filelist_t *filelist;
+   mpd_InfoEntity *entity;
+-  gchar *path_utf8 = locale_to_utf8(path);
++  /*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 +871,11 @@
+   
+   if( mpdclient_finish_command(c) )
+     {
+-      g_free(path_utf8);
++      /* g_free(path_utf8); */
+       return mpdclient_filelist_free(filelist);
+     }
+   
+-  g_free(path_utf8);
++  /* 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 14:33:55 -0000
@@ -0,0 +1,21 @@
+--- src/screen_file.c.orig     Sun Jan 23 18:37:42 2005
++++ src/screen_file.c  Tue Jan  2 15:24:20 2007
+@@ -255,7 +255,8 @@
+       {
+       /* enter sub */
+       mpd_Directory *dir = entity->info.directory;
+-      path = utf8_to_locale(dir->path);      
++      /* 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 +567,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 14:33:55 -0000
@@ -0,0 +1,15 @@
+--- src/support.c.orig Sun Jan 23 18:37:41 2005
++++ src/support.c      Tue Jan  2 01:53:34 2007
+@@ -156,10 +156,8 @@
+   rb = 0; /* bytes read */
+   wb = 0; /* bytes written */
+   error = NULL;
+-  str=g_locale_from_utf8(utf8str, 
+-                       strlen(utf8str),
+-                       &wb, &rb,
+-                       &error);
++  str = g_convert_with_fallback(
++      utf8str, -1, "ASCII", "UTF-8", "?", &rb, &wb, &error);
+   if( error )
+     {
+       const char *charset;

Reply via email to