aboutsummaryrefslogtreecommitdiff
path: root/initd/print_status.c
blob: 9f0259a02c739c5fd4c7dbe6ec268a3c295e762d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* SPDX-License-Identifier: ISC */
#include "init.h"

void print_status(const svc_run_data_t *rt)
{
	const char *str;
	char pre = '\n';

	switch (rt->state) {
	case STATE_RUNNING:
		if (rt->svc->type == SVC_WAIT) {
			str = "\033[22;33m .. \033[0m";
		} else {
			str = "\033[22;32m UP \033[0m";
		}
		break;
	case STATE_COMPLETED:
		if (rt->svc->type == SVC_WAIT)
			pre = '\r';

		str = "\033[22;32mDONE\033[0m";
		break;
	case STATE_FAILED:
		if (rt->svc->type == SVC_WAIT)
			pre = '\r';

		str = "\033[22;31mFAIL\033[0m";
		break;
	default:
		return;
	}

	printf("%c[%s] %s", pre, str, rt->svc->desc);
	fflush(stdout);
}