コード例 #1
0
ファイル: uuid.c プロジェクト: BillTheBest/ironbee
ib_status_t ib_uuid_ascii_to_bin(
     ib_uuid_t *uuid,
     const char *str
)
{
    IB_FTRACE_INIT();

    uuid_rc_t uuid_rc;
    size_t uuid_len = UUID_LEN_BIN;
    size_t str_len;
    ib_status_t rc = IB_OK;

    if (uuid == NULL || str == NULL) {
        IB_FTRACE_RET_STATUS(IB_EINVAL);
    }
    str_len = strlen(str);
    if (str_len != UUID_LEN_STR) {
        IB_FTRACE_RET_STATUS(IB_EINVAL);
    }

    assert(str_len == UUID_LEN_STR);

    rc = ib_lock_init(&g_uuid_lock);
    if (rc != IB_OK) {
        IB_FTRACE_RET_STATUS(rc);
    }

    uuid_rc = uuid_import(g_ossp_uuid, UUID_FMT_STR, str, str_len);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK) {
        rc = IB_EINVAL;
        goto finish;
    }

    uuid_rc = uuid_export(g_ossp_uuid, UUID_FMT_BIN, (void *)&uuid, &uuid_len);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK || uuid_len != UUID_LEN_BIN) {
        rc = IB_EOTHER;
        goto finish;
    }

finish:
    if (ib_lock_unlock(&g_uuid_lock) != IB_OK) {
        IB_FTRACE_RET_STATUS(IB_EOTHER);
    }

    IB_FTRACE_RET_STATUS(rc);
}
コード例 #2
0
ファイル: uuid.c プロジェクト: aburan28/ironbee
ib_status_t ib_uuid_initialize(void)
{
    ib_status_t rc;

    if (uuid_create(&g_ossp_uuid) != UUID_RC_OK) {
        return IB_EOTHER;
    }

    rc = ib_lock_init(&g_uuid_lock);

    return rc;
}
コード例 #3
0
ファイル: uuid.c プロジェクト: BillTheBest/ironbee
ib_status_t ib_uuid_initialize(void)
{
    IB_FTRACE_INIT();

    ib_status_t rc;

    if (uuid_create(&g_ossp_uuid) != UUID_RC_OK) {
        IB_FTRACE_RET_STATUS(IB_EOTHER);
    }

    rc = ib_lock_init(&g_uuid_lock);

    IB_FTRACE_RET_STATUS(rc);
}
コード例 #4
0
ファイル: uuid.c プロジェクト: BillTheBest/ironbee
ib_status_t ib_uuid_bin_to_ascii(
    char *str,
    const ib_uuid_t *uuid
)
{
    IB_FTRACE_INIT();

    uuid_rc_t uuid_rc;
    size_t uuid_len = UUID_LEN_STR+1;
    ib_status_t rc = IB_OK;

    if (uuid == NULL || str == NULL) {
        IB_FTRACE_RET_STATUS(IB_EINVAL);
    }

    rc = ib_lock_init(&g_uuid_lock);
    if (rc != IB_OK) {
        IB_FTRACE_RET_STATUS(rc);
    }

    uuid_rc = uuid_import(g_ossp_uuid, UUID_FMT_BIN, uuid, UUID_LEN_BIN);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK) {
        rc = IB_EINVAL;
        goto finish;
    }

    uuid_rc = uuid_export(g_ossp_uuid, UUID_FMT_STR, (void *)&str, &uuid_len);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK || uuid_len != UUID_LEN_STR+1) {
        rc = IB_EOTHER;
        goto finish;
    }

finish:
    if (ib_lock_unlock(&g_uuid_lock) != IB_OK) {
        IB_FTRACE_RET_STATUS(IB_EOTHER);
    }

    IB_FTRACE_RET_STATUS(rc);
}
コード例 #5
0
ファイル: uuid.c プロジェクト: BillTheBest/ironbee
ib_status_t ib_uuid_create_v4(ib_uuid_t *uuid)
{
    IB_FTRACE_INIT();

    uuid_rc_t uuid_rc;
    size_t uuid_len = UUID_LEN_BIN;
    ib_status_t rc = IB_OK;

    rc = ib_lock_init(&g_uuid_lock);
    if (rc != IB_OK) {
        IB_FTRACE_RET_STATUS(rc);
    }

    uuid_rc = uuid_make(g_ossp_uuid, UUID_MAKE_V4);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK) {
        rc = IB_EOTHER;
        goto finish;
    }

    uuid_rc = uuid_export(g_ossp_uuid, UUID_FMT_BIN, (void *)&uuid, &uuid_len);
    if (uuid_rc == UUID_RC_MEM) {
        rc = IB_EALLOC;
        goto finish;
    }
    else if (uuid_rc != UUID_RC_OK || uuid_len != UUID_LEN_BIN) {
        rc = IB_EOTHER;
        goto finish;
    }

finish:
    if (ib_lock_unlock(&g_uuid_lock) != IB_OK) {
        IB_FTRACE_RET_STATUS(IB_EOTHER);
    }

    IB_FTRACE_RET_STATUS(rc);
}