2 * Asterisk -- An open source telephony toolkit.
4 * Copyright (C) 1999 - 2005, Digium, Inc.
5 * Copyright (C) 2003, Jefferson Noxon
7 * Mark Spencer <markster@digium.com>
8 * Jefferson Noxon <jeff@debian.org>
10 * See http://www.asterisk.org for more information about
11 * the Asterisk project. Please do not directly contact
12 * any of the maintainers of this project for assistance;
13 * the project provides a web site, mailing lists and IRC
14 * channels for your use.
16 * This program is free software, distributed under the terms of
17 * the GNU General Public License Version 2. See the LICENSE file
18 * at the top of the source tree.
23 * \brief Database access functions
25 * \author Mark Spencer <markster@digium.com>
26 * \author Jefferson Noxon <jeff@debian.org>
28 * \ingroup applications
33 ASTERISK_FILE_VERSION(__FILE__
, "$Revision$")
39 #include <sys/types.h>
41 #include "asterisk/options.h"
42 #include "asterisk/file.h"
43 #include "asterisk/logger.h"
44 #include "asterisk/channel.h"
45 #include "asterisk/pbx.h"
46 #include "asterisk/module.h"
47 #include "asterisk/astdb.h"
48 #include "asterisk/lock.h"
49 #include "asterisk/options.h"
51 /*! \todo XXX Remove this application after 1.4 is relased */
52 static char *d_descrip
=
53 " DBdel(family/key): This application will delete a key from the Asterisk\n"
55 " This application has been DEPRECATED in favor of the DB_DELETE function.\n";
57 static char *dt_descrip
=
58 " DBdeltree(family[/keytree]): This application will delete a family or keytree\n"
59 "from the Asterisk database\n";
61 static char *d_app
= "DBdel";
62 static char *dt_app
= "DBdeltree";
64 static char *d_synopsis
= "Delete a key from the database";
65 static char *dt_synopsis
= "Delete a family or keytree from the database";
68 static int deltree_exec(struct ast_channel
*chan
, void *data
)
70 char *argv
, *family
, *keytree
;
71 struct ast_module_user
*u
;
73 u
= ast_module_user_add(chan
);
75 argv
= ast_strdupa(data
);
77 if (strchr(argv
, '/')) {
78 family
= strsep(&argv
, "/");
79 keytree
= strsep(&argv
, "\0");
80 if (!family
|| !keytree
) {
81 ast_log(LOG_DEBUG
, "Ignoring; Syntax error in argument\n");
82 ast_module_user_remove(u
);
85 if (ast_strlen_zero(keytree
))
92 if (option_verbose
> 2) {
94 ast_verbose(VERBOSE_PREFIX_3
"DBdeltree: family=%s, keytree=%s\n", family
, keytree
);
96 ast_verbose(VERBOSE_PREFIX_3
"DBdeltree: family=%s\n", family
);
99 if (ast_db_deltree(family
, keytree
)) {
100 if (option_verbose
> 2)
101 ast_verbose(VERBOSE_PREFIX_3
"DBdeltree: Error deleting key from database.\n");
104 ast_module_user_remove(u
);
109 static int del_exec(struct ast_channel
*chan
, void *data
)
111 char *argv
, *family
, *key
;
112 struct ast_module_user
*u
;
113 static int deprecation_warning
= 0;
115 u
= ast_module_user_add(chan
);
117 if (!deprecation_warning
) {
118 deprecation_warning
= 1;
119 ast_log(LOG_WARNING
, "The DBdel application has been deprecated in favor of the DB_DELETE dialplan function!\n");
122 argv
= ast_strdupa(data
);
124 if (strchr(argv
, '/')) {
125 family
= strsep(&argv
, "/");
126 key
= strsep(&argv
, "\0");
127 if (!family
|| !key
) {
128 ast_log(LOG_DEBUG
, "Ignoring; Syntax error in argument\n");
129 ast_module_user_remove(u
);
132 if (option_verbose
> 2)
133 ast_verbose(VERBOSE_PREFIX_3
"DBdel: family=%s, key=%s\n", family
, key
);
134 if (ast_db_del(family
, key
)) {
135 if (option_verbose
> 2)
136 ast_verbose(VERBOSE_PREFIX_3
"DBdel: Error deleting key from database.\n");
139 ast_log(LOG_DEBUG
, "Ignoring, no parameters\n");
142 ast_module_user_remove(u
);
147 static int unload_module(void)
151 retval
= ast_unregister_application(dt_app
);
152 retval
|= ast_unregister_application(d_app
);
157 static int load_module(void)
161 retval
= ast_register_application(d_app
, del_exec
, d_synopsis
, d_descrip
);
162 retval
|= ast_register_application(dt_app
, deltree_exec
, dt_synopsis
, dt_descrip
);
167 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY
, "Database Access Functions");