Migrate to libxspf.
https://github.com/EdSchouten/herrie/commit/fab586018f80d3d6a386256dead60cc0cebbede8
--- configure.orig	2008-10-14 11:20:58.000000000 -0500
+++ configure	2024-01-23 08:05:44.000000000 -0600
@@ -288,7 +288,7 @@
 if [ "$CFG_XSPF" != "" ]
 then
 	CFLAGS="$CFLAGS -DBUILD_XSPF"
-	LDFLAGS="$LDFLAGS -lspiff"
+	test_pkgconfig "libxspf" "xspf" "_vfs_xspf"
 	SRCS="$SRCS util vfs_xspf"
 	PLAYQ_DUMPFILE="autosave.xspf"
 else
--- src/conftest.c.orig	2008-10-14 11:20:58.000000000 -0500
+++ src/conftest.c	2024-01-23 08:10:51.000000000 -0600
@@ -56,9 +56,6 @@
 #include <vorbis/codec.h>
 #include <vorbis/vorbisfile.h>
 #endif /* BUILD_VORBIS */
-#ifdef BUILD_XSPF
-#include <spiff/spiff_c.h>
-#endif /* BUILD_XSPF */
 
 int
 main(int argc, char *argv[])
@@ -67,9 +64,6 @@
 #ifdef BUILD_SNDFILE
 	sf_get_string(NULL, SF_STR_ALBUM);
 #endif /* BUILD_SNDFILE */
-#ifdef BUILD_XSPF
-	spiff_write(NULL, NULL, NULL);
-#endif /* BUILD_XSPF */
 
 	return (0);
 }
--- src/vfs_xspf.c.orig
+++ src/vfs_xspf.c
@@ -30,7 +30,7 @@
 
 #include "stdinc.h"
 
-#include <spiff/spiff_c.h>
+#include <xspf_c.h>
 
 #include "util.h"
 #include "vfs.h"
@@ -50,22 +50,22 @@ vfs_xspf_match(struct vfsent *ve, int isdir)
 int
 vfs_xspf_populate(struct vfsent *ve)
 {
-	struct spiff_list *slist;
-	struct spiff_track *strack;
-	struct spiff_mvalue *sloc;
+	struct xspf_list *slist;
+	struct xspf_track *strack;
+	struct xspf_mvalue *sloc;
 	char *dirname, *baseuri, *filename;
 	struct vfsref *vr;
 
 	baseuri = url_escape(ve->filename);
-	slist = spiff_parse(ve->filename, baseuri);
+	slist = xspf_parse(ve->filename, baseuri);
 	g_free(baseuri);
 	if (slist == NULL)
 		return (-1);
 
 	dirname = g_path_get_dirname(ve->filename);
 
-	SPIFF_LIST_FOREACH_TRACK(slist, strack) {
-		SPIFF_TRACK_FOREACH_LOCATION(strack, sloc) {
+	XSPF_LIST_FOREACH_TRACK(slist, strack) {
+		XSPF_TRACK_FOREACH_LOCATION(strack, sloc) {
 			/* Skip file:// part */
 			filename = url_unescape(sloc->value);
 
@@ -77,40 +77,40 @@ vfs_xspf_populate(struct vfsent *ve)
 	}
 	
 	g_free(dirname);
-	spiff_free(slist);
+	xspf_free(slist);
 	return (0);
 }
 
 int
 vfs_xspf_write(const struct vfslist *vl, const char *filename)
 {
-	struct spiff_list *list;
-	struct spiff_track *track;
-	struct spiff_mvalue *location;
+	struct xspf_list *list;
+	struct xspf_track *track;
+	struct xspf_mvalue *location;
 	char *fn, *baseuri;
 	struct vfsref *vr;
 	int ret;
 
-	list = spiff_new();
+	list = xspf_new();
 
 	VFS_LIST_FOREACH_REVERSE(vl, vr) {
 		/* Add a new track to the beginning of the list */
-		track = spiff_new_track_before(&list->tracks);
+		track = xspf_new_track_before(&list->tracks);
 
 		/* Make sure we don't write non-UTF-8 titles to disk */
 		if (g_utf8_validate(vfs_name(vr), -1, NULL))
-			spiff_setvalue(&track->title, vfs_name(vr));
+			xspf_setvalue(&track->title, vfs_name(vr));
 
-		location = spiff_new_mvalue_before(&track->locations);
+		location = xspf_new_mvalue_before(&track->locations);
 		fn = url_escape(vfs_filename(vr));
-		spiff_setvalue(&location->value, fn);
+		xspf_setvalue(&location->value, fn);
 		g_free(fn);
 	}
 
 	baseuri = url_escape(filename);
-	ret = spiff_write(list, filename, baseuri);
+	ret = xspf_write(list, filename, baseuri);
 	g_free(baseuri);
-	spiff_free(list);
+	xspf_free(list);
 
 	return (ret);
 }
