Mercurial > hg
changeset 4672:272c0a09b203
Handle CTRL+C in serve under Windows.
author | Marcos Chaves <marcos.nospam@gmail.com> |
---|---|
date | Thu, 21 Jun 2007 21:58:18 +0200 |
parents | 7a7d4937272b |
children | d8442fc0da8d |
files | mercurial/commands.py mercurial/util.py mercurial/util_win32.py |
diffstat | 3 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Thu Jun 21 09:25:49 2007 +0200 +++ b/mercurial/commands.py Thu Jun 21 21:58:18 2007 +0200 @@ -2401,6 +2401,7 @@ class service: def init(self): + util.set_signal_handler() try: self.httpd = hgweb.server.create_server(parentui, repo) except socket.error, inst:
--- a/mercurial/util.py Thu Jun 21 09:25:49 2007 +0200 +++ b/mercurial/util.py Thu Jun 21 21:58:18 2007 +0200 @@ -1100,6 +1100,9 @@ return p_name return default + def set_signal_handler(): + pass + def find_exe(name, default=None): '''find path of an executable. if name contains a path component, return it as is. otherwise,
--- a/mercurial/util_win32.py Thu Jun 21 09:25:49 2007 +0200 +++ b/mercurial/util_win32.py Thu Jun 21 21:58:18 2007 +0200 @@ -299,3 +299,12 @@ raise WinIOError(err) getuser_fallback = win32api.GetUserName + +def set_signal_handler(): + """Register a termination handler for console events including + CTRL+C. python signal handlers do not work well with socket + operations. + """ + def handler(event): + win32process.ExitProcess(1) + win32api.SetConsoleCtrlHandler(handler)