]> granicus.if.org Git - libtirpc/commitdiff
Changed clnt_spcreateerror() to return clearer
authorSteve Dickson <steved@redhat.com>
Thu, 20 Nov 2008 13:55:31 +0000 (08:55 -0500)
committerSteve Dickson <steved@redhat.com>
Thu, 20 Nov 2008 13:55:31 +0000 (08:55 -0500)
and more concise error messages.

Signed-off-by: Steve Dickson <steved@redhat.com>
src/clnt_perror.c

index 8f53f8e0854afda4c3e247492b6b92413a3b2d29..1c1c7059d8c4c6cca11e43a0eb72fbb8354f0b27 100644 (file)
@@ -239,7 +239,7 @@ char *
 clnt_spcreateerror(s)
        const char *s;
 {
-       char *str;
+       char *str, *err;
        size_t len, i;
 
        if (s == NULL)
@@ -257,8 +257,21 @@ clnt_spcreateerror(s)
        switch (rpc_createerr.cf_stat) {
        case RPC_PMAPFAILURE:
                (void) strncat(str, " - ", len - 1);
-               (void) strncat(str,
-                   clnt_sperrno(rpc_createerr.cf_error.re_status), len - 4);
+                err = clnt_sperrno(rpc_createerr.cf_error.re_status);
+               if (err)
+                       (void) strncat(str, err+5, len-5);
+               switch(rpc_createerr.cf_error.re_status) {
+               case RPC_CANTSEND:
+               case RPC_CANTRECV:
+                       i = strlen(str);
+                       len -= i;
+                       snprintf(str+i, len, ": errno %d (%s)", 
+                               rpc_createerr.cf_error.re_errno,
+                               strerror(rpc_createerr.cf_error.re_errno)); 
+                       break;
+               default:
+                       break;
+               }
                break;
 
        case RPC_SYSTEMERROR: