#define _POSIX_C_SOURCE 200809L #include #include #include "test.h" void ipc_masks_modifiers(struct ct *t) { uchar buf[Ipcreqsz]; u32int key, mod; int want; ipcpackreq(buf, 1, Mctrl|Malt|(1<<1)|(1<<4)|(1<<7), 0x1f642); ipcunpackreq(buf, &want, &mod, &key); CT_EQ_INT(t, 1, want); CT_EQ_UINT(t, Mctrl|Malt, mod); CT_EQ_UINT(t, 0x1f642, key); CT_CHECK(t, !ipcreqreset(buf)); ipcpackreset(buf, 1); ipcunpackreq(buf, &want, &mod, &key); CT_EQ_INT(t, 1, want); CT_EQ_UINT(t, 0, mod); CT_EQ_UINT(t, 0, key); CT_CHECK(t, ipcreqreset(buf)); } void ipc_runtime_path(struct ct *t) { char buf[128], fallback[128], *old, *saved; old = getenv("XDG_RUNTIME_DIR"); saved = old == nil ? nil : strdup(old); setenv("XDG_RUNTIME_DIR", "/tmp/strans-runtime-test", 1); CT_EQ_INT(t, 0, ipcpath(buf, sizeof buf)); CT_EQ_STR(t, "/tmp/strans-runtime-test/strans.sock", buf); setenv("XDG_RUNTIME_DIR", "/tmp/strans-runtime-test/", 1); CT_EQ_INT(t, 0, ipcpath(buf, sizeof buf)); CT_EQ_STR(t, "/tmp/strans-runtime-test/strans.sock", buf); setenv("XDG_RUNTIME_DIR", "relative", 1); CT_EQ_INT(t, 0, ipcpath(buf, sizeof buf)); snprint(fallback, sizeof fallback, "/tmp/strans.%d", getuid()); CT_EQ_STR(t, fallback, buf); CT_EQ_INT(t, -1, ipcpath(buf, 4)); CT_EQ_INT(t, -1, ipcpath(nil, sizeof buf)); if(saved != nil){ setenv("XDG_RUNTIME_DIR", saved, 1); free(saved); }else unsetenv("XDG_RUNTIME_DIR"); }