Mercurial > emacs
changeset 52525:fd2be6cea0e7
(Fnetwork_interface_list, Fnetwork_interface_info):
Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns.
(Fnetwork_interface_info): Check that ifreq struct has required
fields before accessing them; this requires that those fields are
defined as macros, which may be too restrictive on some platforms,
but it is better than failing on other platforms.
(syms_of_process): Only defsubr above fns when included.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Wed, 17 Sep 2003 21:31:53 +0000 |
parents | 84470539e96f |
children | b2e8d358bdbe |
files | src/process.c |
diffstat | 1 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/process.c Wed Sep 17 18:33:38 2003 +0000 +++ b/src/process.c Wed Sep 17 21:31:53 2003 +0000 @@ -3336,7 +3336,7 @@ #endif /* HAVE_SOCKETS */ -#ifdef HAVE_SOCKETS +#if defined(HAVE_SOCKETS) && defined(HAVE_NET_IF_H) && defined(HAVE_SYS_IOCTL_H) #ifdef SIOCGIFCONF DEFUN ("network-interface-list", Fnetwork_interface_list, Snetwork_interface_list, 0, 0, 0, @@ -3397,7 +3397,7 @@ return res; } -#endif +#endif /* SIOCGIFCONF */ #if defined(SIOCGIFADDR) || defined(SIOCGIFHWADDR) || defined(SIOCGIFFLAGS) @@ -3483,7 +3483,7 @@ return Qnil; elt = Qnil; -#ifdef SIOCGIFFLAGS +#if defined(SIOCGIFFLAGS) && defined(ifr_flags) if (ioctl (s, SIOCGIFFLAGS, &rq) == 0) { int flags = rq.ifr_flags; @@ -3511,10 +3511,10 @@ res = Fcons (elt, res); elt = Qnil; -#ifdef SIOCGIFHWADDR +#if defined(SIOCGIFHWADDR) && defined(ifr_hwaddr) if (ioctl (s, SIOCGIFHWADDR, &rq) == 0) { - Lisp_Object hwaddr = Fmake_vector (6, Qnil); + Lisp_Object hwaddr = Fmake_vector (make_number (6), Qnil); register struct Lisp_Vector *p = XVECTOR (hwaddr); int n; @@ -3527,7 +3527,7 @@ res = Fcons (elt, res); elt = Qnil; -#ifdef SIOCGIFNETMASK +#if defined(SIOCGIFNETMASK) && defined(ifr_netmask) if (ioctl (s, SIOCGIFNETMASK, &rq) == 0) { any++; @@ -3537,7 +3537,7 @@ res = Fcons (elt, res); elt = Qnil; -#ifdef SIOCGIFBRDADDR +#if defined(SIOCGIFBRDADDR) && defined(ifr_broadaddr) if (ioctl (s, SIOCGIFBRDADDR, &rq) == 0) { any++; @@ -3547,7 +3547,7 @@ res = Fcons (elt, res); elt = Qnil; -#ifdef SIOCGIFADDR +#if defined(SIOCGIFADDR) && defined(ifr_addr) if (ioctl (s, SIOCGIFADDR, &rq) == 0) { any++; @@ -6656,13 +6656,15 @@ defsubr (&Sset_network_process_option); defsubr (&Smake_network_process); defsubr (&Sformat_network_address); +#endif /* HAVE_SOCKETS */ +#if defined(HAVE_SOCKETS) && defined(HAVE_NET_IF_H) && defined(HAVE_SYS_IOCTL_H) #ifdef SIOCGIFCONF defsubr (&Snetwork_interface_list); #endif #if defined(SIOCGIFADDR) || defined(SIOCGIFHWADDR) || defined(SIOCGIFFLAGS) defsubr (&Snetwork_interface_info); #endif -#endif /* HAVE_SOCKETS */ +#endif /* HAVE_SOCKETS ... */ #ifdef DATAGRAM_SOCKETS defsubr (&Sprocess_datagram_address); defsubr (&Sset_process_datagram_address);