diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-03 20:54:26 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-03 20:54:26 +0200 |
commit | 80cd634c4d446418899018b6dcff2559c4572537 (patch) | |
tree | b82b150e821c29ba4382dc316c6c771cc2329648 /sys | |
parent | de9aa721f6b481d74f437035bedbaee6fffa2627 (diff) |
vt: fix plumbsel(), snarfsel()
- plumbsel()
- remove debug prints
- use smalloc() to convert to bytes
- fix spurious -1 close of plumb fd
- snarfsel()
- fix rune buffer leak in open error case
Diffstat (limited to 'sys')
-rw-r--r-- | sys/src/cmd/vt/main.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c index 199ee8409..23a34a6ae 100644 --- a/sys/src/cmd/vt/main.c +++ b/sys/src/cmd/vt/main.c @@ -958,38 +958,42 @@ snarfsel(void) Biobuf *b; Rune *r; - b = Bopen("/dev/snarf", OWRITE|OTRUNC); - if(b == nil) + if((r = selrunes()) == nil) return; - r = selrunes(); - if(!r) + if((b = Bopen("/dev/snarf", OWRITE|OTRUNC)) == nil){ + free(r); return; + } Bprint(b, "%S", r); Bterm(b); free(r); - } void plumbsel(void) { - char buf[1024], wdir[512]; + char *s, wdir[1024]; Rune *r; int plumb; - print("plumb\n"); - if(getwd(wdir, sizeof wdir) == 0) - return; if((r = selrunes()) == nil) return; - print("wdir: %s, runes: %S\n", wdir, r); - if((plumb = plumbopen("send", OWRITE)) != -1){ - snprint(buf, sizeof buf, "%S", r); - print("buf: '%s'\n", buf); - plumbsendtext(plumb, "vt", nil, wdir, buf); + if((s = smprint("%S", r)) == nil){ + free(r); + return; } - close(plumb); free(r); + if(getwd(wdir, sizeof wdir) == nil){ + free(s); + return; + } + if((plumb = plumbopen("send", OWRITE)) < 0){ + free(s); + return; + } + plumbsendtext(plumb, "vt", nil, wdir, s); + close(plumb); + free(s); } void |