diff options
author | Marvin Borner | 2020-04-15 16:35:29 +0200 |
---|---|---|
committer | Marvin Borner | 2020-04-15 16:35:29 +0200 |
commit | aa3d1b4689e6dadd982fe1e5ca8af69ca39c617d (patch) | |
tree | 8d4eff1df3031e601cb50cf005130a591fce35a1 /src/kernel/fs/iso9660 | |
parent | 10cd931d75a02942c5ad254cef2e56b515122fa3 (diff) |
Added ext2 filesystem
Diffstat (limited to 'src/kernel/fs/iso9660')
-rw-r--r-- | src/kernel/fs/iso9660/iso9660.c | 59 | ||||
-rw-r--r-- | src/kernel/fs/iso9660/iso9660.h | 22 |
2 files changed, 0 insertions, 81 deletions
diff --git a/src/kernel/fs/iso9660/iso9660.c b/src/kernel/fs/iso9660/iso9660.c deleted file mode 100644 index ab00c31..0000000 --- a/src/kernel/fs/iso9660/iso9660.c +++ /dev/null @@ -1,59 +0,0 @@ -#include <stdint.h> -#include <kernel/fs/atapi_pio.h> -#include <kernel/fs/iso9660/iso9660.h> -#include <kernel/lib/stdlib.h> -#include <kernel/memory/alloc.h> - -struct iso9660_entity *ISO9660_get(char **dirs, uint8_t dirs_sz) -{ - ATAPI_read(1, 0x10); - uint32_t last_len = *(uint32_t *)(ATAPI_PIO_BUFFER + ISO9660_ROOT_RECORD_OFFSET + - ISO9660_DIR_EAR_LENGTH); - uint32_t last_lba = - *(uint32_t *)(ATAPI_PIO_BUFFER + ISO9660_ROOT_RECORD_OFFSET + ISO9660_DIR_EAR_LBA); - - for (uint8_t dirs_i = 0; dirs_i < dirs_sz; dirs_i++) { - ATAPI_read((last_len % 2048 != 0) + (last_len / 2048), last_lba); - - uint8_t found = 0; - for (uint32_t i = 0; i < last_len && !found;) { - if (!*(uint8_t *)(ATAPI_PIO_BUFFER + i + ISO9660_DIR_RECORD_LENGTH)) - break; - - char *filename = (char *)(ATAPI_PIO_BUFFER + i + ISO9660_DIR_FILENAME); - - for (uint32_t j = 0; j < ISO9660_DIR_FILENAME_LENGTH; j++) { - if (filename[j] == ';') { - filename[j] = 0; - break; - } - } - - if (strcmp(dirs[dirs_i], filename) == 0) { - found = 1; - last_lba = - *(uint32_t *)(ATAPI_PIO_BUFFER + i + ISO9660_DIR_EAR_LBA); - last_len = *(uint32_t *)(ATAPI_PIO_BUFFER + i + - ISO9660_DIR_EAR_LENGTH); - } else { - i += *(uint8_t *)(ATAPI_PIO_BUFFER + i + ISO9660_DIR_RECORD_LENGTH); - } - } - - if (!found) { - return (struct iso9660_entity *)0; - } - } - - struct iso9660_entity *ret = - (struct iso9660_entity *)kmalloc(sizeof(struct iso9660_entity)); - ret->lba = last_lba; - ret->length = last_len; - return ret; -} - -uint8_t *ISO9660_read(struct iso9660_entity *entity) -{ - ATAPI_read((entity->length % 2048 != 0) + (entity->length / 2048), entity->lba); - return (uint8_t *)ATAPI_PIO_BUFFER; -}
\ No newline at end of file diff --git a/src/kernel/fs/iso9660/iso9660.h b/src/kernel/fs/iso9660/iso9660.h deleted file mode 100644 index 6b2e0b0..0000000 --- a/src/kernel/fs/iso9660/iso9660.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef MELVIX_ISO9660_H -#define MELVIX_ISO9660_H - -#define ISO9660_ROOT_RECORD_OFFSET 156 -#define ISO9660_DIR_RECORD_LENGTH 0 -#define ISO9660_DIR_EAR_LBA 2 -#define ISO9660_DIR_EAR_LENGTH 10 -#define ISO9660_DIR_FILENAME_LENGTH 32 -#define ISO9660_DIR_FILENAME 33 - -#include <stdint.h> - -struct iso9660_entity { - uint32_t lba; - uint32_t length; -}; - -struct iso9660_entity *ISO9660_get(char **dirs, uint8_t dirs_sz); - -uint8_t *ISO9660_read(struct iso9660_entity *entity); - -#endif
\ No newline at end of file |