!<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); }