Blame


1 bc7cb1a1 2003-11-23 devnull #include <u.h>
2 bc7cb1a1 2003-11-23 devnull #include <libc.h>
3 bc7cb1a1 2003-11-23 devnull
4 bc7cb1a1 2003-11-23 devnull void
5 bc7cb1a1 2003-11-23 devnull main(int argc, char *argv[])
6 bc7cb1a1 2003-11-23 devnull {
7 bc7cb1a1 2003-11-23 devnull int nflag;
8 bc7cb1a1 2003-11-23 devnull int i, len;
9 bc7cb1a1 2003-11-23 devnull char *buf, *p;
10 bc7cb1a1 2003-11-23 devnull
11 bc7cb1a1 2003-11-23 devnull nflag = 0;
12 bc7cb1a1 2003-11-23 devnull if(argc > 1 && strcmp(argv[1], "-n") == 0)
13 bc7cb1a1 2003-11-23 devnull nflag = 1;
14 bc7cb1a1 2003-11-23 devnull
15 bc7cb1a1 2003-11-23 devnull len = 1;
16 bc7cb1a1 2003-11-23 devnull for(i = 1+nflag; i < argc; i++)
17 bc7cb1a1 2003-11-23 devnull len += strlen(argv[i])+1;
18 bc7cb1a1 2003-11-23 devnull
19 bc7cb1a1 2003-11-23 devnull buf = malloc(len);
20 bc7cb1a1 2003-11-23 devnull if(buf == 0)
21 bc7cb1a1 2003-11-23 devnull exits("no memory");
22 bc7cb1a1 2003-11-23 devnull
23 bc7cb1a1 2003-11-23 devnull p = buf;
24 bc7cb1a1 2003-11-23 devnull for(i = 1+nflag; i < argc; i++){
25 bc7cb1a1 2003-11-23 devnull strcpy(p, argv[i]);
26 bc7cb1a1 2003-11-23 devnull p += strlen(p);
27 bc7cb1a1 2003-11-23 devnull if(i < argc-1)
28 bc7cb1a1 2003-11-23 devnull *p++ = ' ';
29 bc7cb1a1 2003-11-23 devnull }
30 fa325e9b 2020-01-10 cross
31 bc7cb1a1 2003-11-23 devnull if(!nflag)
32 bc7cb1a1 2003-11-23 devnull *p++ = '\n';
33 bc7cb1a1 2003-11-23 devnull
34 bc7cb1a1 2003-11-23 devnull if(write(1, buf, p-buf) < 0)
35 bc7cb1a1 2003-11-23 devnull fprint(2, "echo: write error: %r\n");
36 bc7cb1a1 2003-11-23 devnull
37 bc7cb1a1 2003-11-23 devnull exits((char *)0);
38 bc7cb1a1 2003-11-23 devnull }