aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c47
1 files changed, 22 insertions, 25 deletions
diff --git a/src/process.c b/src/process.c
index 7e78e172d36..8e0b2349f9d 100644
--- a/src/process.c
+++ b/src/process.c
@@ -2492,7 +2492,6 @@ Lisp_Object
2492conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) 2492conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len)
2493{ 2493{
2494 Lisp_Object address; 2494 Lisp_Object address;
2495 ptrdiff_t i;
2496 unsigned char *cp; 2495 unsigned char *cp;
2497 struct Lisp_Vector *p; 2496 struct Lisp_Vector *p;
2498 2497
@@ -2508,7 +2507,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len)
2508 { 2507 {
2509 DECLARE_POINTER_ALIAS (sin, struct sockaddr_in, sa); 2508 DECLARE_POINTER_ALIAS (sin, struct sockaddr_in, sa);
2510 len = sizeof (sin->sin_addr) + 1; 2509 len = sizeof (sin->sin_addr) + 1;
2511 address = Fmake_vector (make_fixnum (len), Qnil); 2510 address = make_uninit_vector (len);
2512 p = XVECTOR (address); 2511 p = XVECTOR (address);
2513 p->contents[--len] = make_fixnum (ntohs (sin->sin_port)); 2512 p->contents[--len] = make_fixnum (ntohs (sin->sin_port));
2514 cp = (unsigned char *) &sin->sin_addr; 2513 cp = (unsigned char *) &sin->sin_addr;
@@ -2520,10 +2519,10 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len)
2520 DECLARE_POINTER_ALIAS (sin6, struct sockaddr_in6, sa); 2519 DECLARE_POINTER_ALIAS (sin6, struct sockaddr_in6, sa);
2521 DECLARE_POINTER_ALIAS (ip6, uint16_t, &sin6->sin6_addr); 2520 DECLARE_POINTER_ALIAS (ip6, uint16_t, &sin6->sin6_addr);
2522 len = sizeof (sin6->sin6_addr) / 2 + 1; 2521 len = sizeof (sin6->sin6_addr) / 2 + 1;
2523 address = Fmake_vector (make_fixnum (len), Qnil); 2522 address = make_uninit_vector (len);
2524 p = XVECTOR (address); 2523 p = XVECTOR (address);
2525 p->contents[--len] = make_fixnum (ntohs (sin6->sin6_port)); 2524 p->contents[--len] = make_fixnum (ntohs (sin6->sin6_port));
2526 for (i = 0; i < len; i++) 2525 for (ptrdiff_t i = 0; i < len; i++)
2527 p->contents[i] = make_fixnum (ntohs (ip6[i])); 2526 p->contents[i] = make_fixnum (ntohs (ip6[i]));
2528 return address; 2527 return address;
2529 } 2528 }
@@ -2552,16 +2551,14 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len)
2552#endif 2551#endif
2553 default: 2552 default:
2554 len -= offsetof (struct sockaddr, sa_family) + sizeof (sa->sa_family); 2553 len -= offsetof (struct sockaddr, sa_family) + sizeof (sa->sa_family);
2555 address = Fcons (make_fixnum (sa->sa_family), 2554 address = Fcons (make_fixnum (sa->sa_family), make_nil_vector (len));
2556 Fmake_vector (make_fixnum (len), Qnil));
2557 p = XVECTOR (XCDR (address)); 2555 p = XVECTOR (XCDR (address));
2558 cp = (unsigned char *) &sa->sa_family + sizeof (sa->sa_family); 2556 cp = (unsigned char *) &sa->sa_family + sizeof (sa->sa_family);
2559 break; 2557 break;
2560 } 2558 }
2561 2559
2562 i = 0; 2560 for (ptrdiff_t i = 0; i < len; i++)
2563 while (i < len) 2561 p->contents[i] = make_fixnum (*cp++);
2564 p->contents[i++] = make_fixnum (*cp++);
2565 2562
2566 return address; 2563 return address;
2567} 2564}
@@ -4363,7 +4360,7 @@ network_interface_info (Lisp_Object ifname)
4363 Lisp_Object res = Qnil; 4360 Lisp_Object res = Qnil;
4364 Lisp_Object elt; 4361 Lisp_Object elt;
4365 int s; 4362 int s;
4366 bool any = 0; 4363 bool any = false;
4367 ptrdiff_t count; 4364 ptrdiff_t count;
4368#if (! (defined SIOCGIFHWADDR && defined HAVE_STRUCT_IFREQ_IFR_HWADDR) \ 4365#if (! (defined SIOCGIFHWADDR && defined HAVE_STRUCT_IFREQ_IFR_HWADDR) \
4369 && defined HAVE_GETIFADDRS && defined LLADDR) 4366 && defined HAVE_GETIFADDRS && defined LLADDR)
@@ -4396,7 +4393,7 @@ network_interface_info (Lisp_Object ifname)
4396 if (flags < 0 && sizeof (rq.ifr_flags) < sizeof (flags)) 4393 if (flags < 0 && sizeof (rq.ifr_flags) < sizeof (flags))
4397 flags = (unsigned short) rq.ifr_flags; 4394 flags = (unsigned short) rq.ifr_flags;
4398 4395
4399 any = 1; 4396 any = true;
4400 for (fp = ifflag_table; flags != 0 && fp->flag_sym; fp++) 4397 for (fp = ifflag_table; flags != 0 && fp->flag_sym; fp++)
4401 { 4398 {
4402 if (flags & fp->flag_bit) 4399 if (flags & fp->flag_bit)
@@ -4420,12 +4417,11 @@ network_interface_info (Lisp_Object ifname)
4420#if defined (SIOCGIFHWADDR) && defined (HAVE_STRUCT_IFREQ_IFR_HWADDR) 4417#if defined (SIOCGIFHWADDR) && defined (HAVE_STRUCT_IFREQ_IFR_HWADDR)
4421 if (ioctl (s, SIOCGIFHWADDR, &rq) == 0) 4418 if (ioctl (s, SIOCGIFHWADDR, &rq) == 0)
4422 { 4419 {
4423 Lisp_Object hwaddr = Fmake_vector (make_fixnum (6), Qnil); 4420 Lisp_Object hwaddr = make_uninit_vector (6);
4424 register struct Lisp_Vector *p = XVECTOR (hwaddr); 4421 struct Lisp_Vector *p = XVECTOR (hwaddr);
4425 int n;
4426 4422
4427 any = 1; 4423 any = true;
4428 for (n = 0; n < 6; n++) 4424 for (int n = 0; n < 6; n++)
4429 p->contents[n] = make_fixnum (((unsigned char *) 4425 p->contents[n] = make_fixnum (((unsigned char *)
4430 &rq.ifr_hwaddr.sa_data[0]) 4426 &rq.ifr_hwaddr.sa_data[0])
4431 [n]); 4427 [n]);
@@ -4434,11 +4430,10 @@ network_interface_info (Lisp_Object ifname)
4434#elif defined (HAVE_GETIFADDRS) && defined (LLADDR) 4430#elif defined (HAVE_GETIFADDRS) && defined (LLADDR)
4435 if (getifaddrs (&ifap) != -1) 4431 if (getifaddrs (&ifap) != -1)
4436 { 4432 {
4437 Lisp_Object hwaddr = Fmake_vector (make_fixnum (6), Qnil); 4433 Lisp_Object hwaddr = make_nil_vector (6);
4438 register struct Lisp_Vector *p = XVECTOR (hwaddr); 4434 struct Lisp_Vector *p = XVECTOR (hwaddr);
4439 struct ifaddrs *it;
4440 4435
4441 for (it = ifap; it != NULL; it = it->ifa_next) 4436 for (struct ifaddrs *it = ifap; it != NULL; it = it->ifa_next)
4442 { 4437 {
4443 DECLARE_POINTER_ALIAS (sdl, struct sockaddr_dl, it->ifa_addr); 4438 DECLARE_POINTER_ALIAS (sdl, struct sockaddr_dl, it->ifa_addr);
4444 unsigned char linkaddr[6]; 4439 unsigned char linkaddr[6];
@@ -4466,10 +4461,12 @@ network_interface_info (Lisp_Object ifname)
4466 res = Fcons (elt, res); 4461 res = Fcons (elt, res);
4467 4462
4468 elt = Qnil; 4463 elt = Qnil;
4469#if defined (SIOCGIFNETMASK) && (defined (HAVE_STRUCT_IFREQ_IFR_NETMASK) || defined (HAVE_STRUCT_IFREQ_IFR_ADDR)) 4464#if (defined SIOCGIFNETMASK \
4465 && (defined HAVE_STRUCT_IFREQ_IFR_NETMASK \
4466 || defined HAVE_STRUCT_IFREQ_IFR_ADDR))
4470 if (ioctl (s, SIOCGIFNETMASK, &rq) == 0) 4467 if (ioctl (s, SIOCGIFNETMASK, &rq) == 0)
4471 { 4468 {
4472 any = 1; 4469 any = true;
4473#ifdef HAVE_STRUCT_IFREQ_IFR_NETMASK 4470#ifdef HAVE_STRUCT_IFREQ_IFR_NETMASK
4474 elt = conv_sockaddr_to_lisp (&rq.ifr_netmask, sizeof (rq.ifr_netmask)); 4471 elt = conv_sockaddr_to_lisp (&rq.ifr_netmask, sizeof (rq.ifr_netmask));
4475#else 4472#else
@@ -4483,8 +4480,8 @@ network_interface_info (Lisp_Object ifname)
4483#if defined (SIOCGIFBRDADDR) && defined (HAVE_STRUCT_IFREQ_IFR_BROADADDR) 4480#if defined (SIOCGIFBRDADDR) && defined (HAVE_STRUCT_IFREQ_IFR_BROADADDR)
4484 if (ioctl (s, SIOCGIFBRDADDR, &rq) == 0) 4481 if (ioctl (s, SIOCGIFBRDADDR, &rq) == 0)
4485 { 4482 {
4486 any = 1; 4483 any = true;
4487 elt = conv_sockaddr_to_lisp (&rq.ifr_broadaddr, sizeof (rq.ifr_broadaddr)); 4484 elt = conv_sockaddr_to_lisp (&rq.ifr_broadaddr, sizeof rq.ifr_broadaddr);
4488 } 4485 }
4489#endif 4486#endif
4490 res = Fcons (elt, res); 4487 res = Fcons (elt, res);
@@ -4493,7 +4490,7 @@ network_interface_info (Lisp_Object ifname)
4493#if defined (SIOCGIFADDR) && defined (HAVE_STRUCT_IFREQ_IFR_ADDR) 4490#if defined (SIOCGIFADDR) && defined (HAVE_STRUCT_IFREQ_IFR_ADDR)
4494 if (ioctl (s, SIOCGIFADDR, &rq) == 0) 4491 if (ioctl (s, SIOCGIFADDR, &rq) == 0)
4495 { 4492 {
4496 any = 1; 4493 any = true;
4497 elt = conv_sockaddr_to_lisp (&rq.ifr_addr, sizeof (rq.ifr_addr)); 4494 elt = conv_sockaddr_to_lisp (&rq.ifr_addr, sizeof (rq.ifr_addr));
4498 } 4495 }
4499#endif 4496#endif