add unsetControlCHook to remove a Ctrl-C hook after it was set (#7267)
* add unsetControlCHook to remove a Ctrl-C hook after it was set Adds the inverse proc to setControlCHook in order to lift a Ctrl-C hook after it has been set. * remove check for noSignalHandler in system/excpt.nim
This commit is contained in:
parent
d998cb58dd
commit
8e600b78ca
3 changed files with 10 additions and 0 deletions
|
|
@ -3458,6 +3458,10 @@ when not defined(JS): #and not defined(nimscript):
|
|||
## allows you to override the behaviour of your application when CTRL+C
|
||||
## is pressed. Only one such hook is supported.
|
||||
|
||||
when not defined(useNimRtl):
|
||||
proc unsetControlCHook*()
|
||||
## reverts a call to setControlCHook
|
||||
|
||||
proc writeStackTrace*() {.tags: [], gcsafe.}
|
||||
## writes the current stack trace to ``stderr``. This is only works
|
||||
## for debug builds. Since it's usually used for debugging, this
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ proc reraiseException() {.compilerRtl.} =
|
|||
|
||||
proc writeStackTrace() = discard
|
||||
|
||||
proc unsetControlCHook() = discard
|
||||
proc setControlCHook(hook: proc () {.noconv.}) = discard
|
||||
|
||||
proc closureIterSetupExc(e: ref Exception) {.compilerproc, inline.} =
|
||||
|
|
|
|||
|
|
@ -536,3 +536,8 @@ proc setControlCHook(hook: proc () {.noconv.}) =
|
|||
# ugly cast, but should work on all architectures:
|
||||
type SignalHandler = proc (sign: cint) {.noconv, benign.}
|
||||
c_signal(SIGINT, cast[SignalHandler](hook))
|
||||
|
||||
when not defined(useNimRtl):
|
||||
proc unsetControlCHook() =
|
||||
# proc to unset a hook set by setControlCHook
|
||||
c_signal(SIGINT, signalHandler)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue