summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2012-08-14 17:24:00 +0200
committerThomas Martitz <kugel@rockbox.org>2012-08-15 23:10:28 +0200
commit5d9b26f6a29e9c429f4f1f09ce0762f2d04023c7 (patch)
tree9f89e50d28ba13bafa4bdeef7bc7f7f6a7d4f15e
parent54e6bafada0f0b55246e208c3ffb85394756135f (diff)
downloadrockbox-5d9b26f6a29e9c429f4f1f09ce0762f2d04023c7.tar.gz
rockbox-5d9b26f6a29e9c429f4f1f09ce0762f2d04023c7.zip
folder_select: fix problem when selecting / as folder.
Change-Id: Id4880267e8478cebe073b958a58fef1ac22dd336
-rw-r--r--apps/gui/folder_select.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/apps/gui/folder_select.c b/apps/gui/folder_select.c
index 05354c4c6c..f2830fb8fd 100644
--- a/apps/gui/folder_select.c
+++ b/apps/gui/folder_select.c
@@ -103,9 +103,13 @@ static char* get_full_path(struct folder *start)
103{ 103{
104 static char buffer[MAX_PATH]; 104 static char buffer[MAX_PATH];
105 105
106 buffer[0] = '\0'; 106 if (strcmp(start->name, "/"))
107 107 {
108 get_full_path_r(start, buffer); 108 buffer[0] = 0;
109 get_full_path_r(start, buffer);
110 }
111 else /* get_full_path_r() does the wrong thing for / */
112 return "/";
109 113
110 return buffer; 114 return buffer;
111} 115}
@@ -447,8 +451,12 @@ static void save_folders_r(struct folder *root, char* dst, size_t maxlen)
447 snprintf(buffer_front, buffer_end - buffer_front, 451 snprintf(buffer_front, buffer_end - buffer_front,
448 "%s:", get_full_path(this->folder)); 452 "%s:", get_full_path(this->folder));
449 else 453 else
454 {
455 char *p = get_full_path(root);
450 snprintf(buffer_front, buffer_end - buffer_front, 456 snprintf(buffer_front, buffer_end - buffer_front,
451 "%s/%s:", get_full_path(root), this->name); 457 "%s/%s:", strcmp(p, "/") ? p : "",
458 strcmp(this->name, "/") ? this->name : "");
459 }
452 strlcat(dst, buffer_front, maxlen); 460 strlcat(dst, buffer_front, maxlen);
453 } 461 }
454 else if (this->state == EXPANDED) 462 else if (this->state == EXPANDED)