diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-02-29 11:16:38 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-02-29 11:16:38 +0000 |
commit | 67e0aea25850b8286f750e6458e5de741e6cb3b5 (patch) | |
tree | 1225ab14f9cb5f79c12540b677a1d8aadcbce0bf /src/server/gdb_server.c | |
parent | 4febcd8313cf46bea03bd5eacb3f287f19eb2961 (diff) |
Summary: passing of variable argument list reduced, strings sent to logging are now formatted just once - more efficient.
As a result, ugly string malloc+strcpy are not needed anymore.
git-svn-id: svn://svn.berlios.de/openocd/trunk@386 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/server/gdb_server.c')
-rw-r--r-- | src/server/gdb_server.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index d06c7a07..57ba2806 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -47,7 +47,7 @@ static unsigned short gdb_port; static const char *DIGITS = "0123456789abcdef"; static void gdb_log_callback(void *priv, const char *file, int line, - const char *function, const char *format, va_list args); + const char *function, const char *string); enum gdb_detach_mode { @@ -504,7 +504,7 @@ int gdb_get_packet(connection_t *connection, char *buffer, int *len) return retval; } -int gdb_output_con(connection_t *connection, char* line) +int gdb_output_con(connection_t *connection, const char* line) { char *hex_buffer; int i, bin_size; @@ -512,6 +512,8 @@ int gdb_output_con(connection_t *connection, char* line) bin_size = strlen(line); hex_buffer = malloc(bin_size*2 + 2); + if (hex_buffer == NULL) + return ERROR_GDB_BUFFER_TOO_SMALL; hex_buffer[0] = 'O'; for (i=0; i<bin_size; i++) @@ -527,7 +529,7 @@ int gdb_output_con(connection_t *connection, char* line) int gdb_output(struct command_context_s *context, char* line) { /* this will be dumped to the log and also sent as an O packet if possible */ - USER_SAMELINE(line); + USER_N(line); return ERROR_OK; } @@ -1796,7 +1798,7 @@ int gdb_detach(connection_t *connection, target_t *target) } static void gdb_log_callback(void *priv, const char *file, int line, - const char *function, const char *format, va_list args) + const char *function, const char *string) { connection_t *connection = priv; gdb_connection_t *gdb_con = connection->priv; @@ -1807,13 +1809,7 @@ static void gdb_log_callback(void *priv, const char *file, int line, return; } - char *t = alloc_printf(format, args); - if (t == NULL) - return; - - gdb_output_con(connection, t); - - free(t); + gdb_output_con(connection, string); } int gdb_input_inner(connection_t *connection) |