diff options
Diffstat (limited to 'sunrpc/clnt_perr.c')
-rw-r--r-- | sunrpc/clnt_perr.c | 406 |
1 files changed, 202 insertions, 204 deletions
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c index 147a5ea23c..68f3640cd7 100644 --- a/sunrpc/clnt_perr.c +++ b/sunrpc/clnt_perr.c @@ -38,165 +38,156 @@ static char sccsid[] = "@(#)clnt_perror.c 1.15 87/10/07 Copyr 1984 Sun Micro"; * */ #include <stdio.h> - +#include <string.h> #include <rpc/types.h> #include <rpc/auth.h> #include <rpc/clnt.h> -/* extern char *sys_errlist[]; --drepper@gnu */ -/* extern char *sprintf(); --roland@gnu */ -static char *auth_errmsg(); - -extern char *strcpy(); +static char *auth_errmsg (enum auth_stat stat); static char *buf; static char * -_buf() +_buf (void) { - - if (buf == 0) - buf = (char *)malloc(256); - return (buf); + if (buf == NULL) + buf = (char *) malloc (256); + return buf; } /* * Print reply error info */ char * -clnt_sperror(rpch, s) - CLIENT *rpch; - char *s; +clnt_sperror (CLIENT * rpch, const char *msg) { - struct rpc_err e; - void clnt_perrno(); - char *err; - char *str = _buf(); - char *strstart = str; - - if (str == 0) - return (0); - CLNT_GETERR(rpch, &e); - - (void) sprintf(str, "%s: ", s); - str += strlen(str); - - (void) strcpy(str, clnt_sperrno(e.re_status)); - str += strlen(str); - - switch (e.re_status) { - case RPC_SUCCESS: - case RPC_CANTENCODEARGS: - case RPC_CANTDECODERES: - case RPC_TIMEDOUT: - case RPC_PROGUNAVAIL: - case RPC_PROCUNAVAIL: - case RPC_CANTDECODEARGS: - case RPC_SYSTEMERROR: - case RPC_UNKNOWNHOST: - case RPC_UNKNOWNPROTO: - case RPC_PMAPFAILURE: - case RPC_PROGNOTREGISTERED: - case RPC_FAILED: - break; - - case RPC_CANTSEND: - case RPC_CANTRECV: - (void) sprintf(str, "; errno = %s", - sys_errlist[e.re_errno]); - str += strlen(str); - break; - - case RPC_VERSMISMATCH: - (void) sprintf(str, - _("; low version = %lu, high version = %lu"), - e.re_vers.low, e.re_vers.high); - str += strlen(str); - break; - - case RPC_AUTHERROR: - err = auth_errmsg(e.re_why); - (void) sprintf(str,_("; why = ")); - str += strlen(str); - if (err != NULL) { - (void) sprintf(str, "%s",err); - } else { - (void) sprintf(str, - _("(unknown authentication error - %d)"), - (int) e.re_why); - } - str += strlen(str); - break; - - case RPC_PROGVERSMISMATCH: - (void) sprintf(str, - _("; low version = %lu, high version = %lu"), - e.re_vers.low, e.re_vers.high); - str += strlen(str); - break; - - default: /* unknown */ - (void) sprintf(str, - "; s1 = %lu, s2 = %lu", - e.re_lb.s1, e.re_lb.s2); - str += strlen(str); - break; + char buf[1024]; + struct rpc_err e; + char *err; + char *str = _buf (); + char *strstart = str; + int len; + + if (str == NULL) + return NULL; + CLNT_GETERR (rpch, &e); + + len = sprintf (str, "%s: ", msg); + str += len; + + str = stpcpy (str, clnt_sperrno (e.re_status)); + + switch (e.re_status) + { + case RPC_SUCCESS: + case RPC_CANTENCODEARGS: + case RPC_CANTDECODERES: + case RPC_TIMEDOUT: + case RPC_PROGUNAVAIL: + case RPC_PROCUNAVAIL: + case RPC_CANTDECODEARGS: + case RPC_SYSTEMERROR: + case RPC_UNKNOWNHOST: + case RPC_UNKNOWNPROTO: + case RPC_PMAPFAILURE: + case RPC_PROGNOTREGISTERED: + case RPC_FAILED: + break; + + case RPC_CANTSEND: + case RPC_CANTRECV: + len = sprintf (str, "; errno = %s", strerror_r (e.re_errno, + buf, sizeof buf)); + str += len; + break; + + case RPC_VERSMISMATCH: + len= sprintf (str, _("; low version = %lu, high version = %lu"), + e.re_vers.low, e.re_vers.high); + str += len; + break; + + case RPC_AUTHERROR: + err = auth_errmsg (e.re_why); + str = stpcpy (str, _ ("; why = ")); + if (err != NULL) + { + str = stpcpy (str, err); + } + else + { + len = sprintf (str, _("(unknown authentication error - %d)"), + (int) e.re_why); + str += len; } - (void) sprintf(str, "\n"); - return(strstart) ; + break; + + case RPC_PROGVERSMISMATCH: + len = sprintf (str, _("; low version = %lu, high version = %lu"), + e.re_vers.low, e.re_vers.high); + str += len; + break; + + default: /* unknown */ + len = sprintf (str, "; s1 = %lu, s2 = %lu", e.re_lb.s1, e.re_lb.s2); + str += len; + break; + } + *str = '\n'; + return (strstart); } void -clnt_perror(rpch, s) - CLIENT *rpch; - char *s; +clnt_perror (CLIENT * rpch, const char *msg) { - (void) fprintf(stderr,"%s",clnt_sperror(rpch,s)); + (void) fputs (clnt_sperror (rpch, msg), stderr); } -struct rpc_errtab { - enum clnt_stat status; - char *message; +struct rpc_errtab +{ + enum clnt_stat status; + const char *message; }; -static struct rpc_errtab rpc_errlist[] = { - { RPC_SUCCESS, - N_("RPC: Success") }, - { RPC_CANTENCODEARGS, - N_("RPC: Can't encode arguments") }, - { RPC_CANTDECODERES, - N_("RPC: Can't decode result") }, - { RPC_CANTSEND, - N_("RPC: Unable to send") }, - { RPC_CANTRECV, - N_("RPC: Unable to receive") }, - { RPC_TIMEDOUT, - N_("RPC: Timed out") }, - { RPC_VERSMISMATCH, - N_("RPC: Incompatible versions of RPC") }, - { RPC_AUTHERROR, - N_("RPC: Authentication error") }, - { RPC_PROGUNAVAIL, - N_("RPC: Program unavailable") }, - { RPC_PROGVERSMISMATCH, - N_("RPC: Program/version mismatch") }, - { RPC_PROCUNAVAIL, - N_("RPC: Procedure unavailable") }, - { RPC_CANTDECODEARGS, - N_("RPC: Server can't decode arguments") }, - { RPC_SYSTEMERROR, - N_("RPC: Remote system error") }, - { RPC_UNKNOWNHOST, - N_("RPC: Unknown host") }, - { RPC_UNKNOWNPROTO, - N_("RPC: Unknown protocol") }, - { RPC_PMAPFAILURE, - N_("RPC: Port mapper failure") }, - { RPC_PROGNOTREGISTERED, - N_("RPC: Program not registered") }, - { RPC_FAILED, - N_("RPC: Failed (unspecified error)") } +static const struct rpc_errtab rpc_errlist[] = +{ + {RPC_SUCCESS, + N_("RPC: Success")}, + {RPC_CANTENCODEARGS, + N_("RPC: Can't encode arguments")}, + {RPC_CANTDECODERES, + N_("RPC: Can't decode result")}, + {RPC_CANTSEND, + N_("RPC: Unable to send")}, + {RPC_CANTRECV, + N_("RPC: Unable to receive")}, + {RPC_TIMEDOUT, + N_("RPC: Timed out")}, + {RPC_VERSMISMATCH, + N_("RPC: Incompatible versions of RPC")}, + {RPC_AUTHERROR, + N_("RPC: Authentication error")}, + {RPC_PROGUNAVAIL, + N_("RPC: Program unavailable")}, + {RPC_PROGVERSMISMATCH, + N_("RPC: Program/version mismatch")}, + {RPC_PROCUNAVAIL, + N_("RPC: Procedure unavailable")}, + {RPC_CANTDECODEARGS, + N_("RPC: Server can't decode arguments")}, + {RPC_SYSTEMERROR, + N_("RPC: Remote system error")}, + {RPC_UNKNOWNHOST, + N_("RPC: Unknown host")}, + {RPC_UNKNOWNPROTO, + N_("RPC: Unknown protocol")}, + {RPC_PMAPFAILURE, + N_("RPC: Port mapper failure")}, + {RPC_PROGNOTREGISTERED, + N_("RPC: Program not registered")}, + {RPC_FAILED, + N_("RPC: Failed (unspecified error)")} }; @@ -204,102 +195,109 @@ static struct rpc_errtab rpc_errlist[] = { * This interface for use by clntrpc */ char * -clnt_sperrno(stat) - enum clnt_stat stat; +clnt_sperrno (enum clnt_stat stat) { - int i; + int i; - for (i = 0; i < sizeof(rpc_errlist)/sizeof(struct rpc_errtab); i++) { - if (rpc_errlist[i].status == stat) { - return _(rpc_errlist[i].message); - } + for (i = 0; i < sizeof (rpc_errlist) / sizeof (struct rpc_errtab); i++) + { + if (rpc_errlist[i].status == stat) + { + return _(rpc_errlist[i].message); } - return _("RPC: (unknown error code)"); + } + return _("RPC: (unknown error code)"); } void -clnt_perrno(num) - enum clnt_stat num; +clnt_perrno (enum clnt_stat num) { - (void) fprintf(stderr,"%s",clnt_sperrno(num)); + (void) fputs (clnt_sperrno (num), stderr); } char * -clnt_spcreateerror(s) - char *s; +clnt_spcreateerror (const char *msg) { - extern int sys_nerr; - /* extern char *sys_errlist[]; --drepper@gnu */ - char *str = _buf(); - - if (str == 0) - return(0); - (void) sprintf(str, "%s: ", s); - (void) strcat(str, clnt_sperrno(rpc_createerr.cf_stat)); - switch (rpc_createerr.cf_stat) { - case RPC_PMAPFAILURE: - (void) strcat(str, " - "); - (void) strcat(str, - clnt_sperrno(rpc_createerr.cf_error.re_status)); - break; - - case RPC_SYSTEMERROR: - (void) strcat(str, " - "); - if (rpc_createerr.cf_error.re_errno > 0 - && rpc_createerr.cf_error.re_errno < sys_nerr) - (void) strcat(str, - sys_errlist[rpc_createerr.cf_error.re_errno]); - else - (void) sprintf(&str[strlen(str)], _("Error %d"), - rpc_createerr.cf_error.re_errno); - break; + char buf[1024]; + char *str = _buf (); + char *cp; + int len; + + if (str == NULL) + return NULL; + len = sprintf (str, "%s: ", msg); + cp = str + len; + cp = stpcpy (cp, clnt_sperrno (rpc_createerr.cf_stat)); + switch (rpc_createerr.cf_stat) + { + case RPC_PMAPFAILURE: + cp = stpcpy (cp, " - "); + cp = stpcpy (cp, clnt_sperrno (rpc_createerr.cf_error.re_status)); + break; + + case RPC_SYSTEMERROR: + cp = stpcpy (str, " - "); + if (rpc_createerr.cf_error.re_errno > 0 + && rpc_createerr.cf_error.re_errno < sys_nerr) + cp = stpcpy (str, strerror_r (rpc_createerr.cf_error.re_errno, + buf, sizeof buf)); + else + { + len = sprintf (cp, _("Error %d"), rpc_createerr.cf_error.re_errno); + cp += len; } - (void) strcat(str, "\n"); - return (str); + break; + default: + break; + } + *cp = '\n'; + return str; } void -clnt_pcreateerror(s) - char *s; +clnt_pcreateerror (const char *msg) { - (void) fprintf(stderr,"%s",clnt_spcreateerror(s)); + (void) fputs (clnt_spcreateerror (msg), stderr); } -struct auth_errtab { - enum auth_stat status; - char *message; +struct auth_errtab +{ + enum auth_stat status; + const char *message; }; -static struct auth_errtab auth_errlist[] = { - { AUTH_OK, - N_("Authentication OK") }, - { AUTH_BADCRED, - N_("Invalid client credential") }, - { AUTH_REJECTEDCRED, - N_("Server rejected credential") }, - { AUTH_BADVERF, - N_("Invalid client verifier") }, - { AUTH_REJECTEDVERF, - N_("Server rejected verifier") }, - { AUTH_TOOWEAK, - N_("Client credential too weak") }, - { AUTH_INVALIDRESP, - N_("Invalid server verifier") }, - { AUTH_FAILED, - N_("Failed (unspecified error)") }, +static const struct auth_errtab auth_errlist[] = +{ + {AUTH_OK, + N_("Authentication OK")}, + {AUTH_BADCRED, + N_("Invalid client credential")}, + {AUTH_REJECTEDCRED, + N_("Server rejected credential")}, + {AUTH_BADVERF, + N_("Invalid client verifier")}, + {AUTH_REJECTEDVERF, + N_("Server rejected verifier")}, + {AUTH_TOOWEAK, + N_("Client credential too weak")}, + {AUTH_INVALIDRESP, + N_("Invalid server verifier")}, + {AUTH_FAILED, + N_("Failed (unspecified error)")}, }; static char * -auth_errmsg(stat) - enum auth_stat stat; +auth_errmsg (enum auth_stat stat) { - int i; + size_t i; - for (i = 0; i < sizeof(auth_errlist)/sizeof(struct auth_errtab); i++) { - if (auth_errlist[i].status == stat) { - return _(auth_errlist[i].message); - } + for (i = 0; i < sizeof (auth_errlist) / sizeof (struct auth_errtab); i++) + { + if (auth_errlist[i].status == stat) + { + return _(auth_errlist[i].message); } - return(NULL); + } + return NULL; } |