#pragma prototyped
static const char id[] = "\n@(#)$Id: mamtst ([email protected]) 1992-08-11 $\0\n";
#include <mam.h>
#include <ctype.h>
#include <error.h>
static void
dumprule(register struct rule* r)
{
sfprintf(sfstdout, "\t%s\n", r->name);
}
static void
dumpproc(register struct proc* pp)
{
register struct list* p;
register struct proc* cp;
if (pp->parent) sfputc(sfstdout, '\n');
sfprintf(sfstdout, "process %s pid %d ppid %d start %lu finish %lu status %d\n", pp->pwd, pp->pid, pp->parent ? pp->parent->pid : 0, pp->start, pp->finish, pp->status);
for (p = pp->root->prereqs; p; p = p->next)
dumprule(p->rule);
for (cp = pp->child; cp; cp = cp->sibling)
dumpproc(cp);
}
main(int argc, char** argv)
{
register int c;
struct mam* mp;
NoP(argc);
error_info.id = "mamtst";
while (c = optget(argv, "d#[debug]")) switch (c)
{
case 'd':
error_info.trace = -opt_info.num;
break;
case '?':
error(ERROR_USAGE|4, opt_info.arg);
break;
case ':':
error(2, opt_info.arg);
break;
}
if (error_info.errors) error(ERROR_USAGE|4, "%s", optusage(NiL));
if (!(mp = mamalloc()))
error(3, "cannot initialize");
if (mamscan(mp, NiL) < 0)
error(3, "invalid input");
dumpproc(mp->main);
exit(error_info.errors != 0);
}