diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-05-27 14:03:17 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-05-27 14:03:17 +0000 |
commit | 76d0c7d790cfdcad7e4771f09f02a222571d0c25 (patch) | |
tree | 9e3a902088ed7455fdb46ff3cdc20296973b4650 /firmware | |
parent | ceb5fb824b95a7534ecad941e8c1b32e3a8be02c (diff) | |
download | rockbox-76d0c7d790cfdcad7e4771f09f02a222571d0c25.tar.gz rockbox-76d0c7d790cfdcad7e4771f09f02a222571d0c25.zip |
Fixed endianness bug in getsonglength
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@750 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/id3.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/id3.c b/firmware/id3.c index 9372546095..8133f7c4f6 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -349,7 +349,8 @@ getid3v1len(int fd) static int getsonglength(int fd, mp3entry *entry) { - long header=0; + unsigned long header=0; + unsigned char tmp; int version; int layer; int bitindex; @@ -367,16 +368,18 @@ getsonglength(int fd, mp3entry *entry) /* Fill up header with first 24 bits */ for(version = 0; version < 3; version++) { header <<= 8; - if(!read(fd, &header, 1)) + if(!read(fd, &tmp, 1)) return -1; + header |= tmp; } /* Loop trough file until we find a frame header */ restart: do { header <<= 8; - if(!read(fd, &header, 1)) + if(!read(fd, &tmp, 1)) return -1; + header |= tmp; } while(!CHECKSYNC(header)); /* @@ -493,9 +496,10 @@ mp3info(mp3entry *entry, char *filename) entry->filesize = getfilesize(fd); entry->id3v2len = getid3v2len(fd); entry->id3v1len = getid3v1len(fd); - /* entry->length = getsonglength(fd, entry); */ + entry->length = getsonglength(fd, entry); entry->title = NULL; + if(HASID3V2(entry)) setid3v2title(fd, entry); |