11 fprint(2, "usage: plumb [-p plumbfile] [-a 'attr=value ...'] [-s src] [-d dst] [-t type] [-w wdir] -i | data1\n");
23 while((n = read(0, buf, sizeof buf)) > 0){
24 m.data = realloc(m.data, m.ndata+n);
26 fprint(2, "plumb: alloc failed: %r\n");
29 memmove(m.data+m.ndata, buf, n);
33 fprint(2, "plumb: i/o error on input: %r\n");
39 main(int argc, char *argv[])
47 m.wdir = getwd(buf, sizeof buf);
55 m.attr = plumbaddattr(m.attr, plumbunpackattr(p));
66 case 'k': /* for backwards compatibility */
88 if((input && argc>0) || (!input && argc<1))
91 fd = open(plumbfile, OWRITE);
93 fd = plumbopen("send", OWRITE);
95 fprint(2, "plumb: can't open plumb file: %r\n");
100 if(plumblookup(m.attr, "action") == nil)
101 m.attr = plumbaddattr(m.attr, plumbunpackattr("action=showdata"));
102 if(plumbsend(fd, &m) < 0){
103 fprint(2, "plumb: can't send message: %r\n");
108 for(i=0; i<argc; i++){
113 if(plumbsend(fd, &m) < 0){
114 fprint(2, "plumb: can't send message: %r\n");