diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml
index d4dddbcdf..df53cb0e8 100644
--- a/parser/output/raylib_api.xml
+++ b/parser/output/raylib_api.xml
@@ -2988,7 +2988,7 @@
-
+
@@ -2996,7 +2996,7 @@
-
+
diff --git a/parser/raylib_parser.c b/parser/raylib_parser.c
index 9b8fd8b13..435b5c008 100644
--- a/parser/raylib_parser.c
+++ b/parser/raylib_parser.c
@@ -1464,6 +1464,20 @@ static char *TextReplace(char *text, const char *replace, const char *by)
}
*/
+static void PrintXMLEscaped(FILE *outFile, const char *string)
+{
+ for (int i = 0; string[i] != '\0'; ++i)
+ {
+ switch (string[i])
+ {
+ case '<': fputs("<", outFile); break;
+ case '>': fputs(">", outFile); break;
+ case '&': fputs("&", outFile); break;
+ default: fputc(string[i], outFile); break;
+ }
+ }
+}
+
// Export parsed data in desired format
static void ExportParsedData(const char *fileName, int format)
{
@@ -1761,7 +1775,9 @@ static void ExportParsedData(const char *fileName, int format)
{
fprintf(outFile, "value=\"%s\"", defines[i].value);
}
- fprintf(outFile, " desc=\"%s\" />\n", defines[i].desc);
+ fprintf(outFile, " desc=\"");
+ PrintXMLEscaped(outFile, defines[i].desc);
+ fprintf(outFile, "\" />\n");
}
fprintf(outFile, " \n");
@@ -1769,10 +1785,14 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " \n", structCount);
for (int i = 0; i < structCount; i++)
{
- fprintf(outFile, " \n", structs[i].name, structs[i].fieldCount, structs[i].desc);
+ fprintf(outFile, " \n");
for (int f = 0; f < structs[i].fieldCount; f++)
{
- fprintf(outFile, " \n", structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]);
+ fprintf(outFile, " \n");
}
fprintf(outFile, " \n");
}
@@ -1782,7 +1802,9 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " \n", aliasCount);
for (int i = 0; i < aliasCount; i++)
{
- fprintf(outFile, " \n", aliases[i].name, aliases[i].type, aliases[i].desc);
+ fprintf(outFile, " \n");
}
fprintf(outFile, " \n");
@@ -1790,10 +1812,14 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " \n", enumCount);
for (int i = 0; i < enumCount; i++)
{
- fprintf(outFile, " \n", enums[i].name, enums[i].valueCount, enums[i].desc);
+ fprintf(outFile, " \n");
for (int v = 0; v < enums[i].valueCount; v++)
{
- fprintf(outFile, " \n", enums[i].valueName[v], enums[i].valueInteger[v], enums[i].valueDesc[v]);
+ fprintf(outFile, " \n");
}
fprintf(outFile, " \n");
}
@@ -1803,10 +1829,14 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " \n", callbackCount);
for (int i = 0; i < callbackCount; i++)
{
- fprintf(outFile, " \n", callbacks[i].name, callbacks[i].retType, callbacks[i].paramCount, callbacks[i].desc);
+ fprintf(outFile, " \n");
for (int p = 0; p < callbacks[i].paramCount; p++)
{
- fprintf(outFile, " \n", callbacks[i].paramType[p], callbacks[i].paramName[p], callbacks[i].paramDesc[p]);
+ fprintf(outFile, " \n");
}
fprintf(outFile, " \n");
}
@@ -1816,10 +1846,14 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " \n", funcCount);
for (int i = 0; i < funcCount; i++)
{
- fprintf(outFile, " \n", funcs[i].name, funcs[i].retType, funcs[i].paramCount, funcs[i].desc);
+ fprintf(outFile, " \n");
for (int p = 0; p < funcs[i].paramCount; p++)
{
- fprintf(outFile, " \n", funcs[i].paramType[p], funcs[i].paramName[p], funcs[i].paramDesc[p]);
+ fprintf(outFile, " \n");
}
fprintf(outFile, " \n");
}