static char * _inpath(const char *file) { char *realpath = NULL; if (!strncasecmp(file, "file:/", 6)) { Efreet_Uri *uri = efreet_uri_decode(file); if (uri) { realpath = ecore_file_realpath(uri->path); efreet_uri_free(uri); } } else if ((!strncasecmp(file, "http:/", 6)) || (!strncasecmp(file, "https:/", 7))) realpath = strdup(file); else realpath = ecore_file_realpath(file); if (realpath && (!realpath[0])) { free(realpath); return NULL; } return realpath; }
static void parse_metadata(E_Music_Control_Module_Context *ctxt, Eina_Value *array) { unsigned i; E_FREE_FUNC(ctxt->meta_title, eina_stringshare_del); E_FREE_FUNC(ctxt->meta_album, eina_stringshare_del); E_FREE_FUNC(ctxt->meta_artist, eina_stringshare_del); E_FREE_FUNC(ctxt->meta_cover, eina_stringshare_del); // DBG("Metadata: %s", eina_value_to_string(array)); for (i = 0; i < eina_value_array_count(array); i++) { const char *key, *str_val; Eina_Value st, subst; Efreet_Uri *uri; eina_value_array_value_get(array, i, &st); eina_value_struct_get(&st, "arg0", &key); if (!strcmp(key, "xesam:title")) { eina_value_struct_value_get(&st, "arg1", &subst); eina_value_struct_get(&subst, "arg0", &str_val); ctxt->meta_title = eina_stringshare_add(str_val); eina_value_flush(&subst); } else if (!strcmp(key, "xesam:album")) { eina_value_struct_value_get(&st, "arg1", &subst); eina_value_struct_get(&subst, "arg0", &str_val); ctxt->meta_album = eina_stringshare_add(str_val); eina_value_flush(&subst); } else if (!strcmp(key, "xesam:artist")) { Eina_Value arr; eina_value_struct_value_get(&st, "arg1", &subst); eina_value_struct_value_get(&subst, "arg0", &arr); eina_value_array_get(&arr, 0, &str_val); ctxt->meta_artist = eina_stringshare_add(str_val); eina_value_flush(&arr); eina_value_flush(&subst); } else if (!strcmp(key, "mpris:artUrl")) { eina_value_struct_value_get(&st, "arg1", &subst); eina_value_struct_get(&subst, "arg0", &str_val); uri = efreet_uri_decode(str_val); if (uri && !strncmp(uri->protocol, "file", 4)) ctxt->meta_cover = eina_stringshare_add(uri->path); E_FREE_FUNC(uri, efreet_uri_free); eina_value_flush(&subst); } eina_value_flush(&st); } }