diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-13 18:15:55 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-13 18:15:55 +0200 |
commit | a7768bd61fc9cddd7648b672a3150dc0fd8d186d (patch) | |
tree | 1a4534c1826bfd51f6a696973e41cea16aab0bb6 /sys | |
parent | e02b84087e8151cc221127dc04abfc08132d9093 (diff) |
mothra: have to jump to fragment link after page is rendered to get correct yoff
Diffstat (limited to 'sys')
-rw-r--r-- | sys/src/cmd/mothra/mothra.c | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/sys/src/cmd/mothra/mothra.c b/sys/src/cmd/mothra/mothra.c index 41bac5e5d..b83d407a7 100644 --- a/sys/src/cmd/mothra/mothra.c +++ b/sys/src/cmd/mothra/mothra.c @@ -248,6 +248,8 @@ void donecurs(void){ esetcursor(current->alldone ? 0 : &readingcurs); } +void scrollto(char *tag); + void main(int argc, char *argv[]){ Event e; enum { Eplumb = 128 }; @@ -333,6 +335,8 @@ void main(int argc, char *argv[]){ if(mouse.buttons==0 && current){ if(current->finished){ updtext(current); + if(current->url->tag[0]) + scrollto(current->url->tag); current->finished=0; current->changed=0; current->alldone=1; @@ -766,10 +770,6 @@ void gettext(Www *w, int fd, int type){ switch(rfork(RFFDG|RFPROC|RFNOWAIT|RFMEM)){ case -1: message("Can't fork, please wait"); - if(type==HTML) - plrdhtml(w->url->fullname, fd, w); - else - plrdplain(w->url->fullname, fd, w); break; case 0: if(type==HTML) @@ -801,27 +801,6 @@ void freetext(Rtext *t){ plrtfree(tt); } -int readstr(char *buf, int nbuf, char *base, char *name) -{ - char path[128]; - int n, fd; - - snprint(path, sizeof path, "%s/%s", base, name); - if((fd = open(path, OREAD)) < 0){ - ErrOut: - memset(buf, 0, nbuf); - return 0; - } - n = read(fd, buf, nbuf-1); - close(fd); - if(n <= 0){ - close(fd); - goto ErrOut; - } - buf[n] = 0; - return n; -} - int fileurlopen(Url *url){ char *rel, *base, *x; int fd; @@ -856,6 +835,21 @@ int fileurlopen(Url *url){ return fd; } +int readstr(char *buf, int nbuf, char *base, char *name){ + char path[128]; + int n, fd; + + n = 0; + snprint(path, sizeof path, "%s/%s", base, name); + if((fd = open(path, OREAD)) >= 0){ + if((n = read(fd, buf, nbuf-1)) < 0) + n = 0; + close(fd); + } + buf[n] = 0; + return n; +} + int urlopen(Url *url, int method, char *body){ int conn, ctlfd, fd, n; char buf[1024+1], *p; @@ -865,7 +859,6 @@ int urlopen(Url *url, int method, char *body){ if(method == GET) if((fd = fileurlopen(url)) >= 0) return fd; - snprint(buf, sizeof buf, "%s/clone", mtpt); if((ctlfd = open(buf, ORDWR)) < 0) return -1; @@ -875,7 +868,6 @@ int urlopen(Url *url, int method, char *body){ } buf[n] = 0; conn = atoi(buf); - if(url->basename[0]){ n = snprint(buf, sizeof buf, "baseurl %s", url->basename); write(ctlfd, buf, n); @@ -886,7 +878,6 @@ int urlopen(Url *url, int method, char *body){ close(ctlfd); return -1; } - if(method == POST && body){ snprint(buf, sizeof buf, "%s/%d/postbody", mtpt, conn); if((fd = open(buf, OWRITE)) < 0) @@ -898,11 +889,9 @@ int urlopen(Url *url, int method, char *body){ } close(fd); } - snprint(buf, sizeof buf, "%s/%d/body", mtpt, conn); if((fd = open(buf, OREAD)) < 0) goto ErrOut; - snprint(buf, sizeof buf, "%s/%d/parsed", mtpt, conn); readstr(url->fullname, sizeof(url->fullname), buf, "url"); readstr(url->tag, sizeof(url->tag), buf, "fragment"); |