mothra: handle relative urls in <base> tag
This commit is contained in:
parent
05c11fefe0
commit
a78f5f8a3d
3 changed files with 23 additions and 1 deletions
|
@ -102,5 +102,6 @@ void mkfieldpanel(Rtext *);
|
|||
void geturl(char *, int, int, int);
|
||||
int urlpost(Url*, char*);
|
||||
int urlget(Url*, int);
|
||||
int urlresolve(Url *);
|
||||
char version[];
|
||||
Mouse mouse;
|
||||
|
|
|
@ -734,8 +734,12 @@ void plrdhtml(char *name, int fd, Www *dst){
|
|||
g.spacc++;
|
||||
break;
|
||||
case Tag_base:
|
||||
if(str=pl_getattr(g.attr, "href"))
|
||||
if(str=pl_getattr(g.attr, "href")){
|
||||
seturl(g.dst->url, str, g.dst->url->fullname);
|
||||
nstrcpy(g.dst->url->fullname, str, sizeof(g.dst->url->fullname));
|
||||
/* base should be a full url, but it often isnt so have to resolve */
|
||||
urlresolve(g.dst->url);
|
||||
}
|
||||
break;
|
||||
case Tag_a:
|
||||
if(str=pl_getattr(g.attr, "name"))
|
||||
|
|
|
@ -151,3 +151,20 @@ urlget(Url *url, int body)
|
|||
|
||||
return fd;
|
||||
}
|
||||
|
||||
int
|
||||
urlresolve(Url *url)
|
||||
{
|
||||
char buf[1024];
|
||||
int n, fd;
|
||||
|
||||
if((fd = webclone(url, buf, sizeof(buf))) < 0)
|
||||
return -1;
|
||||
n = strlen(buf);
|
||||
snprint(buf+n, sizeof(buf)-n, "/parsed/url");
|
||||
readstr(buf, url->fullname, sizeof(url->fullname));
|
||||
snprint(buf+n, sizeof(buf)-n, "/parsed/fragment");
|
||||
readstr(buf, url->tag, sizeof(url->tag));
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue