home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / sozobon / scsrc20 / szadb / prt.c < prev    next >
C/C++ Source or Header  |  1990-02-21  |  2KB  |  82 lines

  1. /* Copyright (c) 1990 by Sozobon, Limited.  Authors: Johann Ruegg, Don Dugger
  2.  *
  3.  * Permission is granted to anyone to use this software for any purpose
  4.  * on any computer system, and to redistribute it freely, with the
  5.  * following restrictions:
  6.  * 1) No charge may be made other than reasonable charges for reproduction.
  7.  * 2) Modified versions must be clearly marked as such.
  8.  * 3) The authors are not responsible for any harmful consequences
  9.  *    of using this software, even if they result from defects in it.
  10.  *
  11.  *    prt.c
  12.  */
  13.  
  14. #include "adb.h"
  15.  
  16. prtf(fmt, ap)
  17. char *fmt;
  18. int ap;
  19. {
  20.     extern char *ccodes[], *sizes[];
  21.     register long *lp, l;
  22.     register int *p, opc;
  23.     register char c, **cp;
  24.  
  25.     p = ≈
  26.     while (c = *fmt++)
  27.         switch (c) {
  28.         case '%':
  29.             switch (c = *fmt++) {
  30.             case 'i':
  31.                 l = (long)*p++;
  32.                 if (l < 0) {
  33.                     l = -l;
  34.                     putchr('-');
  35.                 }
  36.                 prtn(l, 0);
  37.                 break;
  38.             case 'I':
  39.                 lp = (long *)p;
  40.                 if ((l = *lp++) < 0) {
  41.                     l = -l;
  42.                     putchr('-');
  43.                 }
  44.                 prtn(l, 0);
  45.                 p = (int *)lp;
  46.                 break;
  47.             case 'A':
  48.                 lp = (long *)p;
  49.                 l = *lp++;
  50.                 prtad(l);
  51.                 p = (int *)lp;
  52.                 break;
  53.             case 'd':
  54.                 putchr('d');
  55.                 putchr('0' + *p++);
  56.                 break;
  57.             case 'a':
  58.                 if ((opc = *p++) == 7)
  59.                     prt("sp");
  60.                 else {
  61.                     putchr('a');
  62.                     putchr('0' + opc);
  63.                 }
  64.                 break;
  65.             case 'c':
  66.                 putchr(*p++);
  67.                 break;
  68.             case 's':
  69.                 cp = (char **)p;
  70.                 prt(*cp++);
  71.                 p = (int *)cp;
  72.                 break;
  73.             }
  74.             break;
  75.         default:
  76.             putchr(c);
  77.             break;
  78.  
  79.         }
  80.     return;
  81. }
  82.