commit 3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9 from: rsc date: Mon Nov 07 01:51:11 2005 UTC fix snarf commit - ac963cb3f58e13555336bc9c33e4e9591f9c914e commit + 3fd51250be8cd6f6ac5df5342d3b81e6ed1c01a9 blob - 9d1fa1d154aed9bcda303b224f53f23d3da5ef44 blob + e62330a3e09ecb7e084fd5aaea3d0fb7be5cfcae --- src/cmd/9term/9term.c +++ 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; @@ -502,6 +502,34 @@ rcinputproc(void *arg) 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 @@ -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); + blob - 781a91d585aba8cdecda88d2835c61c1dd5d7069 blob + 2eb2e63872a1563c182bcb008ebf0c2ae7bbdd83 --- src/cmd/9term/wind.c +++ src/cmd/9term/wind.c @@ -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 @@ -1034,7 +1034,7 @@ wselect(Window *w) }else{ if(first){ first = 0; - getsnarf(); + riogetsnarf(); } wpaste(w); }