From a2136a811f912ac5d7a4f7f07a5c303fac6051a2 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Tue, 9 Dec 2014 23:20:00 +0100 Subject: [PATCH] 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 --- firmware/target/hosted/filesystem-app.c | 24 ++++++++++++++---------- 1 file 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, { (void) flags; char vol_string[VOL_MAX_LEN + 1]; - int len = get_volume_name(-1, vol_string); + int len; - /* link might be passed with or without HOME_DIR expanded. To handle - * both perform substring matching (VOL_NAMES is unique enough) */ - const char *begin = strstr(link, vol_string); - if (begin) + for (int i = 1; i < NUM_VOLUMES; i++) { - /* begin now points to the start of vol_string within link, - * we want to copy the remainder of the paths, prefixed by - * the actual mount point (the remainder might be "") */ - snprintf(buf, bufsize, MULTIDRIVE_DIR"%s", begin + len); - return buf; + len = get_volume_name(i, vol_string); + /* link might be passed with or without HOME_DIR expanded. To handle + * both perform substring matching (VOL_NAMES is unique enough) */ + const char *begin = strstr(link, vol_string); + if (begin) + { + /* begin now points to the start of vol_string within link, + * we want to copy the remainder of the paths, prefixed by + * the actual mount point (the remainder might be "") */ + snprintf(buf, bufsize, MULTIDRIVE_DIR"%s", begin + len); + return buf; + } } return link;