diff options
| author | Nick White <hg@njw.me.uk> | 2011-07-16 12:55:44 +0100 | 
|---|---|---|
| committer | Nick White <hg@njw.me.uk> | 2011-07-16 12:55:44 +0100 | 
| commit | 4c5740f8a747cc886d2b7bd807300818e3be22a9 (patch) | |
| tree | 6fe36344bf4274b3bab7c823b9d5010ff6ba6681 /getgbook.c | |
| parent | 5f2172cc8ca50cea7d09b4a569f958a3015f33e7 (diff) | |
Handle \u0026 as &
Diffstat (limited to 'getgbook.c')
| -rw-r--r-- | getgbook.c | 16 | 
1 files changed, 10 insertions, 6 deletions
| @@ -58,8 +58,7 @@ char *getbookid(char *isbn)  char *getpageurl(char *bookid, char *pg)  {  	char url[URLMAX]; -	int l; -	char *buf, *c, *d, m[80], *pageurl; +	char *buf, *c, *d, m[80], *pageurl, *p;  	snprintf(url, URLMAX, "/books?id=%s&pg=%s&jscmd=click3", bookid, pg); @@ -71,11 +70,16 @@ char *getpageurl(char *bookid, char *pg)  		return NULL;  	if(strncmp(c+strlen(m)+1, "\"src\"", 5) != 0)  		return NULL; -	for(l=0, d=c+strlen(m)+8; *d && *d != '"'; *d++, l++); -	pageurl = malloc(sizeof(char *) * l); -	strncpy(pageurl, c+strlen(m)+8, l); -	pageurl[l] = '\0'; +	pageurl = malloc(sizeof(char *) * URLMAX); +	for(p=pageurl, d=c+strlen(m)+8; *d && *d != '"'; *d++, *p++) { +		if(!strncmp(d, "\\u0026", 6)) { +			*p = '&'; +			d+=5; +		} else +			*p = *d; +	} +	*p = '\0';  	free(buf);  	return pageurl; | 
