From 41dec6436242c4daccdd9fdee3ac052004c439bd Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Mon, 16 Mar 2026 21:09:38 +0000 Subject: Refactor ftrig using sass; clean up API a bit, update its users --- src/libs6/ftrigr_updateb.c | 68 ---------------------------------------------- 1 file changed, 68 deletions(-) delete mode 100644 src/libs6/ftrigr_updateb.c (limited to 'src/libs6/ftrigr_updateb.c') diff --git a/src/libs6/ftrigr_updateb.c b/src/libs6/ftrigr_updateb.c deleted file mode 100644 index 2a47e49..0000000 --- a/src/libs6/ftrigr_updateb.c +++ /dev/null @@ -1,68 +0,0 @@ -/* ISC license. */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -static inline int appears (uint16_t, uint16_t const *, size_t) gccattr_pure ; - -static inline int appears (uint16_t id, uint16_t const *list, size_t len) -{ - while (len) if (id == list[--len]) return 1 ; - return 0 ; -} - -static int msghandler (struct iovec const *v, void *context) -{ - ftrigr_t *a = (ftrigr_t *)context ; - ftrigr1_t *p ; - int addit = 1 ; - char const *s = v->iov_base ; - uint16_t id ; - if (v->iov_len != 4) return (errno = EPROTO, 0) ; - uint16_unpack_big(s, &id) ; - p = GENSETDYN_P(ftrigr1_t, &a->data, id) ; - if (!p) return 1 ; - if (p->state != FR1STATE_LISTENING) return (errno = EINVAL, 0) ; - if (!genalloc_readyplus(uint16_t, &a->list, 1)) return 0 ; - switch (s[2]) - { - case 'd' : - if (!stralloc_catb(&p->what, s + 3, 1)) return 0 ; - p->state = FR1STATE_WAITACK ; - break ; - case '!' : - if (!stralloc_catb(&p->what, s + 3, 1)) return 0 ; - if (p->options & FTRIGR_REPEAT) - { - if (p->what.len > 1 - && appears(id+1, genalloc_s(uint16_t, &a->list), genalloc_len(uint16_t, &a->list))) - addit = 0 ; - } - else p->state = FR1STATE_WAITACKDATA ; - break ; - default : return (errno = EPROTO, 0) ; - } - if (addit) - { - id++ ; genalloc_append(uint16_t, &a->list, &id) ; - } - return 1 ; -} - -int ftrigr_updateb (ftrigr_t *a) -{ - size_t curlen = genalloc_len(uint16_t, &a->list) ; - int r = textclient_update(&a->connection, &msghandler, a) ; - return r < 0 ? r : (int)(genalloc_len(uint16_t, &a->list) - curlen) ; -} -- cgit v1.3.1