Skip to content

Commit

Permalink
Enhance configure socklen_t (#640)
Browse files Browse the repository at this point in the history
Patch by: michaelortmann

Replace handcrafted code with GNU Autoconf Archive Macro.
  • Loading branch information
michaelortmann authored and Cizzle committed Oct 18, 2018
1 parent 9be31b8 commit 2f566e3
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 39 deletions.
35 changes: 1 addition & 34 deletions aclocal.m4
Expand Up @@ -23,6 +23,7 @@ builtin(include,m4/tcl.m4)
dnl Load gnu autoconf archive macros
builtin(include,m4/ax_create_stdint_h.m4)
builtin(include,m4/ax_lib_socket_nsl.m4)
builtin(include,m4/ax_type_socklen_t.m4)


dnl
Expand Down Expand Up @@ -283,40 +284,6 @@ dnl Checks for types and functions.
dnl


dnl EGG_CHECK_SOCKLEN_T()
dnl
dnl Check for the socklen_t type.
dnl
AC_DEFUN([EGG_CHECK_SOCKLEN_T],
[
AC_CACHE_CHECK([for socklen_t], egg_cv_socklen_t, [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <unistd.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],[[
socklen_t test = 55;
if (test != 55)
return(1);
return(0);
]])], [
egg_cv_socklen_t="yes"
], [
egg_cv_socklen_t="no"
])
])
if test "$egg_cv_socklen_t" = yes; then
AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define to 1 if you have the `socklen_t' type.])
fi
])


dnl EGG_FUNC_VPRINTF()
dnl
AC_DEFUN([EGG_FUNC_VPRINTF],
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Expand Up @@ -103,7 +103,7 @@ AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_STRUCT_TIMEZONE
AC_C_VOLATILE
EGG_CHECK_SOCKLEN_T
AX_TYPE_SOCKLEN_T


# Create stdint.h C99 compatibility header.
Expand Down
59 changes: 59 additions & 0 deletions m4/ax_type_socklen_t.m4
@@ -0,0 +1,59 @@
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_type_socklen_t.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_TYPE_SOCKLEN_T
#
# DESCRIPTION
#
# Check whether sys/socket.h defines type socklen_t. Please note that some
# systems require sys/types.h to be included before sys/socket.h can be
# compiled.
#
# LICENSE
#
# Copyright (c) 2008 Lars Brinkhoff <lars@nocrew.org>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.

#serial 8

AU_ALIAS([TYPE_SOCKLEN_T], [AX_TYPE_SOCKLEN_T])
AC_DEFUN([AX_TYPE_SOCKLEN_T],
[AC_CACHE_CHECK([for socklen_t], [ac_cv_ax_type_socklen_t],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
#include <sys/socket.h>]],
[[socklen_t len = (socklen_t) 42; return (!len);]])],
[ac_cv_ax_type_socklen_t=yes],
[ac_cv_ax_type_socklen_t=no])
])
if test $ac_cv_ax_type_socklen_t != yes; then
AC_DEFINE(socklen_t, int, [Substitute for socklen_t])
fi
])
4 changes: 0 additions & 4 deletions src/eggdrop.h
Expand Up @@ -269,10 +269,6 @@
# define sigemptyset(x) ((*(int *)(x))=0)
#endif

#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
#endif

#ifdef TLS
# include <openssl/ssl.h>
#endif
Expand Down

0 comments on commit 2f566e3

Please sign in to comment.