diff options
Diffstat (limited to 'src/rcyn-server.c')
-rw-r--r-- | src/rcyn-server.c | 50 |
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; |