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

!<arch>
Ipdtmatch       418696369   968   27    100644  2311      `
...|:^^:dp=.:dt=project:dd=SPMS Software Project Management System:
....|:^^:dp=..:
include|:dp=include:dt=include/print.1/src/update.1:dd=header files:
lib|:dp=lib:dt=binary:dd=makefile templates, object code libraries:
work|:dp=work:dt=workbench:dd=SPMS workbench:
src|:dp=src:dt=:dd=source:
binsrc|:dp=src/bin:dt=:dd=command source:
libsrc|:dp=src/lib:dt=:dd=library source:
libslist|:^^:dp=src/lib/libslist:
libspms|:^^:dp=src/lib/libspms:
libtree|:^^:dp=src/lib/libtree:
libpdb|:^^:dp=src/lib/libpdb:
mkmf|:dp=src/bin/mkmf:dt=cmd/print.2/src/update.3:dd=mkmf - makefile editor:
mkproject|:dp=src/bin/mkproject:dt=cmd/print.2/src/update.3:dd=mkproject - make a project root directory:
pd|:dp=src/bin/pd:dt=cmd/print.2/src/update.3:dd=pd - change current project directory:
pmkdir|:dp=src/bin/pmkdir:dt=cmd/print.2/src/update.3:dd=pmkdir - make a project directory:
pcp|:dp=src/bin/pcp:dt=cmd/print.2/src/update.3:dd=pcp, pcopy - copy files:
pmv|:dp=src/bin/pmv:dt=cmd/print.2/src/update.3:dd=pmv, pmove - move or rename files:
ppd|:dp=src/bin/ppd:dt=cmd/print.2/src/update.3:dd=ppd - list project directories:
chproject|:dp=src/bin/chproject:dt=cmd/print.2/src/update.3:dd=chproject - change current project:
pwp|:dp=src/bin/pwp:dt=cmd/print.2/src/update.3:dd=pwp - path to working project:
plog|:dp=src/bin/plog:dt=cmd/print.2/src/update.3:dd=plog - record, edit, print progress of a project:
pexec|:dp=src/bin/pexec:dt=cmd/print.2/src/update.3:dd=pexec - execute command over project hierarchy:
man|:dp=man:dt=:dd=manual:
pfind|:dp=src/bin/pfind:dt=cmd/print.2/src/update.3:dd=pfind - find files in a project:
pdiff|:dp=src/bin/pdiff:dt=cmd/print.2/src/update.3:dd=pdiff - differential project comparator:
mtime|:dp=src/bin/mtime:dt=cmd/print.2/src/update.3:dd=mtime - change last-modified file times:
phelp|:dp=src/bin/phelp:dt=cmd/print.2/src/update.3:dd=phelp - on-line help for a project:
prmdir|:dp=src/bin/prmdir:dt=cmd/print.2/src/update.3:dd=prmdir - remove a project directory:
rmproject|:dp=src/bin/rmproject:dt=cmd/print.2/src/update.3:dd=rmproject - remove a project root directory:
help|:dp=help:dt=:dd=help topics:
libhash|:^^:dp=src/lib/libhash:
man1|:dp=man/man1:dt=man.1:dd=command manual:
man3|:dp=man/man3:dt=man.3:dd=library manual:
bin|:dp=bin:dt=binary:dd=SPMS maintenance commands:

Opdtmatch       418696369   968   27    100644  305       `
mkmf
mkproject
pd
pmkdir
pcp
pmv
ppd
chproject
pwp
plog
pexec
pfind
pdiff
mtime
phelp
prmdir
rmproject
mkmf
mkproject
pd
pmkdir
pcp
pmv
ppd
chproject
pwp
plog
pexec
pfind
pdiff
mtime
phelp
prmdir
rmproject
...
....
lib
work
src
binsrc
libsrc
libslist
libspms
libtree
libpdb
man
help
libhash
man1
man3
bin

Tpdtmatch.c     418696373   968   27    100644  1583      `
/*
 * pdtmatch()
 */
#include <stdio.h>
#include "path.h"
#include "pdb.h"
#include "pdtyp.h"
#include "pld.h"
#include "yesno.h"

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

main()
{
	int closepdb();			/* close database */
	int pdtmatch();			/* match project dir type label expr */
	int pdtparse();			/* parse boolean type label expr */
	PATH *path;			/* pathname struct pointer */
	PATH *readpld();		/* read next alias+pathname */
	PDB *mustopenpdb();		/* must open database or die */
	PDB *pdbp;			/* database stream */
	PDTYP postfix1;			/* postfix type expression */
	PDTYP postfix2;			/* postfix type expression */
	PDTYP postfix3;			/* postfix type expression */
	void rewindpdb();		/* rewind database */
	
	pdbp = mustopenpdb("Ipdtmatch", ".", "r");

	/* print only directories which match `src&(cmd|lib)' labels */
	if (pdtparse("src&(cmd|lib)", &postfix1) == NO)
		exit(1);
	while ((path = readpld(pdbp)) != NULL)
		{
		if (pdtmatch(&postfix1, path->p_type) == YES)
			printf("%s\n", path->p_alias);
		}

	/* print only directories which match `print&!include' labels */
	rewindpdb(pdbp);
	if (pdtparse("print&!include", &postfix2) == NO)
		exit(1);
	while ((path = readpld(pdbp)) != NULL)
		{
		if (pdtmatch(&postfix2, path->p_type) == YES)
			printf("%s\n", path->p_alias);
		}

	/* print only directories which do not match `src' labels */
	rewindpdb(pdbp);
	if (pdtparse("!src", &postfix3) == NO)
		exit(1);
	while ((path = readpld(pdbp)) != NULL)
		{
		if (pdtmatch(&postfix3, path->p_type) == YES)
			printf("%s\n", path->p_alias);
		}
	closepdb(pdbp);
	exit(0);
}