Mercurial > emacs
diff src/sysdep.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 | 2ecd1f669db9 |
| children | 7900111db01c |
line wrap: on
line diff
--- a/src/sysdep.c Fri Jan 02 13:03:12 2004 +0000 +++ b/src/sysdep.c Sat Jan 03 08:31:14 2004 +0000 @@ -913,6 +913,29 @@ } } +#ifndef SIGIO +/* If SIGIO is broken, don't do anything. */ +void +init_sigio (int fd) +{ +} + +void +reset_sigio (int fd) +{ +} + +void +request_sigio (void) +{ +} + +void +unrequest_sigio (void) +{ +} + +#else #ifdef F_SETFL int old_fcntl_flags[MAXDESC]; @@ -932,10 +955,13 @@ reset_sigio (fd) int fd; { +#ifdef FASYNC fcntl (fd, F_SETFL, old_fcntl_flags[fd]); +#endif } #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */ +/* XXX Uhm, this FASYNC is not used anymore here. */ void request_sigio () @@ -1053,6 +1079,7 @@ #endif /* STRIDE */ #endif /* FASYNC */ #endif /* F_SETFL */ +#endif /* SIGIO */ /* Saving and restoring the process group of Emacs's terminal. */ @@ -1368,6 +1395,7 @@ #ifdef HAVE_WINDOW_SYSTEM /* Emacs' window system on MSDOG uses the `internal terminal' and therefore needs the initialization code below. */ + /* XXX This need to be revised for X+tty session support. */ if (tty_out->input != stdin || (!read_socket_hook && EQ (Vwindow_system, Qnil))) #endif { @@ -1641,6 +1669,8 @@ #else setbuf (TTY_OUTPUT (tty_out), (char *) _sobuf); #endif + +#if 0 /* We always need this with multi-tty support. */ #ifdef HAVE_WINDOW_SYSTEM /* Emacs' window system on MSDOG uses the `internal terminal' and therefore needs the initialization code below. */ @@ -1652,6 +1682,8 @@ #endif ) #endif +#endif + tty_set_terminal_modes (tty_out); if (!tty_out->term_initted) { @@ -1750,7 +1782,6 @@ *widthp = 0; *heightp = 0; #endif - #endif /* not VMS */ #endif /* not SunOS-style */ #endif /* not BSD-style */ @@ -1815,6 +1846,7 @@ } if (!tty_out->term_initted) return; +#if 0 /* We always need to do this with multi-tty support. */ #ifdef HAVE_WINDOW_SYSTEM /* Emacs' window system on MSDOG uses the `internal terminal' and therefore needs the clean-up code below. */ @@ -1828,7 +1860,8 @@ )) return; #endif - +#endif + cmgoto (tty_out, FrameRows (tty_out) - 1, 0); tty_clear_end_of_line (tty_out, FrameCols (tty_out)); cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
