summaryrefslogtreecommitdiff
path: root/libpiano/xml.c
diff options
context:
space:
mode:
authorLars-Dominik Braun <PromyLOPh@gmail.com>2008-06-14 16:08:35 +0200
committerLars-Dominik Braun <PromyLOPh@gmail.com>2008-06-14 16:08:35 +0200
commite22869ebdd98ecc3f870cb1d6c5c31fd1b5d61ee (patch)
treeb2e54f4e5c95f73fa96f88a624dd358a5477cd0f /libpiano/xml.c
parentb1ea463843add37874f9768b606825504cdc8eb2 (diff)
downloadpianobar-e22869ebdd98ecc3f870cb1d6c5c31fd1b5d61ee.tar.gz
pianobar-e22869ebdd98ecc3f870cb1d6c5c31fd1b5d61ee.tar.bz2
pianobar-e22869ebdd98ecc3f870cb1d6c5c31fd1b5d61ee.zip
Finally implemented "create station"
This may be a bit buggy, because no return values are checked or returned. A big cleanup session is waiting...
Diffstat (limited to 'libpiano/xml.c')
-rw-r--r--libpiano/xml.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/libpiano/xml.c b/libpiano/xml.c
index 6f8cb55..5ac8d97 100644
--- a/libpiano/xml.c
+++ b/libpiano/xml.c
@@ -245,6 +245,34 @@ void PianoXmlParseStations (PianoHandle_t *ph, char *xml) {
xmlFreeDoc (doc);
}
+void PianoXmlParseCreateStation (PianoHandle_t *ph, char *xml) {
+ xmlNode *docRoot;
+ xmlDocPtr doc;
+ PianoStation_t *tmpStation;
+
+ if (PianoXmlInitDoc (xml, &doc, &docRoot) != PIANO_RET_OK) {
+ return;
+ }
+
+ /* get <struct> node */
+ xmlNode *dataRoot = docRoot->children->children->children->children;
+ tmpStation = calloc (1, sizeof (*tmpStation));
+ PianoXmlStructParser (dataRoot, PianoXmlParseStationsCb, tmpStation);
+ /* FIXME: copy & waste */
+ /* start new linked list or append */
+ if (ph->stations == NULL) {
+ ph->stations = tmpStation;
+ } else {
+ PianoStation_t *curStation = ph->stations;
+ while (curStation->next != NULL) {
+ curStation = curStation->next;
+ }
+ curStation->next = tmpStation;
+ }
+
+ xmlFreeDoc (doc);
+}
+
/* parses playlist; used when searching too
* @author PromyLOPh
* @added 2008-06-12