diff --git a/dlls/wldap32/ber.c b/dlls/wldap32/ber.c index 7d37471c5c4..482de464234 100644 --- a/dlls/wldap32/ber.c +++ b/dlls/wldap32/ber.c @@ -334,26 +334,26 @@ int WINAPIV ber_printf( BerElement *ber, char *fmt, ... ) case 'i': { int i = va_arg( list, int ); - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, i ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, i, 0 ); break; } case 'o': case 's': { char *str = va_arg( list, char * ); - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, str ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, (ULONG_PTR)str, 0 ); break; } case 't': { unsigned int tag = va_arg( list, unsigned int ); - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, tag ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, tag, 0 ); break; } case 'v': { char **array = va_arg( list, char ** ); - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, array ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, (ULONG_PTR)array, 0 ); break; } case 'V': @@ -365,7 +365,7 @@ int WINAPIV ber_printf( BerElement *ber, char *fmt, ... ) ret = -1; break; } - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, arrayU ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, (ULONG_PTR)arrayU, 0 ); bvarrayfreeU( arrayU ); break; } @@ -374,7 +374,7 @@ int WINAPIV ber_printf( BerElement *ber, char *fmt, ... ) char *str = va_arg( list, char * ); int len = va_arg( list, int ); new_fmt[0] = 'B'; /* 'X' is deprecated */ - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, str, len ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, (ULONG_PTR)str, len ); break; } case 'n': @@ -382,7 +382,7 @@ int WINAPIV ber_printf( BerElement *ber, char *fmt, ... ) case '}': case '[': case ']': - ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt ); + ret = ldap_funcs->fn_ber_printf( BER(ber), new_fmt, 0, 0 ); break; default: @@ -431,7 +431,7 @@ ULONG WINAPIV ber_scanf( BerElement *ber, char *fmt, ... ) case 'a': { char *str, **ptr = va_arg( list, char ** ); - if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &str )) == -1) break; + if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &str, NULL )) == -1) break; *ptr = strdupU( str ); ldap_funcs->fn_ldap_memfree( str ); break; @@ -441,19 +441,19 @@ ULONG WINAPIV ber_scanf( BerElement *ber, char *fmt, ... ) case 'i': { int *i = va_arg( list, int * ); - ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, i ); + ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, i, NULL ); break; } case 't': { unsigned int *tag = va_arg( list, unsigned int * ); - ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, tag ); + ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, tag, NULL ); break; } case 'v': { char *str, **arrayU, **ptr, ***array = va_arg( list, char *** ); - if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &arrayU )) == -1) break; + if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &arrayU, NULL )) == -1) break; *array = strarrayUtoU( arrayU ); ptr = arrayU; while ((str = *ptr)) @@ -478,7 +478,7 @@ ULONG WINAPIV ber_scanf( BerElement *ber, char *fmt, ... ) { struct berval **berval = va_arg( list, struct berval ** ); struct bervalU *bervalU; - if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &bervalU )) == -1) break; + if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &bervalU, NULL )) == -1) break; *berval = bervalUtoW( bervalU ); ldap_funcs->fn_ber_bvfree( bervalU ); break; @@ -487,7 +487,7 @@ ULONG WINAPIV ber_scanf( BerElement *ber, char *fmt, ... ) { struct berval ***array = va_arg( list, struct berval *** ); struct bervalU **arrayU; - if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &arrayU )) == -1) break; + if ((ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, &arrayU, NULL )) == -1) break; *array = bvarrayUtoW( arrayU ); ldap_funcs->fn_ber_bvecfree( arrayU ); break; @@ -498,7 +498,7 @@ ULONG WINAPIV ber_scanf( BerElement *ber, char *fmt, ... ) case '}': case '[': case ']': - ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt ); + ret = ldap_funcs->fn_ber_scanf( BER(ber), new_fmt, NULL, NULL ); break; default: diff --git a/dlls/wldap32/libldap.c b/dlls/wldap32/libldap.c index d568c2daaae..02ba0e01675 100644 --- a/dlls/wldap32/libldap.c +++ b/dlls/wldap32/libldap.c @@ -163,140 +163,18 @@ static unsigned int CDECL wrap_ber_skip_tag( void *ber, unsigned int *ret_len ) return ret; } -static int WINAPIV wrap_ber_printf( void *ber, char *fmt, ... ) +static int CDECL wrap_ber_printf( void *ber, char *fmt, ULONG_PTR arg1, ULONG_PTR arg2 ) { - int ret; - __ms_va_list args; - assert( strlen(fmt) == 1 ); - __ms_va_start( args, fmt ); - switch (fmt[0]) - { - case 'b': - case 'e': - case 'i': - { - int i = va_arg( args, int ); - ret = ber_printf( ber, fmt, i ); - break; - } - case 'o': - case 's': - { - char *str = va_arg( args, char * ); - ret = ber_printf( ber, fmt, str ); - break; - } - case 't': - { - unsigned int tag = va_arg( args, unsigned int ); - ret = ber_printf( ber, fmt, tag ); - break; - } - case 'v': - { - char **array = va_arg( args, char ** ); - ret = ber_printf( ber, fmt, array ); - break; - } - case 'V': - { - struct berval **array = va_arg( args, struct berval ** ); - ret = ber_printf( ber, fmt, array ); - break; - } - case 'B': - { - char *str = va_arg( args, char * ); - int len = va_arg( args, int ); - ret = ber_printf( ber, fmt, str, len ); - break; - } - case 'n': - case '{': - case '}': - case '[': - case ']': - ret = ber_printf( ber, fmt ); - break; - - default: - assert( 0 ); - } - __ms_va_end( args ); - return ret; + return ber_printf( ber, fmt, arg1, arg2 ); } -static int WINAPIV wrap_ber_scanf( void *ber, char *fmt, ... ) +static int CDECL wrap_ber_scanf( void *ber, char *fmt, void *arg1, void *arg2 ) { - int ret; - __ms_va_list args; - assert( strlen(fmt) == 1 ); - __ms_va_start( args, fmt ); - switch (fmt[0]) - { - case 'a': - { - char **str = va_arg( args, char ** ); - ret = ber_scanf( ber, fmt, str ); - break; - } - case 'b': - case 'e': - case 'i': - { - int *i = va_arg( args, int * ); - ret = ber_scanf( ber, fmt, i ); - break; - } - case 't': - { - unsigned int *tag = va_arg( args, unsigned int * ); - ret = ber_scanf( ber, fmt, tag ); - break; - } - case 'v': - { - char ***array = va_arg( args, char *** ); - ret = ber_scanf( ber, fmt, array ); - break; - } - case 'B': - { - char **str = va_arg( args, char ** ); - int *len = va_arg( args, int * ); - ret = ber_scanf( ber, fmt, str, len ); - break; - } - case 'O': - { - struct berval **berval = va_arg( args, struct berval ** ); - ret = ber_scanf( ber, fmt, berval ); - break; - } - case 'V': - { - struct berval ***array = va_arg( args, struct berval *** ); - ret = ber_scanf( ber, fmt, array ); - break; - } - case 'n': - case 'x': - case '{': - case '}': - case '[': - case ']': - ret = ber_scanf( ber, fmt ); - break; - - default: - assert( 0 ); - } - __ms_va_end( args ); - return ret; + return ber_scanf( ber, fmt, arg1, arg2 ); } static int CDECL wrap_ldap_abandon_ext( void *ld, int msgid, LDAPControlU **serverctrls, LDAPControlU **clientctrls ) diff --git a/dlls/wldap32/libldap.h b/dlls/wldap32/libldap.h index e9736fc757f..aec1f13a754 100644 --- a/dlls/wldap32/libldap.h +++ b/dlls/wldap32/libldap.h @@ -105,8 +105,8 @@ struct ldap_funcs unsigned int (CDECL *fn_ber_next_element)(void *, unsigned int *, char *); unsigned int (CDECL *fn_ber_peek_tag)(void *, unsigned int *); unsigned int (CDECL *fn_ber_skip_tag)(void *, unsigned int *); - int (WINAPIV *fn_ber_printf)(void *, char *, ...); - int (WINAPIV *fn_ber_scanf)(void *, char *, ...); + int (CDECL *fn_ber_printf)(void *, char *, ULONG_PTR arg1, ULONG_PTR arg2 ); + int (CDECL *fn_ber_scanf)(void *, char *, void *arg1, void *arg2 ); int (CDECL *fn_ldap_abandon_ext)(void *, int, LDAPControlU **, LDAPControlU **); int (CDECL *fn_ldap_add_ext)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **, ULONG *);