static int manager_jobs_in_progress_mod_timer(Manager *m) {
struct itimerspec its;
+ if (m->jobs_in_progress_watch.type != WATCH_JOBS_IN_PROGRESS)
+ return 0;
+
zero(its);
its.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC;
assert(pos <= width+1); /* 0 or width+1 mean that the center light is behind the corner */
if (pos > 1) {
- if (pos > 2) {
- memset(p, ' ', pos-2);
- p += pos-2;
- }
- memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON));
- p += strlen(ANSI_RED_ON);
+ if (pos > 2)
+ p = mempset(p, ' ', pos-2);
+ p = stpcpy(p, ANSI_RED_ON);
*p++ = '*';
}
if (pos > 0 && pos <= width) {
- memcpy(p, ANSI_HIGHLIGHT_RED_ON, strlen(ANSI_HIGHLIGHT_RED_ON));
- p += strlen(ANSI_HIGHLIGHT_RED_ON);
+ p = stpcpy(p, ANSI_HIGHLIGHT_RED_ON);
*p++ = '*';
}
- memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF));
- p += strlen(ANSI_HIGHLIGHT_OFF);
+ p = stpcpy(p, ANSI_HIGHLIGHT_OFF);
if (pos < width) {
- memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON));
- p += strlen(ANSI_RED_ON);
+ p = stpcpy(p, ANSI_RED_ON);
*p++ = '*';
- if (pos < width-1) {
- memset(p, ' ', width-1-pos);
- p += width-1-pos;
- }
- memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF));
- p += strlen(ANSI_HIGHLIGHT_OFF);
+ if (pos < width-1)
+ p = mempset(p, ' ', width-1-pos);
+ p = stpcpy(p, ANSI_HIGHLIGHT_OFF);
}
- *p = 0;
}
static void manager_print_jobs_in_progress(Manager *m) {
return false;
}
+bool manager_is_reloading_or_reexecuting(Manager *m) {
+ assert(m);
+
+ return m->n_reloading != 0;
+}
+
void manager_reset_failed(Manager *m) {
Unit *u;
Iterator i;
if (m->n_running_jobs == 0)
manager_unwatch_jobs_in_progress(m);
- if (hashmap_size(m->jobs) > 0)
+ if (hashmap_size(m->jobs) > 0) {
+ manager_jobs_in_progress_mod_timer(m);
return;
+ }
/* Notify Type=idle units that we are done now */
close_pipe(m->idle_pipe);