2 * WLDAP32 - LDAP support for Wine
4 * Copyright 2005 Hans Leidekker
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 #include "wine/debug.h"
27 #include "winldap_private.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(wldap32
);
31 /***********************************************************************
32 * ldap_rename_extA (WLDAP32.@)
34 ULONG CDECL
ldap_rename_extA( LDAP
*ld
, char *dn
, char *newrdn
, char *newparent
, int delete,
35 LDAPControlA
**serverctrls
, LDAPControlA
**clientctrls
, ULONG
*message
)
37 ULONG ret
= WLDAP32_LDAP_NO_MEMORY
;
38 WCHAR
*dnW
= NULL
, *newrdnW
= NULL
, *newparentW
= NULL
;
39 LDAPControlW
**serverctrlsW
= NULL
, **clientctrlsW
= NULL
;
41 TRACE( "(%p, %s, %s, %s, 0x%02x, %p, %p, %p)\n", ld
, debugstr_a(dn
), debugstr_a(newrdn
), debugstr_a(newparent
),
42 delete, serverctrls
, clientctrls
, message
);
44 if (!ld
|| !message
) return WLDAP32_LDAP_PARAM_ERROR
;
46 if (dn
&& !(dnW
= strAtoW( dn
))) goto exit
;
47 if (newrdn
&& !(newrdnW
= strAtoW( newrdn
))) goto exit
;
48 if (newparent
&& !(newparentW
= strAtoW( newparent
))) goto exit
;
49 if (serverctrls
&& !(serverctrlsW
= controlarrayAtoW( serverctrls
))) goto exit
;
50 if (clientctrls
&& !(clientctrlsW
= controlarrayAtoW( clientctrls
))) goto exit
;
52 ret
= ldap_rename_extW( ld
, dnW
, newrdnW
, newparentW
, delete, serverctrlsW
, clientctrlsW
, message
);
58 controlarrayfreeW( serverctrlsW
);
59 controlarrayfreeW( clientctrlsW
);
63 /***********************************************************************
64 * ldap_rename_extW (WLDAP32.@)
66 ULONG CDECL
ldap_rename_extW( LDAP
*ld
, WCHAR
*dn
, WCHAR
*newrdn
, WCHAR
*newparent
, int delete,
67 LDAPControlW
**serverctrls
, LDAPControlW
**clientctrls
, ULONG
*message
)
70 char *dnU
= NULL
, *newrdnU
= NULL
, *newparentU
= NULL
;
71 LDAPControl
**serverctrlsU
= NULL
, **clientctrlsU
= NULL
;
73 TRACE( "(%p, %s, %s, %s, 0x%02x, %p, %p, %p)\n", ld
, debugstr_w(dn
), debugstr_w(newrdn
), debugstr_w(newparent
),
74 delete, serverctrls
, clientctrls
, message
);
76 if (!ld
|| !message
) return WLDAP32_LDAP_PARAM_ERROR
;
77 if ((ret
= WLDAP32_ldap_connect( ld
, NULL
))) return ret
;
79 ret
= WLDAP32_LDAP_NO_MEMORY
;
80 if (dn
&& !(dnU
= strWtoU( dn
))) goto exit
;
81 if (newrdn
&& !(newrdnU
= strWtoU( newrdn
))) goto exit
;
82 if (newparent
&& !(newparentU
= strWtoU( newparent
))) goto exit
;
83 if (serverctrls
&& !(serverctrlsU
= controlarrayWtoU( serverctrls
))) goto exit
;
84 if (clientctrls
&& !(clientctrlsU
= controlarrayWtoU( clientctrls
))) goto exit
;
87 ret
= map_error( ldap_rename( CTX(ld
), dnU
, newrdnU
, newparentU
, delete, serverctrlsU
, clientctrlsU
,
94 controlarrayfreeU( serverctrlsU
);
95 controlarrayfreeU( clientctrlsU
);
99 /***********************************************************************
100 * ldap_rename_ext_sA (WLDAP32.@)
102 ULONG CDECL
ldap_rename_ext_sA( LDAP
*ld
, char *dn
, char *newrdn
, char *newparent
, int delete,
103 LDAPControlA
**serverctrls
, LDAPControlA
**clientctrls
)
105 ULONG ret
= WLDAP32_LDAP_NO_MEMORY
;
106 WCHAR
*dnW
= NULL
, *newrdnW
= NULL
, *newparentW
= NULL
;
107 LDAPControlW
**serverctrlsW
= NULL
, **clientctrlsW
= NULL
;
109 TRACE( "(%p, %s, %s, %s, 0x%02x, %p, %p)\n", ld
, debugstr_a(dn
), debugstr_a(newrdn
), debugstr_a(newparent
),
110 delete, serverctrls
, clientctrls
);
112 if (!ld
) return WLDAP32_LDAP_PARAM_ERROR
;
114 if (dn
&& !(dnW
= strAtoW( dn
))) goto exit
;
115 if (newrdn
&& !(newrdnW
= strAtoW( newrdn
))) goto exit
;
116 if (newparent
&& !(newparentW
= strAtoW( newparent
))) goto exit
;
117 if (serverctrls
&& !(serverctrlsW
= controlarrayAtoW( serverctrls
))) goto exit
;
118 if (clientctrls
&& !(clientctrlsW
= controlarrayAtoW( clientctrls
))) goto exit
;
120 ret
= ldap_rename_ext_sW( ld
, dnW
, newrdnW
, newparentW
, delete, serverctrlsW
, clientctrlsW
);
126 controlarrayfreeW( serverctrlsW
);
127 controlarrayfreeW( clientctrlsW
);
131 /***********************************************************************
132 * ldap_rename_ext_sW (WLDAP32.@)
134 ULONG CDECL
ldap_rename_ext_sW( LDAP
*ld
, WCHAR
*dn
, WCHAR
*newrdn
, WCHAR
*newparent
, int delete,
135 LDAPControlW
**serverctrls
, LDAPControlW
**clientctrls
)
138 char *dnU
= NULL
, *newrdnU
= NULL
, *newparentU
= NULL
;
139 LDAPControl
**serverctrlsU
= NULL
, **clientctrlsU
= NULL
;
141 TRACE( "(%p, %s, %s, %s, 0x%02x, %p, %p)\n", ld
, debugstr_w(dn
), debugstr_w(newrdn
), debugstr_w(newparent
),
142 delete, serverctrls
, clientctrls
);
144 if (!ld
) return WLDAP32_LDAP_PARAM_ERROR
;
145 if ((ret
= WLDAP32_ldap_connect( ld
, NULL
))) return ret
;
147 ret
= WLDAP32_LDAP_NO_MEMORY
;
148 if (dn
&& !(dnU
= strWtoU( dn
))) goto exit
;
149 if (newrdn
&& !(newrdnU
= strWtoU( newrdn
))) goto exit
;
150 if (newparent
&& !(newparentU
= strWtoU( newparent
))) goto exit
;
151 if (serverctrls
&& !(serverctrlsU
= controlarrayWtoU( serverctrls
))) goto exit
;
152 if (clientctrls
&& !(clientctrlsU
= controlarrayWtoU( clientctrls
))) goto exit
;
155 ret
= map_error( ldap_rename_s( CTX(ld
), dnU
, newrdnU
, newparentU
, delete, serverctrlsU
, clientctrlsU
) );
161 controlarrayfreeU( serverctrlsU
);
162 controlarrayfreeU( clientctrlsU
);