/* authd/authd.c - main code for authd
- * Copyright (c) 2016 William Pitcock <nenolod@dereferenced.org>
+ * Copyright (c) 2016 Ariadne Conill <ariadne@dereferenced.org>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
#define MAXPARA 10
+static void error_cb(rb_helper *helper) __attribute__((noreturn));
static void handle_reload(int parc, char *parv[]);
static void handle_stat(int parc, char *parv[]);
static void handle_options(int parc, char *parv[]);
handle_stat(int parc, char *parv[])
{
authd_stat_handler handler;
- long lrid;
+ unsigned long long rid;
if(parc < 3)
{
return;
}
- if((lrid = strtol(parv[1], NULL, 16)) > UINT32_MAX)
+ if((rid = strtoull(parv[1], NULL, 16)) > UINT32_MAX)
{
- warn_opers(L_CRIT, "BUG: handle_stat got a rid that was too large: %lx", lrid);
+ warn_opers(L_CRIT, "BUG: handle_stat got a rid that was too large: %s", parv[1]);
return;
}
if (!(handler = authd_stat_handlers[(unsigned char)parv[2][0]]))
return;
- handler((uint32_t)lrid, parv[2][0]);
+ handler((uint32_t)rid, parv[2][0]);
}
static void
{
struct auth_opts_handler *handler;
- if(parc < 3)
+ if(parc < 2)
{
- warn_opers(L_CRIT, "BUG: handle_options received too few parameters (at least 3 expected, got %d)", parc);
+ warn_opers(L_CRIT, "BUG: handle_options received too few parameters (at least 2 expected, got %d)", parc);
return;
}
exit(EX_ERROR);
}
-#ifndef _WIN32
static void
dummy_handler(int sig)
{
return;
}
-#endif
static void
setup_signals(void)
{
-#ifndef _WIN32
struct sigaction act;
act.sa_flags = 0;
act.sa_handler = dummy_handler;
sigaction(SIGALRM, &act, 0);
-#endif
-}
-
-static void
-do_exit(void)
-{
- destroy_providers();
}
int
rb_set_time();
setup_signals();
- authd_option_handlers = rb_dictionary_create("authd options handlers", strcasecmp);
+ authd_option_handlers = rb_dictionary_create("authd options handlers", rb_strcasecmp);
init_resolver();
init_providers();
rb_init_prng(NULL, RB_PRNG_DEFAULT);
- atexit(do_exit);
-
rb_helper_loop(authd_helper, 0);
+ /*
+ * XXX this function will never be called from here -- is it necessary?
+ */
+ destroy_providers();
+
return 0;
}