diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2026-03-18 01:57:01 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2026-03-18 01:57:01 +0000 |
| commit | 24637cd3776cda5fd0a919ba9343ba86d82d3e04 (patch) | |
| tree | dac9d66860d763fedc999ace6e1a5f37d3add229 /src | |
| parent | 4cdcab0506e76666800d2bc111c602bb3154cc30 (diff) | |
| download | s6-24637cd3776cda5fd0a919ba9343ba86d82d3e04.tar.gz | |
More fixes, ftrigr_string addition, doc update
Diffstat (limited to 'src')
| -rw-r--r-- | src/include/s6/ftrigr.h | 13 | ||||
| -rw-r--r-- | src/libs6/deps-lib/s6 | 1 | ||||
| -rw-r--r-- | src/libs6/ftrigr_peek.c | 7 | ||||
| -rw-r--r-- | src/libs6/ftrigr_peek1.c | 14 | ||||
| -rw-r--r-- | src/libs6/ftrigr_wait_and.c | 4 | ||||
| -rw-r--r-- | src/libs6/ftrigr_wait_or.c | 5 | ||||
| -rw-r--r-- | src/pipe-tools/s6-ftrig-listen.c | 4 | ||||
| -rw-r--r-- | src/pipe-tools/s6-ftrig-listen1.c | 6 | ||||
| -rw-r--r-- | src/pipe-tools/s6-ftrig-wait.c | 6 | ||||
| -rw-r--r-- | src/supervision/s6-notifyoncheck.c | 6 | ||||
| -rw-r--r-- | src/supervision/s6_svlisten_loop.c | 13 |
11 files changed, 35 insertions, 44 deletions
diff --git a/src/include/s6/ftrigr.h b/src/include/s6/ftrigr.h index 30a7ca6..2e0f340 100644 --- a/src/include/s6/ftrigr.h +++ b/src/include/s6/ftrigr.h @@ -3,7 +3,6 @@ #ifndef S6_FTRIGR_H #define S6_FTRIGR_H -#include <sys/uio.h> #include <stdint.h> #include <skalibs/tai.h> @@ -21,6 +20,13 @@ struct ftrigr_s } ; #define FTRIGR_ZERO { .client = SASSCLIENT_ZERO, .data = GENALLOC_ZERO } +typedef struct ftrigr_string_s ftrigr_string, *ftrigr_string_ref ; +struct ftrigr_string_s +{ + char *s ; + uint32_t len ; +} ; + extern int ftrigr_startf (ftrigr *, tain const *, tain *) ; #define ftrigr_startf_g(a, deadline) ftrigr_startf(a, (deadline), &STAMP) extern int ftrigr_start (ftrigr *, unsigned int) ; @@ -28,8 +34,7 @@ extern void ftrigr_end (ftrigr *) ; #define ftrigr_fd(a) sassclient_fd(&(a)->client) extern int ftrigr_update (ftrigr *) ; -extern int ftrigr_peek (ftrigr *, uint32_t, struct iovec *) ; -extern int ftrigr_peek1 (ftrigr *, uint32_t, char *) ; +extern int ftrigr_peek (ftrigr *, uint32_t, ftrigr_string *) ; extern int ftrigr_ack (ftrigr *, uint32_t) ; extern void ftrigr_release (ftrigr *, uint32_t) ; @@ -41,7 +46,7 @@ extern int ftrigr_unsubscribe (ftrigr *, uint32_t, tain const *, tain *) ; extern int ftrigr_wait_and (ftrigr *, uint32_t const *, unsigned int, tain const *, tain *) ; #define ftrigr_wait_and_g(a, list, len, deadline) ftrigr_wait_and(a, list, len, (deadline), &STAMP) -extern int ftrigr_wait_or (ftrigr *, uint32_t const *, unsigned int, struct iovec *, tain const *, tain *) ; +extern int ftrigr_wait_or (ftrigr *, uint32_t const *, unsigned int, ftrigr_string *, tain const *, tain *) ; #define ftrigr_wait_or_g(a, list, n, v, deadline) ftrigr_wait_or(a, list, n, v, (deadline), &STAMP) #endif diff --git a/src/libs6/deps-lib/s6 b/src/libs6/deps-lib/s6 index 74a30a7..6590d83 100644 --- a/src/libs6/deps-lib/s6 +++ b/src/libs6/deps-lib/s6 @@ -1,7 +1,6 @@ ftrigr_ack.o ftrigr_end.o ftrigr_peek.o -ftrigr_peek1.o ftrigr_release.o ftrigr_start.o ftrigr_startf.o diff --git a/src/libs6/ftrigr_peek.c b/src/libs6/ftrigr_peek.c index 155fce3..5107bae 100644 --- a/src/libs6/ftrigr_peek.c +++ b/src/libs6/ftrigr_peek.c @@ -1,6 +1,5 @@ /* ISC license. */ -#include <sys/uio.h> #include <errno.h> #include <skalibs/genalloc.h> @@ -8,7 +7,7 @@ #include <s6/ftrigr.h> #include "ftrigr-internal.h" -int ftrigr_peek (ftrigr *a, uint32_t id, struct iovec *v) +int ftrigr_peek (ftrigr *a, uint32_t id, ftrigr_string *fs) { ftrigr_data *p = genalloc_s(ftrigr_data, &a->data) + id ; switch (p->status) @@ -16,8 +15,8 @@ int ftrigr_peek (ftrigr *a, uint32_t id, struct iovec *v) case EAGAIN : return 0 ; case 0 : { - v->iov_base = p->sa.s ; - v->iov_len = p->sa.len ; + fs->s = p->sa.s ; + fs->len = p->sa.len ; return 1 ; } default: break ; diff --git a/src/libs6/ftrigr_peek1.c b/src/libs6/ftrigr_peek1.c deleted file mode 100644 index 81059f7..0000000 --- a/src/libs6/ftrigr_peek1.c +++ /dev/null @@ -1,14 +0,0 @@ -/* ISC license. */ - -#include <sys/uio.h> - -#include <s6/ftrigr.h> - -int ftrigr_peek1 (ftrigr *a, uint32_t id, char *c) -{ - struct iovec v ; - int r = ftrigr_peek(a, id, &v) ; - if (r <= 0) return r ; - *c = ((char *)v.iov_base)[v.iov_len - 1] ; - return 1 ; -} diff --git a/src/libs6/ftrigr_wait_and.c b/src/libs6/ftrigr_wait_and.c index 24e722f..0619b08 100644 --- a/src/libs6/ftrigr_wait_and.c +++ b/src/libs6/ftrigr_wait_and.c @@ -14,8 +14,8 @@ int ftrigr_wait_and (ftrigr *a, uint32_t const *list, unsigned int n, tain const { for (;;) { - struct iovec v ; - int r = ftrigr_peek(a, list[i], &v) ; + ftrigr_string fs ; + int r = ftrigr_peek(a, list[i], &fs) ; if (r == -1) return -1 ; if (r) break ; r = iopause_stamp(&x, 1, deadline, stamp) ; diff --git a/src/libs6/ftrigr_wait_or.c b/src/libs6/ftrigr_wait_or.c index 0ed41b7..799e2e0 100644 --- a/src/libs6/ftrigr_wait_or.c +++ b/src/libs6/ftrigr_wait_or.c @@ -1,13 +1,12 @@ /* ISC license. */ -#include <sys/uio.h> #include <errno.h> #include <skalibs/iopause.h> #include <s6/ftrigr.h> -int ftrigr_wait_or (ftrigr *a, uint32_t const *list, unsigned int n, struct iovec *v, tain const *deadline, tain *stamp) +int ftrigr_wait_or (ftrigr *a, uint32_t const *list, unsigned int n, ftrigr_string *fs, tain const *deadline, tain *stamp) { iopause_fd x = { .fd = ftrigr_fd(a), .events = IOPAUSE_READ } ; for (;;) @@ -15,7 +14,7 @@ int ftrigr_wait_or (ftrigr *a, uint32_t const *list, unsigned int n, struct iove int r ; for (unsigned int i = 0 ; i < n ; i++) { - r = ftrigr_peek(a, list[i], v) ; + r = ftrigr_peek(a, list[i], fs) ; if (r == -1) return -1 ; if (r) return i ; } diff --git a/src/pipe-tools/s6-ftrig-listen.c b/src/pipe-tools/s6-ftrig-listen.c index 5fa3e33..48f5f6b 100644 --- a/src/pipe-tools/s6-ftrig-listen.c +++ b/src/pipe-tools/s6-ftrig-listen.c @@ -107,8 +107,8 @@ int main (int argc, char const **argv) unsigned int i = 0 ; while (i < n) { - struct iovec v ; - r = ftrigr_peek(&a, ids[i], &v) ; + ftrigr_string fs ; + r = ftrigr_peek(&a, ids[i], &fs) ; if (r == -1) strerr_diefu1sys(111, "ftrigr_check") ; else if (!r) i++ ; else if (wgolb & GOLB_OR) n = 0 ; diff --git a/src/pipe-tools/s6-ftrig-listen1.c b/src/pipe-tools/s6-ftrig-listen1.c index 1a08e6d..9ebd5ca 100644 --- a/src/pipe-tools/s6-ftrig-listen1.c +++ b/src/pipe-tools/s6-ftrig-listen1.c @@ -1,5 +1,6 @@ /* ISC license. */ +#include <sys/uio.h> #include <stdint.h> #include <errno.h> #include <signal.h> @@ -51,7 +52,7 @@ int main (int argc, char const *const *argv) ftrigr a = FTRIGR_ZERO ; pid_t pid ; uint32_t id ; - struct iovec v[2] = { [1] = { .iov_base = "\n", .iov_len = 1 } } ; + ftrigr_string fs ; unsigned int golc ; PROG = "s6-ftrig-listen1" ; @@ -84,7 +85,7 @@ int main (int argc, char const *const *argv) for (;;) { - int r = ftrigr_peek(&a, id, &v[0]) ; + int r = ftrigr_peek(&a, id, &fs) ; if (r == -1) strerr_diefu1sys(111, "ftrigr_peek") ; if (r) break ; r = iopause_g(x, 2, &deadline) ; @@ -99,6 +100,7 @@ int main (int argc, char const *const *argv) if (ftrigr_update(&a) == -1) strerr_diefu1sys(111, "ftrigr_update") ; } + struct iovec v[2] = { { .iov_base = fs.s, .iov_len = fs.len }, { .iov_base = "\n", .iov_len = 1 } } ; if (allwritev(1, v, 2) < 2) strerr_diefu1sys(111, "write to stdout") ; _exit(0) ; } diff --git a/src/pipe-tools/s6-ftrig-wait.c b/src/pipe-tools/s6-ftrig-wait.c index 87b573d..e36fa2d 100644 --- a/src/pipe-tools/s6-ftrig-wait.c +++ b/src/pipe-tools/s6-ftrig-wait.c @@ -32,9 +32,9 @@ int main (int argc, char const *const *argv) tain deadline ; tain tto = TAIN_INFINITE_RELATIVE ; ftrigr a = FTRIGR_ZERO ; + ftrigr_string fs ; uint32_t id ; unsigned int golc ; - struct iovec v[2] = { [1] = { .iov_base = "\n", .iov_len = 1 } } ; PROG = "s6-ftrig-wait" ; golc = gol_main(argc, argv, 0, 0, rgola, GOLA_N, 0, wgola) ; @@ -54,8 +54,10 @@ int main (int argc, char const *const *argv) if (!ftrigr_startf_g(&a, &deadline)) strerr_diefu1sys(111, "ftrigr_startf") ; if (!ftrigr_subscribe_g(&a, &id, 0, 0, argv[0], argv[1], &deadline)) strerr_diefu4sys(111, "subscribe to ", argv[0], " with regexp ", argv[1]) ; - if (ftrigr_wait_or_g(&a, &id, 1, &v[0], &deadline) == -1) + if (ftrigr_wait_or_g(&a, &id, 1, &fs, &deadline) == -1) strerr_diefu2sys((errno == ETIMEDOUT) ? 99 : 111, "match regexp on ", argv[1]) ; + + struct iovec v[2] = { { .iov_base = fs.s, .iov_len = fs.len }, { .iov_base = "\n", .iov_len = 1 } } ; if (allwritev(1, v, 2) < siovec_len(v, 2)) strerr_diefu1sys(111, "write to stdout") ; _exit(0) ; } diff --git a/src/supervision/s6-notifyoncheck.c b/src/supervision/s6-notifyoncheck.c index f86b1e0..ba8e91d 100644 --- a/src/supervision/s6-notifyoncheck.c +++ b/src/supervision/s6-notifyoncheck.c @@ -85,13 +85,13 @@ static inline int handle_signals (pid_t pid, int *w) static int handle_event (ftrigr *a, uint32_t id, pid_t pid) { int r ; - struct iovec v ; + ftrigr_string fs ; if (ftrigr_update(a) == -1) strerr_diefu1sys(111, "ftrigr_update") ; - r = ftrigr_peek(a, id, &v) ; + r = ftrigr_peek(a, id, &fs) ; if (r == -1) strerr_diefu1sys(111, "ftrigr_check") ; if (r) { - if (memchr(v.iov_base, 'd', v.iov_len)) + if (memchr(fs.s, 'd', fs.len)) { if (pid) kill(pid, SIGTERM) ; ftrigr_ack(a, id) ; diff --git a/src/supervision/s6_svlisten_loop.c b/src/supervision/s6_svlisten_loop.c index 4a3e4cf..60e77ad 100644 --- a/src/supervision/s6_svlisten_loop.c +++ b/src/supervision/s6_svlisten_loop.c @@ -70,15 +70,14 @@ unsigned int s6_svlisten_loop (s6_svlisten_t *foo, int wantup, int wantready, in if (ftrigr_update(&foo->a) < 0) strerr_diefu1sys(111, "ftrigr_update") ; for (unsigned int i = 0 ; i < foo->n ; i++) { - struct iovec v ; - r = ftrigr_peek(&foo->a, foo->ids[i], &v) ; + ftrigr_string fs ; + r = ftrigr_peek(&foo->a, foo->ids[i], &fs) ; if (r == -1) strerr_diefu1sys(111, "ftrigr_check") ; else if (r) { - char const *s = v.iov_base ; - for (size_t j = 0 ; j < v.iov_len ; j++) + for (uint32_t j = 0 ; j < fs.len ; j++) { - if (s[j] == 'x') + if (fs.s[j] == 'x') { if (bitarray_peek(foo->upstate, i) != wantup || bitarray_peek(foo->readystate, i) != wantready) @@ -86,7 +85,7 @@ unsigned int s6_svlisten_loop (s6_svlisten_t *foo, int wantup, int wantready, in bitarray_poke(foo->upstate, i, wantup) ; bitarray_poke(foo->readystate, i, wantready) ; } - else if (s[j] == 'O') + else if (fs.s[j] == 'O') { if (wantup) { @@ -97,7 +96,7 @@ unsigned int s6_svlisten_loop (s6_svlisten_t *foo, int wantup, int wantready, in } else { - unsigned int d = byte_chr("dDuU", 4, s[j]) ; + unsigned int d = byte_chr("dDuU", 4, fs.s[j]) ; bitarray_poke(foo->upstate, i, d & 2) ; bitarray_poke(foo->readystate, i, d & 1) ; } |
