|  | #include <u.h> | 
|  | #include <libc.h> | 
|  |  | 
|  | void | 
|  | main(int argc, char *argv[]) | 
|  | { | 
|  | int nflag; | 
|  | int i, len; | 
|  | char *buf, *p; | 
|  |  | 
|  | nflag = 0; | 
|  | if(argc > 1 && strcmp(argv[1], "-n") == 0) | 
|  | nflag = 1; | 
|  |  | 
|  | len = 1; | 
|  | for(i = 1+nflag; i < argc; i++) | 
|  | len += strlen(argv[i])+1; | 
|  |  | 
|  | buf = malloc(len); | 
|  | if(buf == 0) | 
|  | exits("no memory"); | 
|  |  | 
|  | p = buf; | 
|  | for(i = 1+nflag; i < argc; i++){ | 
|  | strcpy(p, argv[i]); | 
|  | p += strlen(p); | 
|  | if(i < argc-1) | 
|  | *p++ = ' '; | 
|  | } | 
|  |  | 
|  | if(!nflag) | 
|  | *p++ = '\n'; | 
|  |  | 
|  | if(write(1, buf, p-buf) < 0) | 
|  | fprint(2, "echo: write error: %r\n"); | 
|  |  | 
|  | exits((char *)0); | 
|  | } |