sacc-onionmarks.patch - onion-completion - bash-tab-completion for onion adresses
HTML git clone git://kroovy.de/onion-completion
DIR Log
DIR Files
DIR Refs
DIR README
---
sacc-onionmarks.patch (3195B)
---
1 From d2cbbc988dff27fc57b51d6239843d937311765a Mon Sep 17 00:00:00 2001
2 From: kroovy <me@kroovy.de>
3 Date: Sat, 23 Sep 2017 12:22:47 +0200
4 Subject: [PATCH] implement onion-bookmarks
5
6 ---
7 config.def.h | 4 ++++
8 config.mk | 6 +++---
9 ui_ti.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
10 3 files changed, 57 insertions(+), 3 deletions(-)
11
12 diff --git a/config.def.h b/config.def.h
13 index c44147d..6b9344c 100644
14 --- a/config.def.h
15 +++ b/config.def.h
16 @@ -12,6 +12,7 @@
17 #define _key_pgnext 'l' /* view highlighted item */
18 #define _key_pgprev 'h' /* view previous item */
19 #define _key_uri 'u' /* print item uri */
20 +#define _key_onionBM 'o' /* bookmark current onion-uri */
21 #define _key_fetch 'L' /* refetch current item */
22 #define _key_help '?' /* display help */
23 #define _key_quit 'q' /* exit sacc */
24 @@ -21,3 +22,6 @@ static char *plumber = "xdg-open";
25
26 /* temporary directory */
27 static char *tmpdir = "/tmp/sacc";
28 +
29 +/* onion bookmark file */
30 +static char *onion_bookmarks = "/home/kroovy/.onion-bookmarks";
31 diff --git a/config.mk b/config.mk
32 index c6fe28d..4015519 100644
33 --- a/config.mk
34 +++ b/config.mk
35 @@ -3,10 +3,10 @@ PREFIX = /usr/local
36
37 # UI type
38 # txt (textual)
39 -UI=txt
40 +#UI=txt
41 # ti (screen-oriented)
42 -#UI=ti
43 -#UIFLAGS=-lcurses
44 +UI=ti
45 +UIFLAGS=-lcurses
46
47 # Stock FLAGS
48 SACCCFLAGS = -D_DEFAULT_SOURCE $(CFLAGS)
49 diff --git a/ui_ti.c b/ui_ti.c
50 index 09f5127..22e2a10 100644
51 --- a/ui_ti.c
52 +++ b/ui_ti.c
53 @@ -109,6 +109,7 @@ help(Item *entry)
54 "Right, " S(_key_pgnext) ": view highlighted item.\n"
55 "Left, " S(_key_pgprev) ": view previous item.\n"
56 S(_key_uri) ": print item uri.\n"
57 + S(_key_onionBM) ": bookmark current onion-uri.\n"
58 S(_key_help) ": show this help.\n"
59 "^D, " S(_key_quit) ": exit sacc.\n"
60 };
61 @@ -200,6 +201,52 @@ displayuri(Item *item)
62 fflush(stdout);
63 }
64
65 +static void
66 +onionBM(Item *item)
67 +{
68 + char buf[64], *line;
69 + int i, n, contains = 0, onion = 0;
70 + FILE *f;
71 +
72 + putp(tparm(save_cursor));
73 + putp(tparm(cursor_address, lines-1, 0));
74 + putp(tparm(enter_standout_mode));
75 +
76 + f = fopen(onion_bookmarks, "ra+");
77 +
78 + if (f == NULL) {
79 + printf("Error opening %s", onion_bookmarks);
80 + putp(tparm(exit_standout_mode));
81 + putp(tparm(restore_cursor));
82 + fflush(stdout);
83 + return;
84 + }
85 +
86 + if (strstr(item->host, ".onion") != NULL)
87 + onion = 1;
88 +
89 + for (i = 0; (line = fgets(buf, sizeof(buf), f)) != NULL; i++) {
90 + line[strlen(line)-1] = '\0';
91 + if (strcmp(line, item->host) == 0)
92 + contains = 1;
93 + }
94 +
95 + if (!onion) {
96 + n = printf("Not an onion-uri!");
97 + } else if (contains) {
98 + n = printf("Onion-uri is already stored");
99 + } else {
100 + fprintf(f, "%s\n", item->host);
101 + n = printf("Onion-uri successfully stored");
102 + }
103 +
104 + fclose(f);
105 + putp(tparm(exit_standout_mode));
106 + printf("%*s", columns-n, " ");
107 + putp(tparm(restore_cursor));
108 + fflush(stdout);
109 +}
110 +
111 void
112 uidisplay(Item *entry)
113 {
114 @@ -454,6 +501,9 @@ uiselectitem(Item *entry)
115 if (dir)
116 displayuri(&dir->items[dir->curline]);
117 continue;
118 + case _key_onionBM:
119 + onionBM(&dir->items[dir->curline]);
120 + continue;
121 case _key_help: /* FALLTHROUGH */
122 return help(entry);
123 default:
124 --
125 2.12.2
126