Mercurial > audlegacy-plugins
diff src/xspf/xspf.c @ 1668:4c088a45f839
More code cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 08 Sep 2007 04:22:31 +0300 |
parents | 7c32522b05b8 |
children | e1985da23d28 |
line wrap: on
line diff
--- a/src/xspf/xspf.c Sat Sep 08 03:53:14 2007 +0300 +++ b/src/xspf/xspf.c Sat Sep 08 04:22:31 2007 +0300 @@ -321,6 +321,37 @@ } +static void xspf_add_node( + xmlNodePtr node, TupleValueType type, gboolean isMeta, + const gchar *xspfName, const gchar *strVal, const gint intVal) +{ + gchar tmps[64]; + xmlNodePtr tmp; + + if (isMeta) { + tmp = xmlNewNode(NULL, (xmlChar *) "meta"); + xmlSetProp(tmp, (xmlChar *) "rel", (xmlChar *) xspfName); + } else + tmp = xmlNewNode(NULL, (xmlChar *) xspfName); + + switch (type) { + case TUPLE_STRING: + xmlAddChild(tmp, xmlNewText((xmlChar *) strVal)); + break; + + case TUPLE_INT: + g_snprintf(tmps, sizeof(tmps), "%d", intVal); + xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); + break; + + default: + break; + } + + xmlAddChild(node, tmp); +} + + static void xspf_playlist_save(const gchar *filename, gint pos) { xmlDocPtr doc; @@ -454,7 +485,7 @@ for(node = playlist->entries; node != NULL; node = g_list_next(node)) { PlaylistEntry *entry = PLAYLIST_ENTRY(node->data); xmlNodePtr track, location; - gchar *filename = NULL, tmps[64]; + gchar *filename = NULL; const gchar *scratch = NULL; gint scratchi = 0; @@ -517,59 +548,22 @@ break; } - if (isOK) { - if (xs->isMeta) { - tmp = xmlNewNode(NULL, (xmlChar *) "meta"); - xmlSetProp(tmp, (xmlChar *) "rel", (xmlChar *) xs->xspfName); - } else - tmp = xmlNewNode(NULL, (xmlChar *) xs->xspfName); - - switch (xs->type) { - case TUPLE_STRING: - xmlAddChild(tmp, xmlNewText((xmlChar *) scratch)); - break; - - case TUPLE_INT: - g_snprintf(tmps, sizeof(tmps), "%d", scratchi); - xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); - break; - - default: - break; - } - - xmlAddChild(track, tmp); - } + if (isOK) + xspf_add_node(track, xs->type, xs->isMeta, xs->xspfName, scratch, scratchi); } // mtime: write mtime unconditionally to support staticlist. - tmp = xmlNewNode(NULL, (xmlChar *)"meta"); - xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"mtime"); - g_snprintf(tmps, sizeof(tmps), "%ld", (long) tuple_get_int(entry->tuple, "mtime")); - xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); - xmlAddChild(track, tmp); - + xspf_add_node(track, TUPLE_INT, TRUE, "mtime", NULL, tuple_get_int(entry->tuple, "mtime")); } else { - if (entry->title != NULL && g_utf8_validate(entry->title, -1, NULL)) { - tmp = xmlNewNode(NULL, (xmlChar *)"title"); - xmlAddChild(tmp, xmlNewText((xmlChar *)entry->title)); - xmlAddChild(track, tmp); - } + if (entry->title != NULL && g_utf8_validate(entry->title, -1, NULL)) + xspf_add_node(track, TUPLE_STRING, FALSE, "title", entry->title, 0); - if (entry->length > 0) { - tmp = xmlNewNode(NULL, (xmlChar *)"duration"); - g_snprintf(tmps, sizeof(tmps), "%d", entry->length); - xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); - xmlAddChild(track, tmp); - } + if (entry->length > 0) + xspf_add_node(track, TUPLE_INT, FALSE, "duration", NULL, entry->length); /* add mtime of -1 */ - tmp = xmlNewNode(NULL, (xmlChar *)"meta"); - xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"mtime"); - g_snprintf(tmps, sizeof(tmps), "%ld", -1L); - xmlAddChild(tmp, xmlNewText((xmlChar *) tmps)); - xmlAddChild(track, tmp); + xspf_add_node(track, TUPLE_INT, TRUE, "mtime", NULL, -1); } g_free(filename);