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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "wine/port.h"
24 #include "wine/debug.h"
35 #define LDAP_SUCCESS 0x00
36 #define LDAP_NOT_SUPPORTED 0x5c
39 #include "winldap_private.h"
42 WINE_DEFAULT_DEBUG_CHANNEL(wldap32
);
44 ULONG
ldap_control_freeA( LDAPControlA
*control
)
46 ULONG ret
= LDAP_SUCCESS
;
49 TRACE( "(%p)\n", control
);
50 controlfreeA( control
);
56 ULONG
ldap_control_freeW( LDAPControlW
*control
)
58 ULONG ret
= LDAP_SUCCESS
;
61 TRACE( "(%p)\n", control
);
62 controlfreeW( control
);
68 ULONG
ldap_controls_freeA( LDAPControlA
**controls
)
70 ULONG ret
= LDAP_SUCCESS
;
73 TRACE( "(%p)\n", controls
);
74 controlarrayfreeA( controls
);
80 ULONG
ldap_controls_freeW( LDAPControlW
**controls
)
82 ULONG ret
= LDAP_SUCCESS
;
85 TRACE( "(%p)\n", controls
);
86 controlarrayfreeW( controls
);
92 ULONG
ldap_create_page_controlA( WLDAP32_LDAP
*ld
, ULONG pagesize
,
93 struct WLDAP32_berval
*cookie
, UCHAR critical
, PLDAPControlA
*control
)
95 FIXME( "(%p, 0x%08lx, %p, 0x%02x, %p)\n", ld
, pagesize
, cookie
,
97 return LDAP_NOT_SUPPORTED
;
100 ULONG
ldap_create_page_controlW( WLDAP32_LDAP
*ld
, ULONG pagesize
,
101 struct WLDAP32_berval
*cookie
, UCHAR critical
, PLDAPControlW
*control
)
103 FIXME( "(%p, 0x%08lx, %p, 0x%02x, %p)\n", ld
, pagesize
, cookie
,
105 return LDAP_NOT_SUPPORTED
;
108 ULONG
ldap_create_sort_controlA( WLDAP32_LDAP
*ld
, PLDAPSortKeyA
*sortkey
,
109 UCHAR critical
, PLDAPControlA
*control
)
111 ULONG ret
= LDAP_NOT_SUPPORTED
;
113 LDAPSortKeyW
**sortkeyW
= NULL
;
114 LDAPControlW
*controlW
= NULL
;
116 TRACE( "(%p, %p, 0x%02x, %p)\n", ld
, sortkey
, critical
, control
);
118 if (!ld
|| !sortkey
|| !control
)
119 return WLDAP32_LDAP_PARAM_ERROR
;
121 sortkeyW
= sortkeyarrayAtoW( sortkey
);
122 if (!sortkeyW
) return WLDAP32_LDAP_NO_MEMORY
;
124 ret
= ldap_create_sort_controlW( ld
, sortkeyW
, critical
, &controlW
);
126 *control
= controlWtoA( controlW
);
127 if (!*control
) ret
= WLDAP32_LDAP_NO_MEMORY
;
129 ldap_control_freeW( controlW
);
130 sortkeyarrayfreeW( sortkeyW
);
136 ULONG
ldap_create_sort_controlW( WLDAP32_LDAP
*ld
, PLDAPSortKeyW
*sortkey
,
137 UCHAR critical
, PLDAPControlW
*control
)
139 ULONG ret
= LDAP_NOT_SUPPORTED
;
141 LDAPSortKey
**sortkeyU
= NULL
;
142 LDAPControl
*controlU
= NULL
;
144 TRACE( "(%p, %p, 0x%02x, %p)\n", ld
, sortkey
, critical
, control
);
146 if (!ld
|| !sortkey
|| !control
)
147 return WLDAP32_LDAP_PARAM_ERROR
;
149 sortkeyU
= sortkeyarrayWtoU( sortkey
);
150 if (!sortkeyU
) return WLDAP32_LDAP_NO_MEMORY
;
152 ret
= ldap_create_sort_control( ld
, sortkeyU
, critical
, &controlU
);
154 *control
= controlUtoW( controlU
);
155 if (!*control
) ret
= WLDAP32_LDAP_NO_MEMORY
;
157 ldap_control_free( controlU
);
158 sortkeyarrayfreeU( sortkeyU
);
164 INT
ldap_create_vlv_controlA( WLDAP32_LDAP
*ld
, WLDAP32_LDAPVLVInfo
*info
,
165 char critical
, LDAPControlA
**control
)
167 INT ret
= LDAP_NOT_SUPPORTED
;
169 LDAPControlW
**controlW
= NULL
;
171 TRACE( "(%p, %p, 0x%02x, %p)\n", ld
, info
, critical
, control
);
173 if (!ld
) return ~0UL;
175 ret
= ldap_create_vlv_controlW( ld
, info
, critical
, controlW
);
177 *control
= controlWtoA( *controlW
);
178 ldap_control_freeW( *controlW
);
184 INT
ldap_create_vlv_controlW( WLDAP32_LDAP
*ld
, WLDAP32_LDAPVLVInfo
*info
,
185 char critical
, LDAPControlW
**control
)
187 INT ret
= LDAP_NOT_SUPPORTED
;
189 LDAPControl
**controlU
= NULL
;
191 TRACE( "(%p, %p, 0x%02x, %p)\n", ld
, info
, critical
, control
);
193 if (!ld
) return ~0UL;
195 ret
= ldap_create_vlv_control( ld
, (LDAPVLVInfo
*)info
, controlU
);
197 *control
= controlUtoW( *controlU
);
198 ldap_control_free( *controlU
);
204 ULONG
ldap_encode_sort_controlA( WLDAP32_LDAP
*ld
, PLDAPSortKeyA
*sortkeys
,
205 PLDAPControlA control
, BOOLEAN critical
)
207 return ldap_create_sort_controlA( ld
, sortkeys
, critical
, &control
);
210 ULONG
ldap_encode_sort_controlW( WLDAP32_LDAP
*ld
, PLDAPSortKeyW
*sortkeys
,
211 PLDAPControlW control
, BOOLEAN critical
)
213 return ldap_create_sort_controlW( ld
, sortkeys
, critical
, &control
);
216 ULONG
ldap_free_controlsA( LDAPControlA
**controls
)
218 return ldap_controls_freeA( controls
);
221 ULONG
ldap_free_controlsW( LDAPControlW
**controls
)
223 return ldap_controls_freeW( controls
);