4.3BSD/usr/contrib/spms/src/lib/libspms/test/readpath.a

!<arch>
Ireadpath       418696417   968   27    100644  153       `
~
^
/
^^
~root
...
...^work
...^mumble
....
....^libspms
^libspms^test
^libspms^test/xppath.a
^libspms
^libspms^test^work
^libspms^test/
test
?
^libspms

Oreadpath       421781397   968   10    100644  3815      `
Treadpath: ~ --> ../../../..
../../../..: root project directory
~ project SPMS Software Project Management System
Treadpath: ^ --> ../../../..
../../../..: root project directory
^ project SPMS Software Project Management System
Treadpath: / --> /
/: root project directory
/ project
Treadpath: ^^ --> ../../../..
../../../..: root project directory
^ project SPMS Software Project Management System
Treadpath: ~root --> /
/: root project directory
~root project
Treadpath: ... --> ..
..: project root directory
... project SPMS Utility Operations
Treadpath: ...^work --> ../work
../work: project directory
work test.2 libspms.a workbench
Treadpath: ...^mumble --> .././
Treadpath: ...^mumble: no such project directory
Treadpath: .... --> ../../../..
../../../..: project root directory
.... project SPMS Software Project Management System
Treadpath: ....^libspms --> ../../../../src/lib/libspms
../../../../src/lib/libspms: project root directory
libspms project SPMS Utility Operations
Treadpath: ^libspms^test --> ../../../../src/lib/libspms/test
../../../../src/lib/libspms/test: project directory
test libspms.a test archives
Treadpath: ^libspms^test/xppath.a --> ../../../../src/lib/libspms/test/xppath.a
../../../../src/lib/libspms/test/xppath.a: regular file
Treadpath: ^libspms --> ../../../../src/lib/libspms
../../../../src/lib/libspms: project root directory
libspms project SPMS Utility Operations
Treadpath: ^libspms^test^work --> ../../../../src/lib/libspms/test
Treadpath: ^libspms^test^work: no such file, directory, or project
Treadpath: ^libspms^test/ --> ../../../../src/lib/libspms/test
../../../../src/lib/libspms/test: project directory
test libspms.a test archives
Treadpath: test --> ../test
../test: project directory
test libspms.a test archives
Treadpath: ? --> ?
Treadpath: ?: No such file or directory
Treadpath: ^libspms --> ../../../../src/lib/libspms
../../../../src/lib/libspms: project root directory
libspms project SPMS Utility Operations
Treadpath: ~ --> ../../../..
../../../..: root project directory
~ project SPMS Software Project Management System
Treadpath: ^ --> ../../../..
../../../..: root project directory
^ project SPMS Software Project Management System
Treadpath: / --> /
/: root project directory
/ project
Treadpath: ^^ --> ../../../..
../../../..: root project directory
^ project SPMS Software Project Management System
Treadpath: ~root --> /
/: root project directory
~root project
Treadpath: ... --> ...
Treadpath: ...: No such file or directory
Treadpath: ...^work --> ...
Treadpath: ...^work: no such file, directory, or project
Treadpath: ...^mumble --> ...
Treadpath: ...^mumble: no such file, directory, or project
Treadpath: .... --> ....
Treadpath: ....: No such file or directory
Treadpath: ....^libspms --> ....
Treadpath: ....^libspms: no such file, directory, or project
Treadpath: ^libspms^test --> ../../../../src/lib/libspms/test
../../../../src/lib/libspms/test: project directory
test libspms.a test archives
Treadpath: ^libspms^test/xppath.a --> ../../../../src/lib/libspms/test/xppath.a
../../../../src/lib/libspms/test/xppath.a: regular file
Treadpath: ^libspms --> ../../../../src/lib/libspms
../../../../src/lib/libspms: project root directory
libspms project SPMS Utility Operations
Treadpath: ^libspms^test^work --> ../../../../src/lib/libspms/test
Treadpath: ^libspms^test^work: no such file, directory, or project
Treadpath: ^libspms^test/ --> ../../../../src/lib/libspms/test
../../../../src/lib/libspms/test: project directory
test libspms.a test archives
Treadpath: test --> test
Treadpath: test: No such file or directory
Treadpath: ? --> ?
Treadpath: ?: No such file or directory
Treadpath: ^libspms --> ../../../../src/lib/libspms
../../../../src/lib/libspms: project root directory
libspms project SPMS Utility Operations

Treadpath.c     418696422   968   27    100644  1721      `
/*
 * readpath()
 */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "path.h"
#include "yesno.h"

char *PGN = "Treadpath";		/* program name */

main()
{
	extern int PPDEBUG;		/* project pathname debug flag */
	char *gets();			/* get line from stdin */
	char ppathname[PATHSIZE];	/* project pathname buffer */
	int readpath();			/* read pathname attributes */
	PATH pb;			/* project pathname struct buffer */

	PPDEBUG = YES;
	freopen("Ireadpath", "r", stdin);

	while (gets(ppathname) != NULL)
		{
		if (readpath(ppathname, &pb) == -1 || (pb.p_mode&P_IFMT) == P_IFNEW)
			{
			patherr(ppathname);
			continue;
			}
		printf("%s: ", pb.p_path);
		switch (pb.p_mode & P_IFMT)
			{
			case P_IFNEW:
				patherr(ppathname);
				break;
			case P_IFREG:
				if ((pb.p_mode & S_IFMT) == S_IFREG)
					printf("regular file\n");
				else if ((pb.p_mode & S_IFMT) == S_IFDIR)
					printf("regular directory\n");
				else
					printf("special file\n");
				break;
			case P_IFPDIR:
				printf("project directory\n");
				printf("%s", pb.p_alias);
				if (*pb.p_type != '\0')
					printf(" %s", pb.p_type);
				if (*pb.p_desc != '\0')
					printf(" %s", pb.p_desc);
				putchar('\n');
				break;
			case P_IFPROOT:
				printf("project root directory\n");
				printf("%s", pb.p_alias);
				if (*pb.p_type != '\0')
					printf(" %s", pb.p_type);
				if (*pb.p_desc != '\0')
					printf(" %s", pb.p_desc);
				putchar('\n');
				break;
			case P_IFHOME:
				printf("root project directory\n");
				printf("%s", pb.p_alias);
				if (*pb.p_type != '\0')
					printf(" %s", pb.p_type);
				if (*pb.p_desc != '\0')
					printf(" %s", pb.p_desc);
				putchar('\n');
				break;
			}
		fflush(stdout);
		}
	exit(0);
}

Treadpath.sh    418870320   968   27    100755  218       `
#!/bin/csh -f
#
# readpath()
#
setenv HOME ../../../..
setenv PROJECT ..
Treadpath >& T_OUTPUT
setenv PROJECT ""
Treadpath >>& T_OUTPUT
diff T_OUTPUT Oreadpath
set diffstatus = $status
rm -f T_OUTPUT
exit($diffstatus)