fix(ibus): make the X11 frontend fail truthfully
This commit is contained in:
@@ -30,8 +30,8 @@ void
|
||||
ibus_machine_id_fallback(struct ct *t)
|
||||
{
|
||||
char root[] = "/tmp/strans-machine-id.XXXXXX";
|
||||
char primary[128], fallback[128], got[64];
|
||||
char *path[2];
|
||||
char primary[128], fallback[128], override[128], got[512];
|
||||
char *path[2], *old, *saved;
|
||||
FILE *fp;
|
||||
int madeprimary, madefallback;
|
||||
|
||||
@@ -61,6 +61,24 @@ ibus_machine_id_fallback(struct ct *t)
|
||||
path[1] = fallback;
|
||||
machineidfiles(got, sizeof got, path, nelem(path));
|
||||
CT_EQ_STR(t, "fallback-machine-id", got);
|
||||
|
||||
old = getenv("IBUS_ADDRESS_FILE");
|
||||
saved = old == nil ? nil : strdup(old);
|
||||
if(old == nil || CT_CHECK(t, saved != nil)){
|
||||
if(CT_CHECK(t, snprintf(override, sizeof override, "%s/address", root)
|
||||
< (int)sizeof override) &&
|
||||
CT_CHECK(t, setenv("IBUS_ADDRESS_FILE", override, 1) == 0)){
|
||||
CT_EQ_INT(t, 0, buildaddrpath(got, sizeof got));
|
||||
CT_EQ_STR(t, override, got);
|
||||
CT_CHECK(t, setenv("IBUS_ADDRESS_FILE", "", 1) == 0);
|
||||
CT_EQ_INT(t, -1, buildaddrpath(got, sizeof got));
|
||||
}
|
||||
if(saved != nil){
|
||||
setenv("IBUS_ADDRESS_FILE", saved, 1);
|
||||
free(saved);
|
||||
}else
|
||||
unsetenv("IBUS_ADDRESS_FILE");
|
||||
}
|
||||
cleanup:
|
||||
if(madefallback)
|
||||
CT_CHECK(t, unlink(fallback) == 0);
|
||||
|
||||
Reference in New Issue
Block a user