aboutsummaryrefslogtreecommitdiff
path: root/tty.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2011-05-22 16:23:07 +0000
committerTiago Cunha <tcunha@gmx.com>2011-05-22 16:23:07 +0000
commit89f35125b4eb5c032f57e8acb70274b77e887f0b (patch)
treec80b93414d1533f98d7345177effa05ec7cfdee9 /tty.c
parente7f3be9187a30c3a140f608a454b077906fe6f81 (diff)
downloadrtmux-89f35125b4eb5c032f57e8acb70274b77e887f0b.tar.gz
rtmux-89f35125b4eb5c032f57e8acb70274b77e887f0b.tar.bz2
rtmux-89f35125b4eb5c032f57e8acb70274b77e887f0b.zip
Sync OpenBSD patchset 914:
Support setting the xterm clipboard when copying from copy mode using the xterm escape sequence for the purpose (if xterm is configured to allow it). Written by and much discussed Ailin Nemui, guidance on xterm/termcap/terminfo from Thomas Dickey.
Diffstat (limited to 'tty.c')
-rw-r--r--tty.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/tty.c b/tty.c
index ea37f6d3..021e8a25 100644
--- a/tty.c
+++ b/tty.c
@@ -1,4 +1,4 @@
-/* $Id: tty.c,v 1.209 2011-05-18 20:28:43 tcunha Exp $ */
+/* $Id: tty.c,v 1.210 2011-05-22 16:23:07 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -19,8 +19,11 @@
#include <sys/types.h>
#include <sys/ioctl.h>
+#include <netinet/in.h>
+
#include <errno.h>
#include <fcntl.h>
+#include <resolv.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
@@ -312,6 +315,13 @@ tty_putcode2(struct tty *tty, enum tty_code_code code, int a, int b)
}
void
+tty_putcode_ptr2(struct tty *tty, enum tty_code_code code, const void *a, const void *b)
+{
+ if (a != NULL && b != NULL)
+ tty_puts(tty, tty_term_ptr2(tty->term, code, a, b));
+}
+
+void
tty_puts(struct tty *tty, const char *s)
{
if (*s == '\0')
@@ -939,6 +949,24 @@ tty_cmd_utf8character(struct tty *tty, const struct tty_ctx *ctx)
}
void
+tty_cmd_setselection(struct tty *tty, const struct tty_ctx *ctx)
+{
+ char *buf;
+ size_t off;
+
+ if (!tty_term_has(tty->term, TTYC_MS))
+ return;
+
+ off = 4 * ((ctx->num + 2) / 3) + 1; /* storage for base64 */
+ buf = xmalloc(off);
+
+ b64_ntop(ctx->ptr, ctx->num, buf, off);
+ tty_putcode_ptr2(tty, TTYC_MS, "", buf);
+
+ xfree(buf);
+}
+
+void
tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
{
u_int i;