shithub: castor9

Download patch

ref: 6a24e215725d72e1c24d880809f5ea3454d7a6f8
parent: 36ca0d44ee02900ed52ed143c7612341e26555e6
author: Julien Blanchard <julien@typed-hole.org>
date: Thu Jan 21 09:22:18 EST 2021

Remove url->raw and use fmt, remove undescores from names

--- a/castor.c
+++ b/castor.c
@@ -40,8 +40,8 @@
 };
 
 int request(Url *u);
-void gemini_get(Url *u);
-void gemini_put(Response *r);
+void geminiget(Url *u);
+void geminiput(Response *r);
 void texthit(Panel *p, int b, Rtext *t);
 void entryhit(Panel *p, char *t);
 void addbookmark(void);
@@ -86,24 +86,30 @@
 }
 
 Url *
-current_url(void)
+currenturl(void)
 {
 	return hist->c->url;
 }
 
 Url *
-current_base_url(void)
+currentbaseurl(void)
 {
-	return base_url(current_url());
+	return baseurl(currenturl());
 }
 
 char *
-current_host(void)
+currenthost(void)
 {
-	Url *base = current_base_url();
+	Url *base = currentbaseurl();
 	return base->host;
 }
 
+char *
+urlstr(Url *url)
+{
+	return smprint("%U", url);
+}
+
 char*
 cleanup(char *line)
 {
@@ -118,7 +124,7 @@
     }
     *dst = '\0';
 	
-	replace_char(line, '\t', ' ');
+	replacechar(line, '\t', ' ');
 	return line;
 }
 
@@ -127,7 +133,7 @@
 {
 	plinittextview(textp, PACKE|EXPAND, ZP, c->text, texthit);
 	pldraw(textp, screen);
-	plinitentry(entryp, PACKN|FILLX, 0, c->url->raw, entryhit);
+	plinitentry(entryp, PACKN|FILLX, 0, urlstr(c->url), entryhit);
 	pldraw(entryp, screen);
 	resettitle();
 }
