if (write_full(4, str_data(str), str_len(str)) < 0) {
i_error("checkpassword: write_full() failed: %m");
- exit(111);
+ lib_exit(111);
}
authorized = getenv("AUTHORIZED");
if (authorized == NULL) {
if (dup2(fd_out, 3) < 0 || dup2(fd_in, 4) < 0) {
e_error(authdb_event(request),
"dup2() failed: %m");
- exit(111);
+ lib_exit(111);
}
if (!authenticate) {
hash_table_destroy(&hosts);
if (duplicates)
- exit(EX_CONFIG);
+ lib_exit(EX_CONFIG);
else {
host2 = t_strdup(str_c(host));
hostname_format_write(host, &fmt, 0);
printf("No duplicate host hashes in %s .. %s\n",
str_c(host), host2);
- exit(0);
+ lib_exit(0);
}
}
{
/* FIXME: we're not able to do a clean deinit currently without
larger changes. */
- exit(0);
+ lib_exit(0);
timeout_remove(&to_proctitle);
dict_connections_destroy_all();
{
fprintf(stderr, "doveadm %s "DOVEADM_CMD_MAIL_USAGE_PREFIX" %s\n",
cmd->name, cmd->usage_args == NULL ? "" : cmd->usage_args);
- exit(EX_USAGE);
+ lib_exit(EX_USAGE);
}
void doveadm_mail_try_help_name(const char *cmd_name)
for (i = 0; i < count; i++)
printf("%s ", schemes[i]->name);
printf("\n");
- exit(0);
+ lib_exit(0);
}
if (argc != optind)
if (strcmp(plaintext, check) != 0) {
i_error("Passwords don't match!");
if (--lives == 0)
- exit(1);
+ lib_exit(1);
plaintext = NULL;
}
}
doveadm_mail_usage(str);
doveadm_usage_compress_lines(out, str_c(str), prefix);
- exit(EX_USAGE);
+ lib_exit(EX_USAGE);
}
void usage(void)
help_to(const struct doveadm_cmd *cmd, FILE *out)
{
fprintf(out, "doveadm %s %s\n", cmd->name, cmd->short_usage);
- exit(EX_USAGE);
+ lib_exit(EX_USAGE);
}
void help(const struct doveadm_cmd *cmd)
help_to_ver2(const struct doveadm_cmd_ver2 *cmd, FILE *out)
{
fprintf(out, "doveadm %s %s\n", cmd->name, cmd->usage);
- exit(EX_USAGE);
+ lib_exit(EX_USAGE);
}
void help_ver2(const struct doveadm_cmd_ver2 *cmd)
{
fprintf(stderr, "Usage: %s block_size count level\n", prog);
fprintf(stderr, "Runs with 1000 8k blocks using level 6 if nothing given\n");
- exit(1);
+ lib_exit(1);
}
int main(int argc, const char *argv[])
tokenbuf->data, tokenbuf->used, sig,
DCRYPT_PADDING_RSA_PKCS1, &error)) {
i_error("dcrypt signing failed: %s", error);
- exit(1);
+ lib_exit(1);
}
dcrypt_key_unref_private(&key);
tokenbuf->data, tokenbuf->used, sig,
DCRYPT_PADDING_RSA_PKCS1_PSS, &error)) {
i_error("dcrypt signing failed: %s", error);
- exit(1);
+ lib_exit(1);
}
dcrypt_key_unref_private(&key);
if (!dcrypt_keypair_generate(&pair, DCRYPT_KEY_EC, 0,
"prime256v1", &error)) {
i_error("dcrypt keypair generate failed: %s", error);
- exit(1);
+ lib_exit(1);
}
/* export public key */
buffer_t *keybuf = t_buffer_create(256);
if (!dcrypt_key_store_public(pair.pub, DCRYPT_FORMAT_PEM, keybuf,
&error)) {
i_error("dcrypt key store failed: %s", error);
- exit(1);
+ lib_exit(1);
}
oauth2_validation_key_cache_evict(key_cache, "default");
save_key("ES256", str_c(keybuf));
tokenbuf->data, tokenbuf->used, sig,
DCRYPT_PADDING_DEFAULT, &error)) {
i_error("dcrypt signing failed: %s", error);
- exit(1);
+ lib_exit(1);
}
dcrypt_keypair_unref(&pair);
i_free_and_null(test_prefix);
t_pop_last_unsafe(); /* as we were within a T_BEGIN { tests[i].func(); } T_END */
lib_deinit();
- exit(status);
+ lib_exit(status);
}
if (!continue_test) {
lib_deinit();
- exit(ret);
+ lib_exit(ret);
}
test_exit((test_has_failed() ? 1 : 0));
}
recursed = TRUE;
failure_exit_callback(&status);
}
- exit(status);
+ lib_exit(status);
}
static void log_timestamp_add(const struct failure_context *ctx, string_t *str)
/* Manually run the atexit callbacks. lib_deinit() also does this if not
explicitly called. */
void lib_atexit_run(void);
+#define lib_exit(status) exit(status)
void lib_init(void);
bool lib_is_initialized(void);
test_assert(fd > 0);
test_assert(created);
if (test_has_failed())
- exit(1);
+ lib_exit(1);
create_file(".test-temp-file-create-locked-child");
sleep(60);
i_close_fd(&fd);
- exit(0);
+ lib_exit(0);
default:
/* parent */
test_assert(wait_for_file(pid, ".test-temp-file-create-locked-child"));
if (!master_service_parse_option(master_service,
c, optarg)) {
print_help();
- exit(FATAL_DEFAULT);
+ lib_exit(FATAL_DEFAULT);
}
break;
}
io_loop_destroy(&ioloop);
lib_deinit();
- exit(0);
+ lib_exit(0);
}
int main(int argc, char *argv[])
(void)write_full(client->fd, "0\n", 2);
else
(void)write_full(client->fd, "1\n", 2);
- exit(0);
+ lib_exit(0);
}
static void tcpwrap_client_input(struct tcpwrap_client *client)