mirror of
https://github.com/tstack/lnav.git
synced 2024-10-05 17:17:37 +03:00
remove soci
This commit is contained in:
parent
905b33d9a6
commit
7a2855349a
@ -87,7 +87,6 @@ CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CURSES_LIB = @CURSES_LIB@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -127,8 +126,6 @@ READLINE_CFLAGS = @READLINE_CFLAGS@
|
||||
READLINE_LIBS = @READLINE_LIBS@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SOCI_CXXFLAGS = @SOCI_CXXFLAGS@
|
||||
SOCI_LIBS = @SOCI_LIBS@
|
||||
SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
|
||||
SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@
|
||||
SQLITE3_LIBS = @SQLITE3_LIBS@
|
||||
|
446
configure
vendored
446
configure
vendored
@ -724,11 +724,6 @@ SQLITE3_CFLAGS
|
||||
SQLITE3_LDFLAGS
|
||||
SQLITE3_LIBS
|
||||
SQLITE3_VERSION
|
||||
CXXCPP
|
||||
SOCI_LIBS
|
||||
SOCI_CXXFLAGS
|
||||
HAVE_SOCI_TRUE
|
||||
HAVE_SOCI_FALSE
|
||||
HAVE_LIBSQLITE3_TRUE
|
||||
HAVE_LIBSQLITE3_FALSE
|
||||
LIBOBJS
|
||||
@ -745,8 +740,7 @@ CPPFLAGS
|
||||
CCC
|
||||
CC
|
||||
CFLAGS
|
||||
CPP
|
||||
CXXCPP'
|
||||
CPP'
|
||||
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@ -1338,7 +1332,6 @@ Optional Packages:
|
||||
--with-readline[=prefix] compile xmlreadline part (via libreadline check)
|
||||
--with-sqlite3=[ARG] use SQLite 3 library [default=yes], optionally
|
||||
specify the prefix for sqlite3 library
|
||||
--with-soci[=prefix] compile soci part (via libsoci check)
|
||||
|
||||
Some influential environment variables:
|
||||
CXX C++ compiler command
|
||||
@ -1351,7 +1344,6 @@ Some influential environment variables:
|
||||
CC C compiler command
|
||||
CFLAGS C compiler flags
|
||||
CPP C preprocessor
|
||||
CXXCPP C++ preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
@ -6819,428 +6811,6 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
|
||||
echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
|
||||
if test -z "$CXXCPP"; then
|
||||
if test "${ac_cv_prog_CXXCPP+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
# Double quotes because CXXCPP needs to be expanded
|
||||
for CXXCPP in "$CXX -E" "/lib/cpp"
|
||||
do
|
||||
ac_preproc_ok=false
|
||||
for ac_cxx_preproc_warn_flag in '' yes
|
||||
do
|
||||
# Use a header file that comes with gcc, so configuring glibc
|
||||
# with a fresh cross-compiler works.
|
||||
# Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||||
# <limits.h> exists even on freestanding compilers.
|
||||
# On the NeXT, cc -E runs the code through the compiler's parser,
|
||||
# not just through cpp. "Syntax error" is here to catch this case.
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#ifdef __STDC__
|
||||
# include <limits.h>
|
||||
#else
|
||||
# include <assert.h>
|
||||
#endif
|
||||
Syntax error
|
||||
_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 && {
|
||||
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
:
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
# Broken: fails on valid input.
|
||||
continue
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
|
||||
# OK, works on sane cases. Now check whether nonexistent headers
|
||||
# can be detected and how.
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <ac_nonexistent.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 && {
|
||||
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
# Broken: success on invalid input.
|
||||
continue
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
# Passes both tests.
|
||||
ac_preproc_ok=:
|
||||
break
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
|
||||
done
|
||||
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
if $ac_preproc_ok; then
|
||||
break
|
||||
fi
|
||||
|
||||
done
|
||||
ac_cv_prog_CXXCPP=$CXXCPP
|
||||
|
||||
fi
|
||||
CXXCPP=$ac_cv_prog_CXXCPP
|
||||
else
|
||||
ac_cv_prog_CXXCPP=$CXXCPP
|
||||
fi
|
||||
{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
|
||||
echo "${ECHO_T}$CXXCPP" >&6; }
|
||||
ac_preproc_ok=false
|
||||
for ac_cxx_preproc_warn_flag in '' yes
|
||||
do
|
||||
# Use a header file that comes with gcc, so configuring glibc
|
||||
# with a fresh cross-compiler works.
|
||||
# Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||||
# <limits.h> exists even on freestanding compilers.
|
||||
# On the NeXT, cc -E runs the code through the compiler's parser,
|
||||
# not just through cpp. "Syntax error" is here to catch this case.
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#ifdef __STDC__
|
||||
# include <limits.h>
|
||||
#else
|
||||
# include <assert.h>
|
||||
#endif
|
||||
Syntax error
|
||||
_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 && {
|
||||
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
:
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
# Broken: fails on valid input.
|
||||
continue
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
|
||||
# OK, works on sane cases. Now check whether nonexistent headers
|
||||
# can be detected and how.
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <ac_nonexistent.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 && {
|
||||
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
# Broken: success on invalid input.
|
||||
continue
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
# Passes both tests.
|
||||
ac_preproc_ok=:
|
||||
break
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
|
||||
done
|
||||
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
if $ac_preproc_ok; then
|
||||
:
|
||||
else
|
||||
{ { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
|
||||
See \`config.log' for more details." >&5
|
||||
echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
|
||||
{ echo "$as_me:$LINENO: checking lib soci" >&5
|
||||
echo $ECHO_N "checking lib soci... $ECHO_C" >&6; }
|
||||
|
||||
# Check whether --with-soci was given.
|
||||
if test "${with_soci+set}" = set; then
|
||||
withval=$with_soci;
|
||||
else
|
||||
with_soci="yes"
|
||||
fi
|
||||
|
||||
if test ".$with_soci" = ".no" ; then
|
||||
{ echo "$as_me:$LINENO: result: disabled" >&5
|
||||
echo "${ECHO_T}disabled" >&6; }
|
||||
{ { echo "$as_me:$LINENO: error: soci required to build" >&5
|
||||
echo "$as_me: error: soci required to build" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: (testing)" >&5
|
||||
echo "${ECHO_T}(testing)" >&6; }
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
|
||||
for ac_header in soci/soci.h
|
||||
do
|
||||
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||
{ echo "$as_me:$LINENO: checking for $ac_header" >&5
|
||||
echo $ECHO_N "checking for $ac_header... $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 $ac_header usability" >&5
|
||||
echo $ECHO_N "checking $ac_header 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 <$ac_header>
|
||||
_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); } && {
|
||||
test -z "$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext; 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 $ac_header presence" >&5
|
||||
echo $ECHO_N "checking $ac_header 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 <$ac_header>
|
||||
_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 && {
|
||||
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.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_cxx_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
|
||||
( cat <<\_ASBOX
|
||||
## ------------------------------------------ ##
|
||||
## Report this to timothyshanestack@gmail.com ##
|
||||
## ------------------------------------------ ##
|
||||
_ASBOX
|
||||
) | sed "s/^/$as_me: WARNING: /" >&2
|
||||
;;
|
||||
esac
|
||||
{ echo "$as_me:$LINENO: checking for $ac_header" >&5
|
||||
echo $ECHO_N "checking for $ac_header... $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
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
if test "$ac_cv_header_soci_soci_h" = "yes" ; then
|
||||
if test ".$with_soci" == ".yes"; then
|
||||
with_soci="/usr/local/include"
|
||||
fi
|
||||
SOCI_CXXFLAGS="-I${with_soci}/soci -I${with_soci}/soci/sqlite3"
|
||||
SOCI_LIBS="-lsoci_sqlite3-gcc-3_0 -lsoci_core-gcc-3_0"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test x"$SOCI_CXXFLAGS" != x""; then
|
||||
HAVE_SOCI_TRUE=
|
||||
HAVE_SOCI_FALSE='#'
|
||||
else
|
||||
HAVE_SOCI_TRUE='#'
|
||||
HAVE_SOCI_FALSE=
|
||||
fi
|
||||
|
||||
|
||||
if
|
||||
test -n "$SQLITE3_CFLAGS" -a -n "$SQLITE3_LDFLAGS"; then
|
||||
@ -7409,13 +6979,6 @@ echo "$as_me: error: conditional \"HAVE_OBJCOPY\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
if test -z "${HAVE_SOCI_TRUE}" && test -z "${HAVE_SOCI_FALSE}"; then
|
||||
{ { echo "$as_me:$LINENO: error: conditional \"HAVE_SOCI\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." >&5
|
||||
echo "$as_me: error: conditional \"HAVE_SOCI\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
if test -z "${HAVE_LIBSQLITE3_TRUE}" && test -z "${HAVE_LIBSQLITE3_FALSE}"; then
|
||||
{ { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSQLITE3\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." >&5
|
||||
@ -8107,18 +7670,13 @@ SQLITE3_CFLAGS!$SQLITE3_CFLAGS$ac_delim
|
||||
SQLITE3_LDFLAGS!$SQLITE3_LDFLAGS$ac_delim
|
||||
SQLITE3_LIBS!$SQLITE3_LIBS$ac_delim
|
||||
SQLITE3_VERSION!$SQLITE3_VERSION$ac_delim
|
||||
CXXCPP!$CXXCPP$ac_delim
|
||||
SOCI_LIBS!$SOCI_LIBS$ac_delim
|
||||
SOCI_CXXFLAGS!$SOCI_CXXFLAGS$ac_delim
|
||||
HAVE_SOCI_TRUE!$HAVE_SOCI_TRUE$ac_delim
|
||||
HAVE_SOCI_FALSE!$HAVE_SOCI_FALSE$ac_delim
|
||||
HAVE_LIBSQLITE3_TRUE!$HAVE_LIBSQLITE3_TRUE$ac_delim
|
||||
HAVE_LIBSQLITE3_FALSE!$HAVE_LIBSQLITE3_FALSE$ac_delim
|
||||
LIBOBJS!$LIBOBJS$ac_delim
|
||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 15; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
|
@ -59,8 +59,6 @@ AX_PATH_LIB_PCRE([], [AC_MSG_ERROR([pcre required to build])])
|
||||
AX_PATH_LIB_READLINE([], [AC_MSG_ERROR([readline required to build])])
|
||||
|
||||
AX_LIB_SQLITE3("3.0.0")
|
||||
AX_PATH_LIB_SOCI([], [AC_MSG_ERROR([soci required to build])])
|
||||
AM_CONDITIONAL(HAVE_SOCI, test x"$SOCI_CXXFLAGS" != x"")
|
||||
|
||||
AM_CONDITIONAL(HAVE_LIBSQLITE3, [
|
||||
test -n "$SQLITE3_CFLAGS" -a -n "$SQLITE3_LDFLAGS"])
|
||||
|
26
lnav.m4
26
lnav.m4
@ -114,29 +114,3 @@ AC_DEFUN([MP_WITH_CURSES],
|
||||
LIBS="$mp_save_LIBS"
|
||||
AC_SUBST(CURSES_LIB)
|
||||
])dnl
|
||||
|
||||
|
||||
AC_DEFUN([AX_PATH_LIB_SOCI],[dnl
|
||||
AC_MSG_CHECKING([lib soci])
|
||||
AC_ARG_WITH(soci,
|
||||
[ --with-soci[[=prefix]] compile soci part (via libsoci check)],,
|
||||
with_soci="yes")
|
||||
if test ".$with_soci" = ".no" ; then
|
||||
AC_MSG_RESULT([disabled])
|
||||
m4_ifval($2,$2)
|
||||
else
|
||||
AC_MSG_RESULT([(testing)])
|
||||
AC_LANG_PUSH([C++])
|
||||
AC_CHECK_HEADERS(soci/soci.h)
|
||||
AC_LANG_POP([C++])
|
||||
if test "$ac_cv_header_soci_soci_h" = "yes" ; then
|
||||
if test ".$with_soci" == ".yes"; then
|
||||
with_soci="/usr/local/include"
|
||||
fi
|
||||
SOCI_CXXFLAGS="-I${with_soci}/soci -I${with_soci}/soci/sqlite3"
|
||||
SOCI_LIBS="-lsoci_sqlite3-gcc-3_0 -lsoci_core-gcc-3_0"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([SOCI_LIBS])
|
||||
AC_SUBST([SOCI_CXXFLAGS])
|
||||
])
|
||||
|
@ -28,15 +28,13 @@ AM_LDFLAGS = \
|
||||
-static
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
$(SQLITE3_CFLAGS) \
|
||||
$(SOCI_CXXFLAGS)
|
||||
$(SQLITE3_CFLAGS)
|
||||
|
||||
LDADD = \
|
||||
libdiag.a \
|
||||
$(READLINE_LIBS) \
|
||||
$(CURSES_LIB) \
|
||||
$(HELP_O) \
|
||||
$(SOCI_LIBS) \
|
||||
/usr/lib/libsqlite3.a \
|
||||
-ldl \
|
||||
-lz \
|
||||
|
@ -72,7 +72,7 @@ am__DEPENDENCIES_1 =
|
||||
@HAVE_OBJCOPY_TRUE@am__DEPENDENCIES_2 = help.o
|
||||
lnav_DEPENDENCIES = libdiag.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_1) /usr/lib/libsqlite3.a
|
||||
/usr/lib/libsqlite3.a
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -101,7 +101,6 @@ CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CURSES_LIB = @CURSES_LIB@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -141,8 +140,6 @@ READLINE_CFLAGS = @READLINE_CFLAGS@
|
||||
READLINE_LIBS = @READLINE_LIBS@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SOCI_CXXFLAGS = @SOCI_CXXFLAGS@
|
||||
SOCI_LIBS = @SOCI_LIBS@
|
||||
SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
|
||||
SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@
|
||||
SQLITE3_LIBS = @SQLITE3_LIBS@
|
||||
@ -211,15 +208,13 @@ AM_LDFLAGS = \
|
||||
-static
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
$(SQLITE3_CFLAGS) \
|
||||
$(SOCI_CXXFLAGS)
|
||||
$(SQLITE3_CFLAGS)
|
||||
|
||||
LDADD = \
|
||||
libdiag.a \
|
||||
$(READLINE_LIBS) \
|
||||
$(CURSES_LIB) \
|
||||
$(HELP_O) \
|
||||
$(SOCI_LIBS) \
|
||||
/usr/lib/libsqlite3.a \
|
||||
-ldl \
|
||||
-lz \
|
||||
|
@ -33,9 +33,6 @@
|
||||
/* Define to 1 if you have the <readline/readline.h> header file. */
|
||||
#undef HAVE_READLINE_READLINE_H
|
||||
|
||||
/* Define to 1 if you have the <soci/soci.h> header file. */
|
||||
#undef HAVE_SOCI_SOCI_H
|
||||
|
||||
/* sqlite3 */
|
||||
#undef HAVE_SQLITE3
|
||||
|
||||
|
202
src/lnav.cc
202
src/lnav.cc
@ -29,6 +29,8 @@
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
|
||||
#include <sqlite3.h>
|
||||
|
||||
#include "help.hh"
|
||||
#include "auto_temp_file.hh"
|
||||
#include "logfile.hh"
|
||||
@ -49,11 +51,7 @@
|
||||
#include "db_sub_source.hh"
|
||||
#include "pcrecpp.h"
|
||||
|
||||
#include <soci.h>
|
||||
#include <sqlite3/soci-sqlite3.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace soci;
|
||||
|
||||
typedef enum {
|
||||
LNM_PAGING,
|
||||
@ -239,6 +237,12 @@ public:
|
||||
bucket_type_t gr_next_field;
|
||||
};
|
||||
|
||||
/* XXX figure out how to do this with the template */
|
||||
void sqlite_close_wrapper(void *mem)
|
||||
{
|
||||
sqlite3_close((sqlite3*)mem);
|
||||
}
|
||||
|
||||
static struct {
|
||||
const char *ld_program_name;
|
||||
const char *ld_debug_log_name;
|
||||
@ -279,7 +283,7 @@ static struct {
|
||||
auto_ptr<grep_highlighter> ld_grep_child[LG__MAX];
|
||||
|
||||
log_vtab_manager *ld_vtab_manager;
|
||||
session *ld_sql;
|
||||
auto_mem<sqlite3, sqlite_close_wrapper> ld_db;
|
||||
} lnav_data;
|
||||
|
||||
class loading_observer
|
||||
@ -1447,6 +1451,36 @@ static string com_capture(string cmdline, vector<string> &args)
|
||||
|
||||
static readline_context::command_map_t lnav_commands;
|
||||
|
||||
static int sql_callback(void *arg,
|
||||
int ncols,
|
||||
char **values,
|
||||
char **colnames)
|
||||
{
|
||||
db_label_source &dls = lnav_data.ld_db_rows;
|
||||
hist_source &hs = lnav_data.ld_db_source;
|
||||
double num_value = 0.0;
|
||||
int row_number;
|
||||
int lpc, retval = 0;
|
||||
|
||||
row_number = dls.dls_rows.size();
|
||||
dls.dls_rows.resize(row_number + 1);
|
||||
if (dls.dls_headers.empty()) {
|
||||
for (lpc = 0; lpc < ncols; lpc++) {
|
||||
dls.push_header(colnames[lpc]);
|
||||
hs.set_role_for_type(bucket_type_t(lpc),
|
||||
view_colors::singleton().
|
||||
next_highlight());
|
||||
}
|
||||
}
|
||||
for (lpc = 0; lpc < ncols; lpc++) {
|
||||
dls.push_column(values[lpc]);
|
||||
sscanf(values[lpc], "%lf", &num_value);
|
||||
hs.add_value(row_number, bucket_type_t(lpc), num_value);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void rl_search(void *dummy, readline_curses *rc)
|
||||
{
|
||||
static string last_search[LG__MAX];
|
||||
@ -1468,14 +1502,26 @@ static void rl_search(void *dummy, readline_curses *rc)
|
||||
return;
|
||||
|
||||
case LNM_SQL:
|
||||
try {
|
||||
/* XXX need to use the sqlite api */
|
||||
session &sql = *lnav_data.ld_sql;
|
||||
sql.prepare << rc->get_value();
|
||||
}
|
||||
catch (soci::soci_error &e) {
|
||||
if (!sqlite3_complete(rc->get_value().c_str())) {
|
||||
lnav_data.ld_bottom_source.
|
||||
grep_error(string("sql error: ") + e.what());
|
||||
grep_error("sql error: incomplete statement");
|
||||
}
|
||||
else {
|
||||
sqlite3_stmt *stmt;
|
||||
const char *tail;
|
||||
int retcode;
|
||||
|
||||
retcode = sqlite3_prepare_v2(lnav_data.ld_db,
|
||||
rc->get_value().c_str(),
|
||||
-1,
|
||||
&stmt,
|
||||
&tail);
|
||||
if (retcode != SQLITE_OK) {
|
||||
const char *errmsg = sqlite3_errmsg(lnav_data.ld_db);
|
||||
|
||||
lnav_data.ld_bottom_source.
|
||||
grep_error(string("sql error: ") + string(errmsg));
|
||||
}
|
||||
}
|
||||
return;
|
||||
default:
|
||||
@ -1583,112 +1629,33 @@ static void rl_callback(void *dummy, readline_curses *rc)
|
||||
break;
|
||||
|
||||
case LNM_SQL:
|
||||
try {
|
||||
session &sql = *lnav_data.ld_sql;
|
||||
|
||||
rowset<row> rs = (sql.prepare << rc->get_value());
|
||||
{
|
||||
db_label_source &dls = lnav_data.ld_db_rows;
|
||||
hist_source &hs = lnav_data.ld_db_source;
|
||||
bool header_done = false;
|
||||
int row_number = 0;
|
||||
char buffer[128];
|
||||
auto_mem<char, sqlite3_free> errmsg;
|
||||
|
||||
lnav_data.ld_bottom_source.grep_error("");
|
||||
hs.clear();
|
||||
dls.dls_headers.clear();
|
||||
dls.dls_rows.clear();
|
||||
for (rowset<row>::const_iterator it = rs.begin();
|
||||
it != rs.end();
|
||||
++it, row_number++) {
|
||||
dls.dls_rows.resize(dls.dls_rows.size() + 1);
|
||||
for(std::size_t lpc = 0; lpc != it->size(); ++lpc) {
|
||||
const column_properties & props = it->get_properties(lpc);
|
||||
double num_value = 0;
|
||||
|
||||
if (!header_done) {
|
||||
fprintf(stderr, "<%s> ", props.get_name().c_str());
|
||||
fprintf(stderr, " dt %d\n", props.get_data_type());
|
||||
dls.push_header(props.get_name());
|
||||
hs.set_role_for_type(bucket_type_t(lpc),
|
||||
view_colors::singleton().
|
||||
next_highlight());
|
||||
}
|
||||
switch(props.get_data_type())
|
||||
{
|
||||
case dt_string:
|
||||
{
|
||||
const char *str = it->get<std::string>(lpc).c_str();
|
||||
int i;
|
||||
|
||||
dls.push_column(str);
|
||||
// XXX captures too much
|
||||
if (sscanf(str, "%d", &i) == 1) {
|
||||
num_value = i;
|
||||
}
|
||||
else {
|
||||
sscanf(str, "%f", &num_value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case dt_double:
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
"%f",
|
||||
it->get<double>(lpc));
|
||||
dls.push_column(buffer);
|
||||
num_value = it->get<double>(lpc);
|
||||
break;
|
||||
case dt_integer:
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
"%d",
|
||||
it->get<int>(lpc));
|
||||
dls.push_column(buffer);
|
||||
num_value = it->get<int>(lpc);
|
||||
break;
|
||||
case dt_unsigned_long:
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
"%ld",
|
||||
it->get<unsigned long>(lpc));
|
||||
dls.push_column(buffer);
|
||||
num_value = it->get<unsigned long>(lpc);
|
||||
break;
|
||||
case dt_long_long:
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
"%lld",
|
||||
it->get<long long>(lpc));
|
||||
dls.push_column(buffer);
|
||||
num_value = it->get<long long>(lpc);
|
||||
break;
|
||||
case dt_date:
|
||||
{
|
||||
std::tm when = it->get<std::tm>(lpc);
|
||||
|
||||
strftime(buffer, sizeof(buffer),
|
||||
"%a, %d %b %Y %H:%M:%S %z",
|
||||
&when);
|
||||
dls.push_column(buffer);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
dls.push_column("XXX");
|
||||
break;
|
||||
}
|
||||
|
||||
hs.add_value(row_number, bucket_type_t(lpc), num_value);
|
||||
}
|
||||
header_done = true;
|
||||
if (sqlite3_exec(lnav_data.ld_db,
|
||||
rc->get_value().c_str(),
|
||||
sql_callback,
|
||||
NULL,
|
||||
errmsg.out()) != SQLITE_OK) {
|
||||
rc->set_value(errmsg.in());
|
||||
}
|
||||
else {
|
||||
rc->set_value("");
|
||||
|
||||
hs.analyze();
|
||||
lnav_data.ld_views[LNV_DB].reload_data();
|
||||
|
||||
if (dls.dls_rows.size() > 0)
|
||||
toggle_view(&lnav_data.ld_views[LNV_DB]);
|
||||
}
|
||||
|
||||
rc->set_value(""); // XXX
|
||||
|
||||
hs.analyze();
|
||||
lnav_data.ld_views[LNV_DB].reload_data();
|
||||
|
||||
if (row_number > 0)
|
||||
toggle_view(&lnav_data.ld_views[LNV_DB]);
|
||||
}
|
||||
catch (soci::soci_error &e) {
|
||||
rc->set_value(e.what());
|
||||
}
|
||||
|
||||
lnav_data.ld_mode = LNM_PAGING;
|
||||
break;
|
||||
}
|
||||
@ -2135,8 +2102,7 @@ public:
|
||||
|
||||
void extract(const std::string &line,
|
||||
int column,
|
||||
sqlite_api::sqlite3_context *ctx) {
|
||||
using namespace sqlite_api;
|
||||
sqlite3_context *ctx) {
|
||||
string c_ip, cs_username, cs_method, cs_uri_stem, cs_uri_query;
|
||||
string cs_version, sc_status, cs_referer, cs_user_agent;
|
||||
string sc_bytes;
|
||||
@ -2252,8 +2218,7 @@ public:
|
||||
|
||||
void extract(const std::string &line,
|
||||
int column,
|
||||
sqlite_api::sqlite3_context *ctx) {
|
||||
using namespace sqlite_api;
|
||||
sqlite3_context *ctx) {
|
||||
string function, args, result, duration = "0";
|
||||
|
||||
if (!this->slt_regex.FullMatch(line,
|
||||
@ -2357,13 +2322,16 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
int lpc, c, retval = EXIT_SUCCESS;
|
||||
auto_ptr<piper_proc> stdin_reader;
|
||||
session sql(sqlite3, ":memory:");
|
||||
|
||||
if (sqlite3_open(":memory:", lnav_data.ld_db.out()) != SQLITE_OK) {
|
||||
fprintf(stderr, "unable to create sqlite memory database\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
lnav_data.ld_program_name = argv[0];
|
||||
|
||||
lnav_data.ld_sql = &sql;
|
||||
lnav_data.ld_vtab_manager =
|
||||
new log_vtab_manager(sql, lnav_data.ld_log_source);
|
||||
new log_vtab_manager(lnav_data.ld_db, lnav_data.ld_log_source);
|
||||
|
||||
lnav_data.ld_vtab_manager->register_vtab(new log_vtab_impl("syslog_log"));
|
||||
lnav_data.ld_vtab_manager->register_vtab(new log_vtab_impl("generic_log"));
|
||||
|
@ -1,11 +1,8 @@
|
||||
|
||||
#include <soci.h>
|
||||
|
||||
#include "log_format.hh"
|
||||
#include "log_vtab_impl.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace soci;
|
||||
|
||||
class access_log_format : public log_format {
|
||||
string get_name() { return "access_log"; };
|
||||
|
@ -6,8 +6,6 @@
|
||||
#include "logfile_sub_source.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace soci;
|
||||
using namespace sqlite_api;
|
||||
|
||||
static string declare_table_statement(log_vtab_impl *vi)
|
||||
{
|
||||
@ -33,7 +31,7 @@ static string declare_table_statement(log_vtab_impl *vi)
|
||||
|
||||
struct vtab {
|
||||
sqlite3_vtab base;
|
||||
sqlite_api::sqlite3 *db;
|
||||
sqlite3 *db;
|
||||
logfile_sub_source *lss;
|
||||
log_vtab_impl *vi;
|
||||
};
|
||||
@ -45,7 +43,7 @@ struct vtab_cursor {
|
||||
|
||||
static int vt_destructor(sqlite3_vtab *p_svt);
|
||||
|
||||
static int vt_create( sqlite_api::sqlite3 *db,
|
||||
static int vt_create( sqlite3 *db,
|
||||
void *pAux,
|
||||
int argc, const char *const*argv,
|
||||
sqlite3_vtab **pp_vt,
|
||||
@ -87,7 +85,7 @@ static int vt_destructor(sqlite3_vtab *p_svt)
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
static int vt_connect( sqlite_api::sqlite3 *db, void *p_aux,
|
||||
static int vt_connect( sqlite3 *db, void *p_aux,
|
||||
int argc, const char *const*argv,
|
||||
sqlite3_vtab **pp_vt, char **pzErr )
|
||||
{
|
||||
@ -263,7 +261,7 @@ static int vt_best_index(sqlite3_vtab *tab, sqlite3_index_info *p_info)
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
static sqlite_api::sqlite3_module vtab_module = {
|
||||
static sqlite3_module vtab_module = {
|
||||
0, /* iVersion */
|
||||
vt_create, /* xCreate - create a vtable */
|
||||
vt_connect, /* xConnect - associate a vtable with a connection */
|
||||
@ -285,23 +283,31 @@ static sqlite_api::sqlite3_module vtab_module = {
|
||||
NULL, /* xFindFunction - function overloading */
|
||||
};
|
||||
|
||||
log_vtab_manager::log_vtab_manager(soci::session &sql, logfile_sub_source &lss)
|
||||
: vm_sql(sql), vm_source(lss)
|
||||
log_vtab_manager::log_vtab_manager(sqlite3 *memdb, logfile_sub_source &lss)
|
||||
: vm_db(memdb), vm_source(lss)
|
||||
{
|
||||
sqlite3_session_backend *be = (sqlite3_session_backend *)sql.get_backend();
|
||||
sqlite_api::sqlite3 *db = be->conn_;
|
||||
|
||||
sqlite3_create_module(db, "log_vtab_impl", &vtab_module, this);
|
||||
sqlite3_create_module(this->vm_db, "log_vtab_impl", &vtab_module, this);
|
||||
}
|
||||
|
||||
void log_vtab_manager::register_vtab(log_vtab_impl *vi) {
|
||||
if (this->vm_impls.find(vi->get_name()) == this->vm_impls.end()) {
|
||||
const char *errmsg;
|
||||
char *sql;
|
||||
int rc;
|
||||
|
||||
this->vm_impls[vi->get_name()] = vi;
|
||||
|
||||
vm_sql << "CREATE VIRTUAL TABLE "
|
||||
<< vi->get_name()
|
||||
<< " USING log_vtab_impl("
|
||||
<< vi->get_name()
|
||||
<< ")";
|
||||
sql = sqlite3_mprintf("CREATE VIRTUAL TABLE %s "
|
||||
"USING log_vtab_impl(%s)",
|
||||
vi->get_name().c_str(),
|
||||
vi->get_name().c_str());
|
||||
rc = sqlite3_exec(this->vm_db,
|
||||
sql,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
assert(rc == SQLITE_OK);
|
||||
|
||||
sqlite3_free(sql);
|
||||
}
|
||||
}
|
||||
|
@ -2,13 +2,11 @@
|
||||
#ifndef __vtab_impl_hh
|
||||
#define __vtab_impl_hh
|
||||
|
||||
#include <soci.h>
|
||||
|
||||
#include <sqlite3/soci-sqlite3.h>
|
||||
#include <sqlite3.h>
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class logfile_sub_source;
|
||||
|
||||
@ -33,7 +31,7 @@ public:
|
||||
|
||||
virtual void extract(const std::string &line,
|
||||
int column,
|
||||
sqlite_api::sqlite3_context *ctx) {
|
||||
sqlite3_context *ctx) {
|
||||
};
|
||||
|
||||
private:
|
||||
@ -42,7 +40,7 @@ private:
|
||||
|
||||
class log_vtab_manager {
|
||||
public:
|
||||
log_vtab_manager(soci::session &sql, logfile_sub_source &lss);
|
||||
log_vtab_manager(sqlite3 *db, logfile_sub_source &lss);
|
||||
|
||||
logfile_sub_source *get_source() { return &this->vm_source; };
|
||||
|
||||
@ -52,7 +50,7 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
soci::session &vm_sql;
|
||||
sqlite3 *vm_db;
|
||||
logfile_sub_source &vm_source;
|
||||
std::map<std::string, log_vtab_impl *> vm_impls;
|
||||
};
|
||||
|
@ -39,11 +39,11 @@ struct line_range {
|
||||
};
|
||||
|
||||
bool operator<(const struct line_range &rhs) const {
|
||||
if (this->lr_start < rhs.lr_start) return true;
|
||||
else if (this->lr_start > rhs.lr_start) return false;
|
||||
|
||||
if (this->lr_end < rhs.lr_end) return true;
|
||||
return false;
|
||||
if (this->lr_start < rhs.lr_start) return true;
|
||||
else if (this->lr_start > rhs.lr_start) return false;
|
||||
|
||||
if (this->lr_end < rhs.lr_end) return true;
|
||||
return false;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -82,17 +82,18 @@ private:
|
||||
this->vem_map[KEY_BEG] = "\x1";
|
||||
this->vem_map[KEY_END] = "\x5";
|
||||
|
||||
this->vem_map[KEY_SLEFT] = tgetstr("#4", NULL);
|
||||
this->vem_map[KEY_SLEFT] = tgetstr("#4", &area);
|
||||
if (this->vem_map[KEY_SLEFT] == NULL) {
|
||||
this->vem_map[KEY_SLEFT] = "\033b";
|
||||
}
|
||||
this->vem_map[KEY_SRIGHT] = tgetstr("%i", NULL);
|
||||
this->vem_map[KEY_SRIGHT] = tgetstr("%i", &area);
|
||||
if (this->vem_map[KEY_SRIGHT] == NULL) {
|
||||
this->vem_map[KEY_SRIGHT] = "\033f";
|
||||
}
|
||||
|
||||
this->vem_input_map[tgetstr("ce", &area)] = "ce";
|
||||
this->vem_input_map[tgetstr("kl", &area)] = "kl";
|
||||
this->vem_input_map[tgetstr("kr", &area)] = "kr";
|
||||
tgetent(NULL, getenv("TERM"));
|
||||
};
|
||||
|
||||
@ -158,6 +159,14 @@ void vt52_curses::map_output(const char *output, int len)
|
||||
wmove(this->vc_window, y, this->vc_x);
|
||||
this->vc_escape_len = 0;
|
||||
}
|
||||
else if (strcmp(cap, "kr") == 0) {
|
||||
this->vc_x += 1;
|
||||
wmove(this->vc_window, y, this->vc_x);
|
||||
this->vc_escape_len = 0;
|
||||
}
|
||||
else {
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -3,18 +3,11 @@ TESTS_ENVIRONMENT = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/src \
|
||||
$(SQLITE3_CFLAGS) \
|
||||
$(SOCI_CXXFLAGS)
|
||||
$(SQLITE3_CFLAGS)
|
||||
|
||||
# AM_CFLAGS = -fprofile-arcs -ftest-coverage
|
||||
# AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
|
||||
|
||||
if HAVE_SOCI
|
||||
SOCI_TESTS =
|
||||
else
|
||||
SOCI_TESTS =
|
||||
endif
|
||||
|
||||
check_PROGRAMS = \
|
||||
drive_line_buffer \
|
||||
drive_grep_proc \
|
||||
@ -28,7 +21,6 @@ check_PROGRAMS = \
|
||||
test_auto_mem \
|
||||
test_bookmarks \
|
||||
test_grep_proc2 \
|
||||
$(SOCI_TESTS) \
|
||||
test_line_buffer2 \
|
||||
test_top_status
|
||||
|
||||
@ -138,7 +130,6 @@ TESTS = test_bookmarks \
|
||||
test_line_buffer2 \
|
||||
test_grep_proc.sh \
|
||||
test_grep_proc2 \
|
||||
$(SOCI_TESTS) \
|
||||
test_listview.sh \
|
||||
test_logfile.sh \
|
||||
test_vt52_curses.sh \
|
||||
|
@ -38,13 +38,13 @@ check_PROGRAMS = drive_line_buffer$(EXEEXT) drive_grep_proc$(EXEEXT) \
|
||||
drive_vt52_curses$(EXEEXT) drive_readline_curses$(EXEEXT) \
|
||||
slicer$(EXEEXT) scripty$(EXEEXT) test_auto_fd$(EXEEXT) \
|
||||
test_auto_mem$(EXEEXT) test_bookmarks$(EXEEXT) \
|
||||
test_grep_proc2$(EXEEXT) $(am__EXEEXT_1) \
|
||||
test_line_buffer2$(EXEEXT) test_top_status$(EXEEXT)
|
||||
test_grep_proc2$(EXEEXT) test_line_buffer2$(EXEEXT) \
|
||||
test_top_status$(EXEEXT)
|
||||
TESTS = test_bookmarks$(EXEEXT) test_auto_fd$(EXEEXT) \
|
||||
test_auto_mem$(EXEEXT) test_line_buffer.sh \
|
||||
test_line_buffer2$(EXEEXT) test_grep_proc.sh \
|
||||
test_grep_proc2$(EXEEXT) $(am__EXEEXT_1) test_listview.sh \
|
||||
test_logfile.sh test_vt52_curses.sh test_top_status$(EXEEXT)
|
||||
test_grep_proc2$(EXEEXT) test_listview.sh test_logfile.sh \
|
||||
test_vt52_curses.sh test_top_status$(EXEEXT)
|
||||
subdir = test
|
||||
DIST_COMMON = $(dist_noinst_DATA) $(dist_noinst_SCRIPTS) \
|
||||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
@ -56,7 +56,6 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__EXEEXT_1 =
|
||||
am_drive_grep_proc_OBJECTS = line_buffer.$(OBJEXT) grep_proc.$(OBJEXT) \
|
||||
drive_grep_proc.$(OBJEXT)
|
||||
drive_grep_proc_OBJECTS = $(am_drive_grep_proc_OBJECTS)
|
||||
@ -162,7 +161,6 @@ CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CURSES_LIB = @CURSES_LIB@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -202,8 +200,6 @@ READLINE_CFLAGS = @READLINE_CFLAGS@
|
||||
READLINE_LIBS = @READLINE_LIBS@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SOCI_CXXFLAGS = @SOCI_CXXFLAGS@
|
||||
SOCI_LIBS = @SOCI_LIBS@
|
||||
SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
|
||||
SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@
|
||||
SQLITE3_LIBS = @SQLITE3_LIBS@
|
||||
@ -264,14 +260,8 @@ top_srcdir = @top_srcdir@
|
||||
TESTS_ENVIRONMENT = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/src \
|
||||
$(SQLITE3_CFLAGS) \
|
||||
$(SOCI_CXXFLAGS)
|
||||
$(SQLITE3_CFLAGS)
|
||||
|
||||
@HAVE_SOCI_FALSE@SOCI_TESTS =
|
||||
|
||||
# AM_CFLAGS = -fprofile-arcs -ftest-coverage
|
||||
# AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
|
||||
@HAVE_SOCI_TRUE@SOCI_TESTS =
|
||||
AM_LDFLAGS = \
|
||||
$(SQLITE3_LDFLAGS)
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
|
||||
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
|
||||
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 3578929 "-" "gPXE/0.9.7"
|
||||
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
|
||||
|
@ -5,16 +5,10 @@
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <soci.h>
|
||||
#include <soci-sqlite3.h>
|
||||
|
||||
#include "time_T.hh"
|
||||
#include "auto_temp_file.hh"
|
||||
#include "capture_proc.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace SOCI;
|
||||
|
||||
static const int MS_LINE_COUNT = 4;
|
||||
|
||||
static struct {
|
||||
|
@ -6,7 +6,7 @@ Goodbye, World?
|
||||
EOF
|
||||
|
||||
grep_slice() {
|
||||
./drive_grep_proc "$1" "$2" | slicer "$2"
|
||||
./drive_grep_proc "$1" "$2" | ./slicer "$2"
|
||||
}
|
||||
|
||||
grep_capture() {
|
||||
|
Loading…
Reference in New Issue
Block a user