mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r20493: Add support for the 'Netscape' varient of GUID formatting, used in the
Fedora DS. Andrew Bartlett
This commit is contained in:
parent
600c7f1a68
commit
918e52fa5f
@ -68,6 +68,45 @@ _PUBLIC_ NTSTATUS GUID_from_string(const char *s, struct GUID *guid)
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
build a GUID from a string
|
||||
*/
|
||||
_PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid)
|
||||
{
|
||||
NTSTATUS status = NT_STATUS_INVALID_PARAMETER;
|
||||
uint32_t time_low;
|
||||
uint32_t time_mid, time_hi_and_version;
|
||||
uint32_t clock_seq[2];
|
||||
uint32_t node[6];
|
||||
int i;
|
||||
|
||||
if (s == NULL) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (11 == sscanf(s, "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x",
|
||||
&time_low, &time_mid, &time_hi_and_version,
|
||||
&clock_seq[0], &clock_seq[1],
|
||||
&node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) {
|
||||
status = NT_STATUS_OK;
|
||||
}
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
guid->time_low = time_low;
|
||||
guid->time_mid = time_mid;
|
||||
guid->time_hi_and_version = time_hi_and_version;
|
||||
guid->clock_seq[0] = clock_seq[0];
|
||||
guid->clock_seq[1] = clock_seq[1];
|
||||
for (i=0;i<6;i++) {
|
||||
guid->node[i] = node[i];
|
||||
}
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* generate a random GUID
|
||||
*/
|
||||
@ -144,6 +183,19 @@ _PUBLIC_ char *GUID_string2(TALLOC_CTX *mem_ctx, const struct GUID *guid)
|
||||
return ret;
|
||||
}
|
||||
|
||||
_PUBLIC_ char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid)
|
||||
{
|
||||
return talloc_asprintf(mem_ctx,
|
||||
"%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x",
|
||||
guid->time_low, guid->time_mid,
|
||||
guid->time_hi_and_version,
|
||||
guid->clock_seq[0],
|
||||
guid->clock_seq[1],
|
||||
guid->node[0], guid->node[1],
|
||||
guid->node[2], guid->node[3],
|
||||
guid->node[4], guid->node[5]);
|
||||
}
|
||||
|
||||
_PUBLIC_ BOOL policy_handle_empty(struct policy_handle *h)
|
||||
{
|
||||
return (h->handle_type == 0 && GUID_all_zero(&h->uuid));
|
||||
|
Loading…
Reference in New Issue
Block a user