Mercurial > hg > xmms-sid
diff src/xs_sidplayfp.cpp @ 954:a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
specific about what is accepted for the said backend.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 20 Nov 2012 21:27:26 +0200 |
parents | 8f1027a6b4a0 |
children | 0e60e5d56fdd |
line wrap: on
line diff
--- a/src/xs_sidplayfp.cpp Tue Nov 20 21:26:25 2012 +0200 +++ b/src/xs_sidplayfp.cpp Tue Nov 20 21:27:26 2012 +0200 @@ -116,14 +116,18 @@ */ gboolean xs_sidplayfp_probe(XSFile *f) { - gchar tmpBuf[5]; - - if (!f) return FALSE; - - if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4) + gchar probe[16]; + + if (f == NULL || !xs_fread_str(f, (guint8 *) probe, sizeof(probe))) return FALSE; - - if (!strncmp(tmpBuf, "PSID", 4) || !strncmp(tmpBuf, "RSID", 4)) + + // Basically support all variants .. + if (!strncmp(probe, "PSID", 4) && probe[4] == 0 && + probe[5] >= 1 && probe[5] <= 3) + return TRUE; + else + if (!strncmp(probe, "RSID", 4) && + probe[4] == 0 && probe[5] >= 2 && probe[5] <= 3) return TRUE; else return FALSE;