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_searchA( WLDAP32_LDAP
*ld
, PCHAR base
, ULONG scope
, PCHAR filter
,
45 PCHAR attrs
[], ULONG attrsonly
)
47 ULONG ret
= LDAP_NOT_SUPPORTED
;
49 WCHAR
*baseW
, *filterW
, **attrsW
;
51 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx)\n", ld
, debugstr_a(base
),
52 scope
, debugstr_a(filter
), attrs
, attrsonly
);
54 baseW
= strAtoW( base
);
55 if (!baseW
) return LDAP_NO_MEMORY
;
57 filterW
= strAtoW( filter
);
58 if (!filterW
) return LDAP_NO_MEMORY
;
60 attrsW
= strarrayAtoW( attrs
);
61 if (!attrsW
) return LDAP_NO_MEMORY
;
63 ret
= ldap_searchW( ld
, baseW
, scope
, filterW
, attrsW
, attrsonly
);
67 strarrayfreeW( attrsW
);
73 ULONG
ldap_searchW( WLDAP32_LDAP
*ld
, PWCHAR base
, ULONG scope
, PWCHAR filter
,
74 PWCHAR attrs
[], ULONG attrsonly
)
76 ULONG ret
= LDAP_NOT_SUPPORTED
;
78 char *baseU
, *filterU
, **attrsU
;
80 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx)\n", ld
, debugstr_w(base
),
81 scope
, debugstr_w(filter
), attrs
, attrsonly
);
83 baseU
= strWtoU( base
);
84 if (!baseU
) return LDAP_NO_MEMORY
;
86 filterU
= strWtoU( filter
);
87 if (!filterU
) return LDAP_NO_MEMORY
;
89 attrsU
= strarrayWtoU( attrs
);
90 if (!attrsU
) return LDAP_NO_MEMORY
;
92 ret
= ldap_search( ld
, baseU
, scope
, filterU
, attrsU
, attrsonly
);
96 strarrayfreeU( attrsU
);
102 ULONG
ldap_search_sA( WLDAP32_LDAP
*ld
, PCHAR base
, ULONG scope
, PCHAR filter
,
103 PCHAR attrs
[], ULONG attrsonly
, WLDAP32_LDAPMessage
**res
)
105 ULONG ret
= LDAP_NOT_SUPPORTED
;
107 WCHAR
*baseW
, *filterW
, **attrsW
;
109 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx, %p)\n", ld
, debugstr_a(base
),
110 scope
, debugstr_a(filter
), attrs
, attrsonly
, res
);
112 baseW
= strAtoW( base
);
113 if (!baseW
) return LDAP_NO_MEMORY
;
115 filterW
= strAtoW( filter
);
116 if (!filterW
) return LDAP_NO_MEMORY
;
118 attrsW
= strarrayAtoW( attrs
);
119 if (!attrsW
) return LDAP_NO_MEMORY
;
121 ret
= ldap_search_sW( ld
, baseW
, scope
, filterW
, attrsW
, attrsonly
, res
);
125 strarrayfreeW( attrsW
);
131 ULONG
ldap_search_sW( WLDAP32_LDAP
*ld
, PWCHAR base
, ULONG scope
, PWCHAR filter
,
132 PWCHAR attrs
[], ULONG attrsonly
, WLDAP32_LDAPMessage
**res
)
134 ULONG ret
= LDAP_NOT_SUPPORTED
;
136 char *baseU
, *filterU
, **attrsU
;
138 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx, %p)\n", ld
, debugstr_w(base
),
139 scope
, debugstr_w(filter
), attrs
, attrsonly
, res
);
141 baseU
= strWtoU( base
);
142 if (!baseU
) return LDAP_NO_MEMORY
;
144 filterU
= strWtoU( filter
);
145 if (!filterU
) return LDAP_NO_MEMORY
;
147 attrsU
= strarrayWtoU( attrs
);
148 if (!attrsU
) return LDAP_NO_MEMORY
;
150 ret
= ldap_search_s( ld
, baseU
, scope
, filterU
, attrsU
, attrsonly
, res
);
154 strarrayfreeU( attrsU
);
160 ULONG
ldap_search_stA( WLDAP32_LDAP
*ld
, const PCHAR base
, ULONG scope
,
161 const PCHAR filter
, PCHAR attrs
[], ULONG attrsonly
,
162 struct l_timeval
*timeout
, WLDAP32_LDAPMessage
**res
)
164 ULONG ret
= LDAP_NOT_SUPPORTED
;
166 WCHAR
*baseW
, *filterW
, **attrsW
;
168 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx, %p, %p)\n", ld
,
169 debugstr_a(base
), scope
, debugstr_a(filter
), attrs
,
170 attrsonly
, timeout
, res
);
172 baseW
= strAtoW( base
);
173 if (!baseW
) return LDAP_NO_MEMORY
;
175 filterW
= strAtoW( filter
);
176 if (!filterW
) return LDAP_NO_MEMORY
;
178 attrsW
= strarrayAtoW( attrs
);
179 if (!attrsW
) return LDAP_NO_MEMORY
;
181 ret
= ldap_search_stW( ld
, baseW
, scope
, filterW
, attrsW
, attrsonly
,
186 strarrayfreeW( attrsW
);
192 ULONG
ldap_search_stW( WLDAP32_LDAP
*ld
, const PWCHAR base
, ULONG scope
,
193 const PWCHAR filter
, PWCHAR attrs
[], ULONG attrsonly
,
194 struct l_timeval
*timeout
, WLDAP32_LDAPMessage
**res
)
196 ULONG ret
= LDAP_NOT_SUPPORTED
;
198 char *baseU
, *filterU
, **attrsU
;
200 TRACE( "(%p, %s, 0x%08lx, %s, %p, 0x%08lx, %p, %p)\n", ld
,
201 debugstr_w(base
), scope
, debugstr_w(filter
), attrs
,
202 attrsonly
, timeout
, res
);
204 baseU
= strWtoU( base
);
205 if (!baseU
) return LDAP_NO_MEMORY
;
207 filterU
= strWtoU( filter
);
208 if (!filterU
) return LDAP_NO_MEMORY
;
210 attrsU
= strarrayWtoU( attrs
);
211 if (!attrsU
) return LDAP_NO_MEMORY
;
213 ret
= ldap_search_st( ld
, baseU
, scope
, filterU
, attrsU
, attrsonly
,
214 (struct timeval
*)timeout
, res
);
218 strarrayfreeU( attrsU
);