13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier void main(int argc,char * argv[])53e12c5d1SDavid du Colombiermain(int argc, char *argv[]) 63e12c5d1SDavid du Colombier { 73e12c5d1SDavid du Colombier int nflag; 8219b2ee8SDavid du Colombier int i, len; 9219b2ee8SDavid du Colombier char *buf, *p; 103e12c5d1SDavid du Colombier 113e12c5d1SDavid du Colombier nflag = 0; 123e12c5d1SDavid du Colombier if(argc > 1 && strcmp(argv[1], "-n") == 0) 133e12c5d1SDavid du Colombier nflag = 1; 14219b2ee8SDavid du Colombier 15219b2ee8SDavid du Colombier len = 1; 163e12c5d1SDavid du Colombier for(i = 1+nflag; i < argc; i++) 17219b2ee8SDavid du Colombier len += strlen(argv[i])+1; 18219b2ee8SDavid du Colombier 19219b2ee8SDavid du Colombier buf = malloc(len); 20219b2ee8SDavid du Colombier if(buf == 0) 21219b2ee8SDavid du Colombier exits("no memory"); 22219b2ee8SDavid du Colombier 23219b2ee8SDavid du Colombier p = buf; 249a747e4fSDavid du Colombier for(i = 1+nflag; i < argc; i++){ 259a747e4fSDavid du Colombier strcpy(p, argv[i]); 269a747e4fSDavid du Colombier p += strlen(p); 279a747e4fSDavid du Colombier if(i < argc-1) 289a747e4fSDavid du Colombier *p++ = ' '; 299a747e4fSDavid du Colombier } 30219b2ee8SDavid du Colombier 313e12c5d1SDavid du Colombier if(!nflag) 329a747e4fSDavid du Colombier *p++ = '\n'; 33219b2ee8SDavid du Colombier 34*0809e9a7SDavid du Colombier if(write(1, buf, p-buf) < 0){ 35219b2ee8SDavid du Colombier fprint(2, "echo: write error: %r\n"); 36*0809e9a7SDavid du Colombier exits("write error"); 37*0809e9a7SDavid du Colombier } 38219b2ee8SDavid du Colombier 393e12c5d1SDavid du Colombier exits((char *)0); 403e12c5d1SDavid du Colombier } 41