#include #include #include #include #include #include "system.h" #include "metadata.h" #include "metadata_common.h" #include "metadata_parsers.h" #include "rbunicode.h" bool get_nsf_metadata(int fd, struct mp3entry* id3) { /* Use the trackname part of the id3 structure as a temporary buffer */ unsigned char* buf = (unsigned char *)id3->path; int read_bytes; char *p; if ((lseek(fd, 0, SEEK_SET) < 0) || ((read_bytes = read(fd, buf, 110)) < 110)) { return false; } id3->length = 120*1000; id3->vbr = false; id3->filesize = filesize(fd); if (memcmp(buf,"NSFE",4) == 0) /* only NESM contain metadata */ { return true; } else { if (memcmp(buf, "NESM",4) != 0) /* not a valid format*/ { return false; } } p = id3->id3v2buf; /* Title */ memcpy(p, &buf[14], 32); id3->title = p; p += strlen(p)+1; /* Artist */ memcpy(p, &buf[46], 32); id3->artist = p; p += strlen(p)+1; /* Copyright (per codec) */ memcpy(p, &buf[78], 32); id3->album = p; p += strlen(p)+1; return true; }