mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-09-14 04:23:21 +00:00
Write more redbean unit tests
- Fix DescribeSigset() - Introduce new unix.rmrf() API - Fix redbean sigaction() doc example code - Fix unix.sigaction() w/ more than two args - Improve redbean re module API (non-breaking) - Enhance Lua with Python string multiplication - Make third parameter of unix.socket() default to 0
This commit is contained in:
parent
c5b9902ac9
commit
1c83670229
20 changed files with 738 additions and 204 deletions
|
@ -23,40 +23,41 @@
|
|||
#include "libc/intrin/kprintf.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
const char *(DescribeSigset)(char buf[64], int rc, const sigset_t *ss) {
|
||||
#define N 128
|
||||
|
||||
const char *(DescribeSigset)(char buf[N], int rc, const sigset_t *ss) {
|
||||
bool gotsome;
|
||||
int i, n, sig;
|
||||
int i, sig;
|
||||
sigset_t sigset;
|
||||
|
||||
if (rc == -1) return "n/a";
|
||||
if (!ss) return "NULL";
|
||||
if ((!IsAsan() && kisdangerous(ss)) ||
|
||||
(IsAsan() && !__asan_is_valid(ss, sizeof(*ss)))) {
|
||||
ksnprintf(buf, 64, "%p", ss);
|
||||
ksnprintf(buf, N, "%p", ss);
|
||||
return buf;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
n = 64;
|
||||
sigset = *ss;
|
||||
gotsome = false;
|
||||
if (popcnt(sigset.__bits[0]) + popcnt(sigset.__bits[1]) > 64) {
|
||||
i += ksnprintf(buf + i, n - i, "~");
|
||||
if (popcnt(sigset.__bits[0] & 0xffffffff) > 16) {
|
||||
i += ksnprintf(buf + i, N - i, "~");
|
||||
sigset.__bits[0] = ~sigset.__bits[0];
|
||||
sigset.__bits[1] = ~sigset.__bits[1];
|
||||
}
|
||||
i += ksnprintf(buf + i, n - i, "{");
|
||||
for (sig = 1; sig < 128; ++sig) {
|
||||
i += ksnprintf(buf + i, N - i, "{");
|
||||
for (sig = 1; sig < 32; ++sig) {
|
||||
if (sigismember(&sigset, sig)) {
|
||||
if (gotsome) {
|
||||
sig += ksnprintf(buf + sig, n - sig, ", ");
|
||||
i += ksnprintf(buf + i, N - i, ",");
|
||||
} else {
|
||||
gotsome = true;
|
||||
}
|
||||
sig += ksnprintf(buf + sig, n - sig, "%s", strsignal(sig));
|
||||
i += ksnprintf(buf + i, N - i, "%s", strsignal(sig) + 3);
|
||||
}
|
||||
}
|
||||
i += ksnprintf(buf + i, n - i, "}");
|
||||
i += ksnprintf(buf + i, N - i, "}");
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue