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); 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 * \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); LinkTable_print(linktbl);
sanitize_LinkTable(linktbl);
return linktbl; return linktbl;
} }
@ -497,5 +521,6 @@ LinkTable *sonic_LinkTable_new_id3(int depth, const char *id)
lprintf(fatal, "case %d.\n", depth); lprintf(fatal, "case %d.\n", depth);
break; break;
} }
return linktbl; return linktbl;
} }