Fixes from bkw_. Formatting in app_db.c and handle start right in cdr_pgsql.c

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3415 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
James Golovich 22 years ago
parent f107562f75
commit 9e0e3799bf

@ -30,21 +30,21 @@
static char *tdesc = "Database access functions for Asterisk extension logic"; static char *tdesc = "Database access functions for Asterisk extension logic";
static char *g_descrip = static char *g_descrip =
" DBget(varname=family/key): Retrieves a value from the Asterisk\n" " DBget(varname=family/key): Retrieves a value from the Asterisk\n"
"database and stores it in the given variable. Always returns 0. If the\n" "database and stores it in the given variable. Always returns 0. If the\n"
"requested key is not found, jumps to priority n+101 if available.\n"; "requested key is not found, jumps to priority n+101 if available.\n";
static char *p_descrip = static char *p_descrip =
" DBput(family/key=value): Stores the given value in the Asterisk\n" " DBput(family/key=value): Stores the given value in the Asterisk\n"
"database. Always returns 0.\n"; "database. Always returns 0.\n";
static char *d_descrip = static char *d_descrip =
" DBdel(family/key): Deletes a key from the Asterisk database. Always\n" " DBdel(family/key): Deletes a key from the Asterisk database. Always\n"
"returns 0.\n"; "returns 0.\n";
static char *dt_descrip = static char *dt_descrip =
" DBdeltree(family[/keytree]): Deletes a family or keytree from the Asterisk\n" " DBdeltree(family[/keytree]): Deletes a family or keytree from the Asterisk\n"
"database. Always returns 0.\n"; "database. Always returns 0.\n";
static char *g_app = "DBget"; static char *g_app = "DBget";
static char *p_app = "DBput"; static char *p_app = "DBput";
@ -60,255 +60,196 @@ STANDARD_LOCAL_USER;
LOCAL_USER_DECL; LOCAL_USER_DECL;
static int deltree_exec (struct ast_channel *chan, void *data)
static int
deltree_exec (struct ast_channel *chan, void *data)
{ {
int arglen; int arglen;
char *argv, *family, *keytree; char *argv, *family, *keytree;
arglen = strlen (data); arglen = strlen (data);
argv = alloca (arglen + 1); argv = alloca (arglen + 1);
if (!argv) /* Why would this fail? */ if (!argv) { /* Why would this fail? */
{ ast_log (LOG_DEBUG, "Memory allocation failed\n");
ast_log (LOG_DEBUG, "Memory allocation failed\n"); return 0;
return 0; }
} memcpy (argv, data, arglen + 1);
memcpy (argv, data, arglen + 1);
if (strchr (argv, '/')) {
if (strchr (argv, '/')) { family = strsep (&argv, "/");
{ keytree = strsep (&argv, "\0");
family = strsep (&argv, "/"); if (!family || !keytree) {
keytree = strsep (&argv, "\0"); ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
if (!family || !keytree) return 0;
{ }
ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n"); if (!strlen (keytree))
return 0; keytree = 0;
} else {
family = argv;
keytree = 0;
} }
if (!strlen (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");
}
return 0;
}
static int if (option_verbose > 2) {
del_exec (struct ast_channel *chan, void *data) if (keytree)
{ ast_verbose (VERBOSE_PREFIX_3 "DBdeltree: family=%s, keytree=%s\n", family, keytree);
int arglen; else
char *argv, *family, *key; ast_verbose (VERBOSE_PREFIX_3 "DBdeltree: family=%s\n", family);
arglen = strlen (data);
argv = alloca (arglen + 1);
if (!argv) /* Why would this fail? */
{
ast_log (LOG_DEBUG, "Memory allocation failed\n");
return 0;
}
memcpy (argv, data, arglen + 1);
if (strchr (argv, '/'))
{
family = strsep (&argv, "/");
key = strsep (&argv, "\0");
if (!family || !key)
{
ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
return 0;
} }
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 if (ast_db_deltree (family, keytree)) {
"DBdel: family=%s, key=%s\n", family, key); if (option_verbose > 2)
if (ast_db_del (family, key)) ast_verbose (VERBOSE_PREFIX_3 "DBdeltree: Error deleting key from database.\n");
{
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3
"DBdel: Error deleting key from database.\n");
} }
}
else
{
ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
}
return 0; return 0;
} }
static int static int del_exec (struct ast_channel *chan, void *data)
put_exec (struct ast_channel *chan, void *data)
{ {
int arglen; int arglen;
char *argv, *value, *family, *key; char *argv, *family, *key;
arglen = strlen (data); arglen = strlen (data);
argv = alloca (arglen + 1); argv = alloca (arglen + 1);
if (!argv) /* Why would this fail? */ if (!argv) { /* Why would this fail? */
{ ast_log (LOG_DEBUG, "Memory allocation failed\n");
ast_log (LOG_DEBUG, "Memory allocation failed\n"); return 0;
return 0;
}
memcpy (argv, data, arglen + 1);
if (strchr (argv, '/') && strchr (argv, '='))
{
family = strsep (&argv, "/");
key = strsep (&argv, "=");
value = strsep (&argv, "\0");
if (!value || !family || !key)
{
ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
return 0;
} }
if (option_verbose > 2) memcpy (argv, data, arglen + 1);
ast_verbose (VERBOSE_PREFIX_3
"DBput: family=%s, key=%s, value=%s\n", family, key, if (strchr (argv, '/')) {
value); family = strsep (&argv, "/");
if (ast_db_put (family, key, value)) key = strsep (&argv, "\0");
{ if (!family || !key) {
if (option_verbose > 2) ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
ast_verbose (VERBOSE_PREFIX_3 return 0;
"DBput: Error writing value to database.\n"); }
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBdel: family=%s, key=%s\n", family, key);
if (ast_db_del (family, key)) {
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBdel: Error deleting key from database.\n");
}
} else {
ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
} }
return 0;
}
else
{
ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
}
return 0;
} }
static int static int put_exec (struct ast_channel *chan, void *data)
get_exec (struct ast_channel *chan, void *data)
{ {
int arglen; int arglen;
char *argv, *varname, *family, *key; char *argv, *value, *family, *key;
char dbresult[256];
arglen = strlen (data);
arglen = strlen (data); argv = alloca (arglen + 1);
argv = alloca (arglen + 1); if (!argv) { /* Why would this fail? */
if (!argv) /* Why would this fail? */ ast_log (LOG_DEBUG, "Memory allocation failed\n");
{ return 0;
ast_log (LOG_DEBUG, "Memory allocation failed\n");
return 0;
}
memcpy (argv, data, arglen + 1);
if (strchr (argv, '=') && strchr (argv, '/'))
{
varname = strsep (&argv, "=");
family = strsep (&argv, "/");
key = strsep (&argv, "\0");
if (!varname || !family || !key)
{
ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
return 0;
}
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3
"DBget: varname=%s, family=%s, key=%s\n", varname,
family, key);
if (!ast_db_get (family, key, dbresult, sizeof (dbresult) - 1))
{
pbx_builtin_setvar_helper (chan, varname, dbresult);
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3
"DBget: set variable %s to %s\n", varname, dbresult);
} }
else memcpy (argv, data, arglen + 1);
{
if (option_verbose > 2) if (strchr (argv, '/') && strchr (argv, '=')) {
ast_verbose (VERBOSE_PREFIX_3 family = strsep (&argv, "/");
"DBget: Value not found in database.\n"); key = strsep (&argv, "=");
/* Send the call to n+101 priority, where n is the current priority */ value = strsep (&argv, "\0");
if (ast_exists_extension if (!value || !family || !key) {
(chan, chan->context, chan->exten, chan->priority + 101, ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
chan->callerid)) return 0;
chan->priority += 100; }
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBput: family=%s, key=%s, value=%s\n", family, key, value);
if (ast_db_put (family, key, value)) {
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBput: Error writing value to database.\n");
}
} else {
ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
} }
return 0;
}
} static int get_exec (struct ast_channel *chan, void *data)
else {
{ int arglen;
ast_log (LOG_DEBUG, "Ignoring, no parameters\n"); char *argv, *varname, *family, *key;
} char dbresult[256];
return 0; arglen = strlen (data);
argv = alloca (arglen + 1);
if (!argv) { /* Why would this fail? */
ast_log (LOG_DEBUG, "Memory allocation failed\n");
return 0;
}
memcpy (argv, data, arglen + 1);
if (strchr (argv, '=') && strchr (argv, '/')) {
varname = strsep (&argv, "=");
family = strsep (&argv, "/");
key = strsep (&argv, "\0");
if (!varname || !family || !key) {
ast_log (LOG_DEBUG, "Ignoring; Syntax error in argument\n");
return 0;
}
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBget: varname=%s, family=%s, key=%s\n", varname, family, key);
if (!ast_db_get (family, key, dbresult, sizeof (dbresult) - 1)) {
pbx_builtin_setvar_helper (chan, varname, dbresult);
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBget: set variable %s to %s\n", varname, dbresult);
} else {
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "DBget: Value not found in database.\n");
/* Send the call to n+101 priority, where n is the current priority */
if (ast_exists_extension (chan, chan->context, chan->exten, chan->priority + 101, chan->callerid))
chan->priority += 100;
}
} else {
ast_log (LOG_DEBUG, "Ignoring, no parameters\n");
}
return 0;
} }
int int unload_module (void)
unload_module (void)
{ {
int retval; int retval;
STANDARD_HANGUP_LOCALUSERS; STANDARD_HANGUP_LOCALUSERS;
retval = ast_unregister_application (dt_app); retval = ast_unregister_application (dt_app);
retval |= ast_unregister_application (d_app); retval |= ast_unregister_application (d_app);
retval |= ast_unregister_application (p_app); retval |= ast_unregister_application (p_app);
retval |= ast_unregister_application (g_app); retval |= ast_unregister_application (g_app);
return retval; return retval;
} }
int int load_module (void)
load_module (void)
{ {
int retval; int retval;
retval = ast_register_application (g_app, get_exec, g_synopsis, g_descrip); retval = ast_register_application (g_app, get_exec, g_synopsis, g_descrip);
if (!retval) if (!retval)
retval = retval = ast_register_application (p_app, put_exec, p_synopsis, p_descrip);
ast_register_application (p_app, put_exec, p_synopsis, p_descrip); if (!retval)
if (!retval) retval = ast_register_application (d_app, del_exec, d_synopsis, d_descrip);
retval = if (!retval)
ast_register_application (d_app, del_exec, d_synopsis, d_descrip); retval = ast_register_application (dt_app, deltree_exec, dt_synopsis, dt_descrip);
if (!retval) return retval;
retval =
ast_register_application (dt_app, deltree_exec, dt_synopsis,
dt_descrip);
return retval;
} }
char * char *description (void)
description (void)
{ {
return tdesc; return tdesc;
} }
int int usecount (void)
usecount (void)
{ {
int res; int res;
STANDARD_USECOUNT (res); STANDARD_USECOUNT (res);
return res; return res;
} }
char * char *key ()
key ()
{ {
return ASTERISK_GPL_KEY; return ASTERISK_GPL_KEY;
} }

@ -49,18 +49,14 @@ PGresult *result;
static int pgsql_log(struct ast_cdr *cdr) static int pgsql_log(struct ast_cdr *cdr)
{ {
struct tm tm; struct tm tm;
struct timeval tv;
char sqlcmd[2048], timestr[128]; char sqlcmd[2048], timestr[128];
time_t t; char *pgerror;
char *pgerror;
ast_mutex_lock(&pgsql_lock); ast_mutex_lock(&pgsql_lock);
memset(sqlcmd,0,2048); memset(sqlcmd,0,2048);
gettimeofday(&tv,NULL); localtime_r(&cdr->start.tv_sec,&tm);
t = tv.tv_sec;
localtime_r(&t,&tm);
strftime(timestr,128,DATE_FORMAT,&tm); strftime(timestr,128,DATE_FORMAT,&tm);
if ((!connected) && pghostname && pgdbuser && pgpassword && pgdbname) { if ((!connected) && pghostname && pgdbuser && pgpassword && pgdbname) {

Loading…
Cancel
Save