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 */
26 #include "libwbclient.h"
28 /* Convert a binary GUID to a character string */
29 wbcErr
wbcGuidToString(const struct wbcGuid
*guid
,
32 wbcErr wbc_status
= WBC_ERR_UNKNOWN_FAILURE
;
35 wbc_status
= WBC_ERR_INVALID_PARAM
;
36 BAIL_ON_WBC_ERROR(wbc_status
);
39 *guid_string
= talloc_asprintf(NULL
,
40 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
41 guid
->time_low
, guid
->time_mid
,
42 guid
->time_hi_and_version
,
45 guid
->node
[0], guid
->node
[1],
46 guid
->node
[2], guid
->node
[3],
47 guid
->node
[4], guid
->node
[5]);
48 BAIL_ON_PTR_ERROR((*guid_string
), wbc_status
);
50 wbc_status
= WBC_ERR_SUCCESS
;
56 /* @brief Convert a character string to a binary GUID */
57 wbcErr
wbcStringToGuid(const char *str
,
61 uint32_t time_mid
, time_hi_and_version
;
62 uint32_t clock_seq
[2];
65 wbcErr wbc_status
= WBC_ERR_UNKNOWN_FAILURE
;
68 wbc_status
= WBC_ERR_INVALID_PARAM
;
69 BAIL_ON_WBC_ERROR(wbc_status
);
73 wbc_status
= WBC_ERR_INVALID_PARAM
;
74 BAIL_ON_WBC_ERROR(wbc_status
);
77 if (11 == sscanf(str
, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
78 &time_low
, &time_mid
, &time_hi_and_version
,
79 &clock_seq
[0], &clock_seq
[1],
80 &node
[0], &node
[1], &node
[2], &node
[3], &node
[4], &node
[5])) {
81 wbc_status
= WBC_ERR_SUCCESS
;
82 } else if (11 == sscanf(str
, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
83 &time_low
, &time_mid
, &time_hi_and_version
,
84 &clock_seq
[0], &clock_seq
[1],
85 &node
[0], &node
[1], &node
[2], &node
[3], &node
[4], &node
[5])) {
86 wbc_status
= WBC_ERR_SUCCESS
;
89 BAIL_ON_WBC_ERROR(wbc_status
);
91 guid
->time_low
= time_low
;
92 guid
->time_mid
= time_mid
;
93 guid
->time_hi_and_version
= time_hi_and_version
;
94 guid
->clock_seq
[0] = clock_seq
[0];
95 guid
->clock_seq
[1] = clock_seq
[1];
98 guid
->node
[i
] = node
[i
];
101 wbc_status
= WBC_ERR_SUCCESS
;