df-xmldecode-patch #1
2
Makefile
2
Makefile
@ -9,7 +9,7 @@ HDRS=
|
||||
OBJS= $(SRCS:.c=.o)
|
||||
CC=gcc
|
||||
#CC=mipsel-linux-gcc
|
||||
CFLAGS=-g
|
||||
CFLAGS=-g -std=c99 -D_XOPEN_SOURCE=700
|
||||
INCS=
|
||||
LIBS=-lsqlite3
|
||||
WARN=-pedantic -Wall -W -Wnested-externs -Wpointer-arith -Wno-long-long
|
||||
|
28
tvdb.c
28
tvdb.c
@ -51,23 +51,31 @@ unescape(char *txt)
|
||||
char *p = txt;
|
||||
int l = strlen(txt);
|
||||
|
||||
while ((p = strchr(p, '&')))
|
||||
for (; (p = strchr(p, '&')); p++)
|
||||
{
|
||||
HANDLE(""", '"', 5);
|
||||
HANDLE("&", '&', 4);
|
||||
HANDLE("
", '\n', 4);
|
||||
HANDLE("
", '\r', 4);
|
||||
p++;
|
||||
int ll = 0;
|
||||
unsigned char icode;
|
||||
/* sscanf -> 1: the code was read; ll>0: ';' came next */
|
||||
if ((1 == sscanf( p, "&#%hhu;%n", &icode, &ll) ||
|
||||
1 == sscanf( p, "&#%*[xX]%hhx;%n", &icode, &ll)) &&
|
||||
ll > 0) {
|
||||
af123 marked this conversation as resolved
|
||||
/* &#x<hex>;, &#<decimal>; */
|
||||
HANDLE(p, (char)icode, ll-1);
|
||||
} else {
|
||||
HANDLE("&", '&', 4);
|
||||
HANDLE(""", '"', 5);
|
||||
HANDLE("'", '\'', 5);
|
||||
HANDLE("<", '<', 3);
|
||||
HANDLE(">", '>', 3);
|
||||
}
|
||||
}
|
||||
|
||||
p = txt;
|
||||
while ((p = memchr(p, '\xe2', l - (p - txt))))
|
||||
{
|
||||
for (p = txt; (p = memchr(p, '\xe2', l - (p - txt))); p++)
|
||||
{ /* curly apostrophe, en dash, curly quotes */
|
||||
HANDLE("\xe2\x80\x99", '\'', 2);
|
||||
HANDLE("\xe2\x80\x93", '-', 2);
|
||||
HANDLE("\xe2\x80\x9c", '"', 2);
|
||||
HANDLE("\xe2\x80\x9d", '"', 2);
|
||||
p++;
|
||||
}
|
||||
|
||||
if ((p = strpbrk(txt, "\n\r")))
|
||||
|
Loading…
Reference in New Issue
Block a user
sscanf()
will return 2 if two input items were converted, won't it?