2
Unix SMB/CIFS implementation.
6
Copyright (C) Gerald (Jerry) Carter 2007
9
This library is free software; you can redistribute it and/or
10
modify it under the terms of the GNU Lesser General Public
11
License as published by the Free Software Foundation; either
12
version 3 of the License, or (at your option) any later version.
14
This library is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
Library General Public License for more details.
19
You should have received a copy of the GNU Lesser General Public License
20
along with this program. If not, see <http://www.gnu.org/licenses/>.
23
/* Required Headers */
25
#include "libwbclient.h"
27
/* Convert a binary GUID to a character string */
28
wbcErr wbcGuidToString(const struct wbcGuid *guid,
31
wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
34
wbc_status = WBC_ERR_INVALID_PARAM;
35
BAIL_ON_WBC_ERROR(wbc_status);
38
*guid_string = talloc_asprintf(NULL,
39
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
40
guid->time_low, guid->time_mid,
41
guid->time_hi_and_version,
44
guid->node[0], guid->node[1],
45
guid->node[2], guid->node[3],
46
guid->node[4], guid->node[5]);
47
BAIL_ON_PTR_ERROR((*guid_string), wbc_status);
49
wbc_status = WBC_ERR_SUCCESS;
55
/* @brief Convert a character string to a binary GUID */
56
wbcErr wbcStringToGuid(const char *str,
60
uint32_t time_mid, time_hi_and_version;
61
uint32_t clock_seq[2];
64
wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
67
wbc_status = WBC_ERR_INVALID_PARAM;
68
BAIL_ON_WBC_ERROR(wbc_status);
72
wbc_status = WBC_ERR_INVALID_PARAM;
73
BAIL_ON_WBC_ERROR(wbc_status);
76
if (11 == sscanf(str, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
77
&time_low, &time_mid, &time_hi_and_version,
78
&clock_seq[0], &clock_seq[1],
79
&node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) {
80
wbc_status = WBC_ERR_SUCCESS;
81
} else if (11 == sscanf(str, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
82
&time_low, &time_mid, &time_hi_and_version,
83
&clock_seq[0], &clock_seq[1],
84
&node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) {
85
wbc_status = WBC_ERR_SUCCESS;
88
BAIL_ON_WBC_ERROR(wbc_status);
90
guid->time_low = time_low;
91
guid->time_mid = time_mid;
92
guid->time_hi_and_version = time_hi_and_version;
93
guid->clock_seq[0] = clock_seq[0];
94
guid->clock_seq[1] = clock_seq[1];
97
guid->node[i] = node[i];
100
wbc_status = WBC_ERR_SUCCESS;