home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume6 / rpc2 / part06 / rpc / rpclib / clnt_perror.c < prev    next >
Encoding:
C/C++ Source or Header  |  1986-11-30  |  5.2 KB  |  231 lines

  1. /*
  2.  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  3.  * unrestricted use provided that this legend is included on all tape
  4.  * media and as a part of the software program in whole or part.  Users
  5.  * may copy or modify Sun RPC without charge, but are not authorized
  6.  * to license or distribute it to anyone else except as part of a product or
  7.  * program developed by the user.
  8.  * 
  9.  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  10.  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  11.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  12.  * 
  13.  * Sun RPC is provided with no support and without any obligation on the
  14.  * part of Sun Microsystems, Inc. to assist in its use, correction,
  15.  * modification or enhancement.
  16.  * 
  17.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  18.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  19.  * OR ANY PART THEREOF.
  20.  * 
  21.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  22.  * or profits or other special, indirect and consequential damages, even if
  23.  * Sun has been advised of the possibility of such damages.
  24.  * 
  25.  * Sun Microsystems, Inc.
  26.  * 2550 Garcia Avenue
  27.  * Mountain View, California  94043
  28.  */
  29. #ifndef lint
  30. static char sccsid[] = "@(#)clnt_perror.c 1.1 86/02/03 Copyr 1984 Sun Micro";
  31. #endif
  32.  
  33. /*
  34.  * clnt_perror.c
  35.  *
  36.  * Copyright (C) 1984, Sun Microsystems, Inc.
  37.  *
  38.  */
  39. #include "types.h"
  40. #include "xdr.h"
  41. #include "auth.h"
  42. #include "clnt.h"
  43. #include "rpc_msg.h"
  44. #include <stdio.h>
  45. extern char *sys_errlist[];
  46.  
  47. /*
  48.  * Print reply error info
  49.  */
  50. void
  51. clnt_perror(rpch, s)
  52.     CLIENT *rpch;
  53.     char *s;
  54. {
  55.     struct rpc_err e;
  56.     void clnt_perrno();
  57.  
  58.     CLNT_GETERR(rpch, &e);
  59.     fprintf(stderr, "%s: ", s);
  60.     switch (e.re_status) {
  61.         case RPC_SUCCESS:
  62.         case RPC_CANTENCODEARGS:
  63.         case RPC_CANTDECODERES:
  64.         case RPC_TIMEDOUT:
  65.         case RPC_PROGUNAVAIL:
  66.         case RPC_PROCUNAVAIL:
  67.         case RPC_CANTDECODEARGS:
  68.             clnt_perrno(e.re_status);
  69.             break;
  70.         case RPC_CANTSEND:
  71.             clnt_perrno(e.re_status);
  72.             fprintf(stderr, "; errno = %s",
  73.                 sys_errlist[e.re_errno]);
  74.             break;
  75.     
  76.         case RPC_CANTRECV:
  77.             clnt_perrno(e.re_status);
  78.             fprintf(stderr, "; errno = %s",
  79.                 sys_errlist[e.re_errno]);
  80.             break;
  81.     
  82.         case RPC_VERSMISMATCH:
  83.             clnt_perrno(e.re_status);
  84.             fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
  85.             break;
  86.     
  87.         case RPC_AUTHERROR:
  88.             clnt_perrno(e.re_status);
  89.             fprintf(stderr, "; why = ");
  90.             switch (e.re_why) {
  91.             case AUTH_OK:
  92.                 fprintf(stderr, "AUTH_OK");
  93.                 break;
  94.     
  95.             case AUTH_BADCRED:
  96.                 fprintf(stderr, "AUTH_BOGUS_CREDENTIAL");
  97.                 break;
  98.     
  99.             case AUTH_REJECTEDCRED:
  100.                 fprintf(stderr, "AUTH_REJECTED_CREDENTIAL");
  101.                 break;
  102.     
  103.             case AUTH_BADVERF:
  104.                 fprintf(stderr, "AUTH_BOGUS_VERIFIER");
  105.                 break;
  106.     
  107.             case AUTH_REJECTEDVERF:
  108.                 fprintf(stderr, "AUTH_REJECTED_VERIFIER");
  109.                 break;
  110.     
  111.             case AUTH_TOOWEAK:
  112.                 fprintf(stderr, "AUTH_TOO_WEAK (remote error)");
  113.                 break;
  114.     
  115.             case AUTH_INVALIDRESP:
  116.                 fprintf(stderr, "AUTH_INVALID_RESPONSE");
  117.                 break;
  118.     
  119.             default:
  120.                 fprintf(stderr, "AUTH_UNKNOWN_FAILURE");
  121.                 break;
  122.             }
  123.             break;
  124.     
  125.         case RPC_PROGVERSMISMATCH:
  126.             clnt_perrno(e.re_status);
  127.             fprintf(stderr, "; low version = %lu, high version = %lu", e.re_vers.low, e.re_vers.high);
  128.             break;
  129.     
  130.         default:
  131.             fprintf(stderr, "RPC_UNKNOWN_FAILURE; s1 = %lu, s2 = %lu", e.re_lb.s1, e.re_lb.s2);
  132.             break;
  133.     }
  134.     fprintf(stderr, "\n");
  135. }
  136.  
  137. /*
  138.  * This interface for use by clntrpc
  139.  */
  140. void
  141. clnt_perrno(num)
  142.     enum clnt_stat num;
  143. {
  144.     switch (num) {
  145.         case RPC_SUCCESS:
  146.             fprintf(stderr, "RPC_SUCCESS");
  147.             break;
  148.     
  149.         case RPC_CANTENCODEARGS:
  150.             fprintf(stderr, "RPC_CANT_ENCODE_ARGS");
  151.             break;
  152.     
  153.         case RPC_CANTDECODERES:
  154.             fprintf(stderr, "RPC_CANT_DECODE_RESULTS");
  155.             break;
  156.     
  157.         case RPC_CANTSEND:
  158.             fprintf(stderr, "RPC_CANT_SEND");
  159.             break;
  160.     
  161.         case RPC_CANTRECV:
  162.             fprintf(stderr, "RPC_CANT_RECV");
  163.             break;
  164.     
  165.         case RPC_TIMEDOUT:
  166.             fprintf(stderr, "RPC_TIMED_OUT");
  167.             break;
  168.     
  169.         case RPC_VERSMISMATCH:
  170.             fprintf(stderr, "RPC_VERSION_MISMATCH");
  171.             break;
  172.     
  173.         case RPC_AUTHERROR:
  174.             fprintf(stderr, "RPC_AUTH_ERROR");
  175.             break;
  176.     
  177.         case RPC_PROGUNAVAIL:
  178.             fprintf(stderr, "RPC_REMOTE_PROGRAM_UNAVAILABLE");
  179.             break;
  180.     
  181.         case RPC_PROGVERSMISMATCH:
  182.             fprintf(stderr, "RPC_PROGRAM_MISMATCH");
  183.             break;
  184.     
  185.         case RPC_PROCUNAVAIL:
  186.             fprintf(stderr, "RPC_UNKNOWN_PROCEDURE");
  187.             break;
  188.     
  189.         case RPC_CANTDECODEARGS:
  190.             fprintf(stderr, "RPC_CANT_DECODE_ARGS");
  191.             break;
  192.         case RPC_UNKNOWNHOST:
  193.             fprintf(stderr, "RPC_UNKNOWNHOST");
  194.             break;
  195.         case RPC_PMAPFAILURE:
  196.             fprintf(stderr, "RPC_PMAP_FAILURE");
  197.             break;
  198.         case RPC_PROGNOTREGISTERED:
  199.             fprintf(stderr, "RPC_PROG_NOT_REGISTERED");
  200.             break;
  201.         case RPC_SYSTEMERROR:
  202.             fprintf(stderr, "RPC_SYSTEM_ERROR");
  203.             break;
  204.     }
  205. }
  206.  
  207. /*
  208.  * A handle on why an rpc creation routine failed (returned NULL.)
  209.  */
  210. struct rpc_createerr rpc_createerr;
  211.  
  212. clnt_pcreateerror(s)
  213.     char *s;
  214. {
  215.  
  216.     fprintf(stderr, "%s: ", s);
  217.     clnt_perrno(rpc_createerr.cf_stat);
  218.     switch (rpc_createerr.cf_stat) {
  219.         case RPC_PMAPFAILURE:
  220.             fprintf(stderr, " - ");
  221.             clnt_perrno(rpc_createerr.cf_error.re_status);
  222.             break;
  223.  
  224.         case RPC_SYSTEMERROR:
  225.             fprintf(stderr, " - %s", sys_errlist[rpc_createerr.cf_error.re_errno]);
  226.             break;
  227.  
  228.     }
  229.     fprintf(stderr, "\n");
  230. }
  231.