#include <setjmp.h> | |
#include <stdlib.h> | |
#include <stdio.h> | |
jmp_buf main_loop; | |
void | |
abort_to_main_loop (int status) | |
{ | |
longjmp (main_loop, status); | |
} | |
int | |
main (void) | |
{ | |
while (1) | |
if (setjmp (main_loop)) | |
puts ("Back at main loop...."); | |
else | |
do_command (); | |
} | |
void | |
do_command (void) | |
{ | |
char buffer[128]; | |
if (fgets (buffer, 128, stdin) == NULL) | |
abort_to_main_loop (-1); | |
else | |
exit (EXIT_SUCCESS); | |
} |