Skip to content
Snippets Groups Projects
app_db.c 4.19 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * Asterisk -- An open source telephony toolkit.
    
     * Copyright (C) 1999 - 2005, Digium, Inc.
    
     * Copyright (C) 2003, Jefferson Noxon
     *
    
     * Mark Spencer <markster@digium.com>
    
     * Jefferson Noxon <jeff@debian.org>
     *
    
     * See http://www.asterisk.org for more information about
     * the Asterisk project. Please do not directly contact
     * any of the maintainers of this project for assistance;
     * the project provides a web site, mailing lists and IRC
     * channels for your use.
     *
    
     * This program is free software, distributed under the terms of
    
     * the GNU General Public License Version 2. See the LICENSE file
     * at the top of the source tree.
     */
    
    
     * \brief Database access functions
    
     * \author Mark Spencer <markster@digium.com>
     * \author Jefferson Noxon <jeff@debian.org>
     *
    
    Russell Bryant's avatar
    Russell Bryant committed
     * \ingroup applications
    
    /*** MODULEINFO
    	<support_level>core</support_level>
     ***/
    
    
    ASTERISK_REGISTER_FILE()
    
    #include "asterisk/file.h"
    #include "asterisk/channel.h"
    #include "asterisk/pbx.h"
    #include "asterisk/module.h"
    #include "asterisk/astdb.h"
    #include "asterisk/lock.h"
    
    /*** DOCUMENTATION
    	<application name="DBdel" language="en_US">
    		<synopsis>
    			Delete a key from the asterisk database.
    		</synopsis>
    		<syntax argsep="/">
    			<parameter name="family" required="true" />
    			<parameter name="key" required="true" />
    		</syntax>
    		<description>
    			<para>This application will delete a <replaceable>key</replaceable> from the Asterisk
    			database.</para>
    			<note><para>This application has been DEPRECATED in favor of the DB_DELETE function.</para></note>
    		</description>
    		<see-also>
    			<ref type="function">DB_DELETE</ref>
    
    			<ref type="application">DBdeltree</ref>
    			<ref type="function">DB</ref>
    
    		</see-also>
    	</application>
    	<application name="DBdeltree" language="en_US">
    		<synopsis>
    			Delete a family or keytree from the asterisk database.
    		</synopsis>
    		<syntax argsep="/">
    			<parameter name="family" required="true" />
    			<parameter name="keytree" />
    		</syntax>
    		<description>
    			<para>This application will delete a <replaceable>family</replaceable> or <replaceable>keytree</replaceable>
    			from the Asterisk database.</para>
    		</description>
    
    		<see-also>
    			<ref type="function">DB_DELETE</ref>
    			<ref type="application">DBdel</ref>
    			<ref type="function">DB</ref>
    		</see-also>
    
    	</application>
     ***/
    
    static const char d_app[] = "DBdel";
    static const char dt_app[] = "DBdeltree";
    
    static int deltree_exec(struct ast_channel *chan, const char *data)
    
    	if (strchr(argv, '/')) {
    		family = strsep(&argv, "/");
    		keytree = strsep(&argv, "\0");
    
    Joshua Colp's avatar
    Joshua Colp committed
    		if (!family || !keytree) {
    			ast_debug(1, "Ignoring; Syntax error in argument\n");
    			return 0;
    		}
    
    		if (ast_strlen_zero(keytree))
    
    		ast_verb(3, "DBdeltree: family=%s, keytree=%s\n", family, keytree);
    
    		ast_verb(3, "DBdeltree: family=%s\n", family);
    
    	if (ast_db_deltree(family, keytree) < 0) {
    
    		ast_verb(3, "DBdeltree: Error deleting key from database.\n");
    
    static int del_exec(struct ast_channel *chan, const char *data)
    
    	if (!deprecation_warning) {
    		deprecation_warning = 1;
    		ast_log(LOG_WARNING, "The DBdel application has been deprecated in favor of the DB_DELETE dialplan function!\n");
    	}
    
    	if (strchr(argv, '/')) {
    		family = strsep(&argv, "/");
    		key = strsep(&argv, "\0");
    
    			ast_debug(1, "Ignoring; Syntax error in argument\n");
    
    		ast_verb(3, "DBdel: family=%s, key=%s\n", family, key);
    		if (ast_db_del(family, key))
    			ast_verb(3, "DBdel: Error deleting key from database.\n");
    
    		ast_debug(1, "Ignoring, no parameters\n");
    
    static int unload_module(void)
    
    	retval = ast_unregister_application(dt_app);
    	retval |= ast_unregister_application(d_app);
    
    static int load_module(void)
    
    	retval = ast_register_application_xml(d_app, del_exec);
    	retval |= ast_register_application_xml(dt_app, deltree_exec);
    
    AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Database Access Functions");