diff options
author | David Wragg <david@rabbitmq.com> | 2010-10-21 17:49:04 +0100 |
---|---|---|
committer | David Wragg <david@rabbitmq.com> | 2010-10-21 17:49:04 +0100 |
commit | c5705c2b64d2f6f8bf12bc74538228f802e7f708 (patch) | |
tree | 23842b68c755b25990d245c4ec85868f7ca233b1 | |
parent | 2f838304acb599b104a27c5d308bba91ed00b31e (diff) | |
download | rabbitmq-c-github-ask-c5705c2b64d2f6f8bf12bc74538228f802e7f708.tar.gz |
Eliminate the old codec macros
They contained gcc-isms.
-rw-r--r-- | librabbitmq/amqp_api.c | 2 | ||||
-rw-r--r-- | librabbitmq/amqp_private.h | 25 | ||||
-rw-r--r-- | librabbitmq/amqp_socket.c | 17 |
3 files changed, 11 insertions, 33 deletions
diff --git a/librabbitmq/amqp_api.c b/librabbitmq/amqp_api.c index 25b855f..3a44701 100644 --- a/librabbitmq/amqp_api.c +++ b/librabbitmq/amqp_api.c @@ -168,7 +168,7 @@ int amqp_basic_publish(amqp_connection_state_t state, f.frame_type = AMQP_FRAME_BODY; f.channel = channel; - f.payload.body_fragment.bytes = BUF_AT(body, body_offset); + f.payload.body_fragment.bytes = amqp_offset(body.bytes, body_offset); if (remaining >= usable_body_payload_size) { f.payload.body_fragment.len = usable_body_payload_size; } else { diff --git a/librabbitmq/amqp_private.h b/librabbitmq/amqp_private.h index 439008a..ec2ba39 100644 --- a/librabbitmq/amqp_private.h +++ b/librabbitmq/amqp_private.h @@ -244,31 +244,6 @@ static inline int amqp_decode_bytes(amqp_bytes_t encoded, size_t *offset, } } - -#define CHECK_LIMIT(b, o, l, v) ({ if ((o + l) > (b).len) { return -ERROR_BAD_AMQP_DATA; } (v); }) -#define BUF_AT(b, o) (&(((uint8_t *) (b).bytes)[o])) - -#define D_8(b, o) CHECK_LIMIT(b, o, 1, * (uint8_t *) BUF_AT(b, o)) -#define D_16(b, o) CHECK_LIMIT(b, o, 2, ({uint16_t v; memcpy(&v, BUF_AT(b, o), 2); ntohs(v);})) -#define D_32(b, o) CHECK_LIMIT(b, o, 4, ({uint32_t v; memcpy(&v, BUF_AT(b, o), 4); ntohl(v);})) -#define D_64(b, o) ({ \ - uint64_t hi = D_32(b, o); \ - uint64_t lo = D_32(b, o + 4); \ - hi << 32 | lo; \ -}) - -#define D_BYTES(b, o, l) CHECK_LIMIT(b, o, l, BUF_AT(b, o)) - -#define E_8(b, o, v) CHECK_LIMIT(b, o, 1, * (uint8_t *) BUF_AT(b, o) = (v)) -#define E_16(b, o, v) CHECK_LIMIT(b, o, 2, ({uint16_t vv = htons(v); memcpy(BUF_AT(b, o), &vv, 2);})) -#define E_32(b, o, v) CHECK_LIMIT(b, o, 4, ({uint32_t vv = htonl(v); memcpy(BUF_AT(b, o), &vv, 4);})) -#define E_64(b, o, v) ({ \ - E_32(b, o, (uint32_t) (((uint64_t) v) >> 32)); \ - E_32(b, o + 4, (uint32_t) (((uint64_t) v) & 0xFFFFFFFF)); \ - }) - -#define E_BYTES(b, o, l, v) CHECK_LIMIT(b, o, l, memcpy(BUF_AT(b, o), (v), (l))) - extern int amqp_decode_table(amqp_bytes_t encoded, amqp_pool_t *pool, amqp_table_t *output, diff --git a/librabbitmq/amqp_socket.c b/librabbitmq/amqp_socket.c index 109f60b..ee67415 100644 --- a/librabbitmq/amqp_socket.c +++ b/librabbitmq/amqp_socket.c @@ -134,16 +134,19 @@ static amqp_bytes_t sasl_response(amqp_pool_t *pool, size_t username_len = strlen(username); char *password = va_arg(args, char *); size_t password_len = strlen(password); + char *response_buf; + amqp_pool_alloc_bytes(pool, strlen(username) + strlen(password) + 2, &response); - if (response.bytes == NULL) { + if (response.bytes == NULL) /* We never request a zero-length block, because of the +2 above, so a NULL here really is ENOMEM. */ return response; - } - *BUF_AT(response, 0) = 0; - memcpy(((char *) response.bytes) + 1, username, username_len); - *BUF_AT(response, username_len + 1) = 0; - memcpy(((char *) response.bytes) + username_len + 2, password, password_len); + + response_buf = response.bytes; + response_buf[0] = 0; + memcpy(response_buf + 1, username, username_len); + response_buf[username_len + 1] = 0; + memcpy(response_buf + username_len + 2, password, password_len); break; } default: @@ -400,7 +403,7 @@ static int amqp_login_inner(amqp_connection_state_t state, &method); if (res < 0) return res; - + { amqp_connection_tune_t *s = (amqp_connection_tune_t *) method.decoded; server_channel_max = s->channel_max; |