Commit d1371735 authored by Pierre Ynard's avatar Pierre Ynard

ncurses: fix URI creation

This fixes opening of file names containing non-ASCII characters
parent d2dbed4c
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include <vlc_playlist.h> #include <vlc_playlist.h>
#include <vlc_meta.h> #include <vlc_meta.h>
#include <vlc_fs.h> #include <vlc_fs.h>
#include <vlc_url.h>
#include <assert.h> #include <assert.h>
...@@ -258,7 +259,7 @@ static bool IsFile(const char *current_dir, const char *entry) ...@@ -258,7 +259,7 @@ static bool IsFile(const char *current_dir, const char *entry)
char *uri; char *uri;
struct stat st; struct stat st;
if (asprintf(&uri, "%s/%s", current_dir, entry) != -1) if (asprintf(&uri, "%s" DIR_SEP "%s", current_dir, entry) != -1)
{ {
ret = vlc_stat(uri, &st) || !S_ISDIR(st.st_mode); ret = vlc_stat(uri, &st) || !S_ISDIR(st.st_mode);
free(uri); free(uri);
...@@ -1439,31 +1440,27 @@ static bool HandleBrowseKey(intf_thread_t *p_intf, int key) ...@@ -1439,31 +1440,27 @@ static bool HandleBrowseKey(intf_thread_t *p_intf, int key)
case '\n': case '\n':
case ' ': case ' ':
dir_entry = p_sys->pp_dir_entries[p_sys->i_box_idx]; dir_entry = p_sys->pp_dir_entries[p_sys->i_box_idx];
char *psz_path;
if (asprintf(&psz_path, "%s" DIR_SEP "%s", p_sys->psz_current_dir,
dir_entry->psz_path) == -1)
return true;
if (!dir_entry->b_file && key != ' ') if (!dir_entry->b_file && key != ' ')
{ {
char *current_dir = p_sys->psz_current_dir; free(p_sys->psz_current_dir);
if (asprintf(&p_sys->psz_current_dir, "%s/%s", p_sys->psz_current_dir = psz_path;
p_sys->psz_current_dir, dir_entry->psz_path) != -1) ReadDir(p_intf);
{
ReadDir(p_intf);
free(current_dir);
}
else
p_sys->psz_current_dir = current_dir;
p_sys->i_box_start = 0; p_sys->i_box_start = 0;
p_sys->i_box_idx = 0; p_sys->i_box_idx = 0;
return true; return true;
} }
char* psz_uri; char *psz_uri = make_URI(psz_path, dir_entry->b_file ? "file"
if (asprintf(&psz_uri, "%s://%s/%s", : "directory");
dir_entry->b_file ? "file" : "directory", free(psz_path);
p_sys->psz_current_dir, dir_entry->psz_path) == -1) if (psz_uri == NULL)
{ return true;
return false;
}
playlist_t *p_playlist = pl_Get(p_intf); playlist_t *p_playlist = pl_Get(p_intf);
playlist_item_t *p_parent = p_sys->p_node; playlist_item_t *p_parent = p_sys->p_node;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment