MCPcopy Index your code
hub / github.com/assaultcube/AC / xmlstringenc

Function xmlstringenc

source/src/docs.cpp:275–302  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

273COMMAND(getdoc, "si");
274
275char *xmlstringenc(char *d, const char *s, size_t len)
276{
277 if(!d || !s) return NULL;
278 struct spchar { char c; char repl[8]; } const spchars[] = { {'&', "&amp;"}, {'<', "&lt;"}, {'>', "gt;"}, {'"', "&quot;"}, {'\'', "&apos;"}};
279
280 char *dc = d;
281 const char *sc = s;
282
283 while(*sc && (size_t)(dc - d) < len - 1)
284 {
285 bool specialc = false;
286 loopi(sizeof(spchars)/sizeof(spchar)) if(spchars[i].c == *sc)
287 {
288 specialc = true;
289 size_t rlen = strlen(spchars[i].repl);
290 if(dc - d + rlen <= len - 1)
291 {
292 memcpy(dc, spchars[i].repl, rlen);
293 dc += rlen;
294 break;
295 }
296 }
297 if(!specialc) memcpy(dc++, sc, 1);
298 *dc = 0;
299 sc++;
300 }
301 return d;
302}
303
304void docwriteref(int allidents, const char *ref, const char *schemalocation, const char *transformation)
305{

Callers 1

loopvFunction · 0.85

Calls 1

loopiFunction · 0.70

Tested by

no test coverage detected