shithub: riscv

Download patch

ref: 827b20563b1448306dc9cfd7afdef6fd0e32ad35
parent: b622d928912018951b333d6f7e002fa83a71d3cd
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Fri Sep 16 21:13:27 EDT 2011

mothra: fix charset handling and url snarfing

--- a/sys/src/cmd/mothra/mothra.c
+++ b/sys/src/cmd/mothra/mothra.c
@@ -743,7 +743,7 @@
 
 int urlopen(Url *url, int method, char *body){
 	int conn, ctlfd, fd, n;
-	char buf[1024+1];
+	char buf[1024+1], *p;
 
 	if(debug) fprint(2, "urlopen %s (%s)\n", url->reltext, url->basename); 
 
@@ -794,6 +794,15 @@
 
 	snprint(buf, sizeof buf, "%s/%d", mtpt, conn);
 	readstr(buf, sizeof buf, buf, "contenttype");
+	url->charset[0] = 0;
+	if(p = cistrstr(buf, "charset=")){
+		p += 8;
+		strncpy(url->charset, p, sizeof(url->charset));
+		if(p = strchr(url->charset, ';'))
+			*p = 0;
+	}
+	if(p = strchr(buf, ';'))
+		*p = 0;
 	url->type = content2type(buf, url->fullname);
 
 	close(ctlfd);
@@ -977,7 +986,7 @@
 	int fd;
 	fd=create("/dev/snarf", OWRITE, 0666);
 	if(fd>=0){
-		fprint(fd, "%s", selection->fullname);
+		fprint(fd, "%s", selection->fullname[0] ? selection->fullname : selection->reltext);
 		close(fd);
 	}
 }