summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vt
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-09-03 20:54:26 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-09-03 20:54:26 +0200
commit80cd634c4d446418899018b6dcff2559c4572537 (patch)
treeb82b150e821c29ba4382dc316c6c771cc2329648 /sys/src/cmd/vt
parentde9aa721f6b481d74f437035bedbaee6fffa2627 (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/src/cmd/vt')
-rw-r--r--sys/src/cmd/vt/main.c34
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