iAdd yank feature to sacc - sacc - sacc(omys), simple console gopher client Err bitreich.org 70 hgit clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ URL:git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ bitreich.org 70 1Log /scm/sacc/log.gph bitreich.org 70 1Files /scm/sacc/files.gph bitreich.org 70 1Refs /scm/sacc/refs.gph bitreich.org 70 1Tags /scm/sacc/tag bitreich.org 70 1LICENSE /scm/sacc/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit c2e060c906af4fd970cb2b9ee2e3c05c83db1582 /scm/sacc/commit/c2e060c906af4fd970cb2b9ee2e3c05c83db1582.gph bitreich.org 70 1parent e80d8bfc3241d197f387a7cbe40ec924853bdc83 /scm/sacc/commit/e80d8bfc3241d197f387a7cbe40ec924853bdc83.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Sat, 13 Nov 2021 12:34:01 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd yank feature to sacc Err bitreich.org 70 i Err bitreich.org 70 iThanks to adc (Anders Damsgaard ) and Err bitreich.org 70 iEvil_Bob (Hiltjo Posthuma ) for Err bitreich.org 70 itheir suggestions, patches, and peer pressure. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M LICENSE | 1 + Err bitreich.org 70 i M common.h | 1 + Err bitreich.org 70 i M config.def.h | 5 +++++ Err bitreich.org 70 i M sacc.1 | 6 ++++++ Err bitreich.org 70 i M sacc.c | 23 +++++++++++++++++++++++ Err bitreich.org 70 i M ui_ti.c | 10 ++++++++++ Err bitreich.org 70 i M ui_txt.c | 8 ++++++++ Err bitreich.org 70 i Err bitreich.org 70 i7 files changed, 54 insertions(+), 0 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/LICENSE b/LICENSE /scm/sacc/file/LICENSE.gph bitreich.org 70 i@@ -8,6 +8,7 @@ Copyright (c) 2018 Ivan J. Err bitreich.org 70 i Copyright (c) 2018 Leonardo Taccari Err bitreich.org 70 i Copyright (c) 2018 Stefan Hagen Err bitreich.org 70 i Copyright (c) 2021 escapeinsert Err bitreich.org 70 i+Copyright (c) 2021 Anders Damsgaard Err bitreich.org 70 i Err bitreich.org 70 i Permission to use, copy, modify, and distribute this software for any Err bitreich.org 70 i purpose with or without fee is hereby granted, provided that the above Err bitreich.org 70 1diff --git a/common.h b/common.h /scm/sacc/file/common.h.gph bitreich.org 70 i@@ -53,6 +53,7 @@ extern char *strcasestr(const char *, const char *); Err bitreich.org 70 i #endif /* NEED_STRCASESTR */ Err bitreich.org 70 i extern const char *typedisplay(char); Err bitreich.org 70 i extern int itemuri(Item *, char *, size_t); Err bitreich.org 70 i+extern void yankitem(Item *); Err bitreich.org 70 i extern void uicleanup(void); Err bitreich.org 70 i extern void uidisplay(Item *); Err bitreich.org 70 i extern char *uiprompt(char *, ...); Err bitreich.org 70 1diff --git a/config.def.h b/config.def.h /scm/sacc/file/config.def.h.gph bitreich.org 70 i@@ -13,6 +13,8 @@ Err bitreich.org 70 i #define _key_pgprev 'h' /* view previous item */ Err bitreich.org 70 i #define _key_cururi 'U' /* print page uri */ Err bitreich.org 70 i #define _key_seluri 'u' /* print item uri */ Err bitreich.org 70 i+#define _key_yankcur 'Y' /* yank page uri */ Err bitreich.org 70 i+#define _key_yanksel 'y' /* yank item uri */ Err bitreich.org 70 i #define _key_fetch 'L' /* refetch current item */ Err bitreich.org 70 i #define _key_help '?' /* display help */ Err bitreich.org 70 i #define _key_quit 'q' /* exit sacc */ Err bitreich.org 70 i@@ -22,6 +24,9 @@ Err bitreich.org 70 i Err bitreich.org 70 i #ifdef NEED_CONF Err bitreich.org 70 i Err bitreich.org 70 i+/* default yanker */ Err bitreich.org 70 i+static char *yanker = "xclip"; Err bitreich.org 70 i+ Err bitreich.org 70 i /* default plumber */ Err bitreich.org 70 i static char *plumber = "xdg-open"; Err bitreich.org 70 i Err bitreich.org 70 1diff --git a/sacc.1 b/sacc.1 /scm/sacc/file/sacc.1.gph bitreich.org 70 i@@ -65,6 +65,12 @@ Print the URI of the current page. Err bitreich.org 70 i .B u Err bitreich.org 70 i Print the URI of the highlighted item. Err bitreich.org 70 i .TP Err bitreich.org 70 i+.B Y Err bitreich.org 70 i+Yank the current page URI to an external program. Err bitreich.org 70 i+.TP Err bitreich.org 70 i+.B y Err bitreich.org 70 i+Yank the highlighted item URI to an external program. Err bitreich.org 70 i+.TP Err bitreich.org 70 i .B ? Err bitreich.org 70 i Show the help message of shortcuts. Err bitreich.org 70 i .TP Err bitreich.org 70 1diff --git a/sacc.c b/sacc.c /scm/sacc/file/sacc.c.gph bitreich.org 70 i@@ -28,6 +28,7 @@ void (*diag)(char *, ...); Err bitreich.org 70 i Err bitreich.org 70 i static const char *ident = "@(#) sacc(omys): " VERSION; Err bitreich.org 70 i Err bitreich.org 70 i+static char intbuf[256]; /* 256B ought to be enough for any URI */ Err bitreich.org 70 i static char *mainurl; Err bitreich.org 70 i static Item *mainentry; Err bitreich.org 70 i static int devnullfd; Err bitreich.org 70 i@@ -679,6 +680,21 @@ fetchitem(Item *item) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i+pipeuri(char *cmd, char *msg, char *uri) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ FILE *sel; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if ((sel = popen(cmd, "w")) == NULL) { Err bitreich.org 70 i+ diag("URI not %s\n", msg); Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs(uri, sel); Err bitreich.org 70 i+ pclose(sel); Err bitreich.org 70 i+ diag("%s \"%s\"", msg, uri); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static void Err bitreich.org 70 i execuri(char *cmd, char *msg, char *uri) Err bitreich.org 70 i { Err bitreich.org 70 i switch (fork()) { Err bitreich.org 70 i@@ -757,6 +773,13 @@ cleanup: Err bitreich.org 70 i return; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+void Err bitreich.org 70 i+yankitem(Item *item) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ itemuri(item, intbuf, sizeof(intbuf)); Err bitreich.org 70 i+ pipeuri(yanker, "Yanked", intbuf); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i static int Err bitreich.org 70 i dig(Item *entry, Item *item) Err bitreich.org 70 i { Err bitreich.org 70 1diff --git a/ui_ti.c b/ui_ti.c /scm/sacc/file/ui_ti.c.gph bitreich.org 70 i@@ -138,6 +138,8 @@ help(Item *entry) Err bitreich.org 70 i S(_key_searchprev) ": search string backward.\n" Err bitreich.org 70 i S(_key_cururi) ": print page URI.\n" Err bitreich.org 70 i S(_key_seluri) ": print item URI.\n" Err bitreich.org 70 i+ S(_key_yankcur) ": yank page URI to external program.\n" Err bitreich.org 70 i+ S(_key_yanksel) ": yank item URI to external program.\n" Err bitreich.org 70 i S(_key_help) ": show this help.\n" Err bitreich.org 70 i "^D, " S(_key_quit) ": exit sacc.\n" Err bitreich.org 70 i }; Err bitreich.org 70 i@@ -533,6 +535,14 @@ uiselectitem(Item *entry) Err bitreich.org 70 i if (dir) Err bitreich.org 70 i displayuri(&dir->items[dir->curline]); Err bitreich.org 70 i continue; Err bitreich.org 70 i+ case _key_yankcur: Err bitreich.org 70 i+ if (dir) Err bitreich.org 70 i+ yankitem(entry); Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ case _key_yanksel: Err bitreich.org 70 i+ if (dir) Err bitreich.org 70 i+ yankitem(&dir->items[dir->curline]); Err bitreich.org 70 i+ continue; Err bitreich.org 70 i case _key_help: /* FALLTHROUGH */ Err bitreich.org 70 i return help(entry); Err bitreich.org 70 i default: Err bitreich.org 70 1diff --git a/ui_txt.c b/ui_txt.c /scm/sacc/file/ui_txt.c.gph bitreich.org 70 i@@ -55,6 +55,8 @@ help(void) Err bitreich.org 70 i "p: show previous page.\n" Err bitreich.org 70 i "t: go to the top of the page\n" Err bitreich.org 70 i "b: go to the bottom of the page\n" Err bitreich.org 70 i+ "Y: yank page URI.\n" Err bitreich.org 70 i+ "y#: yank item number # URI.\n" Err bitreich.org 70 i "/str: search for string \"str\"\n" Err bitreich.org 70 i "!: refetch failed item.\n" Err bitreich.org 70 i "^D, q: quit.\n" Err bitreich.org 70 i@@ -271,6 +273,12 @@ uiselectitem(Item *entry) Err bitreich.org 70 i if (item > 0 && item <= nitems) Err bitreich.org 70 i printuri(&dir->items[item-1], item); Err bitreich.org 70 i continue; Err bitreich.org 70 i+ case 'Y': Err bitreich.org 70 i+ yankitem(entry); Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ case 'y': Err bitreich.org 70 i+ if (item > 0 && item <= nitems) Err bitreich.org 70 i+ yankitem(&dir->items[item-1]); Err bitreich.org 70 i case '/': Err bitreich.org 70 i if (*sstr) Err bitreich.org 70 i searchinline(sstr, entry); Err bitreich.org 70 .