aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term/9term.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-11-07 01:51:11 +0000
committerrsc <devnull@localhost>2005-11-07 01:51:11 +0000
commit3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9 (patch)
tree8171ef4e7991caae3df75451697a2a7ed5715d60 /src/cmd/9term/9term.c
parentac963cb3f58e13555336bc9c33e4e9591f9c914e (diff)
downloadplan9port-3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9.tar.gz
plan9port-3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9.tar.bz2
plan9port-3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9.zip
fix snarf
Diffstat (limited to 'src/cmd/9term/9term.c')
-rw-r--r--src/cmd/9term/9term.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index 9d1fa1d1..e62330a3 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -322,7 +322,7 @@ button2menu(Window *w)
break;
case Paste:
- //XXX getsnarf();
+ riogetsnarf();
wpaste(w);
wscrdraw(w);
break;
@@ -332,7 +332,7 @@ button2menu(Window *w)
break;
case Send:
- //XXX getsnarf();
+ riogetsnarf();
wsnarf(w);
if(nsnarf == 0)
break;
@@ -505,3 +505,31 @@ rcinputproc(void *arg)
}
}
+void
+rioputsnarf(void)
+{
+ char *s;
+
+ s = smprint("%.*S", nsnarf, snarf);
+ if(s){
+ putsnarf(s);
+ free(s);
+ }
+}
+
+void
+riogetsnarf(void)
+{
+ char *s;
+ int n, nb, nulls;
+
+fprint(2, "getsnarf\n");
+ s = getsnarf();
+ if(s == nil)
+ return;
+ n = strlen(s)+1;
+ free(snarf);
+ snarf = runemalloc(n);
+ cvttorunes(s, n, snarf, &nb, &nsnarf, &nulls);
+ free(s);
+}