diff options
author | Geoff Voelker <voelker@cs.washington.edu> | 1997-09-03 00:37:00 +0000 |
---|---|---|
committer | Geoff Voelker <voelker@cs.washington.edu> | 1997-09-03 00:37:00 +0000 |
commit | 86e2f0a0d3e4894360c957ae528f281b1ef414c9 (patch) | |
tree | 7e82478ea020d25444d6ad925e553d2230bd1faa | |
parent | 23c146c318a75e8beca6eda4cfc42e8d74148945 (diff) | |
download | emacs-86e2f0a0d3e4894360c957ae528f281b1ef414c9.tar.gz |
(sys_subshell) [DOS_NT]: Save and restore parent's
working directory.
(sys_subshell) [WINDOWSNT]: Share MSDOS code. Don't take console.
(init_sys_modes, reset_sys_modes) [WINDOWSNT]: Do it even with
a read_socket_hook.
-rw-r--r-- | src/sysdep.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 30a540c7d01..e8e1db80ec0 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -714,7 +714,7 @@ sys_suspend () sys_subshell () { #ifndef VMS -#ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida */ +#ifdef DOS_NT /* Demacs 1.1.2 91/10/20 Manabu Higashida */ int st; char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */ #endif @@ -752,11 +752,7 @@ sys_subshell () str[len] = 0; xyzzy: -#ifdef WINDOWSNT - pid = -1; -#else /* not WINDOWSNT */ - -#ifdef MSDOS +#ifdef DOS_NT pid = 0; #if __DJGPP__ > 1 save_signal_handlers (saved_handlers); @@ -769,11 +765,10 @@ sys_subshell () #endif if (pid == 0) -#endif /* not WINDOWSNT */ { char *sh = 0; -#ifdef MSDOS /* MW, Aug 1993 */ +#ifdef DOS_NT /* MW, Aug 1993 */ getwd (oldwd); if (sh == 0) sh = (char *) egetenv ("SUSPEND"); /* KFS, 1994-12-14 */ @@ -811,10 +806,9 @@ sys_subshell () #ifdef WINDOWSNT /* Waits for process completion */ pid = _spawnlp (_P_WAIT, sh, sh, NULL); + chdir (oldwd); if (pid == -1) write (1, "Can't execute subshell", 22); - - take_console (); #else /* not WINDOWSNT */ execlp (sh, sh, 0); write (1, "Can't execute subshell", 22); @@ -829,7 +823,7 @@ sys_subshell () synch_process_alive = 1; #endif -#ifndef MSDOS +#ifndef DOS_NT wait_for_termination (pid); #endif restore_signal_handlers (saved_handlers); @@ -1550,7 +1544,13 @@ init_sys_modes () #ifdef HAVE_WINDOW_SYSTEM /* Emacs' window system on MSDOG uses the `internal terminal' and therefore needs the initialization code below. */ - if (! read_socket_hook && EQ (Vwindow_system, Qnil)) + if (EQ (Vwindow_system, Qnil) +#ifndef WINDOWSNT + /* When running in tty mode on NT/Win95, we have a read_socket + hook, but still need the rest of the initialization code below. */ + && (! read_socket_hook) +#endif + ) #endif set_terminal_modes (); @@ -1691,7 +1691,13 @@ reset_sys_modes () #ifdef HAVE_WINDOW_SYSTEM /* Emacs' window system on MSDOG uses the `internal terminal' and therefore needs the clean-up code below. */ - if (read_socket_hook || !EQ (Vwindow_system, Qnil)) + if (!EQ (Vwindow_system, Qnil) +#ifndef WINDOWSNT + /* When running in tty mode on NT/Win95, we have a read_socket + hook, but still need the rest of the clean-up code below. */ + || read_socket_hook +#endif + ) return; #endif cursor_to (FRAME_HEIGHT (selected_frame) - 1, 0); |