diff options
author | Alan Antonuk <alan.antonuk@gmail.com> | 2013-06-13 13:58:58 -0700 |
---|---|---|
committer | Alan Antonuk <alan.antonuk@gmail.com> | 2013-06-13 16:40:37 -0700 |
commit | 4d9f3abcc30bc628dd872d83233de8744136547d (patch) | |
tree | bc1873175e2cc7dffe5f82334109092d006680fe /tools | |
parent | 0218bb262b9323f431ed84f5c1d1eb1c5bdb1c8b (diff) | |
download | rabbitmq-c-github-ask-4d9f3abcc30bc628dd872d83233de8744136547d.tar.gz |
Change amqp_error_string() to ret static strings
This is an API/ABI break.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/common.c | 24 | ||||
-rw-r--r-- | tools/common.h | 4 |
2 files changed, 12 insertions, 16 deletions
diff --git a/tools/common.c b/tools/common.c index 0c61d16..b556988 100644 --- a/tools/common.c +++ b/tools/common.c @@ -83,7 +83,6 @@ void die_errno(int err, const char *fmt, ...) void die_amqp_error(int err, const char *fmt, ...) { va_list ap; - char *errstr; if (err >= 0) { return; @@ -92,21 +91,20 @@ void die_amqp_error(int err, const char *fmt, ...) va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); - fprintf(stderr, ": %s\n", errstr = amqp_error_string(-err)); - free(errstr); + fprintf(stderr, ": %s\n", amqp_error_string(err)); exit(1); } -char *amqp_server_exception_string(amqp_rpc_reply_t r) +const char *amqp_server_exception_string(amqp_rpc_reply_t r) { int res; - char *s; + static char s[512]; switch (r.reply.id) { case AMQP_CONNECTION_CLOSE_METHOD: { amqp_connection_close_t *m = (amqp_connection_close_t *)r.reply.decoded; - res = asprintf(&s, "server connection error %d, message: %.*s", + res = snprintf(s, sizeof(s), "server connection error %d, message: %.*s", m->reply_code, (int)m->reply_text.len, (char *)m->reply_text.bytes); @@ -116,7 +114,7 @@ char *amqp_server_exception_string(amqp_rpc_reply_t r) case AMQP_CHANNEL_CLOSE_METHOD: { amqp_channel_close_t *m = (amqp_channel_close_t *)r.reply.decoded; - res = asprintf(&s, "server channel error %d, message: %.*s", + res = snprintf(s, sizeof(s), "server channel error %d, message: %.*s", m->reply_code, (int)m->reply_text.len, (char *)m->reply_text.bytes); @@ -124,7 +122,7 @@ char *amqp_server_exception_string(amqp_rpc_reply_t r) } default: - res = asprintf(&s, "unknown server error, method id 0x%08X", + res = snprintf(s, sizeof(s), "unknown server error, method id 0x%08X", r.reply.id); break; } @@ -132,14 +130,14 @@ char *amqp_server_exception_string(amqp_rpc_reply_t r) return res >= 0 ? s : NULL; } -char *amqp_rpc_reply_string(amqp_rpc_reply_t r) +const char *amqp_rpc_reply_string(amqp_rpc_reply_t r) { switch (r.reply_type) { case AMQP_RESPONSE_NORMAL: - return strdup("normal response"); + return "normal response"; case AMQP_RESPONSE_NONE: - return strdup("missing RPC reply type"); + return "missing RPC reply type"; case AMQP_RESPONSE_LIBRARY_EXCEPTION: return amqp_error_string(r.library_error); @@ -155,7 +153,6 @@ char *amqp_rpc_reply_string(amqp_rpc_reply_t r) void die_rpc(amqp_rpc_reply_t r, const char *fmt, ...) { va_list ap; - char *errstr; if (r.reply_type == AMQP_RESPONSE_NORMAL) { return; @@ -164,8 +161,7 @@ void die_rpc(amqp_rpc_reply_t r, const char *fmt, ...) va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); - fprintf(stderr, ": %s\n", errstr = amqp_rpc_reply_string(r)); - free(errstr); + fprintf(stderr, ": %s\n", amqp_rpc_reply_string(r)); exit(1); } diff --git a/tools/common.h b/tools/common.h index cc186ec..7d01966 100644 --- a/tools/common.h +++ b/tools/common.h @@ -41,8 +41,8 @@ #include <amqp.h> #include <amqp_framing.h> -extern char *amqp_server_exception_string(amqp_rpc_reply_t r); -extern char *amqp_rpc_reply_string(amqp_rpc_reply_t r); +extern const char *amqp_server_exception_string(amqp_rpc_reply_t r); +extern const char *amqp_rpc_reply_string(amqp_rpc_reply_t r); extern void die(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); |