+ if (*sp && !isspace(*sp)) {
+ av[i++] = sp;
+ while (*sp && !isspace(*sp))
+ sp++;
+ *sp = '\0';
+ }
+ }
+ av[i] = 0;
+ if (pipe(p) < 0)
+ fatal(argv[0], "pipe");
+ if ((pid = fork()) == 0) {
+ close(p[0]);
+ if (p[1] != 1) {
+ dup2(p[1], 1);
+ close(p[1]);
+ }
+ execv("/usr/ucb/finger", av);
+ _exit(1);
+ }
+ if (pid == -1)
+ fatal(argv[0], "fork");
+ close(p[1]);
+ if ((fp = fdopen(p[0], "r")) == NULL)
+ fatal(argv[0], "fdopen");
+ while ((i = getc(fp)) != EOF) {
+ if (i == '\n')
+ putchar('\r');
+ putchar(i);