Skip to content

Commit

Permalink
build: use getenv() replacement function for systems which lack it
Browse files Browse the repository at this point in the history
  • Loading branch information
yangtse committed Mar 23, 2011
1 parent 3abad87 commit 822fd0f
Show file tree
Hide file tree
Showing 10 changed files with 164 additions and 2 deletions.
2 changes: 2 additions & 0 deletions Makefile.inc
Expand Up @@ -11,6 +11,7 @@ CSOURCES = ares__close_sockets.c \
ares_fds.c \
ares_free_hostent.c \
ares_free_string.c \
ares_getenv.c \
ares_gethostbyaddr.c \
ares_gethostbyname.c \
ares_getnameinfo.c \
Expand Down Expand Up @@ -47,6 +48,7 @@ HHEADERS = ares.h \
ares_build.h \
ares_data.h \
ares_dns.h \
ares_getenv.h \
ares_ipv6.h \
ares_library_init.h \
ares_llist.h \
Expand Down
1 change: 1 addition & 0 deletions Makefile.netware
Expand Up @@ -357,6 +357,7 @@ endif
@echo $(DL)#define HAVE_ERRNO_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
@echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
@echo $(DL)#define HAVE_GETENV 1$(DL) >> $@
@echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
@echo $(DL)#define HAVE_GETHOSTBYNAME 1$(DL) >> $@
@echo $(DL)#define HAVE_GETHOSTNAME 1$(DL) >> $@
Expand Down
30 changes: 30 additions & 0 deletions ares_getenv.c
@@ -0,0 +1,30 @@


/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/

#include "ares_setup.h"
#include "ares_getenv.h"

#ifndef HAVE_GETENV

char *ares_getenv(const char *name)
{
#ifdef _WIN32_WCE
return NULL;
#endif
}

#endif
26 changes: 26 additions & 0 deletions ares_getenv.h
@@ -0,0 +1,26 @@
#ifndef HEADER_CARES_GETENV_H
#define HEADER_CARES_GETENV_H


/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/

#include "ares_setup.h"

#ifndef HAVE_GETENV
extern char *ares_getenv(const char *name);
#endif

#endif /* HEADER_CARES_GETENV_H */
5 changes: 5 additions & 0 deletions ares_private.h
Expand Up @@ -89,6 +89,11 @@
#include "ares_ipv6.h"
#include "ares_llist.h"

#ifndef HAVE_GETENV
# include "ares_getenv.h"
# define getenv(ptr) ares_getenv(ptr)
#endif

#ifndef HAVE_STRDUP
# include "ares_strdup.h"
# define strdup(ptr) ares_strdup(ptr)
Expand Down
1 change: 1 addition & 0 deletions config-dos.h
Expand Up @@ -9,6 +9,7 @@
#define PACKAGE "c-ares"

#define HAVE_ERRNO_H 1
#define HAVE_GETENV 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_IOCTLSOCKET 1
#define HAVE_IOCTLSOCKET_FIONBIO 1
Expand Down
3 changes: 3 additions & 0 deletions config-win32.h
Expand Up @@ -93,6 +93,9 @@
/* Define if you have the closesocket function. */
#define HAVE_CLOSESOCKET 1

/* Define if you have the getenv function. */
#define HAVE_GETENV 1

/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1

Expand Down
1 change: 1 addition & 0 deletions configure.ac
Expand Up @@ -524,6 +524,7 @@ CARES_CHECK_FUNC_CONNECT
CARES_CHECK_FUNC_FCNTL
CARES_CHECK_FUNC_FREEADDRINFO
CARES_CHECK_FUNC_GETADDRINFO
CARES_CHECK_FUNC_GETENV
CARES_CHECK_FUNC_GETHOSTBYADDR
CARES_CHECK_FUNC_GETHOSTBYNAME
CARES_CHECK_FUNC_GETHOSTNAME
Expand Down
89 changes: 87 additions & 2 deletions m4/cares-functions.m4
@@ -1,6 +1,6 @@
#***************************************************************************
#
# Copyright (C) 2008 - 2010 by Daniel Stenberg et al
# Copyright (C) 2008 - 2011 by Daniel Stenberg et al
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
Expand All @@ -15,7 +15,7 @@
#***************************************************************************

# File version for 'aclocal' use. Keep it a single number.
# serial 40
# serial 41


dnl CARES_INCLUDES_ARPA_INET
Expand Down Expand Up @@ -1084,6 +1084,91 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
])


dnl CARES_CHECK_FUNC_GETENV
dnl -------------------------------------------------
dnl Verify if getenv is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable cares_disallow_getenv, then
dnl HAVE_GETENV will be defined.

AC_DEFUN([CARES_CHECK_FUNC_GETENV], [
AC_REQUIRE([CARES_INCLUDES_STDLIB])dnl
#
tst_links_getenv="unknown"
tst_proto_getenv="unknown"
tst_compi_getenv="unknown"
tst_allow_getenv="unknown"
#
AC_MSG_CHECKING([if getenv can be linked])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([getenv])
],[
AC_MSG_RESULT([yes])
tst_links_getenv="yes"
],[
AC_MSG_RESULT([no])
tst_links_getenv="no"
])
#
if test "$tst_links_getenv" = "yes"; then
AC_MSG_CHECKING([if getenv is prototyped])
AC_EGREP_CPP([getenv],[
$cares_includes_stdlib
],[
AC_MSG_RESULT([yes])
tst_proto_getenv="yes"
],[
AC_MSG_RESULT([no])
tst_proto_getenv="no"
])
fi
#
if test "$tst_proto_getenv" = "yes"; then
AC_MSG_CHECKING([if getenv is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$cares_includes_stdlib
]],[[
if(0 != getenv(0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_getenv="yes"
],[
AC_MSG_RESULT([no])
tst_compi_getenv="no"
])
fi
#
if test "$tst_compi_getenv" = "yes"; then
AC_MSG_CHECKING([if getenv usage allowed])
if test "x$cares_disallow_getenv" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_getenv="yes"
else
AC_MSG_RESULT([no])
tst_allow_getenv="no"
fi
fi
#
AC_MSG_CHECKING([if getenv might be used])
if test "$tst_links_getenv" = "yes" &&
test "$tst_proto_getenv" = "yes" &&
test "$tst_compi_getenv" = "yes" &&
test "$tst_allow_getenv" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_GETENV, 1,
[Define to 1 if you have the getenv function.])
ac_cv_func_getenv="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_getenv="no"
fi
])


dnl CARES_CHECK_FUNC_GETHOSTBYADDR
dnl -------------------------------------------------
dnl Verify if gethostbyaddr is available, prototyped,
Expand Down
8 changes: 8 additions & 0 deletions vc/cares/vc6cares.dsp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 822fd0f

Please sign in to comment.