2.9BSD/usr/src/ucb/vsh/curdir.c

#
/*  Curdir finds the name of the working directory and puts in
    wdname.  This is done by calling on the pwd program.
*/
#include "hd.h"
#include "mydir.h"
static char pwd[] = {"/bin/pwd"};

curdir () {

int p, rdlen, pipefile [2];
#define pipein	pipefile [0]
#define pipeout	pipefile [1]

pipe (pipefile);
printf ("%s\n", pwd);
if ((p = myfork ()) == 0) {
	close (outfile);  dup (pipeout);
	close (pipein);  close (pipeout);
	execl (pwd, pwd, 0);
	exit (1);
} else {
	close (pipeout);
	join (p);
	rdlen = read (pipein, wdname, sizeof wdname);
	if (rdlen < 2 || rdlen == sizeof wdname || wdname [0] != '/') {
		printf ("Cannot find name of working directory\n\r");
		return 1;
	}
	wdname [rdlen - 1] = 0;
	close (pipein);
}
return 0;
}