Re: incompatible integer to pointer conversion

From: Chris <bsd-lists_at_bsdforge.com>
Date: Thu, 23 May 2024 22:28:13 UTC
On 2024-05-23 15:09, Cy Schubert wrote:
> In message <Zk-6Lo5_G6oz04QF@spindle.one-eyed-alien.net>, Brooks Davis
> writes:
>> On Thu, May 23, 2024 at 02:40:59PM -0700, Chris wrote:
>> > Sorry, this is really a basic "programming in C 101" question.
>> > But for the life of me, I'm not getting it. The source in
>> > question:
>> >
>> > LDAP *setup_ldap()
>> > {
>> > 	LDAP *ret;
>> > 	int n;
>> >
>> > 	if (debug) fprintf(stderr, "radldap: Setting up LDAP for %s, port %d\n"
>> ,
>> > 			   host, port);
>> > 	if (!(ret = ldap_init(host, port))) {
>> > 		fprintf(stderr, "radldap: Could not initialize LDAP!\n");
>> > 		_exit(2);
>> > 	}
>> >
>> > Now *you* can probably already see the problem. But this is what's returned
>> :
>> >
>> > radldap.c:302:12: error: incompatible integer to pointer conversion assigni
>> ng
>> > to 'LDAP *' (aka 'struct ldap *') from 'int' [-Wint-conversion]
>> >   302 |         if (!(ret = ldap_init(host, port))) {
>> >       |                   ^ ~~~~~~~~~~~~~~~~~~~~~
>> >
>> > Thanks in advance for any hints, or pointers.
>> >
>> 
>> Have you included ldap.h?  Are there any warnings about implicit
>> declarations?
> 
> ldap.h includes this as well:
> 
> #if LDAP_DEPRECATED
> LDAP_F( LDAP * )
> ldap_init LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */
>         LDAP_CONST char *host,
>         int port ));
> 
> LDAP_F( LDAP * )
> ldap_open LDAP_P((      /* deprecated, use ldap_create or ldap_initialize */
>         LDAP_CONST char *host,
>         int port ));
> #endif
> 
> Apps such as dovecot and apr-1 have,
> 
> 	#define LDAP_DEPRECATED 1
Heh. Based on the volumes of warns I'm seeing, I can understand why. My
"quick fix" just turned into a bit of a project. :(

Thanks for the pointer, Cy. Greatly appreciated!
> 
>> 
>> -- Brooks
>> 
--Chris