This commit is contained in:
hummypkg 2013-03-13 21:41:06 +00:00 committed by HummyPkg
parent c31dc7166f
commit cba368128d
1 changed files with 28 additions and 6 deletions

34
main.c
View File

@ -188,6 +188,25 @@ sql_escape_len(unsigned int len, char *txt)
return buf;
}
static char *
json_escape_len(unsigned int len, char *txt)
{
static char buf[0x1000];
char *p;
unsigned int i;
p = buf;
for (i = 0; i < len && *txt; i++)
{
if (*txt == '"')
*p++ = '\\';
*p++ = *txt++;
}
*p = '\0';
return buf;
}
#ifdef HAVE_SQLITE3
#define EXEC(xx) if (sqlite3_exec(db, xx, NULL, NULL, &error) != SQLITE_OK) \
@ -376,18 +395,21 @@ json(struct epg *epg __attribute__((unused)),
DECOMPRESS(d->content.d77.name, d->content.d77.namelen);
DECOMPRESS(d->content.d77.text, d->content.d77.textlen);
printf(",\n \"name\": \"%.*s\"",
d->content.d77.namelen, d->content.d77.name);
printf(",\n \"text\": \"%.*s\"",
d->content.d77.textlen, d->content.d77.text);
printf(",\n \"name\": \"%s\"",
json_escape_len(d->content.d77.namelen,
d->content.d77.name));
printf(",\n \"text\": \"%s\"",
json_escape_len(d->content.d77.textlen,
d->content.d77.text));
}
if (ds[PARSER_USER_DEFINED])
{
struct descriptor *d = ds[PARSER_USER_DEFINED];
DECOMPRESS(d->content.d137.warning, d->content.d137.warninglen);
printf(",\n \"warning\": \"%.*s\"",
d->content.d137.warninglen, d->content.d137.warning);
printf(",\n \"warning\": \"%s\"",
json_escape_len(d->content.d137.warninglen,
d->content.d137.warning));
}
if (ds[PARSER_CONTENT])
{