54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
#define _POSIX_C_SOURCE 200809L
|
|
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#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");
|
|
}
|