A bit less goofy

This commit is contained in:
XANTRONIX Development 2017-11-24 23:38:23 -06:00
parent 7ba0ec5e07
commit c0b350038d
2 changed files with 30 additions and 108 deletions

View file

@ -15,7 +15,7 @@ enum part_type {
struct part { struct part {
enum part_type type; enum part_type type;
enum skipstone_message_endianness endianness; enum skipstone_message_endianness endianness;
uint16_t size; uint8_t size;
}; };
struct _skipstone_message { struct _skipstone_message {
@ -57,19 +57,19 @@ error_malloc_message:
return NULL; return NULL;
} }
int skipstone_message_append_string(skipstone_message *message, static int append_part(skipstone_message *message,
char *string, uint8_t size) { void *buf, uint8_t size, enum part_type type) {
struct part *part; struct part *part;
if ((part = malloc(sizeof(*part) + size)) == NULL) { if ((part = malloc(sizeof(*part) + size)) == NULL) {
goto error_malloc_part; goto error_malloc_part;
} }
part->type = SKIPSTONE_MESSAGE_PART_STRING; part->type = type;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE; part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = size; part->size = size;
memcpy(part + 1, string, size); memcpy(part + 1, buf, size);
if (skipstone_queue_add(message->parts, part) < 0) { if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts; goto error_queue_add_parts;
@ -84,58 +84,19 @@ error_malloc_part:
return -1; return -1;
} }
int skipstone_message_append_uint8(skipstone_message *message, int skipstone_message_append_string(skipstone_message *message,
uint8_t value) { char *string, uint8_t size) {
struct part *part; return append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING);
if ((part = malloc(sizeof(*part) + sizeof(uint8_t))) == NULL) {
goto error_malloc_part;
}
part->type = SKIPSTONE_MESSAGE_PART_UINT8;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = sizeof(uint8_t);
((uint8_t *)(part + 1))[0] = value;
if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts;
}
return 0;
error_queue_add_parts:
free(part);
error_malloc_part:
return -1;
} }
int skipstone_message_append_uint16(skipstone_message *message, int skipstone_message_append_uint8(skipstone_message *message, uint8_t value) {
uint16_t value) { return append_part(message, &value, sizeof(value),
struct part *part; SKIPSTONE_MESSAGE_PART_UINT8);
}
if ((part = malloc(sizeof(*part) + sizeof(uint16_t))) == NULL) { int skipstone_message_append_uint16(skipstone_message *message, uint16_t value) {
goto error_malloc_part; return append_part(message, &value, sizeof(value),
} SKIPSTONE_MESSAGE_PART_UINT16);
part->type = SKIPSTONE_MESSAGE_PART_UINT16;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = sizeof(uint16_t);
((uint16_t *)(part + 1))[0] = value;
if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts;
}
return 0;
error_queue_add_parts:
free(part);
error_malloc_part:
return -1;
} }
int skipstone_message_pack(skipstone_message *message, int skipstone_message_pack(skipstone_message *message,

View file

@ -15,7 +15,7 @@ enum part_type {
struct part { struct part {
enum part_type type; enum part_type type;
enum skipstone_message_endianness endianness; enum skipstone_message_endianness endianness;
uint16_t size; uint8_t size;
}; };
struct _skipstone_message { struct _skipstone_message {
@ -57,19 +57,19 @@ error_malloc_message:
return NULL; return NULL;
} }
int skipstone_message_append_string(skipstone_message *message, static int append_part(skipstone_message *message,
char *string, uint8_t size) { void *buf, uint8_t size, enum part_type type) {
struct part *part; struct part *part;
if ((part = malloc(sizeof(*part) + size)) == NULL) { if ((part = malloc(sizeof(*part) + size)) == NULL) {
goto error_malloc_part; goto error_malloc_part;
} }
part->type = SKIPSTONE_MESSAGE_PART_STRING; part->type = type;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE; part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = size; part->size = size;
memcpy(part + 1, string, size); memcpy(part + 1, buf, size);
if (skipstone_queue_add(message->parts, part) < 0) { if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts; goto error_queue_add_parts;
@ -84,58 +84,19 @@ error_malloc_part:
return -1; return -1;
} }
int skipstone_message_append_uint8(skipstone_message *message, int skipstone_message_append_string(skipstone_message *message,
uint8_t value) { char *string, uint8_t size) {
struct part *part; return append_part(message, string, size, SKIPSTONE_MESSAGE_PART_STRING);
if ((part = malloc(sizeof(*part) + sizeof(uint8_t))) == NULL) {
goto error_malloc_part;
}
part->type = SKIPSTONE_MESSAGE_PART_UINT8;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = sizeof(uint8_t);
((uint8_t *)(part + 1))[0] = value;
if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts;
}
return 0;
error_queue_add_parts:
free(part);
error_malloc_part:
return -1;
} }
int skipstone_message_append_uint16(skipstone_message *message, int skipstone_message_append_uint8(skipstone_message *message, uint8_t value) {
uint16_t value) { return append_part(message, &value, sizeof(value),
struct part *part; SKIPSTONE_MESSAGE_PART_UINT8);
}
if ((part = malloc(sizeof(*part) + sizeof(uint16_t))) == NULL) { int skipstone_message_append_uint16(skipstone_message *message, uint16_t value) {
goto error_malloc_part; return append_part(message, &value, sizeof(value),
} SKIPSTONE_MESSAGE_PART_UINT16);
part->type = SKIPSTONE_MESSAGE_PART_UINT16;
part->endianness = SKIPSTONE_MESSAGE_ENDIAN_LITTLE;
part->size = sizeof(uint16_t);
((uint16_t *)(part + 1))[0] = value;
if (skipstone_queue_add(message->parts, part) < 0) {
goto error_queue_add_parts;
}
return 0;
error_queue_add_parts:
free(part);
error_malloc_part:
return -1;
} }
int skipstone_message_pack(skipstone_message *message, int skipstone_message_pack(skipstone_message *message,