mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
Merge changes from team/russell/sqlite:
* Add new module, cdr_sqlite3_custom which allows logging custom CDRs into a SQLite3 database. (issue #7149, alerios) * Add new module, res_config_sqlite, which adds realtime database configuration support for SQLite version 2. I decided that this was ok since we didn't have any realtime support for version 3. If someone ports this to version 3, then version 2 support can be removed or marked deprecated. (issue #7790, rbarun_proformatique) * Mark cdr_sqlite as deprecated in favor of cdr_sqlite3_custom. Also, note that there were other modules on the bug tracker that did not make the cut because they provided some duplicated functionality. Those are: * cdr_sqlite3 (issue #6754, moy) * cdr_sqlite3 (issue #8694, bsd) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@58866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -66,6 +66,8 @@ Miscellaneous
|
|||||||
* Added the parkedcallreparking option to features.conf
|
* Added the parkedcallreparking option to features.conf
|
||||||
* SMDI is now enabled in voicemail using the smdienable option.
|
* SMDI is now enabled in voicemail using the smdienable option.
|
||||||
* Added zap show version CLI command to chan_zap.
|
* Added zap show version CLI command to chan_zap.
|
||||||
|
* Added a new CDR module, cdr_sqlite3_custom.
|
||||||
|
* Added a new realtime configuration module, res_config_sqlite
|
||||||
|
|
||||||
AMI - The manager (TCP/TLS/HTTP)
|
AMI - The manager (TCP/TLS/HTTP)
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
@@ -36,3 +36,9 @@ Applications:
|
|||||||
performs mostly a 'ChanExists' sort of function.
|
performs mostly a 'ChanExists' sort of function.
|
||||||
* SetCallerPres() has been replaced with the CALLERPRES() dialplan function
|
* SetCallerPres() has been replaced with the CALLERPRES() dialplan function
|
||||||
and is now deprecated.
|
and is now deprecated.
|
||||||
|
|
||||||
|
CDR:
|
||||||
|
|
||||||
|
* The cdr_sqlite module has been marked as deprecated in favor of
|
||||||
|
cdr_sqlite3_custom. It will potentially be removed from the tree
|
||||||
|
after Asterisk 1.6 is released.
|
||||||
|
@@ -23,6 +23,7 @@ QT=@PBX_QT@
|
|||||||
RADIUS=@PBX_RADIUS@
|
RADIUS=@PBX_RADIUS@
|
||||||
SPEEX=@PBX_SPEEX@
|
SPEEX=@PBX_SPEEX@
|
||||||
SQLITE=@PBX_SQLITE@
|
SQLITE=@PBX_SQLITE@
|
||||||
|
SQLITE3=@PBX_SQLITE3@
|
||||||
SSL=@PBX_OPENSSL@
|
SSL=@PBX_OPENSSL@
|
||||||
TONEZONE=@PBX_TONEZONE@
|
TONEZONE=@PBX_TONEZONE@
|
||||||
UNIXODBC=@PBX_UNIXODBC@
|
UNIXODBC=@PBX_UNIXODBC@
|
||||||
|
@@ -30,6 +30,8 @@
|
|||||||
*
|
*
|
||||||
* Creates the database and table on-the-fly
|
* Creates the database and table on-the-fly
|
||||||
* \ingroup cdr_drivers
|
* \ingroup cdr_drivers
|
||||||
|
*
|
||||||
|
* \note This module has been marked deprecated in favor for cdr_sqlite3_custom
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*** MODULEINFO
|
/*** MODULEINFO
|
||||||
@@ -180,6 +182,9 @@ static int load_module(void)
|
|||||||
char fn[PATH_MAX];
|
char fn[PATH_MAX];
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
ast_log(LOG_WARNING, "This module has been marked deprecated in favor of "
|
||||||
|
"using cdr_sqlite3_custom. (May be removed after Asterisk 1.6)\n");
|
||||||
|
|
||||||
/* is the database there? */
|
/* is the database there? */
|
||||||
snprintf(fn, sizeof(fn), "%s/cdr.db", ast_config_AST_LOG_DIR);
|
snprintf(fn, sizeof(fn), "%s/cdr.db", ast_config_AST_LOG_DIR);
|
||||||
db = sqlite_open(fn, AST_FILE_MODE, &zErr);
|
db = sqlite_open(fn, AST_FILE_MODE, &zErr);
|
||||||
|
264
cdr/cdr_sqlite3_custom.c
Normal file
264
cdr/cdr_sqlite3_custom.c
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
/*
|
||||||
|
* Asterisk -- An open source telephony toolkit.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999 - 2007, Digium, Inc.
|
||||||
|
*
|
||||||
|
* Mark Spencer <markster@digium.com> and others.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! \file
|
||||||
|
*
|
||||||
|
* \brief Custom SQLite3 CDR records.
|
||||||
|
*
|
||||||
|
* \author Adapted by Alejandro Rios <alejandro.rios@avatar.com.co> and
|
||||||
|
* Russell Bryant <russell@digium.com> from
|
||||||
|
* cdr_mysql_custom by Edward Eastman <ed@dm3.co.uk>,
|
||||||
|
* and cdr_sqlite by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \arg See also \ref AstCDR
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \ingroup cdr_drivers
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*** MODULEINFO
|
||||||
|
<depend>sqlite3</depend>
|
||||||
|
***/
|
||||||
|
|
||||||
|
#include "asterisk.h"
|
||||||
|
|
||||||
|
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sqlite3.h>
|
||||||
|
|
||||||
|
#include "asterisk/channel.h"
|
||||||
|
#include "asterisk/cdr.h"
|
||||||
|
#include "asterisk/module.h"
|
||||||
|
#include "asterisk/config.h"
|
||||||
|
#include "asterisk/pbx.h"
|
||||||
|
#include "asterisk/logger.h"
|
||||||
|
#include "asterisk/utils.h"
|
||||||
|
#include "asterisk/cli.h"
|
||||||
|
#include "asterisk/options.h"
|
||||||
|
|
||||||
|
AST_MUTEX_DEFINE_STATIC(lock);
|
||||||
|
|
||||||
|
static const char config_file[] = "cdr_sqlite3_custom.conf";
|
||||||
|
|
||||||
|
static char *desc = "Customizable SQLite3 CDR Backend";
|
||||||
|
static char *name = "cdr_sqlite3_custom";
|
||||||
|
static sqlite3 *db = NULL;
|
||||||
|
|
||||||
|
static char table[80];
|
||||||
|
static char columns[1024];
|
||||||
|
static char values[1024];
|
||||||
|
|
||||||
|
static int load_config(int reload)
|
||||||
|
{
|
||||||
|
struct ast_config *cfg;
|
||||||
|
struct ast_variable *mappingvar;
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
if (!(cfg = ast_config_load(config_file))) {
|
||||||
|
if (reload)
|
||||||
|
ast_log(LOG_WARNING, "%s: Failed to reload configuration file.\n", name);
|
||||||
|
else {
|
||||||
|
ast_log(LOG_WARNING,
|
||||||
|
"%s: Failed to load configuration file. Module not activated.\n",
|
||||||
|
name);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!reload)
|
||||||
|
ast_mutex_lock(&lock);
|
||||||
|
|
||||||
|
if (!(mappingvar = ast_variable_browse(cfg, "master"))) {
|
||||||
|
/* nothing configured */
|
||||||
|
ast_config_destroy(cfg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mapping must have a table name */
|
||||||
|
tmp = ast_variable_retrieve(cfg, "master", "table");
|
||||||
|
if (!ast_strlen_zero(tmp))
|
||||||
|
ast_copy_string(table, tmp, sizeof(table));
|
||||||
|
else {
|
||||||
|
ast_log(LOG_WARNING, "%s: Table name not specified. Assuming cdr.\n", name);
|
||||||
|
strcpy(table, "cdr");
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = ast_variable_retrieve(cfg, "master", "columns");
|
||||||
|
if (!ast_strlen_zero(tmp))
|
||||||
|
ast_copy_string(columns, tmp, sizeof(columns));
|
||||||
|
else {
|
||||||
|
ast_log(LOG_WARNING, "%s: Column names not specified. Module not loaded.\n",
|
||||||
|
name);
|
||||||
|
ast_config_destroy(cfg);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = ast_variable_retrieve(cfg, "master", "values");
|
||||||
|
if (!ast_strlen_zero(tmp))
|
||||||
|
ast_copy_string(values, tmp, sizeof(values));
|
||||||
|
else {
|
||||||
|
ast_log(LOG_WARNING, "%s: Values not specified. Module not loaded.\n", name);
|
||||||
|
ast_config_destroy(cfg);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!reload)
|
||||||
|
ast_mutex_unlock(&lock);
|
||||||
|
|
||||||
|
ast_config_destroy(cfg);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* assumues 'to' buffer is at least strlen(from) * 2 + 1 bytes */
|
||||||
|
static int do_escape(char *to, const char *from)
|
||||||
|
{
|
||||||
|
char *out = to;
|
||||||
|
|
||||||
|
for (; *from; from++) {
|
||||||
|
if (*from == '\'' || *from == '\\')
|
||||||
|
*out++ = *from;
|
||||||
|
*out++ = *from;
|
||||||
|
}
|
||||||
|
*out = '\0';
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sqlite3_log(struct ast_cdr *cdr)
|
||||||
|
{
|
||||||
|
int res = 0;
|
||||||
|
char *zErr = 0;
|
||||||
|
char *sql_cmd;
|
||||||
|
struct ast_channel dummy = { 0, };
|
||||||
|
int count;
|
||||||
|
|
||||||
|
{ /* Make it obvious that only sql_cmd should be used outside of this block */
|
||||||
|
char *sql_tmp_cmd;
|
||||||
|
char sql_insert_cmd[2048] = "";
|
||||||
|
sql_tmp_cmd = sqlite3_mprintf("INSERT INTO %q (%q) VALUES (%q)", table, columns, values);
|
||||||
|
dummy.cdr = cdr;
|
||||||
|
pbx_substitute_variables_helper(&dummy, sql_tmp_cmd, sql_insert_cmd, sizeof(sql_insert_cmd) - 1);
|
||||||
|
sqlite3_free(sql_tmp_cmd);
|
||||||
|
sql_cmd = alloca(strlen(sql_insert_cmd) * 2 + 1);
|
||||||
|
do_escape(sql_cmd, sql_insert_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
ast_mutex_lock(&lock);
|
||||||
|
|
||||||
|
for (count = 0; count < 5; count++) {
|
||||||
|
res = sqlite3_exec(db, sql_cmd, NULL, NULL, &zErr);
|
||||||
|
if (res != SQLITE_BUSY && res != SQLITE_LOCKED)
|
||||||
|
break;
|
||||||
|
usleep(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (zErr) {
|
||||||
|
ast_log(LOG_ERROR, "%s: %s. sentence: %s.\n", name, zErr, sql_cmd);
|
||||||
|
sqlite3_free(zErr);
|
||||||
|
}
|
||||||
|
|
||||||
|
ast_mutex_unlock(&lock);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int unload_module(void)
|
||||||
|
{
|
||||||
|
if (db)
|
||||||
|
sqlite3_close(db);
|
||||||
|
|
||||||
|
ast_cdr_unregister(name);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int load_module(void)
|
||||||
|
{
|
||||||
|
char *zErr;
|
||||||
|
char fn[PATH_MAX];
|
||||||
|
int res;
|
||||||
|
char *sql_cmd;
|
||||||
|
|
||||||
|
if (!load_config(0)) {
|
||||||
|
res = ast_cdr_register(name, desc, sqlite3_log);
|
||||||
|
if (res) {
|
||||||
|
ast_log(LOG_ERROR, "%s: Unable to register custom SQLite3 CDR handling\n", name);
|
||||||
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* is the database there? */
|
||||||
|
snprintf(fn, sizeof(fn), "%s/master.db", ast_config_AST_LOG_DIR);
|
||||||
|
res = sqlite3_open(fn, &db);
|
||||||
|
if (!db) {
|
||||||
|
ast_log(LOG_ERROR, "%s: Could not open database %s.\n", name, fn);
|
||||||
|
sqlite3_free(zErr);
|
||||||
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* is the table there? */
|
||||||
|
sql_cmd = sqlite3_mprintf("SELECT COUNT(AcctId) FROM %q;", table);
|
||||||
|
res = sqlite3_exec(db, sql_cmd, NULL, NULL, NULL);
|
||||||
|
sqlite3_free(sql_cmd);
|
||||||
|
if (res) {
|
||||||
|
sql_cmd = sqlite3_mprintf("CREATE TABLE %q (AcctId INTEGER PRIMARY KEY,%q)", table, columns);
|
||||||
|
res = sqlite3_exec(db, sql_cmd, NULL, NULL, &zErr);
|
||||||
|
sqlite3_free(sql_cmd);
|
||||||
|
if (zErr) {
|
||||||
|
ast_log(LOG_WARNING, "%s: %s.\n", name, zErr);
|
||||||
|
sqlite3_free(zErr);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
ast_log(LOG_ERROR, "%s: Unable to create table '%s': %s.\n", name, table, zErr);
|
||||||
|
sqlite3_free(zErr);
|
||||||
|
if (db)
|
||||||
|
sqlite3_close(db);
|
||||||
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int reload(void)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
|
||||||
|
ast_mutex_lock(&lock);
|
||||||
|
res = load_config(1);
|
||||||
|
ast_mutex_unlock(&lock);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "SQLite3 Custom CDR Module",
|
||||||
|
.load = load_module,
|
||||||
|
.unload = unload_module,
|
||||||
|
.reload = reload,
|
||||||
|
);
|
7
configs/cdr_sqlite3_custom.conf
Normal file
7
configs/cdr_sqlite3_custom.conf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
;
|
||||||
|
; Mappings for custom config file
|
||||||
|
;
|
||||||
|
[master] ; currently, only file "master.db" is supported, with only one table at a time.
|
||||||
|
table => cdr
|
||||||
|
columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, test
|
||||||
|
values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}'
|
@@ -18,6 +18,7 @@
|
|||||||
;uncomment to load queues.conf via the odbc engine.
|
;uncomment to load queues.conf via the odbc engine.
|
||||||
;
|
;
|
||||||
;queues.conf => odbc,asterisk,ast_config
|
;queues.conf => odbc,asterisk,ast_config
|
||||||
|
;extensions.conf => sqlite,asterisk,ast_config
|
||||||
;
|
;
|
||||||
; The following files CANNOT be loaded from Realtime storage:
|
; The following files CANNOT be loaded from Realtime storage:
|
||||||
; asterisk.conf
|
; asterisk.conf
|
||||||
@@ -42,6 +43,12 @@
|
|||||||
;example => odbc,asterisk,alttable
|
;example => odbc,asterisk,alttable
|
||||||
;example2 => ldap,"dc=oxymium,dc=net",example2
|
;example2 => ldap,"dc=oxymium,dc=net",example2
|
||||||
;
|
;
|
||||||
|
; "odbc" is shown in the examples below, but is not the only valid realtime
|
||||||
|
; engine. There is:
|
||||||
|
; odbc ... res_config_odbc
|
||||||
|
; sqlite ... res_config_sqlite
|
||||||
|
; pgsql ... res_config_pgsql
|
||||||
|
;
|
||||||
;iaxusers => odbc,asterisk
|
;iaxusers => odbc,asterisk
|
||||||
;iaxpeers => odbc,asterisk
|
;iaxpeers => odbc,asterisk
|
||||||
;sipusers => odbc,asterisk
|
;sipusers => odbc,asterisk
|
||||||
|
15
configs/res_config_sqlite.conf
Normal file
15
configs/res_config_sqlite.conf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
|
||||||
|
; The database file.
|
||||||
|
dbfile => /var/lib/asterisk/sqlite.db
|
||||||
|
|
||||||
|
; Both config_table and cdr_table are optional. If config_table is omitted,
|
||||||
|
; you must specify it in extconfig.conf. If it is both provided here and in
|
||||||
|
; extconfig.conf, the value given here is used. If cdr_table is omitted, CDR
|
||||||
|
; support is simply disabled.
|
||||||
|
config_table => ast_config
|
||||||
|
cdr_table => ast_cdr
|
||||||
|
|
||||||
|
; This parameter controls the registration of the SQLITE() Dialplan application.
|
||||||
|
app_enable => yes
|
||||||
|
|
504
configure
vendored
504
configure
vendored
@@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# From configure.ac Revision: 57557 .
|
# From configure.ac Revision: 58858 .
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.60.
|
# Generated by GNU Autoconf 2.60.
|
||||||
#
|
#
|
||||||
@@ -819,6 +819,10 @@ SQLITE_LIB
|
|||||||
SQLITE_INCLUDE
|
SQLITE_INCLUDE
|
||||||
SQLITE_DIR
|
SQLITE_DIR
|
||||||
PBX_SQLITE
|
PBX_SQLITE
|
||||||
|
SQLITE3_LIB
|
||||||
|
SQLITE3_INCLUDE
|
||||||
|
SQLITE3_DIR
|
||||||
|
PBX_SQLITE3
|
||||||
SUPPSERV_LIB
|
SUPPSERV_LIB
|
||||||
SUPPSERV_INCLUDE
|
SUPPSERV_INCLUDE
|
||||||
SUPPSERV_DIR
|
SUPPSERV_DIR
|
||||||
@@ -1520,6 +1524,7 @@ Optional Packages:
|
|||||||
--with-radius=PATH use Radius Client files in PATH
|
--with-radius=PATH use Radius Client files in PATH
|
||||||
--with-speex=PATH use Speex files in PATH
|
--with-speex=PATH use Speex files in PATH
|
||||||
--with-sqlite=PATH use SQLite files in PATH
|
--with-sqlite=PATH use SQLite files in PATH
|
||||||
|
--with-sqlite3=PATH use SQLite files in PATH
|
||||||
--with-suppserv=PATH use mISDN Supplemental Services files in PATH
|
--with-suppserv=PATH use mISDN Supplemental Services files in PATH
|
||||||
--with-ssl=PATH use OpenSSL files in PATH
|
--with-ssl=PATH use OpenSSL files in PATH
|
||||||
--with-tds=PATH use FreeTDS files in PATH
|
--with-tds=PATH use FreeTDS files in PATH
|
||||||
@@ -8820,6 +8825,34 @@ PBX_SQLITE=0
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SQLITE3_DESCRIP="SQLite"
|
||||||
|
SQLITE3_OPTION="sqlite3"
|
||||||
|
|
||||||
|
# Check whether --with-sqlite3 was given.
|
||||||
|
if test "${with_sqlite3+set}" = set; then
|
||||||
|
withval=$with_sqlite3;
|
||||||
|
case ${withval} in
|
||||||
|
n|no)
|
||||||
|
USE_SQLITE3=no
|
||||||
|
;;
|
||||||
|
y|ye|yes)
|
||||||
|
ac_mandatory_list="${ac_mandatory_list} SQLITE3"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SQLITE3_DIR="${withval}"
|
||||||
|
ac_mandatory_list="${ac_mandatory_list} SQLITE3"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
PBX_SQLITE3=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SUPPSERV_DESCRIP="mISDN Supplemental Services"
|
SUPPSERV_DESCRIP="mISDN Supplemental Services"
|
||||||
SUPPSERV_OPTION="suppserv"
|
SUPPSERV_OPTION="suppserv"
|
||||||
|
|
||||||
@@ -32007,6 +32040,461 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if test "x${PBX_SQLITE3}" != "x1" -a "${USE_SQLITE3}" != "no"; then
|
||||||
|
pbxlibdir=""
|
||||||
|
if test "x${SQLITE3_DIR}" != "x"; then
|
||||||
|
if test -d ${SQLITE3_DIR}/lib; then
|
||||||
|
pbxlibdir="-L${SQLITE3_DIR}/lib"
|
||||||
|
else
|
||||||
|
pbxlibdir="-L${SQLITE3_DIR}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
pbxfuncname="sqlite3_open"
|
||||||
|
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
|
||||||
|
AST_SQLITE3_FOUND=yes
|
||||||
|
else
|
||||||
|
as_ac_Lib=`echo "ac_cv_lib_sqlite3_${pbxfuncname}" | $as_tr_sh`
|
||||||
|
{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lsqlite3" >&5
|
||||||
|
echo $ECHO_N "checking for ${pbxfuncname} in -lsqlite3... $ECHO_C" >&6; }
|
||||||
|
if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
else
|
||||||
|
ac_check_lib_save_LIBS=$LIBS
|
||||||
|
LIBS="-lsqlite3 ${pbxlibdir} $LIBS"
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
/* Override any GCC internal prototype to avoid an error.
|
||||||
|
Use char because int might match the return type of a GCC
|
||||||
|
builtin and then its argument prototype would still apply. */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
char ${pbxfuncname} ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return ${pbxfuncname} ();
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||||
|
if { (ac_try="$ac_link"
|
||||||
|
case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_link") 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } &&
|
||||||
|
{ ac_try='test -s conftest$ac_exeext'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
eval "$as_ac_Lib=yes"
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
eval "$as_ac_Lib=no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS=$ac_check_lib_save_LIBS
|
||||||
|
fi
|
||||||
|
ac_res=`eval echo '${'$as_ac_Lib'}'`
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||||
|
echo "${ECHO_T}$ac_res" >&6; }
|
||||||
|
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
|
||||||
|
AST_SQLITE3_FOUND=yes
|
||||||
|
else
|
||||||
|
AST_SQLITE3_FOUND=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "${AST_SQLITE3_FOUND}" = "yes"; then
|
||||||
|
SQLITE3_LIB="-lsqlite3 "
|
||||||
|
SQLITE3_HEADER_FOUND="1"
|
||||||
|
if test "x${SQLITE3_DIR}" != "x"; then
|
||||||
|
SQLITE3_LIB="${pbxlibdir} ${SQLITE3_LIB}"
|
||||||
|
SQLITE3_INCLUDE="-I${SQLITE3_DIR}/include"
|
||||||
|
saved_cppflags="${CPPFLAGS}"
|
||||||
|
CPPFLAGS="${CPPFLAGS} -I${SQLITE3_DIR}/include"
|
||||||
|
if test "xsqlite3.h" != "x" ; then
|
||||||
|
as_ac_Header=`echo "ac_cv_header_${SQLITE3_DIR}/include/sqlite3.h" | $as_tr_sh`
|
||||||
|
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||||
|
{ echo "$as_me:$LINENO: checking for ${SQLITE3_DIR}/include/sqlite3.h" >&5
|
||||||
|
echo $ECHO_N "checking for ${SQLITE3_DIR}/include/sqlite3.h... $ECHO_C" >&6; }
|
||||||
|
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
fi
|
||||||
|
ac_res=`eval echo '${'$as_ac_Header'}'`
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||||
|
echo "${ECHO_T}$ac_res" >&6; }
|
||||||
|
else
|
||||||
|
# Is the header compilable?
|
||||||
|
{ echo "$as_me:$LINENO: checking ${SQLITE3_DIR}/include/sqlite3.h usability" >&5
|
||||||
|
echo $ECHO_N "checking ${SQLITE3_DIR}/include/sqlite3.h usability... $ECHO_C" >&6; }
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#include <${SQLITE3_DIR}/include/sqlite3.h>
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext
|
||||||
|
if { (ac_try="$ac_compile"
|
||||||
|
case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_compile") 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } &&
|
||||||
|
{ ac_try='test -s conftest.$ac_objext'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
ac_header_compiler=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
ac_header_compiler=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||||
|
echo "${ECHO_T}$ac_header_compiler" >&6; }
|
||||||
|
|
||||||
|
# Is the header present?
|
||||||
|
{ echo "$as_me:$LINENO: checking ${SQLITE3_DIR}/include/sqlite3.h presence" >&5
|
||||||
|
echo $ECHO_N "checking ${SQLITE3_DIR}/include/sqlite3.h presence... $ECHO_C" >&6; }
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#include <${SQLITE3_DIR}/include/sqlite3.h>
|
||||||
|
_ACEOF
|
||||||
|
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||||
|
case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } >/dev/null; then
|
||||||
|
if test -s conftest.err; then
|
||||||
|
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||||
|
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||||
|
else
|
||||||
|
ac_cpp_err=
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ac_cpp_err=yes
|
||||||
|
fi
|
||||||
|
if test -z "$ac_cpp_err"; then
|
||||||
|
ac_header_preproc=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
ac_header_preproc=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f conftest.err conftest.$ac_ext
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||||
|
echo "${ECHO_T}$ac_header_preproc" >&6; }
|
||||||
|
|
||||||
|
# So? What about this header?
|
||||||
|
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||||
|
yes:no: )
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the compiler's result" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the compiler's result" >&2;}
|
||||||
|
ac_header_preproc=yes
|
||||||
|
;;
|
||||||
|
no:yes:* )
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: present but cannot be compiled" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: present but cannot be compiled" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: check for missing prerequisite headers?" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: check for missing prerequisite headers?" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: see the Autoconf documentation" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: see the Autoconf documentation" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the preprocessor's result" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the preprocessor's result" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: in the future, the compiler will take precedence" >&5
|
||||||
|
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: in the future, the compiler will take precedence" >&2;}
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
{ echo "$as_me:$LINENO: checking for ${SQLITE3_DIR}/include/sqlite3.h" >&5
|
||||||
|
echo $ECHO_N "checking for ${SQLITE3_DIR}/include/sqlite3.h... $ECHO_C" >&6; }
|
||||||
|
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
else
|
||||||
|
eval "$as_ac_Header=\$ac_header_preproc"
|
||||||
|
fi
|
||||||
|
ac_res=`eval echo '${'$as_ac_Header'}'`
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||||
|
echo "${ECHO_T}$ac_res" >&6; }
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test `eval echo '${'$as_ac_Header'}'` = yes; then
|
||||||
|
SQLITE3_HEADER_FOUND=1
|
||||||
|
else
|
||||||
|
SQLITE3_HEADER_FOUND=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
CPPFLAGS="${saved_cppflags}"
|
||||||
|
else
|
||||||
|
if test "xsqlite3.h" != "x" ; then
|
||||||
|
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||||
|
{ echo "$as_me:$LINENO: checking for sqlite3.h" >&5
|
||||||
|
echo $ECHO_N "checking for sqlite3.h... $ECHO_C" >&6; }
|
||||||
|
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
fi
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_cv_header_sqlite3_h" >&5
|
||||||
|
echo "${ECHO_T}$ac_cv_header_sqlite3_h" >&6; }
|
||||||
|
else
|
||||||
|
# Is the header compilable?
|
||||||
|
{ echo "$as_me:$LINENO: checking sqlite3.h usability" >&5
|
||||||
|
echo $ECHO_N "checking sqlite3.h usability... $ECHO_C" >&6; }
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#include <sqlite3.h>
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext
|
||||||
|
if { (ac_try="$ac_compile"
|
||||||
|
case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_compile") 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } &&
|
||||||
|
{ ac_try='test -s conftest.$ac_objext'
|
||||||
|
{ (case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_try") 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
ac_header_compiler=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
ac_header_compiler=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||||
|
echo "${ECHO_T}$ac_header_compiler" >&6; }
|
||||||
|
|
||||||
|
# Is the header present?
|
||||||
|
{ echo "$as_me:$LINENO: checking sqlite3.h presence" >&5
|
||||||
|
echo $ECHO_N "checking sqlite3.h presence... $ECHO_C" >&6; }
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#include <sqlite3.h>
|
||||||
|
_ACEOF
|
||||||
|
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||||
|
case "(($ac_try" in
|
||||||
|
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||||
|
*) ac_try_echo=$ac_try;;
|
||||||
|
esac
|
||||||
|
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||||
|
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } >/dev/null; then
|
||||||
|
if test -s conftest.err; then
|
||||||
|
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||||
|
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||||
|
else
|
||||||
|
ac_cpp_err=
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ac_cpp_err=yes
|
||||||
|
fi
|
||||||
|
if test -z "$ac_cpp_err"; then
|
||||||
|
ac_header_preproc=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
ac_header_preproc=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f conftest.err conftest.$ac_ext
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||||
|
echo "${ECHO_T}$ac_header_preproc" >&6; }
|
||||||
|
|
||||||
|
# So? What about this header?
|
||||||
|
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||||
|
yes:no: )
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: proceeding with the compiler's result" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: proceeding with the compiler's result" >&2;}
|
||||||
|
ac_header_preproc=yes
|
||||||
|
;;
|
||||||
|
no:yes:* )
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: present but cannot be compiled" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: present but cannot be compiled" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: check for missing prerequisite headers?" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: check for missing prerequisite headers?" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: see the Autoconf documentation" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: see the Autoconf documentation" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: proceeding with the preprocessor's result" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: proceeding with the preprocessor's result" >&2;}
|
||||||
|
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: in the future, the compiler will take precedence" >&5
|
||||||
|
echo "$as_me: WARNING: sqlite3.h: in the future, the compiler will take precedence" >&2;}
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
{ echo "$as_me:$LINENO: checking for sqlite3.h" >&5
|
||||||
|
echo $ECHO_N "checking for sqlite3.h... $ECHO_C" >&6; }
|
||||||
|
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
else
|
||||||
|
ac_cv_header_sqlite3_h=$ac_header_preproc
|
||||||
|
fi
|
||||||
|
{ echo "$as_me:$LINENO: result: $ac_cv_header_sqlite3_h" >&5
|
||||||
|
echo "${ECHO_T}$ac_cv_header_sqlite3_h" >&6; }
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test $ac_cv_header_sqlite3_h = yes; then
|
||||||
|
SQLITE3_HEADER_FOUND=1
|
||||||
|
else
|
||||||
|
SQLITE3_HEADER_FOUND=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x${SQLITE3_HEADER_FOUND}" = "x0" ; then
|
||||||
|
SQLITE3_LIB=""
|
||||||
|
SQLITE3_INCLUDE=""
|
||||||
|
else
|
||||||
|
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
|
||||||
|
SQLITE3_LIB=""
|
||||||
|
fi
|
||||||
|
PBX_SQLITE3=1
|
||||||
|
# XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_SQLITE3 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_SQLITE3_VERSION
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then
|
if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then
|
||||||
pbxlibdir=""
|
pbxlibdir=""
|
||||||
if test "x${OPENSSL_DIR}" != "x"; then
|
if test "x${OPENSSL_DIR}" != "x"; then
|
||||||
@@ -39371,6 +39859,10 @@ SQLITE_LIB!$SQLITE_LIB$ac_delim
|
|||||||
SQLITE_INCLUDE!$SQLITE_INCLUDE$ac_delim
|
SQLITE_INCLUDE!$SQLITE_INCLUDE$ac_delim
|
||||||
SQLITE_DIR!$SQLITE_DIR$ac_delim
|
SQLITE_DIR!$SQLITE_DIR$ac_delim
|
||||||
PBX_SQLITE!$PBX_SQLITE$ac_delim
|
PBX_SQLITE!$PBX_SQLITE$ac_delim
|
||||||
|
SQLITE3_LIB!$SQLITE3_LIB$ac_delim
|
||||||
|
SQLITE3_INCLUDE!$SQLITE3_INCLUDE$ac_delim
|
||||||
|
SQLITE3_DIR!$SQLITE3_DIR$ac_delim
|
||||||
|
PBX_SQLITE3!$PBX_SQLITE3$ac_delim
|
||||||
SUPPSERV_LIB!$SUPPSERV_LIB$ac_delim
|
SUPPSERV_LIB!$SUPPSERV_LIB$ac_delim
|
||||||
SUPPSERV_INCLUDE!$SUPPSERV_INCLUDE$ac_delim
|
SUPPSERV_INCLUDE!$SUPPSERV_INCLUDE$ac_delim
|
||||||
SUPPSERV_DIR!$SUPPSERV_DIR$ac_delim
|
SUPPSERV_DIR!$SUPPSERV_DIR$ac_delim
|
||||||
@@ -39441,10 +39933,6 @@ OPENH323_SUFFIX!$OPENH323_SUFFIX$ac_delim
|
|||||||
OPENH323_BUILD!$OPENH323_BUILD$ac_delim
|
OPENH323_BUILD!$OPENH323_BUILD$ac_delim
|
||||||
QTMOC!$QTMOC$ac_delim
|
QTMOC!$QTMOC$ac_delim
|
||||||
EDITLINE_LIB!$EDITLINE_LIB$ac_delim
|
EDITLINE_LIB!$EDITLINE_LIB$ac_delim
|
||||||
PBX_H323!$PBX_H323$ac_delim
|
|
||||||
PBX_IXJUSER!$PBX_IXJUSER$ac_delim
|
|
||||||
GTKCONFIG!$GTKCONFIG$ac_delim
|
|
||||||
PBX_GTK!$PBX_GTK$ac_delim
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
|
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
|
||||||
@@ -39486,13 +39974,17 @@ _ACEOF
|
|||||||
ac_delim='%!_!# '
|
ac_delim='%!_!# '
|
||||||
for ac_last_try in false false false false false :; do
|
for ac_last_try in false false false false false :; do
|
||||||
cat >conf$$subs.sed <<_ACEOF
|
cat >conf$$subs.sed <<_ACEOF
|
||||||
|
PBX_H323!$PBX_H323$ac_delim
|
||||||
|
PBX_IXJUSER!$PBX_IXJUSER$ac_delim
|
||||||
|
GTKCONFIG!$GTKCONFIG$ac_delim
|
||||||
|
PBX_GTK!$PBX_GTK$ac_delim
|
||||||
GTK_INCLUDE!$GTK_INCLUDE$ac_delim
|
GTK_INCLUDE!$GTK_INCLUDE$ac_delim
|
||||||
GTK_LIB!$GTK_LIB$ac_delim
|
GTK_LIB!$GTK_LIB$ac_delim
|
||||||
CURL_CONFIG!$CURL_CONFIG$ac_delim
|
CURL_CONFIG!$CURL_CONFIG$ac_delim
|
||||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 4; then
|
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 8; then
|
||||||
break
|
break
|
||||||
elif $ac_last_try; then
|
elif $ac_last_try; then
|
||||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||||
|
@@ -210,6 +210,7 @@ AST_EXT_LIB_SETUP([QT], [Qt], [qt])
|
|||||||
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
|
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
|
||||||
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
|
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
|
||||||
AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
|
AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
|
||||||
|
AST_EXT_LIB_SETUP([SQLITE3], [SQLite], [sqlite3])
|
||||||
AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
|
AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
|
||||||
AST_EXT_LIB_SETUP([OPENSSL], [OpenSSL], [ssl])
|
AST_EXT_LIB_SETUP([OPENSSL], [OpenSSL], [ssl])
|
||||||
AST_EXT_LIB_SETUP([FREETDS], [FreeTDS], [tds])
|
AST_EXT_LIB_SETUP([FREETDS], [FreeTDS], [tds])
|
||||||
@@ -832,6 +833,8 @@ AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
|
|||||||
|
|
||||||
AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
|
AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
|
||||||
|
|
||||||
|
AST_EXT_LIB_CHECK([SQLITE3], [sqlite3], [sqlite3_open], [sqlite3.h])
|
||||||
|
|
||||||
AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl2_connect], [openssl/ssl.h], [-lcrypto])
|
AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl2_connect], [openssl/ssl.h], [-lcrypto])
|
||||||
|
|
||||||
AST_EXT_LIB_CHECK([FREETDS], [tds], [tds_version], [tds.h])
|
AST_EXT_LIB_CHECK([FREETDS], [tds], [tds_version], [tds.h])
|
||||||
|
117
doc/res_config_sqlite.txt
Normal file
117
doc/res_config_sqlite.txt
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* res_sqlite - SQLite 2 support for Asterisk
|
||||||
|
*
|
||||||
|
* This module can be used as a static/RealTime configuration module, and a CDR
|
||||||
|
* handler. See the Doxygen documentation for a detailed description of the
|
||||||
|
* module, and the configs/ directory for the sample configuration file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tables for res_config_sqlite.so.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RealTime static table.
|
||||||
|
*/
|
||||||
|
CREATE TABLE ast_config
|
||||||
|
(
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
commented INT(11) NOT NULL DEFAULT '0',
|
||||||
|
filename VARCHAR(128) NOT NULL,
|
||||||
|
category VARCHAR(128) NOT NULL,
|
||||||
|
var_name VARCHAR(128) NOT NULL,
|
||||||
|
var_val VARCHAR(128) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX ast_config_filename_commented ON ast_config(filename, commented);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CDR table (this table is automatically created if non existent).
|
||||||
|
*
|
||||||
|
* CREATE TABLE ast_cdr
|
||||||
|
* (
|
||||||
|
* id INTEGER PRIMARY KEY,
|
||||||
|
* clid VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* src VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* dst VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* dcontext VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* channel VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* dstchannel VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* lastapp VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* lastdata VARCHAR(80) NOT NULL DEFAULT '',
|
||||||
|
* start CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
* answer CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
* end CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
|
* duration INT(11) NOT NULL DEFAULT '0',
|
||||||
|
* billsec INT(11) NOT NULL DEFAULT '0',
|
||||||
|
* disposition INT(11) NOT NULL DEFAULT '0',
|
||||||
|
* amaflags INT(11) NOT NULL DEFAULT '0',
|
||||||
|
* accountcode VARCHAR(20) NOT NULL DEFAULT '',
|
||||||
|
* uniqueid VARCHAR(32) NOT NULL DEFAULT '',
|
||||||
|
* userfield VARCHAR(255) NOT NULL DEFAULT ''
|
||||||
|
* );
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SIP RealTime table.
|
||||||
|
*/
|
||||||
|
CREATE TABLE ast_sip
|
||||||
|
(
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
commented INT(11) NOT NULL DEFAULT '0',
|
||||||
|
name VARCHAR(80) NOT NULL,
|
||||||
|
accountcode VARCHAR(20),
|
||||||
|
amaflags VARCHAR(13),
|
||||||
|
callgroup VARCHAR(10),
|
||||||
|
callerid VARCHAR(80),
|
||||||
|
canreinvite CHAR(3),
|
||||||
|
context VARCHAR(80),
|
||||||
|
defaultip VARCHAR(15),
|
||||||
|
dtmfmode VARCHAR(7),
|
||||||
|
fromuser VARCHAR(80),
|
||||||
|
fromdomain VARCHAR(80),
|
||||||
|
fullcontact VARCHAR(80),
|
||||||
|
host VARCHAR(31) NOT NULL,
|
||||||
|
insecure VARCHAR(4),
|
||||||
|
language CHAR(2),
|
||||||
|
mailbox VARCHAR(50),
|
||||||
|
md5secret VARCHAR(80),
|
||||||
|
nat VARCHAR(5) NOT NULL DEFAULT 'no',
|
||||||
|
deny VARCHAR(95),
|
||||||
|
permit VARCHAR(95),
|
||||||
|
mask VARCHAR(95),
|
||||||
|
pickupgroup VARCHAR(10),
|
||||||
|
port VARCHAR(5) NOT NULL,
|
||||||
|
qualify CHAR(3),
|
||||||
|
restrictcid CHAR(1),
|
||||||
|
rtptimeout CHAR(3),
|
||||||
|
rtpholdtimeout CHAR(3),
|
||||||
|
secret VARCHAR(80),
|
||||||
|
type VARCHAR(6) NOT NULL DEFAULT 'friend',
|
||||||
|
username VARCHAR(80) NOT NULL,
|
||||||
|
disallow VARCHAR(100),
|
||||||
|
allow VARCHAR(100),
|
||||||
|
musiconhold VARCHAR(100),
|
||||||
|
regseconds INT(11) NOT NULL DEFAULT '0',
|
||||||
|
ipaddr VARCHAR(15) NOT NULL,
|
||||||
|
regexten VARCHAR(80) NOT NULL,
|
||||||
|
cancallforward CHAR(3),
|
||||||
|
setvar VARCHAR(100) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX ast_sip_name ON ast_sip(name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dialplan RealTime table.
|
||||||
|
*/
|
||||||
|
CREATE TABLE ast_exten
|
||||||
|
(
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
commented INT(11) NOT NULL DEFAULT '0',
|
||||||
|
context VARCHAR(20) NOT NULL,
|
||||||
|
exten VARCHAR(20) NOT NULL,
|
||||||
|
priority TINYINT(4) NOT NULL,
|
||||||
|
app VARCHAR(20) NOT NULL,
|
||||||
|
appdata VARCHAR(128) NOT NULL
|
||||||
|
);
|
||||||
|
|
@@ -394,6 +394,12 @@
|
|||||||
/* Define this to indicate the ${SQLITE_DESCRIP} library */
|
/* Define this to indicate the ${SQLITE_DESCRIP} library */
|
||||||
#undef HAVE_SQLITE
|
#undef HAVE_SQLITE
|
||||||
|
|
||||||
|
/* Define this to indicate the ${SQLITE3_DESCRIP} library */
|
||||||
|
#undef HAVE_SQLITE3
|
||||||
|
|
||||||
|
/* Define to indicate the ${SQLITE3_DESCRIP} library version */
|
||||||
|
#undef HAVE_SQLITE3_VERSION
|
||||||
|
|
||||||
/* Define to indicate the ${SQLITE_DESCRIP} library version */
|
/* Define to indicate the ${SQLITE_DESCRIP} library version */
|
||||||
#undef HAVE_SQLITE_VERSION
|
#undef HAVE_SQLITE_VERSION
|
||||||
|
|
||||||
|
@@ -141,6 +141,9 @@ SPEEX_LIB=@SPEEX_LIB@
|
|||||||
SQLITE_INCLUDE=@SQLITE_INCLUDE@
|
SQLITE_INCLUDE=@SQLITE_INCLUDE@
|
||||||
SQLITE_LIB=@SQLITE_LIB@
|
SQLITE_LIB=@SQLITE_LIB@
|
||||||
|
|
||||||
|
SQLITE3_INCLUDE=@SQLITE3_INCLUDE@
|
||||||
|
SQLITE3_LIB=@SQLITE3_LIB@
|
||||||
|
|
||||||
SSL_INCLUDE=@OPENSSL_INCLUDE@
|
SSL_INCLUDE=@OPENSSL_INCLUDE@
|
||||||
SSL_LIB=@OPENSSL_LIB@
|
SSL_LIB=@OPENSSL_LIB@
|
||||||
|
|
||||||
|
1311
res/res_config_sqlite.c
Normal file
1311
res/res_config_sqlite.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user