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;