diff options
Diffstat (limited to 'initd/svclist.c')
-rw-r--r-- | initd/svclist.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/initd/svclist.c b/initd/svclist.c deleted file mode 100644 index 4ed897f..0000000 --- a/initd/svclist.c +++ /dev/null @@ -1,60 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * Copyright (C) 2018 - David Oberhollenzer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - */ -#include "init.h" - -static service_t *running = NULL; /* currently supervised services */ -static int singleshot = 0; /* active singleshot services */ - -bool svclist_have_singleshot(void) -{ - return singleshot > 0; -} - -void svclist_add(service_t *svc) -{ - svc->next = running; - running = svc; - - if (svc->type == SVC_ONCE) - singleshot += 1; -} - -service_t *svclist_remove(pid_t pid) -{ - service_t *prev = NULL, *svc = running; - - while (svc != NULL) { - if (svc->pid == pid) { - if (prev != NULL) { - prev->next = svc->next; - } else { - running = svc->next; - } - svc->next = NULL; - - if (svc->type == SVC_ONCE) - singleshot -= 1; - break; - } - - prev = svc; - svc = svc->next; - } - - return svc; -} |