duckduckgo: fix parsing due to HTML change - frontends - front-ends for some sites (experiment) (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 7a1838d494e6bcfef16149a4423022d38356b0bc (DIR) parent 07a5a89d2c8b3dab2fc85ff616e98d34b0edcd21 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 25 Oct 2020 13:34:44 +0100 duckduckgo: fix parsing due to HTML change instead of looking at the prefix uddg= search for the needle, because the prefix was changed to "//duckduckgo.com/l/?uddg=". Diffstat: M duckduckgo/duckduckgo.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) --- (DIR) diff --git a/duckduckgo/duckduckgo.c b/duckduckgo/duckduckgo.c @@ -131,6 +131,8 @@ xmldataentity(XMLParser *x, const char *d, size_t dl) void xmltagend(XMLParser *x, const char *t, size_t tl, int isshort) { + char *p; + if (!isresult) return; @@ -148,9 +150,9 @@ xmltagend(XMLParser *x, const char *t, size_t tl, int isshort) isurl = 0; if (!strcmp(t, "div")) { /* decode url and remove "tracking"/usage part via DDG */ - if (!strncmp(result.url, "uddg=", sizeof("uddg=") - 1)) { - if (decodeparam(result.urldecoded, sizeof(result.urldecoded), - result.url + sizeof("uddg=") - 1) == -1) + if ((p = strstr(result.url, "uddg="))) { + p += sizeof("uddg=") - 1; + if (decodeparam(result.urldecoded, sizeof(result.urldecoded), p) == -1) result.urldecoded[0] = '\0'; }