8 fprint(2, "usage: xargs [ -n lines ] [ -p procs ] args ...\n");
15 while(waitpid() != -1)
20 main(int argc, char **argv)
22 int lines, procs, i, j, run;
23 char **nargv, **args, **p;
29 case 'n': lines = atoi(EARGF(usage())); break;
30 case 'p': procs = atoi(EARGF(usage())); break;
36 nargv = malloc(sizeof(char *) * (argc + lines + 1));
38 sysfatal("malloc: %r");
39 memcpy(nargv, argv, sizeof(char *) * argc);
41 if(Binit(&bp, 0, OREAD) < 0)
42 sysfatal("Binit: %r");
45 for(j = 0, run = 1; run; j++){
48 memset(args, 0, sizeof(char *) * (lines + 1));
49 for(i = 0; i < lines; i++)
50 if((args[i] = Brdstr(&bp, '\n', 1)) == nil){
61 if(**nargv != '/' && strncmp(*nargv, "./", 2) != 0 &&
62 strncmp(*nargv, "../", 3) != 0){
63 *nargv = smprint("/bin/%s", *nargv);
68 for(p = args; *p; p++)