diff options
| author | Paul Eggert <eggert@cs.ucla.edu> | 2013-11-03 22:09:03 -0800 |
|---|---|---|
| committer | Paul Eggert <eggert@cs.ucla.edu> | 2013-11-03 22:09:03 -0800 |
| commit | 91f2d272895257f23596075a0cc42e6e5f4e490f (patch) | |
| tree | 5bcf0c44acc54bd56eef8394e50ff7d4cc24d5b3 /src/process.c | |
| parent | 0a749fa0e64fc88bcd1772253774d7e44ecfe8ce (diff) | |
| download | emacs-91f2d272895257f23596075a0cc42e6e5f4e490f.tar.gz | |
Port to stricter C99 platforms.
Especially, C99 prohibits nesting a struct X inside struct Y if
struct X has a flexible array member.
Also, merge from gnulib, incorporating:
2013-11-03 intprops: port to Oracle Studio c99
* lib/intprops.h: Update from gnulib.
* src/alloc.c (struct sdata): New type.
(sdata): Implement in terms of struct sdata.
Remove u member; all uses replaced by next_vector, set_next_vector.
(SDATA_SELECTOR, SDATA_DATA, SDATA_DATA_OFFSET): Adjust to sdata change.
(SDATA_DATA_OFFSET): Now a constant, not a macro.
(struct sblock): Rename first_data member to data, which is now
a flexible array member. All uses changed.
(next_vector, set_next_vector, large_vector_vec): New functions.
(vector_alignment): New constant.
(roundup_size): Make it a multiple of ALIGNOF_STRUCT_LISP_VECTOR, too.
(struct large-vector): Now merely a NEXT member, since the old approach
ran afoul of stricter C99. All uses changed to use
large_vector_vec or large_vector_offset.
(large_vector_offset): New constant.
* src/dispnew.c: Include tparam.h, for tgetent.
Do not include term.h; no longer needed.
* src/gnutls.c (Fgnutls_boot): Don't continue after calling a _Noreturn.
* src/lisp.h (ENUM_BF) [__SUNPRO_C && __STDC__]: Use unsigned int.
(struct Lisp_Vector): Use a flexible array member for contents,
instead of a union with a member that is an array of size 1.
All uses changed.
(ALIGNOF_STRUCT_LISP_VECTOR): New constant, to make up for the
fact that the struct no longer contains a union.
(struct Lisp_Misc_Any, struct Lisp_Marker, struct Lisp_Overlay)
(struct Lisp_Save_Value, struct Lisp_Free):
Use unsigned, not int, for spacers, to avoid c99 warning.
(union specbinding): Use unsigned, not bool, for bitfield, as
bool is not portable to pre-C99 hosts.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/process.c b/src/process.c index 91bc090e76e..f6aa576e8b7 100644 --- a/src/process.c +++ b/src/process.c @@ -1333,15 +1333,15 @@ Returns nil if format of ADDRESS is invalid. */) for (i = 0; i < nargs; i++) { - if (! RANGED_INTEGERP (0, p->u.contents[i], 65535)) + if (! RANGED_INTEGERP (0, p->contents[i], 65535)) return Qnil; if (nargs <= 5 /* IPv4 */ && i < 4 /* host, not port */ - && XINT (p->u.contents[i]) > 255) + && XINT (p->contents[i]) > 255) return Qnil; - args[i+1] = p->u.contents[i]; + args[i+1] = p->contents[i]; } return Fformat (nargs+1, args); @@ -1983,7 +1983,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) len = sizeof (sin->sin_addr) + 1; address = Fmake_vector (make_number (len), Qnil); p = XVECTOR (address); - p->u.contents[--len] = make_number (ntohs (sin->sin_port)); + p->contents[--len] = make_number (ntohs (sin->sin_port)); cp = (unsigned char *) &sin->sin_addr; break; } @@ -1995,9 +1995,9 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) len = sizeof (sin6->sin6_addr)/2 + 1; address = Fmake_vector (make_number (len), Qnil); p = XVECTOR (address); - p->u.contents[--len] = make_number (ntohs (sin6->sin6_port)); + p->contents[--len] = make_number (ntohs (sin6->sin6_port)); for (i = 0; i < len; i++) - p->u.contents[i] = make_number (ntohs (ip6[i])); + p->contents[i] = make_number (ntohs (ip6[i])); return address; } #endif @@ -2022,7 +2022,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) i = 0; while (i < len) - p->u.contents[i++] = make_number (*cp++); + p->contents[i++] = make_number (*cp++); return address; } @@ -2093,7 +2093,7 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int { struct sockaddr_in *sin = (struct sockaddr_in *) sa; len = sizeof (sin->sin_addr) + 1; - hostport = XINT (p->u.contents[--len]); + hostport = XINT (p->contents[--len]); sin->sin_port = htons (hostport); cp = (unsigned char *)&sin->sin_addr; sa->sa_family = family; @@ -2104,12 +2104,12 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr; len = sizeof (sin6->sin6_addr) + 1; - hostport = XINT (p->u.contents[--len]); + hostport = XINT (p->contents[--len]); sin6->sin6_port = htons (hostport); for (i = 0; i < len; i++) - if (INTEGERP (p->u.contents[i])) + if (INTEGERP (p->contents[i])) { - int j = XFASTINT (p->u.contents[i]) & 0xffff; + int j = XFASTINT (p->contents[i]) & 0xffff; ip6[i] = ntohs (j); } sa->sa_family = family; @@ -2140,8 +2140,8 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int } for (i = 0; i < len; i++) - if (INTEGERP (p->u.contents[i])) - *cp++ = XFASTINT (p->u.contents[i]) & 0xff; + if (INTEGERP (p->contents[i])) + *cp++ = XFASTINT (p->contents[i]) & 0xff; } #ifdef DATAGRAM_SOCKETS @@ -3723,7 +3723,9 @@ network_interface_info (Lisp_Object ifname) any = 1; for (n = 0; n < 6; n++) - p->u.contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]); + p->contents[n] = make_number (((unsigned char *) + &rq.ifr_hwaddr.sa_data[0]) + [n]); elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr); } #elif defined (HAVE_GETIFADDRS) && defined (LLADDR) @@ -3746,7 +3748,7 @@ network_interface_info (Lisp_Object ifname) memcpy (linkaddr, LLADDR (sdl), sdl->sdl_alen); for (n = 0; n < 6; n++) - p->u.contents[n] = make_number (linkaddr[n]); + p->contents[n] = make_number (linkaddr[n]); elt = Fcons (make_number (it->ifa_addr->sa_family), hwaddr); break; |
