it* sacc + cursorline and uri preview Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/sacc-sdk URL:git://git.codevoid.de/sacc-sdk codevoid.de 70 1Log /git/sacc-sdk/log.gph codevoid.de 70 1Files /git/sacc-sdk/files.gph codevoid.de 70 1Refs /git/sacc-sdk/refs.gph codevoid.de 70 1LICENSE /git/sacc-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit bb8924f35719c580e9fa543a4cbea1258f764acf /git/sacc-sdk/commit/bb8924f35719c580e9fa543a4cbea1258f764acf.gph codevoid.de 70 1parent 43803bed9713d10bf08e93ca0a48298be15e9cdf /git/sacc-sdk/commit/43803bed9713d10bf08e93ca0a48298be15e9cdf.gph codevoid.de 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space codevoid.de 70 iDate: Mon, 20 Aug 2018 11:07:48 +0200 Err codevoid.de 70 i Err codevoid.de 70 iDo not use UI functions (uistatus) when output not a term Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M sacc.c | 59 +++++++++++++++++++------------ Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 37 insertions(+), 22 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/sacc.c b/sacc.c /git/sacc-sdk/file/sacc.c.gph codevoid.de 70 it@@ -28,6 +28,19 @@ static int devnullfd; Err codevoid.de 70 i static int parent = 1; Err codevoid.de 70 i static int interactive; Err codevoid.de 70 i Err codevoid.de 70 i+static void (*diag)(char *fmt, ...); Err codevoid.de 70 i+ Err codevoid.de 70 i+void Err codevoid.de 70 i+stddiag(char *fmt, ...) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ va_list arg; Err codevoid.de 70 i+ Err codevoid.de 70 i+ va_start(arg, fmt); Err codevoid.de 70 i+ vfprintf(stderr, fmt, arg); Err codevoid.de 70 i+ va_end(arg); Err codevoid.de 70 i+ fputc('\n', stderr); Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i void Err codevoid.de 70 i die(const char *fmt, ...) Err codevoid.de 70 i { Err codevoid.de 70 it@@ -267,7 +280,7 @@ displaytextitem(Item *item) Err codevoid.de 70 i uicleanup(); Err codevoid.de 70 i switch (pid = fork()) { Err codevoid.de 70 i case -1: Err codevoid.de 70 i- uistatus("Couldn't fork."); Err codevoid.de 70 i+ diag("Couldn't fork."); Err codevoid.de 70 i return; Err codevoid.de 70 i case 0: Err codevoid.de 70 i parent = 0; Err codevoid.de 70 it@@ -353,7 +366,7 @@ molddiritem(char *raw) Err codevoid.de 70 i if (!strcmp(s, ".\r\n") || !strcmp(s, ".\n")) Err codevoid.de 70 i --nitems; Err codevoid.de 70 i if (!nitems) { Err codevoid.de 70 i- uistatus("Couldn't parse dir item"); Err codevoid.de 70 i+ diag("Couldn't parse dir item"); Err codevoid.de 70 i return NULL; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -404,7 +417,7 @@ getrawitem(int sock) Err codevoid.de 70 i *buf = '\0'; Err codevoid.de 70 i Err codevoid.de 70 i if (n < 0) { Err codevoid.de 70 i- uistatus("Can't read socket: %s", strerror(errno)); Err codevoid.de 70 i+ diag("Can't read socket: %s", strerror(errno)); Err codevoid.de 70 i clear(&raw); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -429,7 +442,7 @@ sendselector(int sock, const char *selector) Err codevoid.de 70 i Err codevoid.de 70 i free(msg); Err codevoid.de 70 i if (n == -1) Err codevoid.de 70 i- uistatus("Can't send message: %s", strerror(errno)); Err codevoid.de 70 i+ diag("Can't send message: %s", strerror(errno)); Err codevoid.de 70 i Err codevoid.de 70 i return n; Err codevoid.de 70 i } Err codevoid.de 70 it@@ -446,8 +459,8 @@ connectto(const char *host, const char *port) Err codevoid.de 70 i int sock, r; Err codevoid.de 70 i Err codevoid.de 70 i if (r = getaddrinfo(host, port, &hints, &addrs)) { Err codevoid.de 70 i- uistatus("Can't resolve hostname \"%s\": %s", Err codevoid.de 70 i- host, gai_strerror(r)); Err codevoid.de 70 i+ diag("Can't resolve hostname \"%s\": %s", Err codevoid.de 70 i+ host, gai_strerror(r)); Err codevoid.de 70 i return -1; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -462,12 +475,12 @@ connectto(const char *host, const char *port) Err codevoid.de 70 i break; Err codevoid.de 70 i } Err codevoid.de 70 i if (sock < 0) { Err codevoid.de 70 i- uistatus("Can't open socket: %s", strerror(errno)); Err codevoid.de 70 i+ diag("Can't open socket: %s", strerror(errno)); Err codevoid.de 70 i return -1; Err codevoid.de 70 i } Err codevoid.de 70 i if (r < 0) { Err codevoid.de 70 i- uistatus("Can't connect to: %s:%s: %s", Err codevoid.de 70 i- host, port, strerror(errno)); Err codevoid.de 70 i+ diag("Can't connect to: %s:%s: %s", Err codevoid.de 70 i+ host, port, strerror(errno)); Err codevoid.de 70 i return -1; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -538,8 +551,8 @@ downloaditem(Item *item) Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i if ((dest = open(path, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0) { Err codevoid.de 70 i- uistatus("Can't open destination file %s: %s", Err codevoid.de 70 i- path, strerror(errno)); Err codevoid.de 70 i+ diag("Can't open destination file %s: %s", Err codevoid.de 70 i+ path, strerror(errno)); Err codevoid.de 70 i errno = 0; Err codevoid.de 70 i goto cleanup; Err codevoid.de 70 i } Err codevoid.de 70 it@@ -567,7 +580,7 @@ fetchitem(Item *item) Err codevoid.de 70 i close(sock); Err codevoid.de 70 i Err codevoid.de 70 i if (item->raw && !*item->raw) { Err codevoid.de 70 i- uistatus("Empty response from server"); Err codevoid.de 70 i+ diag("Empty response from server"); Err codevoid.de 70 i clear(&item->raw); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 it@@ -579,7 +592,7 @@ plumb(char *url) Err codevoid.de 70 i { Err codevoid.de 70 i switch (fork()) { Err codevoid.de 70 i case -1: Err codevoid.de 70 i- uistatus("Couldn't fork."); Err codevoid.de 70 i+ diag("Couldn't fork."); Err codevoid.de 70 i return; Err codevoid.de 70 i case 0: Err codevoid.de 70 i parent = 0; Err codevoid.de 70 it@@ -589,7 +602,7 @@ plumb(char *url) Err codevoid.de 70 i _exit(1); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i- uistatus("Plumbed \"%s\"", url); Err codevoid.de 70 i+ diag("Plumbed \"%s\"", url); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i static void Err codevoid.de 70 it@@ -627,8 +640,8 @@ plumbitem(Item *item) Err codevoid.de 70 i Err codevoid.de 70 i if (path && (!tag || strcmp(tag, path))) { Err codevoid.de 70 i if ((dest = open(path, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0) { Err codevoid.de 70 i- uistatus("Can't open destination file %s: %s", Err codevoid.de 70 i- path, strerror(errno)); Err codevoid.de 70 i+ diag("Can't open destination file %s: %s", Err codevoid.de 70 i+ path, strerror(errno)); Err codevoid.de 70 i errno = 0; Err codevoid.de 70 i goto cleanup; Err codevoid.de 70 i } Err codevoid.de 70 it@@ -699,8 +712,7 @@ dig(Item *entry, Item *item) Err codevoid.de 70 i return 0; Err codevoid.de 70 i default: Err codevoid.de 70 i if (t >= '0' && t <= 'Z') { Err codevoid.de 70 i- uistatus("Type %c (%s) not supported", Err codevoid.de 70 i- t, typedisplay(t)); Err codevoid.de 70 i+ diag("Type %c (%s) not supported", t, typedisplay(t)); Err codevoid.de 70 i return 0; Err codevoid.de 70 i } Err codevoid.de 70 i case 'g': Err codevoid.de 70 it@@ -795,8 +807,8 @@ delve(Item *hole) Err codevoid.de 70 i entry = hole; Err codevoid.de 70 i break; Err codevoid.de 70 i case 0: Err codevoid.de 70 i- uistatus("Couldn't get %s:%s/%c%s", hole->host, Err codevoid.de 70 i- hole->port, hole->type, hole->selector); Err codevoid.de 70 i+ diag("Couldn't get %s:%s/%c%s", hole->host, Err codevoid.de 70 i+ hole->port, hole->type, hole->selector); Err codevoid.de 70 i break; Err codevoid.de 70 i case '4': Err codevoid.de 70 i case '5': Err codevoid.de 70 it@@ -933,10 +945,13 @@ main(int argc, char *argv[]) Err codevoid.de 70 i mainurl = xstrdup(argv[1]); Err codevoid.de 70 i Err codevoid.de 70 i mainentry = moldentry(mainurl); Err codevoid.de 70 i- if (interactive) Err codevoid.de 70 i+ if (interactive) { Err codevoid.de 70 i+ diag = uistatus; Err codevoid.de 70 i delve(mainentry); Err codevoid.de 70 i- else Err codevoid.de 70 i+ } else { Err codevoid.de 70 i+ diag = stddiag; Err codevoid.de 70 i printout(mainentry); Err codevoid.de 70 i+ } Err codevoid.de 70 i Err codevoid.de 70 i exit(0); Err codevoid.de 70 i } Err codevoid.de 70 .