Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 261928 | Differences between
and this patch

Collapse All | Expand All

(-)file_not_specified_in_diff (-28 / +22 lines)
Line  Link Here
0
-- configure
0
++ configure
Lines 301-307 fi Link Here
301
if [ "$CFG_XSPF" != "" ]
301
if [ "$CFG_XSPF" != "" ]
302
then
302
then
303
	CFLAGS="$CFLAGS -DBUILD_XSPF"
303
	CFLAGS="$CFLAGS -DBUILD_XSPF"
304
	LDFLAGS="$LDFLAGS -lspiff"
304
	test_pkgconfig "libxspf" "xspf" "_vfs_xspf"
305
	SRCS="$SRCS util vfs_xspf"
305
	SRCS="$SRCS util vfs_xspf"
306
	PLAYQ_DUMPFILE="autosave.xspf"
306
	PLAYQ_DUMPFILE="autosave.xspf"
307
else
307
else
308
-- src/conftest.c
308
++ src/conftest.c
Lines 56-71 Link Here
56
#include <vorbis/codec.h>
56
#include <vorbis/codec.h>
57
#include <vorbis/vorbisfile.h>
57
#include <vorbis/vorbisfile.h>
58
#endif /* BUILD_VORBIS */
58
#endif /* BUILD_VORBIS */
59
#ifdef BUILD_XSPF
60
#include <spiff/spiff_c.h>
61
#endif /* BUILD_XSPF */
62
59
63
int
60
int
64
main(int argc, char *argv[])
61
main(int argc, char *argv[])
65
{
62
{
66
#ifdef BUILD_XSPF
67
	spiff_write(NULL, NULL, NULL);
68
#endif /* BUILD_XSPF */
69
63
70
	return (0);
64
	return (0);
71
}
65
}
72
-- src/vfs_xspf.c
66
++ src/vfs_xspf.c
Lines 30-36 Link Here
30
30
31
#include "stdinc.h"
31
#include "stdinc.h"
32
32
33
#include <spiff/spiff_c.h>
33
#include <xspf_c.h>
34
34
35
#include "util.h"
35
#include "util.h"
36
#include "vfs.h"
36
#include "vfs.h"
Lines 50-71 vfs_xspf_match(struct vfsent *ve, int isdir) Link Here
50
int
50
int
51
vfs_xspf_populate(struct vfsent *ve)
51
vfs_xspf_populate(struct vfsent *ve)
52
{
52
{
53
	struct spiff_list *slist;
53
	struct xspf_list *slist;
54
	struct spiff_track *strack;
54
	struct xspf_track *strack;
55
	struct spiff_mvalue *sloc;
55
	struct xspf_mvalue *sloc;
56
	char *dirname, *baseuri, *filename;
56
	char *dirname, *baseuri, *filename;
57
	struct vfsref *vr;
57
	struct vfsref *vr;
58
58
59
	baseuri = url_escape(ve->filename);
59
	baseuri = url_escape(ve->filename);
60
	slist = spiff_parse(ve->filename, baseuri);
60
	slist = xspf_parse(ve->filename, baseuri);
61
	g_free(baseuri);
61
	g_free(baseuri);
62
	if (slist == NULL)
62
	if (slist == NULL)
63
		return (-1);
63
		return (-1);
64
64
65
	dirname = g_path_get_dirname(ve->filename);
65
	dirname = g_path_get_dirname(ve->filename);
66
66
67
	SPIFF_LIST_FOREACH_TRACK(slist, strack) {
67
	XSPF_LIST_FOREACH_TRACK(slist, strack) {
68
		SPIFF_TRACK_FOREACH_LOCATION(strack, sloc) {
68
		XSPF_TRACK_FOREACH_LOCATION(strack, sloc) {
69
			/* Skip file:// part */
69
			/* Skip file:// part */
70
			filename = url_unescape(sloc->value);
70
			filename = url_unescape(sloc->value);
71
71
Lines 77-116 vfs_xspf_populate(struct vfsent *ve) Link Here
77
	}
77
	}
78
	
78
	
79
	g_free(dirname);
79
	g_free(dirname);
80
	spiff_free(slist);
80
	xspf_free(slist);
81
	return (0);
81
	return (0);
82
}
82
}
83
83
84
int
84
int
85
vfs_xspf_write(const struct vfslist *vl, const char *filename)
85
vfs_xspf_write(const struct vfslist *vl, const char *filename)
86
{
86
{
87
	struct spiff_list *list;
87
	struct xspf_list *list;
88
	struct spiff_track *track;
88
	struct xspf_track *track;
89
	struct spiff_mvalue *location;
89
	struct xspf_mvalue *location;
90
	char *fn, *baseuri;
90
	char *fn, *baseuri;
91
	struct vfsref *vr;
91
	struct vfsref *vr;
92
	int ret;
92
	int ret;
93
93
94
	list = spiff_new();
94
	list = xspf_new();
95
95
96
	VFS_LIST_FOREACH_REVERSE(vl, vr) {
96
	VFS_LIST_FOREACH_REVERSE(vl, vr) {
97
		/* Add a new track to the beginning of the list */
97
		/* Add a new track to the beginning of the list */
98
		track = spiff_new_track_before(&list->tracks);
98
		track = xspf_new_track_before(&list->tracks);
99
99
100
		/* Make sure we don't write non-UTF-8 titles to disk */
100
		/* Make sure we don't write non-UTF-8 titles to disk */
101
		if (g_utf8_validate(vfs_name(vr), -1, NULL))
101
		if (g_utf8_validate(vfs_name(vr), -1, NULL))
102
			spiff_setvalue(&track->title, vfs_name(vr));
102
			xspf_setvalue(&track->title, vfs_name(vr));
103
103
104
		location = spiff_new_mvalue_before(&track->locations);
104
		location = xspf_new_mvalue_before(&track->locations);
105
		fn = url_escape(vfs_filename(vr));
105
		fn = url_escape(vfs_filename(vr));
106
		spiff_setvalue(&location->value, fn);
106
		xspf_setvalue(&location->value, fn);
107
		g_free(fn);
107
		g_free(fn);
108
	}
108
	}
109
109
110
	baseuri = url_escape(filename);
110
	baseuri = url_escape(filename);
111
	ret = spiff_write(list, filename, baseuri);
111
	ret = xspf_write(list, filename, baseuri);
112
	g_free(baseuri);
112
	g_free(baseuri);
113
	spiff_free(list);
113
	xspf_free(list);
114
114
115
	return (ret);
115
	return (ret);
116
}
116
}

Return to bug 261928