Skip to content

Commit c162606

Browse files
authored
Fix to file additional info (file size, etc) for Atari (#1003)
* Fix to file additional info (file size, etc) for Atari * Fix discover_disktype call
1 parent 2fb3b08 commit c162606

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

lib/device/sio/fuji.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#include "hash.h"
3838
#include "../../qrcode/qrmanager.h"
3939

40-
#define ADDITIONAL_DETAILS_BYTES 10
40+
#define ADDITIONAL_DETAILS_BYTES 13
4141
#define FF_DIR 0x01
4242
#define FF_TRUNC 0x02
4343

@@ -1178,25 +1178,32 @@ void _set_additional_direntry_details(fsdir_entry_t *f, uint8_t *dest, uint8_t m
11781178
dest[4] = modtime->tm_min;
11791179
dest[5] = modtime->tm_sec;
11801180

1181-
// File size
1182-
uint16_t fsize = f->size;
1183-
dest[6] = LOBYTE_FROM_UINT16(fsize);
1184-
dest[7] = HIBYTE_FROM_UINT16(fsize);
1181+
// File size
1182+
uint32_t fsize = f->size;
1183+
dest[6] = (fsize >> 24) & 0xFF;
1184+
dest[7] = (fsize >> 16) & 0xFF;
1185+
dest[8] = (fsize >> 8) & 0xFF;
1186+
dest[9] = fsize & 0xFF;
11851187

11861188
// File flags
11871189
#define FF_DIR 0x01
11881190
#define FF_TRUNC 0x02
11891191

1190-
dest[8] = f->isDir ? FF_DIR : 0;
1192+
dest[10] = f->isDir ? FF_DIR : 0;
11911193

1192-
maxlen -= 10; // Adjust the max return value with the number of additional bytes we're copying
1193-
if (f->isDir) // Also subtract a byte for a terminating slash on directories
1194+
maxlen -= ADDITIONAL_DETAILS_BYTES; // Adjust the max return value with the number of additional bytes we're copying
1195+
if (f->isDir) // Also subtract a byte for a terminating slash on directories
11941196
maxlen--;
11951197
if (strlen(f->filename) >= maxlen)
1196-
dest[8] |= FF_TRUNC;
1198+
dest[11] |= FF_TRUNC;
11971199

11981200
// File type
1199-
dest[9] = MediaType::discover_disktype(f->filename);
1201+
dest[12] = MediaType::discover_disktype(f->filename);
1202+
1203+
Debug_printf("Addtl: ");
1204+
for (int i = 0; i < ADDITIONAL_DETAILS_BYTES; i++)
1205+
Debug_printf("%02x ", dest[i]);
1206+
Debug_printf("\n");
12001207
}
12011208

12021209
/*

0 commit comments

Comments
 (0)