---
base64dec.c | 42 ++++++++++++++++++++++++++++++++++++++++++
st.c | 11 ++++++++++-
st.info | 1 +
3 files changed, 53 insertions(+), 1 deletion(-)
create mode 100644 base64dec.c
diff --git a/base64dec.c b/base64dec.c
new file mode 100644
index 0000000..3f75aab
--- /dev/null
+++ b/base64dec.c
_AT_@ -0,0 +1,42 @@
+/*taken from libulz with permission*/
+
+static const char base64_tbl[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+inline int chrpos(int c) {
+ int i = 0;
+ for(;i<64;i++) if(base64_tbl[i] == c) return i;
+ return -1;
+}
+static size_t base64dec(void* dst, const char* src, size_t dst_len) {
+ const char* s = src;
+ unsigned char *d = dst;
+ size_t l = dst_len, o = 0;
+ int n = 0, cnt = 0, skip = 0;
+ if(l) for(;;) {
+ int p;
+ if(*s == '=') {
+ skip++;
+ if(skip > 2) return 0;
+ p = 0;
+ } else if (!*s) {
+ if(cnt % 4 != 0 || !l) return 0;
+ *d++ = 0;
+ return o;
+ } else if(skip) {
+ return 0;
+ } else if((p = chrpos(*s)) == -1) return 0;
+ n = (n << 6) | p;
+ cnt++;
+ if(cnt % 4 == 0) {
+ if(l < 3) return 0;
+ *d++ = n >> 16;
+ *d++ = n >> 8 & 0xff;
+ *d++ = n & 0xff;
+ l -= 3;
+ o += 3-skip;
+ n = 0;
+ }
+ s++;
+ }
+ return 0;
+}
diff --git a/st.c b/st.c
index fbcd9e0..ba65b13 100644
--- a/st.c
+++ b/st.c
_AT_@ -32,7 +32,7 @@
#include <wchar.h>
#include "arg.h"
-
+#include "base64dec.c"
char *argv0;
#define Glyph Glyph_
_AT_@ -2533,6 +2533,15 @@ strhandle(void)
if (narg > 1)
xsettitle(strescseq.args[1]);
return;
+ case 52: /*support for tmux clipboard*/
+ if (narg > 2){
+ char *src=strescseq.args[2];
+ size_t l = (strlen(src)/4)*3;
+ char *buf=xmalloc(l+1);
+ base64dec(buf, src, l);
+ xsetsel(buf, CurrentTime);
+ }
+ return;
case 4: /* color set */
if (narg < 3)
break;
diff --git a/st.info b/st.info
index 13cc8eb..0b928af 100644
--- a/st.info
+++ b/st.info
_AT_@ -189,6 +189,7 @@ st| simpleterm,
Se,
Ss,
Tc,
+ Ms=\E]52;%p1%s;%p2%s\007,
st-256color| simpleterm with 256 colors,
use=st,
--
2.11.0
Received on Thu Jan 19 2017 - 02:06:13 CET
This archive was generated by hypermail 2.3.0 : Thu Jan 19 2017 - 02:12:16 CET