Fix IO error with funkwhale subsonic API

This commit is contained in:
Romain de Laage 2022-09-23 07:49:36 +02:00
parent 61d3ae4166
commit abef0c9406
Signed by: rdelaage
GPG Key ID: 534845FADDF0C329
1 changed files with 25 additions and 0 deletions

View File

@ -319,6 +319,28 @@ XML_parser_general(void *data, const char *elem, const char **attr)
LinkTable_add(linktbl, link);
}
static void sanitize_LinkTable(LinkTable *linktbl) {
for (int i = 0; i < linktbl->num; i++) {
if (strcmp(linktbl->links[i]->linkname, ".") == 0) {
strcpy(linktbl->links[i]->linkname, "dot");
}
if (strcmp(linktbl->links[i]->linkname, "/") == 0) {
strcpy(linktbl->links[i]->linkname, "slash");
}
for (size_t j = 0; j < strlen(linktbl->links[i]->linkname); j++) {
if (linktbl->links[i]->linkname[j] == '/') {
linktbl->links[i]->linkname[j] = '-';
}
}
if (linktbl->links[i]->next_table != NULL) {
sanitize_LinkTable(linktbl->links[i]->next_table);
}
}
}
/**
* \brief parse a XML string in order to fill in the LinkTable
*/
@ -355,6 +377,8 @@ static LinkTable *sonic_url_to_LinkTable(const char *url,
LinkTable_print(linktbl);
sanitize_LinkTable(linktbl);
return linktbl;
}
@ -497,5 +521,6 @@ LinkTable *sonic_LinkTable_new_id3(int depth, const char *id)
lprintf(fatal, "case %d.\n", depth);
break;
}
return linktbl;
}