diff options
-rw-r--r-- | apps/metadata/mod.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/apps/metadata/mod.c b/apps/metadata/mod.c index cbc9fc11f6..de76823e91 100644 --- a/apps/metadata/mod.c +++ b/apps/metadata/mod.c | |||
@@ -35,17 +35,20 @@ | |||
35 | bool get_mod_metadata(int fd, struct mp3entry* id3) | 35 | bool get_mod_metadata(int fd, struct mp3entry* id3) |
36 | { | 36 | { |
37 | /* Use the trackname part of the id3 structure as a temporary buffer */ | 37 | /* Use the trackname part of the id3 structure as a temporary buffer */ |
38 | unsigned char buf[MODULEHEADERSIZE]; | 38 | unsigned char *buf = id3->id3v2buf; |
39 | unsigned char id[4]; | 39 | unsigned char id[4]; |
40 | bool is_mod_file = false; | 40 | bool is_mod_file = false; |
41 | char *p; | ||
42 | 41 | ||
43 | if ((lseek(fd, 0, SEEK_SET) < 0) | 42 | /* Seek to file begin */ |
44 | || (read(fd, buf, sizeof(buf)) < MODULEHEADERSIZE)) | 43 | if (lseek(fd, 0, SEEK_SET) < 0) |
45 | { | ||
46 | return false; | 44 | return false; |
47 | } | 45 | /* Use id3v2buf as buffer for the track name */ |
48 | 46 | if (read(fd, buf, sizeof(id3->id3v2buf)) < (ssize_t)sizeof(id3->id3v2buf)) | |
47 | return false; | ||
48 | /* Seek to MOD ID position */ | ||
49 | if (lseek(fd, MODULEHEADERSIZE, SEEK_SET) < 0) | ||
50 | return false; | ||
51 | /* Read MOD ID */ | ||
49 | if (read(fd, id, sizeof(id)) < (ssize_t)sizeof(id)) | 52 | if (read(fd, id, sizeof(id)) < (ssize_t)sizeof(id)) |
50 | return false; | 53 | return false; |
51 | 54 | ||
@@ -88,14 +91,7 @@ bool get_mod_metadata(int fd, struct mp3entry* id3) | |||
88 | if (!is_mod_file) | 91 | if (!is_mod_file) |
89 | return false; | 92 | return false; |
90 | 93 | ||
91 | p = id3->id3v2buf; | 94 | id3->title = id3->id3v2buf; /* Point title to previous read ID3 buffer. */ |
92 | |||
93 | /* Copy Title */ | ||
94 | if (strlcpy(p, buf, sizeof(id3->id3v2buf)) >= sizeof(id3->id3v2buf)) | ||
95 | return false; | ||
96 | |||
97 | id3->title = p; | ||
98 | |||
99 | id3->bitrate = filesize(fd)/1024; /* size in kb */ | 95 | id3->bitrate = filesize(fd)/1024; /* size in kb */ |
100 | id3->frequency = 44100; | 96 | id3->frequency = 44100; |
101 | id3->length = 120*1000; | 97 | id3->length = 120*1000; |