+!<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)