bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: provide inet_?to? declarations in arpa_inet.h


From: Bruno Haible
Subject: Re: provide inet_?to? declarations in arpa_inet.h
Date: Tue, 29 Apr 2008 13:40:14 +0200
User-agent: KMail/1.5.4

Simon Josefsson wrote:
> I've tested it better now

It was still apparently tested only on few systems. As you can see
from doc/posix-functions/inet*.texi, the functions inet_ntop and inet_pton
need to be declared also on HP-UX 11, OSF/1 4.0, Solaris 2.5.1. So the
gnulib <arpa/inet.h> must be used in these cases as well (at least). And
it must include the system's <arpa/inet.h>, which the present mingw-only
replacement didn't do.

Also, in the GNULIB_POSIXCHECK-conditionalized warnings, it is misleading
to say "inet_pton doesn't exist on mingw" when in fact it does not exist
on a couple of Unix systems either. (See doc/posix-functions/inet*.texi for
reference.) mingw is one of gnulib's target platforms, but not its primary one.

I committed this.

2008-04-29  Bruno Haible  <address@hidden>

        * lib/arpa_inet.in.h: Include system's <arpa/inet.h> if it exists.
        (inet_ntop, inet_pton): Change portability warning's wording.
        * m4/arpa_inet_h.m4 (gl_HEADER_ARPA_INET): Set HAVE_ARPA_INET_H.
        Invoke gl_CHECK_NEXT_HEADERS.
        (gl_ARPA_INET_H_DEFAULTS): Initialize ARPA_INET_H.
        * m4/inet_ntop.m4 (gl_INET_NTOP): Require gl_ARPA_INET_H_DEFAULTS and
        set ARPA_INET_H.
        * m4/inet_pton.m4 (gl_INET_PTON): Likewise.
        * modules/arpa_inet (Description): No longer only for systems that
        lack it.
        (Depends-on): Add include_next.
        (Makeile.am): Substitute INCLUDE_NEXT, NEXT_ARPA_INET_H,
        HAVE_ARPA_INET_H.

*** lib/arpa_inet.in.h.orig     2008-04-29 13:24:54.000000000 +0200
--- lib/arpa_inet.in.h  2008-04-29 13:16:51.000000000 +0200
***************
*** 1,5 ****
! /* Provide a arpa/inet header file for systems lacking it (read: MinGW)
!    Copyright (C) 2008 Free Software Foundation, Inc.
  
     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
--- 1,6 ----
! /* A GNU-like <arpa/inet.h>.
! 
!    Copyright (C) 2005-2006, 2008 Free Software Foundation, Inc.
  
     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
***************
*** 16,27 ****
     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
  
  #ifndef _GL_ARPA_INET_H
- #define _GL_ARPA_INET_H
  
  /* Gnulib's sys/socket.h is responsible for pulling in winsock2.h etc
     under MinGW. */
  #include <sys/socket.h>
  
  #if @GNULIB_INET_NTOP@
  # if address@hidden@
  /* Converts an internet address from internal format to a printable,
--- 17,37 ----
     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
  
  #ifndef _GL_ARPA_INET_H
  
  /* Gnulib's sys/socket.h is responsible for pulling in winsock2.h etc
     under MinGW. */
  #include <sys/socket.h>
  
+ #if @HAVE_ARPA_INET_H@
+ 
+ /* The include_next requires a split double-inclusion guard.  */
+ # @INCLUDE_NEXT@ @NEXT_ARPA_INET_H@
+ 
+ #endif
+ 
+ #ifndef _GL_ARPA_INET_H
+ #define _GL_ARPA_INET_H
+ 
  #if @GNULIB_INET_NTOP@
  # if address@hidden@
  /* Converts an internet address from internal format to a printable,
***************
*** 44,51 ****
  # endif
  #elif defined GNULIB_POSIXCHECK
  # undef inet_ntop
! # define inet_ntop(af,src,dst,cnt)                                    \
!     (GL_LINK_WARNING ("inet_ntop doesn't exist on mingw - " \
                        "use gnulib module inet_ntop for portability"), \
       inet_ntop (af, src, dst, cnt))
  #endif
--- 54,61 ----
  # endif
  #elif defined GNULIB_POSIXCHECK
  # undef inet_ntop
! # define inet_ntop(af,src,dst,cnt) \
!     (GL_LINK_WARNING ("inet_ntop is unportable - " \
                        "use gnulib module inet_ntop for portability"), \
       inet_ntop (af, src, dst, cnt))
  #endif
***************
*** 56,65 ****
  # endif
  #elif defined GNULIB_POSIXCHECK
  # undef inet_pton
! # define inet_pton(af,src,dst)                            \
!   (GL_LINK_WARNING ("inet_pton doesn't exist on mingw - "       \
!                   "use gnulib module inet_pton for portability"),       \
     inet_pton (af, src, dst))
  #endif
  
  #endif /* _GL_ARPA_INET_H */
--- 66,76 ----
  # endif
  #elif defined GNULIB_POSIXCHECK
  # undef inet_pton
! # define inet_pton(af,src,dst) \
!   (GL_LINK_WARNING ("inet_pton is unportable - " \
!                   "use gnulib module inet_pton for portability"), \
     inet_pton (af, src, dst))
  #endif
  
  #endif /* _GL_ARPA_INET_H */
