|
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 m
Length: 5543 (0x15a7) Types: TextFile Names: »mpp88.py«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Tools/mpp88/mpp88.py«
-- mpp88.py: - test out PEPY -- @(#) $Header: /cs/research/pp/hubris/pp-beta/Tools/mpp88/RCS/mpp88.py,v 5.0 90/09/20 16:28:33 pp Exp Locker: pp $ -- -- $Log: mpp88.py,v $ -- Revision 5.0 90/09/20 16:28:33 pp -- rcsforce : 5.0 public release -- -- MPP DEFINITIONS ::= %{ #ifndef lint static char *rcsid = "$Header: /cs/research/pp/hubris/pp-beta/Tools/mpp88/RCS/mpp88.py,v 5.0 90/09/20 16:28:33 pp Exp Locker: pp $"; #endif lint #include <stdio.h> #define ps_advise(ps, f) \ advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno)) /* \f DATA */ int unpack = 1; static char *myname = "mpp88"; static enum { ps2mpp, pl2mpp } mode = ps2mpp; static enum format { p1, p2, p2hdr } topfmt = p2; void adios (); /* \f MAIN */ /* ARGSUSED */ main (argc, argv, envp) int argc; char **argv, **envp; { register int status = 0; register char *cp; register FILE *fp; if (myname = rindex (argv[0], '/')) myname++; if (myname == NULL || *myname == NULL) myname = argv[0]; for (argc--, argv++; cp = *argv; argc--, argv++) if (*cp == '-') { if (strcmp (cp + 1, "ps") == 0) { mode = ps2mpp; continue; } if (strcmp (cp + 1, "pl") == 0) { mode = pl2mpp; continue; } if (strcmp (cp + 1, "p1") == 0) { topfmt = p1; continue; } if (strcmp (cp + 1, "p2") == 0) { topfmt = p2; continue; } if (strcmp (cp + 1, "nounpack") == 0) { unpack = 0; continue; } if (strcmp (cp + 1, "p2hdr") == 0) { topfmt = p2hdr; continue; } adios (NULLCP, "usage: %s [ -ps | -pe ] [-p1 | -p2 | -p2hdr ] [ 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; { enum format curfmt = topfmt; 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 ps2mpp: if ((pe = ps2pe (ps)) == NULLPE) if (ps -> ps_errno) { ps_advise (ps, "ps2pe"); you_lose: ; if (pe != NULLPE) pe_free (pe); ps_free (ps); return 1; } else { done: ; ps_free (ps); return 0; } break; case pl2mpp: if ((pe = pl2pe (ps)) == NULLPE) if (ps -> ps_errno) { ps_advise (ps, "pl2pe"); goto you_lose; } else goto done; break; } switch (curfmt) { case p1: default: (void) print_Transfer_MtsAPDU (pe, 1, 0, NULLCP, NULL); break; case p2: (void) print_P22_InformationObject (pe, 1, NULLIP, NULLVP, NULLCP); break; case p2hdr: (void) print_P22_Heading (pe, 1, NULLIP, NULLVP, NULLCP); break; } pe_free (pe); } } /* \f */ %} BEGIN END %{ /* \f DEBUG */ #ifdef DEBUG testdebug (pe, s) register PE pe; register char *s; { static int debug = OK; char *cp; register PS ps; switch (debug) { case NOTOK: break; case OK: if ((debug = (cp = getenv ("PEPYDEBUG")) && *cp ? atoi (cp) : NOTOK) == NOTOK) break; fprintf (stderr, "%s made with %s\n", myname, pepyid); default: fprintf (stderr, "%s\n", s); if ((ps = ps_alloc (std_open)) == NULLPS) return; if (std_setup (ps, stderr) != NOTOK) (void) pe2pl (ps, pe); fprintf (stderr, "--------\n"); ps_free (ps); break; } } #endif DEBUG /* \f ERRORS */ /* VARARGS2 */ void adios (what, fmt, a, b, c, d, e, f, g, h, i, j) char *what, *fmt, *a, *b, *c, *d, *e, *f, *g, *h, *i, *j; { advise (what, fmt, a, b, c, d, e, f, g, h, i, j); _exit (1); } /* \f */ /* VARARGS2 */ void advise (what, fmt, a, b, c, d, e, f, g, h, i, j) char *what, *fmt, *a, *b, *c, *d, *e, *f, *g, *h, *i, *j; { (void) fflush (stdout); fprintf (stderr, "%s: ", myname); fprintf (stderr, fmt, a, b, c, d, e, f, g, h, i, j); if (what) (void) fputc (' ', stderr), perror (what); else (void) fputc ('\n', stderr); (void) fflush (stderr); } %}