@@ -136,16 +142,16 @@
 plumburl(Url *u)
 {
 	int fd;
+	char *msg;
 
 	fd = plumbopen("send", OWRITE|OCEXEC);
 	if(fd<0)
 		return;
 
-	char *msg;
 	if(strcmp(u->scheme, "mailto") == 0){
 		msg = u->path;
 	}else{
-		msg = u->raw;
+		msg = urlstr(u);
 	}
 	plumbsendtext(fd, "castor9", nil, nil, msg);
 	close(fd);
@@ -162,7 +168,7 @@
 	if(fd < 0)
 		sysfatal("dial: %r");
 
-	fprint(fd, "%s\r\n", u->raw);
+	fprint(fd, "%U\r\n", u);
 	
 	switch(rfork(RFFDG|RFPROC|RFMEM|RFREND|RFNOWAIT|RFNOTEG)){
 	case -1:
@@ -210,7 +216,7 @@
 }
 
 void
-parse_status(char *status, Response *r)
+parsestatus(char *status, Response *r)
 {
 	int code;
 	char *meta, *s;
@@ -232,7 +238,7 @@
 }
 
 void
-render_text(Ctx *c, char *line)
+rendertext(Ctx *c, char *line)
 {
 	char *base, *right_margin;
     int length, width;
@@ -241,8 +247,8 @@
     base = strdup(line);
     width = 80;
 
-	char *preformatted_marker = "```";
-	if(strbeg(line, preformatted_marker) == 0){
+	char *preformattedmarker = "```";
+	if(strbeg(line, preformattedmarker) == 0){
 		if(preformatted==0){
 			preformatted=1;
 		}else{
@@ -288,7 +294,7 @@
 }
 
 void
-render_link(Ctx *c, char *line)
+renderlink(Ctx *c, char *line)
 {
 	char *copy = strdup(cleanup(line + 2)); /* bypass => */
 	char *link = strtok(copy, " ");
@@ -348,7 +354,7 @@
 }
 
 void
-gemini_get(Url *url)
+geminiget(Url *url)
 {
 	int fd;
 	char *line;
@@ -373,18 +379,18 @@
 
 	plrtstr(&c->text, 1000000, 0, 0, font, strdup(" "), 0, 0);
 
-	message("loading %s...", url->raw);
+	message("loading %s...", urlstr(url));
 
 	fd = request(url);
-	fprint(fd, "%s\r\n", url->raw);
+	fprint(fd, "%U\r\n", url);
 	Binit(&body, fd, OREAD);
 
 	char *status = Brdstr(&body, '\n', 0);
-	parse_status(status, r);
+	parsestatus(status, r);
 
 	switch(r->status){
 	case 10:
-		gemini_put(r);
+		geminiput(r);
 		break;
 	case 11:
 		message("Sensitive input! %s", r->meta);
@@ -401,9 +407,9 @@
 		}else{
 			while((line = Brdstr(&body, '\n', 0)) != nil){
 				if(strbeg(line, "=>") == 0){
-					render_link(c, line);					
+					renderlink(c, line);					
 				}else{
-					render_text(c, line);
+					rendertext(c, line);
 				}
 				free(line);
 			}
@@ -416,14 +422,13 @@
 			hist = h;
 
 			show(c);
-
 		}
 		break;
 	case 30:
-		gemini_get(urlparse(url, r->meta));
+		geminiget(urlparse(url, r->meta));	
 		break;
 	case 31:
-		gemini_get(urlparse(url, r->meta));
+		geminiget(urlparse(url, r->meta));
 		break;
 	case 40:
 		message("Temporary failure, please try again later!");
@@ -472,7 +477,7 @@
 }
 
 void
-gemini_put(Response *r)
+geminiput(Response *r)
 {
 	char buf[1024];
 	char *url;
@@ -482,8 +487,8 @@
 	if(eenter(r->meta, buf, sizeof(buf), mouse) <= 0)
 		return;
 	
-	url = smprint("%s?%s", r->url->raw, buf);
-	gemini_get(urlparse(nil, url));
+	url = smprint("%U?%s", r->url, buf);
+	geminiget(urlparse(nil, url));
 }
 
 void
@@ -636,7 +641,7 @@
 	message("loading bookmarks...");
 	
 	while((line = Brdstr(bfile, '\n', 0)) != nil){
-		render_link(c, line);
+		renderlink(c, line);
 		free(line);
 	}
 
@@ -655,7 +660,7 @@
 {
 	int fd;
 	fd = createbookmarks();
-	fprint(fd, "=> %s\n", hist->c->url->raw);
+	fprint(fd, "=> %U\n", hist->c->url);
 	close(fd);
 	message("Bookmark added!");
 }
@@ -670,7 +675,7 @@
 	if(strbeg(t, "gemini://") != 0)
 		t = smprint("gemini://%s", t);
 			
-	gemini_get(urlparse(nil, t));
+	geminiget(urlparse(nil, t));
 }
 
 void
@@ -698,19 +703,19 @@
 		/* assuming relative URL */
 		if(strcmp(link, "/") == 0){
 			/* no slash, must be a hostname */
-			n = smprint("gemini://%s", current_host());
+			n = smprint("gemini://%s", currenthost());
 		}else if(*link == '/'){
 			/* start with a slash so use the base host */
-			n = smprint("gemini://%s%s", current_host(), estrdup(link));
+			n = smprint("gemini://%s%s", currenthost(), estrdup(link));
 		}else{
 			/* make an absolute URL of the link */
-			n = smprint("%s%s", urlparse(current_base_url(), link)->raw, estrdup(link));
+			n = urlstr(urlparse(currentbaseurl(), link));
 		}
 		next_url = urlparse(nil, n);
 	}
 
-	if(strbeg(next_url->raw, "gemini://") == 0){
-		gemini_get(next_url);
+	if(strcmp(next_url->scheme, "gemini") == 0){
+		geminiget(next_url);
 	}else{
 		plumburl(next_url);
 	}
@@ -807,12 +812,19 @@
 		url = urlparse(nil, "gemini://gemini.circumlunar.space/capcom/");
 
 	quotefmtinstall();
+	fmtinstall('U', Ufmt);
+	fmtinstall('N', Nfmt);
+	fmtinstall(']', Mfmt);
+	fmtinstall('E', Efmt);
+	fmtinstall('[', encodefmt);
+	fmtinstall('H', encodefmt);
+
 	if(initdraw(nil, nil, "gemini")<0)
 		sysfatal("initdraw: %r");
 	einit(Emouse|Ekeyboard);
 	plinit(screen->depth);
 	mkpanels();
-	gemini_get(url);
+	geminiget(url);
 	eresized(0);
 	for(;;){
 		switch(event(&e)){
--- a/castor.h
+++ b/castor.h
@@ -2,7 +2,6 @@
 
 struct Url
 {
-	char *raw;
 	char *full;
 	char *scheme;
 	char *user;
@@ -29,7 +28,7 @@
 void *emalloc(int n);
 char *estrdup(char *s);
 int strbeg(char* str, char *prefix);
-char *replace_char(char *s, char f, char r);
+char *replacechar(char *s, char f, char r);
 
 /* url.c */
 int	Efmt(Fmt*);
@@ -37,7 +36,7 @@
 int	Mfmt(Fmt*);
 int Ufmt(Fmt *f);
 Url *urlparse(Url *from, char *s);
-Url *base_url(Url *u);
+Url *baseurl(Url *u);
 int matchurl(Url *u, Url *s);
 void freeurl(Url *u);
 char *Upath(Url *u);
\ No newline at end of file
--- a/url.c
+++ b/url.c
@@ -164,6 +164,7 @@
 	if(dir)
 		*d++ = '/';
 	*d = 0;
+
 	return b;
 }
 
@@ -258,8 +259,6 @@
 	s = p = estrdup(s);
 	u = emalloc(sizeof(*u));
 
-	u->raw = estrdup(s);
-
 	for(; *p; p++){
 		if(*p == ':'){
 			if(p == s)
@@ -380,7 +379,7 @@
 }
 
 Url*
-base_url(Url *url)
+baseurl(Url *url)
 {
 	char *base_url, *path, *ptr;
 	
@@ -436,6 +435,5 @@
 	free(u->path);
 	free(u->query);
 	free(u->fragment);
-	free(u->raw);
 	free(u);
 }
--- a/util.c
+++ b/util.c
@@ -34,7 +34,7 @@
 }
 
 char* 
-replace_char(char* str, char find, char replace)
+replacechar(char* str, char find, char replace)
 {
 	char *current_pos = strchr(str,find);
 	while(current_pos){