+}
+
+tolocal(argc, argv)
+ int argc;
+ char **argv;
+{
+ int i, tos;
+ char *bp, *host, *src, *suser;
+ char *colon(), *malloc();
+
+ for (i = 0; i < argc - 1; i++) {
+ if (!(src = colon(argv[i]))) { /* local to local */
+ if (!(bp = malloc((u_int)(strlen(_PATH_CP) +
+ strlen(argv[i]) + strlen(argv[argc - 1])) + 20)))
+ nospace();
+ (void)sprintf(bp, "%s%s%s %s %s", _PATH_CP,
+ iamrecursive ? " -r" : "", pflag ? " -p" : "",
+ argv[i], argv[argc - 1]);
+ (void)susystem(bp);
+ (void)free(bp);
+ continue;
+ }
+ *src++ = 0;
+ if (*src == 0)
+ src = ".";
+ host = index(argv[i], '@');
+ if (host) {
+ *host++ = 0;
+ suser = argv[i];
+ if (*suser == '\0')
+ suser = pwd->pw_name;
+ else if (!okname(suser))
+ continue;
+ } else {
+ host = argv[i];
+ suser = pwd->pw_name;
+ }
+ if (!(bp = malloc((u_int)(strlen(src)) + CMDNEEDS + 20)))
+ nospace();
+ (void)sprintf(bp, "%s -f %s", cmd, src);
+#ifdef KERBEROS
+ if (use_kerberos)
+ rem = kerberos(&host, bp, pwd->pw_name, suser);
+ else
+#endif
+ rem = rcmd(&host, port, pwd->pw_name, suser, bp, 0);
+ (void)free(bp);
+ if (rem < 0)
+ continue;
+ (void)seteuid(userid);
+ tos = IPTOS_THROUGHPUT;
+ if (setsockopt(rem, IPPROTO_IP, IP_TOS,
+ (char *)&tos, sizeof(int)) < 0)
+ perror("rcp: setsockopt TOS (ignored)");
+ sink(1, argv + argc - 1);
+ (void)seteuid(0);
+ (void)close(rem);
+ rem = -1;
+ }