summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-10-13 18:15:55 +0200
committercinap_lenrek <cinap_lenrek@centraldogma>2011-10-13 18:15:55 +0200
commita7768bd61fc9cddd7648b672a3150dc0fd8d186d (patch)
tree1a4534c1826bfd51f6a696973e41cea16aab0bb6 /sys
parente02b84087e8151cc221127dc04abfc08132d9093 (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.c49
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");