ban.lines = NULL;
ban.len = 0;
- idle_alarm_set_enabled(1);
loadbanner(menu->banner_fn, &ban);
while (1) {
if (doclear) {
initcurses ();
term_resize_check();
+ idle_alarm_set_enabled(1);
+
while (1) {
if (runmenuloop(dgl_find_menu(loggedin ? "mainmenu_user" : "mainmenu_anon")))
break;
}
+ idle_alarm_set_enabled(0);
+
/* NOW we can safely kill this */
freefile ();
debug_write("exec-command fork failed");
graceful_exit(114);
} else if (child == 0) {
- signals_block();
execvp(p1, myargv);
- signals_release();
exit(0);
} else
waitpid(child, NULL, 0);
idle_alarm_set_enabled(1);
initcurses();
+ clear();
refresh();
check_retard(1);
}
setproctitle ("%s", me->username);
initcurses ();
+ clear();
+ refresh();
check_retard(1); /* reset retard counter */
}
break;
if (die)
{
- if (wait_for_menu && input_child)
+ if (input_child)
{
// Need to kill the child that's writing input to pty.
kill(input_child, SIGTERM);
while ((pid = wait3(&status, WNOHANG, 0)) > 0);
- wait_for_menu = 0;
}
else
done ();
}
+ wait_for_menu = 0;
}
void
free(ipfile);
ipfile = NULL;
}
+ signal(SIGALRM, SIG_IGN);
}