|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 4208 (0x1070)
Types: TextFile
Names: »pepytest.py«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.0/pepy/pepytest.py«
-- pepytest.py - test out PEPY
-- $Header: /f/osi/pepy/RCS/pepytest.py,v 6.0 89/03/18 23:37:47 mrose Rel $
--
--
-- $Log: pepytest.py,v $
-- Revision 6.0 89/03/18 23:37:47 mrose
-- Release 5.0
--
--
-- NOTICE
--
-- Acquisition, use, and distribution of this module and related
-- materials are subject to the restrictions of a license agreement.
-- Consult the Preface in the User's Manual for the full terms of
-- this agreement.
--
--
PEPYTEST DEFINITIONS ::=
%{
#ifndef lint
static char *rcsid = "$Header: /f/osi/pepy/RCS/pepytest.py,v 6.0 89/03/18 23:37:47 mrose Rel $";
#endif
#include <stdio.h>
/* \f
DATA */
#define ps_advise(ps, f) \
advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno))
static char *myname = "pepytest";
static enum { ps2test, pl2test } mode = ps2test;
void adios ();
/* \f
MAIN */
/* ARGSUSED */
main (argc, argv, envp)
int argc;
char **argv,
**envp;
{
register int status = 0;
register char *cp;
register FILE *fp;
myname = *argv;
for (argc--, argv++; cp = *argv; argc--, argv++)
if (*cp == '-') {
if (strcmp (cp + 1, "ps") == 0) {
mode = ps2test;
continue;
}
if (strcmp (cp + 1, "pl") == 0) {
mode = pl2test;
continue;
}
adios (NULLCP, "usage: %s [ -ps | -pl ] [ files... ]",
myname);
}
else
break;
if (argc == 0)
status = process ("(stdin)", stdin);
else
while (cp = *argv++) {
if ((fp = fopen (cp, "r")) == NULL) {
advise (cp, "unable to read");
status++;
continue;
}
status += process (cp, fp);
(void) fclose (fp);
}
exit (status); /* NOTREACHED */
}
/* \f
*/
static int process (file, fp)
register char *file;
register FILE *fp;
{
register PE pe;
register PS ps;
if ((ps = ps_alloc (std_open)) == NULLPS) {
ps_advise (ps, "ps_alloc");
return 1;
}
if (std_setup (ps, fp) == NOTOK) {
advise (NULLCP, "%s: std_setup loses", file);
return 1;
}
for (;;) {
switch (mode) {
case ps2test:
if ((pe = ps2pe (ps)) == NULLPE)
if (ps -> ps_errno) {
ps_advise (ps, "ps2pe");
you_lose: ;
ps_free (ps);
return 1;
}
else {
done: ;
ps_free (ps);
return 0;
}
break;
case pl2test:
if ((pe = pl2pe (ps)) == NULLPE)
if (ps -> ps_errno) {
ps_advise (ps, "pl2pe");
goto you_lose;
}
else
goto done;
break;
}
if (parse_PEPYTEST_PersonnelRecord (pe, 1, NULLIP, NULLVP, NULLCP)
== NOTOK)
advise (NULLCP, "parse error: %s", PY_pepy);
else
(void) print_PEPYTEST_PersonnelRecord (pe, 1, NULLIP, NULLVP,
NULLCP);
pe_free (pe);
}
}
/* \f
*/
%}
BEGIN
SECTIONS none parse print
PersonnelRecord
::=
[APPLICATION 0]
IMPLICIT SET {
Name,
title[0]
VisibleString,
number
EmployeeNumber,
dateOfHire[1]
Date,
nameOfSpouse[2]
Name,
children[3]
IMPLICIT SEQUENCE OF
ChildInformation
DEFAULT {}
}
ChildInformation ::=
SET {
Name,
dateofBirth[0]
Date
}
Name ::=
[APPLICATION 1]
IMPLICIT SEQUENCE {
givenName
VisibleString,
initial
VisibleString,
familyName
VisibleString
}
EmployeeNumber ::=
[APPLICATION 2]
IMPLICIT INTEGER
Date ::=
[APPLICATION 3]
IMPLICIT VisibleString -- YYYYMMDD
END
%{
/* \f
ERRORS */
#include <varargs.h>
#ifndef lint
void _advise ();
static void adios (va_alist)
va_dcl
{
va_list ap;
va_start (ap);
_advise (ap);
va_end (ap);
_exit (1);
}
#else
/* VARARGS */
static void adios (what, fmt)
char *what,
*fmt;
{
adios (what, fmt);
}
#endif
#ifndef lint
static void advise (va_alist)
va_dcl
{
va_list ap;
va_start (ap);
_advise (ap);
va_end (ap);
}
static void _advise (ap)
va_list ap;
{
char buffer[BUFSIZ];
asprintf (buffer, ap);
(void) fflush (stdout);
fprintf (stderr, "%s: ", myname);
(void) fputs (buffer, stderr);
(void) fputc ('\n', stderr);
(void) fflush (stderr);
}
#else
/* VARARGS */
static void advise (what, fmt)
char *what,
*fmt;
{
advise (what, fmt);
}
#endif
%}