summaryrefslogtreecommitdiff
path: root/apps/menus/playlist_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menus/playlist_menu.c')
-rw-r--r--apps/menus/playlist_menu.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c
index 0983f9c338..49ff56795a 100644
--- a/apps/menus/playlist_menu.c
+++ b/apps/menus/playlist_menu.c
@@ -51,19 +51,33 @@ int save_playlist_screen(struct playlist_info* playlist)
51 uint32_t resume_elapsed; 51 uint32_t resume_elapsed;
52 uint32_t resume_offset; 52 uint32_t resume_offset;
53 53
54 char temp[MAX_PATH+1], *dot; 54 char temp[MAX_PATH+1], *p;
55 int len; 55 int len;
56 56
57 playlist_get_name(playlist, temp, sizeof(temp)-1); 57 playlist_get_name(playlist, temp, sizeof(temp)-1);
58 58
59 len = strlen(temp); 59 len = strlen(temp);
60 dot = strrchr(temp, '.');
61 60
62 if (!dot && len <= 1) 61 if (len <= 1) /* root or dynamic playlist */
63 { 62 {
64 catalog_get_directory(temp, sizeof(temp)); 63 catalog_get_directory(temp, sizeof(temp));
65 strlcat(temp, DEFAULT_DYNAMIC_PLAYLIST_NAME, sizeof(temp)); 64 strlcat(temp, DEFAULT_DYNAMIC_PLAYLIST_NAME, sizeof(temp));
66 } 65 }
66 else if (!strcmp((temp + len - 1), "/")) /* dir playlists other than root */
67 {
68 temp[len - 1] = '\0';
69 catalog_get_directory(directoryonly, sizeof(directoryonly));
70
71 if ((p = strrchr(temp, '/'))) /* use last path component as playlist name */
72 {
73 strlcat(directoryonly, p, sizeof(directoryonly));
74 strlcat(directoryonly, ".m3u8", sizeof(directoryonly));
75 }
76 else
77 strlcat(directoryonly, DEFAULT_DYNAMIC_PLAYLIST_NAME, sizeof(directoryonly));
78
79 strmemccpy(temp, directoryonly, sizeof(temp));
80 }
67 81
68 if (catalog_pick_new_playlist_name(temp, sizeof(temp), 82 if (catalog_pick_new_playlist_name(temp, sizeof(temp),
69 playlist ? playlist->filename : 83 playlist ? playlist->filename :