home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Chans / x40088 / util.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  2.9 KB  |  179 lines

  1. /* util.c - x400 utilities */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Chans/x40088/RCS/util.c,v 6.0 1991/12/18 20:14:27 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Chans/x40088/RCS/util.c,v 6.0 1991/12/18 20:14:27 jpo Rel $
  9.  *
  10.  * $Log: util.c,v $
  11.  * Revision 6.0  1991/12/18  20:14:27  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include "util.h"
  19. #include <isode/rtsap.h>
  20. #include <varargs.h>
  21.  
  22.  
  23. extern char             *sys_errlist[];
  24. extern int              sys_nerr;
  25.  
  26. void                    adios(),
  27.             advise(),
  28.             rts_adios(),
  29.             rts_advise();
  30.  
  31.  
  32. #define NBBY            8
  33. #define RC_BASE         0x80
  34.  
  35. static char *reason_err0[] = {
  36.     "no specific reason stated",
  37.     "user receiving ability jeopardized",
  38.     "reserved(1)",
  39.     "user sequence error",
  40.     "reserved(2)",
  41.     "local SS-user error",
  42.     "unreceoverable procedural error"
  43.     };
  44.  
  45.  
  46. static int reason_err0_cnt = sizeof reason_err0 / sizeof reason_err0[0];
  47.  
  48.  
  49. static char *reason_err8[] = {
  50.     "demand data token"
  51.     };
  52.  
  53. static int reason_err8_cnt = sizeof reason_err8 / sizeof reason_err8[0];
  54.  
  55.  
  56.  
  57.  
  58. /* ---------------------  Begin  Routines  -------------------------------- */
  59.  
  60.  
  61.  
  62.  
  63. char   *SReportString (code)
  64. int     code;
  65. {
  66.     register int    fcode;
  67.     static char     buffer[BUFSIZ];
  68.  
  69.     if (code == SP_PROTOCOL)
  70.         return "SS-provider protocol error";
  71.  
  72.     code &= 0xff;
  73.     if (code & RC_BASE)
  74.         if ((fcode = code & ~RC_BASE) < reason_err8_cnt)
  75.             return reason_err8[fcode];
  76.     else
  77.         if (code < reason_err0_cnt)
  78.             return reason_err0[code];
  79.  
  80.     (void) sprintf (buffer, "unknown reason code 0x%x", code);
  81.     return buffer;
  82. }
  83.  
  84.  
  85. /* ---------------------  Logging Routines  ------------------------------- */
  86.  
  87.  
  88.  
  89. /*ERRORS*/
  90.  
  91. void rts_adios (rta, event)
  92. register struct RtSAPabort      *rta;
  93. char                            *event;
  94. {
  95.     rts_advise (rta, event);
  96.     _exit (1);
  97. }
  98.  
  99.  
  100.  
  101.  
  102. void rts_advise (rta, event)
  103. register struct RtSAPabort      *rta;
  104. char                            *event;
  105. {
  106.     char                    buffer[BUFSIZ];
  107.     extern int rts_sd;
  108.  
  109.     if (rta->rta_cc > 0)
  110.         (void) sprintf (buffer, "%s[%s] %*.*s",
  111.                 event,
  112.                 RtErrString (rta->rta_reason),
  113.                 rta->rta_cc, rta->rta_cc, rta->rta_data);
  114.     else
  115.         (void) sprintf (buffer, "%s [%s]", event,
  116.             RtErrString (rta->rta_reason));
  117.     if (RTS_FATAL (rta -> rta_reason))
  118.         rts_sd = NOTOK;
  119.     PP_LOG (LLOG_EXCEPTIONS, ("%s", buffer));
  120. }
  121.  
  122.  
  123.  
  124. #ifndef lint
  125. void    adios (va_alist)
  126. va_dcl
  127. {
  128.     va_list ap;
  129.  
  130.     va_start (ap);
  131.  
  132.     _ll_log (pp_log_oper, LLOG_FATAL, ap);
  133.     _ll_log (pp_log_norm, LLOG_FATAL, ap);
  134.  
  135.     va_end (ap);
  136.  
  137.     _exit (1);
  138. }
  139. #else
  140.  
  141. /* VARARGS2 */
  142. void    adios (what, fmt)
  143. char   *what,
  144.        *fmt;
  145. {
  146.     adios (what, fmt);
  147. }
  148. #endif
  149.  
  150.  
  151. #ifndef lint
  152. void    advise (va_alist)
  153. va_dcl
  154. {
  155.     int     code;
  156.     va_list ap;
  157.  
  158.     va_start (ap);
  159.  
  160.     code = va_arg (ap, int);
  161.  
  162.     _ll_log (pp_log_norm, code, ap);
  163.  
  164.     va_end (ap);
  165. }
  166. #else
  167.  
  168. /* VARARGS3 */
  169. void    advise (code, what, fmt)
  170. char   *what,
  171.        *fmt;
  172. int     code;
  173. {
  174.     advise (code, what, fmt);
  175. }
  176. #endif
  177.  
  178.  
  179.