sacc

sacc (saccomys): simple gopher client.
Log | Files | Refs | LICENSE

commit 96fd418befb74178138958e4803b35d2fc06c7a9
parent bbbcf8c9652404e8f9b01ff92e9bbeaf8e3a4bb2
Author: Quentin Rameau <quinq@fifth.space>
Date:   Thu, 22 Jun 2017 14:30:53 +0200

Copy cmdline in main rather than in moldentry

We would lose raw when fetching the item, and the logic of having
connection data inside the parent is preserved

Diffstat:
sacc.c | 31++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/sacc.c b/sacc.c @@ -375,17 +375,15 @@ delve(Item *hole) } Item * -parseurl(const char *URL) +moldentry(char *url) { - Item *hole; - char *p, *url, *host, *port = "gopher", *gopherpath = "1"; + Item *entry; + char *p, *host = url, *port = "gopher", *gopherpath = "1"; int parsed, ipv6; - host = url = xstrdup(URL); - if (p = strstr(url, "://")) { if (strncmp(url, "gopher", p - url)) - die("Protocol not supported: %.*s (%s)", p - url, url, URL); + die("Protocol not supported: %.*s", p - url, url); host = p + 3; } @@ -419,20 +417,19 @@ parseurl(const char *URL) } if (*host == '\0' || *port == '\0' || ipv6) - die("Can't parse url: %s", URL); + die("Can't parse url"); if (gopherpath[0] > '1') - die("Gopher type not supported: %s (%s)", - typedisplay(gopherpath[0]), URL); - + die("Gopher type not supported: %s", + typedisplay(gopherpath[0])); entry = xmalloc(sizeof(Item)); - entry->raw = url; entry->type = gopherpath[0]; entry->username = entry->selector = ++gopherpath; entry->host = host; entry->port = port; entry->entry = entry; + entry->raw = NULL; entry->dir = NULL; return entry; @@ -441,15 +438,19 @@ parseurl(const char *URL) int main(int argc, char *argv[]) { - Item *hole; + Item *entry; + char *url; if (argc != 2) usage(); - hole = parseurl(argv[1]); + url = xstrdup(argv[1]); + + entry = moldentry(url); + delve(entry); - delve(hole); - free(hole); /* TODO free all tree recursively */ + free(entry); /* TODO free all tree recursively */ + free(url); return 0; }