shithub: castor9

Download patch

ref: 2be78fb328da9e2e6714d73c9b0c90e6751aaa80
parent: 877421a1d364851d0a58e5e57b6e13b059db9e5d
author: Julien Blanchard <julien@typed-hole.org>
date: Sun Dec 27 10:43:22 EST 2020

Handle inputs

--- a/README.md
+++ b/README.md
@@ -21,6 +21,5 @@
 
 ## To Do:
 
-- input type
 - TOFU
 - client certificates
--- a/castor.c
+++ b/castor.c
@@ -41,6 +41,7 @@
 
 int request(Url *u);
 void gemini_get(Url *u);
+void gemini_put(Response *r);
 void texthit(Panel *p, int b, Rtext *t);
 void message(char *s, ...);
 
@@ -75,13 +76,14 @@
 
 
 char* 
-replace_char(char* str, char find, char replace){
-    char *current_pos = strchr(str,find);
-    while(current_pos){
-        *current_pos = replace;
-        current_pos = strchr(current_pos,find);
-    }
-    return str;
+replace_char(char* str, char find, char replace)
+{
+	char *current_pos = strchr(str,find);
+	while(current_pos){
+		*current_pos = replace;
+		current_pos = strchr(current_pos,find);
+	}
+	return str;
 }
 
 char*
@@ -389,7 +391,7 @@
 
 	switch(r->status){
 	case 10:
-		message("Input! %s", r->meta);
+		gemini_put(r);
 		break;
 	case 11:
 		message("Sensitive input! %s", r->meta);
@@ -475,6 +477,22 @@
 	//	message("Unknown status code %d!", status);
 	//	break;
 	}
+}
+
+void
+gemini_put(Response *r)
+{
+	char buf[1024];
+	char *url;
+	strncpy(buf, "", sizeof(buf)-1);
+	if(eenter(r->meta, buf, sizeof(buf), mouse) <= 0){
+		message("Castor9");
+		return;
+	}
+	
+	url = smprint("%s?%s", r->url->raw, buf);
+	message("Castor9");
+	gemini_get(urlparse(nil, url));
 }
 
 void