Release 9.12.
[wine.git] / dlls / wldap32 / rename.c
blobb8d4a50a3aff663c21a7a7e848b877ed8baf54d3
1 /*
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
21 #include <stdarg.h>
22 #include "windef.h"
23 #include "winbase.h"
24 #include "winnls.h"
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 );
54 exit:
55 free( dnW );
56 free( newrdnW );
57 free( newparentW );
58 controlarrayfreeW( serverctrlsW );
59 controlarrayfreeW( clientctrlsW );
60 return ret;
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 )
69 ULONG ret;
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;
85 else
87 ret = map_error( ldap_rename( CTX(ld), dnU, newrdnU, newparentU, delete, serverctrlsU, clientctrlsU,
88 (int *)message ) );
90 exit:
91 free( dnU );
92 free( newrdnU );
93 free( newparentU );
94 controlarrayfreeU( serverctrlsU );
95 controlarrayfreeU( clientctrlsU );
96 return ret;
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 );
122 exit:
123 free( dnW );
124 free( newrdnW );
125 free( newparentW );
126 controlarrayfreeW( serverctrlsW );
127 controlarrayfreeW( clientctrlsW );
128 return ret;
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 )
137 ULONG ret;
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;
153 else
155 ret = map_error( ldap_rename_s( CTX(ld), dnU, newrdnU, newparentU, delete, serverctrlsU, clientctrlsU ) );
157 exit:
158 free( dnU );
159 free( newrdnU );
160 free( newparentU );
161 controlarrayfreeU( serverctrlsU );
162 controlarrayfreeU( clientctrlsU );
163 return ret;