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;