summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2014-12-09 23:20:00 +0100
committerThomas Martitz <kugel@rockbox.org>2014-12-09 23:20:00 +0100
commita2136a811f912ac5d7a4f7f07a5c303fac6051a2 (patch)
tree4655f5f4846ffec0f2b6a88f03fc7475d31d2b92
parent9454ad4c9780230667a7f32d2b8b201342509d91 (diff)
downloadrockbox-a2136a811f912ac5d7a4f7f07a5c303fac6051a2.tar.gz
rockbox-a2136a811f912ac5d7a4f7f07a5c303fac6051a2.zip
ypr0: Get it up and running again
7d1a47cf13 introduced a regression that broke it completely so that it couldn't boot into the main menu anymore. It had a faulty call to get_volume_name() which made handle_special_links() act up. This broke every open() and opendir() (and friends) library calls. Change-Id: I399960ca8fb6e3bcc1f25c9b4a3c19a6d28b77bd
-rw-r--r--firmware/target/hosted/filesystem-app.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/firmware/target/hosted/filesystem-app.c b/firmware/target/hosted/filesystem-app.c
index 93fadc6d6e..d73704737a 100644
--- a/firmware/target/hosted/filesystem-app.c
+++ b/firmware/target/hosted/filesystem-app.c
@@ -69,18 +69,22 @@ static const char *handle_special_links(const char* link, unsigned flags,
69{ 69{
70 (void) flags; 70 (void) flags;
71 char vol_string[VOL_MAX_LEN + 1]; 71 char vol_string[VOL_MAX_LEN + 1];
72 int len = get_volume_name(-1, vol_string); 72 int len;
73 73
74 /* link might be passed with or without HOME_DIR expanded. To handle 74 for (int i = 1; i < NUM_VOLUMES; i++)
75 * both perform substring matching (VOL_NAMES is unique enough) */
76 const char *begin = strstr(link, vol_string);
77 if (begin)
78 { 75 {
79 /* begin now points to the start of vol_string within link, 76 len = get_volume_name(i, vol_string);
80 * we want to copy the remainder of the paths, prefixed by 77 /* link might be passed with or without HOME_DIR expanded. To handle
81 * the actual mount point (the remainder might be "") */ 78 * both perform substring matching (VOL_NAMES is unique enough) */
82 snprintf(buf, bufsize, MULTIDRIVE_DIR"%s", begin + len); 79 const char *begin = strstr(link, vol_string);
83 return buf; 80 if (begin)
81 {
82 /* begin now points to the start of vol_string within link,
83 * we want to copy the remainder of the paths, prefixed by
84 * the actual mount point (the remainder might be "") */
85 snprintf(buf, bufsize, MULTIDRIVE_DIR"%s", begin + len);
86 return buf;
87 }
84 } 88 }
85 89
86 return link; 90 return link;