- size_t cutout_len = strlen(*queue);
- uint8_t is_nullbyte_chunk = !cutout_len;
- if (0 < cutout_len)
- {
- cutout_len++;
- message = try_malloc(cutout_len, __func__);
- memcpy(message, *queue, cutout_len);
- }
- for (;
- cutout_len != *queue_size && '\0' == (*queue)[cutout_len];
- cutout_len++);
- *queue_size = *queue_size - cutout_len;
- if (0 == *queue_size)
- {
- free(*queue); /* NULL so read_file_into_queue() and */
- *queue = NULL; /* cleanup() may free() this every time, */
- } /* even when it's un-allocated. */
- else
- {
- char * new_queue = try_malloc(*queue_size, __func__);
- memcpy(new_queue, &((*queue)[cutout_len]), *queue_size);
- free(*queue);
- *queue = new_queue;
- if (is_nullbyte_chunk)
- {
- return get_message_from_queue(queue, queue_size);
- }
- }