summaryrefslogtreecommitdiff
path: root/main/db.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2007-01-25 22:49:24 +0000
committerJoshua Colp <jcolp@digium.com>2007-01-25 22:49:24 +0000
commite6f894b27aac5b48a5a0a1f83d4744781948ec92 (patch)
treedfd200211290a1a0097b0293a9b107f028f6fd28 /main/db.c
parent7b561b95bd62282b159b8230aba3cc5760cf99a2 (diff)
Add DBDel and DBDelTree manager commands. (issue #8516 reported by dprado)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@52308 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/db.c')
-rw-r--r--main/db.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/main/db.c b/main/db.c
index e51b9268c..de53ab78b 100644
--- a/main/db.c
+++ b/main/db.c
@@ -588,11 +588,62 @@ static int manager_dbget(struct mansession *s, const struct message *m)
return 0;
}
+static int manager_dbdel(struct mansession *s, const struct message *m)
+{
+ const char *family = astman_get_header(m, "Family");
+ const char *key = astman_get_header(m, "Key");
+ int res;
+
+ if (ast_strlen_zero(family)) {
+ astman_send_error(s, m, "No family specified.");
+ return 0;
+ }
+
+ if (ast_strlen_zero(key)) {
+ astman_send_error(s, m, "No key specified.");
+ return 0;
+ }
+
+ res = ast_db_del(family, key);
+ if (res)
+ astman_send_error(s, m, "Database entry not found");
+ else
+ astman_send_ack(s, m, "Key deleted successfully");
+
+ return 0;
+}
+
+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 res;
+
+ if (ast_strlen_zero(family)) {
+ astman_send_error(s, m, "No family specified.");
+ return 0;
+ }
+
+ if (!ast_strlen_zero(key))
+ res = ast_db_deltree(family, key);
+ else
+ res = ast_db_deltree(family, NULL);
+
+ if (res)
+ astman_send_error(s, m, "Database entry not found");
+ else
+ astman_send_ack(s, m, "Key tree deleted successfully");
+
+ return 0;
+}
+
int astdb_init(void)
{
dbinit();
ast_cli_register_multiple(cli_database, sizeof(cli_database) / sizeof(struct ast_cli_entry));
ast_manager_register("DBGet", EVENT_FLAG_SYSTEM, manager_dbget, "Get DB Entry");
ast_manager_register("DBPut", EVENT_FLAG_SYSTEM, manager_dbput, "Put DB Entry");
+ ast_manager_register("DBDel", EVENT_FLAG_SYSTEM, manager_dbdel, "Delete DB Entry");
+ ast_manager_register("DBDelTree", EVENT_FLAG_SYSTEM, manager_dbdeltree, "Delete DB Tree");
return 0;
}