summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Wragg <david@rabbitmq.com>2010-10-21 17:49:04 +0100
committerDavid Wragg <david@rabbitmq.com>2010-10-21 17:49:04 +0100
commitc5705c2b64d2f6f8bf12bc74538228f802e7f708 (patch)
tree23842b68c755b25990d245c4ec85868f7ca233b1
parent2f838304acb599b104a27c5d308bba91ed00b31e (diff)
downloadrabbitmq-c-github-ask-c5705c2b64d2f6f8bf12bc74538228f802e7f708.tar.gz
Eliminate the old codec macros
They contained gcc-isms.
-rw-r--r--librabbitmq/amqp_api.c2
-rw-r--r--librabbitmq/amqp_private.h25
-rw-r--r--librabbitmq/amqp_socket.c17
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;