]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
support for RPC error messages added
authorhadaq <hadaq>
Sun, 8 Jan 2012 19:46:32 +0000 (19:46 +0000)
committerhadaq <hadaq>
Sun, 8 Jan 2012 19:46:32 +0000 (19:46 +0000)
libtrbnet/trberror.c

index 0c6dbc190ffac62af0bca41f334d149dc158f743..7c52c5754a7e63ff7a779b94b85b16631f21fdb9 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <rpc/clnt.h>
 
 #include "trberror.h"
 
@@ -31,16 +32,19 @@ void trb_error(const char *s)
 
 const char* trb_strerror()
 {
-  static char buffer[4096] = "";
+  static unsigned int buffer_ctr = 0;
+  static char buffer[8][256];
+  
+  buffer_ctr = buffer_ctr > 7 ? 0 : buffer_ctr + 1;
   
   if ((trb_errno == TRB_STATUS_ERROR) || (trb_errno == TRB_STATUS_WARNING)) {
-    snprintf(buffer, 4096, "%s\n%s", 
+    snprintf(buffer[buffer_ctr], 256, "%s\n%s", 
              trb_errorstr(trb_errno), trb_termstr(trb_term));
   } else {
-    snprintf(buffer, 4096, "%s", trb_errorstr(trb_errno));
+    snprintf(buffer[buffer_ctr], 256, "%s", trb_errorstr(trb_errno));
   }
   
-  return buffer;
+  return buffer[buffer_ctr];
 }
 
 const char* trb_errorstr(int trberrno)
@@ -75,7 +79,7 @@ const char* trb_errorstr(int trberrno)
     "SEMAPHORE Error",
     "FIFO Shared Memory Error",
     "Termination Status Warning",
-    "RPC Error",
+    "RPC server function call Error",
     "Pexor DATA Error",
     "Pexor Device Error ioctl call, Driver Error",
     
@@ -89,9 +93,12 @@ const char* trb_errorstr(int trberrno)
   
   if (trberrno < 36) {
     return errorstring[trberrno];
-  } else {
-    return "Unknown Error";
   }
+  if (trberrno >= 256) {
+    /* RPC Error */
+    return clnt_sperrno(trberrno - 256);
+  } 
+  return "Unknown Error";
 }
 
 const char* trb_termstr(TRB_TERM term)