diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-25 22:49:24 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-25 22:49:24 +0000 |
commit | 25f91a64d8874a12cf65fd2526be4e75fa089a13 (patch) | |
tree | dfd200211290a1a0097b0293a9b107f028f6fd28 /main/db.c | |
parent | 0389dc274d22a89052e22868ebec9c565fbd525c (diff) |
Add DBDel and DBDelTree manager commands. (issue #8516 reported by dprado)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@52308 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/db.c')
-rw-r--r-- | main/db.c | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -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; } |