> >> AFAICS it is appropriate to move the sigsetjmp and > >> setup_cancel_handler calls in front of the per-line loop inside > >> MainLoop --- can anyone see a reason not to? > > > hm. mainloop is re-entrant, right? That means each \i > would reset the > > handler...what is downside to keeping global flag? > > Ah, right, and in fact I'd missed the comment at line 325 > pointing out that we're relying on the sigsetjmp to be > re-executed every time through. That could be improved on, > likely, but not right before a release. > > Does the flag need to be global? I'm thinking > > void > setup_cancel_handler(void) > { > + static bool done = false; > + > + if (!done) > SetConsoleCtrlHandler(consoleHandler, TRUE); > + done = true; > } > Seems like a simple enough solution, don't see why it shouldn't work. As long as psql is single-threaded, which it is... (Actually, that code seems to re-set done=true on every call which seems unnecessary - but that might be optimised away, I guess) //Magnus