diff options
| author | Jason Rumney | 2006-09-03 22:51:22 +0000 |
|---|---|---|
| committer | Jason Rumney | 2006-09-03 22:51:22 +0000 |
| commit | a8c3a596c22764463b674a21eb3b2e869b21e42f (patch) | |
| tree | 8ede80c91272278638c342c0d40501fc9fb71273 /src | |
| parent | 934db4347f98272e04e07c2bb6f01d4e4c31f3ff (diff) | |
| download | emacs-a8c3a596c22764463b674a21eb3b2e869b21e42f.tar.gz emacs-a8c3a596c22764463b674a21eb3b2e869b21e42f.zip | |
(shutdown_handler): New function to exit cleanly on shutdown.
(globals_of_w32): Register it as a signal handler.
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32.c | 24 |
1 files changed, 24 insertions, 0 deletions
| @@ -4113,6 +4113,25 @@ init_ntproc () | |||
| 4113 | } | 4113 | } |
| 4114 | 4114 | ||
| 4115 | /* | 4115 | /* |
| 4116 | shutdown_handler ensures that buffers' autosave files are | ||
| 4117 | up to date when the user logs off, or the system shuts down. | ||
| 4118 | */ | ||
| 4119 | BOOL WINAPI shutdown_handler(DWORD type) | ||
| 4120 | { | ||
| 4121 | /* Ctrl-C and Ctrl-Break are already suppressed, so don't handle them. */ | ||
| 4122 | if (type == CTRL_CLOSE_EVENT /* User closes console window. */ | ||
| 4123 | || type == CTRL_LOGOFF_EVENT /* User logs off. */ | ||
| 4124 | || type == CTRL_SHUTDOWN_EVENT) /* User shutsdown. */ | ||
| 4125 | { | ||
| 4126 | /* Shut down cleanly, making sure autosave files are up to date. */ | ||
| 4127 | shut_down_emacs (0, 0, Qnil); | ||
| 4128 | } | ||
| 4129 | |||
| 4130 | /* Allow other handlers to handle this signal. */ | ||
| 4131 | return FALSE; | ||
| 4132 | } | ||
| 4133 | |||
| 4134 | /* | ||
| 4116 | globals_of_w32 is used to initialize those global variables that | 4135 | globals_of_w32 is used to initialize those global variables that |
| 4117 | must always be initialized on startup even when the global variable | 4136 | must always be initialized on startup even when the global variable |
| 4118 | initialized is non zero (see the function main in emacs.c). | 4137 | initialized is non zero (see the function main in emacs.c). |
| @@ -4124,6 +4143,11 @@ void globals_of_w32 () | |||
| 4124 | g_b_init_get_token_information = 0; | 4143 | g_b_init_get_token_information = 0; |
| 4125 | g_b_init_lookup_account_sid = 0; | 4144 | g_b_init_lookup_account_sid = 0; |
| 4126 | g_b_init_get_sid_identifier_authority = 0; | 4145 | g_b_init_get_sid_identifier_authority = 0; |
| 4146 | /* The following sets a handler for shutdown notifications for | ||
| 4147 | console apps. This actually applies to Emacs in both console and | ||
| 4148 | GUI modes, since we had to fool windows into thinking emacs is a | ||
| 4149 | console application to get console mode to work. */ | ||
| 4150 | SetConsoleCtrlHandler(shutdown_handler, TRUE); | ||
| 4127 | } | 4151 | } |
| 4128 | 4152 | ||
| 4129 | /* end of nt.c */ | 4153 | /* end of nt.c */ |