Example #1
0
R_API void r_cons_break_end() {
	I.breaked = R_FALSE;
	r_print_set_interrupted (I.breaked);
#if __UNIX__ || __CYGWIN__
	signal (SIGINT, SIG_IGN);
#endif
}
Example #2
0
static void break_signal(int sig) {
	I.breaked = true;
	r_print_set_interrupted (I.breaked);
	if (I.event_interrupt) {
		I.event_interrupt (I.data);
	}
}
Example #3
0
R_API void r_cons_break_end() {
	I.breaked = false;
	I.timeout = 0;
	r_print_set_interrupted (I.breaked);
#if __UNIX__ || __CYGWIN__
	signal (SIGINT, SIG_IGN);
#endif
	if (!r_stack_is_empty (I.break_stack)) {
		//free all the stack
		r_stack_free (I.break_stack);
		//create another one
		I.break_stack = r_stack_newf (6, break_stack_free);
		I.data = NULL;
		I.event_interrupt = NULL;
	}
}
Example #4
0
R_API void r_cons_break_pop() {
	//restore old state
	if (I.break_stack) {
		RConsBreakStack *b = NULL;
		r_print_set_interrupted (I.breaked);
		b = r_stack_pop (I.break_stack);
		if (b) {
			I.event_interrupt = b->event_interrupt;
			I.data = b->data;
			break_stack_free (b);
		} else {
			//there is not more elements in the stack
#if __UNIX__ || __CYGWIN__
			signal (SIGINT, SIG_IGN);
#endif
			I.breaked = false;
		}
	}
}