~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/wldap32/dn.c

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * WLDAP32 - LDAP support for Wine
  3  *
  4  * Copyright 2005 Hans Leidekker
  5  *
  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.
 10  *
 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.
 15  *
 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
 19  */
 20 
 21 #include "config.h"
 22 
 23 #include "wine/port.h"
 24 #include "wine/debug.h"
 25 
 26 #include <stdarg.h>
 27 
 28 #include "windef.h"
 29 #include "winbase.h"
 30 #include "winnls.h"
 31 
 32 #ifdef HAVE_LDAP_H
 33 #include <ldap.h>
 34 #endif
 35 
 36 #include "winldap_private.h"
 37 #include "wldap32.h"
 38 
 39 WINE_DEFAULT_DEBUG_CHANNEL(wldap32);
 40 
 41 /***********************************************************************
 42  *      ldap_dn2ufnA     (WLDAP32.@)
 43  *
 44  * See ldap_dn2ufnW.
 45  */
 46 PCHAR CDECL ldap_dn2ufnA( PCHAR dn )
 47 {
 48     PCHAR ret = NULL;
 49 #ifdef HAVE_LDAP
 50     WCHAR *dnW, *retW;
 51 
 52     TRACE( "(%s)\n", debugstr_a(dn) );
 53 
 54     dnW = strAtoW( dn );
 55     if (!dnW) return NULL;
 56 
 57     retW = ldap_dn2ufnW( dnW );
 58     ret = strWtoA( retW );
 59 
 60     strfreeW( dnW );
 61     ldap_memfreeW( retW );
 62 
 63 #endif
 64     return ret;
 65 }
 66 
 67 /***********************************************************************
 68  *      ldap_dn2ufnW     (WLDAP32.@)
 69  *
 70  * Convert a DN to a user-friendly name.
 71  *
 72  * PARAMS
 73  *  dn  [I] DN to convert.
 74  *
 75  * RETURNS
 76  *  Success: Pointer to a string containing the user-friendly name. 
 77  *  Failure: NULL
 78  *
 79  * NOTES
 80  *  Free the string with ldap_memfree.
 81  */
 82 PWCHAR CDECL ldap_dn2ufnW( PWCHAR dn )
 83 {
 84     PWCHAR ret = NULL;
 85 #ifdef HAVE_LDAP
 86     char *dnU, *retU;
 87 
 88     TRACE( "(%s)\n", debugstr_w(dn) );
 89 
 90     dnU = strWtoU( dn );
 91     if (!dnU) return NULL;
 92 
 93     retU = ldap_dn2ufn( dnU );
 94     ret = strUtoW( retU );
 95 
 96     strfreeU( dnU );
 97     ldap_memfree( retU );
 98 
 99 #endif
100     return ret;
101 }
102 
103 /***********************************************************************
104  *      ldap_explode_dnA     (WLDAP32.@)
105  *
106  * See ldap_explode_dnW.
107  */
108 PCHAR * CDECL ldap_explode_dnA( PCHAR dn, ULONG notypes )
109 {
110     PCHAR *ret = NULL;
111 #ifdef HAVE_LDAP
112     WCHAR *dnW, **retW;
113 
114     TRACE( "(%s, 0x%08x)\n", debugstr_a(dn), notypes );
115 
116     dnW = strAtoW( dn );
117     if (!dnW) return NULL;
118 
119     retW = ldap_explode_dnW( dnW, notypes );
120     ret = strarrayWtoA( retW );
121 
122     strfreeW( dnW );
123     ldap_value_freeW( retW );
124 
125 #endif
126     return ret;
127 }
128 
129 /***********************************************************************
130  *      ldap_explode_dnW     (WLDAP32.@)
131  *
132  * Break up a DN into its components.
133  *
134  * PARAMS
135  *  dn       [I] DN to break up.
136  *  notypes  [I] Remove attribute type information from the components.
137  *
138  * RETURNS
139  *  Success: Pointer to a NULL-terminated array that contains the DN
140  *           components. 
141  *  Failure: NULL
142  *
143  * NOTES
144  *  Free the string array with ldap_value_free.
145  */
146 PWCHAR * CDECL ldap_explode_dnW( PWCHAR dn, ULONG notypes )
147 {
148     PWCHAR *ret = NULL;
149 #ifdef HAVE_LDAP
150     char *dnU, **retU;
151 
152     TRACE( "(%s, 0x%08x)\n", debugstr_w(dn), notypes );
153 
154     dnU = strWtoU( dn );
155     if (!dnU) return NULL;
156 
157     retU = ldap_explode_dn( dnU, notypes );
158     ret = strarrayUtoW( retU );
159 
160     strfreeU( dnU );
161     ldap_memvfree( (void **)retU );
162 
163 #endif
164     return ret;
165 }
166 
167 /***********************************************************************
168  *      ldap_get_dnA     (WLDAP32.@)
169  *
170  * See ldap_get_dnW.
171  */
172 PCHAR CDECL ldap_get_dnA( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry )
173 {
174     PCHAR ret = NULL;
175 #ifdef HAVE_LDAP
176     PWCHAR retW;
177 
178     TRACE( "(%p, %p)\n", ld, entry );
179 
180     if (!ld || !entry) return NULL;
181 
182     retW = ldap_get_dnW( ld, entry );
183 
184     ret = strWtoA( retW );
185     ldap_memfreeW( retW );
186 
187 #endif
188     return ret;
189 }
190 
191 /***********************************************************************
192  *      ldap_get_dnW     (WLDAP32.@)
193  *
194  * Retrieve the DN from a given LDAP message.
195  *
196  * PARAMS
197  *  ld     [I] Pointer to an LDAP context.
198  *  entry  [I] LDAPMessage structure to retrieve the DN from.
199  *
200  * RETURNS
201  *  Success: Pointer to a string that contains the DN.
202  *  Failure: NULL
203  *
204  * NOTES
205  *  Free the string with ldap_memfree.
206  */
207 PWCHAR CDECL ldap_get_dnW( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry )
208 {
209     PWCHAR ret = NULL;
210 #ifdef HAVE_LDAP
211     char *retU;
212 
213     TRACE( "(%p, %p)\n", ld, entry );
214 
215     if (!ld || !entry) return NULL;
216 
217     retU = ldap_get_dn( ld, entry );
218 
219     ret = strUtoW( retU );
220     ldap_memfree( retU );
221 
222 #endif
223     return ret;
224 }
225 
226 /***********************************************************************
227  *      ldap_ufn2dnA     (WLDAP32.@)
228  *
229  * See ldap_ufn2dnW.
230  */
231 ULONG CDECL ldap_ufn2dnA( PCHAR ufn, PCHAR *dn )
232 {
233     ULONG ret = WLDAP32_LDAP_SUCCESS;
234 #ifdef HAVE_LDAP
235     PWCHAR ufnW = NULL, dnW = NULL;
236 
237     TRACE( "(%s, %p)\n", debugstr_a(ufn), dn );
238 
239     if (!dn) return WLDAP32_LDAP_PARAM_ERROR;
240 
241     *dn = NULL;
242 
243     if (ufn) {
244         ufnW = strAtoW( ufn );
245         if (!ufnW) return WLDAP32_LDAP_NO_MEMORY;
246     }
247 
248     ret = ldap_ufn2dnW( ufnW, &dnW );
249 
250     if (dnW) {
251         *dn = strWtoA( dnW );
252         if (!*dn) ret = WLDAP32_LDAP_NO_MEMORY;
253     }
254 
255     strfreeW( ufnW );
256     ldap_memfreeW( dnW );
257 
258 #endif
259     return ret;
260 }
261 
262 /***********************************************************************
263  *      ldap_ufn2dnW     (WLDAP32.@)
264  *
265  * Convert a user-friendly name to a DN.
266  *
267  * PARAMS
268  *  ufn  [I] User-friendly name to convert.
269  *  dn   [O] Receives a pointer to a string containing the DN. 
270  *
271  * RETURNS
272  *  Success: LDAP_SUCCESS
273  *  Failure: An LDAP error code.
274  *
275  * NOTES
276  *  Free the string with ldap_memfree.
277  */
278 ULONG CDECL ldap_ufn2dnW( PWCHAR ufn, PWCHAR *dn )
279 {
280     ULONG ret = WLDAP32_LDAP_SUCCESS;
281 #ifdef HAVE_LDAP
282     char *ufnU = NULL;
283 
284     TRACE( "(%s, %p)\n", debugstr_w(ufn), dn );
285 
286     if (!dn) return WLDAP32_LDAP_PARAM_ERROR;
287 
288     *dn = NULL;
289 
290     if (ufn) {
291         ufnU = strWtoU( ufn );
292         if (!ufnU) return WLDAP32_LDAP_NO_MEMORY;
293 
294         /* FIXME: do more than just a copy */
295         *dn = strUtoW( ufnU );
296         if (!*dn) ret = WLDAP32_LDAP_NO_MEMORY;
297     }
298 
299     strfreeU( ufnU );
300 
301 #endif
302     return ret;
303 }
304 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.