itdistinguish reserved and undefined types, support plumbing for undefined types - sacc - sacc(omys), simple console gopher client (mirror) Err parazyd.org 70 hgit clone https://git.parazyd.org/sacc URL:https://git.parazyd.org/sacc parazyd.org 70 1Log /git/sacc/log.gph parazyd.org 70 1Files /git/sacc/files.gph parazyd.org 70 1Refs /git/sacc/refs.gph parazyd.org 70 1LICENSE /git/sacc/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit 9ac96c9c33647dba0753904cff89e4aab877c711 /git/sacc/commit/9ac96c9c33647dba0753904cff89e4aab877c711.gph parazyd.org 70 1parent cee3b87b38eea7f84005bd95883b0e76c414119f /git/sacc/commit/cee3b87b38eea7f84005bd95883b0e76c414119f.gph parazyd.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org parazyd.org 70 iDate: Sat, 11 Aug 2018 15:36:31 +0200 Err parazyd.org 70 i Err parazyd.org 70 idistinguish reserved and undefined types, support plumbing for undefined types Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M sacc.c | 33 +++++++++++++++++++------------ Err parazyd.org 70 i Err parazyd.org 70 i1 file changed, 20 insertions(+), 13 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/sacc.c b/sacc.c /git/sacc/file/sacc.c.gph parazyd.org 70 it@@ -230,10 +230,12 @@ typedisplay(char t) Err parazyd.org 70 i return "HTML+"; Err parazyd.org 70 i case 'i': Err parazyd.org 70 i return " |"; Err parazyd.org 70 i- case 's': Err parazyd.org 70 i- return "Snd |"; Err parazyd.org 70 i default: Err parazyd.org 70 i- return "! |"; Err parazyd.org 70 i+ /* "Characters '0' through 'Z' are reserved." (ASCII) */ Err parazyd.org 70 i+ if (t >= '0' && t <= 'Z') Err parazyd.org 70 i+ return "! |"; Err parazyd.org 70 i+ else Err parazyd.org 70 i+ return "UNKN|"; Err parazyd.org 70 i } Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 it@@ -647,13 +649,15 @@ static int Err parazyd.org 70 i dig(Item *entry, Item *item) Err parazyd.org 70 i { Err parazyd.org 70 i char *plumburi = NULL; Err parazyd.org 70 i+ int t; Err parazyd.org 70 i Err parazyd.org 70 i if (item->raw) /* already in cache */ Err parazyd.org 70 i return item->type; Err parazyd.org 70 i if (!item->entry) Err parazyd.org 70 i item->entry = entry ? entry : item; Err parazyd.org 70 i Err parazyd.org 70 i- switch (item->redtype ? item->redtype : item->type) { Err parazyd.org 70 i+ t = item->redtype ? item->redtype : item->type; Err parazyd.org 70 i+ switch (t) { Err parazyd.org 70 i case 'h': /* fallthrough */ Err parazyd.org 70 i if (!strncmp(item->selector, "URL:", 4)) { Err parazyd.org 70 i plumb(item->selector+4); Err parazyd.org 70 it@@ -681,10 +685,6 @@ dig(Item *entry, Item *item) Err parazyd.org 70 i plumb(plumburi); Err parazyd.org 70 i free(plumburi); Err parazyd.org 70 i return 0; Err parazyd.org 70 i- case 'g': Err parazyd.org 70 i- case 'I': Err parazyd.org 70 i- plumbitem(item); Err parazyd.org 70 i- return 0; Err parazyd.org 70 i case 'T': Err parazyd.org 70 i if (asprintf(&plumburi, "tn3270://%s@%s:%s", item->selector, Err parazyd.org 70 i item->host, item->port) < 0) Err parazyd.org 70 it@@ -692,9 +692,14 @@ dig(Item *entry, Item *item) Err parazyd.org 70 i plumb(plumburi); Err parazyd.org 70 i free(plumburi); Err parazyd.org 70 i return 0; Err parazyd.org 70 i+ case 'g': Err parazyd.org 70 i+ case 'I': Err parazyd.org 70 i default: Err parazyd.org 70 i- uistatus("Type %c (%s) not supported", Err parazyd.org 70 i- item->type, typedisplay(item->type)); Err parazyd.org 70 i+ if (t >= '0' && t <= 'Z') Err parazyd.org 70 i+ uistatus("Type %c (%s) not supported", Err parazyd.org 70 i+ item->type, typedisplay(item->type)); Err parazyd.org 70 i+ else Err parazyd.org 70 i+ plumbitem(item); Err parazyd.org 70 i return 0; Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 it@@ -783,6 +788,10 @@ delve(Item *hole) Err parazyd.org 70 i if (searchitem(entry, hole)) Err parazyd.org 70 i entry = hole; Err parazyd.org 70 i break; Err parazyd.org 70 i+ case 0: Err parazyd.org 70 i+ uistatus("Couldn't get %s:%s/%c%s", hole->host, Err parazyd.org 70 i+ hole->port, hole->type, hole->selector); Err parazyd.org 70 i+ break; Err parazyd.org 70 i case '4': Err parazyd.org 70 i case '5': Err parazyd.org 70 i case '6': /* TODO decode? */ Err parazyd.org 70 it@@ -791,11 +800,9 @@ delve(Item *hole) Err parazyd.org 70 i case 'g': Err parazyd.org 70 i case 'I': Err parazyd.org 70 i case 'T': Err parazyd.org 70 i+ default: Err parazyd.org 70 i dig(entry, hole); Err parazyd.org 70 i break; Err parazyd.org 70 i- case 0: Err parazyd.org 70 i- uistatus("Couldn't get %s:%s/%c%s", hole->host, Err parazyd.org 70 i- hole->port, hole->type, hole->selector); Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i if (!entry) Err parazyd.org 70 .