azure-c-shared-utility/adapters/uniqueid_linux.c

38 строки
1.2 KiB
C

// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <uuid/uuid.h>
#include "azure_macro_utils/macro_utils.h"
#include "azure_c_shared_utility/uniqueid.h"
#include "azure_c_shared_utility/xlogging.h"
MU_DEFINE_ENUM_STRINGS(UNIQUEID_RESULT, UNIQUEID_RESULT_VALUES);
UNIQUEID_RESULT UniqueId_Generate(char* uid, size_t len)
{
UNIQUEID_RESULT result;
/* Codes_SRS_UNIQUEID_07_002: [If uid is NULL then UniqueId_Generate shall return UNIQUEID_INVALID_ARG] */
/* Codes_SRS_UNIQUEID_07_003: [If len is less then 37 then UniqueId_Generate shall return UNIQUEID_INVALID_ARG] */
if (uid == NULL || len < 37)
{
result = UNIQUEID_INVALID_ARG;
LogError("Buffer Size is Null. (result = %" PRI_MU_ENUM ")", MU_ENUM_VALUE(UNIQUEID_RESULT, result));
}
else
{
uuid_t uuidVal;
uuid_generate(uuidVal);
/* Codes_SRS_UNIQUEID_07_001: [UniqueId_Generate shall create a unique Id 36 character long string.] */
memset(uid, 0, len);
uuid_unparse(uuidVal, uid);
result = UNIQUEID_OK;
}
return result;
}