Let the user go back in browsing history - sacc - sacc(omys), simple console go… | |
git clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
LICENSE | |
--- | |
commit 7a4910b180411ba8a2d1e20a64acd9a324e76b71 | |
parent 79e35daca2237ca69767574fbcb29192acf1c9ef | |
Author: Quentin Rameau <[email protected]> | |
Date: Tue, 20 Jun 2017 20:03:03 +0200 | |
Let the user go back in browsing history | |
Diffstat: | |
M sacc.c | 22 +++++++++++++++------- | |
1 file changed, 15 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/sacc.c b/sacc.c | |
@@ -275,15 +275,17 @@ connectto(const char *host, const char *port) | |
} | |
void | |
-dig(Item *item) | |
+dig(Item *entry, Item *item) | |
{ | |
int sock; | |
- if (item->type > '1') /* not supported */ | |
+ if (item->target || /* already in cache */ | |
+ item->type > '1') /* not supported */ | |
return; | |
sock = connectto(item->host, item->port); | |
sendselector(sock, item->selector); | |
+ item->entry = entry; | |
item->raw = getrawitem(sock); | |
if (item->type == '0') | |
@@ -357,21 +359,22 @@ parseurl(const char *URL) | |
int | |
main(int argc, char *argv[]) | |
{ | |
- Item *hole; | |
char buf[BUFSIZ]; | |
+ Item *entry, *hole; | |
int n, itm; | |
if (argc != 2) | |
usage(); | |
+ entry = NULL; | |
hole = parseurl(argv[1]); | |
for (;;) { | |
- dig(hole); | |
+ dig(entry, hole); | |
if (!(n = display(hole))) | |
break; | |
do { | |
- printf("%d items, visit (^D or q: quit): ", n); | |
+ printf("%d items, visit (0: back, ^D or q: quit): ", n… | |
if (!fgets(buf, sizeof(buf), stdin)) { | |
putchar('\n'); | |
goto quit; | |
@@ -380,8 +383,13 @@ main(int argc, char *argv[]) | |
goto quit; | |
if (sscanf(buf, "%d", &itm) != 1) | |
continue; | |
- } while (itm < 1 || itm > n); | |
- hole = ((Item **)hole->target)[itm-1]; | |
+ } while (itm < 0 || itm > n); | |
+ if (itm) { | |
+ entry = hole; | |
+ hole = ((Item **)hole->target)[itm-1]; | |
+ } else if (hole->entry) { | |
+ hole = hole->entry; | |
+ } | |
} | |
quit: |