Index: res/res_config_sqlite.c =================================================================== --- res/res_config_sqlite.c (revision 85800) +++ res/res_config_sqlite.c (working copy) @@ -106,10 +106,6 @@ #define RES_CONFIG_SQLITE_DRIVER "sqlite" #define RES_CONFIG_SQLITE_DESCRIPTION "Resource Module for SQLite 2" #define RES_CONFIG_SQLITE_CONF_FILE "res_config_sqlite.conf" -#define RES_CONFIG_SQLITE_STATUS_SUMMARY "Show status information about the SQLite 2 driver" -#define RES_CONFIG_SQLITE_STATUS_USAGE \ - "Usage: show sqlite status\n" \ - " " RES_CONFIG_SQLITE_STATUS_SUMMARY "\n" enum { RES_CONFIG_SQLITE_CONFIG_ID, @@ -456,7 +452,7 @@ * \param argv arguments list * \return RESULT_SUCCESS */ -static int cli_status(int fd, int argc, char *argv[]); +static char *handle_cli_show_sqlite_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a); /*! The SQLite database object. */ static sqlite *db; @@ -503,12 +499,8 @@ * Structure containing details and callback functions for the CLI status * command. */ -static struct ast_cli_entry cli_status_cmd = -{ - .cmda = {"show", "sqlite", "status", NULL}, - .handler = cli_status, - .summary = RES_CONFIG_SQLITE_STATUS_SUMMARY, - .usage = RES_CONFIG_SQLITE_STATUS_USAGE +static struct ast_cli_entry cli_status[] = { + NEW_CLI(handle_cli_show_sqlite_status, "Show status information about the SQLite 2 driver"), }; /* @@ -1382,31 +1374,44 @@ return rows_num; } - -static int cli_status(int fd, int argc, char *argv[]) +static char *handle_cli_show_sqlite_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { - ast_cli(fd, "SQLite database path: %s\n", dbfile); - ast_cli(fd, "config_table: "); + switch (cmd) { + case CLI_INIT: + e->command = "show sqlite status"; + e->usage = + "Usage: show sqlite status\n" + " Show status information about the SQLite 2 driver\n"; + return NULL; + case CLI_GENERATE: + return NULL; + } + if (a->argc != 3) + return CLI_SHOWUSAGE; + + ast_cli(a->fd, "SQLite database path: %s\n", dbfile); + ast_cli(a->fd, "config_table: "); + if (!config_table) - ast_cli(fd, "unspecified, must be present in extconfig.conf\n"); + ast_cli(a->fd, "unspecified, must be present in extconfig.conf\n"); else - ast_cli(fd, "%s\n", config_table); + ast_cli(a->fd, "%s\n", config_table); - ast_cli(fd, "cdr_table: "); + ast_cli(a->fd, "cdr_table: "); if (!cdr_table) - ast_cli(fd, "unspecified, CDR support disabled\n"); + ast_cli(a->fd, "unspecified, CDR support disabled\n"); else - ast_cli(fd, "%s\n", cdr_table); + ast_cli(a->fd, "%s\n", cdr_table); - return RESULT_SUCCESS; + return CLI_SUCCESS; } static int unload_module(void) { if (cli_status_registered) - ast_cli_unregister(&cli_status_cmd); + ast_cli_unregister_multiple(cli_status, sizeof(cli_status) / sizeof(struct ast_cli_entry)); if (cdr_registered) ast_cdr_unregister(RES_CONFIG_SQLITE_NAME); @@ -1516,7 +1521,7 @@ cdr_registered = 1; } - error = ast_cli_register(&cli_status_cmd); + error = ast_cli_register_multiple(cli_status, sizeof(cli_status) / sizeof(struct ast_cli_entry)); if (error) { unload_module(); Index: res/res_config_pgsql.c =================================================================== --- res/res_config_pgsql.c (revision 85800) +++ res/res_config_pgsql.c (working copy) @@ -3,21 +3,21 @@ * * Copyright (C) 1999-2005, Digium, Inc. * - * Manuel Guesdon - Postgresql RealTime Driver Author/Adaptor + * Manuel Guesdon - PostgreSQL RealTime Driver Author/Adaptor * Mark Spencer - Asterisk Author * Matthew Boehm - MySQL RealTime Driver Author * - * res_config_pgsql.c + * res_config_pgsql.c * * v1.0 - (07-11-05) - Initial version based on res_config_mysql v2.0 */ /*! \file * - * \brief Postgresql plugin for Asterisk RealTime Architecture + * \brief PostgreSQL plugin for Asterisk RealTime Architecture * * \author Mark Spencer - * \author Manuel Guesdon - Postgresql RealTime Driver Author/Adaptor + * \author Manuel Guesdon - PostgreSQL RealTime Driver Author/Adaptor * * \arg http://www.postgresql.org */ @@ -64,16 +64,10 @@ static int parse_config(int reload); static int pgsql_reconnect(const char *database); -static int realtime_pgsql_status(int fd, int argc, char **argv); +static char *handle_cli_realtime_pgsql_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a); -static const char cli_realtime_pgsql_status_usage[] = - "Usage: realtime pgsql status\n" - " Shows connection information for the Postgresql RealTime driver\n"; - static struct ast_cli_entry cli_realtime[] = { - { { "realtime", "pgsql", "status", NULL }, - realtime_pgsql_status, "Shows connection information for the Postgresql RealTime driver", - cli_realtime_pgsql_status_usage }, + NEW_CLI(handle_cli_realtime_pgsql_status, "Shows connection information for the PostgreSQL RealTime driver"), }; static struct ast_variable *realtime_pgsql(const char *database, const char *table, va_list ap) @@ -88,7 +82,7 @@ struct ast_variable *var = NULL, *prev = NULL; if (!table) { - ast_log(LOG_WARNING, "Postgresql RealTime: No table specified.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: No table specified.\n"); return NULL; } @@ -97,7 +91,7 @@ newval = va_arg(ap, const char *); if (!newparam || !newval) { ast_log(LOG_WARNING, - "Postgresql RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); + "PostgreSQL RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); if (pgsqlConn) { PQfinish(pgsqlConn); pgsqlConn = NULL; @@ -131,9 +125,9 @@ if (!(result = PQexec(pgsqlConn, sql))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return NULL; } else { @@ -142,16 +136,16 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return NULL; } } - ast_debug(1, "1Postgresql RealTime: Result=%p Query: %s\n", result, sql); + ast_debug(1, "PostgreSQL RealTime: Result=%p Query: %s\n", result, sql); if ((num_rows = PQntuples(result)) > 0) { int i = 0; @@ -159,7 +153,7 @@ int numFields = PQnfields(result); char **fieldnames = NULL; - ast_debug(1, "Postgresql RealTime: Found %d rows.\n", num_rows); + ast_debug(1, "PostgreSQL RealTime: Found %d rows.\n", num_rows); if (!(fieldnames = ast_calloc(1, numFields * sizeof(char *)))) { ast_mutex_unlock(&pgsql_lock); @@ -189,7 +183,7 @@ ast_free(fieldnames); } else { ast_log(LOG_WARNING, - "Postgresql RealTime: Could not find any rows in table %s.\n", table); + "PostgreSQL RealTime: Could not find any rows in table %s.\n", table); } ast_mutex_unlock(&pgsql_lock); @@ -213,7 +207,7 @@ struct ast_category *cat = NULL; if (!table) { - ast_log(LOG_WARNING, "Postgresql RealTime: No table specified.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: No table specified.\n"); return NULL; } @@ -225,7 +219,7 @@ newval = va_arg(ap, const char *); if (!newparam || !newval) { ast_log(LOG_WARNING, - "Postgresql RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); + "PostgreSQL RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); if (pgsqlConn) { PQfinish(pgsqlConn); pgsqlConn = NULL; @@ -273,9 +267,9 @@ if (!(result = PQexec(pgsqlConn, sql))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return NULL; } else { @@ -284,16 +278,16 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return NULL; } } - ast_debug(1, "2Postgresql RealTime: Result=%p Query: %s\n", result, sql); + ast_debug(1, "PostgreSQL RealTime: Result=%p Query: %s\n", result, sql); if ((num_rows = PQntuples(result)) > 0) { int numFields = PQnfields(result); @@ -301,7 +295,7 @@ int rowIndex = 0; char **fieldnames = NULL; - ast_debug(1, "Postgresql RealTime: Found %d rows.\n", num_rows); + ast_debug(1, "PostgreSQL RealTime: Found %d rows.\n", num_rows); if (!(fieldnames = ast_calloc(1, numFields * sizeof(char *)))) { ast_mutex_unlock(&pgsql_lock); @@ -333,7 +327,7 @@ ast_free(fieldnames); } else { ast_log(LOG_WARNING, - "Postgresql RealTime: Could not find any rows in table %s.\n", table); + "PostgreSQL RealTime: Could not find any rows in table %s.\n", table); } ast_mutex_unlock(&pgsql_lock); @@ -351,7 +345,7 @@ const char *newparam, *newval; if (!table) { - ast_log(LOG_WARNING, "Postgresql RealTime: No table specified.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: No table specified.\n"); return -1; } @@ -360,7 +354,7 @@ newval = va_arg(ap, const char *); if (!newparam || !newval) { ast_log(LOG_WARNING, - "Postgresql RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); + "PostgreSQL RealTime: Realtime retrieval requires at least 1 parameter and 1 value to search on.\n"); if (pgsqlConn) { PQfinish(pgsqlConn); pgsqlConn = NULL; @@ -381,7 +375,7 @@ snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), " WHERE %s = '%s'", keyfield, lookup); - ast_debug(1, "Postgresql RealTime: Update SQL: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Update SQL: %s\n", sql); /* We now have our complete statement; Lets connect to the server and execute it. */ ast_mutex_lock(&pgsql_lock); @@ -392,9 +386,9 @@ if (!(result = PQexec(pgsqlConn, sql))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return -1; } else { @@ -403,9 +397,9 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return -1; @@ -415,7 +409,7 @@ numrows = atoi(PQcmdTuples(result)); ast_mutex_unlock(&pgsql_lock); - ast_debug(1, "Postgresql RealTime: Updated %d rows on table: %s\n", numrows, table); + ast_debug(1, "PostgreSQL RealTime: Updated %d rows on table: %s\n", numrows, table); /* From http://dev.pgsql.com/doc/pgsql/en/pgsql-affected-rows.html * An integer greater than zero indicates the number of rows affected @@ -441,7 +435,7 @@ const char *newparam, *newval; if (!table) { - ast_log(LOG_WARNING, "Postgresql RealTime: No table specified.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: No table specified.\n"); return -1; } @@ -450,7 +444,7 @@ newval = va_arg(ap, const char *); if (!newparam || !newval) { ast_log(LOG_WARNING, - "Postgresql RealTime: Realtime storage requires at least 1 parameter and 1 value to store.\n"); + "PostgreSQL RealTime: Realtime storage requires at least 1 parameter and 1 value to store.\n"); if (pgsqlConn) { PQfinish(pgsqlConn); pgsqlConn = NULL; @@ -481,13 +475,13 @@ va_end(ap); snprintf(sql, sizeof(sql), "INSERT INTO (%s) VALUES (%s)", params, vals); - ast_debug(1, "Postgresql RealTime: Insert SQL: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Insert SQL: %s\n", sql); if (!(result = PQexec(pgsqlConn, sql))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return -1; } else { @@ -496,9 +490,9 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return -1; @@ -508,7 +502,7 @@ insertid = PQoidValue(result); ast_mutex_unlock(&pgsql_lock); - ast_debug(1, "Postgresql RealTime: row inserted on table: %s, id: %u\n", table, insertid); + ast_debug(1, "PostgreSQL RealTime: row inserted on table: %s, id: %u\n", table, insertid); /* From http://dev.pgsql.com/doc/pgsql/en/pgsql-affected-rows.html * An integer greater than zero indicates the number of rows affected @@ -532,7 +526,7 @@ const char *newparam, *newval; if (!table) { - ast_log(LOG_WARNING, "Postgresql RealTime: No table specified.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: No table specified.\n"); return -1; } @@ -542,7 +536,7 @@ if (!newparam || !newval) {*/ if (ast_strlen_zero(keyfield) || ast_strlen_zero(lookup)) { ast_log(LOG_WARNING, - "Postgresql RealTime: Realtime destroy requires at least 1 parameter and 1 value to search on.\n"); + "PostgreSQL RealTime: Realtime destroy requires at least 1 parameter and 1 value to search on.\n"); if (pgsqlConn) { PQfinish(pgsqlConn); pgsqlConn = NULL; @@ -572,13 +566,13 @@ } va_end(ap); - ast_debug(1, "Postgresql RealTime: Delete SQL: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Delete SQL: %s\n", sql); if (!(result = PQexec(pgsqlConn, sql))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return -1; } else { @@ -587,9 +581,9 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return -1; @@ -599,7 +593,7 @@ numrows = atoi(PQcmdTuples(result)); ast_mutex_unlock(&pgsql_lock); - ast_debug(1, "Postgresql RealTime: Deleted %d rows on table: %s\n", numrows, table); + ast_debug(1, "PostgreSQL RealTime: Deleted %d rows on table: %s\n", numrows, table); /* From http://dev.pgsql.com/doc/pgsql/en/pgsql-affected-rows.html * An integer greater than zero indicates the number of rows affected @@ -631,7 +625,7 @@ last[0] = '\0'; if (!file || !strcmp(file, RES_CONFIG_PGSQL_CONF)) { - ast_log(LOG_WARNING, "Postgresql RealTime: Cannot configure myself.\n"); + ast_log(LOG_WARNING, "PostgreSQL RealTime: Cannot configure myself.\n"); return NULL; } @@ -639,7 +633,7 @@ ast_build_string(&sql, &sqlleft, "WHERE filename='%s' and commented=0", file); ast_build_string(&sql, &sqlleft, "ORDER BY cat_metric DESC, var_metric ASC, category, var_name "); - ast_debug(1, "Postgresql RealTime: Static SQL: %s\n", sqlbuf); + ast_debug(1, "PostgreSQL RealTime: Static SQL: %s\n", sqlbuf); /* We now have our complete statement; Lets connect to the server and execute it. */ ast_mutex_lock(&pgsql_lock); @@ -650,9 +644,9 @@ if (!(result = PQexec(pgsqlConn, sqlbuf))) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s\n", PQerrorMessage(pgsqlConn)); ast_mutex_unlock(&pgsql_lock); return NULL; } else { @@ -661,9 +655,9 @@ && result_status != PGRES_TUPLES_OK && result_status != PGRES_NONFATAL_ERROR) { ast_log(LOG_WARNING, - "Postgresql RealTime: Failed to query database. Check debug for more info.\n"); - ast_debug(1, "Postgresql RealTime: Query: %s\n", sql); - ast_debug(1, "Postgresql RealTime: Query Failed because: %s (%s)\n", + "PostgreSQL RealTime: Failed to query database. Check debug for more info.\n"); + ast_debug(1, "PostgreSQL RealTime: Query: %s\n", sql); + ast_debug(1, "PostgreSQL RealTime: Query Failed because: %s (%s)\n", PQresultErrorMessage(result), PQresStatus(result_status)); ast_mutex_unlock(&pgsql_lock); return NULL; @@ -673,7 +667,7 @@ if ((num_rows = PQntuples(result)) > 0) { int rowIndex = 0; - ast_debug(1, "Postgresql RealTime: Found %ld rows.\n", num_rows); + ast_debug(1, "PostgreSQL RealTime: Found %ld rows.\n", num_rows); for (rowIndex = 0; rowIndex < num_rows; rowIndex++) { char *field_category = PQgetvalue(result, rowIndex, 0); @@ -702,7 +696,7 @@ } } else { ast_log(LOG_WARNING, - "Postgresql RealTime: Could not find config '%s' in database.\n", file); + "PostgreSQL RealTime: Could not find config '%s' in database.\n", file); } PQclear(result); @@ -727,7 +721,7 @@ return AST_MODULE_LOAD_DECLINE; ast_config_engine_register(&pgsql_engine); - ast_verb(1, "Postgresql RealTime driver loaded.\n"); + ast_verb(1, "PostgreSQL RealTime driver loaded.\n"); ast_cli_register_multiple(cli_realtime, sizeof(cli_realtime) / sizeof(struct ast_cli_entry)); return 0; @@ -744,7 +738,7 @@ } ast_cli_unregister_multiple(cli_realtime, sizeof(cli_realtime) / sizeof(struct ast_cli_entry)); ast_config_engine_deregister(&pgsql_engine); - ast_verb(1, "Postgresql RealTime unloaded.\n"); + ast_verb(1, "PostgreSQL RealTime unloaded.\n"); /* Unlock so something else can destroy the lock. */ ast_mutex_unlock(&pgsql_lock); @@ -782,7 +776,7 @@ if (!(s = ast_variable_retrieve(config, "general", "dbuser"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database user found, using 'asterisk' as default.\n"); + "PostgreSQL RealTime: No database user found, using 'asterisk' as default.\n"); strcpy(dbuser, "asterisk"); } else { ast_copy_string(dbuser, s, sizeof(dbuser)); @@ -790,7 +784,7 @@ if (!(s = ast_variable_retrieve(config, "general", "dbpass"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database password found, using 'asterisk' as default.\n"); + "PostgreSQL RealTime: No database password found, using 'asterisk' as default.\n"); strcpy(dbpass, "asterisk"); } else { ast_copy_string(dbpass, s, sizeof(dbpass)); @@ -798,7 +792,7 @@ if (!(s = ast_variable_retrieve(config, "general", "dbhost"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database host found, using localhost via socket.\n"); + "PostgreSQL RealTime: No database host found, using localhost via socket.\n"); dbhost[0] = '\0'; } else { ast_copy_string(dbhost, s, sizeof(dbhost)); @@ -806,7 +800,7 @@ if (!(s = ast_variable_retrieve(config, "general", "dbname"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database name found, using 'asterisk' as default.\n"); + "PostgreSQL RealTime: No database name found, using 'asterisk' as default.\n"); strcpy(dbname, "asterisk"); } else { ast_copy_string(dbname, s, sizeof(dbname)); @@ -814,7 +808,7 @@ if (!(s = ast_variable_retrieve(config, "general", "dbport"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database port found, using 5432 as default.\n"); + "PostgreSQL RealTime: No database port found, using 5432 as default.\n"); dbport = 5432; } else { dbport = atoi(s); @@ -822,7 +816,7 @@ if (!ast_strlen_zero(dbhost) && !(s = ast_variable_retrieve(config, "general", "dbsock"))) { ast_log(LOG_WARNING, - "Postgresql RealTime: No database socket found, using '/tmp/pgsql.sock' as default.\n"); + "PostgreSQL RealTime: No database socket found, using '/tmp/pgsql.sock' as default.\n"); strcpy(dbsock, "/tmp/pgsql.sock"); } else { ast_copy_string(dbsock, s, sizeof(dbsock)); @@ -831,23 +825,23 @@ if (option_debug) { if (!ast_strlen_zero(dbhost)) { - ast_debug(1, "Postgresql RealTime Host: %s\n", dbhost); - ast_debug(1, "Postgresql RealTime Port: %i\n", dbport); + ast_debug(1, "PostgreSQL RealTime Host: %s\n", dbhost); + ast_debug(1, "PostgreSQL RealTime Port: %i\n", dbport); } else { - ast_debug(1, "Postgresql RealTime Socket: %s\n", dbsock); + ast_debug(1, "PostgreSQL RealTime Socket: %s\n", dbsock); } - ast_debug(1, "Postgresql RealTime User: %s\n", dbuser); - ast_debug(1, "Postgresql RealTime Password: %s\n", dbpass); - ast_debug(1, "Postgresql RealTime DBName: %s\n", dbname); + ast_debug(1, "PostgreSQL RealTime User: %s\n", dbuser); + ast_debug(1, "PostgreSQL RealTime Password: %s\n", dbpass); + ast_debug(1, "PostgreSQL RealTime DBName: %s\n", dbname); } if (!pgsql_reconnect(NULL)) { ast_log(LOG_WARNING, - "Postgresql RealTime: Couldn't establish connection. Check debug.\n"); - ast_debug(1, "Postgresql RealTime: Cannot Connect: %s\n", PQerrorMessage(pgsqlConn)); + "PostgreSQL RealTime: Couldn't establish connection. Check debug.\n"); + ast_debug(1, "PostgreSQL RealTime: Cannot Connect: %s\n", PQerrorMessage(pgsqlConn)); } - ast_verb(2, "Postgresql RealTime reloaded.\n"); + ast_verb(2, "PostgreSQL RealTime reloaded.\n"); /* Done reloading. Release lock so others can now use driver. */ ast_mutex_unlock(&pgsql_lock); @@ -887,61 +881,72 @@ connInfo = NULL; ast_debug(1, "pgsqlConn=%p\n", pgsqlConn); if (pgsqlConn && PQstatus(pgsqlConn) == CONNECTION_OK) { - ast_debug(1, "Postgresql RealTime: Successfully connected to database.\n"); + ast_debug(1, "PostgreSQL RealTime: Successfully connected to database.\n"); connect_time = time(NULL); return 1; } else { ast_log(LOG_ERROR, - "Postgresql RealTime: Failed to connect database server %s on %s. Check debug for more info.\n", + "PostgreSQL RealTime: Failed to connect database server %s on %s. Check debug for more info.\n", dbname, dbhost); - ast_debug(1, "Postgresql RealTime: Cannot Connect: %s\n", PQresultErrorMessage(NULL)); + ast_debug(1, "PostgreSQL RealTime: Cannot Connect: %s\n", PQresultErrorMessage(NULL)); return 0; } } else { - ast_debug(1, "Postgresql RealTime: Everything is fine.\n"); + ast_debug(1, "PostgreSQL RealTime: Everything is fine.\n"); return 1; } } -static int realtime_pgsql_status(int fd, int argc, char **argv) +static char *handle_cli_realtime_pgsql_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { char status[256], status2[100] = ""; int ctime = time(NULL) - connect_time; + switch (cmd) { + case CLI_INIT: + e->command = "realtime pgsql status"; + e->usage = + "Usage: realtime pgsql status\n" + " Shows connection information for the PostgreSQL RealTime driver\n"; + return NULL; + case CLI_GENERATE: + return NULL; + } + + if (a->argc != 3) + return CLI_SHOWUSAGE; + if (pgsqlConn && PQstatus(pgsqlConn) == CONNECTION_OK) { - if (!ast_strlen_zero(dbhost)) { + if (!ast_strlen_zero(dbhost)) snprintf(status, 255, "Connected to %s@%s, port %d", dbname, dbhost, dbport); - } else if (!ast_strlen_zero(dbsock)) { + else if (!ast_strlen_zero(dbsock)) snprintf(status, 255, "Connected to %s on socket file %s", dbname, dbsock); - } else { + else snprintf(status, 255, "Connected to %s@%s", dbname, dbhost); - } - if (!ast_strlen_zero(dbuser)) { + if (!ast_strlen_zero(dbuser)) snprintf(status2, 99, " with username %s", dbuser); - } - if (ctime > 31536000) { - ast_cli(fd, "%s%s for %d years, %d days, %d hours, %d minutes, %d seconds.\n", + if (ctime > 31536000) + ast_cli(a->fd, "%s%s for %d years, %d days, %d hours, %d minutes, %d seconds.\n", status, status2, ctime / 31536000, (ctime % 31536000) / 86400, (ctime % 86400) / 3600, (ctime % 3600) / 60, ctime % 60); - } else if (ctime > 86400) { - ast_cli(fd, "%s%s for %d days, %d hours, %d minutes, %d seconds.\n", status, + else if (ctime > 86400) + ast_cli(a->fd, "%s%s for %d days, %d hours, %d minutes, %d seconds.\n", status, status2, ctime / 86400, (ctime % 86400) / 3600, (ctime % 3600) / 60, ctime % 60); - } else if (ctime > 3600) { - ast_cli(fd, "%s%s for %d hours, %d minutes, %d seconds.\n", status, status2, + else if (ctime > 3600) + ast_cli(a->fd, "%s%s for %d hours, %d minutes, %d seconds.\n", status, status2, ctime / 3600, (ctime % 3600) / 60, ctime % 60); - } else if (ctime > 60) { - ast_cli(fd, "%s%s for %d minutes, %d seconds.\n", status, status2, ctime / 60, + else if (ctime > 60) + ast_cli(a->fd, "%s%s for %d minutes, %d seconds.\n", status, status2, ctime / 60, ctime % 60); - } else { - ast_cli(fd, "%s%s for %d seconds.\n", status, status2, ctime); - } + else + ast_cli(a->fd, "%s%s for %d seconds.\n", status, status2, ctime); - return RESULT_SUCCESS; + return CLI_SUCCESS; } else { - return RESULT_FAILURE; + return CLI_FAILURE; } }