X-Git-Url: http://royale.zerezo.com/git/?p=FAPG;a=blobdiff_plain;f=fapg.c;h=bd2b3f0ea2c1d79ee2c29ff3d177621c524e2de8;hp=176c495c31fc058eb9c5494cd3845841cb88221f;hb=refs%2Ftags%2Fv0.43;hpb=02dbbe8a7969f09a693027db1c3739c07dde7d02 diff --git a/fapg.c b/fapg.c index 176c495..bd2b3f0 100644 --- a/fapg.c +++ b/fapg.c @@ -43,7 +43,7 @@ #define MP3_BASE 1024 #define OGG_BASE 1024*10 -#define MAX 1024*200 /* 200ko for ID3 with JPEG images in it */ +#define MAX 1024*250 /* 250ko for ID3 with JPEG images in it */ #define FORMAT_M3U 0 #define FORMAT_PLS 1 @@ -425,7 +425,7 @@ void print_webpath(const char *path) { const char *c = path; - printf(prefix); /* we must not modify this part */ + printf("%s", prefix); /* we must not modify this part */ if(*c == '.' && c[1] == '/') { /* remove leading "./" when parsing current directory */ c += 2; /* maybe there follow many slashes */ @@ -443,7 +443,7 @@ void print_webpath(const char *path) void print_path(const char *path) { const char *c = path; - printf(prefix); + printf("%s", prefix); /* skip leading "./" when parsing current directory */ if(*c == '.' && *(c + 1) == '/') { c += 2; @@ -500,7 +500,6 @@ void reference(const char *title) pipe = popen(command, "r"); if(pipe == NULL) { fprintf(stderr, "Warning >> can't open pipe >%s< !\n", command); - free(command); return; } fgets(buffer, 1020, pipe); @@ -769,6 +768,9 @@ void parse_mp3(unsigned char *file) /* genre=atoi(&genrebuf[1]); */ genre = atoi(c + 12); } + if(strncmp(c, "TLEN", 4) == 0) { + duration = atoi(c + 11) / 1000; + } c += size + 10; } } @@ -862,6 +864,13 @@ void parse_ogg(unsigned char *file) title[size - 6] = '\0'; c += size; } + if(strncasecmp(c, "ALBUM ARTIST=", 13) == 0) { + // ignore tag + size = + *(c - 4) + (*(c - 3) << 8) + (*(c - 2) << 16) + + (*(c - 1) << 24); + c += size; + } if(strncasecmp(c, "ARTIST=", 7) == 0) { size = *(c - 4) + (*(c - 3) << 8) + (*(c - 2) << 16) + @@ -1329,12 +1338,10 @@ void parse_file(unsigned char *newpath, unsigned char * original_path) counter++; switch (format) { case FORMAT_M3U: - if(duration != -1) { - printf("#EXTINF:%d,", duration); - if(strlen(artist) != 0) - printf("%s - ", artist); - printf("%s%s", title, eol); - } + printf("#EXTINF:%d,", duration); + if(strlen(artist) != 0) + printf("%s - ", artist); + printf("%s%s", title, eol); print_path(newpath); printf("%s", eol); break;