From a71c92b33dc69bc6cbc5eae161f82a5bca27a82f Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 25 Mar 2018 12:14:06 +0200 Subject: Unify naming of service to shorthand svc Signed-off-by: David Oberhollenzer --- lib/src/srv_tsort.c | 92 ----------------------------------------------------- 1 file changed, 92 deletions(-) delete mode 100644 lib/src/srv_tsort.c (limited to 'lib/src/srv_tsort.c') diff --git a/lib/src/srv_tsort.c b/lib/src/srv_tsort.c deleted file mode 100644 index d375c4f..0000000 --- a/lib/src/srv_tsort.c +++ /dev/null @@ -1,92 +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 . - */ -#include -#include -#include -#include - -#include "service.h" - -static bool has_dependencies(service_t *list, service_t *svc) -{ - size_t i; - - while (list != NULL) { - for (i = 0; i < svc->num_after; ++i) { - if (!strcmp(svc->after[i], list->name)) - return true; - } - - for (i = 0; i < list->num_before; ++i) { - if (!strcmp(list->before[i], svc->name)) - return true; - } - - list = list->next; - } - - return false; -} - -service_t *srv_tsort(service_t *list) -{ - service_t *nl = NULL, *end = NULL; - service_t *svc, *prev; - - while (list != NULL) { - /* remove first service without dependencies */ - prev = NULL; - svc = list; - - while (svc != NULL) { - if (has_dependencies(list, svc)) { - prev = svc; - svc = svc->next; - } else { - if (prev != NULL) { - prev->next = svc->next; - } else { - list = svc->next; - } - svc->next = NULL; - break; - } - } - - /* cycle! */ - if (svc == NULL) { - if (end == NULL) { - nl = list; - } else { - end->next = list; - } - errno = ELOOP; - break; - } - - /* append to new list */ - if (end == NULL) { - nl = end = svc; - } else { - end->next = svc; - end = svc; - } - } - - return nl; -} -- cgit v1.2.3