tfix snarf - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9
(DIR) parent ac963cb3f58e13555336bc9c33e4e9591f9c914e
(HTM) Author: rsc <devnull@localhost>
Date: Mon, 7 Nov 2005 01:51:11 +0000
fix snarf
Diffstat:
M src/cmd/9term/9term.c | 32 +++++++++++++++++++++++++++++--
M src/cmd/9term/fns.h | 4 ++++
M src/cmd/9term/wind.c | 4 ++--
3 files changed, 36 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
t@@ -322,7 +322,7 @@ button2menu(Window *w)
break;
case Paste:
- //XXX getsnarf();
+ riogetsnarf();
wpaste(w);
wscrdraw(w);
break;
t@@ -332,7 +332,7 @@ button2menu(Window *w)
break;
case Send:
- //XXX getsnarf();
+ riogetsnarf();
wsnarf(w);
if(nsnarf == 0)
break;
t@@ -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);
+}
(DIR) diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
t@@ -35,3 +35,7 @@ void winterrupt(Window*);
#define runemalloc(n) malloc((n)*sizeof(Rune))
#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
#define runemove(a, b, n) memmove(a, b, (n)*sizeof(Rune))
+
+void rioputsnarf(void);
+void riogetsnarf(void);
+
(DIR) diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
t@@ -772,7 +772,7 @@ wsnarf(Window *w)
snarf = runerealloc(snarf, nsnarf);
snarfversion++; /* maybe modified by parent */
runemove(snarf, w->r+w->q0, nsnarf);
-//XXX putsnarf();
+ rioputsnarf();
}
void
t@@ -1034,7 +1034,7 @@ wselect(Window *w)
}else{
if(first){
first = 0;
- getsnarf();
+ riogetsnarf();
}
wpaste(w);
}