aboutsummaryrefslogtreecommitdiffstats
path: root/src/rcyn-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rcyn-server.c')
-rw-r--r--src/rcyn-server.c50
1 files changed, 38 insertions, 12 deletions
diff --git a/src/rcyn-server.c b/src/rcyn-server.c
index b062c89..c6a0ef9 100644
--- a/src/rcyn-server.c
+++ b/src/rcyn-server.c
@@ -274,26 +274,52 @@ exp2txt(
/** callback of checking */
static
void
-checkcb(
+testcheckcb(
void *closure,
- const data_value_t *value
+ const data_value_t *value,
+ bool ischeck
) {
client_t *cli = closure;
char text[30];
- const char *etxt;
-
- if (!value)
- putx(cli, DEFAULT, "0", NULL);
- else {
- etxt = exp2txt(value->expire, text, sizeof text);
- if (strcmp(value->value, ALLOW) && strcmp(value->value, DENY))
- putx(cli, _done_, value->value, etxt, NULL);
+ const char *etxt, *vtxt;
+
+ if (!value) {
+ vtxt = _no_;
+ etxt = 0;
+ } else {
+ if (!strcmp(value->value, ALLOW))
+ vtxt = _yes_;
+ else if (!strcmp(value->value, DENY) || ischeck)
+ vtxt = _no_;
else
- putx(cli, value->value, etxt, NULL);
+ vtxt = _done_;
+ etxt = exp2txt(value->expire, text, sizeof text);
}
+ putx(cli, vtxt, etxt, NULL);
flushw(cli);
}
+/** callback of checking */
+static
+void
+checkcb(
+ void *closure,
+ const data_value_t *value
+) {
+ testcheckcb(closure, value, true);
+}
+
+/** callback of testing */
+static
+void
+testcb(
+ void *closure,
+ const data_value_t *value
+) {
+ testcheckcb(closure, value, false);
+}
+
+
/** callback of getting list of entries */
static
void
@@ -455,7 +481,7 @@ onrequest(
key.session = args[2];
key.user = args[3];
key.permission = args[4];
- cyn_test_async(checkcb, cli, &key);
+ cyn_test_async(testcb, cli, &key);
return;
}
break;