struct rpc_errtab
void clnt_pcreateerror (const char *msg)
libc_hidden_def (clnt_perror)struct rpc_errtab{  enum clnt_stat status;  unsigned int message_off;};static const char rpc_errstr[] ={#define RPC_SUCCESS_IDX		0  N_("RPC: Success")  "\0"#define RPC_CANTENCODEARGS_IDX	(RPC_SUCCESS_IDX + sizeof "RPC: Success")  N_("RPC: Can't encode arguments")  "\0"#define RPC_CANTDECODERES_IDX	(RPC_CANTENCODEARGS_IDX \				 + sizeof "RPC: Can't encode arguments")  N_("RPC: Can't decode result")  "\0"#define RPC_CANTSEND_IDX	(RPC_CANTDECODERES_IDX \				 + sizeof "RPC: Can't decode result")  N_("RPC: Unable to send")  "\0"#define RPC_CANTRECV_IDX	(RPC_CANTSEND_IDX \				 + sizeof "RPC: Unable to send")  N_("RPC: Unable to receive")  "\0"#define RPC_TIMEDOUT_IDX	(RPC_CANTRECV_IDX \				 + sizeof "RPC: Unable to receive")  N_("RPC: Timed out")  "\0"#define RPC_VERSMISMATCH_IDX	(RPC_TIMEDOUT_IDX \				 + sizeof "RPC: Timed out")  N_("RPC: Incompatible versions of RPC")  "\0"#define RPC_AUTHERROR_IDX	(RPC_VERSMISMATCH_IDX \				 + sizeof "RPC: Incompatible versions of RPC")  N_("RPC: Authentication error")  "\0"#define RPC_PROGUNAVAIL_IDX		(RPC_AUTHERROR_IDX \				 + sizeof "RPC: Authentication error")  N_("RPC: Program unavailable")  "\0"#define RPC_PROGVERSMISMATCH_IDX (RPC_PROGUNAVAIL_IDX \				  + sizeof "RPC: Program unavailable")  N_("RPC: Program/version mismatch")  "\0"#define RPC_PROCUNAVAIL_IDX	(RPC_PROGVERSMISMATCH_IDX \				 + sizeof "RPC: Program/version mismatch")  N_("RPC: Procedure unavailable")  "\0"#define RPC_CANTDECODEARGS_IDX	(RPC_PROCUNAVAIL_IDX \				 + sizeof "RPC: Procedure unavailable")  N_("RPC: Server can't decode arguments")  "\0"#define RPC_SYSTEMERROR_IDX	(RPC_CANTDECODEARGS_IDX \				 + sizeof "RPC: Server can't decode arguments")  N_("RPC: Remote system error")  "\0"#define RPC_UNKNOWNHOST_IDX	(RPC_SYSTEMERROR_IDX \				 + sizeof "RPC: Remote system error")  N_("RPC: Unknown host")  "\0"#define RPC_UNKNOWNPROTO_IDX	(RPC_UNKNOWNHOST_IDX \				 + sizeof "RPC: Unknown host")  N_("RPC: Unknown protocol")  "\0"#define RPC_PMAPFAILURE_IDX	(RPC_UNKNOWNPROTO_IDX \				 + sizeof "RPC: Unknown protocol")  N_("RPC: Port mapper failure")  "\0"#define RPC_PROGNOTREGISTERED_IDX (RPC_PMAPFAILURE_IDX \				   + sizeof "RPC: Port mapper failure")  N_("RPC: Program not registered")  "\0"#define RPC_FAILED_IDX		(RPC_PROGNOTREGISTERED_IDX \				 + sizeof "RPC: Program not registered")  N_("RPC: Failed (unspecified error)")};static const struct rpc_errtab rpc_errlist[] ={  { RPC_SUCCESS, RPC_SUCCESS_IDX },  { RPC_CANTENCODEARGS, RPC_CANTENCODEARGS_IDX },  { RPC_CANTDECODERES, RPC_CANTDECODERES_IDX },  { RPC_CANTSEND, RPC_CANTSEND_IDX },  { RPC_CANTRECV, RPC_CANTRECV_IDX },  { RPC_TIMEDOUT, RPC_TIMEDOUT_IDX },  { RPC_VERSMISMATCH, RPC_VERSMISMATCH_IDX },  { RPC_AUTHERROR, RPC_AUTHERROR_IDX },  { RPC_PROGUNAVAIL, RPC_PROGUNAVAIL_IDX },  { RPC_PROGVERSMISMATCH, RPC_PROGVERSMISMATCH_IDX },  { RPC_PROCUNAVAIL, RPC_PROCUNAVAIL_IDX },  { RPC_CANTDECODEARGS, RPC_CANTDECODEARGS_IDX },  { RPC_SYSTEMERROR, RPC_SYSTEMERROR_IDX },  { RPC_UNKNOWNHOST, RPC_UNKNOWNHOST_IDX },  { RPC_UNKNOWNPROTO, RPC_UNKNOWNPROTO_IDX },  { RPC_PMAPFAILURE, RPC_PMAPFAILURE_IDX },  { RPC_PROGNOTREGISTERED, RPC_PROGNOTREGISTERED_IDX },  { RPC_FAILED, RPC_FAILED_IDX }};/* * This interface for use by clntrpc */char *clnt_sperrno (enum clnt_stat stat){  size_t i;  for (i = 0; i < sizeof (rpc_errlist) / sizeof (struct rpc_errtab); i++)    {      if (rpc_errlist[i].status == stat)	{	  return _(rpc_errstr + rpc_errlist[i].message_off);	}    }  return _("RPC: (unknown error code)");}