diff src/audacious/input.c @ 4089:9e24c8746d99

- introduce new API functions uri_to_display_basename() and uri_to_display_dirname(). each function derives utf8 encoded basename or dirname from given uri respectively. - input plugins can use these functions as aud_uri_to_display_basename() / aud_uri_to_display_dirname() on associating FIELD_FILE_NAME / FIELD_FILE_PATH.
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Mon, 17 Dec 2007 21:56:17 +0900
parents 76da6fe8cb39
children cc8e81a84fa6
line wrap: on
line diff
--- a/src/audacious/input.c	Sun Dec 16 18:54:45 2007 +0100
+++ b/src/audacious/input.c	Mon Dec 17 21:56:17 2007 +0900
@@ -570,14 +570,16 @@
     ProbeResult *pr;
 
     if (filename == NULL)
-    return NULL;
+        return NULL;
 
     filename_proxy = g_strdup(filename);
 
     pr = input_check_file(filename_proxy, FALSE);
 
-    if (!pr)
+    if (!pr) {
+        g_free(filename_proxy);
         return NULL;
+    }
 
     ip = pr->ip;
 
@@ -587,23 +589,24 @@
         input = ip->get_song_tuple(filename_proxy);
     else
     {
-        gchar *tmp;
+        gchar *scratch;
 
-        input = tuple_new();
+        scratch = uri_to_display_basename(filename);
+        tuple_associate_string(input, FIELD_FILE_NAME, NULL, scratch);
+        g_free(scratch);
 
-        tmp = g_strdup(filename);
-        if ((ext = strrchr(tmp, '.')))
-            *ext = '\0';
+        scratch = uri_to_display_dirname(filename);
+        tuple_associate_string(input, FIELD_FILE_PATH, NULL, scratch);
+        g_free(scratch);
 
-        tuple_associate_string(input, FIELD_FILE_NAME, NULL, g_path_get_basename(tmp));
+        ext = strrchr(filename, '.');
+        if (ext != NULL) {
+            ++ext;
+            tuple_associate_string(input, FIELD_FILE_EXT, NULL, ext);
+        }
 
-        if (ext)
-            tuple_associate_string(input, FIELD_FILE_EXT, NULL, ext + 1);
-
-        tuple_associate_string(input, FIELD_FILE_PATH, NULL, g_path_get_dirname(tmp));
         tuple_associate_int(input, FIELD_LENGTH, NULL, -1);
 
-        g_free(tmp);
     }
 
     g_free(filename_proxy);