adsldp: Map "1.3.6.1.4.1.1466.115.121.1.24" to ADSTYPE_UTC_TIME.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
736cf6050d
commit
c7656ffd18
|
@ -1528,6 +1528,50 @@ static HRESULT add_column_values(LDAP_namespace *ldap, struct ldap_search_contex
|
||||||
col->hReserved = values;
|
col->hReserved = values;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ADSTYPE_UTC_TIME:
|
||||||
|
{
|
||||||
|
struct berval **values = ldap_get_values_lenW(ldap->ld, ldap_ctx->entry, name);
|
||||||
|
if (!values)
|
||||||
|
return E_ADS_COLUMN_NOT_SET;
|
||||||
|
count = ldap_count_values_len(values);
|
||||||
|
|
||||||
|
col->pADsValues = heap_alloc_zero(count * sizeof(col->pADsValues[0]));
|
||||||
|
if (!col->pADsValues)
|
||||||
|
{
|
||||||
|
ldap_value_free_len(values);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
col->pADsValues[i].dwType = type;
|
||||||
|
if (values[i]->bv_len < 14 ||
|
||||||
|
_snscanf_l(values[i]->bv_val, values[i]->bv_len, "%04u%02u%02u%02u%02u%02u", NULL,
|
||||||
|
&col->pADsValues[i].u.UTCTime.wYear, &col->pADsValues[i].u.UTCTime.wMonth,
|
||||||
|
&col->pADsValues[i].u.UTCTime.wDay, &col->pADsValues[i].u.UTCTime.wHour,
|
||||||
|
&col->pADsValues[i].u.UTCTime.wMinute, &col->pADsValues[i].u.UTCTime.wSecond) != 6)
|
||||||
|
{
|
||||||
|
FIXME("not recognized UTCTime: %s\n", debugstr_an(values[i]->bv_val, values[i]->bv_len));
|
||||||
|
memset(&col->pADsValues[i].u.UTCTime, 0, sizeof(col->pADsValues[i].u.UTCTime));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((values[i]->bv_val[14] != '.' && values[i]->bv_val[14] != ',') ||
|
||||||
|
values[i]->bv_val[15] != '0' || values[i]->bv_val[16] != 'Z')
|
||||||
|
FIXME("not handled time zone: %s\n", debugstr_an(values[i]->bv_val + 14, values[i]->bv_len - 14));
|
||||||
|
|
||||||
|
TRACE("%s => %02u.%02u.%04u %02u:%02u:%02u\n", debugstr_an(values[i]->bv_val, values[i]->bv_len),
|
||||||
|
col->pADsValues[i].u.UTCTime.wDay, col->pADsValues[i].u.UTCTime.wMonth,
|
||||||
|
col->pADsValues[i].u.UTCTime.wYear, col->pADsValues[i].u.UTCTime.wHour,
|
||||||
|
col->pADsValues[i].u.UTCTime.wMinute, col->pADsValues[i].u.UTCTime.wSecond);
|
||||||
|
}
|
||||||
|
|
||||||
|
ldap_value_free_len(values);
|
||||||
|
col->hReserved = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
col->dwADsType = type;
|
col->dwADsType = type;
|
||||||
|
|
|
@ -93,6 +93,8 @@ ADSTYPEENUM get_schema_type(const WCHAR *name, const struct attribute_type *at,
|
||||||
return ADSTYPE_DN_STRING;
|
return ADSTYPE_DN_STRING;
|
||||||
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.15"))
|
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.15"))
|
||||||
return ADSTYPE_CASE_IGNORE_STRING;
|
return ADSTYPE_CASE_IGNORE_STRING;
|
||||||
|
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.24"))
|
||||||
|
return ADSTYPE_UTC_TIME;
|
||||||
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.27"))
|
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.27"))
|
||||||
return ADSTYPE_INTEGER;
|
return ADSTYPE_INTEGER;
|
||||||
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.38"))
|
if (!wcscmp(type->syntax, L"1.3.6.1.4.1.1466.115.121.1.38"))
|
||||||
|
|
Loading…
Reference in New Issue