ChangeSet ID: 19731 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@wine.codeweavers.com 2005/08/22 13:56:54 Modified files: dlls/wldap32 : wldap32.spec winldap_private.h misc.c init.c error.c Log message: Hans Leidekker Implement LdapGetLastError, cldap_open*, ldap_abandon, ldap_check_filter*, ldap_cleanup, ldap_conn_from_msg and ldap_connect. Patch: http://cvs.winehq.org/patch.py?id=19731 Old revision New revision Changes Path 1.20 1.21 +10 -10 wine/dlls/wldap32/wldap32.spec 1.21 1.22 +8 -0 wine/dlls/wldap32/winldap_private.h 1.3 1.4 +57 -0 wine/dlls/wldap32/misc.c 1.5 1.6 +24 -0 wine/dlls/wldap32/init.c 1.2 1.3 +6 -0 wine/dlls/wldap32/error.c Index: wine/dlls/wldap32/wldap32.spec diff -u -p wine/dlls/wldap32/wldap32.spec:1.20 wine/dlls/wldap32/wldap32.spec:1.21 --- wine/dlls/wldap32/wldap32.spec:1.20 Sun May 19 19:43:59 2013 +++ wine/dlls/wldap32/wldap32.spec Sun May 19 19:43:59 2013 @@ -1,4 +1,4 @@ -@ stub LdapGetLastError +@ cdecl LdapGetLastError() @ cdecl LdapMapErrorToWin32(long) @ cdecl LdapUTF8ToUnicode(str long ptr long) @ cdecl LdapUnicodeToUTF8(wstr long ptr long) @@ -15,10 +15,10 @@ @ varargs ber_printf(ptr str) @ varargs ber_scanf(ptr str) @ cdecl ber_skip_tag(ptr ptr) -@ stub cldap_open -@ stub cldap_openA -@ stub cldap_openW -@ stub ldap_abandon +@ cdecl cldap_open(str long) cldap_openA +@ cdecl cldap_openA(str long) +@ cdecl cldap_openW(wstr long) +@ cdecl ldap_abandon(ptr long) WLDAP32_ldap_abandon @ cdecl ldap_add(ptr str ptr) ldap_addA @ cdecl ldap_addA(ptr str ptr) @ cdecl ldap_addW(ptr wstr ptr) @@ -37,9 +37,9 @@ @ cdecl ldap_bind_s(ptr str str long) ldap_bind_sA @ cdecl ldap_bind_sA(ptr str str long) @ cdecl ldap_bind_sW(ptr wstr wstr long) -@ stub ldap_check_filterA -@ stub ldap_check_filterW -@ stub ldap_cleanup +@ cdecl ldap_check_filterA(ptr str) +@ cdecl ldap_check_filterW(ptr wstr) +@ cdecl ldap_cleanup(long) @ stub ldap_close_extended_op @ cdecl ldap_compare(ptr str str str) ldap_compareA @ cdecl ldap_compareA(ptr str str str) @@ -53,8 +53,8 @@ @ cdecl ldap_compare_s(ptr str str str) ldap_compare_sA @ cdecl ldap_compare_sA(ptr str str str) @ cdecl ldap_compare_sW(ptr wstr wstr wstr) -@ stub ldap_conn_from_msg -@ stub ldap_connect +@ cdecl ldap_conn_from_msg(ptr ptr) +@ cdecl ldap_connect(ptr ptr) @ stub ldap_control_free @ stub ldap_control_freeA @ stub ldap_control_freeW Index: wine/dlls/wldap32/winldap_private.h diff -u -p wine/dlls/wldap32/winldap_private.h:1.21 wine/dlls/wldap32/winldap_private.h:1.22 --- wine/dlls/wldap32/winldap_private.h:1.21 Sun May 19 19:43:59 2013 +++ wine/dlls/wldap32/winldap_private.h Sun May 19 19:43:59 2013 @@ -232,6 +232,9 @@ typedef struct ldap_apifeature_infoW int ldapaif_version; } LDAPAPIFeatureInfoW; +WLDAP32_LDAP *cldap_openA(PCHAR,ULONG); +WLDAP32_LDAP *cldap_openW(PWCHAR,ULONG); +ULONG WLDAP32_ldap_abandon(WLDAP32_LDAP*,ULONG); ULONG ldap_addA(WLDAP32_LDAP*,PCHAR,LDAPModA*[]); ULONG ldap_addW(WLDAP32_LDAP*,PWCHAR,LDAPModW*[]); ULONG ldap_add_extA(WLDAP32_LDAP*,PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*); @@ -244,6 +247,9 @@ ULONG ldap_bindA(WLDAP32_LDAP*,PCHAR,PCH ULONG ldap_bindW(WLDAP32_LDAP*,PWCHAR,PWCHAR,ULONG); ULONG ldap_bind_sA(WLDAP32_LDAP*,PCHAR,PCHAR,ULONG); ULONG ldap_bind_sW(WLDAP32_LDAP*,PWCHAR,PWCHAR,ULONG); +ULONG ldap_check_filterA(WLDAP32_LDAP*,PCHAR); +ULONG ldap_check_filterW(WLDAP32_LDAP*,PWCHAR); +ULONG ldap_cleanup(HANDLE); ULONG ldap_compareA(WLDAP32_LDAP*,PCHAR,PCHAR,PCHAR); ULONG ldap_compareW(WLDAP32_LDAP*,PWCHAR,PWCHAR,PWCHAR); ULONG ldap_compare_extA(WLDAP32_LDAP*,PCHAR,PCHAR,PCHAR,struct WLDAP32_berval*,PLDAPControlA*,PLDAPControlA*,ULONG*); @@ -252,6 +258,8 @@ ULONG ldap_compare_ext_sA(WLDAP32_LDAP*, ULONG ldap_compare_ext_sW(WLDAP32_LDAP*,PWCHAR,PWCHAR,PWCHAR,struct WLDAP32_berval*,PLDAPControlW*,PLDAPControlW*); ULONG ldap_compare_sA(WLDAP32_LDAP*,PCHAR,PCHAR,PCHAR); ULONG ldap_compare_sW(WLDAP32_LDAP*,PWCHAR,PWCHAR,PWCHAR); +ULONG ldap_connect(WLDAP32_LDAP*,LDAP_TIMEVAL*); +WLDAP32_LDAP *ldap_conn_from_msg(WLDAP32_LDAP*,WLDAP32_LDAPMessage*); ULONG ldap_deleteA(WLDAP32_LDAP*,PCHAR); ULONG ldap_deleteW(WLDAP32_LDAP*,PWCHAR); ULONG ldap_delete_extA(WLDAP32_LDAP*,PCHAR,PLDAPControlA*,PLDAPControlA*,ULONG*); Index: wine/dlls/wldap32/misc.c diff -u -p wine/dlls/wldap32/misc.c:1.3 wine/dlls/wldap32/misc.c:1.4 --- wine/dlls/wldap32/misc.c:1.3 Sun May 19 19:43:59 2013 +++ wine/dlls/wldap32/misc.c Sun May 19 19:43:59 2013 @@ -33,6 +33,7 @@ #include #else #define LDAP_SUCCESS 0x00 +#define LDAP_NOT_SUPPORTED 0x5c #endif #include "winldap_private.h" @@ -40,6 +41,62 @@ WINE_DEFAULT_DEBUG_CHANNEL(wldap32); +ULONG WLDAP32_ldap_abandon( WLDAP32_LDAP *ld, ULONG msgid ) +{ + ULONG ret = LDAP_NOT_SUPPORTED; +#ifdef HAVE_LDAP + + TRACE( "(%p, 0x%08lx)\n", ld, msgid ); + + if (!ld) return ~0UL; + ret = ldap_abandon( ld, msgid ); + +#endif + return ret; +} + +ULONG ldap_check_filterA( WLDAP32_LDAP *ld, PCHAR filter ) +{ + ULONG ret; + WCHAR *filterW = NULL; + + TRACE( "(%p, %s)\n", ld, debugstr_a(filter) ); + + if (!ld) return WLDAP32_LDAP_PARAM_ERROR; + + if (filter) { + filterW = strAtoW( filter ); + if (!filterW) return WLDAP32_LDAP_NO_MEMORY; + } + + ret = ldap_check_filterW( ld, filterW ); + + strfreeW( filterW ); + return ret; +} + +ULONG ldap_check_filterW( WLDAP32_LDAP *ld, PWCHAR filter ) +{ + TRACE( "(%p, %s)\n", ld, debugstr_w(filter) ); + + if (!ld) return WLDAP32_LDAP_PARAM_ERROR; + return LDAP_SUCCESS; +} + +ULONG ldap_cleanup( HANDLE instance ) +{ + TRACE( "(%p)\n", instance ); + return LDAP_SUCCESS; +} + +WLDAP32_LDAP *ldap_conn_from_msg( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *res ) +{ + TRACE( "(%p, %p)\n", ld, res ); + + if (!ld || !res) return NULL; + return ld; /* FIXME: not always correct */ +} + void ldap_memfreeA( PCHAR block ) { TRACE( "(%p)\n", block ); Index: wine/dlls/wldap32/init.c diff -u -p wine/dlls/wldap32/init.c:1.5 wine/dlls/wldap32/init.c:1.6 --- wine/dlls/wldap32/init.c:1.5 Sun May 19 19:43:59 2013 +++ wine/dlls/wldap32/init.c Sun May 19 19:43:59 2013 @@ -44,6 +44,30 @@ static const WCHAR defaulthost[] = { 'l' WINE_DEFAULT_DEBUG_CHANNEL(wldap32); +WLDAP32_LDAP *cldap_openA( PCHAR hostname, ULONG portnumber ) +{ + TRACE( "(%s, %ld)\n", debugstr_a(hostname), portnumber ); + + /* FIXME: should use UDP instead of TCP */ + return ldap_openA( hostname, portnumber ); +} + +WLDAP32_LDAP *cldap_openW( PWCHAR hostname, ULONG portnumber ) +{ + TRACE( "(%s, %ld)\n", debugstr_w(hostname), portnumber ); + + /* FIXME: should use UDP instead of TCP */ + return ldap_openW( hostname, portnumber ); +} + +ULONG ldap_connect( WLDAP32_LDAP *ld, LDAP_TIMEVAL *timeout ) +{ + TRACE( "(%p, %p)\n", ld, timeout ); + + if (!ld || !timeout) return WLDAP32_LDAP_PARAM_ERROR; + return LDAP_SUCCESS; +} + WLDAP32_LDAP *ldap_initA( PCHAR hostname, ULONG portnumber ) { #ifdef HAVE_LDAP Index: wine/dlls/wldap32/error.c diff -u -p wine/dlls/wldap32/error.c:1.2 wine/dlls/wldap32/error.c:1.3 --- wine/dlls/wldap32/error.c:1.2 Sun May 19 19:43:59 2013 +++ wine/dlls/wldap32/error.c Sun May 19 19:43:59 2013 @@ -94,6 +94,12 @@ ULONG WLDAP32_ldap_result2error( WLDAP32 return ret; } +ULONG LdapGetLastError( void ) +{ + TRACE( "\n" ); + return GetLastError(); +} + static const ULONG WLDAP32_errormap[] = { /* LDAP_SUCCESS */ ERROR_SUCCESS, /* LDAP_OPERATIONS_ERROR */ ERROR_OPEN_FAILED,