summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2024-04-02 21:00:13 -0400
committerWilliam Wilgus <wilgus.william@gmail.com>2024-04-02 21:04:44 -0400
commit8c994db2472f5e399cda4bfd37e1da235913aa78 (patch)
tree59386c413fa3f114933b331c85681774378979f8
parent4a91d376134c918c92348e56d7f5bcb092ba4117 (diff)
downloadrockbox-8c994db2472f5e399cda4bfd37e1da235913aa78.tar.gz
rockbox-8c994db2472f5e399cda4bfd37e1da235913aa78.zip
multiboot_select plugin check volume root for valid firmware -- Try 2
I'm not sure why but on my fuze v2 I don't get the '.' nd '..' directories back from readdir that make removing '.' to find /.rockbox inconsistent Instead filter out files and strcmp the incoming dirs to BOOTDIR (.rockbox) and clear it when they match Change-Id: Id8f3312cb3ae624dff1be21f745034c08c4ae1a7
-rw-r--r--apps/plugins/multiboot_select.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/plugins/multiboot_select.c b/apps/plugins/multiboot_select.c
index 993a47c0e4..2922136548 100644
--- a/apps/plugins/multiboot_select.c
+++ b/apps/plugins/multiboot_select.c
@@ -155,11 +155,20 @@ static int find_roots(void)
155 155
156 struct dirent* ent; 156 struct dirent* ent;
157 while((ent = rb->readdir(dir))) { 157 while((ent = rb->readdir(dir))) {
158 /* skip non-directories */
159 if ((rb->dir_get_info(dir, ent).attribute & ATTR_DIRECTORY) == 0) {
160 continue;
161 }
162
158 const char *dname = ent->d_name; 163 const char *dname = ent->d_name;
159 if (*dname == '.' && *(dname + 1) == '\0') 164 /* check for bootdir in the root of the volume */
160 dname++; /* skip the dot so we can check root of volume */ 165 if (rb->strcmp(bootdir, dname) == 0) {
166 dname = "";
167 }
168
161 int r = rb->snprintf(tmpbuf, sizeof(tmpbuf), "/<%d>/%s/%s/%s", 169 int r = rb->snprintf(tmpbuf, sizeof(tmpbuf), "/<%d>/%s/%s/%s",
162 vol, dname, bootdir, BOOTFILE); 170 vol, dname, bootdir, BOOTFILE);
171
163 if(r < 0 || (size_t)r >= sizeof(tmpbuf)) 172 if(r < 0 || (size_t)r >= sizeof(tmpbuf))
164 continue; 173 continue;
165 174