Fix loading of libresolv when the .so file (not .so.2) isn't installed
glibc is nice to us and provides a #define with the actual name. On most Linux systems, the .so file is installed only if the glibc-devel package is installed. For all of us Qt developers, it's installed. But for end users, it might not be. Change-Id: Id455371db91a074befd3bcd071f285c725d7e7e5 Reviewed-by: Ian Monroe <imonroe@kde.org> Reviewed-by: Richard J. Moore <rich@kde.org>
This commit is contained in:
parent
704616605b
commit
6c5e6a030d
@ -52,6 +52,10 @@
|
|||||||
#include <arpa/nameser_compat.h>
|
#include <arpa/nameser_compat.h>
|
||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
|
|
||||||
|
#ifdef __GNU_LIBRARY__
|
||||||
|
# include <gnu/lib-names.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#ifndef QT_NO_LIBRARY
|
#ifndef QT_NO_LIBRARY
|
||||||
@ -77,9 +81,16 @@ struct QDnsLookupStateDeleter
|
|||||||
|
|
||||||
static void resolveLibrary()
|
static void resolveLibrary()
|
||||||
{
|
{
|
||||||
QLibrary lib(QLatin1String("resolv"));
|
QLibrary lib;
|
||||||
|
#ifdef LIBRESOLV_SO
|
||||||
|
lib.setFileName(QStringLiteral(LIBRESOLV_SO));
|
||||||
|
if (!lib.load())
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
lib.setFileName(QLatin1String("resolv"));
|
||||||
if (!lib.load())
|
if (!lib.load())
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
local_dn_expand = dn_expand_proto(lib.resolve("__dn_expand"));
|
local_dn_expand = dn_expand_proto(lib.resolve("__dn_expand"));
|
||||||
if (!local_dn_expand)
|
if (!local_dn_expand)
|
||||||
|
@ -63,6 +63,10 @@
|
|||||||
# include <resolv.h>
|
# include <resolv.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GNU_LIBRARY__
|
||||||
|
# include <gnu/lib-names.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (QT_NO_GETADDRINFO)
|
#if defined (QT_NO_GETADDRINFO)
|
||||||
static QBasicMutex getHostByNameMutex;
|
static QBasicMutex getHostByNameMutex;
|
||||||
#endif
|
#endif
|
||||||
@ -93,9 +97,16 @@ static res_state_ptr local_res = 0;
|
|||||||
static void resolveLibrary()
|
static void resolveLibrary()
|
||||||
{
|
{
|
||||||
#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_QNX)
|
#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_QNX)
|
||||||
QLibrary lib(QLatin1String("resolv"));
|
QLibrary lib;
|
||||||
|
#ifdef LIBRESOLV_SO
|
||||||
|
lib.setFileName(QStringLiteral(LIBRESOLV_SO));
|
||||||
|
if (!lib.load())
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
lib.setFileName(QLatin1String("resolv"));
|
||||||
if (!lib.load())
|
if (!lib.load())
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
local_res_init = res_init_proto(lib.resolve("__res_init"));
|
local_res_init = res_init_proto(lib.resolve("__res_init"));
|
||||||
if (!local_res_init)
|
if (!local_res_init)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user