commit - ac963cb3f58e13555336bc9c33e4e9591f9c914e
commit + 3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9
blob - 9d1fa1d154aed9bcda303b224f53f23d3da5ef44
blob + e62330a3e09ecb7e084fd5aaea3d0fb7be5cfcae
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
break;
case Paste:
- //XXX getsnarf();
+ riogetsnarf();
wpaste(w);
wscrdraw(w);
break;
break;
case Send:
- //XXX getsnarf();
+ riogetsnarf();
wsnarf(w);
if(nsnarf == 0)
break;
threadexitsall(nil);
if(s)
setecho(sfd, s);
+ }
+}
+
+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);
+}
blob - 2d31ad882dae0b6431f9cbae9f1f08435ae0d25d
blob + a0ae686af817ee85df6cddfd408a7bf3a9b5a52d
--- src/cmd/9term/fns.h
+++ src/cmd/9term/fns.h
#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);
+
blob - 781a91d585aba8cdecda88d2835c61c1dd5d7069
blob + 2eb2e63872a1563c182bcb008ebf0c2ae7bbdd83
--- src/cmd/9term/wind.c
+++ src/cmd/9term/wind.c
snarf = runerealloc(snarf, nsnarf);
snarfversion++; /* maybe modified by parent */
runemove(snarf, w->r+w->q0, nsnarf);
-//XXX putsnarf();
+ rioputsnarf();
}
void
}else{
if(first){
first = 0;
- getsnarf();
+ riogetsnarf();
}
wpaste(w);
}