|
|
1.1 ! root 1: -- mpp.py - test out PEPY ! 2: ! 3: -- $Header: /f/osi/pepy/RCS/mpp.py,v 7.0 89/11/23 22:11:43 mrose Rel $ ! 4: -- ! 5: -- ! 6: -- $Log: mpp.py,v $ ! 7: -- Revision 7.0 89/11/23 22:11:43 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: MPP DEFINITIONS ::= ! 23: ! 24: %{ ! 25: #ifndef lint ! 26: static char *rcsid = "$Header: /f/osi/pepy/RCS/mpp.py,v 7.0 89/11/23 22:11:43 mrose Rel $"; ! 27: #endif ! 28: ! 29: #include <stdio.h> ! 30: ! 31: ! 32: #define ps_advise(ps, f) \ ! 33: advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno)) ! 34: ! 35: /* DATA */ ! 36: ! 37: static char *myname = "mpp"; ! 38: ! 39: static enum { ps2mpp, pl2mpp } mode = ps2mpp; ! 40: ! 41: static enum format { p1, p2, sfd, ean, eanp2 } topfmt = ean; ! 42: ! 43: ! 44: void adios (); ! 45: ! 46: /* MAIN */ ! 47: ! 48: /* ARGSUSED */ ! 49: ! 50: main (argc, argv, envp) ! 51: int argc; ! 52: char **argv, ! 53: **envp; ! 54: { ! 55: register int status = 0; ! 56: register char *cp; ! 57: register FILE *fp; ! 58: ! 59: if (myname = rindex (argv[0], '/')) ! 60: myname++; ! 61: if (myname == NULL || *myname == NULL) ! 62: myname = argv[0]; ! 63: ! 64: for (argc--, argv++; cp = *argv; argc--, argv++) ! 65: if (*cp == '-') { ! 66: if (strcmp (cp + 1, "ps") == 0) { ! 67: mode = ps2mpp; ! 68: continue; ! 69: } ! 70: if (strcmp (cp + 1, "pl") == 0) { ! 71: mode = pl2mpp; ! 72: continue; ! 73: } ! 74: if (strcmp (cp + 1, "p1") == 0) { ! 75: topfmt = p1; ! 76: continue; ! 77: } ! 78: if (strcmp (cp + 1, "p2") == 0) { ! 79: topfmt = p2; ! 80: continue; ! 81: } ! 82: if (strcmp (cp + 1, "sfd") == 0) { ! 83: topfmt = sfd; ! 84: continue; ! 85: } ! 86: if (strcmp (cp + 1, "ean") == 0) { ! 87: topfmt = ean; ! 88: continue; ! 89: } ! 90: adios (NULLCP, "usage: %s [ -ps | -pl ] [-p1 | -p2 | -sfd | -ean ] [ files... ]", ! 91: myname); ! 92: } ! 93: else ! 94: break; ! 95: ! 96: if (argc == 0) ! 97: status = process ("(stdin)", stdin); ! 98: else ! 99: while (cp = *argv++) { ! 100: if ((fp = fopen (cp, "r")) == NULL) { ! 101: advise (cp, "unable to read"); ! 102: status++; ! 103: continue; ! 104: } ! 105: status += process (cp, fp); ! 106: (void) fclose (fp); ! 107: } ! 108: ! 109: exit (status); /* NOTREACHED */ ! 110: } ! 111: ! 112: /* */ ! 113: ! 114: static int process (file, fp) ! 115: register char *file; ! 116: register FILE *fp; ! 117: { ! 118: enum format curfmt = topfmt; ! 119: register PE pe; ! 120: register PS ps; ! 121: ! 122: if ((ps = ps_alloc (std_open)) == NULLPS) { ! 123: ps_advise (ps, "ps_alloc"); ! 124: return 1; ! 125: } ! 126: if (std_setup (ps, fp) == NOTOK) { ! 127: advise (NULLCP, "%s: std_setup loses", file); ! 128: return 1; ! 129: } ! 130: ! 131: for (;;) { ! 132: switch (mode) { ! 133: case ps2mpp: ! 134: if ((pe = ps2pe (ps)) == NULLPE) ! 135: if (ps -> ps_errno) { ! 136: ps_advise (ps, "ps2pe"); ! 137: you_lose: ; ! 138: ps_free (ps); ! 139: return 1; ! 140: } ! 141: else { ! 142: done: ; ! 143: ps_free (ps); ! 144: return 0; ! 145: } ! 146: break; ! 147: ! 148: case pl2mpp: ! 149: if ((pe = pl2pe (ps)) == NULLPE) ! 150: if (ps -> ps_errno) { ! 151: ps_advise (ps, "pl2pe"); ! 152: goto you_lose; ! 153: } ! 154: else ! 155: goto done; ! 156: break; ! 157: } ! 158: ! 159: switch (curfmt) { ! 160: case p1: ! 161: default: ! 162: (void) print_P1_MPDU (pe, 1, NULLIP, NULLVP, NULLCP); ! 163: break; ! 164: ! 165: case p2: ! 166: (void) print_P2_UAPDU (pe, 1, NULLIP, NULLVP, NULLCP); ! 167: break; ! 168: ! 169: case sfd: ! 170: (void) print_SFD_Document (pe, 1, NULLIP, NULLVP, NULLCP); ! 171: break; ! 172: ! 173: case ean: ! 174: (void) print_EAN_MPDU (pe, 1, NULLIP, NULLVP, NULLCP); ! 175: curfmt = eanp2; ! 176: break; ! 177: ! 178: case eanp2: ! 179: (void) print_EAN_UAPDU (pe, 1, NULLIP, NULLVP, NULLCP); ! 180: curfmt = ean; ! 181: break; ! 182: } ! 183: ! 184: pe_free (pe); ! 185: } ! 186: } ! 187: ! 188: /* */ ! 189: ! 190: %} ! 191: ! 192: BEGIN ! 193: ! 194: END ! 195: ! 196: %{ ! 197: ! 198: /* ERRORS */ ! 199: ! 200: #include <varargs.h> ! 201: ! 202: ! 203: #ifndef lint ! 204: void _advise (); ! 205: ! 206: ! 207: void adios (va_alist) ! 208: va_dcl ! 209: { ! 210: va_list ap; ! 211: ! 212: va_start (ap); ! 213: ! 214: _advise (ap); ! 215: ! 216: va_end (ap); ! 217: ! 218: _exit (1); ! 219: } ! 220: #else ! 221: /* VARARGS */ ! 222: ! 223: void adios (what, fmt) ! 224: char *what, ! 225: *fmt; ! 226: { ! 227: adios (what, fmt); ! 228: } ! 229: #endif ! 230: ! 231: ! 232: #ifndef lint ! 233: static void advise (va_alist) ! 234: va_dcl ! 235: { ! 236: va_list ap; ! 237: ! 238: va_start (ap); ! 239: ! 240: _advise (ap); ! 241: ! 242: va_end (ap); ! 243: } ! 244: ! 245: ! 246: static void _advise (ap) ! 247: va_list ap; ! 248: { ! 249: char buffer[BUFSIZ]; ! 250: ! 251: asprintf (buffer, ap); ! 252: ! 253: (void) fflush (stdout); ! 254: ! 255: fprintf (stderr, "%s: ", myname); ! 256: (void) fputs (buffer, stderr); ! 257: (void) fputc ('\n', stderr); ! 258: ! 259: (void) fflush (stderr); ! 260: } ! 261: #else ! 262: /* VARARGS */ ! 263: ! 264: static void advise (what, fmt) ! 265: char *what, ! 266: *fmt; ! 267: { ! 268: advise (what, fmt); ! 269: } ! 270: #endif ! 271: ! 272: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.