summaryrefslogtreecommitdiff
path: root/main/db.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2007-10-11 19:03:06 +0000
committerRussell Bryant <russell@russellbryant.com>2007-10-11 19:03:06 +0000
commite97a723cf1710d0c40bcbe7ac53fc943abedd2c4 (patch)
tree44dcb2c14abed6932db4f248b17626a01a38f59b /main/db.c
parent8a52c889883f2013e377d87389f07aec5b781122 (diff)
Merge a ton of NEW_CLI conversions. Thanks to everyone that helped out! :)
(closes issue #10724) Reported by: eliel Patches: chan_skinny.c.patch uploaded by eliel (license 64) chan_oss.c.patch uploaded by eliel (license 64) chan_mgcp.c.patch2 uploaded by eliel (license 64) pbx_config.c.patch uploaded by seanbright (license 71) iax2-provision.c.patch uploaded by eliel (license 64) chan_gtalk.c.patch uploaded by eliel (license 64) pbx_ael.c.patch uploaded by seanbright (license 71) file.c.patch uploaded by seanbright (license 71) image.c.patch uploaded by seanbright (license 71) cli.c.patch uploaded by moy (license 222) astobj2.c.patch uploaded by moy (license 222) asterisk.c.patch uploaded by moy (license 222) res_limit.c.patch uploaded by seanbright (license 71) res_convert.c.patch uploaded by seanbright (license 71) res_crypto.c.patch uploaded by seanbright (license 71) app_osplookup.c.patch uploaded by seanbright (license 71) app_rpt.c.patch uploaded by seanbright (license 71) app_mixmonitor.c.patch uploaded by seanbright (license 71) channel.c.patch uploaded by seanbright (license 71) translate.c.patch uploaded by seanbright (license 71) udptl.c.patch uploaded by seanbright (license 71) threadstorage.c.patch uploaded by seanbright (license 71) db.c.patch uploaded by seanbright (license 71) cdr.c.patch uploaded by moy (license 222) pbd_dundi.c.patch uploaded by moy (license 222) app_osplookup-rev83558.patch uploaded by moy (license 222) res_clioriginate.c.patch uploaded by moy (license 222) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85460 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/db.c')
-rw-r--r--main/db.c235
1 files changed, 132 insertions, 103 deletions
diff --git a/main/db.c b/main/db.c
index c38d8c8cc..58245c255 100644
--- a/main/db.c
+++ b/main/db.c
@@ -240,68 +240,120 @@ int ast_db_del(const char *family, const char *keys)
return res;
}
-static int database_put(int fd, int argc, char *argv[])
+static char *handle_cli_database_put(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int res;
- if (argc != 5)
- return RESULT_SHOWUSAGE;
- res = ast_db_put(argv[2], argv[3], argv[4]);
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "database put";
+ e->usage =
+ "Usage: database put <family> <key> <value>\n"
+ " Adds or updates an entry in the Asterisk database for\n"
+ " a given family, key, and value.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 5)
+ return CLI_SHOWUSAGE;
+ res = ast_db_put(a->argv[2], a->argv[3], a->argv[4]);
if (res) {
- ast_cli(fd, "Failed to update entry\n");
+ ast_cli(a->fd, "Failed to update entry\n");
} else {
- ast_cli(fd, "Updated database successfully\n");
+ ast_cli(a->fd, "Updated database successfully\n");
}
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
}
-static int database_get(int fd, int argc, char *argv[])
+static char *handle_cli_database_get(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int res;
char tmp[256];
- if (argc != 4)
- return RESULT_SHOWUSAGE;
- res = ast_db_get(argv[2], argv[3], tmp, sizeof(tmp));
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "database get";
+ e->usage =
+ "Usage: database get <family> <key>\n"
+ " Retrieves an entry in the Asterisk database for a given\n"
+ " family and key.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 4)
+ return CLI_SHOWUSAGE;
+ res = ast_db_get(a->argv[2], a->argv[3], tmp, sizeof(tmp));
if (res) {
- ast_cli(fd, "Database entry not found.\n");
+ ast_cli(a->fd, "Database entry not found.\n");
} else {
- ast_cli(fd, "Value: %s\n", tmp);
+ ast_cli(a->fd, "Value: %s\n", tmp);
}
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
}
-static int database_del(int fd, int argc, char *argv[])
+static char *handle_cli_database_del(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int res;
- if (argc != 4)
- return RESULT_SHOWUSAGE;
- res = ast_db_del(argv[2], argv[3]);
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "database del";
+ e->usage =
+ "Usage: database del <family> <key>\n"
+ " Deletes an entry in the Asterisk database for a given\n"
+ " family and key.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 4)
+ return CLI_SHOWUSAGE;
+ res = ast_db_del(a->argv[2], a->argv[3]);
if (res) {
- ast_cli(fd, "Database entry does not exist.\n");
+ ast_cli(a->fd, "Database entry does not exist.\n");
} else {
- ast_cli(fd, "Database entry removed.\n");
+ ast_cli(a->fd, "Database entry removed.\n");
}
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
}
-static int database_deltree(int fd, int argc, char *argv[])
+static char *handle_cli_database_deltree(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int res;
- if ((argc < 3) || (argc > 4))
- return RESULT_SHOWUSAGE;
- if (argc == 4) {
- res = ast_db_deltree(argv[2], argv[3]);
+
+ 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(argv[2], NULL);
+ res = ast_db_deltree(a->argv[2], NULL);
}
if (res < 0) {
- ast_cli(fd, "Database entries do not exist.\n");
+ ast_cli(a->fd, "Database entries do not exist.\n");
} else {
- ast_cli(fd, "%d database entries removed.\n",res);
+ ast_cli(a->fd, "%d database entries removed.\n",res);
}
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
}
-static int database_show(int fd, int argc, char *argv[])
+static char *handle_cli_database_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char prefix[256];
DBT key, data;
@@ -310,23 +362,35 @@ static int database_show(int fd, int argc, char *argv[])
int pass;
int counter = 0;
- if (argc == 4) {
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "database show";
+ e->usage =
+ "Usage: database show [family [keytree]]\n"
+ " Shows Asterisk database contents, optionally restricted\n"
+ " to a given family, or family and keytree.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc == 4) {
/* Family and key tree */
- snprintf(prefix, sizeof(prefix), "/%s/%s", argv[2], argv[3]);
- } else if (argc == 3) {
+ snprintf(prefix, sizeof(prefix), "/%s/%s", a->argv[2], a->argv[3]);
+ } else if (a->argc == 3) {
/* Family only */
- snprintf(prefix, sizeof(prefix), "/%s", argv[2]);
- } else if (argc == 2) {
+ snprintf(prefix, sizeof(prefix), "/%s", a->argv[2]);
+ } else if (a->argc == 2) {
/* Neither */
prefix[0] = '\0';
} else {
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
}
ast_mutex_lock(&dblock);
if (dbinit()) {
ast_mutex_unlock(&dblock);
- ast_cli(fd, "Database unavailable\n");
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "Database unavailable\n");
+ return CLI_SUCCESS;
}
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
@@ -345,16 +409,16 @@ static int database_show(int fd, int argc, char *argv[])
values = "<bad value>";
}
if (keymatch(keys, prefix)) {
- ast_cli(fd, "%-50s: %-25s\n", keys, values);
+ ast_cli(a->fd, "%-50s: %-25s\n", keys, values);
counter++;
}
}
ast_mutex_unlock(&dblock);
- ast_cli(fd, "%d results found.\n", counter);
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "%d results found.\n", counter);
+ return CLI_SUCCESS;
}
-static int database_showkey(int fd, int argc, char *argv[])
+static char *handle_cli_database_showkey(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char suffix[256];
DBT key, data;
@@ -363,17 +427,28 @@ static int database_showkey(int fd, int argc, char *argv[])
int pass;
int counter = 0;
- if (argc == 3) {
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "database show";
+ e->usage =
+ "Usage: database showkey <keytree>\n"
+ " Shows Asterisk database contents, restricted to a given key.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc == 3) {
/* Key only */
- snprintf(suffix, sizeof(suffix), "/%s", argv[2]);
+ snprintf(suffix, sizeof(suffix), "/%s", a->argv[2]);
} else {
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
}
ast_mutex_lock(&dblock);
if (dbinit()) {
ast_mutex_unlock(&dblock);
- ast_cli(fd, "Database unavailable\n");
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "Database unavailable\n");
+ return CLI_SUCCESS;
}
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
@@ -392,13 +467,13 @@ static int database_showkey(int fd, int argc, char *argv[])
values = "<bad value>";
}
if (subkeymatch(keys, suffix)) {
- ast_cli(fd, "%-50s: %-25s\n", keys, values);
+ ast_cli(a->fd, "%-50s: %-25s\n", keys, values);
counter++;
}
}
ast_mutex_unlock(&dblock);
- ast_cli(fd, "%d results found.\n", counter);
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "%d results found.\n", counter);
+ return CLI_SUCCESS;
}
struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree)
@@ -473,59 +548,13 @@ void ast_db_freetree(struct ast_db_entry *dbe)
}
}
-static const char database_show_usage[] =
-"Usage: database show [family [keytree]]\n"
-" Shows Asterisk database contents, optionally restricted\n"
-"to a given family, or family and keytree.\n";
-
-static const char database_showkey_usage[] =
-"Usage: database showkey <keytree>\n"
-" Shows Asterisk database contents, restricted to a given key.\n";
-
-static const char database_put_usage[] =
-"Usage: database put <family> <key> <value>\n"
-" Adds or updates an entry in the Asterisk database for\n"
-"a given family, key, and value.\n";
-
-static const char database_get_usage[] =
-"Usage: database get <family> <key>\n"
-" Retrieves an entry in the Asterisk database for a given\n"
-"family and key.\n";
-
-static const char database_del_usage[] =
-"Usage: database del <family> <key>\n"
-" Deletes an entry in the Asterisk database for a given\n"
-"family and key.\n";
-
-static const char database_deltree_usage[] =
-"Usage: database deltree <family> [keytree]\n"
-" Deletes a family or specific keytree within a family\n"
-"in the Asterisk database.\n";
-
struct ast_cli_entry cli_database[] = {
- { { "database", "show", NULL },
- database_show, "Shows database contents",
- database_show_usage },
-
- { { "database", "showkey", NULL },
- database_showkey, "Shows database contents",
- database_showkey_usage },
-
- { { "database", "get", NULL },
- database_get, "Gets database value",
- database_get_usage },
-
- { { "database", "put", NULL },
- database_put, "Adds/updates database value",
- database_put_usage },
-
- { { "database", "del", NULL },
- database_del, "Removes database key/value",
- database_del_usage },
-
- { { "database", "deltree", NULL },
- database_deltree, "Removes database keytree/values",
- database_deltree_usage },
+ NEW_CLI(handle_cli_database_show, "Shows database contents"),
+ NEW_CLI(handle_cli_database_showkey, "Shows database contents"),
+ NEW_CLI(handle_cli_database_get, "Gets database value"),
+ NEW_CLI(handle_cli_database_put, "Adds/updates database value"),
+ NEW_CLI(handle_cli_database_del, "Removes database key/value"),
+ NEW_CLI(handle_cli_database_deltree, "Removes database keytree/values")
};
static int manager_dbput(struct mansession *s, const struct message *m)