Mercurial > emacs
comparison src/process.c @ 83510:2d2f6f096f6e
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-216
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-217
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-218
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-219
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-220
Improve tq.el.
* emacs@sv.gnu.org/emacs--devo--0--patch-221
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-222
Update from CVS: src/puresize.h (PURESIZE_RATIO): Reduce to 10/6.
* emacs@sv.gnu.org/emacs--devo--0--patch-223
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-224
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-225
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-226
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-227
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-228
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-229
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-230
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-231
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-232
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-233
Update from CVS: lisp/progmodes/python.el (python-mode): Fix typo.
* emacs@sv.gnu.org/gnus--rel--5.10--patch-84
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-85
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-86
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-550
| author | Karoly Lorentey <lorentey@elte.hu> |
|---|---|
| date | Wed, 19 Apr 2006 16:23:46 +0000 |
| parents | 81f2d90dee68 9fb9e33ecf2d |
| children | 1321f6cfb389 |
comparison
equal
deleted
inserted
replaced
| 83509:24cf4bf418dc | 83510:2d2f6f096f6e |
|---|---|
| 2320 } | 2320 } |
| 2321 return 0; | 2321 return 0; |
| 2322 } | 2322 } |
| 2323 | 2323 |
| 2324 /* Convert an address object (vector or string) to an internal sockaddr. | 2324 /* Convert an address object (vector or string) to an internal sockaddr. |
| 2325 Format of address has already been validated by size_lisp_to_sockaddr. */ | 2325 |
| 2326 The address format has been basically validated by | |
| 2327 get_lisp_to_sockaddr_size, but this does not mean FAMILY is valid; | |
| 2328 it could have come from user data. So if FAMILY is not valid, | |
| 2329 we return after zeroing *SA. */ | |
| 2326 | 2330 |
| 2327 static void | 2331 static void |
| 2328 conv_lisp_to_sockaddr (family, address, sa, len) | 2332 conv_lisp_to_sockaddr (family, address, sa, len) |
| 2329 int family; | 2333 int family; |
| 2330 Lisp_Object address; | 2334 Lisp_Object address; |
| 2334 register struct Lisp_Vector *p; | 2338 register struct Lisp_Vector *p; |
| 2335 register unsigned char *cp = NULL; | 2339 register unsigned char *cp = NULL; |
| 2336 register int i; | 2340 register int i; |
| 2337 | 2341 |
| 2338 bzero (sa, len); | 2342 bzero (sa, len); |
| 2339 sa->sa_family = family; | |
| 2340 | 2343 |
| 2341 if (VECTORP (address)) | 2344 if (VECTORP (address)) |
| 2342 { | 2345 { |
| 2343 p = XVECTOR (address); | 2346 p = XVECTOR (address); |
| 2344 if (family == AF_INET) | 2347 if (family == AF_INET) |
| 2346 struct sockaddr_in *sin = (struct sockaddr_in *) sa; | 2349 struct sockaddr_in *sin = (struct sockaddr_in *) sa; |
| 2347 len = sizeof (sin->sin_addr) + 1; | 2350 len = sizeof (sin->sin_addr) + 1; |
| 2348 i = XINT (p->contents[--len]); | 2351 i = XINT (p->contents[--len]); |
| 2349 sin->sin_port = htons (i); | 2352 sin->sin_port = htons (i); |
| 2350 cp = (unsigned char *)&sin->sin_addr; | 2353 cp = (unsigned char *)&sin->sin_addr; |
| 2354 sa->sa_family = family; | |
| 2351 } | 2355 } |
| 2352 #ifdef AF_INET6 | 2356 #ifdef AF_INET6 |
| 2353 else if (family == AF_INET6) | 2357 else if (family == AF_INET6) |
| 2354 { | 2358 { |
| 2355 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; | 2359 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; |
| 2361 if (INTEGERP (p->contents[i])) | 2365 if (INTEGERP (p->contents[i])) |
| 2362 { | 2366 { |
| 2363 int j = XFASTINT (p->contents[i]) & 0xffff; | 2367 int j = XFASTINT (p->contents[i]) & 0xffff; |
| 2364 ip6[i] = ntohs (j); | 2368 ip6[i] = ntohs (j); |
| 2365 } | 2369 } |
| 2366 return; | 2370 sa->sa_family = family; |
| 2367 } | 2371 } |
| 2368 #endif | 2372 #endif |
| 2373 return; | |
| 2369 } | 2374 } |
| 2370 else if (STRINGP (address)) | 2375 else if (STRINGP (address)) |
| 2371 { | 2376 { |
| 2372 #ifdef HAVE_LOCAL_SOCKETS | 2377 #ifdef HAVE_LOCAL_SOCKETS |
| 2373 if (family == AF_LOCAL) | 2378 if (family == AF_LOCAL) |
| 2374 { | 2379 { |
| 2375 struct sockaddr_un *sockun = (struct sockaddr_un *) sa; | 2380 struct sockaddr_un *sockun = (struct sockaddr_un *) sa; |
| 2376 cp = SDATA (address); | 2381 cp = SDATA (address); |
| 2377 for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) | 2382 for (i = 0; i < sizeof (sockun->sun_path) && *cp; i++) |
| 2378 sockun->sun_path[i] = *cp++; | 2383 sockun->sun_path[i] = *cp++; |
| 2384 sa->sa_family = family; | |
| 2379 } | 2385 } |
| 2380 #endif | 2386 #endif |
| 2381 return; | 2387 return; |
| 2382 } | 2388 } |
| 2383 else | 2389 else |
| 6234 emacs_close (XINT (XPROCESS (proc)->outfd)); | 6240 emacs_close (XINT (XPROCESS (proc)->outfd)); |
| 6235 #else /* not HAVE_SHUTDOWN */ | 6241 #else /* not HAVE_SHUTDOWN */ |
| 6236 emacs_close (XINT (XPROCESS (proc)->outfd)); | 6242 emacs_close (XINT (XPROCESS (proc)->outfd)); |
| 6237 #endif /* not HAVE_SHUTDOWN */ | 6243 #endif /* not HAVE_SHUTDOWN */ |
| 6238 new_outfd = emacs_open (NULL_DEVICE, O_WRONLY, 0); | 6244 new_outfd = emacs_open (NULL_DEVICE, O_WRONLY, 0); |
| 6245 if (new_outfd < 0) | |
| 6246 abort (); | |
| 6239 old_outfd = XINT (XPROCESS (proc)->outfd); | 6247 old_outfd = XINT (XPROCESS (proc)->outfd); |
| 6240 | 6248 |
| 6241 if (!proc_encode_coding_system[new_outfd]) | 6249 if (!proc_encode_coding_system[new_outfd]) |
| 6242 proc_encode_coding_system[new_outfd] | 6250 proc_encode_coding_system[new_outfd] |
| 6243 = (struct coding_system *) xmalloc (sizeof (struct coding_system)); | 6251 = (struct coding_system *) xmalloc (sizeof (struct coding_system)); |
