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 | |
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
-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) | |||
349 | static int | 349 | static int |
350 | getsonglength(int fd, mp3entry *entry) | 350 | getsonglength(int fd, mp3entry *entry) |
351 | { | 351 | { |
352 | long header=0; | 352 | unsigned long header=0; |
353 | unsigned char tmp; | ||
353 | int version; | 354 | int version; |
354 | int layer; | 355 | int layer; |
355 | int bitindex; | 356 | int bitindex; |
@@ -367,16 +368,18 @@ getsonglength(int fd, mp3entry *entry) | |||
367 | /* Fill up header with first 24 bits */ | 368 | /* Fill up header with first 24 bits */ |
368 | for(version = 0; version < 3; version++) { | 369 | for(version = 0; version < 3; version++) { |
369 | header <<= 8; | 370 | header <<= 8; |
370 | if(!read(fd, &header, 1)) | 371 | if(!read(fd, &tmp, 1)) |
371 | return -1; | 372 | return -1; |
373 | header |= tmp; | ||
372 | } | 374 | } |
373 | 375 | ||
374 | /* Loop trough file until we find a frame header */ | 376 | /* Loop trough file until we find a frame header */ |
375 | restart: | 377 | restart: |
376 | do { | 378 | do { |
377 | header <<= 8; | 379 | header <<= 8; |
378 | if(!read(fd, &header, 1)) | 380 | if(!read(fd, &tmp, 1)) |
379 | return -1; | 381 | return -1; |
382 | header |= tmp; | ||
380 | } while(!CHECKSYNC(header)); | 383 | } while(!CHECKSYNC(header)); |
381 | 384 | ||
382 | /* | 385 | /* |
@@ -493,9 +496,10 @@ mp3info(mp3entry *entry, char *filename) | |||
493 | entry->filesize = getfilesize(fd); | 496 | entry->filesize = getfilesize(fd); |
494 | entry->id3v2len = getid3v2len(fd); | 497 | entry->id3v2len = getid3v2len(fd); |
495 | entry->id3v1len = getid3v1len(fd); | 498 | entry->id3v1len = getid3v1len(fd); |
496 | /* entry->length = getsonglength(fd, entry); */ | 499 | entry->length = getsonglength(fd, entry); |
497 | entry->title = NULL; | 500 | entry->title = NULL; |
498 | 501 | ||
502 | |||
499 | if(HASID3V2(entry)) | 503 | if(HASID3V2(entry)) |
500 | setid3v2title(fd, entry); | 504 | setid3v2title(fd, entry); |
501 | 505 | ||