113 console->waiting = true; |
113 console->waiting = true; |
114 |
114 |
115 break; |
115 break; |
116 } |
116 } |
117 } |
117 } |
118 |
|
119 static void on_sigint (int sig) |
118 static void on_sigint (int sig) |
120 { |
119 { |
121 struct console *console = &_console; |
120 struct console *console = &_console; |
122 |
121 |
123 (void) sig; |
122 (void) sig; |
124 |
123 |
125 // interrupt the input line |
124 if (console->waiting) { |
126 // XXX: is this the right function to call? |
125 // notify user |
127 rl_free_line_state(); |
126 if (console->callbacks->on_interrupt) |
128 |
127 console->callbacks->on_interrupt(console->cb_arg); |
129 // redisplay on new line |
128 |
130 rl_crlf(); |
129 } else { |
131 rl_callback_handler_install(console->config.prompt, console_line); |
130 // interrupt the input line |
|
131 // XXX: is this the right function to call? |
|
132 rl_free_line_state(); |
|
133 |
|
134 // redisplay on new line |
|
135 rl_crlf(); |
|
136 rl_callback_handler_install(console->config.prompt, console_line); |
|
137 } |
132 } |
138 } |
133 |
139 |
134 err_t console_init (struct console **console_ptr, struct event_base *ev_base, const struct console_config *config, |
140 err_t console_init (struct console **console_ptr, struct event_base *ev_base, const struct console_config *config, |
135 const struct console_callbacks *callbacks, void *cb_arg, struct error_info *err) |
141 const struct console_callbacks *callbacks, void *cb_arg, struct error_info *err) |
136 { |
142 { |