rem: name = gnome_vfs_escape_string (info->name); str = g_build_filename (url, name, NULL);
add: if (g_utf8_validate (info->name, -1, NULL) == FALSE) name = g_strdup (info->name); else name = gnome_vfs_escape_string (info->name); str = g_build_filename (url, info->name, NULL);
context: totem_pl_parser_add_directory (TotemPlParser *parser, const char *url,			   gpointer data){	MediaType type;	GList *list, *l;	GnomeVFSResult res;	char *media_url;	if (parser->priv->recurse_level == 1) {		type = totem_cd_detect_type_from_dir (url, &media_url, NULL);		if (type != MEDIA_TYPE_DATA && type != MEDIA_TYPE_ERROR) {			if (media_url != NULL) {				totem_pl_parser_add_one_url (parser, media_url, NULL);				g_free (media_url);				return TOTEM_PL_PARSER_RESULT_SUCCESS;			}		}	}	res = gnome_vfs_directory_list_load (&list, url,			GNOME_VFS_FILE_INFO_DEFAULT);	if (res != GNOME_VFS_OK)		return TOTEM_PL_PARSER_RESULT_ERROR;	list = g_list_sort (list, (GCompareFunc) totem_pl_parser_dir_compare);	l = list;	while (l != NULL) {		char *name, *str, *fullpath;		GnomeVFSFileInfo *info = l->data;		if (info->name != NULL && (strcmp (info->name, ".") == 0					|| strcmp (info->name, "..") == 0)) {			l = l->next;			continue;		}		name = gnome_vfs_escape_string (info->name);		str = g_build_filename (url, name, NULL);		if (strstr (str, "://") != NULL && str[0] == '/')			fullpath = str + 1;		else			fullpath = str;		if (totem_pl_parser_parse_internal (parser, fullpath) != TOTEM_PL_PARSER_RESULT_SUCCESS)			totem_pl_parser_add_one_url (parser, fullpath, NULL);		g_free (str);		g_free (name);		l = l->next;	}	g_list_foreach (list, (GFunc) gnome_vfs_file_info_unref, NULL);	g_list_free (list);	return TOTEM_PL_PARSER_RESULT_SUCCESS;}