From 802740cd88f82ed83dc11f299ada3264d015add0 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Tue, 7 May 2002 18:56:32 +0000 Subject: Create correct shortnames git-svn-id: svn://svn.rockbox.org/rockbox/trunk@499 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/fat.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'firmware/drivers/fat.c') diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index efb91cff33..4333f55d0d 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -756,6 +756,7 @@ int fat_create_file(unsigned int currdir, char *name) static int parse_direntry(struct fat_direntry *de, unsigned char *buf) { + int i=0,j=0; memset(de, 0, sizeof(struct fat_direntry)); de->attr = buf[FATDIR_ATTR]; de->crttimetenth = buf[FATDIR_CRTTIMETENTH]; @@ -766,8 +767,15 @@ static int parse_direntry(struct fat_direntry *de, unsigned char *buf) de->filesize = BYTES2INT32(buf,FATDIR_FILESIZE); de->firstcluster = BYTES2INT16(buf,FATDIR_FSTCLUSLO) | (BYTES2INT16(buf,FATDIR_FSTCLUSHI) << 16); - strncpy(de->name, &buf[FATDIR_NAME], 11); + /* fix the name */ + for (i=0; (i<8) && (buf[FATDIR_NAME+i] != ' '); i++) + de->name[j++] = buf[FATDIR_NAME+i]; + if ( buf[FATDIR_NAME+8] != ' ' ) { + de->name[j++] = '.'; + for (i=8; (i<11) && (buf[FATDIR_NAME+i] != ' '); i++) + de->name[j++] = buf[FATDIR_NAME+i]; + } return 1; } -- cgit v1.2.3