Commit Diff
--- amused.c +++ amused.c @@ -50,6 +50,7 @@ const char *argv0; pid_t player_pid; struct event ev_sigint; struct event ev_sigterm; +struct event ev_siginfo; enum amused_process { PROC_MAIN, @@ -80,6 +81,32 @@ main_shutdown(void) log_info("terminating"); exit(0); +} + +static void +main_status(void) +{ + const char *cur; + + switch (play_state) { + case STATE_STOPPED: + log_info("status: stopped"); + break; + case STATE_PLAYING: + log_info("status: playing"); + break; + case STATE_PAUSED: + log_info("status: paused"); + break; + default: + log_info("status: unknown"); + break; + } + + if ((cur = playlist_current()) != NULL) + log_info("playing %s", cur); + else + log_info("not playing anything"); } static void @@ -95,6 +122,9 @@ main_sig_handler(int sig, short event, void *arg) case SIGINT: main_shutdown(); break; + case SIGINFO: + main_status(); + break; default: fatalx("unexpected signal %d", sig); } @@ -222,9 +252,11 @@ amused_main(void) signal_set(&ev_sigint, SIGINT, main_sig_handler, NULL); signal_set(&ev_sigterm, SIGTERM, main_sig_handler, NULL); + signal_set(&ev_siginfo, SIGINFO, main_sig_handler, NULL); signal_add(&ev_sigint, NULL); signal_add(&ev_sigterm, NULL); + signal_add(&ev_siginfo, NULL); signal(SIGHUP, SIG_IGN); signal(SIGCHLD, SIG_IGN);