static int manager_dbdeltree(struct mansession *s, const struct message *m) { const char *family = astman_get_header(m, "Family"); const char *key = astman_get_header(m, "Key"); int num_deleted; if (ast_strlen_zero(family)) { astman_send_error(s, m, "No family specified."); return 0; } if (!ast_strlen_zero(key)) { num_deleted = ast_db_deltree(family, key); } else { num_deleted = ast_db_deltree(family, NULL); } if (num_deleted < 0) { astman_send_error(s, m, "Database unavailable"); } else if (num_deleted == 0) { astman_send_error(s, m, "Database entry not found"); } else { astman_send_ack(s, m, "Key tree deleted successfully"); } return 0; }
static char *handle_cli_database_deltree(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { int num_deleted; switch (cmd) { case CLI_INIT: e->command = "database deltree"; e->usage = "Usage: database deltree <family> [keytree]\n" " OR: database deltree <family>[/keytree]\n" " Deletes a family or specific keytree within a family\n" " in the Asterisk database. The two arguments may be\n" " separated by either a space or a slash.\n"; return NULL; case CLI_GENERATE: return NULL; } if ((a->argc < 3) || (a->argc > 4)) return CLI_SHOWUSAGE; if (a->argc == 4) { num_deleted = ast_db_deltree(a->argv[2], a->argv[3]); } else { num_deleted = ast_db_deltree(a->argv[2], NULL); } if (num_deleted < 0) { ast_cli(a->fd, "Database unavailable.\n"); } else if (num_deleted == 0) { ast_cli(a->fd, "Database entries do not exist.\n"); } else { ast_cli(a->fd, "%d database entries removed.\n",num_deleted); } return CLI_SUCCESS; }
static char *handle_cli_database_deltree(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { int res; switch (cmd) { case CLI_INIT: e->command = "database deltree"; e->usage = "Usage: database deltree <family> [keytree]\n" " Deletes a family or specific keytree within a family\n" " in the Asterisk database.\n"; return NULL; case CLI_GENERATE: return NULL; } if ((a->argc < 3) || (a->argc > 4)) return CLI_SHOWUSAGE; if (a->argc == 4) { res = ast_db_deltree(a->argv[2], a->argv[3]); } else { res = ast_db_deltree(a->argv[2], NULL); } if (res < 0) { ast_cli(a->fd, "Database entries do not exist.\n"); } else { ast_cli(a->fd, "%d database entries removed.\n",res); } return CLI_SUCCESS; }
static int deltree_exec(struct ast_channel *chan, const char *data) { char *argv, *family, *keytree; argv = ast_strdupa(data); if (strchr(argv, '/')) { family = strsep(&argv, "/"); keytree = strsep(&argv, "\0"); if (!family || !keytree) { ast_debug(1, "Ignoring; Syntax error in argument\n"); return 0; } if (ast_strlen_zero(keytree)) keytree = 0; } else { family = argv; keytree = 0; } if (keytree) ast_verb(3, "DBdeltree: family=%s, keytree=%s\n", family, keytree); else ast_verb(3, "DBdeltree: family=%s\n", family); if (ast_db_deltree(family, keytree)) ast_verb(3, "DBdeltree: Error deleting key from database.\n"); return 0; }
static int database_deltree(int fd, int argc, char *argv[]) { int res; if ((argc < 3) || (argc > 4)) return RESULT_SHOWUSAGE; if (argc == 4) { res = ast_db_deltree(argv[2], argv[3]); } else { res = ast_db_deltree(argv[2], NULL); } if (res) { ast_cli(fd, "Database entries do not exist.\n"); } else { ast_cli(fd, "Database entries removed.\n"); } return RESULT_SUCCESS; }
static int deltree_exec(struct ast_channel *chan, void *data) { char *argv, *family, *keytree; struct ast_module_user *u; u = ast_module_user_add(chan); argv = ast_strdupa(data); if (strchr(argv, '/')) { family = strsep(&argv, "/"); keytree = strsep(&argv, "\0"); if (!family || !keytree) { ast_log(LOG_DEBUG, "Ignoring; Syntax error in argument\n"); ast_module_user_remove(u); return 0; } if (ast_strlen_zero(keytree)) keytree = 0; } else { family = argv; keytree = 0; } if (option_verbose > 2) { if (keytree) ast_verbose(VERBOSE_PREFIX_3 "DBdeltree: family=%s, keytree=%s\n", family, keytree); else ast_verbose(VERBOSE_PREFIX_3 "DBdeltree: family=%s\n", family); } if (ast_db_deltree(family, keytree)) { if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "DBdeltree: Error deleting key from database.\n"); } ast_module_user_remove(u); return 0; }
static void deinitialize_sorcery(struct ast_sorcery *sorcery) { ast_db_deltree("test/test", NULL); ast_sorcery_unref(sorcery); }