Sat, 09 Dec 2023 21:04:40 +0100
1 files changed,
8 insertions(+),
8 deletions(-)
jump to
M
common/fat12.c
→
common/fat12.c
@@ -83,8 +83,8 @@ return buffer += fat->cluster_size;
} int FAT12_root_dir_next(FAT12_descriptor_t *fat, int index, char *fname_buffer, uint16_t *first_cluster, uint32_t *file_size) { - memset(fname_buffer, 0, sizeof(fname_buffer)); - + fname_buffer[0] = 0; + while (1) { //printk("%i\n", index); // index overflow@@ -126,6 +126,10 @@ for (int i = 0; i < 2; i++) {
fname_buffer[offset++] = lfn_entry->part_3[i]; } + if (lfn_entry->seq_num & (1 << 6)) { + fname_buffer[offset] = 0; + } + index++; continue; }@@ -148,13 +152,9 @@ *first_cluster = dir_entry.start_of_clusters;
// if no VFAT LFN exists, use DOS name if (fname_buffer[0] == 0) { - for (int i = 0; i < 8; i++) { - fname_buffer[i] = dir_entry.name[i]; - } + memcpy(fname_buffer, dir_entry.name, 8); fname_buffer[8] = '.'; - for (int i = 0; i < 3; i++) { - fname_buffer[i + 9] = dir_entry.ext[i]; - } + memcpy(fname_buffer + 9, dir_entry.ext, 3); fname_buffer[12] = 0; }