Esempio n. 1
0
int ib_bytestr_read_only( const ib_bytestr_t *bs )
{
    IB_FTRACE_INIT();

    assert(bs != NULL);

    IB_FTRACE_RET_BOOL(IB_BYTESTR_CHECK_FREADONLY(bs->flags));
}
Esempio n. 2
0
uint8_t *ib_bytestr_ptr(
    ib_bytestr_t *bs
) {
    if (bs == NULL || IB_BYTESTR_CHECK_FREADONLY(bs->flags)) {
        return NULL;
    }

    return bs->data;
}
Esempio n. 3
0
uint8_t *ib_bytestr_ptr(
    ib_bytestr_t *bs
) {
    IB_FTRACE_INIT();

    if (bs == NULL || IB_BYTESTR_CHECK_FREADONLY(bs->flags)) {
        IB_FTRACE_RET_PTR(uint8_t, NULL);
    }

    IB_FTRACE_RET_PTR(uint8_t, bs->data);
}
Esempio n. 4
0
ib_status_t ib_bytestr_append_mem(
    ib_bytestr_t  *dst,
    const uint8_t *data,
    size_t         data_length
)
{
    IB_FTRACE_INIT();

    size_t dst_length = ib_bytestr_length(dst);
    size_t new_length;
    uint8_t *new_data = NULL;

    if (dst == NULL || IB_BYTESTR_CHECK_FREADONLY(dst->flags)) {
        IB_FTRACE_RET_STATUS(IB_EINVAL);
    }
    if (data == NULL && data_length != 0) {
        IB_FTRACE_RET_STATUS(IB_EINVAL);
    }

    new_length = dst_length + data_length;

    if (new_length > dst->size) {
        new_data = (uint8_t *)ib_mpool_alloc(dst->mp, new_length);
        if (new_data == NULL) {
            IB_FTRACE_RET_STATUS(IB_EALLOC);
        }
        if (dst_length > 0) {
            memcpy(
                new_data,
                ib_bytestr_const_ptr(dst),
                ib_bytestr_length(dst)
            );
        }
        dst->data = new_data;
        dst->size = new_length;
    }
    assert(new_length <= dst->size);

    if (data_length > 0) {
        memcpy(dst->data + dst_length, data, data_length);
        dst->length = new_length;
    }

    IB_FTRACE_RET_STATUS(IB_OK);
}
Esempio n. 5
0
ib_status_t ib_bytestr_append_mem(
    ib_bytestr_t  *dst,
    const uint8_t *data,
    size_t         data_length
)
{
    size_t dst_length = ib_bytestr_length(dst);
    size_t new_length;
    uint8_t *new_data = NULL;

    if (dst == NULL || IB_BYTESTR_CHECK_FREADONLY(dst->flags)) {
        return IB_EINVAL;
    }
    if (data == NULL && data_length != 0) {
        return IB_EINVAL;
    }

    new_length = dst_length + data_length;

    if (new_length > dst->size) {
        new_data = (uint8_t *)ib_mm_alloc(dst->mm, new_length);
        if (new_data == NULL) {
            return IB_EALLOC;
        }
        if (dst_length > 0) {
            memcpy(
                new_data,
                ib_bytestr_const_ptr(dst),
                ib_bytestr_length(dst)
            );
        }
        dst->data = new_data;
        dst->size = new_length;
    }
    assert(new_length <= dst->size);

    if (data_length > 0) {
        memcpy(dst->data + dst_length, data, data_length);
        dst->length = new_length;
    }

    return IB_OK;
}
Esempio n. 6
0
int ib_bytestr_read_only( const ib_bytestr_t *bs )
{
    assert(bs != NULL);

    return IB_BYTESTR_CHECK_FREADONLY(bs->flags);
}