Mercurial > emacs
comparison src/dispnew.c @ 82995:039bd6989d29
Portability fixes (now it compiles & runs fine on Solaris).
lib-src/emacsclient.c: Removed tty proxy kludge. Emacs should just
use the same terminal as emacsclient.
(ec_get_tty, ec_set_tty, master, pty_name, old_tty, tty, old_tty_valid)
(tty_erase_char, quit_char, flow_control, meta_key, _sobuf, init_tty)
(window_change, reset_tty, init_pty, copy_from_to)
(pty_conversation): Removed.
(window_change_signal): Just forward the signal to Emacs, don't do
anything else.
(init_signals): Don't set handlers for SIGHUP & SIGINT.
(strprefix): New function.
(main): Don't touch the terminal, simply tell its name to Emacs.
lisp/server.el (server-frames): Changed name and semantics to server-ttys.
(server-tty-live-p): New function.
(server-sentinel): Delete the whole tty, not just the frame.
(server-handle-delete-frame): Removed.
(server-handle-delete-tty): New function. Close the client connection if
the tty is deleted.
(server-start): Clean up server-ttys, not server-frames. Set up
delete-tty-after-functions.
(server-process-filter): Set up server-ttys, not server-frames.
Updated protocol for sending our pid to emacsclient.
(server-buffer-done): Don't delete the client process directly, delete
the tty instead, and rely on the delete-tty hook to close the
connection. Otherwise the terminal could be left in a bad state.
src/cm.c (cmputc): Don't abort on write errors.
src/indent.c: #include <stdio.h>, for termchar.h.
src/window.c: Ditto.
src/xfaces.c: Ditto.
src/sysdep.c (init_sigio, reset_sigio, request_sigio)[!SIGIO]
(unrequest_sigio)[!SIGIO]: If SIGIO is not supported, don't do
anything. (For Solaris.)
(init_sys_modes): Moved tty_set_terminal_modes call back to here,
disable window system check.
(reset_sys_modes): Reset the terminal even if X is running.
src/term.c (Vdelete_tty_after_functions): New variable.
(syms_of_term): Initialize it.
(Fdelete_tty): Updated docs.
(delete_tty): Run delete-tty-after-functions.
(term_init): Removed tty_set_terminal_modes call.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-35
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 03 Jan 2004 08:31:14 +0000 |
parents | 5de4189e659d |
children | 7900111db01c |
comparison
equal
deleted
inserted
replaced
82994:44ffe551079c | 82995:039bd6989d29 |
---|---|
5923 extern int errno; | 5923 extern int errno; |
5924 #endif | 5924 #endif |
5925 int old_errno = errno; | 5925 int old_errno = errno; |
5926 | 5926 |
5927 struct tty_display_info *tty; | 5927 struct tty_display_info *tty; |
5928 | 5928 |
5929 /* The frame size change obviously applies to a single | 5929 /* The frame size change obviously applies to a single |
5930 termcap-controlled terminal, but we can't decide which. | 5930 termcap-controlled terminal, but we can't decide which. |
5931 Therefore, we resize the frames corresponding to each tty. | 5931 Therefore, we resize the frames corresponding to each tty. |
5932 */ | 5932 */ |
5933 for (tty = tty_list; tty; tty = tty->next) { | 5933 for (tty = tty_list; tty; tty = tty->next) { |
5934 | 5934 |
5935 if (! tty->term_initted) | 5935 if (! tty->term_initted) |
5936 continue; | 5936 continue; |
5937 | 5937 |
5938 get_tty_size (fileno (TTY_INPUT (tty)), &width, &height); | 5938 get_tty_size (fileno (TTY_INPUT (tty)), &width, &height); |
5939 | 5939 |
5940 { | 5940 { |
5941 Lisp_Object tail, frame; | 5941 Lisp_Object tail, frame; |
5942 | 5942 |
5943 FOR_EACH_FRAME (tail, frame) | 5943 FOR_EACH_FRAME (tail, frame) |
5944 { | 5944 if (FRAME_TERMCAP_P (XFRAME (frame)) && FRAME_TTY (XFRAME (frame)) == tty) |
5945 if (FRAME_TERMCAP_P (XFRAME (frame)) && FRAME_TTY (XFRAME (frame)) == tty) | 5945 /* Record the new sizes, but don't reallocate the data |
5946 { | 5946 structures now. Let that be done later outside of the |
5947 /* Record the new sizes, but don't reallocate the data structures | 5947 signal handler. */ |
5948 now. Let that be done later outside of the signal handler. */ | 5948 change_frame_size (XFRAME (frame), height, width, 0, 1, 0); |
5949 change_frame_size (XFRAME (frame), height, width, 0, 1, 0); | |
5950 break; | |
5951 } | |
5952 } | |
5953 } | 5949 } |
5954 } | 5950 } |
5955 | 5951 |
5956 signal (SIGWINCH, window_change_signal); | 5952 signal (SIGWINCH, window_change_signal); |
5957 errno = old_errno; | 5953 errno = old_errno; |