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 711ff51a2e198b5471b9f372127119530f6bef70 /git/sacc-sdk/commit/711ff51a2e198b5471b9f372127119530f6bef70.gph codevoid.de 70 1parent 3e0b5be80fdfac3c1ef3ed2e9df4bdbdea5e0091 /git/sacc-sdk/commit/3e0b5be80fdfac3c1ef3ed2e9df4bdbdea5e0091.gph codevoid.de 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space codevoid.de 70 iDate: Sun, 25 Mar 2018 19:55:32 +0200 Err codevoid.de 70 i Err codevoid.de 70 iAdd proper support for RedType '+' items. Err codevoid.de 70 i Err codevoid.de 70 iThanks to tomasino for the suggestion. Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M common.h | 1 + Err codevoid.de 70 i M sacc.c | 26 +++++++++++++++++--------- Err codevoid.de 70 i Err codevoid.de 70 i2 files changed, 18 insertions(+), 9 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/common.h b/common.h /git/sacc-sdk/file/common.h.gph codevoid.de 70 it@@ -5,6 +5,7 @@ typedef struct dir Dir; Err codevoid.de 70 i Err codevoid.de 70 i struct item { Err codevoid.de 70 i char type; Err codevoid.de 70 i+ char redtype; Err codevoid.de 70 i char *username; Err codevoid.de 70 i char *selector; Err codevoid.de 70 i char *host; Err codevoid.de 70 1diff --git a/sacc.c b/sacc.c /git/sacc-sdk/file/sacc.c.gph codevoid.de 70 it@@ -315,10 +315,10 @@ molditem(Item *item, char **raw) Err codevoid.de 70 i static Dir * Err codevoid.de 70 i molddiritem(char *raw) Err codevoid.de 70 i { Err codevoid.de 70 i- Item *items = NULL; Err codevoid.de 70 i+ Item *item, *items = NULL; Err codevoid.de 70 i char *s, *nl, *p; Err codevoid.de 70 i Dir *dir; Err codevoid.de 70 i- size_t i, nitems; Err codevoid.de 70 i+ size_t i, n, nitems; Err codevoid.de 70 i Err codevoid.de 70 i for (s = nl = raw, nitems = 0; p = strchr(nl, '\n'); ++nitems) { Err codevoid.de 70 i s = nl; Err codevoid.de 70 it@@ -335,8 +335,18 @@ molddiritem(char *raw) Err codevoid.de 70 i items = xreallocarray(items, nitems, sizeof(Item)); Err codevoid.de 70 i memset(items, 0, nitems * sizeof(Item)); Err codevoid.de 70 i Err codevoid.de 70 i- for (i = 0; i < nitems; ++i) Err codevoid.de 70 i- molditem(&items[i], &raw); Err codevoid.de 70 i+ for (i = 0; i < nitems; ++i) { Err codevoid.de 70 i+ item = &items[i]; Err codevoid.de 70 i+ molditem(item, &raw); Err codevoid.de 70 i+ if (item->type == '+') { Err codevoid.de 70 i+ for (n = i - 1; n < (size_t)-1; --n) { Err codevoid.de 70 i+ if (items[n].type != '+') { Err codevoid.de 70 i+ item->redtype = items[n].type; Err codevoid.de 70 i+ break; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } Err codevoid.de 70 i Err codevoid.de 70 i dir->items = items; Err codevoid.de 70 i dir->nitems = nitems; Err codevoid.de 70 it@@ -622,7 +632,7 @@ dig(Item *entry, Item *item) Err codevoid.de 70 i if (!item->entry) Err codevoid.de 70 i item->entry = entry ? entry : item; Err codevoid.de 70 i Err codevoid.de 70 i- switch (item->type) { Err codevoid.de 70 i+ switch (item->redtype ? item->redtype : item->type) { Err codevoid.de 70 i case 'h': /* fallthrough */ Err codevoid.de 70 i if (!strncmp(item->selector, "URL:", 4)) { Err codevoid.de 70 i plumb(item->selector+4); Err codevoid.de 70 it@@ -633,7 +643,6 @@ dig(Item *entry, Item *item) Err codevoid.de 70 i return 0; Err codevoid.de 70 i break; Err codevoid.de 70 i case '1': Err codevoid.de 70 i- case '+': Err codevoid.de 70 i case '7': Err codevoid.de 70 i if (!fetchitem(item) || !(item->dat = molddiritem(item->raw))) Err codevoid.de 70 i return 0; Err codevoid.de 70 it@@ -719,13 +728,12 @@ printout(Item *hole) Err codevoid.de 70 i if (!hole) Err codevoid.de 70 i return; Err codevoid.de 70 i Err codevoid.de 70 i- switch (hole->type) { Err codevoid.de 70 i+ switch (hole->redtype ? hole->redtype : hole->type) { Err codevoid.de 70 i case '0': Err codevoid.de 70 i if (dig(hole, hole)) Err codevoid.de 70 i fputs(hole->raw, stdout); Err codevoid.de 70 i return; Err codevoid.de 70 i case '1': Err codevoid.de 70 i- case '+': Err codevoid.de 70 i if (dig(hole, hole)) Err codevoid.de 70 i printdir(hole); Err codevoid.de 70 i default: Err codevoid.de 70 it@@ -739,7 +747,7 @@ delve(Item *hole) Err codevoid.de 70 i Item *entry = NULL; Err codevoid.de 70 i Err codevoid.de 70 i while (hole) { Err codevoid.de 70 i- switch (hole->type) { Err codevoid.de 70 i+ switch (hole->redtype ? hole->redtype : hole->type) { Err codevoid.de 70 i case 'h': Err codevoid.de 70 i case '0': Err codevoid.de 70 i if (dig(entry, hole)) Err codevoid.de 70 .