+ #endif /* _GL_ARPA_INET_H */
*** m4/arpa_inet_h.m4.orig      2008-04-29 13:24:54.000000000 +0200
--- m4/arpa_inet_h.m4   2008-04-29 13:22:28.000000000 +0200
***************
*** 1,10 ****
! # arpa_inet_h.m4 serial 2
  dnl Copyright (C) 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
  dnl with or without modifications, as long as this notice is preserved.
  
! dnl Written by Simon Josefsson
  
  AC_DEFUN([gl_HEADER_ARPA_INET],
  [
--- 1,10 ----
! # arpa_inet_h.m4 serial 3
  dnl Copyright (C) 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
  dnl with or without modifications, as long as this notice is preserved.
  
! dnl Written by Simon Josefsson and Bruno Haible
  
  AC_DEFUN([gl_HEADER_ARPA_INET],
  [
***************
*** 14,24 ****
  
    AC_CHECK_HEADERS_ONCE([arpa/inet.h])
    if test $ac_cv_header_arpa_inet_h = yes; then
!     ARPA_INET_H=''
    else
      ARPA_INET_H='arpa/inet.h'
    fi
!   AC_SUBST(ARPA_INET_H)
  ])
  
  AC_DEFUN([gl_ARPA_INET_MODULE_INDICATOR],
--- 14,29 ----
  
    AC_CHECK_HEADERS_ONCE([arpa/inet.h])
    if test $ac_cv_header_arpa_inet_h = yes; then
!     HAVE_ARPA_INET_H=1
    else
      ARPA_INET_H='arpa/inet.h'
+     HAVE_ARPA_INET_H=0
    fi
!   AC_SUBST([HAVE_ARPA_INET_H])
!   dnl Execute this unconditionally, because ARPA_INET_H may be set by other
!   dnl modules, after this code is executed.
!   gl_CHECK_NEXT_HEADERS([arpa/inet.h])
!   
  ])
  
  AC_DEFUN([gl_ARPA_INET_MODULE_INDICATOR],
***************
*** 35,38 ****
--- 40,44 ----
    dnl Assume proper GNU behavior unless another module says otherwise.
    HAVE_DECL_INET_NTOP=1;  AC_SUBST([HAVE_DECL_INET_NTOP])
    HAVE_DECL_INET_PTON=1;  AC_SUBST([HAVE_DECL_INET_PTON])
+   ARPA_INET_H='';         AC_SUBST([ARPA_INET_H])
  ])
*** m4/inet_ntop.m4.orig        2008-04-29 13:24:54.000000000 +0200
--- m4/inet_ntop.m4     2008-04-29 13:09:22.000000000 +0200
***************
*** 1,4 ****
! # inet_ntop.m4 serial 4
  dnl Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # inet_ntop.m4 serial 5
  dnl Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
***************
*** 6,11 ****
--- 6,14 ----
  
  AC_DEFUN([gl_INET_NTOP],
  [
+   AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS])
+   ARPA_INET_H='arpa/inet.h'
+ 
    AC_REPLACE_FUNCS(inet_ntop)
    gl_PREREQ_INET_NTOP
  ])
*** m4/inet_pton.m4.orig        2008-04-29 13:24:54.000000000 +0200
--- m4/inet_pton.m4     2008-04-29 13:09:22.000000000 +0200
***************
*** 1,4 ****
! # inet_pton.m4 serial 3
  dnl Copyright (C) 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # inet_pton.m4 serial 4
  dnl Copyright (C) 2006, 2008 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
***************
*** 6,11 ****
--- 6,14 ----
  
  AC_DEFUN([gl_INET_PTON],
  [
+   AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS])
+   ARPA_INET_H='arpa/inet.h'
+ 
    AC_REPLACE_FUNCS(inet_pton)
    gl_PREREQ_INET_PTON
  ])
*** modules/arpa_inet.orig      2008-04-29 13:24:54.000000000 +0200
--- modules/arpa_inet   2008-04-29 13:18:56.000000000 +0200
***************
*** 1,11 ****
  Description:
! A <arpa/inet.h> for systems lacking it (e.g., Mingw).
  
  Files:
  lib/arpa_inet.in.h
  m4/arpa_inet_h.m4
  
  Depends-on:
  sys_socket
  
  configure.ac:
--- 1,12 ----
  Description:
! A GNU-like <arpa/inet.h>.
  
  Files:
  lib/arpa_inet.in.h
  m4/arpa_inet_h.m4
  
  Depends-on:
+ include_next
  sys_socket
  
  configure.ac:
***************
*** 21,27 ****
        @MKDIR_P@ arpa
        rm -f address@hidden $@
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
!         sed \
              -e 's|@''GNULIB_INET_NTOP''@|$(GNULIB_INET_NTOP)|g' \
              -e 's|@''GNULIB_INET_PTON''@|$(GNULIB_INET_PTON)|g' \
              -e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \
--- 22,30 ----
        @MKDIR_P@ arpa
        rm -f address@hidden $@
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
!         sed -e 's/@''INCLUDE_NEXT''@/$(INCLUDE_NEXT)/g' \
!             -e 's|@''NEXT_ARPA_INET_H''@|$(NEXT_ARPA_INET_H)|g' \
!             -e 's|@''HAVE_ARPA_INET_H''@|$(HAVE_ARPA_INET_H)|g' \
              -e 's|@''GNULIB_INET_NTOP''@|$(GNULIB_INET_NTOP)|g' \
              -e 's|@''GNULIB_INET_PTON''@|$(GNULIB_INET_PTON)|g' \
              -e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \





reply via email to

[Prev in Thread] Current Thread [Next in Thread]