From 7fe57432051baea4469b220f848a08b8f4f317b1 Mon Sep 17 00:00:00 2001 From: hadaq Date: Thu, 29 Jul 2010 15:40:25 +0000 Subject: [PATCH] error message handling update --- libtrbnet/trbcmd.c | 89 +++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/libtrbnet/trbcmd.c b/libtrbnet/trbcmd.c index 1809bd4..736fc45 100644 --- a/libtrbnet/trbcmd.c +++ b/libtrbnet/trbcmd.c @@ -1,13 +1,3 @@ -/* - * Changes by Boris and Jan: - * - * 1. Original code is in a sub-routine called start() - * 2. main() can enter a tcp loop (if called with attribute \"tcp\") or - * just call start() (otherwise) - * - * - */ - #define _GNU_SOURCE #include #include @@ -35,7 +25,7 @@ static int hexMode = HEXMODE; -static const char trbcmd_version[] = "$Revision: 2.55 $"; +static const char trbcmd_version[] = "$Revision: 2.56 $"; #define BACKLOG 10 static uint16_t tcp_port = 55555; @@ -68,19 +58,31 @@ static const char errTypeString[4][32] = { static void logError(int type, const char* format, ...) { char fmt[512] = ""; + char msg[4096]= ""; + char* msgEnd = NULL; + char* line = NULL; va_list args; va_start(args, format); - + if (scriptFile != NULL) { - snprintf(fmt, 512, "%s: Line #%d: %s", - errTypeString[type], lineCtr, format); + snprintf(fmt, 512, "Line #%d: %s", + lineCtr, format); } else { - snprintf(fmt, 512, "%s: %s", errTypeString[type], format); + snprintf(fmt, 512, "%s", format); } - - vfprintf(stderr, fmt, args); + vsnprintf(msg, 4096, fmt, args); va_end(args); + + msgEnd = msg + strlen(msg); + line = msg; + do { + char *p = strchr(line, '\n'); + if (p == NULL) break; + *p = '\0'; + fprintf(stderr, "%s: %s\n", errTypeString[type], line); + line = p + 1; + } while (line < msgEnd); } /* ------ MAIN ---------------------------------------------------------- */ @@ -341,7 +343,7 @@ int start(int argc, char **argv) } else { if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bit(s) have been set:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -377,8 +379,7 @@ int start(int argc, char **argv) status = trb_register_read(trb_address, reg_address, data, NUM_ENDPOINTS * 2); if (status == -1) { - logError(ERROR, "read_register failed %s\n", - trb_strerror(trb_errno)); + logError(ERROR, "read_register failed: %s\n", trb_strerror()); } else { for (i = 0; i < status; i += 2) { fprintf(stdout, "0x%04x 0x%08x\n", data[i], data[i + 1]); @@ -387,7 +388,7 @@ int start(int argc, char **argv) /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bit(s) have been set:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } free(data); @@ -435,7 +436,7 @@ int start(int argc, char **argv) size, data, USER_BUFFER_SIZE); if (status == -1) { logError(ERROR, "read_register_mem failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Print data-buffer */ @@ -453,7 +454,7 @@ int start(int argc, char **argv) /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } free(data); @@ -527,13 +528,13 @@ int start(int argc, char **argv) data, size); if (status == -1) { logError(ERROR, "write_register_memory failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -569,7 +570,7 @@ int start(int argc, char **argv) status = trb_read_uid(trb_address, uidBuffer, NUM_ENDPOINTS * 4); if (status == -1) { logError(ERROR, "read_uid failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { for (i = 0; @@ -582,7 +583,7 @@ int start(int argc, char **argv) /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -618,13 +619,13 @@ int start(int argc, char **argv) if (trb_set_address(uid, endpoint, trb_address) == -1) { logError(ERROR, "set_address failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -669,13 +670,13 @@ int start(int argc, char **argv) if (trb_send_trigger(type, info, random, number) == -1) { logError(ERROR, "send_trigger failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -718,7 +719,7 @@ int start(int argc, char **argv) if (com_reset() == -1) { logError(ERROR, "Etrax RESET failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } @@ -743,13 +744,13 @@ int start(int argc, char **argv) if (trb_register_write(trb_address, 0x0020, 0x8000) == -1) { logError(ERROR, "FPGA reload failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -798,13 +799,13 @@ int start(int argc, char **argv) if (trb_send_trigger_rich(input, type, info, random, number) == -1) { logError(ERROR, "send_trigger failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -858,7 +859,7 @@ int start(int argc, char **argv) buffer, USER_BUFFER_SIZE); if (status == -1) { logError(ERROR, "read_ipu_data failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { for (i = 0; i < status; i++) { @@ -867,7 +868,7 @@ int start(int argc, char **argv) /* Check Status-Bits */ if (trb_errno == TRB_STATUS_WARNING) { logError(WARNING, "Status-Bits are active:\n%s\n", - trb_strterm(trb_term)); + trb_termstr(trb_term)); } } @@ -893,7 +894,7 @@ int start(int argc, char **argv) if (trb_fifo_flush(channel) == -1) { logError(ERROR, "trb_fifo_flush failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } @@ -921,7 +922,7 @@ int start(int argc, char **argv) if (fpga_register_read(reg_address, &value) == -1) { logError(ERROR, "fpga_register_read failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } else { fprintf(stdout, "0x%04x 0x%08x\n", reg_address, value); @@ -987,7 +988,7 @@ int start(int argc, char **argv) 1, bitMask, 0); if (status == -1) { logError(ERROR, "setbit of register failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } @@ -1022,7 +1023,7 @@ int start(int argc, char **argv) 2, bitMask, 0); if (status == -1) { logError(ERROR, "clearbit of register failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } @@ -1060,7 +1061,7 @@ int start(int argc, char **argv) 3, bitMask, bitValue); if (status == -1) { logError(ERROR, "loadbit of register failed: %s\n", - trb_strerror(trb_errno)); + trb_strerror()); return -1; } @@ -1131,7 +1132,7 @@ int main(int argc, char **argv) int yes = 1; int daemonMode = 0; int opt; - + /* Parse Arguments */ optind = 1; while ((opt = getopt(argc, argv, "+hdVbp:")) != -1) { -- 2.43.0