diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/process.c b/src/process.c index 91bc090e76e..307eab3ab30 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -1333,15 +1333,15 @@ Returns nil if format of ADDRESS is invalid. */) | |||
| 1333 | 1333 | ||
| 1334 | for (i = 0; i < nargs; i++) | 1334 | for (i = 0; i < nargs; i++) |
| 1335 | { | 1335 | { |
| 1336 | if (! RANGED_INTEGERP (0, p->u.contents[i], 65535)) | 1336 | if (! RANGED_INTEGERP (0, p->contents[i], 65535)) |
| 1337 | return Qnil; | 1337 | return Qnil; |
| 1338 | 1338 | ||
| 1339 | if (nargs <= 5 /* IPv4 */ | 1339 | if (nargs <= 5 /* IPv4 */ |
| 1340 | && i < 4 /* host, not port */ | 1340 | && i < 4 /* host, not port */ |
| 1341 | && XINT (p->u.contents[i]) > 255) | 1341 | && XINT (p->contents[i]) > 255) |
| 1342 | return Qnil; | 1342 | return Qnil; |
| 1343 | 1343 | ||
| 1344 | args[i+1] = p->u.contents[i]; | 1344 | args[i+1] = p->contents[i]; |
| 1345 | } | 1345 | } |
| 1346 | 1346 | ||
| 1347 | return Fformat (nargs+1, args); | 1347 | return Fformat (nargs+1, args); |
| @@ -1983,7 +1983,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) | |||
| 1983 | len = sizeof (sin->sin_addr) + 1; | 1983 | len = sizeof (sin->sin_addr) + 1; |
| 1984 | address = Fmake_vector (make_number (len), Qnil); | 1984 | address = Fmake_vector (make_number (len), Qnil); |
| 1985 | p = XVECTOR (address); | 1985 | p = XVECTOR (address); |
| 1986 | p->u.contents[--len] = make_number (ntohs (sin->sin_port)); | 1986 | p->contents[--len] = make_number (ntohs (sin->sin_port)); |
| 1987 | cp = (unsigned char *) &sin->sin_addr; | 1987 | cp = (unsigned char *) &sin->sin_addr; |
| 1988 | break; | 1988 | break; |
| 1989 | } | 1989 | } |
| @@ -1995,9 +1995,9 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) | |||
| 1995 | len = sizeof (sin6->sin6_addr)/2 + 1; | 1995 | len = sizeof (sin6->sin6_addr)/2 + 1; |
| 1996 | address = Fmake_vector (make_number (len), Qnil); | 1996 | address = Fmake_vector (make_number (len), Qnil); |
| 1997 | p = XVECTOR (address); | 1997 | p = XVECTOR (address); |
| 1998 | p->u.contents[--len] = make_number (ntohs (sin6->sin6_port)); | 1998 | p->contents[--len] = make_number (ntohs (sin6->sin6_port)); |
| 1999 | for (i = 0; i < len; i++) | 1999 | for (i = 0; i < len; i++) |
| 2000 | p->u.contents[i] = make_number (ntohs (ip6[i])); | 2000 | p->contents[i] = make_number (ntohs (ip6[i])); |
| 2001 | return address; | 2001 | return address; |
| 2002 | } | 2002 | } |
| 2003 | #endif | 2003 | #endif |
| @@ -2022,7 +2022,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) | |||
| 2022 | 2022 | ||
| 2023 | i = 0; | 2023 | i = 0; |
| 2024 | while (i < len) | 2024 | while (i < len) |
| 2025 | p->u.contents[i++] = make_number (*cp++); | 2025 | p->contents[i++] = make_number (*cp++); |
| 2026 | 2026 | ||
| 2027 | return address; | 2027 | return address; |
| 2028 | } | 2028 | } |
| @@ -2093,7 +2093,7 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int | |||
| 2093 | { | 2093 | { |
| 2094 | struct sockaddr_in *sin = (struct sockaddr_in *) sa; | 2094 | struct sockaddr_in *sin = (struct sockaddr_in *) sa; |
| 2095 | len = sizeof (sin->sin_addr) + 1; | 2095 | len = sizeof (sin->sin_addr) + 1; |
| 2096 | hostport = XINT (p->u.contents[--len]); | 2096 | hostport = XINT (p->contents[--len]); |
| 2097 | sin->sin_port = htons (hostport); | 2097 | sin->sin_port = htons (hostport); |
| 2098 | cp = (unsigned char *)&sin->sin_addr; | 2098 | cp = (unsigned char *)&sin->sin_addr; |
| 2099 | sa->sa_family = family; | 2099 | sa->sa_family = family; |
| @@ -2104,12 +2104,12 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int | |||
| 2104 | struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; | 2104 | struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; |
| 2105 | uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr; | 2105 | uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr; |
| 2106 | len = sizeof (sin6->sin6_addr) + 1; | 2106 | len = sizeof (sin6->sin6_addr) + 1; |
| 2107 | hostport = XINT (p->u.contents[--len]); | 2107 | hostport = XINT (p->contents[--len]); |
| 2108 | sin6->sin6_port = htons (hostport); | 2108 | sin6->sin6_port = htons (hostport); |
| 2109 | for (i = 0; i < len; i++) | 2109 | for (i = 0; i < len; i++) |
| 2110 | if (INTEGERP (p->u.contents[i])) | 2110 | if (INTEGERP (p->contents[i])) |
| 2111 | { | 2111 | { |
| 2112 | int j = XFASTINT (p->u.contents[i]) & 0xffff; | 2112 | int j = XFASTINT (p->contents[i]) & 0xffff; |
| 2113 | ip6[i] = ntohs (j); | 2113 | ip6[i] = ntohs (j); |
| 2114 | } | 2114 | } |
| 2115 | sa->sa_family = family; | 2115 | sa->sa_family = family; |
| @@ -2140,8 +2140,8 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int | |||
| 2140 | } | 2140 | } |
| 2141 | 2141 | ||
| 2142 | for (i = 0; i < len; i++) | 2142 | for (i = 0; i < len; i++) |
| 2143 | if (INTEGERP (p->u.contents[i])) | 2143 | if (INTEGERP (p->contents[i])) |
| 2144 | *cp++ = XFASTINT (p->u.contents[i]) & 0xff; | 2144 | *cp++ = XFASTINT (p->contents[i]) & 0xff; |
| 2145 | } | 2145 | } |
| 2146 | 2146 | ||
| 2147 | #ifdef DATAGRAM_SOCKETS | 2147 | #ifdef DATAGRAM_SOCKETS |
| @@ -3723,7 +3723,9 @@ network_interface_info (Lisp_Object ifname) | |||
| 3723 | 3723 | ||
| 3724 | any = 1; | 3724 | any = 1; |
| 3725 | for (n = 0; n < 6; n++) | 3725 | for (n = 0; n < 6; n++) |
| 3726 | p->u.contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]); | 3726 | p->contents[n] = make_number (((unsigned char *) |
| 3727 | &rq.ifr_hwaddr.sa_data[0]) | ||
| 3728 | [n]); | ||
| 3727 | elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr); | 3729 | elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr); |
| 3728 | } | 3730 | } |
| 3729 | #elif defined (HAVE_GETIFADDRS) && defined (LLADDR) | 3731 | #elif defined (HAVE_GETIFADDRS) && defined (LLADDR) |
| @@ -3746,7 +3748,7 @@ network_interface_info (Lisp_Object ifname) | |||
| 3746 | 3748 | ||
| 3747 | memcpy (linkaddr, LLADDR (sdl), sdl->sdl_alen); | 3749 | memcpy (linkaddr, LLADDR (sdl), sdl->sdl_alen); |
| 3748 | for (n = 0; n < 6; n++) | 3750 | for (n = 0; n < 6; n++) |
| 3749 | p->u.contents[n] = make_number (linkaddr[n]); | 3751 | p->contents[n] = make_number (linkaddr[n]); |
| 3750 | 3752 | ||
| 3751 | elt = Fcons (make_number (it->ifa_addr->sa_family), hwaddr); | 3753 | elt = Fcons (make_number (it->ifa_addr->sa_family), hwaddr); |
| 3752 | break; | 3754 | break; |
| @@ -4607,7 +4609,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4607 | { | 4609 | { |
| 4608 | struct Lisp_Process *p = | 4610 | struct Lisp_Process *p = |
| 4609 | XPROCESS (chan_process[channel]); | 4611 | XPROCESS (chan_process[channel]); |
| 4610 | if (p && p->gnutls_p && p->infd | 4612 | if (p && p->gnutls_p && p->gnutls_state && p->infd |
| 4611 | && ((emacs_gnutls_record_check_pending | 4613 | && ((emacs_gnutls_record_check_pending |
| 4612 | (p->gnutls_state)) | 4614 | (p->gnutls_state)) |
| 4613 | > 0)) | 4615 | > 0)) |
| @@ -4621,6 +4623,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4621 | { | 4623 | { |
| 4622 | /* Check this specific channel. */ | 4624 | /* Check this specific channel. */ |
| 4623 | if (wait_proc->gnutls_p /* Check for valid process. */ | 4625 | if (wait_proc->gnutls_p /* Check for valid process. */ |
| 4626 | && wait_proc->gnutls_state | ||
| 4624 | /* Do we have pending data? */ | 4627 | /* Do we have pending data? */ |
| 4625 | && ((emacs_gnutls_record_check_pending | 4628 | && ((emacs_gnutls_record_check_pending |
| 4626 | (wait_proc->gnutls_state)) | 4629 | (wait_proc->gnutls_state)) |
| @@ -5002,7 +5005,7 @@ read_process_output (Lisp_Object proc, register int channel) | |||
| 5002 | proc_buffered_char[channel] = -1; | 5005 | proc_buffered_char[channel] = -1; |
| 5003 | } | 5006 | } |
| 5004 | #ifdef HAVE_GNUTLS | 5007 | #ifdef HAVE_GNUTLS |
| 5005 | if (p->gnutls_p) | 5008 | if (p->gnutls_p && p->gnutls_state) |
| 5006 | nbytes = emacs_gnutls_read (p, chars + carryover + buffered, | 5009 | nbytes = emacs_gnutls_read (p, chars + carryover + buffered, |
| 5007 | readmax - buffered); | 5010 | readmax - buffered); |
| 5008 | else | 5011 | else |
| @@ -5243,7 +5246,7 @@ DEFUN ("internal-default-process-filter", Finternal_default_process_filter, | |||
| 5243 | else | 5246 | else |
| 5244 | set_marker_both (p->mark, p->buffer, PT, PT_BYTE); | 5247 | set_marker_both (p->mark, p->buffer, PT, PT_BYTE); |
| 5245 | 5248 | ||
| 5246 | update_mode_lines++; | 5249 | update_mode_lines = 23; |
| 5247 | 5250 | ||
| 5248 | /* Make sure opoint and the old restrictions | 5251 | /* Make sure opoint and the old restrictions |
| 5249 | float ahead of any new text just as point would. */ | 5252 | float ahead of any new text just as point would. */ |
| @@ -5496,7 +5499,7 @@ send_process (Lisp_Object proc, const char *buf, ptrdiff_t len, | |||
| 5496 | #endif | 5499 | #endif |
| 5497 | { | 5500 | { |
| 5498 | #ifdef HAVE_GNUTLS | 5501 | #ifdef HAVE_GNUTLS |
| 5499 | if (p->gnutls_p) | 5502 | if (p->gnutls_p && p->gnutls_state) |
| 5500 | written = emacs_gnutls_write (p, cur_buf, cur_len); | 5503 | written = emacs_gnutls_write (p, cur_buf, cur_len); |
| 5501 | else | 5504 | else |
| 5502 | #endif | 5505 | #endif |
| @@ -6387,7 +6390,7 @@ status_notify (struct Lisp_Process *deleting_process) | |||
| 6387 | } | 6390 | } |
| 6388 | } /* end for */ | 6391 | } /* end for */ |
| 6389 | 6392 | ||
| 6390 | update_mode_lines++; /* In case buffers use %s in mode-line-format. */ | 6393 | update_mode_lines = 24; /* In case buffers use %s in mode-line-format. */ |
| 6391 | UNGCPRO; | 6394 | UNGCPRO; |
| 6392 | } | 6395 | } |
| 6393 | 6396 | ||