sl_signal.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* ************************************************************************** */
  2. /* */
  3. /* ::: :::::::: */
  4. /* sl_signal.c :+: :+: :+: */
  5. /* +:+ +:+ +:+ */
  6. /* By: bchanot <bchanot@students.42.fr> +#+ +:+ +#+ */
  7. /* +#+#+#+#+#+ +#+ */
  8. /* Created: 2016/11/02 21:53:38 by bchanot #+# #+# */
  9. /* Updated: 2017/01/11 00:00:47 by bchanot ### ########.fr */
  10. /* */
  11. /* ************************************************************************** */
  12. #include "ft_select.h"
  13. #include <signal.h>
  14. #include <term.h>
  15. static void sl_init_screen(int sig)
  16. {
  17. t_inf *inf;
  18. (void)sig;
  19. inf = sl_set_inf(NULL);
  20. sl_display_screen(inf);
  21. }
  22. static void sl_abort(int sig)
  23. {
  24. t_inf *inf;
  25. (void)sig;
  26. inf = sl_set_inf(NULL);
  27. ft_putstr_fd(tgetstr("cl", NULL), 0);
  28. ft_putstr_fd(tgetstr("te", NULL), 0);
  29. ft_putstr_fd(tgetstr("ve", NULL), 0);
  30. sl_exit(NULL, inf, 1);
  31. }
  32. static void sl_refresh(int sig)
  33. {
  34. t_inf *inf;
  35. (void)sig;
  36. inf = sl_set_inf(NULL);
  37. sl_init_term(inf);
  38. sl_set_signal();
  39. sl_display_screen(inf);
  40. }
  41. void sl_set_signal(void)
  42. {
  43. signal(SIGWINCH, sl_init_screen);
  44. signal(SIGCONT, sl_refresh);
  45. signal(SIGINT, sl_abort);
  46. signal(SIGQUIT, sl_abort);
  47. signal(SIGABRT, sl_abort);
  48. signal(SIGKILL, sl_abort);
  49. signal(SIGTERM, sl_abort);
  50. signal(SIGSTOP, sl_abort);
  51. }