* gmtpでEUC-JPなファイルが送れない [#bc7138af]

メッセージ

MTP経由で外部機器(Nexus7)とgmtpを使って通信する際に、送るファイルの名前がEUC-JPだと エラーになる。とりあえずUTF-8で同名のハードリンクを使ってごまかしているけど、 多分、gmtpの中で文字コード変換処理を追加してやればいいくらいのバグなので、 時間ができたら調べてみよう。


$ diff -u gMTP/src/mtp.c build/src/mtp.c
--- gMTP/src/mtp.c	2012-11-14 13:34:36.000000000 +0900
+++ build/src/mtp.c	2013-01-03 00:39:50.000000000 +0900
@@ -655,9 +655,12 @@
         return;
     }
 
+    GError *terror = NULL;
+    gchar *display_filename;
     filename_stripped = basename(filename);
+    display_filename = g_filename_to_utf8(filename_stripped, -1, NULL, NULL, &terror);
     displayProgressBar(_("File Upload"));
-    setProgressFilename(g_strdup(filename_stripped));
+    setProgressFilename(display_filename);
 
     // What we need to do is work what type of file we are sending
     // and either use the general file send, or
@@ -672,7 +675,8 @@
         trackfile = LIBMTP_new_track_t();
 
         trackfile->filesize = filesize;
-        trackfile->filename = g_strdup(filename_stripped);
+        // trackfile->filename = g_strdup(filename_stripped);
+        trackfile->filename = g_filename_to_utf8(filename_stripped, -1, NULL, NULL, &terror);
         trackfile->filetype = find_filetype(filename_stripped);
         trackfile->parent_id = currentFolderID;
         trackfile->storage_id = DeviceMgr.devicestorage->id;
@@ -708,8 +712,10 @@
         // Add some data if it's all blank so we don't freak out some players.
         if (trackfile->album == NULL)
             trackfile->album = NULL;
-        if (trackfile->title == NULL)
-            trackfile->title = g_strdup(filename_stripped);
+        if (trackfile->title == NULL) {
+	  // trackfile->title = g_strdup(filename_stripped);
+	  trackfile->title = g_filename_to_utf8(filename_stripped, -1, NULL, NULL, &terror);
+	}
         if (trackfile->artist == NULL)
             trackfile->artist = g_strdup(_("<Unknown>"));
         if (trackfile->date == NULL) {
@@ -776,10 +782,12 @@
         LIBMTP_destroy_track_t(trackfile);
         LIBMTP_destroy_album_t(albuminfo);
     } else {
+      GError *error = NULL;
         // Generic file upload.
         genfile = LIBMTP_new_file_t();
         genfile->filesize = filesize;
-        genfile->filename = g_strdup(filename_stripped);
+        // genfile->filename = g_strdup(filename_stripped);
+	genfile->filename = g_filename_to_utf8(filename_stripped, -1, NULL, NULL, &error);
         genfile->filetype = find_filetype(filename_stripped);
         genfile->parent_id = currentFolderID;
         genfile->storage_id = DeviceMgr.devicestorage->id;


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:44