Mercurial > hg > xemacs-beta
annotate tests/sigpipe.c @ 1346:01c57eb70ae9
[xemacs-hg @ 2003-03-09 02:27:27 by ben]
To: xemacs-patches@xemacs.org
i.c: Sleep between calls to check for I/O, since these calls are non-blocking.
behavior.el: Allow other keywords for forward compatibility.
cl-macs.el: Rewrite to eliminate byte-compiler warning when `return' is used
without `finally'.
cmdloop.el: Avoid truncated error messages for `end-of-file' and the like.
cmdloop.el: Avoid char-int error after syncing.
files.el: Eliminate byte-compile warnings.
printer.el: Fix line-width calculations.
#### This used to work. Someone's changes (perhaps by
Michael Sperber?) seem to have messed something up.
simple.el: Use new clear-left-side functions to avoid messages ending up on
the same line as other output.
xemacs.mak: Add override for info/ as well when separate source/build dirs.
xemacs.mak: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
Makefile.in.in: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
alloc.c: Don't arbitrarily clear Vconfigure_info_directory since it
messes up separate build/source dirs.
console.c, console.h, device-msw.c, device.c: Add accidentally omitted msprinter console and data descriptions.
print.c, console-msw.c: Add clear-left-side functionality to help keep stdio/stderr
output from separate sources on separate lines. Generalize
the different kinds of debugging output. Add dpa().
profile.c: Add better docs on Unix/Windows differences.
regex.c: Fix problems with rel-alloc compilation caused by previous patch.
emacs.c: Seg fault rather than abort on Cygwin, since gdb doesn't trap
aborts properly.
console-gtk-impl.h, console-gtk.h, console-msw.h, console-x-impl.h, console-x.h, dialog-gtk.c, dialog-x.c, event-msw.c, frame-gtk.c, frame-x.c, frameslots.h, glyphs-gtk.c, glyphs-x.c, gui-gtk.c, gui-x.c, inline.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, scrollbar-gtk.c, scrollbar-x.c, ui-gtk.c: Delete popup-data object. Delete menubar_data field from frames,
since its usage is frame-specific. Delete menubar-msw.h,
gui-x.h, gui-gtk.h. Clean up handling of lwlib callback data
GCPRO'ing and add missing GCPRO recomputation in widget code.
author | ben |
---|---|
date | Sun, 09 Mar 2003 02:27:46 +0000 |
parents | 3f6adebda25c |
children | 679041362cd4 |
rev | line source |
---|---|
1231 | 1 /* code is all from loser.c and loser.el by Mly |
2 | |
3 Copyright (C) 2002 Richard Mlynarik <mly@pobox.com> | |
4 | |
5 This is part of XEmacs | |
6 | |
7 Compile this file. Run it in the background giving it a command line | |
8 argument PORT which is a positive integer 1024 < PORT < 32768 (avoid the | |
9 numbers assigned in /etc/services). | |
10 | |
11 Then start up a fresh (you're going to crash) XEmacs. Execute the following | |
12 | |
13 (defun lose (port) | |
14 (interactive "nUrk: ") | |
15 (require 'comint) | |
16 (while t | |
17 (condition-case e | |
18 (let* ((name "*lose*") | |
19 (b (get-buffer-create name))) | |
20 (switch-to-buffer b) | |
21 (comint-mode) | |
22 (comint-exec b name (cons "127.0.0.1" port) nil '()) | |
23 (process-send-string (get-buffer-process b) "\377\373\001") | |
24 (process-send-string (get-buffer-process b) "\377\373\001")) | |
25 (error (message "URK: %s" e)) (sit-for 1)))) | |
26 | |
27 Then M-x lose RET PORT RET and you lose big (in XEmacs 21.1, anyway). | |
28 Note: the error messages are proper functioning. What should eventually | |
29 happen after a number of SIGPIPEs is that you get a SIGSEGV and life is | |
30 bad and XEmacs is dead. | |
31 */ | |
32 | |
33 #include <arpa/inet.h> | |
34 | |
35 int | |
36 main (int argc, char **argv) | |
37 { | |
38 struct sockaddr_in junk; | |
39 int s; | |
40 | |
41 memset (&junk, 0, sizeof (junk)); | |
42 | |
43 junk.sin_family = AF_INET; | |
44 junk.sin_addr.s_addr = htonl (INADDR_ANY); /* un*x sucks */ | |
45 junk.sin_port = htons (atoi (argv[1])); /* un*x blows */ | |
46 | |
47 s = socket (PF_INET, SOCK_STREAM, 0); | |
48 | |
49 bind (s, (struct sockaddr *)&junk, sizeof (junk)); | |
50 | |
51 listen (s, 1); | |
52 | |
53 for (;;) | |
54 { | |
55 int loser = accept (s, NULL, 0); | |
56 close (loser); | |
57 } | |
58 } | |
59 |