From: Hans Leidekker hans@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53930 --- libs/ldap/include/getopt-compat.h | 40 +++++++++++++++++++++++++++++++ libs/ldap/include/portable.h | 4 ++-- 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 libs/ldap/include/getopt-compat.h
diff --git a/libs/ldap/include/getopt-compat.h b/libs/ldap/include/getopt-compat.h new file mode 100644 index 00000000000..3bbc1e40d8b --- /dev/null +++ b/libs/ldap/include/getopt-compat.h @@ -0,0 +1,40 @@ +/* getopt-compat.h -- getopt(3) compatibility header */ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software http://www.openldap.org/. + * + * Copyright 1998-2022 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * http://www.OpenLDAP.org/license.html. + */ + +/* + * getopt(3) declarations + */ +#ifndef _GETOPT_COMPAT_H +#define _GETOPT_COMPAT_H + +#include <ldap_cdefs.h> + +LDAP_BEGIN_DECL + +/* change symbols to avoid clashing */ +#define optarg lutil_optarg +#define optind lutil_optind +#define opterr lutil_opterr +#define optopt lutil_optopt +#define getopt lutil_getopt + +LDAP_LUTIL_V (char *) optarg; +LDAP_LUTIL_V (int) optind, opterr, optopt; +LDAP_LUTIL_F (int) getopt LDAP_P(( int, char * const [], const char *)); + +LDAP_END_DECL + +#endif /* _GETOPT_COMPAT_H */ diff --git a/libs/ldap/include/portable.h b/libs/ldap/include/portable.h index 196b4a533ae..d3867575fca 100644 --- a/libs/ldap/include/portable.h +++ b/libs/ldap/include/portable.h @@ -211,10 +211,10 @@ #define HAVE_GETNAMEINFO 1
/* Define to 1 if you have the `getopt' function. */ -#define HAVE_GETOPT 1 +/* #undef HAVE_GETOPT */
/* Define to 1 if you have the <getopt.h> header file. */ -#define HAVE_GETOPT_H 1 +/* #undef HAVE_GETOPT_H */
/* Define to 1 if you have the `getpassphrase' function. */ /* #undef HAVE_GETPASSPHRASE */
From: Hans Leidekker hans@codeweavers.com
Clang understands __attribute__ ((destructor)) syntax just like GCC. This avoids a link failure when atexit() used in the fallback path is not available.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53930 --- libs/ldap/libldap/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libs/ldap/libldap/init.c b/libs/ldap/libldap/init.c index 5f8f6ec7bdd..a94744b8dcf 100644 --- a/libs/ldap/libldap/init.c +++ b/libs/ldap/libldap/init.c @@ -497,7 +497,7 @@ static void openldap_ldap_init_w_env( } }
-#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) /* Declare this function as a destructor so that it will automatically be * invoked either at program exit (if libldap is a static library) or * at unload time (if libldap is a dynamic library). @@ -574,7 +574,7 @@ void ldap_int_initialize_global_options( struct ldapoptions *gopts, int *dbglvl */ ldap_url_parselist(&gopts->ldo_defludp, "ldap://localhost/"); gopts->ldo_defport = LDAP_PORT; -#if !defined(__GNUC__) && !defined(PIC) +#if !defined(__GNUC__) && !defined(__clang__) && !defined(PIC) /* Do this only for a static library, and only if we can't * arrange for it to be executed as a library destructor */