diff --git a/src/mon.c b/src/mon.c index b641ace..0ed44d1 100644 --- a/src/mon.c +++ b/src/mon.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -48,6 +49,7 @@ typedef struct { int sleepsec; int max_attempts; int attempts; + bool show_status; } monitor_t; /* @@ -444,9 +446,7 @@ on_mon_pidfile(command_t *self) { static void on_status(command_t *self) { monitor_t *monitor = (monitor_t *) self->data; - if (!monitor->pidfile) error("--pidfile required"); - show_status_of(monitor->pidfile); - exit(0); + monitor->show_status = true; } /* @@ -505,6 +505,7 @@ main(int argc, char **argv){ monitor.attempts = 0; monitor.last_restart_at = 0; monitor.clock = 60000; + monitor.show_status = false; command_t program; command_init(&program, "mon", VERSION); @@ -522,6 +523,12 @@ main(int argc, char **argv){ command_option(&program, "-E", "--on-error ", "execute on error", on_error); command_parse(&program, argc, argv); + if (monitor.show_status) { + if (!monitor.pidfile) error("--pidfile required"); + show_status_of(monitor.pidfile); + exit(0); + } + // command required if (!program.argc) error(" required"); const char *cmd = program.argv[0];