|
|
1.1 ! root 1: -- pepytest.py - test out PEPY ! 2: ! 3: -- $Header: /f/osi/pepy/RCS/pepytest.py,v 7.0 89/11/23 22:11:57 mrose Rel $ ! 4: -- ! 5: -- ! 6: -- $Log: pepytest.py,v $ ! 7: -- Revision 7.0 89/11/23 22:11:57 mrose ! 8: -- Release 6.0 ! 9: -- ! 10: ! 11: -- ! 12: -- NOTICE ! 13: -- ! 14: -- Acquisition, use, and distribution of this module and related ! 15: -- materials are subject to the restrictions of a license agreement. ! 16: -- Consult the Preface in the User's Manual for the full terms of ! 17: -- this agreement. ! 18: -- ! 19: -- ! 20: ! 21: ! 22: PEPYTEST DEFINITIONS ::= ! 23: ! 24: %{ ! 25: #ifndef lint ! 26: static char *rcsid = "$Header: /f/osi/pepy/RCS/pepytest.py,v 7.0 89/11/23 22:11:57 mrose Rel $"; ! 27: #endif ! 28: ! 29: #include <stdio.h> ! 30: ! 31: /* DATA */ ! 32: ! 33: #define ps_advise(ps, f) \ ! 34: advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno)) ! 35: ! 36: ! 37: static char *myname = "pepytest"; ! 38: ! 39: static enum { ps2test, pl2test } mode = ps2test; ! 40: ! 41: ! 42: void adios (); ! 43: ! 44: /* MAIN */ ! 45: ! 46: /* ARGSUSED */ ! 47: ! 48: main (argc, argv, envp) ! 49: int argc; ! 50: char **argv, ! 51: **envp; ! 52: { ! 53: register int status = 0; ! 54: register char *cp; ! 55: register FILE *fp; ! 56: ! 57: myname = *argv; ! 58: for (argc--, argv++; cp = *argv; argc--, argv++) ! 59: if (*cp == '-') { ! 60: if (strcmp (cp + 1, "ps") == 0) { ! 61: mode = ps2test; ! 62: continue; ! 63: } ! 64: if (strcmp (cp + 1, "pl") == 0) { ! 65: mode = pl2test; ! 66: continue; ! 67: } ! 68: adios (NULLCP, "usage: %s [ -ps | -pl ] [ files... ]", ! 69: myname); ! 70: } ! 71: else ! 72: break; ! 73: ! 74: if (argc == 0) ! 75: status = process ("(stdin)", stdin); ! 76: else ! 77: while (cp = *argv++) { ! 78: if ((fp = fopen (cp, "r")) == NULL) { ! 79: advise (cp, "unable to read"); ! 80: status++; ! 81: continue; ! 82: } ! 83: status += process (cp, fp); ! 84: (void) fclose (fp); ! 85: } ! 86: ! 87: exit (status); /* NOTREACHED */ ! 88: } ! 89: ! 90: /* */ ! 91: ! 92: static int process (file, fp) ! 93: register char *file; ! 94: register FILE *fp; ! 95: { ! 96: register PE pe; ! 97: register PS ps; ! 98: ! 99: if ((ps = ps_alloc (std_open)) == NULLPS) { ! 100: ps_advise (ps, "ps_alloc"); ! 101: return 1; ! 102: } ! 103: if (std_setup (ps, fp) == NOTOK) { ! 104: advise (NULLCP, "%s: std_setup loses", file); ! 105: return 1; ! 106: } ! 107: ! 108: for (;;) { ! 109: switch (mode) { ! 110: case ps2test: ! 111: if ((pe = ps2pe (ps)) == NULLPE) ! 112: if (ps -> ps_errno) { ! 113: ps_advise (ps, "ps2pe"); ! 114: you_lose: ; ! 115: ps_free (ps); ! 116: return 1; ! 117: } ! 118: else { ! 119: done: ; ! 120: ps_free (ps); ! 121: return 0; ! 122: } ! 123: break; ! 124: ! 125: case pl2test: ! 126: if ((pe = pl2pe (ps)) == NULLPE) ! 127: if (ps -> ps_errno) { ! 128: ps_advise (ps, "pl2pe"); ! 129: goto you_lose; ! 130: } ! 131: else ! 132: goto done; ! 133: break; ! 134: } ! 135: ! 136: if (parse_PEPYTEST_PersonnelRecord (pe, 1, NULLIP, NULLVP, NULLCP) ! 137: == NOTOK) ! 138: advise (NULLCP, "parse error: %s", PY_pepy); ! 139: else ! 140: (void) print_PEPYTEST_PersonnelRecord (pe, 1, NULLIP, NULLVP, ! 141: NULLCP); ! 142: ! 143: pe_free (pe); ! 144: } ! 145: } ! 146: ! 147: /* */ ! 148: ! 149: %} ! 150: ! 151: BEGIN ! 152: ! 153: SECTIONS none parse print ! 154: ! 155: PersonnelRecord ! 156: ::= ! 157: [APPLICATION 0] ! 158: IMPLICIT SET { ! 159: Name, ! 160: ! 161: title[0] ! 162: VisibleString, ! 163: ! 164: number ! 165: EmployeeNumber, ! 166: ! 167: dateOfHire[1] ! 168: Date, ! 169: ! 170: nameOfSpouse[2] ! 171: Name, ! 172: ! 173: children[3] ! 174: IMPLICIT SEQUENCE OF ! 175: ChildInformation ! 176: DEFAULT {} ! 177: } ! 178: ! 179: ! 180: ChildInformation ::= ! 181: SET { ! 182: Name, ! 183: ! 184: dateofBirth[0] ! 185: Date ! 186: } ! 187: ! 188: ! 189: Name ::= ! 190: [APPLICATION 1] ! 191: IMPLICIT SEQUENCE { ! 192: givenName ! 193: VisibleString, ! 194: ! 195: initial ! 196: VisibleString, ! 197: ! 198: familyName ! 199: VisibleString ! 200: } ! 201: ! 202: ! 203: EmployeeNumber ::= ! 204: [APPLICATION 2] ! 205: IMPLICIT INTEGER ! 206: ! 207: ! 208: Date ::= ! 209: [APPLICATION 3] ! 210: IMPLICIT VisibleString -- YYYYMMDD ! 211: ! 212: END ! 213: ! 214: %{ ! 215: ! 216: /* ERRORS */ ! 217: ! 218: #include <varargs.h> ! 219: ! 220: ! 221: #ifndef lint ! 222: void _advise (); ! 223: ! 224: ! 225: static void adios (va_alist) ! 226: va_dcl ! 227: { ! 228: va_list ap; ! 229: ! 230: va_start (ap); ! 231: ! 232: _advise (ap); ! 233: ! 234: va_end (ap); ! 235: ! 236: _exit (1); ! 237: } ! 238: #else ! 239: /* VARARGS */ ! 240: ! 241: static void adios (what, fmt) ! 242: char *what, ! 243: *fmt; ! 244: { ! 245: adios (what, fmt); ! 246: } ! 247: #endif ! 248: ! 249: ! 250: #ifndef lint ! 251: static void advise (va_alist) ! 252: va_dcl ! 253: { ! 254: va_list ap; ! 255: ! 256: va_start (ap); ! 257: ! 258: _advise (ap); ! 259: ! 260: va_end (ap); ! 261: } ! 262: ! 263: ! 264: static void _advise (ap) ! 265: va_list ap; ! 266: { ! 267: char buffer[BUFSIZ]; ! 268: ! 269: asprintf (buffer, ap); ! 270: ! 271: (void) fflush (stdout); ! 272: ! 273: fprintf (stderr, "%s: ", myname); ! 274: (void) fputs (buffer, stderr); ! 275: (void) fputc ('\n', stderr); ! 276: ! 277: (void) fflush (stderr); ! 278: } ! 279: #else ! 280: /* VARARGS */ ! 281: ! 282: static void advise (what, fmt) ! 283: char *what, ! 284: *fmt; ! 285: { ! 286: advise (what, fmt); ! 287: } ! 288: #endif ! 289: ! 290: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.