:: commit 32a4539313327ba408d0845ef75cf13e8cf1b672

JlXip <jlxip@protonmail.com> — 2021-03-05 21:42

parents: 443266feb3

iso9660: support files without extension

diff --git a/stage23/fs/iso9660.s2.c b/stage23/fs/iso9660.s2.c
index 6c4086fd..fae145ac 100644
--- a/stage23/fs/iso9660.s2.c
+++ b/stage23/fs/iso9660.s2.c
@@ -142,6 +142,13 @@ static struct iso9660_directory_entry *iso9660_find(void *buffer, uint32_t size,
     finalfile[len + 0] = ';';
     finalfile[len + 1] = '1';
 
+    // Now, in case the file doesn't have extension
+    char finalfile_noext[len+3];
+    strcpy(finalfile_noext, filename);
+    finalfile_noext[len + 0] = '.';
+    finalfile_noext[len + 1] = ';';
+    finalfile_noext[len + 2] = '1';
+
     while (size) {
         struct iso9660_directory_entry *entry = buffer;
         char* entry_filename = (char*)entry + sizeof(struct iso9660_directory_entry);
@@ -152,6 +159,8 @@ static struct iso9660_directory_entry *iso9660_find(void *buffer, uint32_t size,
             return buffer;
         } else if (entry->filename_size == len+2 && !iso9660_strcmp(finalfile, entry_filename, len+2)) {
             return buffer;
+        } else if (entry->filename_size == len+3 && !iso9660_strcmp(finalfile_noext, entry_filename, len+3)) {
+            return buffer;
         } else {
             size -= entry->length;
             buffer += entry->length;
tab: 248 wrap: offon