summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-05-07 18:56:32 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-05-07 18:56:32 +0000
commit802740cd88f82ed83dc11f299ada3264d015add0 (patch)
tree3778eff0a2ce08fca8af79164af9053861693b26
parent4bd870360af595a3f90b9ccc5a09d1414fd654e9 (diff)
downloadrockbox-802740cd88f82ed83dc11f299ada3264d015add0.zip
rockbox-802740cd88f82ed83dc11f299ada3264d015add0.tar.gz
rockbox-802740cd88f82ed83dc11f299ada3264d015add0.tar.bz2
rockbox-802740cd88f82ed83dc11f299ada3264d015add0.tar.xz
Create correct shortnames
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@499 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/fat.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c
index efb91cf..4333f55 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;
}