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); }
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; }
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); }
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); }
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); }