wldap32: Added a wrapper for ber_scanf.

This commit is contained in:
Alexandre Julliard 2006-04-18 20:41:03 +02:00
parent 7a1fb2ecb4
commit ec9af18e96
2 changed files with 82 additions and 7 deletions

View File

@ -248,11 +248,86 @@ INT WLDAP32_ber_printf( BerElement *berelement, PCHAR fmt, ... )
}
#ifndef HAVE_LDAP
INT ber_scanf( BerElement *berelement, PCHAR fmt, ... )
/***********************************************************************
* ber_scanf (WLDAP32.@)
*/
INT WLDAP32_ber_scanf( BerElement *berelement, PCHAR fmt, ... )
{
return LBER_ERROR;
}
#ifdef HAVE_LDAP
va_list list;
int ret = 0;
char new_fmt[2];
#endif /* HAVE_LDAP */
new_fmt[1] = 0;
va_start( list, fmt );
while (*fmt)
{
new_fmt[0] = *fmt++;
switch(new_fmt[0])
{
case 'a':
{
char **ptr = va_arg( list, char ** );
ret = ber_scanf( berelement, new_fmt, ptr );
break;
}
case 'b':
case 'e':
case 'i':
{
int *i = va_arg( list, int * );
ret = ber_scanf( berelement, new_fmt, i );
break;
}
case 't':
{
unsigned int *tag = va_arg( list, unsigned int * );
ret = ber_scanf( berelement, new_fmt, tag );
break;
}
case 'v':
{
char ***array = va_arg( list, char *** );
ret = ber_scanf( berelement, new_fmt, array );
break;
}
case 'B':
{
char **str = va_arg( list, char ** );
int *len = va_arg( list, int * );
ret = ber_scanf( berelement, new_fmt, str, len );
break;
}
case 'O':
{
struct berval **ptr = va_arg( list, struct berval ** );
ret = ber_scanf( berelement, new_fmt, ptr );
break;
}
case 'V':
{
struct berval ***array = va_arg( list, struct berval *** );
ret = ber_scanf( berelement, new_fmt, array );
break;
}
case 'n':
case 'x':
case '{':
case '}':
case '[':
case ']':
ret = ber_scanf( berelement, new_fmt );
break;
default:
FIXME( "Unknown format '%c'\n", new_fmt[0] );
ret = -1;
break;
}
if (ret == -1) break;
}
va_end( list );
return ret;
#else
return LBER_ERROR;
#endif
}

View File

@ -226,7 +226,7 @@
308 cdecl ber_next_element(ptr ptr ptr) WLDAP32_ber_next_element
309 cdecl ber_flatten(ptr ptr) WLDAP32_ber_flatten
310 varargs ber_printf(ptr str) WLDAP32_ber_printf
311 varargs ber_scanf(ptr str)
311 varargs ber_scanf(ptr str) WLDAP32_ber_scanf
312 cdecl ldap_conn_from_msg(ptr ptr)
313 cdecl ldap_sasl_bindW(ptr wstr wstr ptr ptr ptr ptr)
314 cdecl ldap_sasl_bind_sW(ptr wstr wstr ptr ptr ptr ptr)