From ba3bcbb86ea0177349bcd021559347248d6ab10a Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Mon, 30 Nov 2020 13:08:04 +0000 Subject: Stash temporary changes. Does not build; is not intended to. --- src/serverlib/s6rc_db_check_revdeps.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/serverlib/s6rc_db_check_revdeps.c (limited to 'src/serverlib/s6rc_db_check_revdeps.c') diff --git a/src/serverlib/s6rc_db_check_revdeps.c b/src/serverlib/s6rc_db_check_revdeps.c new file mode 100644 index 0000000..0097d06 --- /dev/null +++ b/src/serverlib/s6rc_db_check_revdeps.c @@ -0,0 +1,29 @@ +/* ISC license. */ + +#include +#include +#include + +int s6rc_db_check_revdeps (s6rc_db_t const *db) +{ + size_t n = db->nshort + db->nlong ; + size_t m = bitarray_div8(n) ; + unsigned char matrix[n * m] ; + unsigned int i = n ; + unsigned char const *p = matrix ; + memset(matrix, 0, n * m) ; + while (i--) + { + unsigned int j = db->services[i].ndeps[1] ; + while (j--) bitarray_not(matrix + m * i, db->deps[db->ndeps + db->services[i].deps[1] + j], 1) ; + } + i = n ; + while (i--) + { + unsigned int j = db->services[i].ndeps[0] ; + while (j--) bitarray_not(matrix + m * db->deps[db->services[i].deps[0] + j], i, 1) ; + } + n *= m ; + while (n--) if (*p++) return 1 ; + return 0 ; +} -- cgit v1.3.1