diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2021-07-21 13:16:39 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2021-07-21 13:16:39 +0000 |
| commit | 53d7f0de3feeb8ad93bb8c319c3f0f314c7d31cf (patch) | |
| tree | ba85733fc50c6f1ee56261cbd33328e4c78af435 /src/libs6rc/s6rc_service_recheck_instance.c | |
| parent | 89a440efc603e6d6c7fa85b01a5a904baff5cd26 (diff) | |
| download | s6-rc-53d7f0de3feeb8ad93bb8c319c3f0f314c7d31cf.tar.gz | |
New id/typenum mapping, monitor filter, cdb in db_load, etc.
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libs6rc/s6rc_service_recheck_instance.c')
| -rw-r--r-- | src/libs6rc/s6rc_service_recheck_instance.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libs6rc/s6rc_service_recheck_instance.c b/src/libs6rc/s6rc_service_recheck_instance.c new file mode 100644 index 0000000..b91ea2e --- /dev/null +++ b/src/libs6rc/s6rc_service_recheck_instance.c @@ -0,0 +1,31 @@ +/* ISC license. */ + +#include <string.h> + +#include <skalibs/uint32.h> +#include <skalibs/cdb.h> + +#include <s6-rc/db.h> + +int s6rc_service_recheck_instance (s6rc_db_t const *db, cdb_t *c, uint32_t *id, char const **param) +{ + uint8_t type ; + uint32_t num ; + s6rc_service_typenum(db->n, *id) ; + if (type < S6RC_STYPE_N) return 0 ; + else + { + s6rc_common_t *common = s6rc_service_common(db->n, type, num) ; + size_t namelen = strlen(db->storage + common->name) ; + size_t paramlen = strlen(*param) ; + int r ; + char tmp[namelen + paramlen] ; + memcpy(tmp, db->storage + common->name, namelen) ; + memcpy(tmp + namelen, *param, paramlen) ; + r = cdb_find(c, tmp, namelen + paramlen) ; + if (r <= 0) return r ; + } + uint32_unpack_big(cdb_datapos(c), id) ; + *param = 0 ; + return 1 ; +} |
