diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 47 |
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 | |||
| 2492 | conv_sockaddr_to_lisp (struct sockaddr *sa, ptrdiff_t len) | 2492 | conv_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 |