wldap32: Move support for modify functions to the Unix library.
Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b2ac9f4b75
commit
512a51825f
|
@ -52,7 +52,7 @@ C_ASSERT( sizeof(LDAPSortKeyU) == sizeof(LDAPSortKey) );
|
|||
C_ASSERT( sizeof(LDAPVLVInfoU) == sizeof(LDAPVLVInfo) );
|
||||
C_ASSERT( sizeof(struct timevalU) == sizeof(struct timeval) );
|
||||
|
||||
static LDAPMod *nullattrs[] = { NULL };
|
||||
static LDAPMod *nullmods[] = { NULL };
|
||||
|
||||
static const struct ldap_callbacks *callbacks;
|
||||
|
||||
|
@ -305,14 +305,14 @@ int CDECL wrap_ldap_add_ext( void *ld, const char *dn, LDAPModU **attrs, LDAPCon
|
|||
LDAPControlU **clientctrls, ULONG *msg )
|
||||
{
|
||||
int dummy;
|
||||
return ldap_add_ext( ld, dn ? dn : "", attrs ? (LDAPMod **)attrs : nullattrs, (LDAPControl **)serverctrls,
|
||||
return ldap_add_ext( ld, dn ? dn : "", attrs ? (LDAPMod **)attrs : nullmods, (LDAPControl **)serverctrls,
|
||||
(LDAPControl **)clientctrls, msg ? (int *)msg : &dummy );
|
||||
}
|
||||
|
||||
int CDECL wrap_ldap_add_ext_s( void *ld, const char *dn, LDAPModU **attrs, LDAPControlU **serverctrls,
|
||||
LDAPControlU **clientctrls )
|
||||
{
|
||||
return ldap_add_ext_s( ld, dn ? dn : "", attrs ? (LDAPMod **)attrs : nullattrs, (LDAPControl **)serverctrls,
|
||||
return ldap_add_ext_s( ld, dn ? dn : "", attrs ? (LDAPMod **)attrs : nullmods, (LDAPControl **)serverctrls,
|
||||
(LDAPControl **)clientctrls );
|
||||
}
|
||||
|
||||
|
@ -429,6 +429,21 @@ void CDECL wrap_ldap_memvfree( void **ptr )
|
|||
ldap_memvfree( ptr );
|
||||
}
|
||||
|
||||
int CDECL wrap_ldap_modify_ext( void *ld, const char *dn, LDAPModU **mods, LDAPControlU **serverctrls,
|
||||
LDAPControlU **clientctrls, ULONG *msg )
|
||||
{
|
||||
int dummy;
|
||||
return ldap_modify_ext( ld, dn ? dn : "", mods ? (LDAPMod **)mods : nullmods, (LDAPControl **)serverctrls,
|
||||
(LDAPControl **)clientctrls, msg ? (int *)msg : &dummy );
|
||||
}
|
||||
|
||||
int CDECL wrap_ldap_modify_ext_s( void *ld, const char *dn, LDAPModU **mods, LDAPControlU **serverctrls,
|
||||
LDAPControlU **clientctrls )
|
||||
{
|
||||
return ldap_modify_ext_s( ld, dn ? dn : "", mods ? (LDAPMod **)mods : nullmods, (LDAPControl **)serverctrls,
|
||||
(LDAPControl **)clientctrls );
|
||||
}
|
||||
|
||||
int CDECL wrap_ldap_msgfree( void *msg )
|
||||
{
|
||||
return ldap_msgfree( msg );
|
||||
|
@ -569,6 +584,8 @@ static const struct ldap_funcs funcs =
|
|||
wrap_ldap_first_reference,
|
||||
wrap_ldap_memfree,
|
||||
wrap_ldap_memvfree,
|
||||
wrap_ldap_modify_ext,
|
||||
wrap_ldap_modify_ext_s,
|
||||
wrap_ldap_msgfree,
|
||||
wrap_ldap_next_attribute,
|
||||
wrap_ldap_next_entry,
|
||||
|
|
|
@ -125,6 +125,10 @@ extern void * CDECL wrap_ldap_first_entry(void *, void *) DECLSPEC_HIDDEN;
|
|||
extern void * CDECL wrap_ldap_first_reference(void *, void *) DECLSPEC_HIDDEN;
|
||||
extern void CDECL wrap_ldap_memfree(void *) DECLSPEC_HIDDEN;
|
||||
extern void CDECL wrap_ldap_memvfree(void **) DECLSPEC_HIDDEN;
|
||||
extern int CDECL wrap_ldap_modify_ext(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **,
|
||||
ULONG *) DECLSPEC_HIDDEN;
|
||||
extern int CDECL wrap_ldap_modify_ext_s(void *, const char *, LDAPModU **, LDAPControlU **,
|
||||
LDAPControlU **) DECLSPEC_HIDDEN;
|
||||
extern int CDECL wrap_ldap_msgfree(void *) DECLSPEC_HIDDEN;
|
||||
extern char * CDECL wrap_ldap_next_attribute(void *, void *, void *) DECLSPEC_HIDDEN;
|
||||
extern void * CDECL wrap_ldap_next_entry(void *, void *) DECLSPEC_HIDDEN;
|
||||
|
@ -190,6 +194,8 @@ struct ldap_funcs
|
|||
void * (CDECL *ldap_first_reference)(void *, void *);
|
||||
void (CDECL *ldap_memfree)(void *);
|
||||
void (CDECL *ldap_memvfree)(void **);
|
||||
int (CDECL *ldap_modify_ext)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **, ULONG *);
|
||||
int (CDECL *ldap_modify_ext_s)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **);
|
||||
int (CDECL *ldap_msgfree)(void *);
|
||||
char * (CDECL *ldap_next_attribute)(void *, void *, void *);
|
||||
void * (CDECL *ldap_next_entry)(void *, void *);
|
||||
|
|
|
@ -18,62 +18,39 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#ifdef HAVE_LDAP_H
|
||||
#include <ldap.h>
|
||||
#endif
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winnls.h"
|
||||
|
||||
#include "winldap_private.h"
|
||||
#include "wldap32.h"
|
||||
#include "wine/debug.h"
|
||||
#include "winldap_private.h"
|
||||
|
||||
#ifdef HAVE_LDAP
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(wldap32);
|
||||
|
||||
static LDAPMod *nullmods[] = { NULL };
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* ldap_modifyA (WLDAP32.@)
|
||||
*
|
||||
* See ldap_modifyW.
|
||||
*/
|
||||
ULONG CDECL ldap_modifyA( WLDAP32_LDAP *ld, PCHAR dn, LDAPModA *mods[] )
|
||||
ULONG CDECL ldap_modifyA( WLDAP32_LDAP *ld, char *dn, LDAPModA **mods )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
WCHAR *dnW = NULL;
|
||||
LDAPModW **modsW = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p)\n", ld, debugstr_a(dn), mods );
|
||||
|
||||
if (!ld) return ~0u;
|
||||
|
||||
if (dn) {
|
||||
dnW = strAtoW( dn );
|
||||
if (!dnW) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsW = modarrayAtoW( mods );
|
||||
if (!modsW) goto exit;
|
||||
}
|
||||
if (dn && !(dnW = strAtoW( dn ))) goto exit;
|
||||
if (mods && !(modsW = modarrayAtoW( mods ))) goto exit;
|
||||
|
||||
ret = ldap_modifyW( ld, dnW, modsW );
|
||||
|
||||
exit:
|
||||
strfreeW( dnW );
|
||||
modarrayfreeW( modsW );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -97,43 +74,15 @@ exit:
|
|||
* the operation. Cancel the operation by calling ldap_abandon
|
||||
* with the message ID.
|
||||
*/
|
||||
ULONG CDECL ldap_modifyW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[] )
|
||||
ULONG CDECL ldap_modifyW( WLDAP32_LDAP *ld, WCHAR *dn, LDAPModW **mods )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
char *dnU = NULL;
|
||||
LDAPMod **modsU = NULL;
|
||||
int msg;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
ULONG ret, msg;
|
||||
|
||||
TRACE( "(%p, %s, %p)\n", ld, debugstr_w(dn), mods );
|
||||
|
||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||
|
||||
if (dn) {
|
||||
dnU = strWtoU( dn );
|
||||
if (!dnU) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsU = modarrayWtoU( mods );
|
||||
if (!modsU) goto exit;
|
||||
}
|
||||
|
||||
ret = ldap_modify_ext( ld->ld, dn ? dnU : "", mods ? modsU : nullmods,
|
||||
NULL, NULL, &msg );
|
||||
|
||||
if (ret == LDAP_SUCCESS)
|
||||
ret = msg;
|
||||
else
|
||||
ret = ~0u;
|
||||
|
||||
exit:
|
||||
strfreeU( dnU );
|
||||
modarrayfreeU( modsU );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
ret = ldap_modify_extW( ld, dn, mods, NULL, NULL, &msg );
|
||||
if (ret == WLDAP32_LDAP_SUCCESS) return msg;
|
||||
return ~0u;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -141,38 +90,22 @@ exit:
|
|||
*
|
||||
* See ldap_modify_extW.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_extA( WLDAP32_LDAP *ld, PCHAR dn, LDAPModA *mods[],
|
||||
PLDAPControlA *serverctrls, PLDAPControlA *clientctrls, ULONG *message )
|
||||
ULONG CDECL ldap_modify_extA( WLDAP32_LDAP *ld, char *dn, LDAPModA **mods,
|
||||
LDAPControlA **serverctrls, LDAPControlA **clientctrls, ULONG *message )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
WCHAR *dnW = NULL;
|
||||
LDAPModW **modsW = NULL;
|
||||
LDAPControlW **serverctrlsW = NULL, **clientctrlsW = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p, %p, %p, %p)\n", ld, debugstr_a(dn), mods,
|
||||
serverctrls, clientctrls, message );
|
||||
TRACE( "(%p, %s, %p, %p, %p, %p)\n", ld, debugstr_a(dn), mods, serverctrls, clientctrls, message );
|
||||
|
||||
if (!ld) return ~0u;
|
||||
|
||||
if (dn) {
|
||||
dnW = strAtoW( dn );
|
||||
if (!dnW) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsW = modarrayAtoW( mods );
|
||||
if (!modsW) goto exit;
|
||||
}
|
||||
if (serverctrls) {
|
||||
serverctrlsW = controlarrayAtoW( serverctrls );
|
||||
if (!serverctrlsW) goto exit;
|
||||
}
|
||||
if (clientctrls) {
|
||||
clientctrlsW = controlarrayAtoW( clientctrls );
|
||||
if (!clientctrlsW) goto exit;
|
||||
}
|
||||
if (dn && !(dnW = strAtoW( dn ))) goto exit;
|
||||
if (mods && !(modsW = modarrayAtoW( mods ))) goto exit;
|
||||
if (serverctrls && !(serverctrlsW = controlarrayAtoW( serverctrls ))) goto exit;
|
||||
if (clientctrls && !(clientctrlsW = controlarrayAtoW( clientctrls ))) goto exit;
|
||||
|
||||
ret = ldap_modify_extW( ld, dnW, modsW, serverctrlsW, clientctrlsW, message );
|
||||
|
||||
|
@ -181,8 +114,6 @@ exit:
|
|||
modarrayfreeW( modsW );
|
||||
controlarrayfreeW( serverctrlsW );
|
||||
controlarrayfreeW( clientctrlsW );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -209,50 +140,30 @@ exit:
|
|||
* the operation. The serverctrls and clientctrls parameters are
|
||||
* optional and should be set to NULL if not used.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_extW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[],
|
||||
PLDAPControlW *serverctrls, PLDAPControlW *clientctrls, ULONG *message )
|
||||
ULONG CDECL ldap_modify_extW( WLDAP32_LDAP *ld, WCHAR *dn, LDAPModW **mods,
|
||||
LDAPControlW **serverctrls, LDAPControlW **clientctrls, ULONG *message )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
char *dnU = NULL;
|
||||
LDAPMod **modsU = NULL;
|
||||
LDAPControl **serverctrlsU = NULL, **clientctrlsU = NULL;
|
||||
int dummy;
|
||||
LDAPModU **modsU = NULL;
|
||||
LDAPControlU **serverctrlsU = NULL, **clientctrlsU = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p, %p, %p, %p)\n", ld, debugstr_w(dn), mods,
|
||||
serverctrls, clientctrls, message );
|
||||
TRACE( "(%p, %s, %p, %p, %p, %p)\n", ld, debugstr_w(dn), mods, serverctrls, clientctrls, message );
|
||||
|
||||
if (!ld) return ~0u;
|
||||
|
||||
if (dn) {
|
||||
dnU = strWtoU( dn );
|
||||
if (!dnU) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsU = modarrayWtoU( mods );
|
||||
if (!modsU) goto exit;
|
||||
}
|
||||
if (serverctrls) {
|
||||
serverctrlsU = controlarrayWtoU( serverctrls );
|
||||
if (!serverctrlsU) goto exit;
|
||||
}
|
||||
if (clientctrls) {
|
||||
clientctrlsU = controlarrayWtoU( clientctrls );
|
||||
if (!clientctrlsU) goto exit;
|
||||
}
|
||||
if (dn && !(dnU = strWtoU( dn ))) goto exit;
|
||||
if (mods && !(modsU = modarrayWtoU( mods ))) goto exit;
|
||||
if (serverctrls && !(serverctrlsU = controlarrayWtoU( serverctrls ))) goto exit;
|
||||
if (clientctrls && !(clientctrlsU = controlarrayWtoU( clientctrls ))) goto exit;
|
||||
|
||||
ret = map_error( ldap_modify_ext( ld->ld, dn ? dnU : "", mods ? modsU : nullmods, serverctrlsU,
|
||||
clientctrlsU, message ? (int *)message : &dummy ));
|
||||
ret = map_error( ldap_funcs->ldap_modify_ext( ld->ld, dnU, modsU, serverctrlsU, clientctrlsU, message ) );
|
||||
|
||||
exit:
|
||||
strfreeU( dnU );
|
||||
modarrayfreeU( modsU );
|
||||
controlarrayfreeU( serverctrlsU );
|
||||
controlarrayfreeU( clientctrlsU );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -261,38 +172,22 @@ exit:
|
|||
*
|
||||
* See ldap_modify_ext_sW.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_ext_sA( WLDAP32_LDAP *ld, PCHAR dn, LDAPModA *mods[],
|
||||
PLDAPControlA *serverctrls, PLDAPControlA *clientctrls )
|
||||
ULONG CDECL ldap_modify_ext_sA( WLDAP32_LDAP *ld, char *dn, LDAPModA **mods,
|
||||
LDAPControlA **serverctrls, LDAPControlA **clientctrls )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
WCHAR *dnW = NULL;
|
||||
LDAPModW **modsW = NULL;
|
||||
LDAPControlW **serverctrlsW = NULL, **clientctrlsW = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p, %p, %p)\n", ld, debugstr_a(dn), mods,
|
||||
serverctrls, clientctrls );
|
||||
TRACE( "(%p, %s, %p, %p, %p)\n", ld, debugstr_a(dn), mods, serverctrls, clientctrls );
|
||||
|
||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||
|
||||
if (dn) {
|
||||
dnW = strAtoW( dn );
|
||||
if (!dnW) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsW = modarrayAtoW( mods );
|
||||
if (!modsW) goto exit;
|
||||
}
|
||||
if (serverctrls) {
|
||||
serverctrlsW = controlarrayAtoW( serverctrls );
|
||||
if (!serverctrlsW) goto exit;
|
||||
}
|
||||
if (clientctrls) {
|
||||
clientctrlsW = controlarrayAtoW( clientctrls );
|
||||
if (!clientctrlsW) goto exit;
|
||||
}
|
||||
if (dn && !(dnW = strAtoW( dn ))) goto exit;
|
||||
if (mods && !(modsW = modarrayAtoW( mods ))) goto exit;
|
||||
if (serverctrls && !(serverctrlsW = controlarrayAtoW( serverctrls ))) goto exit;
|
||||
if (clientctrls && !(clientctrlsW = controlarrayAtoW( clientctrls ))) goto exit;
|
||||
|
||||
ret = ldap_modify_ext_sW( ld, dnW, modsW, serverctrlsW, clientctrlsW );
|
||||
|
||||
|
@ -301,8 +196,6 @@ exit:
|
|||
modarrayfreeW( modsW );
|
||||
controlarrayfreeW( serverctrlsW );
|
||||
controlarrayfreeW( clientctrlsW );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -327,49 +220,30 @@ exit:
|
|||
* The serverctrls and clientctrls parameters are optional and
|
||||
* should be set to NULL if not used.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_ext_sW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[],
|
||||
PLDAPControlW *serverctrls, PLDAPControlW *clientctrls )
|
||||
ULONG CDECL ldap_modify_ext_sW( WLDAP32_LDAP *ld, WCHAR *dn, LDAPModW **mods,
|
||||
LDAPControlW **serverctrls, LDAPControlW **clientctrls )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
char *dnU = NULL;
|
||||
LDAPMod **modsU = NULL;
|
||||
LDAPControl **serverctrlsU = NULL, **clientctrlsU = NULL;
|
||||
LDAPModU **modsU = NULL;
|
||||
LDAPControlU **serverctrlsU = NULL, **clientctrlsU = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p, %p, %p)\n", ld, debugstr_w(dn), mods,
|
||||
serverctrls, clientctrls );
|
||||
TRACE( "(%p, %s, %p, %p, %p)\n", ld, debugstr_w(dn), mods, serverctrls, clientctrls );
|
||||
|
||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||
|
||||
if (dn) {
|
||||
dnU = strWtoU( dn );
|
||||
if (!dnU) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsU = modarrayWtoU( mods );
|
||||
if (!modsU) goto exit;
|
||||
}
|
||||
if (serverctrls) {
|
||||
serverctrlsU = controlarrayWtoU( serverctrls );
|
||||
if (!serverctrlsU) goto exit;
|
||||
}
|
||||
if (clientctrls) {
|
||||
clientctrlsU = controlarrayWtoU( clientctrls );
|
||||
if (!clientctrlsU) goto exit;
|
||||
}
|
||||
if (dn && !(dnU = strWtoU( dn ))) goto exit;
|
||||
if (mods && !(modsU = modarrayWtoU( mods ))) goto exit;
|
||||
if (serverctrls && !(serverctrlsU = controlarrayWtoU( serverctrls ))) goto exit;
|
||||
if (clientctrls && !(clientctrlsU = controlarrayWtoU( clientctrls ))) goto exit;
|
||||
|
||||
ret = map_error( ldap_modify_ext_s( ld->ld, dn ? dnU : "", mods ? modsU : nullmods,
|
||||
serverctrlsU, clientctrlsU ));
|
||||
ret = map_error( ldap_funcs->ldap_modify_ext_s( ld->ld, dnU, modsU, serverctrlsU, clientctrlsU ) );
|
||||
|
||||
exit:
|
||||
strfreeU( dnU );
|
||||
modarrayfreeU( modsU );
|
||||
controlarrayfreeU( serverctrlsU );
|
||||
controlarrayfreeU( clientctrlsU );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -378,35 +252,24 @@ exit:
|
|||
*
|
||||
* See ldap_modify_sW.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_sA( WLDAP32_LDAP *ld, PCHAR dn, LDAPModA *mods[] )
|
||||
ULONG CDECL ldap_modify_sA( WLDAP32_LDAP *ld, char *dn, LDAPModA **mods )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
ULONG ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
WCHAR *dnW = NULL;
|
||||
LDAPModW **modsW = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p)\n", ld, debugstr_a(dn), mods );
|
||||
|
||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||
|
||||
if (dn) {
|
||||
dnW = strAtoW( dn );
|
||||
if (!dnW) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsW = modarrayAtoW( mods );
|
||||
if (!modsW) goto exit;
|
||||
}
|
||||
if (dn && !(dnW = strAtoW( dn ))) goto exit;
|
||||
if (mods && !(modsW = modarrayAtoW( mods ))) goto exit;
|
||||
|
||||
ret = ldap_modify_sW( ld, dnW, modsW );
|
||||
|
||||
exit:
|
||||
strfreeW( dnW );
|
||||
modarrayfreeW( modsW );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -425,34 +288,8 @@ exit:
|
|||
* Success: LDAP_SUCCESS
|
||||
* Failure: An LDAP error code.
|
||||
*/
|
||||
ULONG CDECL ldap_modify_sW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[] )
|
||||
ULONG CDECL ldap_modify_sW( WLDAP32_LDAP *ld, WCHAR *dn, LDAPModW **mods )
|
||||
{
|
||||
ULONG ret = WLDAP32_LDAP_NOT_SUPPORTED;
|
||||
#ifdef HAVE_LDAP
|
||||
char *dnU = NULL;
|
||||
LDAPMod **modsU = NULL;
|
||||
|
||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||
|
||||
TRACE( "(%p, %s, %p)\n", ld, debugstr_w(dn), mods );
|
||||
|
||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||
|
||||
if (dn) {
|
||||
dnU = strWtoU( dn );
|
||||
if (!dnU) goto exit;
|
||||
}
|
||||
if (mods) {
|
||||
modsU = modarrayWtoU( mods );
|
||||
if (!modsU) goto exit;
|
||||
}
|
||||
|
||||
ret = map_error( ldap_modify_ext_s( ld->ld, dn ? dnU : "", mods ? modsU : nullmods, NULL, NULL ));
|
||||
|
||||
exit:
|
||||
strfreeU( dnU );
|
||||
modarrayfreeU( modsU );
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
return ldap_modify_ext_sW( ld, dn, mods, NULL, NULL );
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue