else if (!okname(suser)) continue;
tolocal(argc, argv)	int argc;	char *argv[];{	int i, len;	char *bp, *host, *src, *suser;	for (i = 0; i < argc - 1; i++) {		if (!(src = colon(argv[i]))) {	/* Local to local. */			len = strlen(_PATH_CP) + strlen(argv[i]) +			    strlen(argv[argc - 1]) + 20;			bp = xmalloc(len);			(void) snprintf(bp, len, "exec %s%s%s %s %s", _PATH_CP,			    iamrecursive ? " -r" : "", pflag ? " -p" : "",			    argv[i], argv[argc - 1]);			if (verbose_mode)				fprintf(stderr, "Executing: %s\n", bp);			if (system(bp))				++errs;			(void) xfree(bp);			continue;		}		*src++ = 0;		if (*src == 0)			src = ".";		if ((host = strrchr(argv[i], '@')) == NULL) {			host = argv[i];			suser = NULL;		} else {			*host++ = 0;			suser = argv[i];			if (*suser == '\0')				suser = pwd->pw_name;			else if (!okname(suser))				continue;		}		host = cleanhostname(host);		len = strlen(src) + CMDNEEDS + 20;		bp = xmalloc(len);		(void) snprintf(bp, len, "%s -f %s", cmd, src);		if (do_cmd(host, suser, bp, &remin, &remout, argc) < 0) {			(void) xfree(bp);			++errs;			continue;		}		xfree(bp);		sink(1, argv + argc - 1);		(void) close(remin);		remin = remout = -1;	}}