Unify writev
and write
operations in check_reserved_signal_
This commit is contained in:
parent
19486ebd72
commit
ebeecbd575
Notes:
git
2023-07-18 15:07:13 +00:00
28
signal.c
28
signal.c
@ -961,27 +961,27 @@ check_reserved_signal_(const char *name, size_t name_len)
|
|||||||
|
|
||||||
if (prev) {
|
if (prev) {
|
||||||
ssize_t RB_UNUSED_VAR(err);
|
ssize_t RB_UNUSED_VAR(err);
|
||||||
|
static const int stderr_fd = 2;
|
||||||
#define NOZ(name, str) name[sizeof(str)-1] = str
|
#define NOZ(name, str) name[sizeof(str)-1] = str
|
||||||
static const char NOZ(msg1, " received in ");
|
static const char NOZ(msg1, " received in ");
|
||||||
static const char NOZ(msg2, " handler\n");
|
static const char NOZ(msg2, " handler\n");
|
||||||
|
|
||||||
#ifdef HAVE_WRITEV
|
#ifdef HAVE_WRITEV
|
||||||
struct iovec iov[4];
|
struct iovec iov[4];
|
||||||
|
int i = 0;
|
||||||
iov[0].iov_base = (void *)name;
|
# define W(str, len) \
|
||||||
iov[0].iov_len = name_len;
|
iov[i++] = (struct iovec){.iov_base = (void *)(str), .iov_len = (len)}
|
||||||
iov[1].iov_base = (void *)msg1;
|
|
||||||
iov[1].iov_len = sizeof(msg1);
|
|
||||||
iov[2].iov_base = (void *)prev;
|
|
||||||
iov[2].iov_len = strlen(prev);
|
|
||||||
iov[3].iov_base = (void *)msg2;
|
|
||||||
iov[3].iov_len = sizeof(msg2);
|
|
||||||
err = writev(2, iov, 4);
|
|
||||||
#else
|
#else
|
||||||
err = write(2, name, name_len);
|
# define W(str, len) err = write(stderr_fd, (str), (len))
|
||||||
err = write(2, msg1, sizeof(msg1));
|
#endif
|
||||||
err = write(2, prev, strlen(prev));
|
|
||||||
err = write(2, msg2, sizeof(msg2));
|
W(name, name_len);
|
||||||
|
W(msg1, sizeof(msg1));
|
||||||
|
W(prev, strlen(prev));
|
||||||
|
W(msg2, sizeof(msg2));
|
||||||
|
# undef W
|
||||||
|
#ifdef HAVE_WRITEV
|
||||||
|
err = writev(stderr_fd, iov, i);
|
||||||
#endif
|
#endif
|
||||||
ruby_abort();
|
ruby_abort();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user