#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <rpc/clnt.h>
#include "trberror.h"
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)
"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",
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)