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

!<arch>
Ipdtyp          418696382   968   27    100644  663       `
...|:^^:dp=.:dd=SPMS Software Project Management System:dt=project:
....|:^^:dp=..:
bin|:dp=bin:dt=:dd=:
include|:dp=include:dt=src:dd=:
lib|:dp=lib:dt=:dd=:
work|:dp=work:dt=:dd=:
src|:dp=src:dt=:dd=:
cmd|:dp=src/cmd:dt=:dd=:
srclib|:dp=src/lib:dt=:dd=:
libpdb|:^^:dp=src/lib/libpdb:
libslist|:^^:dp=src/lib/libslist:
libspms|:^^:dp=src/lib/libspms:
libstree|:^^:dp=src/lib/libstree:
mkmf|:dp=src/cmd/mkmf:dt=src.2:dd=:
mkproject|:dp=src/cmd/mkproject:dt=src.2:dd=:
pd|:dp=src/cmd/pd:dt=src.2:dd=change current project directory:
pmkdir|:dp=src/cmd/pmkdir:dt=src.2:dd=make a project directory:
pcp|:dp=src/cmd/pcp:dt=src.2:dd=:
pmv|:dp=src/cmd/pmv:dt=src.2:dd=:

Opdtyp          418696382   968   27    100644  570       `
include src
	src
	cmd/src
	cmd/program/src
	cmd/src
	cmd
	
	cmd
	cmd/src.2
mkmf src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
mkproject src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
pd src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
pmkdir src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
pcp src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
pmv src.2
	src.2
	cmd/src.2
	cmd/program/src.2
	cmd/src.2
	cmd
	
	cmd
	cmd/src.2
Tpdtyp.c        418696385   968   27    100644  2190      `
/*
 * pdtcpy()
 * pdtfind()
 * pdtinsert()
 * pdtrm()
 */
#include <stdio.h>
#include "path.h"
#include "pdb.h"
#include "yesno.h"

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

main()
{
	char *pdtcpy();			/* copy project directory type label */
	char *pdtfind();		/* find type label in buffer */
	char *tb;			/* type label buffer pointer */
	char type[TYPESIZE];		/* project dir type label buffer */
	int closepdb();			/* close database */
	int pdtinsert();		/* insert project dir type label */
	PATH *path;			/* pathname struct pointer */
	PATH *readpld();		/* read next alias+pathname */
	PDB *mustopenpdb();		/* must open database or die */
	PDB *pdbp;			/* database stream */
	void pdtrm();			/* remove project dir type label */
	
	pdbp = mustopenpdb("Ipdtyp", ".", "r");

	/* operations on `src.*' directories only */
	while ((path = readpld(pdbp)) != NULL)
		if ((tb = pdtfind("src", path->p_type)) != NULL)
			{
			printf("%s %s\n", path->p_alias, path->p_type);
			printf("\t%s\n", pdtcpy(type, tb));
			fflush(stdout);

			/* add `cmd' type label */
			if (pdtinsert("cmd", path->p_type) == NO)
				warn("\tcmd type label exists");
			else	{
				printf("\t%s\n", path->p_type);
				fflush(stdout);
				}

			/* add `program' type label */
			if (pdtinsert("program", path->p_type) == NO)
				warn("\tprogram type label exists");
			else	{
				printf("\t%s\n", path->p_type);
				fflush(stdout);
				}
			
			/* remove `program' type label */
			pdtrm("program", path->p_type);
			printf("\t%s\n", path->p_type);
			fflush(stdout);

			/* remove `src.*' type label */
			pdtrm("src", path->p_type);
			printf("\t%s\n", path->p_type);
			fflush(stdout);

			/* remove `cmd' type label */
			pdtrm("cmd", path->p_type);
			printf("\t%s\n", path->p_type);
			fflush(stdout);

			/* add `cmd' type label */
			if (pdtinsert("cmd", path->p_type) == NO)
				warn("\tcmd type label exists");
			else	{
				printf("\t%s\n", path->p_type);
				fflush(stdout);
				}

			/* add `src.2' type label */
			if (pdtinsert("src.2", path->p_type) == NO)
				warn("\tsrc.2 type label exists");
			else	{
				printf("\t%s\n", path->p_type);
				fflush(stdout);
				}
			}

	closepdb(pdbp);
	exit(0);
}