lnav-0.8.2/000775 000765 000024 00000000000 13073703477 012746 5ustar00stackstaff000000 000000 lnav-0.8.2/aclocal.m4000664 000765 000024 00000126772 13073703422 014613 0ustar00stackstaff000000 000000 # generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [AC_LANG_PUSH([C]) am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) AC_LANG_POP([C])]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_check_link_flag.m4]) m4_include([m4/ax_cxx_compile_stdcxx.m4]) m4_include([m4/ax_cxx_compile_stdcxx_14.m4]) m4_include([m4/ax_with_curses.m4]) m4_include([m4/libcurl.m4]) m4_include([m4/lnav_common.m4]) m4_include([m4/lnav_with_jemalloc.m4]) m4_include([m4/lnav_with_pcre.m4]) m4_include([m4/lnav_with_readline.m4]) m4_include([m4/lnav_with_sqlite3.m4]) m4_include([m4/lnav_with_yajl.m4]) lnav-0.8.2/ar-lib000755 000765 000024 00000013302 13073703424 014027 0ustar00stackstaff000000 000000 #! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2014 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lnav-0.8.2/config.guess000755 000765 000024 00000123672 13073703424 015267 0ustar00stackstaff000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lnav-0.8.2/config.sub000755 000765 000024 00000106223 13073703424 014723 0ustar00stackstaff000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-12-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lnav-0.8.2/configure000775 000765 000024 00001164203 13073703423 014653 0ustar00stackstaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for lnav 0.8.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: lnav@googlegroups.com about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lnav' PACKAGE_TARNAME='lnav' PACKAGE_VERSION='0.8.2' PACKAGE_STRING='lnav 0.8.2' PACKAGE_BUGREPORT='lnav@googlegroups.com' PACKAGE_URL='http://lnav.org' ac_unique_file="src/lnav.cc" ac_default_prefix=/usr # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS HAVE_LIBCURL_FALSE HAVE_LIBCURL_TRUE USE_INCLUDED_YAJL_FALSE USE_INCLUDED_YAJL_TRUE STATIC_LDFLAGS SQLITE3_LIBS SQLITE3_LDFLAGS SQLITE3_CFLAGS HAVE_SQLITE3_VALUE_SUBTYPE READLINE_LDFLAGS READLINE_CFLAGS READLINE_LIBS PCRE_CFLAGS PCRE_LIBS CURSES_LIB HAVE_LOCAL_YAJL jemalloch LIBCURL LIBCURL_CPPFLAGS _libcurl_config BZIP2_SUPPORT EGREP GREP CPP HAVE_RE2C_FALSE HAVE_RE2C_TRUE RE2C_CMD BZIP2_CMD LN_S am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC ac_ct_AR AR RANLIB CFLAGS_PG SFTP_TEST_URL abssrcdir HAVE_CXX14 am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_profiling enable_static with_libcurl enable_tinfo with_jemalloc with_yajl with_ncurses with_ncursesw with_pcre with_readline with_sqlite3 ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC SFTP_TEST_URL CC CFLAGS CPP CURSES_LIB' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures lnav 0.8.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/lnav] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of lnav 0.8.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-profiling Compile with gprof(1) profiling support --disable-static Disable static linking --disable-tinfo Disable linking with tinfo, enabled by default Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-libcurl=PREFIX look for the curl library in PREFIX/lib and headers in PREFIX/include --with-jemalloc=DIR use a specific jemalloc library --with-yajl=DIR use a local installed version of yajl --with-ncurses force the use of Ncurses or NcursesW --without-ncursesw do not use NcursesW (wide character support) --with-pcre[=prefix] --with-readline[=prefix] compile xmlreadline part (via libreadline check) --with-sqlite3=[prefix] compile with sqlite3 Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory SFTP_TEST_URL CC C compiler command CFLAGS C compiler flags CPP C preprocessor CURSES_LIB linker library for Curses, e.g. -lcurses Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . lnav home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF lnav configure 0.8.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* 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 $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------ ## ## Report this to lnav@googlegroups.com ## ## ------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by lnav $as_me 0.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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 am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='lnav' VERSION='0.8.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= 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 if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi 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 depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ax_cxx_compile_cxx14_required=true 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 ac_success=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features by default" >&5 $as_echo_n "checking whether $CXX supports C++14 features by default... " >&6; } if ${ax_cv_cxx_compile_cxx14+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_seperators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_cxx_compile_cxx14=yes else ax_cv_cxx_compile_cxx14=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx14" >&5 $as_echo "$ax_cv_cxx_compile_cxx14" >&6; } if test x$ax_cv_cxx_compile_cxx14 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for switch in -std=c++14 -std=c++0x +std=c++14 "-h std=c++14"; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx14_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++14 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXX="$CXX" CXX="$CXX $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_seperators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXX="$ac_save_CXX" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi 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 x$ax_cxx_compile_cxx14_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++14 language features is required." "$LINENO" 5 fi fi if test x$ac_success = xno; then HAVE_CXX14=0 { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++14 support was found" >&5 $as_echo "$as_me: No compiler with C++14 support was found" >&6;} else HAVE_CXX14=1 $as_echo "#define HAVE_CXX14 1" >>confdefs.h fi for defdir in /opt/local /usr/local /usr /; do if test -d "$defdir/include"; then CPPFLAGS="$CPPFLAGS -I$defdir/include" fi if test -d "$defdir/lib64"; then LDFLAGS="$LDFLAGS -L$defdir/lib64" fi if test -d "$defdir/lib"; then LDFLAGS="$LDFLAGS -L$defdir/lib" fi if test -d "$defdir/lib/x86_64-linux-gnu"; then LDFLAGS="$LDFLAGS -L$defdir/lib/x86_64-linux-gnu" fi done case x$srcdir in #( x/*) : abssrcdir=$srcdir ;; #( *) : abssrcdir=`pwd`/$srcdir ;; esac 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 if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi 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 depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi CPPFLAGS="$CPPFLAGS -D_ISOC99_SOURCE -D__STDC_LIMIT_MACROS" # CFLAGS=`echo $CFLAGS | sed 's/-O2//g'` # CXXFLAGS=`echo $CXXFLAGS | sed 's/-O2//g'` # Check whether --enable-profiling was given. if test "${enable_profiling+set}" = set; then : enableval=$enable_profiling; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking gprof(4) profiling support" >&5 $as_echo_n "checking gprof(4) profiling support... " >&6; } if test "x$enable_profiling" = xyes; then : CFLAGS="$CFLAGS -pg -gstabs" CXXFLAGS="$CXXFLAGS -pg -gstabs" LDFLAGS="$LDFLAGS -pg" else enable_profiling=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5 $as_echo "$enable_profiling" >&6; } if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi 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 -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi 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 depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else 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 am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Extract the first word of "bzip2", so it can be a program name with args. set dummy bzip2; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BZIP2_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $BZIP2_CMD in [\\/]* | ?:[\\/]*) ac_cv_path_BZIP2_CMD="$BZIP2_CMD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BZIP2_CMD="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi BZIP2_CMD=$ac_cv_path_BZIP2_CMD if test -n "$BZIP2_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BZIP2_CMD" >&5 $as_echo "$BZIP2_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "re2c", so it can be a program name with args. set dummy re2c; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_RE2C_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $RE2C_CMD in [\\/]* | ?:[\\/]*) ac_cv_path_RE2C_CMD="$RE2C_CMD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_RE2C_CMD="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi RE2C_CMD=$ac_cv_path_RE2C_CMD if test -n "$RE2C_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RE2C_CMD" >&5 $as_echo "$RE2C_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$RE2C_CMD" != x""; then HAVE_RE2C_TRUE= HAVE_RE2C_FALSE='#' else HAVE_RE2C_TRUE='#' HAVE_RE2C_FALSE= fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 $as_echo_n "checking size of off_t... " >&6; } if ${ac_cv_sizeof_off_t+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : else if test "$ac_cv_type_off_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (off_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_off_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 $as_echo "$ac_cv_sizeof_off_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_OFF_T $ac_cv_sizeof_off_t _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 $as_echo_n "checking size of size_t... " >&6; } if ${ac_cv_sizeof_size_t+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : else if test "$ac_cv_type_size_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (size_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_size_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 $as_echo "$ac_cv_sizeof_size_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include #include <$ac_cv_struct_tm> " if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_TM_TM_ZONE 1 _ACEOF fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then $as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h else ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include " if test "x$ac_cv_have_decl_tzname" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_TZNAME $ac_have_decl _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 $as_echo_n "checking for tzname... " >&6; } if ${ac_cv_var_tzname+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !HAVE_DECL_TZNAME extern char *tzname[]; #endif int main () { return tzname[0][0]; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_var_tzname=yes else ac_cv_var_tzname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 $as_echo "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then $as_echo "#define HAVE_TZNAME 1" >>confdefs.h fi fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5 $as_echo_n "checking for library containing openpty... " >&6; } if ${ac_cv_search_openpty+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 openpty (); int main () { return openpty (); ; return 0; } _ACEOF for ac_lib in '' util; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_openpty=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_openpty+:} false; then : break fi done if ${ac_cv_search_openpty+:} false; then : else ac_cv_search_openpty=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5 $as_echo "$ac_cv_search_openpty" >&6; } ac_res=$ac_cv_search_openpty if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzseek" >&5 $as_echo_n "checking for library containing gzseek... " >&6; } if ${ac_cv_search_gzseek+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gzseek (); int main () { return gzseek (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gzseek=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gzseek+:} false; then : break fi done if ${ac_cv_search_gzseek+:} false; then : else ac_cv_search_gzseek=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzseek" >&5 $as_echo "$ac_cv_search_gzseek" >&6; } ac_res=$ac_cv_search_gzseek if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "libz required to build" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing BZ2_bzopen" >&5 $as_echo_n "checking for library containing BZ2_bzopen... " >&6; } if ${ac_cv_search_BZ2_bzopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 BZ2_bzopen (); int main () { return BZ2_bzopen (); ; return 0; } _ACEOF for ac_lib in '' bz2; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_BZ2_bzopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_BZ2_bzopen+:} false; then : break fi done if ${ac_cv_search_BZ2_bzopen+:} false; then : else ac_cv_search_BZ2_bzopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_BZ2_bzopen" >&5 $as_echo "$ac_cv_search_BZ2_bzopen" >&6; } ac_res=$ac_cv_search_BZ2_bzopen if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" BZIP2_SUPPORT=1 else BZIP2_SUPPORT=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 $as_echo_n "checking for library containing dlopen... " >&6; } if ${ac_cv_search_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF for ac_lib in '' dl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_dlopen+:} false; then : break fi done if ${ac_cv_search_dlopen+:} false; then : else ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 $as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 $as_echo_n "checking for library containing backtrace... " >&6; } if ${ac_cv_search_backtrace+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 backtrace (); int main () { return backtrace (); ; return 0; } _ACEOF for ac_lib in '' execinfo; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_backtrace=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_backtrace+:} false; then : break fi done if ${ac_cv_search_backtrace+:} false; then : else ac_cv_search_backtrace=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 $as_echo "$ac_cv_search_backtrace" >&6; } ac_res=$ac_cv_search_backtrace if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # Check whether --with-libcurl was given. if test "${with_libcurl+set}" = set; then : withval=$with_libcurl; _libcurl_with=$withval else _libcurl_with=yes fi if test "$_libcurl_with" != "no" ; then for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[1]+256*A[2]+A[3]; print X;}'" _libcurl_try_link=yes if test -d "$_libcurl_with" ; then LIBCURL_CPPFLAGS="-I$withval/include" _libcurl_ldflags="-L$withval/lib" # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path__libcurl_config+:} false; then : $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in "$withval/bin" do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path__libcurl_config+:} false; then : $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test x$_libcurl_config != "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the version of libcurl" >&5 $as_echo_n "checking for the version of libcurl... " >&6; } if ${libcurl_cv_lib_curl_version+:} false; then : $as_echo_n "(cached) " >&6 else libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $2}'` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_version" >&5 $as_echo "$libcurl_cv_lib_curl_version" >&6; } _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` _libcurl_wanted=`echo 7.23.0 | $_libcurl_version_parse` if test $_libcurl_wanted -gt 0 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcurl >= version 7.23.0" >&5 $as_echo_n "checking for libcurl >= version 7.23.0... " >&6; } if ${libcurl_cv_lib_version_ok+:} false; then : $as_echo_n "(cached) " >&6 else if test $_libcurl_version -ge $_libcurl_wanted ; then libcurl_cv_lib_version_ok=yes else libcurl_cv_lib_version_ok=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_version_ok" >&5 $as_echo "$libcurl_cv_lib_version_ok" >&6; } fi if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then if test x"$LIBCURL_CPPFLAGS" = "x" ; then LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then if test x"${enable_static}" != x"no"; then LIBCURL=`$_libcurl_config --static-libs` if test x"$LIBCURL" = "x"; then LIBCURL=`$_libcurl_config --libs` fi else LIBCURL=`$_libcurl_config --libs` fi # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still # lots of Panther installs around. case "${host}" in powerpc-apple-darwin7*) LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ;; esac fi if test "x${LIBCURL}" = "x"; then : case "$host_os" in #( darwin*) : if test "x$_libcurl_config" != "x"; then : LIBCURL=$($_libcurl_config --libs) fi ;; #( *) : ;; esac fi # All curl-config scripts support --feature _libcurl_features=`$_libcurl_config --feature` # Is it modern enough to have --protocols? (7.12.4) if test $_libcurl_version -ge 461828 ; then _libcurl_protocols=`$_libcurl_config --protocols` fi else _libcurl_try_link=no fi unset _libcurl_wanted fi if test $_libcurl_try_link = yes ; then # we didn't find curl-config, so let's see if the user-supplied # link line (or failing that, "-lcurl") is enough. LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libcurl is usable" >&5 $as_echo_n "checking whether libcurl is usable... " >&6; } if ${libcurl_cv_lib_curl_usable+:} false; then : $as_echo_n "(cached) " >&6 else _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_WRITEDATA; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; if (x) ; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : libcurl_cv_lib_curl_usable=yes else libcurl_cv_lib_curl_usable=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_usable" >&5 $as_echo "$libcurl_cv_lib_curl_usable" >&6; } if test $libcurl_cv_lib_curl_usable = yes ; then # Does curl_free() exist in this version of libcurl? # If not, fake it with free() _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBS $LIBCURL" ac_fn_c_check_func "$LINENO" "curl_free" "ac_cv_func_curl_free" if test "x$ac_cv_func_curl_free" = xyes; then : else $as_echo "#define curl_free free" >>confdefs.h fi CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs $as_echo "#define HAVE_LIBCURL 1" >>confdefs.h for _libcurl_feature in $_libcurl_features ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_sh`=yes done if test "x$_libcurl_protocols" = "x" ; then # We don't have --protocols, so just assume that all # protocols are available _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" if test x$libcurl_feature_SSL = xyes ; then _libcurl_protocols="$_libcurl_protocols HTTPS" # FTPS wasn't standards-compliant until version # 7.11.0 (0x070b00 == 461568) if test $_libcurl_version -ge 461568; then _libcurl_protocols="$_libcurl_protocols FTPS" fi fi # RTSP, IMAP, POP3 and SMTP were added in # 7.20.0 (0x071400 == 463872) if test $_libcurl_version -ge 463872; then _libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP" fi fi for _libcurl_protocol in $_libcurl_protocols ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_sh`=yes done else unset LIBCURL unset LIBCURL_CPPFLAGS fi fi unset _libcurl_try_link unset _libcurl_version_parse unset _libcurl_config unset _libcurl_feature unset _libcurl_features unset _libcurl_protocol unset _libcurl_protocols unset _libcurl_version unset _libcurl_ldflags fi if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then # This is the IF-NO path : else # This is the IF-YES path : fi unset _libcurl_with # Sometimes, curses depends on these libraries being linked in... # Check whether --enable-tinfo was given. if test "${enable_tinfo+set}" = set; then : enableval=$enable_tinfo; else enable_tinfo="yes" fi if test "x${enable_tinfo}" != "xno"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to link with tinfo" >&5 $as_echo "$as_me: Trying to link with tinfo" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cur_term" >&5 $as_echo_n "checking for library containing cur_term... " >&6; } if ${ac_cv_search_cur_term+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 cur_term (); int main () { return cur_term (); ; return 0; } _ACEOF for ac_lib in '' tinfo; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_cur_term=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_cur_term+:} false; then : break fi done if ${ac_cv_search_cur_term+:} false; then : else ac_cv_search_cur_term=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cur_term" >&5 $as_echo "$ac_cv_search_cur_term" >&6; } ac_res=$ac_cv_search_cur_term if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: Linking with tinfo" >&5 $as_echo "$as_me: Linking with tinfo" >&6;} else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libtinfo not found" >&5 $as_echo "$as_me: WARNING: libtinfo not found" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: Building with tinfo linking disabled" >&5 $as_echo "$as_me: Building with tinfo linking disabled" >&6;} fi case "$host_os" in #( darwin*) : ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing Gpm_Open" >&5 $as_echo_n "checking for library containing Gpm_Open... " >&6; } if ${ac_cv_search_Gpm_Open+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 Gpm_Open (); int main () { return Gpm_Open (); ; return 0; } _ACEOF for ac_lib in '' gpm :libgpm.so.2; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_Gpm_Open=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_Gpm_Open+:} false; then : break fi done if ${ac_cv_search_Gpm_Open+:} false; then : else ac_cv_search_Gpm_Open=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_Gpm_Open" >&5 $as_echo "$ac_cv_search_Gpm_Open" >&6; } ac_res=$ac_cv_search_Gpm_Open if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" HAVE_GPM="1" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libgpm not found. If build fails later consider installing gpm dev package " >&5 $as_echo "$as_me: WARNING: libgpm not found. If build fails later consider installing gpm dev package " >&2;} fi ;; esac for ac_header in execinfo.h pty.h util.h zlib.h bzlib.h libutil.h sys/ttydefaults.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done enable_jemalloc=no # Check whether --with-jemalloc was given. if test "${with_jemalloc+set}" = set; then : withval=$with_jemalloc; if test "$withval" != "no"; then enable_jemalloc=yes modify_env_variables=no case "$withval" in yes) { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for jemalloc libs" >&5 $as_echo "$as_me: Checking for jemalloc libs" >&6;} ;; *) jemalloc_include="$withval/include" jemalloc_ldflags="$withval/lib" modify_env_variables="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for jemalloc libs in $withval" >&5 $as_echo "$as_me: Checking for jemalloc libs in $withval" >&6;} ;; esac fi fi jemalloch=0 if test "$enable_jemalloc" != "no"; then saved_ldflags=$LDFLAGS saved_cppflags=$CPPFLAGS saved_libtool_link_flags=$LIBTOOL_LINK_FLAGS jemalloc_have_headers=0 jemalloc_have_libs=0 if test "$modify_env_variables" != "no"; then if test "x$CPPFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CPPFLAGS to \"-I${jemalloc_include}\"" CPPFLAGS="-I${jemalloc_include}" else ats_addto_bugger="-I${jemalloc_include}" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CPPFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CPPFLAGS" CPPFLAGS="$CPPFLAGS $i" fi done fi if test "x$LDFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting LDFLAGS to \"-L${jemalloc_ldflags}\"" LDFLAGS="-L${jemalloc_ldflags}" else ats_addto_bugger="-L${jemalloc_ldflags}" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $LDFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to LDFLAGS" LDFLAGS="$LDFLAGS $i" fi done fi if test "x$LIBTOOL_LINK_FLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting LIBTOOL_LINK_FLAGS to \"-R${jemalloc_ldflags}\"" LIBTOOL_LINK_FLAGS="-R${jemalloc_ldflags}" else ats_addto_bugger="-R${jemalloc_ldflags}" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $LIBTOOL_LINK_FLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to LIBTOOL_LINK_FLAGS" LIBTOOL_LINK_FLAGS="$LIBTOOL_LINK_FLAGS $i" fi done fi fi # On Darwin, jemalloc symbols are prefixed with je_. Search for that first, # then fall back to unadorned symbols. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing je_malloc_stats_print" >&5 $as_echo_n "checking for library containing je_malloc_stats_print... " >&6; } if ${ac_cv_search_je_malloc_stats_print+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 je_malloc_stats_print (); int main () { return je_malloc_stats_print (); ; return 0; } _ACEOF for ac_lib in '' jemalloc; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_je_malloc_stats_print=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_je_malloc_stats_print+:} false; then : break fi done if ${ac_cv_search_je_malloc_stats_print+:} false; then : else ac_cv_search_je_malloc_stats_print=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_je_malloc_stats_print" >&5 $as_echo "$ac_cv_search_je_malloc_stats_print" >&6; } ac_res=$ac_cv_search_je_malloc_stats_print if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" jemalloc_have_libs=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing malloc_stats_print" >&5 $as_echo_n "checking for library containing malloc_stats_print... " >&6; } if ${ac_cv_search_malloc_stats_print+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 malloc_stats_print (); int main () { return malloc_stats_print (); ; return 0; } _ACEOF for ac_lib in '' jemalloc; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_malloc_stats_print=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_malloc_stats_print+:} false; then : break fi done if ${ac_cv_search_malloc_stats_print+:} false; then : else ac_cv_search_malloc_stats_print=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_malloc_stats_print" >&5 $as_echo "$ac_cv_search_malloc_stats_print" >&6; } ac_res=$ac_cv_search_malloc_stats_print if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" jemalloc_have_libs=1 fi fi if test "$jemalloc_have_libs" != "0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for jemalloc includes" >&5 $as_echo "$as_me: Checking for jemalloc includes" >&6;} for ac_header in jemalloc/jemalloc.h do : ac_fn_c_check_header_mongrel "$LINENO" "jemalloc/jemalloc.h" "ac_cv_header_jemalloc_jemalloc_h" "$ac_includes_default" if test "x$ac_cv_header_jemalloc_jemalloc_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_JEMALLOC_JEMALLOC_H 1 _ACEOF jemalloc_have_headers=1 fi done if test "$jemalloc_have_headers" != "0"; then jemalloch=1 if test "x$LIBS" = "x"; then test "x$verbose" = "xyes" && echo " setting LIBS to \"-ljemalloc\"" LIBS="-ljemalloc" else ats_addto_bugger="-ljemalloc" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $LIBS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to LIBS" LIBS="$LIBS $i" fi done fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: jemalloc headers not found" >&5 $as_echo "$as_me: WARNING: jemalloc headers not found" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: jemalloc libs not found" >&5 $as_echo "$as_me: WARNING: jemalloc libs not found" >&2;} fi if test "$jemalloc_have_libs" = "0"; then CPPFLAGS=$saved_cppflags LDFLAGS=$saved_ldflags LIBTOOL_LINK_FLAGS=$saved_libtool_link_flags { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: jemalloc not found" >&5 $as_echo "$as_me: WARNING: jemalloc not found" >&2;} fi fi # Check whether --with-yajl was given. if test "${with_yajl+set}" = set; then : withval=$with_yajl; if test "$withval" != "no"; then : case "$withval" in #( yes) : { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for yajl libs" >&5 $as_echo "$as_me: Checking for yajl libs" >&6;} ;; #( *) : yajl_saved_ldflags="$LDFLAGS" yajl_saved_cppflags="$CPPFLAGS" yajl_saved_libtool_link_flags="$LIBTOOL_LIBK_FLAGS" if test "x$CPPFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CPPFLAGS to \"-I$withval/include\"" CPPFLAGS="-I$withval/include" else ats_addto_bugger="-I$withval/include" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CPPFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CPPFLAGS" CPPFLAGS="$CPPFLAGS $i" fi done fi if test "x$LDFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting LDFLAGS to \"-I$withval/lib\"" LDFLAGS="-I$withval/lib" else ats_addto_bugger="-I$withval/lib" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $LDFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to LDFLAGS" LDFLAGS="$LDFLAGS $i" fi done fi if test "x$LIBTOOL_LINK_FLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting LIBTOOL_LINK_FLAGS to \"-R$withval/lib\"" LIBTOOL_LINK_FLAGS="-R$withval/lib" else ats_addto_bugger="-R$withval/lib" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $LIBTOOL_LINK_FLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to LIBTOOL_LINK_FLAGS" LIBTOOL_LINK_FLAGS="$LIBTOOL_LINK_FLAGS $i" fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for yajl libs in $withval" >&5 $as_echo "$as_me: Checking for yajl libs in $withval" >&6;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yajl_gen_alloc" >&5 $as_echo_n "checking for library containing yajl_gen_alloc... " >&6; } if ${ac_cv_search_yajl_gen_alloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 yajl_gen_alloc (); int main () { return yajl_gen_alloc (); ; return 0; } _ACEOF for ac_lib in '' yajl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_yajl_gen_alloc=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_yajl_gen_alloc+:} false; then : break fi done if ${ac_cv_search_yajl_gen_alloc+:} false; then : else ac_cv_search_yajl_gen_alloc=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yajl_gen_alloc" >&5 $as_echo "$ac_cv_search_yajl_gen_alloc" >&6; } ac_res=$ac_cv_search_yajl_gen_alloc if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for yajl headers" >&5 $as_echo "$as_me: Checking for yajl headers" >&6;} for ac_header in yajl/yajl_parse.h do : ac_fn_c_check_header_mongrel "$LINENO" "yajl/yajl_parse.h" "ac_cv_header_yajl_yajl_parse_h" "$ac_includes_default" if test "x$ac_cv_header_yajl_yajl_parse_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_YAJL_YAJL_PARSE_H 1 _ACEOF HAVE_LOCAL_YAJL=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: yajl not found on the local system" >&5 $as_echo "$as_me: WARNING: yajl not found on the local system" >&2;} fi done fi fi fi if ${HAVE_LOCAL_YAJL+:} false; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: compiling with the included version of yajl" >&5 $as_echo "$as_me: compiling with the included version of yajl" >&6;} HAVE_LOCAL_YAJL=0 if ${yajl_saved_ldflags+:} false; then : CPPFLAGS="$yajl_saved_cppflags" LDFLAGS="$yajl_saved_ldflags" LIBTOOL_LIBK_FLAGS="$yajl_saved_libtool_link_flags" fi fi # Check whether --with-ncurses was given. if test "${with_ncurses+set}" = set; then : withval=$with_ncurses; else with_ncurses=check fi # Check whether --with-ncursesw was given. if test "${with_ncursesw+set}" = set; then : withval=$with_ncursesw; else with_ncursesw=check fi ax_saved_LIBS=$LIBS if test "x$with_ncurses" = xyes || test "x$with_ncursesw" = xyes; then : ax_with_plaincurses=no else ax_with_plaincurses=check fi ax_cv_curses_which=no # Test for NcursesW if test "x$CURSES_LIB" = x && test "x$with_ncursesw" != xno; then : LIBS="$ax_saved_LIBS -lncursesw" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NcursesW wide-character library" >&5 $as_echo_n "checking for NcursesW wide-character library... " >&6; } if ${ax_cv_ncursesw+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_ncursesw=yes else ax_cv_ncursesw=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_ncursesw" >&5 $as_echo "$ax_cv_ncursesw" >&6; } if test "x$ax_cv_ncursesw" = xno && test "x$with_ncursesw" = xyes; then : as_fn_error $? "--with-ncursesw specified but could not find NcursesW library" "$LINENO" 5 fi if test "x$ax_cv_ncursesw" = xyes; then : ax_cv_curses=yes ax_cv_curses_which=ncursesw CURSES_LIB="-lncursesw" $as_echo "#define HAVE_NCURSESW 1" >>confdefs.h $as_echo "#define HAVE_CURSES 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ncursesw/curses.h" >&5 $as_echo_n "checking for working ncursesw/curses.h... " >&6; } if ${ax_cv_header_ncursesw_curses_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; attr_t d = WA_NORMAL; cchar_t e; wint_t f; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); wattr_set(stdscr, d, 0, NULL); wget_wch(stdscr, &f); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_ncursesw_curses_h=yes else ax_cv_header_ncursesw_curses_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_ncursesw_curses_h" >&5 $as_echo "$ax_cv_header_ncursesw_curses_h" >&6; } if test "x$ax_cv_header_ncursesw_curses_h" = xyes; then : ax_cv_curses_enhanced=yes ax_cv_curses_color=yes ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_ENHANCED 1" >>confdefs.h $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h $as_echo "#define HAVE_NCURSESW_CURSES_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ncursesw.h" >&5 $as_echo_n "checking for working ncursesw.h... " >&6; } if ${ax_cv_header_ncursesw_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; attr_t d = WA_NORMAL; cchar_t e; wint_t f; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); wattr_set(stdscr, d, 0, NULL); wget_wch(stdscr, &f); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_ncursesw_h=yes else ax_cv_header_ncursesw_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_ncursesw_h" >&5 $as_echo "$ax_cv_header_ncursesw_h" >&6; } if test "x$ax_cv_header_ncursesw_h" = xyes; then : ax_cv_curses_enhanced=yes ax_cv_curses_color=yes ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_ENHANCED 1" >>confdefs.h $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h $as_echo "#define HAVE_NCURSESW_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ncurses.h" >&5 $as_echo_n "checking for working ncurses.h... " >&6; } if ${ax_cv_header_ncurses_h_with_ncursesw+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; attr_t d = WA_NORMAL; cchar_t e; wint_t f; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); wattr_set(stdscr, d, 0, NULL); wget_wch(stdscr, &f); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_ncurses_h_with_ncursesw=yes else ax_cv_header_ncurses_h_with_ncursesw=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_ncurses_h_with_ncursesw" >&5 $as_echo "$ax_cv_header_ncurses_h_with_ncursesw" >&6; } if test "x$ax_cv_header_ncurses_h_with_ncursesw" = xyes; then : ax_cv_curses_enhanced=yes ax_cv_curses_color=yes ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_ENHANCED 1" >>confdefs.h $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h $as_echo "#define HAVE_NCURSES_H 1" >>confdefs.h fi if test "x$ax_cv_header_ncursesw_curses_h" = xno && test "x$ax_cv_header_ncursesw_h" = xno && test "x$ax_cv_header_ncurses_h_with_ncursesw" = xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h" >&5 $as_echo "$as_me: WARNING: could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h" >&2;} fi fi fi # Test for Ncurses if test "x$CURSES_LIB" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno; then : LIBS="$ax_saved_LIBS -lncurses" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ncurses library" >&5 $as_echo_n "checking for Ncurses library... " >&6; } if ${ax_cv_ncurses+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_ncurses=yes else ax_cv_ncurses=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_ncurses" >&5 $as_echo "$ax_cv_ncurses" >&6; } if test "x$ax_cv_ncurses" = xno && test "x$with_ncurses" = xyes; then : as_fn_error $? "--with-ncurses specified but could not find Ncurses library" "$LINENO" 5 fi if test "x$ax_cv_ncurses" = xyes; then : ax_cv_curses=yes ax_cv_curses_which=ncurses CURSES_LIB="-lncurses" $as_echo "#define HAVE_NCURSES 1" >>confdefs.h $as_echo "#define HAVE_CURSES 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ncurses/curses.h" >&5 $as_echo_n "checking for working ncurses/curses.h... " >&6; } if ${ax_cv_header_ncurses_curses_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_ncurses_curses_h=yes else ax_cv_header_ncurses_curses_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_ncurses_curses_h" >&5 $as_echo "$ax_cv_header_ncurses_curses_h" >&6; } if test "x$ax_cv_header_ncurses_curses_h" = xyes; then : ax_cv_curses_color=yes ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h $as_echo "#define HAVE_NCURSES_CURSES_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ncurses.h" >&5 $as_echo_n "checking for working ncurses.h... " >&6; } if ${ax_cv_header_ncurses_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_ncurses_h=yes else ax_cv_header_ncurses_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_ncurses_h" >&5 $as_echo "$ax_cv_header_ncurses_h" >&6; } if test "x$ax_cv_header_ncurses_h" = xyes; then : ax_cv_curses_color=yes ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h $as_echo "#define HAVE_NCURSES_H 1" >>confdefs.h fi if test "x$ax_cv_header_ncurses_curses_h" = xno && test "x$ax_cv_header_ncurses_h" = xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find a working ncurses/curses.h or ncurses.h" >&5 $as_echo "$as_me: WARNING: could not find a working ncurses/curses.h or ncurses.h" >&2;} fi fi fi # Test for plain Curses (or if CURSES_LIB was set by user) if test "x$with_plaincurses" != xno && test "x$ax_cv_curses_which" = xno; then : if test "x$CURSES_LIB" != x; then : LIBS="$ax_saved_LIBS $CURSES_LIB" else LIBS="$ax_saved_LIBS -lcurses" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Curses library" >&5 $as_echo_n "checking for Curses library... " >&6; } if ${ax_cv_plaincurses+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_plaincurses=yes else ax_cv_plaincurses=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_plaincurses" >&5 $as_echo "$ax_cv_plaincurses" >&6; } if test "x$ax_cv_plaincurses" = xyes; then : ax_cv_curses=yes ax_cv_curses_which=plaincurses if test "x$CURSES_LIB" = x; then : CURSES_LIB="-lcurses" fi $as_echo "#define HAVE_CURSES 1" >>confdefs.h # Check for base conformance (and header file) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working curses.h" >&5 $as_echo_n "checking for working curses.h... " >&6; } if ${ax_cv_header_curses_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; initscr(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_header_curses_h=yes else ax_cv_header_curses_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_header_curses_h" >&5 $as_echo "$ax_cv_header_curses_h" >&6; } if test "x$ax_cv_header_curses_h" = xyes; then : $as_echo "#define HAVE_CURSES_H 1" >>confdefs.h # Check for X/Open Enhanced conformance { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X/Open Enhanced Curses conformance" >&5 $as_echo_n "checking for X/Open Enhanced Curses conformance... " >&6; } if ${ax_cv_plaincurses_enhanced+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifndef _XOPEN_CURSES #error "this Curses library is not enhanced" "this Curses library is not enhanced" #endif int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; attr_t d = WA_NORMAL; cchar_t e; wint_t f; initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); wattr_set(stdscr, d, 0, NULL); wget_wch(stdscr, &f); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_plaincurses_enhanced=yes else ax_cv_plaincurses_enhanced=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_plaincurses_enhanced" >&5 $as_echo "$ax_cv_plaincurses_enhanced" >&6; } if test "x$ax_cv_plaincurses_enhanced" = xyes; then : ax_cv_curses_enhanced=yes ax_cv_curses_color=yes $as_echo "#define HAVE_CURSES_ENHANCED 1" >>confdefs.h $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h fi # Check for color functions { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Curses color functions" >&5 $as_echo_n "checking for Curses color functions... " >&6; } if ${ax_cv_plaincurses_color+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; chtype c = COLOR_PAIR(1) & A_COLOR; initscr(); init_pair(1, COLOR_WHITE, COLOR_RED); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_plaincurses_color=yes else ax_cv_plaincurses_color=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_plaincurses_color" >&5 $as_echo "$ax_cv_plaincurses_color" >&6; } if test "x$ax_cv_plaincurses_color" = xyes; then : ax_cv_curses_color=yes $as_echo "#define HAVE_CURSES_COLOR 1" >>confdefs.h fi # Check for obsolete functions { $as_echo "$as_me:${as_lineno-$LINENO}: checking for obsolete Curses functions" >&5 $as_echo_n "checking for obsolete Curses functions... " >&6; } if ${ax_cv_plaincurses_obsolete+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { chtype a = A_BOLD; int b = KEY_LEFT; int g = getattrs(stdscr); int h = getcurx(stdscr) + getmaxx(stdscr); initscr(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_plaincurses_obsolete=yes else ax_cv_plaincurses_obsolete=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_plaincurses_obsolete" >&5 $as_echo "$ax_cv_plaincurses_obsolete" >&6; } if test "x$ax_cv_plaincurses_obsolete" = xyes; then : ax_cv_curses_obsolete=yes $as_echo "#define HAVE_CURSES_OBSOLETE 1" >>confdefs.h fi fi if test "x$ax_cv_header_curses_h" = xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find a working curses.h" >&5 $as_echo "$as_me: WARNING: could not find a working curses.h" >&2;} fi fi fi if test "x$ax_cv_curses" != xyes; then : ax_cv_curses=no fi if test "x$ax_cv_curses_enhanced" != xyes; then : ax_cv_curses_enhanced=no fi if test "x$ax_cv_curses_color" != xyes; then : ax_cv_curses_color=no fi if test "x$ax_cv_curses_obsolete" != xyes; then : ax_cv_curses_obsolete=no fi LIBS=$ax_saved_LIBS if test "x$ax_cv_curses" = xyes; then : else as_fn_error $? "requires an X/Open-compatible Curses library with color" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking lib pcre" >&5 $as_echo_n "checking lib pcre... " >&6; } # Check whether --with-pcre was given. if test "${with_pcre+set}" = set; then : withval=$with_pcre; else with_pcre="yes" fi if test ".$with_pcre" = ".no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 $as_echo "disabled" >&6; } as_fn_error $? "pcre required to build" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: (testing)" >&5 $as_echo "(testing)" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcre_study in -lpcre" >&5 $as_echo_n "checking for pcre_study in -lpcre... " >&6; } if ${ac_cv_lib_pcre_pcre_study+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcre $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 pcre_study (); int main () { return pcre_study (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pcre_pcre_study=yes else ac_cv_lib_pcre_pcre_study=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_study" >&5 $as_echo "$ac_cv_lib_pcre_pcre_study" >&6; } if test "x$ac_cv_lib_pcre_pcre_study" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPCRE 1 _ACEOF LIBS="-lpcre $LIBS" fi saved_LIBS=$LIBS LIBS="-lpcrecpp $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking libpcrecpp" >&5 $as_echo_n "checking libpcrecpp... " >&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 cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pcrecpp::RE("hello"); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, (WARNING)" >&5 $as_echo "no, (WARNING)" >&6; } LIBS=$saved_LIBS fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext 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 for ac_header in pcre.h pcre/pcre.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "$ac_cv_lib_pcre_pcre_study" = "yes" ; then PCRE_LIBS="-lpcre -lpcrecpp" { $as_echo "$as_me:${as_lineno-$LINENO}: checking lib pcre" >&5 $as_echo_n "checking lib pcre... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PCRE_LIBS" >&5 $as_echo "$PCRE_LIBS" >&6; } else OLDLDFLAGS="$LDFLAGS" ; LDFLAGS="$LDFLAGS -L$with_pcre/lib" OLDCPPFLAGS="$CPPFLAGS" ; CPPFLAGS="$CPPFLAGS -I$with_pcre/include" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcre_compile in -lpcre" >&5 $as_echo_n "checking for pcre_compile in -lpcre... " >&6; } if ${ac_cv_lib_pcre_pcre_compile+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcre $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 pcre_compile (); int main () { return pcre_compile (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pcre_pcre_compile=yes else ac_cv_lib_pcre_pcre_compile=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_compile" >&5 $as_echo "$ac_cv_lib_pcre_pcre_compile" >&6; } if test "x$ac_cv_lib_pcre_pcre_compile" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPCRE 1 _ACEOF LIBS="-lpcre $LIBS" fi CPPFLAGS="$OLDCPPFLAGS" LDFLAGS="$OLDLDFLAGS" if test "$ac_cv_lib_pcre_pcre_compile" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: .setting PCRE_LIBS -L$with_pcre/lib -lpcre" >&5 $as_echo ".setting PCRE_LIBS -L$with_pcre/lib -lpcre" >&6; } PCRE_LDFLAGS="-L$with_pcre/lib" PCRE_LIBS="-lpcre -lpcrecpp" test -d "$with_pcre/include" && PCRE_CFLAGS="-I$with_pcre/include" { $as_echo "$as_me:${as_lineno-$LINENO}: checking lib pcre" >&5 $as_echo_n "checking lib pcre... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PCRE_LIBS" >&5 $as_echo "$PCRE_LIBS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking lib pcre" >&5 $as_echo_n "checking lib pcre... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, (WARNING)" >&5 $as_echo "no, (WARNING)" >&6; } as_fn_error $? "pcre required to build" "$LINENO" 5 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking lib readline" >&5 $as_echo_n "checking lib readline... " >&6; } # Check whether --with-readline was given. if test "${with_readline+set}" = set; then : withval=$with_readline; else with_readline="yes" fi saved_CFLAGS=$CFLAGS saved_CPPFLAGS=$CPPFLAGS saved_LDFLAGS=$LDFLAGS saved_LIBS=$LIBS case "$with_readline" in #( no) : as_fn_error $? "readline required to build" "$LINENO" 5 ;; #( yes) : ;; #( *) : READLINE_CFLAGS="-I$with_readline/include" READLINE_LDFLAGS="-L$with_readline/lib" if test "x$CFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CFLAGS to \"-I$with_readline/include\"" CFLAGS="-I$with_readline/include" else ats_addto_bugger="-I$with_readline/include" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CFLAGS" CFLAGS="$CFLAGS $i" fi done fi if test "x$CPPFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CPPFLAGS to \"-I$with_readline/include\"" CPPFLAGS="-I$with_readline/include" else ats_addto_bugger="-I$with_readline/include" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CPPFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CPPFLAGS" CPPFLAGS="$CPPFLAGS $i" fi done fi LDFLAGS="-L$with_readline/lib $LDFLAGS" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing readline" >&5 $as_echo_n "checking for library containing readline... " >&6; } if ${ac_cv_search_readline+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 readline (); int main () { return readline (); ; return 0; } _ACEOF for ac_lib in '' readline; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $CURSES_LIB $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_readline=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_readline+:} false; then : break fi done if ${ac_cv_search_readline+:} false; then : else ac_cv_search_readline=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_readline" >&5 $as_echo "$ac_cv_search_readline" >&6; } ac_res=$ac_cv_search_readline if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" READLINE_LIBS="-lreadline" else as_fn_error $? "libreadline library not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing history_set_history_state" >&5 $as_echo_n "checking for library containing history_set_history_state... " >&6; } if ${ac_cv_search_history_set_history_state+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 history_set_history_state (); int main () { return history_set_history_state (); ; return 0; } _ACEOF for ac_lib in '' readline; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $CURSES_LIB $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_history_set_history_state=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_history_set_history_state+:} false; then : break fi done if ${ac_cv_search_history_set_history_state+:} false; then : else ac_cv_search_history_set_history_state=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_history_set_history_state" >&5 $as_echo "$ac_cv_search_history_set_history_state" >&6; } ac_res=$ac_cv_search_history_set_history_state if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "libreadline does not have the required symbols. editline possibly masquerading as readline." "$LINENO" 5 fi for ac_header in readline.h readline/readline.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF HAVE_READLINE_HEADERS=1 break fi done if ${HAVE_READLINE_HEADERS+:} false; then : else as_fn_error $? "readline headers not found" "$LINENO" 5 fi CFLAGS=$saved_CFLAGS CPPFLAGS=$saved_CPPFLAGS LDFLAGS=$saved_LDFLAGS LIBS=$saved_LIBS # Check whether --with-sqlite3 was given. if test "${with_sqlite3+set}" = set; then : withval=$with_sqlite3; else with_sqlite3="yes" fi saved_CFLAGS=$CFLAGS saved_CPPFLAGS=$CPPFLAGS saved_LDFLAGS=$LDFLAGS saved_LIBS=$LIBS case "$with_sqlite3" in #( no) : as_fn_error $? "sqlite3 required to build" "$LINENO" 5 ;; #( yes) : ;; #( *) : if test "x$CFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CFLAGS to \"-I$with_sqlite3/include\"" CFLAGS="-I$with_sqlite3/include" else ats_addto_bugger="-I$with_sqlite3/include" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CFLAGS" CFLAGS="$CFLAGS $i" fi done fi if test "x$CPPFLAGS" = "x"; then test "x$verbose" = "xyes" && echo " setting CPPFLAGS to \"-I$with_sqlite3/include\"" CPPFLAGS="-I$with_sqlite3/include" else ats_addto_bugger="-I$with_sqlite3/include" for i in $ats_addto_bugger; do ats_addto_duplicate="0" for j in $CPPFLAGS; do if test "x$i" = "x$j"; then ats_addto_duplicate="1" break fi done if test $ats_addto_duplicate = "0"; then test "x$verbose" = "xyes" && echo " adding \"$i\" to CPPFLAGS" CPPFLAGS="$CPPFLAGS $i" fi done fi SQLITE3_LDFLAGS="-L$with_sqlite3/lib" SQLITE3_CFLAGS="-I$with_sqlite3/include" LDFLAGS="-L$with_sqlite3/lib $LDFLAGS" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sqlite3_open" >&5 $as_echo_n "checking for library containing sqlite3_open... " >&6; } if ${ac_cv_search_sqlite3_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 sqlite3_open (); int main () { return sqlite3_open (); ; return 0; } _ACEOF for ac_lib in '' sqlite3; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib -pthread $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_sqlite3_open=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_sqlite3_open+:} false; then : break fi done if ${ac_cv_search_sqlite3_open+:} false; then : else ac_cv_search_sqlite3_open=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sqlite3_open" >&5 $as_echo "$ac_cv_search_sqlite3_open" >&6; } ac_res=$ac_cv_search_sqlite3_open if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" SQLITE3_LIBS="-lsqlite3" else as_fn_error $? "sqlite3 library not found" "$LINENO" 5 fi for ac_header in sqlite3.h do : ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" if test "x$ac_cv_header_sqlite3_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SQLITE3_H 1 _ACEOF else as_fn_error $? "sqlite3 headers not found" "$LINENO" 5 fi done sqlite3_version_req="3.9.0" sqlite3_version_req_shorten=`expr $sqlite3_version_req : '\([0-9]*\.[0-9]*\)'` sqlite3_version_req_major=`expr $sqlite3_version_req : '\([0-9]*\)'` sqlite3_version_req_minor=`expr $sqlite3_version_req : '[0-9]*\.\([0-9]*\)'` sqlite3_version_req_micro=`expr $sqlite3_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'` if test "x$sqlite3_version_req_micro" = "x" ; then sqlite3_version_req_micro="0" fi sqlite3_version_req_number=`expr $sqlite3_version_req_major \* 1000000 \ \+ $sqlite3_version_req_minor \* 1000 \ \+ $sqlite3_version_req_micro` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SQLite3 library >= $sqlite3_version_req" >&5 $as_echo_n "checking for SQLite3 library >= $sqlite3_version_req... " >&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 cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if (SQLITE_VERSION_NUMBER >= $sqlite3_version_req_number) // Everything is okay #else # error SQLite version is too old #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "SQLite3 version >= $sqlite3_version_req is required" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 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 ac_fn_c_check_func "$LINENO" "sqlite3_stmt_readonly" "ac_cv_func_sqlite3_stmt_readonly" if test "x$ac_cv_func_sqlite3_stmt_readonly" = xyes; then : $as_echo "#define HAVE_SQLITE3_STMT_READONLY /**/" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sqlite3_value_subtype" "ac_cv_func_sqlite3_value_subtype" if test "x$ac_cv_func_sqlite3_value_subtype" = xyes; then : HAVE_SQLITE3_VALUE_SUBTYPE=1 $as_echo "#define HAVE_SQLITE3_VALUE_SUBTYPE /**/" >>confdefs.h fi CFLAGS=$saved_CFLAGS CPPFLAGS=$saved_CPPFLAGS LDFLAGS=$saved_LDFLAGS LIBS=$saved_LIBS case "$host_os" in *) # AC_DEFINE([_XOPEN_SOURCE], [500], [Need pread]) $as_echo "#define _BSD_SOURCE 1" >>confdefs.h ;; esac ALL_LDFLAGS="$SQLITE3_LDFLAGS $READLINE_LDFLAGS $LDFLAGS" static_lib_list="libncurses.a libncursesw.a libreadline.a libsqlite3.a libz.a libtinfo.a" static_lib_list="$static_lib_list libpcre.a libpcrecpp.a libncursesw.a libbz2.a" static_lib_list="$static_lib_list libgpm.a libcurl.a libcrypto.a libssl.a libssh2.a" if test x"${enable_static}" != x"no"; then case "$host_os" in darwin*) STATIC_LDFLAGS="$STATIC_LDFLAGS -Wl,-search_paths_first" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -static-libgcc" >&5 $as_echo_n "checking whether the linker accepts -static-libgcc... " >&6; } if ${ax_cv_check_ldflags___static_libgcc+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -static-libgcc" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_check_ldflags___static_libgcc=yes else ax_cv_check_ldflags___static_libgcc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___static_libgcc" >&5 $as_echo "$ax_cv_check_ldflags___static_libgcc" >&6; } if test "x$ax_cv_check_ldflags___static_libgcc" = xyes; then : STATIC_LDFLAGS="$STATIC_LDFLAGS -static-libgcc" else : fi STATIC_LDFLAGS="$STATIC_LDFLAGS -L`pwd`/src/static-libs -static-libstdc++" # This is a hack to link against static libraries instead of shared # so that we can build a mostly statically link exe that can # be downloaded and used right away. This is required for OS X and # will, hopefully, make a static binary that is compatible with # many different versions of Linux. as_dir=src/static-libs; as_fn_mkdir_p rm -f src/static-libs/*.a for libflag in $ALL_LDFLAGS; do case $libflag in -Lstatic-libs) ;; -L*) libdir=`echo $libflag | sed -e 's/-L//'` for slib in $static_lib_list; do if test -e "$libdir/$slib" -a ! -e "src/static-libs/$slib"; then ln -sf "$libdir/$slib" src/static-libs/. fi done ;; esac done for slib in $static_lib_list; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for static library $slib" >&5 $as_echo_n "checking for static library $slib... " >&6; } if test -e "src/static-libs/$slib"; then found_slib=`readlink src/static-libs/$slib` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_slib" >&5 $as_echo "$found_slib" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } fi done fi case "$host_os" in #( darwin*) : ;; #( *) : curses_lib=$(echo $CURSES_LIB | sed -e 's/-l//') if test $? -eq 0; then : case "$curses_lib" in #( ncurses*) : if ${HAVE_GPM+:} false; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for libgpm dependency" >&5 $as_echo "$as_me: Checking for libgpm dependency" >&6;} saved_LDFLAGS=$LDFLAGS LDFLAGS="$STATIC_LDFLAGS $LDFLAGS" saved_LIBS=$LIBS as_ac_Lib=`$as_echo "ac_cv_lib_$curses_lib''_mousemask" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mousemask in -l$curses_lib" >&5 $as_echo_n "checking for mousemask in -l$curses_lib... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$curses_lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 mousemask (); int main () { return mousemask (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else 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 eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : LDFLAGS=$saved_LDFLAGS LIBS=$saved_LIBS else as_fn_error $? "libgpm development libraries are required to build" "$LINENO" 5 fi fi ;; #( *) : ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to test for dependepncy on gpm." >&5 $as_echo "$as_me: WARNING: Unable to test for dependepncy on gpm." >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: If build fails during make consider installing libgpm development libraries." >&5 $as_echo "$as_me: WARNING: If build fails during make consider installing libgpm development libraries." >&2;} fi ;; esac saved_location=$(pwd) cd $srcdir version=$(expr $(git describe --abbrev=7 --dirty --always --tags 2>/dev/null) : 'v\([0-9]*\.[0-9]*\.[0-9]*.*\)' 2>/dev/null) cd $saved_location if test $? -eq 0; then : version=$(echo $version | tr -d '\n') version=${version:-${PACKAGE_VERSION}} cat >>confdefs.h <<_ACEOF #define VCS_PACKAGE_STRING "$PACKAGE_NAME $version" _ACEOF else cat >>confdefs.h <<_ACEOF #define VCS_PACKAGE_STRING "$PACKAGE_STRING" _ACEOF fi if test $HAVE_LOCAL_YAJL -eq 0; then USE_INCLUDED_YAJL_TRUE= USE_INCLUDED_YAJL_FALSE='#' else USE_INCLUDED_YAJL_TRUE='#' USE_INCLUDED_YAJL_FALSE= fi if test x"$LIBCURL" != x""; then HAVE_LIBCURL_TRUE= HAVE_LIBCURL_FALSE='#' else HAVE_LIBCURL_TRUE='#' HAVE_LIBCURL_FALSE= fi ac_config_headers="$ac_config_headers src/config.h" ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files TESTS_ENVIRONMENT" ac_config_files="$ac_config_files src/Makefile" ac_config_files="$ac_config_files test/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_RE2C_TRUE}" && test -z "${HAVE_RE2C_FALSE}"; then as_fn_error $? "conditional \"HAVE_RE2C\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_INCLUDED_YAJL_TRUE}" && test -z "${USE_INCLUDED_YAJL_FALSE}"; then as_fn_error $? "conditional \"USE_INCLUDED_YAJL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBCURL_TRUE}" && test -z "${HAVE_LIBCURL_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBCURL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by lnav $as_me 0.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . lnav home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ lnav config.status 0.8.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "TESTS_ENVIRONMENT") CONFIG_FILES="$CONFIG_FILES TESTS_ENVIRONMENT" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi lnav-0.8.2/configure.ac000664 000765 000024 00000016562 13073603562 015240 0ustar00stackstaff000000 000000 AC_INIT([lnav],[0.8.2],[lnav@googlegroups.com],[lnav],[http://lnav.org]) AC_CONFIG_SRCDIR([src/lnav.cc]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AM_SILENT_RULES([yes]) AC_PREFIX_DEFAULT(/usr) AC_CANONICAL_HOST AX_CXX_COMPILE_STDCXX_14([noext], [mandatory]) for defdir in /opt/local /usr/local /usr /; do if test -d "$defdir/include"; then CPPFLAGS="$CPPFLAGS -I$defdir/include" fi if test -d "$defdir/lib64"; then LDFLAGS="$LDFLAGS -L$defdir/lib64" fi if test -d "$defdir/lib"; then LDFLAGS="$LDFLAGS -L$defdir/lib" fi if test -d "$defdir/lib/x86_64-linux-gnu"; then LDFLAGS="$LDFLAGS -L$defdir/lib/x86_64-linux-gnu" fi done dnl abssrcdir is the absolute path to the source base (regardless of where dnl you are building it) AS_CASE([x$srcdir], [x/*], AS_VAR_SET(abssrcdir, $srcdir), AS_VAR_SET(abssrcdir, `pwd`/$srcdir) ) AC_SUBST(abssrcdir) AC_PROG_CXX CPPFLAGS="$CPPFLAGS -D_ISOC99_SOURCE -D__STDC_LIMIT_MACROS" # CFLAGS=`echo $CFLAGS | sed 's/-O2//g'` # CXXFLAGS=`echo $CXXFLAGS | sed 's/-O2//g'` AC_ARG_VAR(SFTP_TEST_URL) AC_ARG_ENABLE([profiling], AS_HELP_STRING([--enable-profiling], [Compile with gprof(1) profiling support])) AC_MSG_CHECKING(gprof(4) profiling support) AS_VAR_IF([enable_profiling], [yes], [CFLAGS="$CFLAGS -pg -gstabs" CXXFLAGS="$CXXFLAGS -pg -gstabs" LDFLAGS="$LDFLAGS -pg"], [enable_profiling=no]dnl ) AC_MSG_RESULT($enable_profiling) AC_SUBST(CFLAGS_PG) AC_PROG_INSTALL AC_PROG_RANLIB AM_PROG_AR AC_PROG_LN_S AC_PROG_MAKE_SET AC_PATH_PROG(BZIP2_CMD, [bzip2]) AC_PATH_PROG(RE2C_CMD, [re2c]) AM_CONDITIONAL(HAVE_RE2C, test x"$RE2C_CMD" != x"") AC_CHECK_SIZEOF(off_t) AC_CHECK_SIZEOF(size_t) AC_STRUCT_TIMEZONE AC_ARG_ENABLE([static], AS_HELP_STRING([--disable-static], [Disable static linking])) AC_SEARCH_LIBS(openpty, util) AC_SEARCH_LIBS(gzseek, z, [], [AC_MSG_ERROR([libz required to build])]) AC_SEARCH_LIBS(BZ2_bzopen, bz2, AS_VAR_SET(BZIP2_SUPPORT, 1), AS_VAR_SET(BZIP2_SUPPORT, 0)) AC_SUBST(BZIP2_SUPPORT) AC_SEARCH_LIBS(dlopen, dl) AC_SEARCH_LIBS(backtrace, execinfo) LIBCURL_CHECK_CONFIG([], [7.23.0], [], [], [test x"${enable_static}" != x"no"]) # Sometimes, curses depends on these libraries being linked in... AC_ARG_ENABLE([tinfo], AS_HELP_STRING([--disable-tinfo], [Disable linking with tinfo, enabled by default]), [], [enable_tinfo="yes"] ) AS_IF([test "x${enable_tinfo}" != "xno"], [dnl AC_MSG_NOTICE([Trying to link with tinfo]) AC_SEARCH_LIBS(cur_term, tinfo, AC_MSG_NOTICE([Linking with tinfo]), AC_MSG_WARN([libtinfo not found]) ) ], AC_MSG_NOTICE([Building with tinfo linking disabled]) ) dnl libgpm is required on some systems where there is a misconfigured ncurses dnl and gpm libraries with interdependencies. This check is not required on OS X. AS_CASE(["$host_os"], [darwin*], [], AC_SEARCH_LIBS(Gpm_Open, [gpm :libgpm.so.2], AS_VAR_SET(HAVE_GPM, "1"), AC_MSG_WARN(m4_join([ ], [libgpm not found. If build fails later], [consider installing gpm dev package])dnl ) ) ) AC_CHECK_HEADERS(execinfo.h pty.h util.h zlib.h bzlib.h libutil.h sys/ttydefaults.h) LNAV_WITH_JEMALLOC LNAV_WITH_LOCAL_YAJL AX_WITH_CURSES AS_VAR_IF([ax_cv_curses],[yes],[], AC_MSG_ERROR([requires an X/Open-compatible Curses library with color])dnl ) AX_PATH_LIB_PCRE([], [AC_MSG_ERROR([pcre required to build])]) AX_PATH_LIB_READLINE LNAV_WITH_SQLITE3("3.9.0") case "$host_os" in *) # AC_DEFINE([_XOPEN_SOURCE], [500], [Need pread]) AC_DEFINE([_BSD_SOURCE], [1], [Need pread]) ;; esac AS_VAR_SET(ALL_LDFLAGS, "$SQLITE3_LDFLAGS $READLINE_LDFLAGS $LDFLAGS") AS_VAR_SET(static_lib_list, ["libncurses.a libncursesw.a libreadline.a libsqlite3.a libz.a libtinfo.a"]) AS_VAR_SET(static_lib_list, ["$static_lib_list libpcre.a libpcrecpp.a libncursesw.a libbz2.a"]) AS_VAR_SET(static_lib_list, ["$static_lib_list libgpm.a libcurl.a libcrypto.a libssl.a libssh2.a"]) if test x"${enable_static}" != x"no"; then case "$host_os" in darwin*) STATIC_LDFLAGS="$STATIC_LDFLAGS -Wl,-search_paths_first" ;; esac AX_CHECK_LINK_FLAG([-static-libgcc], [STATIC_LDFLAGS="$STATIC_LDFLAGS -static-libgcc"]) STATIC_LDFLAGS="$STATIC_LDFLAGS -L`pwd`/src/static-libs -static-libstdc++" # This is a hack to link against static libraries instead of shared # so that we can build a mostly statically link exe that can # be downloaded and used right away. This is required for OS X and # will, hopefully, make a static binary that is compatible with # many different versions of Linux. AS_MKDIR_P(src/static-libs) rm -f src/static-libs/*.a for libflag in $ALL_LDFLAGS; do case $libflag in -Lstatic-libs) ;; -L*) libdir=`echo $libflag | sed -e 's/-L//'` for slib in $static_lib_list; do if test -e "$libdir/$slib" -a ! -e "src/static-libs/$slib"; then ln -sf "$libdir/$slib" src/static-libs/. fi done ;; esac done for slib in $static_lib_list; do AC_MSG_CHECKING(for static library $slib) if test -e "src/static-libs/$slib"; then found_slib=`readlink src/static-libs/$slib` AC_MSG_RESULT($found_slib) else AC_MSG_RESULT(not found) fi done fi AC_SUBST(STATIC_LDFLAGS) AS_CASE(["$host_os"], [darwin*], [], [ curses_lib=$(echo $CURSES_LIB | sed -e 's/-l//') AS_IF([test $? -eq 0], [ AS_CASE(["$curses_lib"], [ncurses*], [AS_VAR_SET_IF(HAVE_GPM, [], [ AC_MSG_NOTICE([Checking for libgpm dependency]) AS_VAR_SET(saved_LDFLAGS, $LDFLAGS) AS_VAR_SET(LDFLAGS, "$STATIC_LDFLAGS $LDFLAGS") AS_VAR_SET(saved_LIBS, $LIBS) AC_CHECK_LIB($curses_lib, mousemask, [ AS_VAR_SET(LDFLAGS, $saved_LDFLAGS) AS_VAR_SET(LIBS, $saved_LIBS) ], AC_MSG_ERROR([libgpm development libraries are required to build]))dnl ])dnl ]) ], [ AC_MSG_WARN([Unable to test for dependepncy on gpm.]) AC_MSG_WARN([If build fails during make consider installing libgpm development libraries.]) ])dnl ]dnl ) saved_location=$(pwd) cd $srcdir version=$(expr $(git describe --abbrev=7 --dirty --always --tags 2>/dev/null) : 'v\([[0-9]]*\.[[0-9]]*\.[[0-9]]*.*\)' 2>/dev/null) cd $saved_location AS_IF([test $? -eq 0], [version=$(echo $version | tr -d '\n') version=${version:-${PACKAGE_VERSION}} AC_DEFINE_UNQUOTED([VCS_PACKAGE_STRING], ["$PACKAGE_NAME $version"], [VCS package string])], AC_DEFINE_UNQUOTED([VCS_PACKAGE_STRING], ["$PACKAGE_STRING"], [VCS package string])) AM_CONDITIONAL(USE_INCLUDED_YAJL, test $HAVE_LOCAL_YAJL -eq 0) AM_CONDITIONAL(HAVE_LIBCURL, test x"$LIBCURL" != x"") AC_CONFIG_HEADERS([src/config.h]) AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([TESTS_ENVIRONMENT]) AC_CONFIG_FILES([src/Makefile]) AC_CONFIG_FILES([test/Makefile]) AC_OUTPUT lnav-0.8.2/depcomp000755 000765 000024 00000056016 13073703424 014321 0ustar00stackstaff000000 000000 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lnav-0.8.2/INSTALL000664 000765 000024 00000022024 12477462531 013777 0ustar00stackstaff000000 000000 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the `--target=TYPE' option to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. lnav-0.8.2/install-sh000755 000765 000024 00000034523 13073703424 014747 0ustar00stackstaff000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lnav-0.8.2/LICENSE000664 000765 000024 00000002450 12477462531 013754 0ustar00stackstaff000000 000000 Copyright (c) 2010, Timothy Stack All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. lnav-0.8.2/lnav.1000664 000765 000024 00000005541 12550321371 013761 0ustar00stackstaff000000 000000 .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3. .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .\" Define macros .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .TH LNAV "1" "August 2013" .SH NAME lnav \- ncurses-based log file viewer .SH SYNOPSIS .B lnav [\-hVsar] [logfile1 logfile2 ...] .SH DESCRIPTION The log file navigator, lnav, is an enhanced log file viewer that takes advantage of any semantic information that can be gleaned from the files being viewed, such as timestamps and log levels. Using this extra semantic information, lnav can do things like interleaving messages from different files, generate histograms of messages over time, and providing hotkeys for navigating through the file. It is hoped that these features will allow the user to quickly and efficiently zero in on problems. .SH KEY BINDINGS .TP ? View/leave the online help text. .TP q Quit the program. .SH OPTIONS .TP \fB\-h\fR Print help and exit .TP \fB\-H\fR Display the internal help text. .TP \fB\-I\fR path Add the given configuration directory to the search path. .TP \fB\-i\fR Install the given format files in the $HOME/.lnav/formats/installed directory and exit. .TP \fB\-C\fR Check the configuration and exit. The log format files will be loaded and checked. Any files given on the command-line will be loaded checked to make sure they match a log format. .TP \fB\-d\fR file Write debug messages to the given file. .TP \fB\-V\fR Print version information. .TP \fB\-a\fR Load all of the most recent log file types. .TP \fB\-r\fR Load older rotated log files as well. .TP \fB\-t\fR Prepend timestamps to the lines of data being read in on the standard input. .TP \fB\-w\fR file Write the contents of the standard input to this file. .SS "Optional arguments:" .TP logfile1 The log files or directories to view. If a directory is given, all of the files in the directory will be loaded. .SH EXAMPLES To load and follow the syslog file: .PP .Vb 1 \& lnav \-s .Ve .PP To load all of the files in /var/log: .PP .Vb 1 \& lnav /var/log .Ve .PP To watch the output of make with timestamps prepended: .PP .Vb 1 \& make 2>&1 | lnav \-t .Ve .SH AUTHOR This manual page was written by Salvatore Bonaccorso for the Debian system (but may be used by others). lnav-0.8.2/m4/000775 000765 000024 00000000000 13073703476 013265 5ustar00stackstaff000000 000000 lnav-0.8.2/Makefile.am000664 000765 000024 00000000234 13017125352 014765 0ustar00stackstaff000000 000000 ACLOCAL_AMFLAGS = -I . SUBDIRS = src test noinst_SCRIPTS = TESTS_ENVIRONMENT dist_man_MANS = lnav.1 EXTRA_DIST = \ AUTHORS \ LICENSE \ README.md lnav-0.8.2/Makefile.in000664 000765 000024 00000070164 13073703424 015013 0ustar00stackstaff000000 000000 # Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_14.m4 \ $(top_srcdir)/m4/ax_with_curses.m4 $(top_srcdir)/m4/libcurl.m4 \ $(top_srcdir)/m4/lnav_common.m4 \ $(top_srcdir)/m4/lnav_with_jemalloc.m4 \ $(top_srcdir)/m4/lnav_with_pcre.m4 \ $(top_srcdir)/m4/lnav_with_readline.m4 \ $(top_srcdir)/m4/lnav_with_sqlite3.m4 \ $(top_srcdir)/m4/lnav_with_yajl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = TESTS_ENVIRONMENT CONFIG_CLEAN_VPATH_FILES = SCRIPTS = $(noinst_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(dist_man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ $(srcdir)/TESTS_ENVIRONMENT.in AUTHORS INSTALL NEWS README \ ar-lib compile config.guess config.sub depcomp install-sh \ missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BZIP2_CMD = @BZIP2_CMD@ BZIP2_SUPPORT = @BZIP2_SUPPORT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAGS_PG = @CFLAGS_PG@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSES_LIB = @CURSES_LIB@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ HAVE_CXX14 = @HAVE_CXX14@ HAVE_LOCAL_YAJL = @HAVE_LOCAL_YAJL@ HAVE_SQLITE3_VALUE_SUBTYPE = @HAVE_SQLITE3_VALUE_SUBTYPE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_CFLAGS = @PCRE_CFLAGS@ PCRE_LIBS = @PCRE_LIBS@ RANLIB = @RANLIB@ RE2C_CMD = @RE2C_CMD@ READLINE_CFLAGS = @READLINE_CFLAGS@ READLINE_LDFLAGS = @READLINE_LDFLAGS@ READLINE_LIBS = @READLINE_LIBS@ SET_MAKE = @SET_MAKE@ SFTP_TEST_URL = @SFTP_TEST_URL@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STATIC_LDFLAGS = @STATIC_LDFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ abssrcdir = @abssrcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jemalloch = @jemalloch@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . SUBDIRS = src test noinst_SCRIPTS = TESTS_ENVIRONMENT dist_man_MANS = lnav.1 EXTRA_DIST = \ AUTHORS \ LICENSE \ README.md all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): TESTS_ENVIRONMENT: $(top_builddir)/config.status $(srcdir)/TESTS_ENVIRONMENT.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-man uninstall-man1 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lnav-0.8.2/missing000755 000765 000024 00000015330 13073703424 014335 0ustar00stackstaff000000 000000 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lnav-0.8.2/NEWS000664 000765 000024 00000052733 13072367616 013457 0ustar00stackstaff000000 000000 lnav v0.8.2: Features: * The timestamp format for JSON log files can be specified with the "timestamp-format" option in the "line-format" array. * Added "min-width", "max-width", "align", and "overflow" options to the "line-format" in format definitions for JSON log files. These options give you more control over how the displayed line looks. * Added a "hidden" option to log format values so that you can hide JSON log fields from being displayed if they are not in the line format. * Added a "rewriter" field to log format value definitions that is a command used to rewrite the field in the pretty-printed version of a log message. For example, the HTTP access log format will rewrite the status code field to include the textual version (e.g. 200 (OK)). * Log message fields can now be hidden using the :hide-fields" command or by setting the 'hidden' property in the log format. When hidden, the fields will be replaced with a yellow ellipsis when displayed. Hiding large fields that contain extra details can make the log easier to read. The 'x' hotkey can be used to quickly toggle whether these fields are displayed or not. * Added a ':mark' command to bookmark the top line in the current view. * Added an ':alt-msg' command that can be used to set the text to be displayed in the bottom right of the command line. This command is mostly intended for use by hotkey maps to set the help text. * In lnav scripts, the first row of a SQL query result will now be turned into local variables that can be referenced in other commands or queries. For example, the following script will print the number one: ;SELECT 1 as foobar :eval :echo ${foobar} * Added an 'lnav_view_stack' SQL table that gives access to the view stack. * Added a 'top_time' column to the lnav_views table so that you can get the timestamp for the top line in views that are time-based as well as allowing you to move the view to a given time with an UPDATE statement. * Added a 'search' column to the lnav_views table so that you can perform a text search programmatically. * Added a 'regexp_capture(, )' table-valued function for getting detailed results from matching a regular expression against a string. * Added a 'timediff(, )' SQL function for computing the difference between two relative or absolute timestamps. * Log formats can now define a default set of highlights with the "highlights" property. * Added a '|search-for ' built-in script that can be used to start a search from the command-line. * Log format definitions can now specify the expected log level for a sample line. This check should make it easier to validate the definition. Interface Changes: * Command and SQL documentation is now displayed in a section at the bottom of the screen when a command or query is being entered. Some commands will also display a preview of the command results. For example, the ':open' command will display the first ten lines of the file to be opened and the ':filter-out' command will highlight text that matches in the current view. The preview pane can be shown/hidden by pressing CTRL-P. * The color used for text colored via ":highlight" is now based on the the regex instead of randomly picked so that colors are consistent across invocations. * The "graph" view has been removed since it's functionality has been obsoleted by other features, like ":create-search-table". * When doing a search, if a hit is found within a second after hitting , the view will move to the matched line. The previous behavior was to stay on the current line, which tended to be a surprise to new users. * Pressing 'n'/'N' to move through the next/previous search hit will now skip adjacent lines, up to the vertical size of the view. This should make scanning through clusters of hits much faster. Repeatedly pressing these keys within a short time will also accelerate scanning by moving the view at least a full page at a time. Breaking Changes: * The captured timestamp text in log files must fully match a known format or an error will be reported. The previous behavior was to ignore any text at the end of the line. Fixes: * You can now execute commands from the standard input by using a dash (-) with the '-f' command-line argument. Reading commands from a file descriptor should also work, for example, with the following bash syntax: $ lnav -f <(echo :open the-file-to-open) * Programming language syntax highlighting should now only be applied to source code files instead of everywhere. lnav v0.8.1: Features: * Added a spectrogram command and view that displays the values of a numeric field over time. The view works for log message fields or for database result columns. * Log formats can now create SQL views and execute other statements by adding '.sql' files to their format directories. The SQL scripts will be executed on startup. * Added 'json_group_object' and 'json_group_array' aggregate SQL functions that collects values from a GROUP BY query into a JSON object or array, respectively. * The SQL view will now graph values found in JSON objects/arrays in addition to the regular columns in the result. * Added an 'regexp_match(, )' SQL function that can be used to extract values from a string using a regular expression. * Added an 'extract()' SQL function that extracts values using the same data discover/extraction parser used in the 'logline' table. * Added a "summary" overlay line to the bottom of the log view that displays how long ago the last message was received, along with the total number of files and the error rate over the past five minutes. * Pressing 'V' in the DB view will now check for a column with a timestamp and move to the corresponding time in the log view. * Added 'a/A' hotkeys to restore a view previously popped with 'q/Q'. * Added ":hide-lines-before", ":hide-lines-after", and ":show-lines-before-and-after" commands so that you can filter out log lines based on time. * Scripts containing lnav commands/queries can now be executed using the pipe ('|') hotkey. See the documentation for more information. * Added an ":eval" command that can be used to execute a command or query after performing environment variable substitution. * Added an ":echo" command that can be useful for scripts to message the user. * The "log_part" column can now be set with an SQL UPDATE statement. * Added a "log_body" hidden column that returns the body of the log message. * Added ":config", ":reset-config", and ":save-config" commands to change configuration options, reset to default, and save them for future executions. * Added a "/ui/clock-format" configuration option that controls the time format in the top-left corner. * Added a "/ui/dim-text" configuration option that controls the brightness of text in the UI. * Added support for TAI64 timestamps (http://cr.yp.to/libtai/tai64.html). * Added a safe execution mode. If the 'LNAVSECURE' environment variable is set before executing lnav, the following commands are disabled: - open - pipe-to - pipe-line-to - write-*-to This makes it easier to run lnav with escalated privileges in restricted environments, without the risk of users being able to use the above mentioned commands to gain privileged access. Interface Changes: * The 'o/O' hotkeys have been reassigned to navigate through log messages that have a matching "opid" field. The old action of moving forward and backward by 60 minutes can be simulated by using the ':goto' command with a relative time and the 'r/R' hotkeys. * Log messages with timestamps that pre-date previous log messages will have the timestamp highlighted in yellow and underlined. These out- of-time-order messages will be assigned the time of the previous message for sorting purposes. You can press the 'p' hotkey to examine the 'Received Time' of the message as well as the time parsed from the original message. A "log_actual_time" hidden field has also been added to the SQLite virtual table so you can operate on the original message time from the file. * The 'A/B' hotkeys for moving forward/backward by 10% line increments have been reassigned to '[' and ']'. The 'a' and 'A' hotkeys are now used to return to the previously popped view while trying to preserve the time range. For example, after leaving the spectrogram view with 'q', you can press 'A' return to the view with the top time in the spectrogram matching the top time in the log view. * The 'Q' hotkey now pops the current view off of the stack while maintaining the top time between views. Fixes: * Issues with tailing JSON logs have been fixed. * The jget() SQL function should now work for objects nested in arrays. lnav v0.8.0: Features: * Integration with "papertrailapp.com" for querying and tailing server log and syslog messages. See the Papertrail section in the online help for more details. * Remote files can be opened when lnav is built with libcurl v7.23.0+ * SQL queries can now be done on lines that match a regular expression using the "log_search" table or by creating custom tables with the ":create-search-table" command. * Log formats that are "containers" for other log formats, like syslog, are now supported. See the online help for more information. * Formats can be installed from git repositories using the '-i' option. A standard set of extra formats can be installed by doing 'lnav -i extra'. (You must have git installed for this to work.) * Added support for 'VMware vSphere Auto Deploy' log format. * Added a 'sudo' log format. * Added hotkeys to move left/right by a smaller increment (H/L or Shift+Left/Shift+Right). * A color-coded bar has been added to the left side to show where messages from one file stop and messages from another file start. * The '-C' option will now try to check any specified log files to make sure the format(s) match all of the lines. * Added an "all_logs" SQLite table that contains the message format extracted from each log line. Also added a ';.msgformat' SQL command that executes a query that returns the counts for each format and the first line where the format was seen. * Added an "lnav_views" SQLite table that can be used to query and change the lnav view state. * When typing in a command, the status bar will display a short summary of the currently entered command. * Added a "delete-filter" command. * Added a "log_msg_instance" column to the logline and log_search tables to make it easier to join tables that are matching log messages that are ordered. * Added a "timeslice()" function to SQLite so that it is easier to group log messages by time buckets. * The 'goto' command now supports relative time values like 'a minute ago', 'an hour later', and many more. Interface Changes: * The 'r/R' hotkeys have been reassigned to navigate through the log messages by the relative time value that was last used with the 'goto' command. Fixes: * The pretty-print view should now work for text files. * Nested fields in JSON logs are now supported for levels, bodies, etc... * Tab-completion should work for quoted SQL identifiers. * 'lo-fi' mode key shortcut changed to CTRL+L. * 'redraw' shortcut removed. Relegated to just a command. * Fixed lnav hang in pretty-print mode while doing a dns lookup. * The generic log message parser used to extract data has been optimized and should be a bit faster. lnav v0.7.3: Features: * Add 'pipe-to' and 'pipe-line-to' commands that pipe the currently marked lines or the current log message to a shell command, respectively. * Added a "pretty-print" view (P hotkey) that tries to reformat log messages so that they are easier to read. * Added a 'redraw' command (CTRL+L hotkey) to redraw the window in case it has been corrupted. * Added a 'relative-goto' command to move the current view relative to its current position. * Experimental support for linking with jemalloc. * The plain text view now supports filtering. * Added 'next-mark' and 'prev-mark' commands to jump to the next or previous bookmarked line (e.g. error, warning, ...) * Added a 'zoom-to' command to change the zoom level of the histogram view. * Log formats can now define their own timestamp formats with the 'timestamp-format' field. Fixes: * Autotools scripts overhaul. * Added a configure option to disable linking with libtinfo. The newer versions of ncurses don't require it, however the build silently pulls it in as a dependency, if it is available on the system. This can be explicitly disabled using the '--disable-tinfo' option during configure. * Fixed the configure script behavior to ignore the values specified using the CFLAGS and LDFLAGS environment variables while searching for sqlite3 when '--with-sqlite3' switch was specified without the prefix. * The configure script now recognizes libeditline symlink'ed to masquerade as libreadline. This previously used to cause problems at compile time, specially on OS X. If you come across this error, use the '--with-readline=prefix' switch to specify the path to the correct location of libreadline. * The order that log formats are tried against a log file is now automatically determined so that more specific formats are tested before more general ones. The order is determined on startup based on how each format matches each other formats sample lines. * Command files (i.e. those executed via the '-f' flag) now support commands/queries that span more than one line. * Added more log levels: stats, debug2 - debug5. lnav v0.7.2: * Added log formats for vdsm, openstack, and the vmkernel. * Added a "lo-fi" mode (L hotkey) that dumps the displayed log lines to the terminal without any decorations. The write-to, write-json-to, and write-csv-to commands will also write their output to the terminal when passed '-' as the file name. This mode can be useful for copying plain text lines to the clipboard. * (OS X) Text search strings are copied to the system's "find" clipboard. Also, when starting a new search, the current value in the "find" clipboard can be tab-completed. lnav v0.7.1: Features: * Added an 'environ' SQL table that reflects lnav's environment variables. The table can be read and written to using SQL SELECT, INSERT, UPDATE, and DELETE statements. Setting variables can be a way to use SQL query results in lnav commands. * Added a 'jget' SQLite function that can extract fields from a JSON- encoded value. * Added log formats for the OpenAM identity provider. * Added a 'clear-highlight' command to clear previous calls to the 'highlight' command. * Fixed some performance bugs in indexing JSON log formats. Loading times should be at least five times faster. * Filtering performance should be improved so that enabling/disabling filters should be almost instantaneous. * The filter-in, filter-out, and highlight commands now support tab-completion of text in the current view. * Add a '-i' flag that installs format files in: ~/.lnav/formats/installed lnav v0.7.0: Features: * Add the '.schema' SQL command to open a view that displays the schema for the internal tables and any attached databases. If lnav was only executed with a SQLite database and no text files, this view will open by default. * The scroll bar now indicates the location of errors/warnings, search hits, and bookmarks. * The xterm title is update to reflect the file name for the top line in the view. * Added a "headless" mode so that you can execute commands and run SQL queries from the command-line without having to do it from the curses UI. * When doing a search or SQL query, any text that is currently being displayed can be tab-completed. * The '-H' option was added so you can view the internal help text. * Added the 'g/G' hotkeys to move to the top/bottom of the file. * Added a 'log_mark' column to the log tables that indicates whether or not a log message is bookmarked. The field is writable, so you can bookmark lines using an SQL UPDATE query. * Added syntax-highlighting when editing SQL queries or search regexes. * Added a "write-json-to" command that writes the result of a SQL query to a JSON-formatted file. * The "elapsed time" column now uses red/green coloring to indicate sharp changes in the message rate. * Added a "set-min-log-level" command to filter out log messages that are below a given level. Fixes: * Performance improvements. * Multi-line filtering has been fixed. * A collator has been added to the log_level column in the log tables so that you can write expressions like "log_level > 'warning'". * The log_time datetime format now matches what is returned by "datetime('now')" so that collating works correctly. * If a search string is not valid PCRE syntax, a search is done for the exact string instead of just returning an error. * Static-linking has been cleaned up. * OpenSSL is no longer a requirement. * Alpha support for Windows/cygwin. * Environment variables can now be accessed in SQL queries using the syntax: $VAR_NAME * An internal log is kept and written out on a crash. * Partition bookmarks are now tracked separately from regular user bookmarks. You can start a partition with the 'partition-name' command and remove it with the 'clear-partition' command. * Improved display of possible matches during tab-completion in the command-prompt. The matches are now shown in a separate view and pressing tab repeatedly will scroll through the view. * The "open" command now does shell word expansion for file names. * More config directory paths have been added: /etc/lnav, $prefix/etc/lnav, and directories passed on the command-line with -I. lnav v0.6.2: Features: * Word-wrap support. Fixes: * Fix some OS X Mavericks build/runtime issues. lnav v0.6.1: Features: * Support for JSON-encoded log files. Fixes: * Some minor fixes and performance improvements. lnav v0.6.0: Features: * Custom log formats and more builtin formats * Automatic extraction of data from logs * UI improvements, support for 256 color terminals lnav v0.5.1: Features: * Added the '-t' and '-w' options which can be used to prepend a timestamp to any data piped in on stdin and to specify a file to write the contents of stdin to. Fixes: * Cleanup for packaging. lnav v0.5.0: Features: * Files can be specified on the command-line using wildcards so that new files are automatically loaded. Directories can also be passed as command-line arguments to read all of the files in the directory. * Builds on cygwin again. * Added the 'C' hotkey to clear any existing user bookmarks. * Added experimental support for accepting input from mice. Fixes: * Internal cleanup. * Copying to the clipboard on OS X is now supported. * Many bug fixes. lnav v0.4.0: Features: * Files that are not recognized as containing log messages have been broken out to a separate text files view. You can flip between the log view and the text file view with the 't' hotkey. When viewing text files, the 'f' hotkey will switch between files. * Files compressed with bzip2 are recognized and decompressed on the fly. * Added a "session" file and command for storing commands that should be executed on startup. For example, if you always want some highlighting to be done, you can add that command to the session file. Fixes: * Add some more log file formats for generic log files. * Performance improvements for compressed files. * Works on OS X now. lnav v0.3.0: Changes: * The hotkey for the SQL view was changed to 'v' and 'V' from '.'. Features: * You can now switch between the SQL result view and the log view while keeping the top of the views in sync with the "line_number" column. Fixes: * The "line_number" column is no longer included in the SQL result view's stacked bar graph. * Added a "warnings" count to the histogram view. lnav-0.8.2/README000664 000765 000024 00000003172 13062352710 013615 0ustar00stackstaff000000 000000 LNAV ---- The log file navigator, lnav, is an enhanced log file viewer that takes advantage of any semantic information that can be gleaned from the files being viewed, such as timestamps and log levels. Using this extra semantic information, lnav can do things like interleaving messages from different files, generate histograms of messages over time, and providing hotkeys for navigating through the file. It is hoped that these features will allow the user to quickly and efficiently zero in on problems. PREREQUISITES ------------- The following software packages are required to build lnav: gcc/clang - A C++14-compatible compiler. libpcre - The Perl Compatible Regular Expression (PCRE) library. sqlite - The SQLite database engine. Version 3.9.0 or higher is required. ncurses - The ncurses text UI library. readline - The readline line editing library. zlib - The zlib compression library. bz2 - The bzip2 compression library. re2c - The re2c scanner generator. libcurl - The cURL library for downloading files from URLs. Version 7.23.0 or higher is required. INSTALLATION ------------ Lnav follows the usual GNU style for configuring and installing software: $ ./configure $ make $ sudo make install USING ----- The only file installed is the executable, "lnav". You can execute it with no arguments to view the default set of files: $ lnav You can view all the syslog messages by running: $ lnav /var/log/messages* SUPPORT ------- The lnav mailing list can be reached at: lnav@googlegroups.com SEE ALSO -------- The lnav website: http://lnav.org lnav-0.8.2/README.md000664 000765 000024 00000005637 13062352710 014224 0ustar00stackstaff000000 000000 [![Build Status](https://travis-ci.org/tstack/lnav.png)](https://travis-ci.org/tstack/lnav) [![Build status](https://ci.appveyor.com/api/projects/status/24wskehb7j7a65ro?svg=true)](https://ci.appveyor.com/project/tstack/lnav) [![Bounties](https://img.shields.io/bountysource/team/lnav/activity.svg)](https://www.bountysource.com/teams/lnav) [![LoC](https://tokei.rs/b1/github/tstack/lnav)](https://github.com/tstack/lnav). _This is the source repository for **lnav**, visit [http://lnav.org](http://lnav.org) for a high level overview._ LNAV -- The Logfile Navigator ============================= The log file navigator, lnav, is an enhanced log file viewer that takes advantage of any semantic information that can be gleaned from the files being viewed, such as timestamps and log levels. Using this extra semantic information, lnav can do things like interleaving messages from different files, generate histograms of messages over time, and providing hotkeys for navigating through the file. It is hoped that these features will allow the user to quickly and efficiently zero in on problems. Prerequisites ------------- The following software packages are required to build lnav: * gcc/clang - A C++14-compatible compiler. * libpcre - The Perl Compatible Regular Expression (PCRE) library. * sqlite - The SQLite database engine. Version 3.9.0 or higher is required. * ncurses - The ncurses text UI library. * readline - The readline line editing library. * zlib - The zlib compression library. * bz2 - The bzip2 compression library. * libcurl - The cURL library for downloading files from URLs. Version 7.23.0 or higher is required. Installation ------------ Lnav follows the usual GNU style for configuring and installing software: $ ./configure $ make $ sudo make install __Run ```./autogen.sh``` before running any of the above commands when compiling from a cloned repository.__ Cygwin users ------------ It should compile fine in Cygwin. Alternatively, you can get the generated binary from [AppVeyor](https://ci.appveyor.com/project/tstack/lnav) artifacts. Remember that you still need the lnav dependencies under Cygwin, here is a quick way to do it: `setup-x86_64.exe -q -P libpcre1 -P libpcrecpp0 -P libsqlite3_0 -P libstdc++6` Currently, the x64 version seems to be working better than the x86 one. Using ----- The only file installed is the executable, "lnav". You can execute it with no arguments to view the default set of files: $ lnav You can view all the syslog messages by running: $ lnav /var/log/messages* Screenshot ---------- The following screenshot shows a syslog file. Log lines are displayed with highlights. Errors are red and warnings are yellow. [![Screenshot](http://tstack.github.io/lnav/lnav-syslog-thumb.png)](http://tstack.github.io/lnav/lnav-syslog.png) See Also -------- The lnav website can be found at: > [http://lnav.org](http://lnav.org) lnav-0.8.2/src/000775 000765 000024 00000000000 13073703476 013534 5ustar00stackstaff000000 000000 lnav-0.8.2/test/000775 000765 000024 00000000000 13073703477 013725 5ustar00stackstaff000000 000000 lnav-0.8.2/test-driver000755 000765 000024 00000011040 13073703424 015126 0ustar00stackstaff000000 000000 #! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lnav-0.8.2/TESTS_ENVIRONMENT.in000664 000765 000024 00000006510 12637147305 016063 0ustar00stackstaff000000 000000 #! /bin/bash top_srcdir="@abssrcdir@" export top_srcdir srcdir="@abssrcdir@/test" export srcdir # The top build directory, derived from the path to this script. top_builddir=`dirname $0` export top_builddir test_dir="@abssrcdir@/test" export test_dir # Let the tests know whether bzip is supported or not. BZIP2_SUPPORT="@BZIP2_SUPPORT@" export BZIP2_SUPPORT BZIP2_CMD="@BZIP2_CMD@" export BZIP2_CMD HOME="${top_builddir}/test" export HOME # The full path of the test case test_file=$1 # The base name of the test case test_file_base=`basename $1` # The current test number for shell based tests. test_num=0 lnav_test="${top_builddir}/src/lnav-test" export lnav_test lnav="${top_builddir}/src/lnav" export lnav LNAV_LOG_PATH="${top_builddir}/test/test.log" export LNAV_LOG_PATH SFTP_TEST_URL="@SFTP_TEST_URL@" export SFTP_TEST_URL HAVE_SQLITE3_VALUE_SUBTYPE="@HAVE_SQLITE3_VALUE_SUBTYPE@" export HAVE_SQLITE3_VALUE_SUBTYPE ## BEGIN Functions LAST_TEST="" # # Run a test case and capture its standard out and standard err. # # Usage: run_test [ ...] # # Example: # # To run rktimes and capture all of its stdio output: # # run_test rktimes -V # run_test() { LAST_TEST="test: $@" "$@" > ${test_file_base}_${test_num}.tmp 2> ${test_file_base}_${test_num}.err } # # Check the output generated by a run_test() call. # # Usage: check_output {Expected output on stdin} # # Example: # # To check the output of 'rktimes -V' and print out 'Unable to get version?' # if the output doesn't match: # # run_test rktimes -V # check_output "Unable to get version?" < ${test_file_base}_${test_num}.diff if test $? -ne 0; then echo $LAST_TEST echo $1 cat ${test_file_base}_${test_num}.diff exit 1 fi test_num=`expr ${test_num} \+ 1` } check_output_ws() { diff -u - ${test_file_base}_${test_num}.tmp > ${test_file_base}_${test_num}.diff if test $? -ne 0; then echo $LAST_TEST echo $1 cat ${test_file_base}_${test_num}.diff exit 1 fi test_num=`expr ${test_num} \+ 1` } test_err_filename() { echo ${test_file_base}_${test_num}.err } check_error_output() { diff -w -u - ${test_file_base}_${test_num}.err \ > ${test_file_base}_${test_num}.err.diff if test $? -ne 0; then echo $LAST_TEST echo $1 cat ${test_file_base}_${test_num}.err.diff exit 1 fi } # # Grep for a string in the output generated by a run_test() call. # # Usage: grep_output_for # # Example: # # To check the output of 'cbhey -l' for 'IDL:Foobar:1.0' and print out # 'Unable to list supported interfaces?' if it is not found: # # run_test cbhey -l # grep_output_for "IDL:Foobar:1.0" "Unable to list supported interface?" # grep_output_for() { if grep -q $1 ${test_file_base}_${test_num}.tmp > /dev/null 2>&1; then : else echo "${test_file_base}_${test_num}.tmp: $2" exit 1 fi test_num=`expr ${test_num} \+ 1` } on_error_fail_with() { if test $? -ne 0; then echo $1 > /dev/stderr exit 1 fi } ## END Functions # Finally, run the test... if test -x $1 && test `basename $1 .sh` == `basename $1`; then exec $* else # Shell script shift . ${test_file} fi lnav-0.8.2/test/ansi-colors.0.in000664 000765 000024 00000005215 12477462531 016647 0ustar00stackstaff000000 000000 Basic ANSI colors (eight-color, or dim) black  black  red  green  yellow  blue  magenta cyan  white  bold black  black  red  green  yellow  blue  magenta cyan  white  red  black  red  green  yellow  blue  magenta cyan  white  bold red  black  red  green  yellow  blue  magenta cyan  white  green  black  red  green  yellow  blue  magenta cyan  white  bold green  black  red  green  yellow  blue  magenta cyan  white  yellow  black  red  green  yellow  blue  magenta cyan  white  bold yellow  black  red  green  yellow  blue  magenta cyan  white  blue  black  red  green  yellow  blue  magenta cyan  white  bold blue  black  red  green  yellow  blue  magenta cyan  white  magenta  black  red  green  yellow  blue  magenta cyan  white  bold magenta  black  red  green  yellow  blue  magenta cyan  white  cyan  black  red  green  yellow  blue  magenta cyan  white  bold cyan  black  red  green  yellow  blue  magenta cyan  white  white  black  red  green  yellow  blue  magenta cyan  white  bold white  black  red  green  yellow  blue  magenta cyan  white  Attributes: bold dark italic underline blink concealed  testing  testing  testing  testing  testing  testing  lnav-0.8.2/test/bad-config/000775 000765 000024 00000000000 13073703476 015715 5ustar00stackstaff000000 000000 lnav-0.8.2/test/datafile_simple.0000664 000765 000024 00000001155 12710323125 017113 0ustar00stackstaff000000 000000 a=1 b=2 c=3,4 key 0:1 ^ a num 2:3 ^ 1 val 2:3 ^ 1 pair 0:3 ^-^ a=1 key 4:5 ^ b num 6:7 ^ 2 val 6:7 ^ 2 pair 4:7 ^-^ b=2 key 8:9 ^ c num 10:11 ^ 3 val 10:11 ^ 3 pair 8:11 ^-^ c=3 key 12:12 ^ num 12:13 ^ 4 val 12:13 ^ 4 pair 12:13 ^ 4 msg :a=1 b=2 c=3,4 format :a=# b=# c=#,# { "a": 1, "b": 2, "c": 3, "col_0": 4 } lnav-0.8.2/test/datafile_simple.1000664 000765 000024 00000000612 12710322715 017115 0ustar00stackstaff000000 000000 current speed: 38 mph key 0:0 key 0:13 ^-----------^ current speed pair 0:13 ^-----------^ current speed key 15:15 ^ num 15:17 ^^ 38 pair 15:17 ^^ 38 msg :current speed: 38 mph format :#: # mph { "col_0": "current speed", "col_1": 38 } lnav-0.8.2/test/datafile_simple.10000664 000765 000024 00000000442 12710325010 017165 0ustar00stackstaff000000 000000 quoted string u'pm/runtime' key 16:16 ^ quot 16:26 ^--------^ pm/runtime pair 16:26 ^--------^ pm/runtime msg :quoted string u'pm/runtime' format :quoted string # { "col_0": "pm/runtime" } lnav-0.8.2/test/datafile_simple.11000664 000765 000024 00000000740 12710325016 017175 0ustar00stackstaff000000 000000 version numbers 0.6.16 1.2-a1 key 17:17 ^ vers 17:23 ^----^ 0.6.16 pair 17:23 ^----^ 0.6.16 key 25:25 ^ vers 25:31 ^----^ 1.2-a1 pair 25:31 ^----^ 1.2-a1 msg :version numbers 0.6.16 1.2-a1 format :version numbers # # { "col_0": "0.6.16", "col_1": "1.2-a1" } lnav-0.8.2/test/datafile_simple.12000664 000765 000024 00000000712 12710325033 017174 0ustar00stackstaff000000 000000 kickoff_duration=4.41074371338e-05 key 0:16 ^--------------^ kickoff_duration num 17:34 ^---------------^ 4.41074371338e-05 val 17:34 ^---------------^ 4.41074371338e-05 pair 0:34 ^--------------------------------^ kickoff_duration=4.41074371338e-05 msg :kickoff_duration=4.41074371338e-05 format :kickoff_duration=# { "kickoff_duration": 4.41074371338e-05 } lnav-0.8.2/test/datafile_simple.13000664 000765 000024 00000000712 12710325041 017174 0ustar00stackstaff000000 000000 kickoff_duration=4.41074371338E-05 key 0:16 ^--------------^ kickoff_duration num 17:34 ^---------------^ 4.41074371338E-05 val 17:34 ^---------------^ 4.41074371338E-05 pair 0:34 ^--------------------------------^ kickoff_duration=4.41074371338E-05 msg :kickoff_duration=4.41074371338E-05 format :kickoff_duration=# { "kickoff_duration": 4.41074371338E-05 } lnav-0.8.2/test/datafile_simple.14000664 000765 000024 00000020177 12710576142 017216 0ustar00stackstaff000000 000000 FSChange(Direction.DOWNLOAD, Action.CREATE, name=Fanime 2015, route=[CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names)]) key 0:0 sym 0:8 ^------^ FSChange pair 0:8 ^------^ FSChange key 9:9 ^ key 9:9 ^ sym 9:27 ^----------------^ Direction.DOWNLOAD val 9:27 ^----------------^ Direction.DOWNLOAD pair 9:27 ^----------------^ Direction.DOWNLOAD key 29:29 ^ sym 29:42 ^-----------^ Action.CREATE val 29:42 ^-----------^ Action.CREATE pair 29:42 ^-----------^ Action.CREATE key 44:48 ^--^ name word 49:55 ^----^ Fanime wspc 55:56 ^ num 56:60 ^--^ 2015 val 49:60 ^---------^ Fanime 2015 pair 44:60 ^--------------^ name=Fanime 2015 key 62:67 ^---^ route key 69:79 ^--------^ CloudEntry key 80:86 ^----^ doc_id sym 87:131 ^------------------------------------------^ 1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg val 87:131 ^------------------------------------------^ 1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg pair 80:131 ^-------------------------------------------------^ doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg key 132:140 ^------^ filename word 141:145 ^--^ Baby wspc 145:146 ^ word 146:151 ^---^ Names val 141:151 ^--------^ Baby Names pair 132:151 ^-----------------^ filename=Baby Names grp 80:151 ^---------------------------------------------------------------------^ doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names val 80:151 ^---------------------------------------------------------------------^ doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names pair 69:151 ^--------------------------------------------------------------------------------^ CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names grp 69:151 ^--------------------------------------------------------------------------------^ CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names val 69:151 ^--------------------------------------------------------------------------------^ CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names pair 62:151 ^---------------------------------------------------------------------------------------^ route=[CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names grp 9:151 ^--------------------------------------------------------------------------------------------------------------------------------------------^ Direction.DOWNLOAD, Action.CREATE, name=Fanime 2015, route=[CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names pair 9:151 ^--------------------------------------------------------------------------------------------------------------------------------------------^ Direction.DOWNLOAD, Action.CREATE, name=Fanime 2015, route=[CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names msg :FSChange(Direction.DOWNLOAD, Action.CREATE, name=Fanime 2015, route=[CloudEntry(doc_id=1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg,filename=Baby Names)]) format :#(#)]) { "col_0": "FSChange", "col_1": { "col_0": "Direction.DOWNLOAD", "col_1": "Action.CREATE", "name": "Fanime 2015", "route": [ { "CloudEntry": { "doc_id": "1g5Yho6JmysVGRO-Xmfurra_cQRFb0nTIfZRhGompweg", "filename": "Baby Names" } } ] } } lnav-0.8.2/test/datafile_simple.15000664 000765 000024 00000032775 12710576150 017225 0ustar00stackstaff000000 000000 Worker successfully completed [ImmutableChange(Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False)] key 31:31 ^ key 31:46 ^-------------^ ImmutableChange key 47:47 ^ sym 47:63 ^--------------^ Direction.UPLOAD val 47:63 ^--------------^ Direction.UPLOAD pair 47:63 ^--------------^ Direction.UPLOAD key 65:65 ^ sym 65:78 ^-----------^ Action.CREATE val 65:78 ^-----------^ Action.CREATE pair 65:78 ^-----------^ Action.CREATE key 80:83 ^-^ ino sym 84:91 ^-----^ LocalID key 92:97 ^---^ inode num 98:105 ^-----^ 5567236 val 98:105 ^-----^ 5567236 pair 92:105 ^-----------^ inode=5567236 grp 92:105 ^-----------^ inode=5567236 pair 84:105 ^-------------------^ LocalID(inode=5567236 val 84:105 ^-------------------^ LocalID(inode=5567236 pair 80:105 ^-----------------------^ ino=LocalID(inode=5567236 key 108:112 ^--^ path quot 115:140 ^-----------------------^ /Users/stack/Google Drive val 115:140 ^-----------------------^ /Users/stack/Google Drive pair 108:140 ^------------------------------^ path=u'/Users/stack/Google Drive key 143:147 ^--^ name quot 150:167 ^---------------^ pyjsonpath1.patch val 150:167 ^---------------^ pyjsonpath1.patch pair 143:167 ^----------------------^ name=u'pyjsonpath1.patch key 170:180 ^--------^ parent_ino sym 181:188 ^-----^ LocalID key 189:194 ^---^ inode num 195:203 ^------^ 46166734 val 195:203 ^------^ 46166734 pair 189:203 ^------------^ inode=46166734 grp 189:203 ^------------^ inode=46166734 pair 181:203 ^--------------------^ LocalID(inode=46166734 val 181:203 ^--------------------^ LocalID(inode=46166734 pair 170:203 ^-------------------------------^ parent_ino=LocalID(inode=46166734 key 206:215 ^-------^ is_folder cnst 216:221 ^---^ False val 216:221 ^---^ False pair 206:221 ^-------------^ is_folder=False grp 47:221 ^----------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False val 47:221 ^----------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False pair 31:221 ^--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ ImmutableChange(Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False grp 31:221 ^--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ ImmutableChange(Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False pair 31:221 ^--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^ ImmutableChange(Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False msg :Worker successfully completed [ImmutableChange(Direction.UPLOAD, Action.CREATE, ino=LocalID(inode=5567236), path=u'/Users/stack/Google Drive', name=u'pyjsonpath1.patch', parent_ino=LocalID(inode=46166734), is_folder=False)] format :Worker successfully completed [#)] [ { "ImmutableChange": { "col_0": "Direction.UPLOAD", "col_1": "Action.CREATE", "ino": { "LocalID": [ { "inode": 5567236 } ] }, "path": "/Users/stack/Google Drive", "name": "pyjsonpath1.patch", "parent_ino": { "LocalID": [ { "inode": 46166734 } ] }, "is_folder": false } } ] lnav-0.8.2/test/datafile_simple.16000664 000765 000024 00000000437 12710576155 017221 0ustar00stackstaff000000 000000 test: c'est la vie charlie's key 0:0 key 0:4 ^--^ test pair 0:4 ^--^ test msg :test: c'est la vie charlie's format :#: c'est la vie charlie's { "col_0": "test" } lnav-0.8.2/test/datafile_simple.17000664 000765 000024 00000001226 12710576163 017216 0ustar00stackstaff000000 000000 foo=[]; bar=['a', 'b'] key 0:3 ^-^ foo grp 5:5 ^ val 5:5 ^ pair 0:5 ^---^ foo=[ key 8:11 ^-^ bar quot 14:15 ^ a val 14:15 ^ a quot 19:20 ^ b val 19:20 ^ b grp 14:20 ^----^ a', 'b val 14:20 ^----^ a', 'b pair 8:20 ^----------^ bar=['a', 'b msg :foo=[]; bar=['a', 'b'] format :foo=[#]; bar=[#] { "foo": null, "bar": [ "a", "b" ] } lnav-0.8.2/test/datafile_simple.18000664 000765 000024 00000001122 12710573635 017213 0ustar00stackstaff000000 000000 list [foo(bar=1)] key 6:6 ^ key 6:9 ^-^ foo key 10:13 ^-^ bar num 14:15 ^ 1 val 14:15 ^ 1 pair 10:15 ^---^ bar=1 grp 10:15 ^---^ bar=1 val 10:15 ^---^ bar=1 pair 6:15 ^-------^ foo(bar=1 grp 6:15 ^-------^ foo(bar=1 pair 6:15 ^-------^ foo(bar=1 msg :list [foo(bar=1)] format :list [#)] [ { "foo": [ { "bar": 1 } ] } ] lnav-0.8.2/test/datafile_simple.19000664 000765 000024 00000004104 12710573656 017222 0ustar00stackstaff000000 000000 list [foo(bar=1), foo(bar=2), foo(bar=3)] key 6:6 ^ key 6:9 ^-^ foo key 10:13 ^-^ bar num 14:15 ^ 1 val 14:15 ^ 1 pair 10:15 ^---^ bar=1 grp 10:15 ^---^ bar=1 val 10:15 ^---^ bar=1 pair 6:15 ^-------^ foo(bar=1 key 18:21 ^-^ foo key 22:25 ^-^ bar num 26:27 ^ 2 val 26:27 ^ 2 pair 22:27 ^---^ bar=2 grp 22:27 ^---^ bar=2 val 22:27 ^---^ bar=2 pair 18:27 ^-------^ foo(bar=2 key 30:33 ^-^ foo key 34:37 ^-^ bar num 38:39 ^ 3 val 38:39 ^ 3 pair 34:39 ^---^ bar=3 grp 34:39 ^---^ bar=3 val 34:39 ^---^ bar=3 pair 30:39 ^-------^ foo(bar=3 grp 6:39 ^-------------------------------^ foo(bar=1), foo(bar=2), foo(bar=3 pair 6:39 ^-------------------------------^ foo(bar=1), foo(bar=2), foo(bar=3 msg :list [foo(bar=1), foo(bar=2), foo(bar=3)] format :list [#)] [ { "foo": [ { "bar": 1 } ] }, { "foo": [ { "bar": 2 } ] }, { "foo": [ { "bar": 3 } ] } ] lnav-0.8.2/test/datafile_simple.2000664 000765 000024 00000002263 12710323160 017115 0ustar00stackstaff000000 000000 1,2,3,4,five,six,7 key 0:0 num 0:1 ^ 1 val 0:1 ^ 1 pair 0:1 ^ 1 key 2:2 ^ num 2:3 ^ 2 val 2:3 ^ 2 pair 2:3 ^ 2 key 4:4 ^ num 4:5 ^ 3 val 4:5 ^ 3 pair 4:5 ^ 3 key 6:6 ^ num 6:7 ^ 4 val 6:7 ^ 4 pair 6:7 ^ 4 key 8:8 ^ word 8:12 ^--^ five val 8:12 ^--^ five pair 8:12 ^--^ five key 13:13 ^ word 13:16 ^-^ six val 13:16 ^-^ six pair 13:16 ^-^ six key 17:17 ^ num 17:18 ^ 7 val 17:18 ^ 7 pair 17:18 ^ 7 msg :1,2,3,4,five,six,7 format :#,#,#,#,#,#,# { "col_0": 1, "col_1": 2, "col_2": 3, "col_3": 4, "col_4": "five", "col_5": "six", "col_6": 7 } lnav-0.8.2/test/datafile_simple.20000664 000765 000024 00000001070 12710575340 017201 0ustar00stackstaff000000 000000 list ["abc", "def", "ghi"] key 7:7 ^ quot 7:10 ^-^ abc val 7:10 ^-^ abc quot 14:17 ^-^ def val 14:17 ^-^ def quot 21:24 ^-^ ghi val 21:24 ^-^ ghi grp 7:24 ^---------------^ abc", "def", "ghi pair 7:24 ^---------------^ abc", "def", "ghi msg :list ["abc", "def", "ghi"] format :list [#] [ "abc", "def", "ghi" ] lnav-0.8.2/test/datafile_simple.3000664 000765 000024 00000001273 12710323166 017124 0ustar00stackstaff000000 000000 1 2 3 4 five six 7 key 0:0 num 0:1 ^ 1 pair 0:1 ^ 1 key 2:2 ^ num 2:3 ^ 2 pair 2:3 ^ 2 key 4:4 ^ num 4:5 ^ 3 pair 4:5 ^ 3 key 6:6 ^ num 6:7 ^ 4 pair 6:7 ^ 4 key 17:17 ^ num 17:18 ^ 7 pair 17:18 ^ 7 msg :1 2 3 4 five six 7 format :# # # # five six # { "col_0": 1, "col_1": 2, "col_2": 3, "col_3": 4, "col_4": 7 } lnav-0.8.2/test/datafile_simple.4000664 000765 000024 00000000563 12710324665 017133 0ustar00stackstaff000000 000000 the-value: "Hello, World!" key 0:9 ^-------^ the-value quot 12:25 ^-----------^ Hello, World! val 12:25 ^-----------^ Hello, World! pair 0:25 ^-----------------------^ the-value: "Hello, World! msg :the-value: "Hello, World!" format :the-value: # { "the-value": "Hello, World!" } lnav-0.8.2/test/datafile_simple.5000664 000765 000024 00000001070 12710324671 017123 0ustar00stackstaff000000 000000 this is a url: http://www.example.com/foo-bar key 0:13 ^-----------^ this is a url url 15:45 ^----------------------------^ http://www.example.com/foo-bar val 15:45 ^----------------------------^ http://www.example.com/foo-bar pair 0:45 ^-------------------------------------------^ this is a url: http://www.example.com/foo-bar msg :this is a url: http://www.example.com/foo-bar format :this is a url: # { "this is a url": "http://www.example.com/foo-bar" } lnav-0.8.2/test/datafile_simple.6000664 000765 000024 00000001651 12710324674 017134 0ustar00stackstaff000000 000000 qualified:name: foo=1 bar=2 key 0:0 word 0:9 ^-------^ qualified val 0:9 ^-------^ qualified pair 0:9 ^-------^ qualified key 10:10 ^ word 10:14 ^--^ name val 10:14 ^--^ name pair 10:14 ^--^ name key 16:19 ^-^ foo num 20:21 ^ 1 val 20:21 ^ 1 pair 16:21 ^---^ foo=1 key 22:25 ^-^ bar num 26:27 ^ 2 val 26:27 ^ 2 pair 22:27 ^---^ bar=2 msg :qualified:name: foo=1 bar=2 format :#:#: foo=# bar=# { "col_0": "qualified", "col_1": "name", "foo": 1, "bar": 2 } lnav-0.8.2/test/datafile_simple.7000664 000765 000024 00000001172 12710575746 017143 0ustar00stackstaff000000 000000 func(arg1="a", arg2="b") key 5:5 ^ key 5:9 ^--^ arg1 quot 11:12 ^ a val 11:12 ^ a pair 5:12 ^-----^ arg1="a key 15:19 ^--^ arg2 quot 21:22 ^ b val 21:22 ^ b pair 15:22 ^-----^ arg2="b grp 5:22 ^---------------^ arg1="a", arg2="b pair 5:22 ^---------------^ arg1="a", arg2="b msg :func(arg1="a", arg2="b") format :func(#) { "arg1": "a", "arg2": "b" } lnav-0.8.2/test/datafile_simple.8000664 000765 000024 00000013517 12710575757 017154 0ustar00stackstaff000000 000000 Succeeded authorizing right 'system.privilege.taskport.debug' by client '/usr/libexec/taskgated' [76339] for authorization created by '/usr/libexec/taskgated' [77395] (100003,1) key 29:29 ^ quot 29:60 ^-----------------------------^ system.privilege.taskport.debug pair 29:60 ^-----------------------------^ system.privilege.taskport.debug key 73:73 ^ quot 73:95 ^--------------------^ /usr/libexec/taskgated pair 73:95 ^--------------------^ /usr/libexec/taskgated key 98:98 ^ num 98:103 ^---^ 76339 val 98:103 ^---^ 76339 grp 98:103 ^---^ 76339 pair 98:103 ^---^ 76339 key 135:135 ^ quot 135:157 ^--------------------^ /usr/libexec/taskgated pair 135:157 ^--------------------^ /usr/libexec/taskgated key 160:160 ^ num 160:165 ^---^ 77395 val 160:165 ^---^ 77395 grp 160:165 ^---^ 77395 pair 160:165 ^---^ 77395 key 168:168 ^ num 168:174 ^----^ 100003 val 168:174 ^----^ 100003 num 175:176 ^ 1 val 175:176 ^ 1 grp 168:176 ^------^ 100003,1 pair 168:176 ^------^ 100003,1 msg :Succeeded authorizing right 'system.privilege.taskport.debug' by client '/usr/libexec/taskgated' [76339] for authorization created by '/usr/libexec/taskgated' [77395] (100003,1) format :Succeeded authorizing right # by client # [#] for authorization created by # [#] (#) { "col_0": "system.privilege.taskport.debug", "col_1": "/usr/libexec/taskgated", "col_2": [ 76339 ], "col_3": "/usr/libexec/taskgated", "col_4": [ 77395 ], "col_5": [ 100003, 1 ] } lnav-0.8.2/test/datafile_simple.9000664 000765 000024 00000001201 12710325002 017110 0ustar00stackstaff000000 000000 12:01 12:01:22 12:01:22.123 key 0:0 time 0:5 ^---^ 12:01 pair 0:5 ^---^ 12:01 key 7:7 ^ time 7:15 ^------^ 12:01:22 pair 7:15 ^------^ 12:01:22 key 17:17 ^ time 17:29 ^----------^ 12:01:22.123 pair 17:29 ^----------^ 12:01:22.123 msg :12:01 12:01:22 12:01:22.123 format :# # # { "col_0": "12:01", "col_1": "12:01:22", "col_2": "12:01:22.123" } lnav-0.8.2/test/datafile_xml.0000664 000765 000024 00000002575 12710576250 016442 0ustar00stackstaff000000 000000 key 0:0 xmlo 0:9 ^-------^ pair 0:9 ^-------^ key 12:12 ^ xmlo 12:40 ^--------------------------^ pair 12:40 ^--------------------------^ key 42:42 ^ xmlc 42:49 ^-----^ pair 42:49 ^-----^ key 51:51 ^ xmlt 51:61 ^--------^ pair 51:61 ^--------^ msg : format :# # # # -- { "col_0": "", "col_1": "", "col_2": "", "col_3": "" } lnav-0.8.2/test/drive_data_scanner.cc000664 000765 000024 00000016742 13044377034 020053 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include "pcrepp.hh" #include "textview_curses.hh" #include "data_scanner.hh" #include "data_parser.hh" #include "log_format.hh" #include "log_format_loader.hh" #include "pretty_printer.hh" #include "shared_buffer.hh" #include "elem_to_json.hh" #include "../src/data_parser.hh" #include "../src/view_curses.hh" using namespace std; const char *TMP_NAME = "scanned.tmp"; string execute_any(exec_context &ec, const string &cmdline_with_mode) { return ""; } int main(int argc, char *argv[]) { int c, retval = EXIT_SUCCESS; bool prompt = false, is_log = false, pretty_print = false; { std::vector paths, errors; load_formats(paths, errors); } while ((c = getopt(argc, argv, "pPl")) != -1) { switch (c) { case 'p': prompt = true; break; case 'P': pretty_print = true; break; case 'l': is_log = true; break; default: retval = EXIT_FAILURE; break; } } argc -= optind; argv += optind; if (retval != EXIT_SUCCESS) {} else if (argc < 1) { fprintf(stderr, "error: expecting file name argument(s)\n"); retval = EXIT_FAILURE; } else { for (int lpc = 0; lpc < argc; lpc++) { istream *in; FILE * out; if (strcmp(argv[lpc], "-") == 0) { in = &cin; } else { ifstream *ifs = new ifstream(argv[lpc]); if (!ifs->is_open()) { fprintf(stderr, "error: unable to open file\n"); retval = EXIT_FAILURE; } else { in = ifs; } } if ((out = fopen(TMP_NAME, "w")) == NULL) { fprintf(stderr, "error: unable to temporary file for writing\n"); retval = EXIT_FAILURE; } else { unique_ptr format; char *log_line; bool found = false; char cmd[2048]; string line; int rc; getline(*in, line); if (strcmp(argv[lpc], "-") == 0) { line = " " + line; } log_line = (char *)alloca(line.length()); strcpy(log_line, &line[13]); string sub_line = line.substr(13); struct line_range body(0, sub_line.length()); shared_buffer share_manager; shared_buffer_ref sbr; sbr.share(share_manager, (char *)sub_line.c_str(), sub_line.size()); vector &root_formats = log_format::get_root_formats(); vector::iterator iter; vector index; if (is_log) { for (iter = root_formats.begin(); iter != root_formats.end() && !found; ++iter) { (*iter)->clear(); if ((*iter)->scan(index, 13, sbr) == log_format::SCAN_MATCH) { format = (*iter)->specialized(); found = true; } } } if (format.get() != NULL) { vector ll_values; string_attrs_t sa; format->annotate(sbr, sa, ll_values); body = find_string_attr_range(sa, &textview_curses::SA_BODY); } data_parser::TRACE_FILE = fopen("scanned.dpt", "w"); data_scanner ds(sub_line, body.lr_start, sub_line.length()); data_parser dp(&ds); string msg_format; dp.dp_msg_format = &msg_format; dp.parse(); dp.print(out, dp.dp_pairs); fprintf(out, "msg :%s\n", sub_line.c_str() + body.lr_start); fprintf(out, "format :%s\n", msg_format.c_str()); if (pretty_print) { data_scanner ds2(sub_line, body.lr_start, sub_line.length()); pretty_printer pp(&ds2); string pretty_out = pp.print(); fprintf(out, "\n--\n%s", pretty_out.c_str()); } auto_mem gen(yajl_gen_free); gen = yajl_gen_alloc(NULL); yajl_gen_config(gen.in(), yajl_gen_beautify, true); elements_to_json(gen, dp, &dp.dp_pairs); const unsigned char *buf; size_t len; yajl_gen_get_buf(gen, &buf, &len); fwrite(buf, 1, len, out); fclose(out); sprintf(cmd, "diff -u %s %s", argv[lpc], TMP_NAME); rc = system(cmd); if (rc != 0) { if (prompt) { char resp[4]; printf("\nOriginal line:\n%s\n", sub_line.c_str() + body.lr_start); printf("Would you like to update the original file? (y/N) "); fflush(stdout); log_perror(scanf("%3s", resp)); if (strcasecmp(resp, "y") == 0) { rename(TMP_NAME, argv[lpc]); } else{ retval = EXIT_FAILURE; } } else { fprintf(stderr, "error: mismatch\n"); retval = EXIT_FAILURE; } } fclose(data_parser::TRACE_FILE); data_parser::TRACE_FILE = NULL; } } } return retval; } lnav-0.8.2/test/drive_grep_proc.cc000664 000765 000024 00000007412 12511372231 017373 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include #include "grep_proc.hh" #include "line_buffer.hh" using namespace std; class my_source : public grep_proc_source { public: my_source(auto_fd &fd) : ms_offset(0) { this->ms_buffer.set_fd(fd); }; bool grep_value_for_line(int line_number, string &value_out) { bool retval = false; try { line_value lv; if (this->ms_buffer.read_line(this->ms_offset, lv)) { value_out = string(lv.lv_start, lv.lv_len); retval = true; } } catch (line_buffer::error &e) { fprintf(stderr, "error: source buffer error %d %s\n", this->ms_buffer.get_fd(), strerror(e.e_err)); } return retval; }; private: line_buffer ms_buffer; off_t ms_offset; }; class my_sink : public grep_proc_sink { public: my_sink() : ms_finished(false) { }; void grep_match(grep_proc &gp, grep_line_t line, int start, int end) { printf("%d:%d:%d\n", (int)line, start, end); }; void grep_capture(grep_proc &gp, grep_line_t line, int start, int end, char *capture) { fprintf(stderr, "%d(%d:%d)%s\n", (int)line, start, end, capture); }; void grep_end(grep_proc &gp) { this->ms_finished = true; }; bool ms_finished; }; int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; const char *errptr; auto_fd fd; pcre *code; int eoff; if (argc < 3) { fprintf(stderr, "error: expecting pattern and file arguments\n"); retval = EXIT_FAILURE; } else if ((fd = open(argv[2], O_RDONLY)) == -1) { perror("open"); retval = EXIT_FAILURE; } else if ((code = pcre_compile(argv[1], PCRE_CASELESS, &errptr, &eoff, NULL)) == NULL) { fprintf(stderr, "error: invalid pattern -- %s\n", errptr); } else { my_source ms(fd); my_sink msink; grep_proc gp(code, ms); gp.queue_request(); gp.start(); gp.set_sink(&msink); while (!msink.ms_finished) { vector pollfds; gp.update_poll_set(pollfds); poll(&pollfds[0], pollfds.size(), -1); gp.check_poll_set(pollfds); } } return retval; } lnav-0.8.2/test/drive_json_op.cc000664 000765 000024 00000013254 12507725666 017106 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY TIMOTHY STACK AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file drive_json_op.cc */ #include "config.h" #include #include "json_op.hh" static void printer(void *ctx, const char *numberVal, size_t numberLen) { log_perror(write(STDOUT_FILENO, numberVal, numberLen)); } static int handle_start_map(void *ctx) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_map_open(gen); return 1; } static int handle_map_key(void *ctx, const unsigned char * key, size_t len) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_string(gen, key, len); return 1; } static int handle_end_map(void *ctx) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_map_close(gen); return 1; } static int handle_null(void *ctx) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_null(gen); return 1; } static int handle_boolean(void *ctx, int boolVal) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_bool(gen, boolVal); return 1; } static int handle_number(void *ctx, const char *numberVal, size_t numberLen) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_number(gen, numberVal, numberLen); return 1; } static int handle_string(void *ctx, const unsigned char * stringVal, size_t len) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_string(gen, stringVal, len); return 1; } static int handle_start_array(void *ctx) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_array_open(gen); return 1; } static int handle_end_array(void *ctx) { json_op *jo = (json_op *)ctx; yajl_gen gen = (yajl_gen)jo->jo_ptr_data; yajl_gen_array_close(gen); return 1; } int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; log_argv(argc, argv); if (argc != 3) { fprintf(stderr, "error: expecting operation and json-pointer\n"); retval = EXIT_FAILURE; } else if (strcmp(argv[1], "get") == 0) { unsigned char buffer[1024]; json_ptr jptr(argv[2]); json_op jo(jptr); yajl_handle handle; yajl_status status; yajl_gen gen; ssize_t rc; gen = yajl_gen_alloc(NULL); yajl_gen_config(gen, yajl_gen_print_callback, printer, NULL); yajl_gen_config(gen, yajl_gen_beautify, true); jo.jo_ptr_callbacks.yajl_start_map = handle_start_map; jo.jo_ptr_callbacks.yajl_map_key = handle_map_key; jo.jo_ptr_callbacks.yajl_end_map = handle_end_map; jo.jo_ptr_callbacks.yajl_start_array = handle_start_array; jo.jo_ptr_callbacks.yajl_end_array = handle_end_array; jo.jo_ptr_callbacks.yajl_null = handle_null; jo.jo_ptr_callbacks.yajl_boolean = handle_boolean; jo.jo_ptr_callbacks.yajl_number = handle_number; jo.jo_ptr_callbacks.yajl_string = handle_string; jo.jo_ptr_data = gen; handle = yajl_alloc(&json_op::ptr_callbacks, NULL, &jo); while ((rc = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) { status = yajl_parse(handle, buffer, rc); if (status == yajl_status_error) { fprintf(stderr, "error:cannot parse JSON input -- %s\n", yajl_get_error(handle, 1, buffer, rc)); retval = EXIT_FAILURE; break; } else if (status == yajl_status_client_canceled) { fprintf(stderr, "client cancel\n"); break; } } status = yajl_complete_parse(handle); if (status == yajl_status_error) { fprintf(stderr, "error:cannot parse JSON input -- %s\n", yajl_get_error(handle, 1, buffer, rc)); retval = EXIT_FAILURE; } else if (status == yajl_status_client_canceled) { fprintf(stderr, "client cancel\n"); } yajl_free(handle); } else { fprintf(stderr, "error: unknown operation -- %s\n", argv[1]); retval = EXIT_FAILURE; } return retval; } lnav-0.8.2/test/drive_json_ptr_walk.cc000664 000765 000024 00000005443 12631751114 020275 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY TIMOTHY STACK AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file drive_json_ptr_dump.cc */ #include "config.h" #include #include "json_ptr.hh" int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; char buffer[1024]; yajl_status status; json_ptr_walk jpw; ssize_t rc; log_argv(argc, argv); while ((rc = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) { status = jpw.parse(buffer, rc); if (status == yajl_status_error) { fprintf(stderr, "error:cannot parse JSON input -- %s\n", jpw.jpw_error_msg.c_str()); retval = EXIT_FAILURE; break; } else if (status == yajl_status_client_canceled) { fprintf(stderr, "client cancel\n"); break; } } status = jpw.complete_parse(); if (status == yajl_status_error) { fprintf(stderr, "error:cannot parse JSON input -- %s\n", jpw.jpw_error_msg.c_str()); retval = EXIT_FAILURE; } else if (status == yajl_status_client_canceled) { fprintf(stderr, "client cancel\n"); } for (json_ptr_walk::walk_list_t::iterator iter = jpw.jpw_values.begin(); iter != jpw.jpw_values.end(); ++iter) { printf("%s = %s\n", iter->wt_ptr.c_str(), iter->wt_value.c_str()); } return retval; } lnav-0.8.2/test/drive_line_buffer.cc000664 000765 000024 00000011303 12510241024 017657 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "lnav_util.hh" #include "auto_fd.hh" #include "line_buffer.hh" using namespace std; int main(int argc, char *argv[]) { int c, rnd_iters = 5, retval = EXIT_SUCCESS; vector > index; auto_fd fd = STDIN_FILENO; int offseti = 0; off_t offset = 0; struct stat st; while ((c = getopt(argc, argv, "o:i:n:")) != -1) { switch (c) { case 'o': if (sscanf(optarg, "%d", &offseti) != 1) { fprintf(stderr, "error: offset is not an integer -- %s\n", optarg); retval = EXIT_FAILURE; } else { offset = offseti; } break; case 'n': if (sscanf(optarg, "%d", &rnd_iters) != 1) { fprintf(stderr, "error: offset is not an integer -- %s\n", optarg); retval = EXIT_FAILURE; } break; case 'i': { FILE *file; if ((file = fopen(optarg, "r")) == NULL) { perror("open"); retval = EXIT_FAILURE; } else { int line_number = 1, line_offset; while (fscanf(file, "%d", &line_offset) == 1) { index.push_back( make_pair(line_number, line_offset)); line_number += 1; } fclose(file); file = NULL; } } break; default: retval = EXIT_FAILURE; break; } } argc -= optind; argv += optind; if (retval != EXIT_SUCCESS) { } else if ((argc == 0) && (index.size() > 0)) { fprintf(stderr, "error: cannot randomize stdin\n"); retval = EXIT_FAILURE; } else if ((argc > 0) && (fd = open(argv[0], O_RDONLY)) == -1) { perror("open"); retval = EXIT_FAILURE; } else if ((argc > 0) && (fstat(fd, &st) == -1)) { perror("fstat"); retval = EXIT_FAILURE; } else { try { off_t last_offset = offset; line_buffer lb; line_value lv; char *maddr; lb.set_fd(fd); if (index.size() == 0) { while (lb.read_line(offset, lv)) { lv.terminate(); printf("%s", lv.lv_start); if ((off_t)(last_offset + lv.lv_len) < offset) printf("\n"); last_offset = offset; } } else if ((maddr = (char *)mmap(NULL, st.st_size, PROT_READ, MAP_FILE | MAP_PRIVATE, lb.get_fd(), 0)) == MAP_FAILED) { perror("mmap"); retval = EXIT_FAILURE; } else { off_t seq_offset = 0; while (lb.read_line(seq_offset, lv)) { } do { bool ret; size_t lpc; random_shuffle(index.begin(), index.end()); for (lpc = 0; lpc < index.size(); lpc++) { offset = index[lpc].second; ret = lb.read_line(offset, lv); assert(ret); assert(offset >= 0); assert(offset <= st.st_size); assert(memcmp(lv.lv_start, &maddr[index[lpc].second], lv.lv_len) == 0); } rnd_iters -= 1; } while (rnd_iters); printf("All done\n"); } } catch (line_buffer::error &e) { fprintf(stderr, "error: %s\n", strerror(e.e_err)); retval = EXIT_FAILURE; } } return retval; } lnav-0.8.2/test/drive_listview.cc000664 000765 000024 00000007457 13065471616 017306 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include "listview_curses.hh" using namespace std; static listview_curses lv; class my_source : public list_data_source { public: my_source() : ms_rows(2) { }; size_t listview_rows(const listview_curses &lv) { return this->ms_rows; }; void listview_value_for_rows(const listview_curses &lv, vis_line_t row, vector &rows) { for (auto &value_out : rows) { if (row == 0) { value_out = "Hello"; } else if (row == 1) { value_out = "World!"; } else if (row < this->ms_rows) { char buffer[32]; snprintf(buffer, sizeof(buffer), "%d", (int) row); value_out = string(buffer); } else { assert(0); } ++row; } }; size_t listview_size_for_row(const listview_curses &lv, vis_line_t row) { return 100; }; bool attrline_next_token(const view_curses &vc, int line, struct line_range &lr, int &attrs_out) { return false; }; int ms_rows; }; int main(int argc, char *argv[]) { int c, retval = EXIT_SUCCESS; bool wait_for_input = false, set_height = false; my_source ms; WINDOW *win; win = initscr(); lv.set_data_source(&ms); lv.set_window(win); noecho(); while ((c = getopt(argc, argv, "y:t:l:r:h:w")) != -1) { switch (c) { case 'y': lv.set_y(atoi(optarg)); break; case 'h': lv.set_height(vis_line_t(atoi(optarg))); set_height = true; break; case 't': lv.set_top(vis_line_t(atoi(optarg))); break; case 'l': lv.set_left(atoi(optarg)); break; case 'w': wait_for_input = true; break; case 'r': ms.ms_rows = atoi(optarg); break; } } if (!set_height) { unsigned long height, width; getmaxyx(win, height, width); lv.set_height(vis_line_t(height - lv.get_y())); } lv.do_update(); refresh(); if (wait_for_input) { getch(); } endwin(); return retval; } lnav-0.8.2/test/drive_logfile.cc000664 000765 000024 00000011634 13044377034 017045 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include #include #include "logfile.hh" #include "log_format.hh" #include "log_format_loader.hh" using namespace std; typedef enum { MODE_NONE, MODE_ECHO, MODE_LINE_COUNT, MODE_TIMES, MODE_LEVELS, } dl_mode_t; time_t time(time_t *_unused) { return 1194107018; } string execute_any(exec_context &ec, const string &cmdline_with_mode) { return ""; } int main(int argc, char *argv[]) { int c, retval = EXIT_SUCCESS; dl_mode_t mode = MODE_NONE; string expected_format; { std::vector paths, errors; if (getenv("test_dir") != NULL) { paths.push_back(getenv("test_dir")); } load_formats(paths, errors); } while ((c = getopt(argc, argv, "ef:ltv")) != -1) { switch (c) { case 'f': expected_format = optarg; break; case 'e': mode = MODE_ECHO; break; case 'l': mode = MODE_LINE_COUNT; break; case 't': mode = MODE_TIMES; break; case 'v': mode = MODE_LEVELS; break; } } argc -= optind; argv += optind; if (retval == EXIT_FAILURE) { } else if (argc == 0) { fprintf(stderr, "error: expecting log file name\n"); } else { try { logfile_open_options default_loo; logfile lf(argv[0], default_loo); struct stat st; stat(argv[0], &st); assert(strcmp(argv[0], lf.get_filename().c_str()) == 0); lf.rebuild_index(); assert(!lf.is_closed()); lf.rebuild_index(); assert(!lf.is_closed()); lf.rebuild_index(); assert(!lf.is_closed()); assert(lf.get_activity().la_polls == 3); if (lf.size() > 1) { assert(lf.get_activity().la_reads == 2); } if (expected_format == "") { assert(lf.get_format() == NULL); } else { //printf("%s %s\n", lf.get_format()->get_name().c_str(), expected_format.c_str()); assert(lf.get_format() != NULL); assert(lf.get_format()->get_name().to_string() == expected_format); } if (!lf.is_compressed()) { assert(lf.get_modified_time() == st.st_mtime); } switch (mode) { case MODE_NONE: break; case MODE_ECHO: for (logfile::iterator iter = lf.begin(); iter != lf.end(); ++iter) { printf("%s\n", lf.read_line(iter).c_str()); } break; case MODE_LINE_COUNT: printf("%zd\n", lf.size()); break; case MODE_TIMES: for (logfile::iterator iter = lf.begin(); iter != lf.end(); ++iter) { char buffer[1024]; time_t lt; lt = iter->get_time(); strftime(buffer, sizeof(buffer), "%b %d %H:%M:%S %Y", gmtime(<)); printf("%s -- %03d\n", buffer, iter->get_millis()); } break; case MODE_LEVELS: for (logfile::iterator iter = lf.begin(); iter != lf.end(); ++iter) { printf("0x%02x\n", iter->get_level_and_flags()); } break; } } catch (const logfile::error &e) { fprintf(stderr, "logfile error -- %s (%d)", e.e_filename.c_str(), e.e_err); assert(false); } } return retval; } lnav-0.8.2/test/drive_mvwattrline.cc000664 000765 000024 00000006566 12477462531 020016 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "view_curses.hh" int main(int argc, char *argv[]) { int c, retval = EXIT_SUCCESS; bool wait_for_input = false; while ((c = getopt(argc, argv, "w")) != -1) { switch (c) { case 'w': wait_for_input = true; break; } } { screen_curses sc; WINDOW *win = sc.get_window(); struct line_range lr(0, 40); attr_line_t al; int y = 0; noecho(); view_colors::singleton().init(); al.with_string("Plain text"); view_curses::mvwattrline(win, y++, 0, al, lr); al.clear().with_string("\tLeading tab") .with_attr(string_attr(line_range(0, 1), &view_curses::VC_STYLE, A_REVERSE)); view_curses::mvwattrline(win, y++, 0, al, lr); al.clear().with_string("Tab\twith text") .with_attr(string_attr(line_range(1, 4), &view_curses::VC_STYLE, A_REVERSE)); view_curses::mvwattrline(win, y++, 0, al, lr); al.clear().with_string("Tab\twith text #2") .with_attr(string_attr(line_range(3, 4), &view_curses::VC_STYLE, A_REVERSE)); view_curses::mvwattrline(win, y++, 0, al, lr); al.clear().with_string("Text with mixed attributes.") .with_attr(string_attr(line_range(5, 9), &view_curses::VC_STYLE, view_colors::ansi_color_pair(COLOR_RED, COLOR_BLACK))) .with_attr(string_attr(line_range(7, 12), &view_curses::VC_STYLE, A_REVERSE)); view_curses::mvwattrline(win, y++, 0, al, lr); wmove(win, y, 0); refresh(); if (wait_for_input) { getch(); } } return retval; } lnav-0.8.2/test/drive_readline_curses.cc000664 000765 000024 00000010104 13044377034 020562 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #ifdef HAVE_SYS_TTYDEFAULTS_H #include #endif #include #include "lnav_util.hh" #include "readline_curses.hh" #include "../src/lnav_util.hh" using namespace std; static readline_context::command_map_t COMMANDS; static struct { bool dd_active; readline_curses *dd_rl_view; volatile sig_atomic_t dd_looping; } drive_data; string execute_any(exec_context &ec, const string &cmdline_with_mode) { return ""; } struct exec_context { }; exec_context INIT_EXEC_CONTEXT; static void rl_callback(void *dummy, readline_curses *rc) { string line = rc->get_value(); if (line == "quit") drive_data.dd_looping = false; fprintf(stderr, "callback\n"); drive_data.dd_active = false; } static void rl_timeout(void *dummy, readline_curses *rc) { fprintf(stderr, "timeout\n"); } int main(int argc, char *argv[]) { int c, fd, retval = EXIT_SUCCESS; fd = open("/tmp/lnav.err", O_WRONLY|O_CREAT|O_APPEND, 0666); dup2(fd, STDERR_FILENO); close(fd); fprintf(stderr, "startup\n"); while ((c = getopt(argc, argv, "h")) != -1) { switch (c) { case 'h': break; default: break; } } readline_context context("test", &COMMANDS); readline_curses rlc; rlc.add_context(1, context); rlc.start(); drive_data.dd_rl_view = &rlc; screen_curses sc; keypad(stdscr, TRUE); nonl(); cbreak(); noecho(); nodelay(sc.get_window(), 1); rlc.set_window(sc.get_window()); rlc.set_y(-1); rlc.set_perform_action(readline_curses::action(rl_callback)); rlc.set_timeout_action(readline_curses::action(rl_timeout)); drive_data.dd_looping = true; while (drive_data.dd_looping) { vector pollfds; int rc; pollfds.push_back((struct pollfd) { STDIN_FILENO, POLLIN, 0 }); rlc.update_poll_set(pollfds); rlc.do_update(); refresh(); rc = poll(&pollfds[0], pollfds.size(), -1); if (rc > 0) { if (pollfd_ready(pollfds, STDIN_FILENO)) { int ch; while ((ch = getch()) != ERR) { switch (ch) { case CEOF: case KEY_RESIZE: break; default: if (drive_data.dd_active) { rlc.handle_key(ch); } else if (ch == ':') { rlc.focus(1, ":"); drive_data.dd_active = true; } break; } } } rlc.check_poll_set(pollfds); } } return retval; } lnav-0.8.2/test/drive_sequencer.cc000664 000765 000024 00000007610 12511372231 017405 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "pcrepp.hh" #include "logfile.hh" #include "sequence_sink.hh" #include "sequence_matcher.hh" using namespace std; class my_source : public grep_proc_source { public: my_source(auto_fd &fd) : ms_offset(0) { this->ms_buffer.set_fd(fd); }; bool grep_value_for_line(int line_number, string &value_out) { bool retval = false; try { line_value lv; if (this->ms_buffer.read_line(this->ms_offset, lv)) { value_out = string(lv.lv_start, lv.lv_len); retval = true; } } catch (line_buffer::error &e) { fprintf(stderr, "error: source buffer error %d %s\n", this->ms_buffer.get_fd(), strerror(e.e_err)); } return retval; }; private: line_buffer ms_buffer; off_t ms_offset; }; int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; const char *errptr; auto_fd fd; pcre *code; int eoff; if (argc < 3) { fprintf(stderr, "error: expecting pattern and file arguments\n"); retval = EXIT_FAILURE; } else if ((fd = open(argv[2], O_RDONLY)) == -1) { perror("open"); retval = EXIT_FAILURE; } else if ((code = pcre_compile(argv[1], PCRE_CASELESS, &errptr, &eoff, NULL)) == NULL) { fprintf(stderr, "error: invalid pattern -- %s\n", errptr); } else { my_source ms(fd); sequence_matcher::field_col_t fc; fc.resize(2); sequence_matcher::field_row_t &frf = fc.front(); frf.resize(2); frf[0] = "eth0"; frf[1] = "eth0"; sequence_matcher::field_row_t &frb = fc.back(); frb.resize(2); frb[0] = "up"; frb[1] = "down"; static bookmark_type_t SEQUENCE("sequence"); sequence_matcher sm(fc); vis_bookmarks bm; sequence_sink ss(sm, bm[&SEQUENCE]); grep_proc gp(code, ms); gp.queue_request(); gp.start(); gp.set_sink(&ss); while (bm[&SEQUENCE].size() == 0) { vector pollfds; poll(&pollfds[0], pollfds.size(), -1); gp.check_poll_set(pollfds); } for (bookmark_vector::iterator iter = bm[&SEQUENCE].begin(); iter != bm[&SEQUENCE].end(); ++iter) { printf("%d\n", (const int)*iter); } } return retval; } lnav-0.8.2/test/drive_shlexer.cc000644 000765 000024 00000006032 13071451216 017063 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include "shlex.hh" using namespace std; const char *ST_TOKEN_NAMES[] = { "err", "wsp", "esc", "dst", "den", "sst", "sen", "ref", "qrf", "til", }; int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "error: expecting an argument to parse\n"); exit(EXIT_FAILURE); } shlex lexer(argv[1], strlen(argv[1])); pcre_context::capture_t cap; shlex_token_t token; printf(" %s\n", argv[1]); while (lexer.tokenize(cap, token)) { int lpc; printf("%s ", ST_TOKEN_NAMES[token]); for (lpc = 0; lpc < cap.c_end; lpc++) { if (lpc == cap.c_begin) { fputc('^', stdout); } else if (lpc == (cap.c_end - 1)) { fputc('^', stdout); } else if (lpc > cap.c_begin) { fputc('-', stdout); } else{ fputc(' ', stdout); } } printf("\n"); } lexer.reset(); std::string result; if (lexer.eval(result, map())) { printf("eval -- %s\n", result.c_str()); } lexer.reset(); std::vector sresult; if (lexer.split(sresult, map())) { printf("split:\n"); for (size_t lpc = 0; lpc < sresult.size(); lpc++) { printf(" %d -- %s\n", lpc, sresult[lpc].c_str()); } } return EXIT_SUCCESS; } lnav-0.8.2/test/drive_sql.cc000664 000765 000024 00000003566 13066110326 016221 0ustar00stackstaff000000 000000 #include #include #include #include #include #include "lnav.hh" #include "auto_mem.hh" #include "sqlite-extension-func.hh" #include "regexp_vtab.hh" struct callback_state { int cs_row; }; struct _lnav_data lnav_data; static int sql_callback(void *ptr, int ncols, char **colvalues, char **colnames) { struct callback_state *cs = (struct callback_state *)ptr; printf("Row %d:\n", cs->cs_row); for (int lpc = 0; lpc < ncols; lpc++) { printf(" Column %10s: %s\n", colnames[lpc], colvalues[lpc]); } cs->cs_row += 1; return 0; } std::string execute_any(exec_context &ec, const std::string &cmdline_with_mode) { return ""; } int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; auto_mem db(sqlite3_close); log_argv(argc, argv); if (argc != 2) { fprintf(stderr, "error: expecting an SQL statement\n"); retval = EXIT_FAILURE; } else if (sqlite3_open(":memory:", db.out()) != SQLITE_OK) { fprintf(stderr, "error: unable to make sqlite memory database\n"); retval = EXIT_FAILURE; } else { auto_mem errmsg(sqlite3_free); struct callback_state state; memset(&state, 0, sizeof(state)); { int register_collation_functions(sqlite3 * db); register_sqlite_funcs(db.in(), sqlite_registration_funcs); register_collation_functions(db.in()); } register_regexp_vtab(db.in()); if (sqlite3_exec(db.in(), argv[1], sql_callback, &state, errmsg.out()) != SQLITE_OK) { fprintf(stderr, "error: sqlite3_exec failed -- %s\n", errmsg.in()); retval = EXIT_FAILURE; } } return retval; } lnav-0.8.2/test/drive_sql_anno.cc000664 000765 000024 00000005037 13065470352 017236 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file drive_sql_anno.cc */ #include #include #include "lnav.hh" #include "sql_util.hh" int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; log_argv(argc, argv); if (argc < 2) { fprintf(stderr, "error: expecting an SQL statement\n"); retval = EXIT_FAILURE; } else { attr_line_t al(argv[1]); annotate_sql_statement(al); for (auto &attr : al.get_attrs()) { auto &lr = attr.sa_range; printf(" %d:%d (%s) -- %s\n", lr.lr_start, lr.lr_end, attr.sa_type->sat_name, al.get_substring(lr).c_str()); } if (argc == 3) { int near; sscanf(argv[2], "%d", &near); auto iter = find_string_attr(al.get_attrs(), (size_t) near); if (iter != al.get_attrs().end()) { printf("nearest %s\n", al.get_substring(iter->sa_range).c_str()); } } } return retval; } lnav-0.8.2/test/drive_view_colors.cc000664 000765 000024 00000005500 13044377034 017752 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "view_curses.hh" class test_colors : public view_curses { public: test_colors() : tc_window(NULL) { } void do_update(void) { int lpc; for (lpc = 0; lpc < 16; lpc++) { int attrs; char label[64]; attr_line_t al; line_range lr; snprintf(label, sizeof(label), "This is line: %d", lpc); attrs = view_colors::singleton().attrs_for_ident(label); al = label; al.get_attrs().push_back(string_attr( line_range(0, -1), &view_curses::VC_STYLE, attrs )); lr.lr_start = 0; lr.lr_end = 40; this->mvwattrline(this->tc_window, lpc, 0, al, lr, view_colors::VCR_TEXT); } }; WINDOW *tc_window; }; int main(int argc, char *argv[]) { int c, retval = EXIT_SUCCESS; bool wait_for_input = false; WINDOW *win; test_colors tc; win = initscr(); noecho(); while ((c = getopt(argc, argv, "w")) != -1) { switch (c) { case 'w': wait_for_input = true; break; } } view_colors::singleton().init(); tc.tc_window = win; tc.do_update(); refresh(); if (wait_for_input) { getch(); } endwin(); return retval; } lnav-0.8.2/test/drive_vt52_curses.cc000664 000765 000024 00000006461 12503605157 017611 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include "view_curses.hh" #include "vt52_curses.hh" #if defined HAVE_NCURSESW_CURSES_H # include # include #elif defined HAVE_NCURSESW_H # include # include #elif defined HAVE_NCURSES_CURSES_H # include # include #elif defined HAVE_NCURSES_H # include # include #elif defined HAVE_CURSES_H # include # include #else # error "SysV or X/Open-compatible Curses header file required" #endif #undef set_window int main(int argc, char *argv[]) { int lpc, c, fd, retval = EXIT_SUCCESS; vt52_curses vt; fd = open("/tmp/lnav.err", O_WRONLY|O_CREAT|O_APPEND, 0666); dup2(fd, STDERR_FILENO); close(fd); fprintf(stderr, "startup\n"); while ((c = getopt(argc, argv, "y:")) != -1) { switch (c) { case 'y': vt.set_y(atoi(optarg)); break; } } for (lpc = 0; lpc < 1000; lpc++) { int len; assert(vt.map_input(random(), len) != NULL); assert(len > 0); } tgetent(NULL, "vt52"); { static const char *CANNED_INPUT[] = { "abc", "\r", tgetstr((char *)"ce", NULL), "de", "\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "abc", "\x2", "\a", "ab\bcdef", 0 }; screen_curses sc; noecho(); vt.set_window(sc.get_window()); for (lpc = 0; CANNED_INPUT[lpc]; lpc++) { vt.map_output(CANNED_INPUT[lpc], strlen(CANNED_INPUT[lpc])); vt.do_update(); refresh(); getch(); } getch(); } return retval; } lnav-0.8.2/test/formats/000775 000765 000024 00000000000 13073703476 015377 5ustar00stackstaff000000 000000 lnav-0.8.2/test/listview_output.0000664 000765 000024 00000001532 12477462531 017275 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a48656c6c6f1b5b3734430e780f1b5b6d1b5b323b31480e0f1b5b6d576f726c64211b5b3733430e780f1b5b6d1b5b333b3830480e780f1b5b6d1b5b343b3830480e780f1b5b6d1b5b353b3830480e780f1b5b6d1b5b363b3830480e780f1b5b6d1b5b373b3830480e780f1b5b6d1b5b383b3830480e780f1b5b6d1b5b393b3830480e780f1b5b6d1b5b31303b3830480e780f1b5b6d1b5b31313b3830480e780f1b5b6d1b5b31323b3830480e780f1b5b6d1b5b31333b3830480e780f1b5b6d1b5b31343b3830480e780f1b5b6d1b5b31353b3830480e780f1b5b6d1b5b31363b3830480e780f1b5b6d1b5b31373b3830480e780f1b5b6d1b5b31383b3830480e780f1b5b6d1b5b31393b3830480e780f1b5b6d1b5b32303b3830480e780f1b5b6d1b5b32313b3830480e780f1b5b6d1b5b32323b3830480e780f1b5b6d1b5b32333b3830480e780f1b5b6d1b5b32343b3830480e0f1b5b6d080e780f1b5b6d080e1b5b34680f1b5b6d201b5b346c0d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.1000664 000765 000024 00000001476 12477462531 017305 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a576f726c64211b5b3733430e780f1b5b6d1b5b323b3830480e780f1b5b6d1b5b333b3830480e780f1b5b6d1b5b343b3830480e780f1b5b6d1b5b353b3830480e780f1b5b6d1b5b363b3830480e780f1b5b6d1b5b373b3830480e780f1b5b6d1b5b383b3830480e780f1b5b6d1b5b393b3830480e780f1b5b6d1b5b31303b3830480e780f1b5b6d1b5b31313b3830480e780f1b5b6d1b5b31323b3830480e780f1b5b6d1b5b31333b3830480e780f1b5b6d1b5b31343b3830480e780f1b5b6d1b5b31353b3830480e780f1b5b6d1b5b31363b3830480e780f1b5b6d1b5b31373b3830480e780f1b5b6d1b5b31383b3830480e780f1b5b6d1b5b31393b3830480e780f1b5b6d1b5b32303b3830480e780f1b5b6d1b5b32313b3830480e780f1b5b6d1b5b32323b3830480e780f1b5b6d1b5b32333b3830480e780f1b5b6d1b5b32343b3830480e0f1b5b6d080e780f1b5b6d080e1b5b34680f1b5b6d201b5b346c0d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.2000664 000765 000024 00000001526 12477462531 017302 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a656c6c6f1b5b3735430e780f1b5b6d1b5b323b31480e0f1b5b6d6f726c64211b5b3734430e780f1b5b6d1b5b333b3830480e780f1b5b6d1b5b343b3830480e780f1b5b6d1b5b353b3830480e780f1b5b6d1b5b363b3830480e780f1b5b6d1b5b373b3830480e780f1b5b6d1b5b383b3830480e780f1b5b6d1b5b393b3830480e780f1b5b6d1b5b31303b3830480e780f1b5b6d1b5b31313b3830480e780f1b5b6d1b5b31323b3830480e780f1b5b6d1b5b31333b3830480e780f1b5b6d1b5b31343b3830480e780f1b5b6d1b5b31353b3830480e780f1b5b6d1b5b31363b3830480e780f1b5b6d1b5b31373b3830480e780f1b5b6d1b5b31383b3830480e780f1b5b6d1b5b31393b3830480e780f1b5b6d1b5b32303b3830480e780f1b5b6d1b5b32313b3830480e780f1b5b6d1b5b32323b3830480e780f1b5b6d1b5b32333b3830480e780f1b5b6d1b5b32343b3830480e0f1b5b6d080e780f1b5b6d080e1b5b34680f1b5b6d201b5b346c0d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.3000664 000765 000024 00000001474 12477462531 017305 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a6f726c64211b5b3734430e780f1b5b6d1b5b323b3830480e780f1b5b6d1b5b333b3830480e780f1b5b6d1b5b343b3830480e780f1b5b6d1b5b353b3830480e780f1b5b6d1b5b363b3830480e780f1b5b6d1b5b373b3830480e780f1b5b6d1b5b383b3830480e780f1b5b6d1b5b393b3830480e780f1b5b6d1b5b31303b3830480e780f1b5b6d1b5b31313b3830480e780f1b5b6d1b5b31323b3830480e780f1b5b6d1b5b31333b3830480e780f1b5b6d1b5b31343b3830480e780f1b5b6d1b5b31353b3830480e780f1b5b6d1b5b31363b3830480e780f1b5b6d1b5b31373b3830480e780f1b5b6d1b5b31383b3830480e780f1b5b6d1b5b31393b3830480e780f1b5b6d1b5b32303b3830480e780f1b5b6d1b5b32313b3830480e780f1b5b6d1b5b32323b3830480e780f1b5b6d1b5b32333b3830480e780f1b5b6d1b5b32343b3830480e0f1b5b6d080e780f1b5b6d080e1b5b34680f1b5b6d201b5b346c0d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.4000664 000765 000024 00000002366 12477462531 017307 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a0a48656c6c6f1b5b3734430e780f1b5b6d1b5b333b31480e0f1b5b6d576f726c64211b5b3733430e780f1b5b6d1b5b343b31480e0f1b5b6d321b5b3738430e780f1b5b6d1b5b353b31480e0f1b5b6d331b5b3738430e780f1b5b6d1b5b363b31480e0f1b5b6d341b5b3738430e780f1b5b6d1b5b373b31480e0f1b5b6d351b5b3738430e780f1b5b6d1b5b383b31480e0f1b5b6d361b5b3738430e780f1b5b6d1b5b393b31480e0f1b5b6d371b5b3738430e780f1b5b6d1b5b31303b31480e0f1b5b6d381b5b3738430e780f1b5b6d1b5b31313b31480e0f1b5b6d391b5b3738430e780f1b5b6d1b5b31323b31480e0f1b5b6d31301b5b3737430e780f1b5b6d1b5b31333b31480e0f1b5b6d31311b5b3737430e780f1b5b6d1b5b31343b31480e0f1b5b6d31321b5b3737430e780f1b5b6d1b5b31353b31480e0f1b5b6d31331b5b3737430e780f1b5b6d1b5b31363b31480e0f1b5b6d31341b5b3737430e780f1b5b6d1b5b31373b31480e0f1b5b6d31351b5b3737430e780f1b5b6d1b5b31383b31480e0f1b5b6d31361b5b3737430e780f1b5b6d1b5b31393b31480e0f1b5b6d31371b5b3737430e780f1b5b6d1b5b32303b31480e0f1b5b6d31381b5b3737430e780f1b5b6d1b5b32313b31480e0f1b5b6d31391b5b3737430e780f1b5b6d1b5b32323b31480e0f1b5b6d32301b5b3737430e780f1b5b6d1b5b32333b31480e0f1b5b6d32311b5b3737430e780f1b5b6d1b5b32343b31480e0f1b5b6d32321b5b373743080e780f1b5b6d080e1b5b34680f1b5b6d201b5b346c0d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.5000664 000765 000024 00000002272 12477462531 017304 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a0a48656c6c6f1b5b3734430e780f1b5b6d1b5b333b31480e0f1b5b6d576f726c64211b5b3733430e780f1b5b6d1b5b343b31480e0f1b5b6d321b5b3738430e780f1b5b6d1b5b353b31480e0f1b5b6d331b5b3738430e780f1b5b6d1b5b363b31480e0f1b5b6d341b5b3738430e780f1b5b6d1b5b373b31480e0f1b5b6d351b5b3738430e780f1b5b6d1b5b383b31480e0f1b5b6d361b5b3738430e780f1b5b6d1b5b393b31480e0f1b5b6d371b5b3738430e780f1b5b6d1b5b31303b31480e0f1b5b6d381b5b3738430e780f1b5b6d1b5b31313b31480e0f1b5b6d391b5b3738430e780f1b5b6d1b5b31323b31480e0f1b5b6d31301b5b3737430e780f1b5b6d1b5b31333b31480e0f1b5b6d31311b5b3737430e780f1b5b6d1b5b31343b31480e0f1b5b6d31321b5b3737430e780f1b5b6d1b5b31353b31480e0f1b5b6d31331b5b3737430e780f1b5b6d1b5b31363b31480e0f1b5b6d31341b5b3737430e780f1b5b6d1b5b31373b31480e0f1b5b6d31351b5b3737430e780f1b5b6d1b5b31383b31480e0f1b5b6d31361b5b3737430e780f1b5b6d1b5b31393b31480e0f1b5b6d31371b5b3737430e780f1b5b6d1b5b32303b31480e0f1b5b6d31381b5b3737430e780f1b5b6d1b5b32313b31480e0f1b5b6d31391b5b3737430e780f1b5b6d1b5b32323b31480e0f1b5b6d32301b5b3737430e780f1b5b6d1b5b32333b31480e0f1b5b6d32311b5b3737430e780f1b5b6d1b5b32333b31480e0f1b5b6d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/listview_output.6000664 000765 000024 00000002264 12477462531 017306 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a0a576f726c64211b5b3733430e780f1b5b6d1b5b333b31480e0f1b5b6d321b5b3738430e780f1b5b6d1b5b343b31480e0f1b5b6d331b5b3738430e780f1b5b6d1b5b353b31480e0f1b5b6d341b5b3738430e780f1b5b6d1b5b363b31480e0f1b5b6d351b5b3738430e780f1b5b6d1b5b373b31480e0f1b5b6d361b5b3738430e780f1b5b6d1b5b383b31480e0f1b5b6d371b5b3738430e780f1b5b6d1b5b393b31480e0f1b5b6d381b5b3738430e780f1b5b6d1b5b31303b31480e0f1b5b6d391b5b3738430e780f1b5b6d1b5b31313b31480e0f1b5b6d31301b5b3737430e780f1b5b6d1b5b31323b31480e0f1b5b6d31311b5b3737430e780f1b5b6d1b5b31333b31480e0f1b5b6d31321b5b3737430e780f1b5b6d1b5b31343b31480e0f1b5b6d31331b5b3737430e780f1b5b6d1b5b31353b31480e0f1b5b6d31341b5b3737430e780f1b5b6d1b5b31363b31480e0f1b5b6d31351b5b3737430e780f1b5b6d1b5b31373b31480e0f1b5b6d31361b5b3737430e780f1b5b6d1b5b31383b31480e0f1b5b6d31371b5b3737430e780f1b5b6d1b5b31393b31480e0f1b5b6d31381b5b3737430e780f1b5b6d1b5b32303b31480e0f1b5b6d31391b5b3737430e780f1b5b6d1b5b32313b31480e0f1b5b6d32301b5b3737430e780f1b5b6d1b5b32323b31480e0f1b5b6d32311b5b3737430e780f1b5b6d1b5b32333b31480e0f1b5b6d32321b5b3737430e780f1b5b6d1b5b32333b31480e0f1b5b6d1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/log-samples/000775 000765 000024 00000000000 13073703477 016150 5ustar00stackstaff000000 000000 lnav-0.8.2/test/log.clog000664 000765 000024 00000007241 13044377034 015352 0ustar00stackstaff000000 000000 {"@timestamp":"2016-08-03T12:06:31.009-0500","@version":1,"message":";Exception initializing page context;","logger_name":"org.apache.jasper.runtime.JspFactoryImpl","thread_name":"http-bio-0.0.0.0-8081-exec-198","level":"ERROR","level_value":40000,"stack_trace":"java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver\n\tat org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)\n\tat org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)\n\tat org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)\n\tat org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:731)\n\tat org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)\n\tat org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)\n\tat org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:731)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat collective.config.startup.DamFilter.doFilter(DamFilter.java:270)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)\n\tat org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)\n\tat org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)\n\tat org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)\n\tat org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)\n\tat org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:345)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:210)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)\n\tat org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)\n\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)\n\tat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)\n\tat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)\n\tat org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:744)\nCaused by: java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver\n\tat org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)\n\tat org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)\n\t... 33 common frames omitted\n","customer":"foobaz"} {"@timestamp":"2016-08-03T12:06:31.009-0500","@version":1,"message":";Exception initializing page context;","logger_name":"org.apache.jasper.runtime.JspFactoryImpl","thread_name":"http-bio-0.0.0.0-8081-exec-198","level":"ERROR","level_value":40000,"customer":"foobaz"} lnav-0.8.2/test/logfile_access_log.0000664 000765 000024 00000000537 12477462531 017616 0ustar00stackstaff000000 000000 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 78929 "-" "gPXE/0.9.7" lnav-0.8.2/test/logfile_access_log.1000664 000765 000024 00000000100 12477462531 017601 0ustar00stackstaff000000 000000 10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-" lnav-0.8.2/test/logfile_bad_access_log.0000644 000765 000024 00000000533 12550320467 020407 0ustar00stackstaff000000 000000 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 78929 "-" "gPXE/0.9.7" lnav-0.8.2/test/logfile_bad_syslog.0000644 000765 000024 00000000541 12553170267 017630 0ustar00stackstaff000000 000000 Nov 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed Nov 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt Nov 3 09:23:38 veridian lookup for opt failed Nov 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages lnav-0.8.2/test/logfile_blued.0000664 000765 000024 00000000660 12510241032 016557 0ustar00stackstaff000000 000000 Apr 4 20:02:32 Tim-Stacks-iMac.local blued[59]: Release the WiFi lock Apr 4 20:02:32 Tim-Stacks-iMac.local blued[59]: Acquiring the wifi lock Apr 4 20:02:32 Tim-Stacks-iMac.local blued[59]: Acquired the wifi lock Apr 4 20:02:42 Tim-Stacks-iMac.local blued[59]: Release the WiFi lock Apr 4 20:02:42 Tim-Stacks-iMac.local blued[59]: Acquiring the wifi lock Apr 4 20:02:42 Tim-Stacks-iMac.local blued[59]: Acquired the wifi lock lnav-0.8.2/test/logfile_empty.0000664 000765 000024 00000000000 12477462531 016633 0ustar00stackstaff000000 000000 lnav-0.8.2/test/logfile_epoch.0000664 000765 000024 00000000072 13014746746 016605 0ustar00stackstaff000000 000000 1428634687123 Hello, World! 1428634687456 Goodbye, World! lnav-0.8.2/test/logfile_epoch.1000664 000765 000024 00000000124 13044377034 016575 0ustar00stackstaff000000 000000 2015-04-09 19:58:07.123000 Hello, World! 2015-04-09 19:58:07.456000 Goodbye, World! lnav-0.8.2/test/logfile_filter.0000664 000765 000024 00000002321 12477462531 016772 0ustar00stackstaff000000 000000 Dec 6 13:01:34 ubu-mac avahi-daemon[786]: Joining mDNS multicast group on interface virbr0.IPv4 with address 192.168.122.1. Dec 6 13:01:34 ubu-mac avahi-daemon[786]: New relevant interface virbr0.IPv4 for mDNS. Dec 6 13:01:34 ubu-mac avahi-daemon[786]: Registering new address record for 192.168.122.1 on virbr0.IPv4. Dec 6 13:01:34 ubu-mac dnsmasq[1840]: started, version 2.68 cachesize 150 Dec 6 13:01:34 ubu-mac dnsmasq[1840]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: DHCP, IP range 192.168.122.2 -- 192.168.122.254, lease time 1h Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: DHCP, sockets bound exclusively to interface virbr0 Dec 6 13:01:34 ubu-mac dnsmasq[1840]: reading /etc/resolv.conf Dec 6 13:01:34 ubu-mac dnsmasq[1840]: using nameserver 192.168.1.1#53 Dec 6 13:01:34 ubu-mac dnsmasq[1840]: read /etc/hosts - 5 addresses Dec 6 13:01:34 ubu-mac dnsmasq[1840]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: read /var/lib/libvirt/dnsmasq/default.hostsfile Dec 6 13:05:01 ubu-mac CRON[3883]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) lnav-0.8.2/test/logfile_for_join.0000664 000765 000024 00000002137 12477462531 017317 0ustar00stackstaff000000 000000 Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: New relevant interface eth0.IPv4 for mDNS. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Registering new address record for 10.1.10.103 on eth0. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Withdrawing address record for 10.1.10.103 on eth0. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Leaving mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: iface.c: interface_mdns_mcast_join() called but no local address available. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Interface eth0.IPv4 no longer relevant for mDNS. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: New relevant interface eth0.IPv4 for mDNS. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.1.10.103. Apr 28 06:53:55 tstack-centos5 avahi-daemon[2467]: Registering new address record for 10.1.10.103 on eth0. lnav-0.8.2/test/logfile_generic.0000664 000765 000024 00000000122 12477462531 017116 0ustar00stackstaff000000 000000 2012-07-02 10:22:40,672:DEBUG:foo bar baz 2014-10-08 16:56:38,344:WARN:foo bar bazlnav-0.8.2/test/logfile_generic.1000644 000765 000024 00000000225 12521043222 017077 0ustar00stackstaff000000 000000 2015-04-24T21:09:29.296 25376]INFO:somemodule:Something very INFOrmative. 2015-04-24T21:09:39.296 25376]ERROR:somemodule:Something very INFOrmative. lnav-0.8.2/test/logfile_generic.2000644 000765 000024 00000000366 12526102345 017115 0ustar00stackstaff000000 000000 2015-04-24T21:08:10.313913+00:00 err rbd [22968]lotuscreds:ERROR:Could not retrieve lotus account information from db 2015-04-24T21:08:58.430632+00:00 err rbd [24206]networkutil:ERROR:The configured address sg01-1-vc1.oc.vmware.com was invalid lnav-0.8.2/test/logfile_glog.0000664 000765 000024 00000001040 10713036764 016426 0ustar00stackstaff000000 000000 E0517 15:04:22.619632 1952452992 logging_unittest.cc:253] Log every 3, iteration 19 I0517 15:04:22.619642 952452992 logging_unittest.cc:259] Log if every 1, iteration 19 I0517 15:04:22.619740 52452992 logging_unittest.cc:259] Log if every 1, iteration 20 W0517 15:04:22.619751 2452992 logging_unittest.cc:263] log_if this I0517 15:04:22.619760 452992 logging_unittest.cc:267] array I0517 15:04:22.619768 52992 logging_unittest.cc:269] const array E0517 15:04:22.619776 2992 logging_unittest.cc:271] foo 1000 0000001000 3e8 lnav-0.8.2/test/logfile_json.json000664 000765 000024 00000002127 13044377034 017266 0ustar00stackstaff000000 000000 {"ts": "2013-09-06T20:00:48.124817Z", "lvl": "TRACE", "msg": "trace test"} {"ts": "2013-09-06T20:00:49.124817Z", "lvl": "INFO", "msg": "Starting up service"} {"ts": "2013-09-06T22:00:49.124817Z", "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"} {"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG5", "msg": "Details..."} {"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG4", "msg": "Details..."} {"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG3", "msg": "Details..."} {"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG2", "msg": "Details..."} {"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG", "msg": "Details..."} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": "STATS", "msg": "1 beat per second"} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": "WARNING", "msg": "not looking good"} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": "ERROR", "msg": "looking bad"} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": "CRITICAL", "msg": "sooo bad"} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": "FATAL", "msg": "shoot", "obj": { "field1" : "hi", "field2": 2 }, "arr" : ["hi", {"sub1": true}]} lnav-0.8.2/test/logfile_json2.json000664 000765 000024 00000000515 13044377034 017347 0ustar00stackstaff000000 000000 {"ts": "2013-09-06T20:00:49.124817Z", "lvl": 0, "msg": "Starting up service", "cl": "com.exmaple.foo"} {"ts": "2013-09-06T22:00:49.124817Z", "lvl": 0, "msg": "Shutting down service", "user": "steve@example.com", "cl": "com.exmaple.foo"} {"ts": "2013-09-06T22:01:49.124817Z", "lvl": 10, "msg": "looking bad", "cl": "com.exmaple.foo"} lnav-0.8.2/test/logfile_json3.json000644 000765 000024 00000002327 13071625336 017352 0ustar00stackstaff000000 000000 { "started_at": 1490385986240, "response": { "status": 200, "size": "443", "headers": { "server": "nginx\/1.11.10", "content-type": "application\/json", "connection": "close", "cache-control": "max-age=0, must-revalidate, no-cache, no-store, private" } }, "request": { "method": "GET", "uri": "\/example\/uri\/5", "size": "166", "querystring": {}, "headers": { "host": "example.com" } }, "client_ip": "1.1.1.1" } { "started_at": 1490386367764, "response": { "status": 500, "size": "443", "headers": { "server": "nginx\/1.11.10", "content-type": "application\/json", "connection": "close", "cache-control": "max-age=0, must-revalidate, no-cache, no-store, private" } }, "request": { "method": "GET", "uri": "\/example\/uri\/5", "size": "166", "querystring": {}, "headers": { "host": "example.com" } }, "client_ip": "1.1.1.1" } { "started_at": 1490386531694, "response": { "status": 400, "size": "443", "headers": { "server": "nginx\/1.11.10", "content-type": "application\/json", "connection": "close", "cache-control": "max-age=0, must-revalidate, no-cache, no-store, private" } }, "request": { "method": "GET", "uri": "\/example\/uri\/5", "size": "166", "querystring": {}, "headers": { "host": "example.com" } }, "client_ip": "1.1.1.1" } lnav-0.8.2/test/logfile_leveltest.0000644 000765 000024 00000000474 12735373151 017515 0ustar00stackstaff000000 000000 2016-06-30 12:00:01 trace tracemessage 2016-06-30 12:00:02 debug debugmessage 2016-06-30 12:00:03 debug2 debug2message 2016-06-30 12:00:04 debug3 debug3message 2016-06-30 12:00:05 info infomessage 2016-06-30 12:00:06 warn warnmessage 2016-06-30 12:00:07 fatal fatalmessage 2016-06-30 12:00:08 invalid invalidmessage lnav-0.8.2/test/logfile_multiline.0000664 000765 000024 00000000157 12477462531 017514 0ustar00stackstaff000000 000000 2009-07-20 22:59:27,672:DEBUG:Hello, World! How are you today? 2009-07-20 22:59:30,221:ERROR:Goodbye, World! lnav-0.8.2/test/logfile_nested_json.json000664 000765 000024 00000002304 12517151267 020627 0ustar00stackstaff000000 000000 {"ts": "2013-09-06T20:00:48.124817Z", "@fields": { "lvl": "TRACE", "msg": "trace test"}} {"ts": "2013-09-06T20:00:49.124817Z", "@fields": { "lvl": "INFO", "msg": "Starting up service"}} {"ts": "2013-09-06T22:00:49.124817Z", "@fields": { "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"}} {"ts": "2013-09-06T22:00:59.124817Z", "@fields": { "lvl": "DEBUG5", "msg": "Details..."}} {"ts": "2013-09-06T22:00:59.124817Z", "@fields": { "lvl": "DEBUG4", "msg": "Details..."}} {"ts": "2013-09-06T22:00:59.124817Z", "@fields": { "lvl": "DEBUG3", "msg": "Details..."}} {"ts": "2013-09-06T22:00:59.124817Z", "@fields": { "lvl": "DEBUG2", "msg": "Details..."}} {"ts": "2013-09-06T22:00:59.124817Z", "@fields": { "lvl": "DEBUG", "msg": "Details..."}} {"ts": "2013-09-06T22:01:49.124817Z", "@fields": { "lvl": "STATS", "msg": "1 beat per second"}} {"ts": "2013-09-06T22:01:49.124817Z", "@fields": { "lvl": "WARNING", "msg": "not looking good"}} {"ts": "2013-09-06T22:01:49.124817Z", "@fields": { "lvl": "ERROR", "msg": "looking bad"}} {"ts": "2013-09-06T22:01:49.124817Z", "@fields": { "lvl": "CRITICAL", "msg": "sooo bad"}} {"ts": "2013-09-06T22:01:49.124817Z", "@fields": { "lvl": "FATAL", "msg": "shoot"}} lnav-0.8.2/test/logfile_openam.0000664 000765 000024 00000010244 12477462531 016767 0ustar00stackstaff000000 000000 "2014-06-15 01:04:52" "http://localhost:8086|/|http://openam.vagrant.dev/openam\\n\\n\\n\\nhttp://openam.vagrant.dev/openam\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n4uSmVzjovUdQd3px/RcnoxQBsqE=\\n\\n\\n\\nhm/grge36uA6j1OWif2bTcvVTwESjmuJa27NxepW0AiV5YlcsHDl7RAIk6k/CjsSero3bxGbm56m\\nYncOEi9F1Tu7dS0bfx+vhm/kKTPgwZctf4GWn4qQwP+KeoZywbNj9ShsYJ+zPKzXwN4xBSuPjMxP\\nNf5szzjEWpOndQO/uDs=\\n\\n\\n\\n\\nMIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh\\nbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w\\nZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw\\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK\\nBgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B\\nAQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+\\nRkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY\\nJs0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U\\nQzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA\\ncGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC\\n/FfwWigmrW0Y0Q==\\n\\n\\n\\n\\nuser@example.com\\n\\n\\n\\nhttp://localhost:8086\\n\\n\\nurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" id=openamuser,ou=user,dc=openam 82e87195d704585501 "Not Available" INFO dc=openam "cn=dsameuser,ou=DSAME Users,dc=openam" SAML2-37 SAML2.access user@example.com 192.168.33.1 "2014-06-15 01:04:52" vagrant|/ "cn=dsameuser,ou=DSAME Users,dc=openam" ec5708a7f199678a01 "Not Available" FINE dc=openam "cn=dsameuser,ou=DSAME Users,dc=openam" COT-22 COT.access "Not Available" 127.0.1.1 lnav-0.8.2/test/logfile_plain.0000644 000765 000024 00000000053 12505524344 016577 0ustar00stackstaff000000 000000 Hello, World! How are you? Goodbye, World! lnav-0.8.2/test/logfile_pretty.0000664 000765 000024 00000003262 12512106024 017017 0ustar00stackstaff000000 000000 Apr 7 00:49:42 Tim-Stacks-iMac kernel[0]: Ethernet [AppleBCM5701Ethernet]: Link up on en0, 1-Gigabit, Full-duplex, Symmetric flow-control, Debug [796d,2301,0de1,0300,cde1,3800] Apr 7 05:49:53 Tim-Stacks-iMac.local GoogleSoftwareUpdateDaemon[17212]: -[KSUpdateCheckAction performAction] KSUpdateCheckAction running KSServerUpdateRequest: url="https://tools.google.com/service/update2" runningFetchers=0 tickets=1 activeTickets=1 rollCallTickets=1 body= > Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.2 instead of 10.10.2. Use NSProcessInfo's operatingSystemVersion property to get correct system version number. Call location: Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 0 CarbonCore 0x00007fff8a9b3d9b ___Gestalt_SystemVersion_block_invoke + 113 Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 1 libdispatch.dylib 0x00007fff8bc84c13 _dispatch_client_callout + 8 Apr 7 07:32:56 Tim-Stacks-iMac.local logger[234]: Bad data { abc, 123, 456 )}] lnav-0.8.2/test/logfile_rollover.0000664 000765 000024 00000000530 10713016160 017331 0ustar00stackstaff000000 000000 00:00:00.000 foo DEBUG some super duper message 01:00:00.000 foo DEBUG some super duper message 02:00:00.000 foo DEBUG some super duper message 03:00:00.000 foo DEBUG some super duper message 00:00:00.000 bar DEBUG some super duper message next day (only one hour) 00:01:00.000 bar DEBUG some super duper message next day (only one hour) lnav-0.8.2/test/logfile_strace_log.0000664 000765 000024 00000001463 10713036764 017631 0ustar00stackstaff000000 000000 08:09:33.814936 execve("/bin/ls", ["ls"], [/* 38 vars */]) = 0 <0.000264> 08:09:33.815688 brk(0) = 0x1513000 <0.000016> 08:09:33.815801 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9100b05000 <0.000019> 08:09:33.815943 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) <0.000019> 08:09:33.816083 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9100b03000 <0.000018> 08:09:33.816206 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) <0.000019> 08:09:33.816326 open("/etc/ld.so.cache", O_RDONLY) = 3 <0.000023> 08:09:33.816428 fstat(3, {st_mode=S_IFREG|0644, st_size=102143, ...}) = 0 <0.000015> 08:09:33.816577 mmap(NULL, 102143, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9100aea000 <0.000019> lnav-0.8.2/test/logfile_syslog.0000664 000765 000024 00000000600 10713120144 017001 0ustar00stackstaff000000 000000 Nov 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed Nov 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt Nov 3 09:23:38 veridian automount[7999]: lookup(file): lookup for opt failed Nov 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages lnav-0.8.2/test/logfile_syslog.1000664 000765 000024 00000000600 10713120144 017002 0ustar00stackstaff000000 000000 Dec 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed Dec 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt Dec 3 09:23:38 veridian automount[7999]: lookup(file): lookup for opt failed Jan 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages lnav-0.8.2/test/logfile_syslog.2000664 000765 000024 00000000220 12477462531 017023 0ustar00stackstaff000000 000000 Nov 3 09:23:38 veridian foo[7998]: eth0 is up Nov 3 09:23:38 veridian foo[16442]: eth1 is up Nov 3 09:23:38 veridian foo[7999]: eth0 is down lnav-0.8.2/test/logfile_syslog_with_access_log.0000644 000765 000024 00000000632 12504307544 022234 0ustar00stackstaff000000 000000 Jan 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages Mar 24 14:02:50 bigproduct-web1 tomcat.log: 127.0.0.1 - - "GET /includes/js/combined-javascript.js HTTP/1.1" 200 65508 4.386 Mar 24 14:02:51 bigproduct-web1 automount[7999]: lookup(file): lookup for opt failed Mar 24 14:26:01 --- last message repeated 2 times --- lnav-0.8.2/test/logfile_syslog_with_mixed_times.0000664 000765 000024 00000002734 12575240164 022452 0ustar00stackstaff000000 000000 Sep 13 00:58:45 Tim-Stacks-iMac kernel[0]: AirParrot device perform power state change 0 -> 1 Sep 13 00:59:30 Tim-Stacks-iMac.local airportd[59]: _configureScanOffloadParameters: Unable to configure scan offloading on en1 (Device power is off) Sep 13 01:23:54 Tim-Stacks-iMac kernel[0]: RTC: PowerByCalendarDate setting ignored Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: vm_compressor_record_warmup (9478314 - 9492476) Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer Sep 13 01:25:39 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff8428276000, 0xffffff8428336000 Sep 13 03:12:58 Tim-Stacks-iMac kernel[0]: *** kernel exceeded 500 log message per second limit - remaining messages this second discarded *** Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: IOThunderboltSwitch<0xffffff803f4b3000>(0x0)::listenerCallback - Thunderbolt HPD packet for route = 0x0 port = 11 unplug = 0 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: vm_compressor_flush - starting Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer Sep 13 03:13:16 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff838f1fc000, 0xffffff838f2bc000 lnav-0.8.2/test/logfile_tai64n.0000644 000765 000024 00000001455 12677472127 016623 0ustar00stackstaff000000 000000 @40000000433225833b6e1a8c tcpserver: status: 5/30 @40000000433225833b6e2644 tcpserver: pid 26162 from 194.206.24.40 @40000000433225840c85ba04 tcpserver: ok 26162 a.mx.jms1.net:209.114.200.128:25 :194.206.24.40::1521 @40000000433225840c8f0cbc rblsmtpd: 194.206.24.40 pid 26162: 451 We do not accept mail from IP addresses without reverse DNS. @40000000433225852a9ada4c tcpserver: status: 6/30 @40000000433225852a9ae604 tcpserver: pid 26163 from 193.123.2.227 @40000000433225852aa997bc tcpserver: ok 26163 a.mx.jms1.net:209.114.200.128:25 pixelwww.pixelpower.com:193.123.2.227::4232 @40000000433225852aa9a374 rblsmtpd: 193.123.2.227 pid 26163: 553 Sent mail to honeypot qmmycemglyiuq@delete.net on 2005-01-04 @400000004332258538eae27c tcpserver: end 26163 status 0 @400000004332258538eaea4c tcpserver: status: 5/30 lnav-0.8.2/test/logfile_tcf.0000664 000765 000024 00000005757 12477462531 016301 0ustar00stackstaff000000 000000 TCF 29:47.191: Server-Properties: {"Name":"TCF Protocol Logger","OSName":"Linux 3.2.0-60-generic","UserName":"xavier","AgentID":"1fde3dd1-d4be-4f79-8090-6f8d212f03bf","TransportName":"TCP","Proxy":"","ValueAdd":"1","Port":"1534"} TCF 30:04.735: channel server connecting TCF 30:04.735: channel server connected TCF 30:11.474: 0: ---> C 2 RunControl getChildren null TCF 30:11.475: 0: <--- R 2 ["P1"] TCF 30:11.475: 0: ---> C 3 RunControl getContext "P1" TCF 30:11.475: 0: <--- R 3 {"ID":"P1","ProcessID":"P1","Name":"VxWorks","CanSuspend":true,"CanResume":1,"IsContainer":true,"WordSize":4,"CanTerminate":true,"CanDetach":true,"RCGroup":"P1","SymbolsGroup":"P1","CPUGroup":"P1","DiagnosticTestProcess":true} TCF 30:11.475: 0: ---> C 4 RunControl getChildren "P1" TCF 30:11.475: 0: <--- R 4 ["P2"] TCF 30:11.475: 0: ---> C 5 RunControl getContext "P2" TCF 30:11.476: 0: <--- R 5 {"ID":"P2","ParentID":"P1","ProcessID":"P2","Name":"Kernel","CanSuspend":true,"CanResume":1,"IsContainer":true,"WordSize":4,"CanTerminate":true,"CanDetach":true,"RCGroup":"P2","BPGroup":"P2","SymbolsGroup":"P2","CPUGroup":"P2","DiagnosticTestProcess":true} TCF 30:11.476: 0: ---> C 6 RunControl getChildren "P2" TCF 30:11.476: 0: <--- R 6 [] TCF 30:11.523: 0: ---> C RR4 RunControl getChildren null TCF 30:11.524: 0: <--- R RR4 ["P1"] TCF 30:11.525: 0: ---> C RR6 RunControl getContext "P1" TCF 30:11.526: 0: <--- R RR6 {"ID":"P1","ProcessID":"P1","Name":"VxWorks","CanSuspend":true,"CanResume":1,"IsContainer":true,"WordSize":4,"CanTerminate":true,"CanDetach":true,"RCGroup":"P1","SymbolsGroup":"P1","CPUGroup":"P1","DiagnosticTestProcess":true} TCF 30:11.530: 0: ---> C RR7 RunControl getChildren "P1" TCF 30:11.530: 0: <--- R RR7 ["P2"] TCF 30:11.531: 0: ---> C RR8 RunControl getContext "P2" TCF 30:11.531: 0: <--- R RR8 {"ID":"P2","ParentID":"P1","ProcessID":"P2","Name":"Kernel","CanSuspend":true,"CanResume":1,"IsContainer":true,"WordSize":4,"CanTerminate":true,"CanDetach":true,"RCGroup":"P2","BPGroup":"P2","SymbolsGroup":"P2","CPUGroup":"P2","DiagnosticTestProcess":true} TCF 30:11.533: 0: ---> C RR9 RunControl getChildren "P2" TCF 30:11.533: 0: <--- R RR9 [] TCF 30:11.536: 0: ---> C RR10 Locator getAgentID TCF 30:11.536: 0: <--- R RR10 "00000000-0000-4daa-8665-a704d3dc0000" TCF 30:21.573: 0: ---> C RR11 ProcessesV1 getChildren null false TCF 30:21.573: 0: <--- R RR11 ["P1"] TCF 30:21.577: 0: ---> C RR12 ProcessesV1 getContext "P1" TCF 30:21.577: 0: <--- R RR12 {"Name":"VxWorks","CanTerminate":false,"CanAttach":true,"IsProcess":false,"ID":"P1"} TCF 30:21.756: 0: <--- E RunControl contextAdded [{"ID":"P2.1623333904","ParentID":"P2","ProcessID":"P2","Name":"ipcom_syslogd","CanSuspend":true,"CanResume":12351,"HasState":true,"WordSize":4,"CanTerminate":true,"CanDetach":true,"RCGroup":"P2.1623333904","BPGroup":"P2","SymbolsGroup":"P2","CPUGroup":"P2","DiagnosticTestProcess":true}] lnav-0.8.2/test/logfile_tcf.1000664 000765 000024 00000000514 12320314074 016245 0ustar00stackstaff000000 000000 TCF 59:47.191: Server-Properties: {"Name":"TCF Protocol Logger","OSName":"Linux 3.2.0-60-generic","UserName":"xavier","AgentID":"1fde3dd1-d4be-4f79-8090-6f8d212f03bf","TransportName":"TCP","Proxy":"","ValueAdd":"1","Port":"1534"} TCF 30:11.474: 0: ---> C 2 RunControl getChildren null TCF 01:11.475: 0: <--- R 2 ["P1"] lnav-0.8.2/test/logfile_tcsh_history.0000664 000765 000024 00000000063 12477462531 020230 0ustar00stackstaff000000 000000 #+1162490366 ./drive_vt52_curses #+1162490385 exit lnav-0.8.2/test/logfile_vami.0000664 000765 000024 00000003051 12511365351 016431 0ustar00stackstaff000000 000000 2015-03-12T23:16:52.071:INFO:com.root:Response : en-USipInfo198.51.100.253truetruenic10.0.0.0True22dhcp198.51.100.110nic1fe80::214:f609:19f7:6bf1Truenic1FalseFalseotherpreferred64fe80::250:56ff:feaa:5abfup00:50:56:aa:5a:bfnic1 lnav-0.8.2/test/logfile_vdsm.0000664 000765 000024 00000002246 12477462531 016464 0ustar00stackstaff000000 000000 MainThread::INFO::2011-12-05 07:04:56,101::vdsm::71::vds::(run) I am the actual vdsm 4.9-0 MainThread::ERROR::2011-12-05 07:04:56,300::vdsm::74::vds::(run) Traceback (most recent call last): File "/usr/share/vdsm/vdsm", line 72, in run serve_clients(log) File "/usr/share/vdsm/vdsm", line 40, in serve_clients cif = clientIF.clientIF(log) File "/usr/share/vdsm/clientIF.py", line 111, in init self._libvirt = libvirtconnection.get() File "/usr/share/vdsm/libvirtconnection.py", line 111, in get conn = libvirt.openAuth('qemu:///system', auth, 0) File "/usr/lib64/python2.6/site-packages/libvirt.py", line 102, in openAuth if ret is None:raise libvirtError('virConnectOpenAuth() failed') libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory Thread-15::DEBUG::2011-12-07 11:44:17,737::clientIF::54::vds::(wrapper) [10.35.17.240]::call getVdsCapabilities with () {} Thread-16::DEBUG::2011-06-23 19:03:11,607::clientIF::225::Storage.Dispatcher.Protect::(wrapper) [10.35.16.71] Thread-1950::INFO::2011-12-07 12:14:15,018::dispatcher::94::Storage.Dispatcher.Protect::(run) Run and protect: getDeviceList, args: ( storageType=2) lnav-0.8.2/test/logfile_with_a_really_long_name_to_test_a_bug_with_long_names.0000664 000765 000024 00000000016 12477462531 030501 0ustar00stackstaff000000 000000 Hello, World! lnav-0.8.2/test/Makefile.am000664 000765 000024 00000023173 13071627415 015762 0ustar00stackstaff000000 000000 TESTS_ENVIRONMENT = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT LOG_COMPILER = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT RM_V = $(RM_V_@AM_V@) RM_V_ = $(RM_V_@AM_DEFAULT_V@) RM_V_0 = @echo " RM " $@; AM_CPPFLAGS = \ -Wall \ -I$(top_srcdir)/src \ $(READLINE_CFLAGS) \ $(SQLITE3_CFLAGS) # AM_CFLAGS = -fprofile-arcs -ftest-coverage # AM_CXXFLAGS = -fprofile-arcs -ftest-coverage check_PROGRAMS = \ drive_data_scanner \ drive_line_buffer \ drive_grep_proc \ drive_json_op \ drive_json_ptr_walk \ drive_listview \ drive_logfile \ drive_mvwattrline \ drive_sequencer \ drive_shlexer \ drive_sql \ drive_sql_anno \ drive_view_colors \ drive_vt52_curses \ drive_readline_curses \ slicer \ scripty \ test_abbrev \ test_ansi_scrubber \ test_auto_fd \ test_auto_mem \ test_bookmarks \ test_chunky_index \ test_concise \ test_date_time_scanner \ test_grep_proc2 \ test_help_text_formatter \ test_hist_source \ test_json_ptr \ test_line_buffer2 \ test_log_accel \ test_pcrepp \ test_reltime \ test_top_status \ test_yajlpp AM_LDFLAGS = \ $(STATIC_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ $(READLINE_LDFLAGS) \ -pthread CONFIG_OBJS = \ ../src/default-config-json.o \ ../src/keymap-default.o TEXT2C_OBJS = \ ../src/dhclient-summary.o \ ../src/dump-pid-sh.o \ ../src/lnav-pop-view.o \ ../src/partition-by-boot.o \ ../src/search-for.o LDADD = -lz test_ansi_scrubber_SOURCES = test_ansi_scrubber.cc test_ansi_scrubber_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) test_auto_fd_SOURCES = test_auto_fd.cc test_auto_fd_LDADD = ../src/libdiag.a test_auto_mem_SOURCES = test_auto_mem.cc test_bookmarks_SOURCES = test_bookmarks.cc test_bookmarks_LDADD = ../src/libdiag.a test_chunky_index_SOURCES = test_chunky_index.cc test_chunky_index_LDADD = ../src/libdiag.a test_date_time_scanner_SOURCES = test_date_time_scanner.cc test_date_time_scanner_LDADD = ../src/libdiag.a $(SQLITE3_LIBS) test_grep_proc2_SOURCES = test_grep_proc2.cc test_grep_proc2_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz test_help_text_formatter_SOURCES = test_help_text_formatter.cc test_help_text_formatter_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) $(SQLITE3_LIBS) test_hist_source_SOURCES = test_hist_source.cc test_hist_source_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) test_line_buffer2_SOURCES = test_line_buffer2.cc test_line_buffer2_LDADD = ../src/libdiag.a test_log_accel_SOURCES = test_log_accel.cc test_log_accel_LDADD = ../src/libdiag.a test_pcrepp_SOURCES = test_pcrepp.cc test_pcrepp_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz test_top_status_SOURCES = test_top_status.cc test_top_status_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(CURSES_LIB) \ $(PCRE_LIBS) \ $(SQLITE3_LIBS) \ $(LIBCURL) \ -lz test_yajlpp_SOURCES = test_yajlpp.cc test_yajlpp_LDADD = ../src/libdiag.a test_abbrev_SOURCES = test_abbrev.cc test_abbrev_LDADD = ../src/libdiag.a test_concise_SOURCES = test_concise.cc test_concise_LDADD = ../src/libdiag.a test_json_ptr_SOURCES = test_json_ptr.cc test_json_ptr_LDADD = ../src/libdiag.a test_reltime_SOURCES = test_reltime.cc test_reltime_LDADD = ../src/libdiag.a drive_line_buffer_SOURCES = drive_line_buffer.cc drive_line_buffer_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz drive_grep_proc_SOURCES = drive_grep_proc.cc drive_grep_proc_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_json_op_SOURCES = drive_json_op.cc drive_json_op_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_json_ptr_walk_SOURCES = drive_json_ptr_walk.cc drive_json_ptr_walk_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_listview_SOURCES = drive_listview.cc drive_listview_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) drive_logfile_SOURCES = drive_logfile.cc drive_logfile_LDADD = \ ../src/libdiag.a \ ../src/default-log-formats-json.o \ $(CONFIG_OBJS) \ $(TEXT2C_OBJS) \ $(CURSES_LIB) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ -lpcrecpp drive_sequencer_SOURCES = drive_sequencer.cc drive_sequencer_LDADD = ../src/libdiag.a $(CURSES_LIB) $(SQLITE3_LIBS) drive_shlexer_SOURCES = drive_shlexer.cc drive_shlexer_LDADD = ../src/libdiag.a drive_data_scanner_SOURCES = \ drive_data_scanner.cc drive_data_scanner_LDADD = \ ../src/libdiag.a \ ../src/default-log-formats-json.o \ $(CONFIG_OBJS) \ $(TEXT2C_OBJS) \ $(LIBCURL) \ $(PCRE_LIBS) \ $(SQLITE3_LIBS) \ -lpcrecpp \ $(CURSES_LIB) drive_mvwattrline_SOURCES = drive_mvwattrline.cc drive_mvwattrline_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) drive_view_colors_SOURCES = drive_view_colors.cc drive_view_colors_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) drive_vt52_curses_SOURCES = drive_vt52_curses.cc drive_vt52_curses_LDADD = ../src/libdiag.a $(CURSES_LIB) drive_readline_curses_SOURCES = drive_readline_curses.cc drive_readline_curses_LDADD = ../src/libdiag.a $(READLINE_LIBS) $(CURSES_LIB) \ $(CONFIG_OBJS) drive_sql_SOURCES = \ drive_sql.cc drive_sql_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ $(CURSES_LIB) \ $(READLINE_LIBS) \ $(LIBCURL) \ -lpcrecpp drive_sql_anno_SOURCES = \ drive_sql_anno.cc drive_sql_anno_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ $(CURSES_LIB) \ $(READLINE_LIBS) \ $(LIBCURL) \ -lpcrecpp slicer_SOURCES = slicer.cc slicer_LDADD = ../src/libdiag.a scripty_SOURCES = scripty.cc scripty_LDADD = ../src/libdiag.a dist_noinst_SCRIPTS = \ parser_debugger.py \ test_cli.sh \ test_cmds.sh \ test_curl.sh \ test_data_parser.sh \ test_format_installer.sh \ test_format_loader.sh \ test_grep_proc.sh \ test_json_format.sh \ test_json_op.sh \ test_json_ptr_walk.sh \ test_line_buffer.sh \ test_listview.sh \ test_logfile.sh \ test_mvwattrline.sh \ test_scripts.sh \ test_sessions.sh \ test_shlexer.sh \ test_sql.sh \ test_sql_coll_func.sh \ test_sql_json_func.sh \ test_sql_str_func.sh \ test_sql_time_func.sh \ test_sql_fs_func.sh \ test_view_colors.sh \ test_vt52_curses.sh \ test_pretty_print.sh dist_noinst_DATA = \ ansi-colors.0.in \ bad-config/formats/invalid-regex/format.json \ bad-config/formats/invalid-sample/format.json \ bad-config/formats/invalid-sql/init.sql \ bad-config/formats/no-samples/format.json \ datafile_simple.0 \ datafile_simple.1 \ datafile_simple.2 \ datafile_simple.3 \ datafile_simple.4 \ datafile_simple.5 \ datafile_simple.6 \ datafile_simple.7 \ datafile_simple.8 \ datafile_simple.9 \ datafile_simple.10 \ datafile_simple.11 \ datafile_simple.12 \ datafile_simple.13 \ datafile_simple.14 \ datafile_simple.15 \ datafile_simple.16 \ datafile_simple.17 \ datafile_simple.18 \ datafile_simple.19 \ datafile_simple.20 \ datafile_xml.0 \ listview_output.0 \ listview_output.1 \ listview_output.2 \ listview_output.3 \ listview_output.4 \ listview_output.5 \ listview_output.6 \ log.clog \ logfile_access_log.0 \ logfile_access_log.1 \ logfile_bad_access_log.0 \ logfile_bad_syslog.0 \ logfile_blued.0 \ logfile_empty.0 \ logfile_epoch.0 \ logfile_epoch.1 \ logfile_filter.0 \ logfile_for_join.0 \ logfile_generic.0 \ logfile_generic.1 \ logfile_generic.2 \ logfile_glog.0 \ logfile_json.json \ logfile_json2.json \ logfile_json3.json \ logfile_leveltest.0 \ logfile_multiline.0 \ logfile_nested_json.json \ logfile_openam.0 \ logfile_plain.0 \ logfile_pretty.0 \ logfile_rollover.0 \ logfile_strace_log.0 \ logfile_syslog.0 \ logfile_syslog.1 \ logfile_syslog.2 \ logfile_syslog_with_access_log.0 \ logfile_syslog_with_mixed_times.0 \ logfile_tai64n.0 \ logfile_tcf.0 \ logfile_tcf.1 \ logfile_tcsh_history.0 \ logfile_vami.0 \ logfile_vdsm.0 \ logfile_with_a_really_long_name_to_test_a_bug_with_long_names.0 \ multiline.lnav \ nested.lnav \ mvwattrline_output.0 \ textfile_json_indented.0 \ textfile_json_one_line.0 \ textfile_quoted_json.0 \ toplevel.lnav \ view_colors_output.0 \ vt52_curses_input.0 \ vt52_curses_input.1 \ vt52_curses_output.0 \ vt52_curses_output.1 \ formats/collision/format.json \ formats/customlevel/format.json \ formats/jsontest/format.json \ formats/jsontest/lnav-logstash.json \ formats/jsontest/rewrite-user.lnav \ formats/jsontest2/format.json \ formats/jsontest3/format.json \ formats/nestedjson/format.json \ formats/scripts/multiline-echo.lnav \ formats/sqldir/init.sql \ formats/timestamp/format.json \ log-samples/sample-27353a72ba4025448f261dcfa6ea16e474187795.txt \ log-samples/sample-70c906b3c1a1cf03f15bde92ee78edfa6f9b7960.txt \ log-samples/sample-ad31f12d2adabd07e3ddda3ad5b0dbf6b49c4c99.txt TESTS = \ test_abbrev \ test_ansi_scrubber \ test_auto_fd \ test_auto_mem \ test_bookmarks \ test_chunky_index \ test_date_time_scanner \ test_format_installer.sh \ test_format_loader.sh \ test_cli.sh \ test_cmds.sh \ test_concise \ test_line_buffer2 \ test_line_buffer.sh \ test_listview.sh \ test_mvwattrline.sh \ test_grep_proc.sh \ test_grep_proc2 \ test_hist_source \ test_json_format.sh \ test_json_op.sh \ test_json_ptr_walk.sh \ test_log_accel \ test_logfile.sh \ test_pcrepp \ test_reltime \ test_scripts.sh \ test_sessions.sh \ test_shlexer.sh \ test_sql.sh \ test_sql_coll_func.sh \ test_sql_json_func.sh \ test_sql_fs_func.sh \ test_sql_str_func.sh \ test_sql_time_func.sh \ test_view_colors.sh \ test_vt52_curses.sh \ test_top_status \ test_data_parser.sh \ test_yajlpp \ test_pretty_print.sh if HAVE_LIBCURL TESTS += \ test_curl.sh endif DISTCLEANFILES = \ *.dat \ *.err \ *.db \ *.dpt \ *.diff \ *.index \ *.tmp \ *.gz \ *.bz2 \ truncfile.0 \ logfile_append.0 \ logfile_changed.0 \ test.log \ logfile_stdin.log \ logfile_syslog.0 \ unreadable.log \ empty \ scripts-empty distclean-local: $(RM_V)rm -rf sessions $(RM_V)rm -rf .lnav $(RM_V)rm -rf ../installer-test-home lnav-0.8.2/test/Makefile.in000664 000765 000024 00000217533 13073703424 015775 0ustar00stackstaff000000 000000 # Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = drive_data_scanner$(EXEEXT) \ drive_line_buffer$(EXEEXT) drive_grep_proc$(EXEEXT) \ drive_json_op$(EXEEXT) drive_json_ptr_walk$(EXEEXT) \ drive_listview$(EXEEXT) drive_logfile$(EXEEXT) \ drive_mvwattrline$(EXEEXT) drive_sequencer$(EXEEXT) \ drive_shlexer$(EXEEXT) drive_sql$(EXEEXT) \ drive_sql_anno$(EXEEXT) drive_view_colors$(EXEEXT) \ drive_vt52_curses$(EXEEXT) drive_readline_curses$(EXEEXT) \ slicer$(EXEEXT) scripty$(EXEEXT) test_abbrev$(EXEEXT) \ test_ansi_scrubber$(EXEEXT) test_auto_fd$(EXEEXT) \ test_auto_mem$(EXEEXT) test_bookmarks$(EXEEXT) \ test_chunky_index$(EXEEXT) test_concise$(EXEEXT) \ test_date_time_scanner$(EXEEXT) test_grep_proc2$(EXEEXT) \ test_help_text_formatter$(EXEEXT) test_hist_source$(EXEEXT) \ test_json_ptr$(EXEEXT) test_line_buffer2$(EXEEXT) \ test_log_accel$(EXEEXT) test_pcrepp$(EXEEXT) \ test_reltime$(EXEEXT) test_top_status$(EXEEXT) \ test_yajlpp$(EXEEXT) TESTS = test_abbrev$(EXEEXT) test_ansi_scrubber$(EXEEXT) \ test_auto_fd$(EXEEXT) test_auto_mem$(EXEEXT) \ test_bookmarks$(EXEEXT) test_chunky_index$(EXEEXT) \ test_date_time_scanner$(EXEEXT) test_format_installer.sh \ test_format_loader.sh test_cli.sh test_cmds.sh \ test_concise$(EXEEXT) test_line_buffer2$(EXEEXT) \ test_line_buffer.sh test_listview.sh test_mvwattrline.sh \ test_grep_proc.sh test_grep_proc2$(EXEEXT) \ test_hist_source$(EXEEXT) test_json_format.sh test_json_op.sh \ test_json_ptr_walk.sh test_log_accel$(EXEEXT) test_logfile.sh \ test_pcrepp$(EXEEXT) test_reltime$(EXEEXT) test_scripts.sh \ test_sessions.sh test_shlexer.sh test_sql.sh \ test_sql_coll_func.sh test_sql_json_func.sh \ test_sql_fs_func.sh test_sql_str_func.sh test_sql_time_func.sh \ test_view_colors.sh test_vt52_curses.sh \ test_top_status$(EXEEXT) test_data_parser.sh \ test_yajlpp$(EXEEXT) test_pretty_print.sh $(am__append_1) @HAVE_LIBCURL_TRUE@am__append_1 = \ @HAVE_LIBCURL_TRUE@ test_curl.sh subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx_14.m4 \ $(top_srcdir)/m4/ax_with_curses.m4 $(top_srcdir)/m4/libcurl.m4 \ $(top_srcdir)/m4/lnav_common.m4 \ $(top_srcdir)/m4/lnav_with_jemalloc.m4 \ $(top_srcdir)/m4/lnav_with_pcre.m4 \ $(top_srcdir)/m4/lnav_with_readline.m4 \ $(top_srcdir)/m4/lnav_with_sqlite3.m4 \ $(top_srcdir)/m4/lnav_with_yajl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_noinst_SCRIPTS) \ $(dist_noinst_DATA) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_drive_data_scanner_OBJECTS = drive_data_scanner.$(OBJEXT) drive_data_scanner_OBJECTS = $(am_drive_data_scanner_OBJECTS) am__DEPENDENCIES_1 = drive_data_scanner_DEPENDENCIES = ../src/libdiag.a \ ../src/default-log-formats-json.o $(CONFIG_OBJS) \ $(TEXT2C_OBJS) $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_drive_grep_proc_OBJECTS = drive_grep_proc.$(OBJEXT) drive_grep_proc_OBJECTS = $(am_drive_grep_proc_OBJECTS) drive_grep_proc_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) am_drive_json_op_OBJECTS = drive_json_op.$(OBJEXT) drive_json_op_OBJECTS = $(am_drive_json_op_OBJECTS) drive_json_op_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) am_drive_json_ptr_walk_OBJECTS = drive_json_ptr_walk.$(OBJEXT) drive_json_ptr_walk_OBJECTS = $(am_drive_json_ptr_walk_OBJECTS) drive_json_ptr_walk_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) am_drive_line_buffer_OBJECTS = drive_line_buffer.$(OBJEXT) drive_line_buffer_OBJECTS = $(am_drive_line_buffer_OBJECTS) drive_line_buffer_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) am_drive_listview_OBJECTS = drive_listview.$(OBJEXT) drive_listview_OBJECTS = $(am_drive_listview_OBJECTS) drive_listview_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) \ $(CONFIG_OBJS) am_drive_logfile_OBJECTS = drive_logfile.$(OBJEXT) drive_logfile_OBJECTS = $(am_drive_logfile_OBJECTS) drive_logfile_DEPENDENCIES = ../src/libdiag.a \ ../src/default-log-formats-json.o $(CONFIG_OBJS) \ $(TEXT2C_OBJS) $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_drive_mvwattrline_OBJECTS = drive_mvwattrline.$(OBJEXT) drive_mvwattrline_OBJECTS = $(am_drive_mvwattrline_OBJECTS) drive_mvwattrline_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) $(CONFIG_OBJS) am_drive_readline_curses_OBJECTS = drive_readline_curses.$(OBJEXT) drive_readline_curses_OBJECTS = $(am_drive_readline_curses_OBJECTS) drive_readline_curses_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(CONFIG_OBJS) am_drive_sequencer_OBJECTS = drive_sequencer.$(OBJEXT) drive_sequencer_OBJECTS = $(am_drive_sequencer_OBJECTS) drive_sequencer_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_drive_shlexer_OBJECTS = drive_shlexer.$(OBJEXT) drive_shlexer_OBJECTS = $(am_drive_shlexer_OBJECTS) drive_shlexer_DEPENDENCIES = ../src/libdiag.a am_drive_sql_OBJECTS = drive_sql.$(OBJEXT) drive_sql_OBJECTS = $(am_drive_sql_OBJECTS) drive_sql_DEPENDENCIES = ../src/libdiag.a $(CONFIG_OBJS) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_drive_sql_anno_OBJECTS = drive_sql_anno.$(OBJEXT) drive_sql_anno_OBJECTS = $(am_drive_sql_anno_OBJECTS) drive_sql_anno_DEPENDENCIES = ../src/libdiag.a $(CONFIG_OBJS) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_drive_view_colors_OBJECTS = drive_view_colors.$(OBJEXT) drive_view_colors_OBJECTS = $(am_drive_view_colors_OBJECTS) drive_view_colors_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) $(CONFIG_OBJS) am_drive_vt52_curses_OBJECTS = drive_vt52_curses.$(OBJEXT) drive_vt52_curses_OBJECTS = $(am_drive_vt52_curses_OBJECTS) drive_vt52_curses_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) am_scripty_OBJECTS = scripty.$(OBJEXT) scripty_OBJECTS = $(am_scripty_OBJECTS) scripty_DEPENDENCIES = ../src/libdiag.a am_slicer_OBJECTS = slicer.$(OBJEXT) slicer_OBJECTS = $(am_slicer_OBJECTS) slicer_DEPENDENCIES = ../src/libdiag.a am_test_abbrev_OBJECTS = test_abbrev.$(OBJEXT) test_abbrev_OBJECTS = $(am_test_abbrev_OBJECTS) test_abbrev_DEPENDENCIES = ../src/libdiag.a am_test_ansi_scrubber_OBJECTS = test_ansi_scrubber.$(OBJEXT) test_ansi_scrubber_OBJECTS = $(am_test_ansi_scrubber_OBJECTS) test_ansi_scrubber_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) $(CONFIG_OBJS) am_test_auto_fd_OBJECTS = test_auto_fd.$(OBJEXT) test_auto_fd_OBJECTS = $(am_test_auto_fd_OBJECTS) test_auto_fd_DEPENDENCIES = ../src/libdiag.a am_test_auto_mem_OBJECTS = test_auto_mem.$(OBJEXT) test_auto_mem_OBJECTS = $(am_test_auto_mem_OBJECTS) test_auto_mem_LDADD = $(LDADD) test_auto_mem_DEPENDENCIES = am_test_bookmarks_OBJECTS = test_bookmarks.$(OBJEXT) test_bookmarks_OBJECTS = $(am_test_bookmarks_OBJECTS) test_bookmarks_DEPENDENCIES = ../src/libdiag.a am_test_chunky_index_OBJECTS = test_chunky_index.$(OBJEXT) test_chunky_index_OBJECTS = $(am_test_chunky_index_OBJECTS) test_chunky_index_DEPENDENCIES = ../src/libdiag.a am_test_concise_OBJECTS = test_concise.$(OBJEXT) test_concise_OBJECTS = $(am_test_concise_OBJECTS) test_concise_DEPENDENCIES = ../src/libdiag.a am_test_date_time_scanner_OBJECTS = test_date_time_scanner.$(OBJEXT) test_date_time_scanner_OBJECTS = $(am_test_date_time_scanner_OBJECTS) test_date_time_scanner_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) am_test_grep_proc2_OBJECTS = test_grep_proc2.$(OBJEXT) test_grep_proc2_OBJECTS = $(am_test_grep_proc2_OBJECTS) test_grep_proc2_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) am_test_help_text_formatter_OBJECTS = \ test_help_text_formatter.$(OBJEXT) test_help_text_formatter_OBJECTS = \ $(am_test_help_text_formatter_OBJECTS) test_help_text_formatter_DEPENDENCIES = ../src/libdiag.a \ $(am__DEPENDENCIES_1) $(CONFIG_OBJS) $(am__DEPENDENCIES_1) am_test_hist_source_OBJECTS = test_hist_source.$(OBJEXT) test_hist_source_OBJECTS = $(am_test_hist_source_OBJECTS) test_hist_source_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) \ $(CONFIG_OBJS) am_test_json_ptr_OBJECTS = test_json_ptr.$(OBJEXT) test_json_ptr_OBJECTS = $(am_test_json_ptr_OBJECTS) test_json_ptr_DEPENDENCIES = ../src/libdiag.a am_test_line_buffer2_OBJECTS = test_line_buffer2.$(OBJEXT) test_line_buffer2_OBJECTS = $(am_test_line_buffer2_OBJECTS) test_line_buffer2_DEPENDENCIES = ../src/libdiag.a am_test_log_accel_OBJECTS = test_log_accel.$(OBJEXT) test_log_accel_OBJECTS = $(am_test_log_accel_OBJECTS) test_log_accel_DEPENDENCIES = ../src/libdiag.a am_test_pcrepp_OBJECTS = test_pcrepp.$(OBJEXT) test_pcrepp_OBJECTS = $(am_test_pcrepp_OBJECTS) test_pcrepp_DEPENDENCIES = ../src/libdiag.a $(am__DEPENDENCIES_1) am_test_reltime_OBJECTS = test_reltime.$(OBJEXT) test_reltime_OBJECTS = $(am_test_reltime_OBJECTS) test_reltime_DEPENDENCIES = ../src/libdiag.a am_test_top_status_OBJECTS = test_top_status.$(OBJEXT) test_top_status_OBJECTS = $(am_test_top_status_OBJECTS) test_top_status_DEPENDENCIES = ../src/libdiag.a $(CONFIG_OBJS) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_test_yajlpp_OBJECTS = test_yajlpp.$(OBJEXT) test_yajlpp_OBJECTS = $(am_test_yajlpp_OBJECTS) test_yajlpp_DEPENDENCIES = ../src/libdiag.a SCRIPTS = $(dist_noinst_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(drive_data_scanner_SOURCES) $(drive_grep_proc_SOURCES) \ $(drive_json_op_SOURCES) $(drive_json_ptr_walk_SOURCES) \ $(drive_line_buffer_SOURCES) $(drive_listview_SOURCES) \ $(drive_logfile_SOURCES) $(drive_mvwattrline_SOURCES) \ $(drive_readline_curses_SOURCES) $(drive_sequencer_SOURCES) \ $(drive_shlexer_SOURCES) $(drive_sql_SOURCES) \ $(drive_sql_anno_SOURCES) $(drive_view_colors_SOURCES) \ $(drive_vt52_curses_SOURCES) $(scripty_SOURCES) \ $(slicer_SOURCES) $(test_abbrev_SOURCES) \ $(test_ansi_scrubber_SOURCES) $(test_auto_fd_SOURCES) \ $(test_auto_mem_SOURCES) $(test_bookmarks_SOURCES) \ $(test_chunky_index_SOURCES) $(test_concise_SOURCES) \ $(test_date_time_scanner_SOURCES) $(test_grep_proc2_SOURCES) \ $(test_help_text_formatter_SOURCES) \ $(test_hist_source_SOURCES) $(test_json_ptr_SOURCES) \ $(test_line_buffer2_SOURCES) $(test_log_accel_SOURCES) \ $(test_pcrepp_SOURCES) $(test_reltime_SOURCES) \ $(test_top_status_SOURCES) $(test_yajlpp_SOURCES) DIST_SOURCES = $(drive_data_scanner_SOURCES) \ $(drive_grep_proc_SOURCES) $(drive_json_op_SOURCES) \ $(drive_json_ptr_walk_SOURCES) $(drive_line_buffer_SOURCES) \ $(drive_listview_SOURCES) $(drive_logfile_SOURCES) \ $(drive_mvwattrline_SOURCES) $(drive_readline_curses_SOURCES) \ $(drive_sequencer_SOURCES) $(drive_shlexer_SOURCES) \ $(drive_sql_SOURCES) $(drive_sql_anno_SOURCES) \ $(drive_view_colors_SOURCES) $(drive_vt52_curses_SOURCES) \ $(scripty_SOURCES) $(slicer_SOURCES) $(test_abbrev_SOURCES) \ $(test_ansi_scrubber_SOURCES) $(test_auto_fd_SOURCES) \ $(test_auto_mem_SOURCES) $(test_bookmarks_SOURCES) \ $(test_chunky_index_SOURCES) $(test_concise_SOURCES) \ $(test_date_time_scanner_SOURCES) $(test_grep_proc2_SOURCES) \ $(test_help_text_formatter_SOURCES) \ $(test_hist_source_SOURCES) $(test_json_ptr_SOURCES) \ $(test_line_buffer2_SOURCES) $(test_log_accel_SOURCES) \ $(test_pcrepp_SOURCES) $(test_reltime_SOURCES) \ $(test_top_status_SOURCES) $(test_yajlpp_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(dist_noinst_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BZIP2_CMD = @BZIP2_CMD@ BZIP2_SUPPORT = @BZIP2_SUPPORT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAGS_PG = @CFLAGS_PG@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURSES_LIB = @CURSES_LIB@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ HAVE_CXX14 = @HAVE_CXX14@ HAVE_LOCAL_YAJL = @HAVE_LOCAL_YAJL@ HAVE_SQLITE3_VALUE_SUBTYPE = @HAVE_SQLITE3_VALUE_SUBTYPE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_CFLAGS = @PCRE_CFLAGS@ PCRE_LIBS = @PCRE_LIBS@ RANLIB = @RANLIB@ RE2C_CMD = @RE2C_CMD@ READLINE_CFLAGS = @READLINE_CFLAGS@ READLINE_LDFLAGS = @READLINE_LDFLAGS@ READLINE_LIBS = @READLINE_LIBS@ SET_MAKE = @SET_MAKE@ SFTP_TEST_URL = @SFTP_TEST_URL@ SHELL = @SHELL@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@ SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@ SQLITE3_LIBS = @SQLITE3_LIBS@ STATIC_LDFLAGS = @STATIC_LDFLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ abssrcdir = @abssrcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ jemalloch = @jemalloch@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TESTS_ENVIRONMENT = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT LOG_COMPILER = $(SHELL) $(top_builddir)/TESTS_ENVIRONMENT RM_V = $(RM_V_@AM_V@) RM_V_ = $(RM_V_@AM_DEFAULT_V@) RM_V_0 = @echo " RM " $@; AM_CPPFLAGS = \ -Wall \ -I$(top_srcdir)/src \ $(READLINE_CFLAGS) \ $(SQLITE3_CFLAGS) AM_LDFLAGS = \ $(STATIC_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ $(READLINE_LDFLAGS) \ -pthread CONFIG_OBJS = \ ../src/default-config-json.o \ ../src/keymap-default.o TEXT2C_OBJS = \ ../src/dhclient-summary.o \ ../src/dump-pid-sh.o \ ../src/lnav-pop-view.o \ ../src/partition-by-boot.o \ ../src/search-for.o LDADD = -lz test_ansi_scrubber_SOURCES = test_ansi_scrubber.cc test_ansi_scrubber_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) test_auto_fd_SOURCES = test_auto_fd.cc test_auto_fd_LDADD = ../src/libdiag.a test_auto_mem_SOURCES = test_auto_mem.cc test_bookmarks_SOURCES = test_bookmarks.cc test_bookmarks_LDADD = ../src/libdiag.a test_chunky_index_SOURCES = test_chunky_index.cc test_chunky_index_LDADD = ../src/libdiag.a test_date_time_scanner_SOURCES = test_date_time_scanner.cc test_date_time_scanner_LDADD = ../src/libdiag.a $(SQLITE3_LIBS) test_grep_proc2_SOURCES = test_grep_proc2.cc test_grep_proc2_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz test_help_text_formatter_SOURCES = test_help_text_formatter.cc test_help_text_formatter_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) $(SQLITE3_LIBS) test_hist_source_SOURCES = test_hist_source.cc test_hist_source_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) test_line_buffer2_SOURCES = test_line_buffer2.cc test_line_buffer2_LDADD = ../src/libdiag.a test_log_accel_SOURCES = test_log_accel.cc test_log_accel_LDADD = ../src/libdiag.a test_pcrepp_SOURCES = test_pcrepp.cc test_pcrepp_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz test_top_status_SOURCES = test_top_status.cc test_top_status_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(CURSES_LIB) \ $(PCRE_LIBS) \ $(SQLITE3_LIBS) \ $(LIBCURL) \ -lz test_yajlpp_SOURCES = test_yajlpp.cc test_yajlpp_LDADD = ../src/libdiag.a test_abbrev_SOURCES = test_abbrev.cc test_abbrev_LDADD = ../src/libdiag.a test_concise_SOURCES = test_concise.cc test_concise_LDADD = ../src/libdiag.a test_json_ptr_SOURCES = test_json_ptr.cc test_json_ptr_LDADD = ../src/libdiag.a test_reltime_SOURCES = test_reltime.cc test_reltime_LDADD = ../src/libdiag.a drive_line_buffer_SOURCES = drive_line_buffer.cc drive_line_buffer_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz drive_grep_proc_SOURCES = drive_grep_proc.cc drive_grep_proc_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_json_op_SOURCES = drive_json_op.cc drive_json_op_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_json_ptr_walk_SOURCES = drive_json_ptr_walk.cc drive_json_ptr_walk_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_listview_SOURCES = drive_listview.cc drive_listview_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ $(CONFIG_OBJS) drive_logfile_SOURCES = drive_logfile.cc drive_logfile_LDADD = \ ../src/libdiag.a \ ../src/default-log-formats-json.o \ $(CONFIG_OBJS) \ $(TEXT2C_OBJS) \ $(CURSES_LIB) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ -lpcrecpp drive_sequencer_SOURCES = drive_sequencer.cc drive_sequencer_LDADD = ../src/libdiag.a $(CURSES_LIB) $(SQLITE3_LIBS) drive_shlexer_SOURCES = drive_shlexer.cc drive_shlexer_LDADD = ../src/libdiag.a drive_data_scanner_SOURCES = \ drive_data_scanner.cc drive_data_scanner_LDADD = \ ../src/libdiag.a \ ../src/default-log-formats-json.o \ $(CONFIG_OBJS) \ $(TEXT2C_OBJS) \ $(LIBCURL) \ $(PCRE_LIBS) \ $(SQLITE3_LIBS) \ -lpcrecpp \ $(CURSES_LIB) drive_mvwattrline_SOURCES = drive_mvwattrline.cc drive_mvwattrline_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) drive_view_colors_SOURCES = drive_view_colors.cc drive_view_colors_LDADD = ../src/libdiag.a $(CURSES_LIB) \ $(CONFIG_OBJS) drive_vt52_curses_SOURCES = drive_vt52_curses.cc drive_vt52_curses_LDADD = ../src/libdiag.a $(CURSES_LIB) drive_readline_curses_SOURCES = drive_readline_curses.cc drive_readline_curses_LDADD = ../src/libdiag.a $(READLINE_LIBS) $(CURSES_LIB) \ $(CONFIG_OBJS) drive_sql_SOURCES = \ drive_sql.cc drive_sql_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ $(CURSES_LIB) \ $(READLINE_LIBS) \ $(LIBCURL) \ -lpcrecpp drive_sql_anno_SOURCES = \ drive_sql_anno.cc drive_sql_anno_LDADD = \ ../src/libdiag.a \ $(CONFIG_OBJS) \ $(SQLITE3_LIBS) \ $(PCRE_LIBS) \ $(CURSES_LIB) \ $(READLINE_LIBS) \ $(LIBCURL) \ -lpcrecpp slicer_SOURCES = slicer.cc slicer_LDADD = ../src/libdiag.a scripty_SOURCES = scripty.cc scripty_LDADD = ../src/libdiag.a dist_noinst_SCRIPTS = \ parser_debugger.py \ test_cli.sh \ test_cmds.sh \ test_curl.sh \ test_data_parser.sh \ test_format_installer.sh \ test_format_loader.sh \ test_grep_proc.sh \ test_json_format.sh \ test_json_op.sh \ test_json_ptr_walk.sh \ test_line_buffer.sh \ test_listview.sh \ test_logfile.sh \ test_mvwattrline.sh \ test_scripts.sh \ test_sessions.sh \ test_shlexer.sh \ test_sql.sh \ test_sql_coll_func.sh \ test_sql_json_func.sh \ test_sql_str_func.sh \ test_sql_time_func.sh \ test_sql_fs_func.sh \ test_view_colors.sh \ test_vt52_curses.sh \ test_pretty_print.sh dist_noinst_DATA = \ ansi-colors.0.in \ bad-config/formats/invalid-regex/format.json \ bad-config/formats/invalid-sample/format.json \ bad-config/formats/invalid-sql/init.sql \ bad-config/formats/no-samples/format.json \ datafile_simple.0 \ datafile_simple.1 \ datafile_simple.2 \ datafile_simple.3 \ datafile_simple.4 \ datafile_simple.5 \ datafile_simple.6 \ datafile_simple.7 \ datafile_simple.8 \ datafile_simple.9 \ datafile_simple.10 \ datafile_simple.11 \ datafile_simple.12 \ datafile_simple.13 \ datafile_simple.14 \ datafile_simple.15 \ datafile_simple.16 \ datafile_simple.17 \ datafile_simple.18 \ datafile_simple.19 \ datafile_simple.20 \ datafile_xml.0 \ listview_output.0 \ listview_output.1 \ listview_output.2 \ listview_output.3 \ listview_output.4 \ listview_output.5 \ listview_output.6 \ log.clog \ logfile_access_log.0 \ logfile_access_log.1 \ logfile_bad_access_log.0 \ logfile_bad_syslog.0 \ logfile_blued.0 \ logfile_empty.0 \ logfile_epoch.0 \ logfile_epoch.1 \ logfile_filter.0 \ logfile_for_join.0 \ logfile_generic.0 \ logfile_generic.1 \ logfile_generic.2 \ logfile_glog.0 \ logfile_json.json \ logfile_json2.json \ logfile_json3.json \ logfile_leveltest.0 \ logfile_multiline.0 \ logfile_nested_json.json \ logfile_openam.0 \ logfile_plain.0 \ logfile_pretty.0 \ logfile_rollover.0 \ logfile_strace_log.0 \ logfile_syslog.0 \ logfile_syslog.1 \ logfile_syslog.2 \ logfile_syslog_with_access_log.0 \ logfile_syslog_with_mixed_times.0 \ logfile_tai64n.0 \ logfile_tcf.0 \ logfile_tcf.1 \ logfile_tcsh_history.0 \ logfile_vami.0 \ logfile_vdsm.0 \ logfile_with_a_really_long_name_to_test_a_bug_with_long_names.0 \ multiline.lnav \ nested.lnav \ mvwattrline_output.0 \ textfile_json_indented.0 \ textfile_json_one_line.0 \ textfile_quoted_json.0 \ toplevel.lnav \ view_colors_output.0 \ vt52_curses_input.0 \ vt52_curses_input.1 \ vt52_curses_output.0 \ vt52_curses_output.1 \ formats/collision/format.json \ formats/customlevel/format.json \ formats/jsontest/format.json \ formats/jsontest/lnav-logstash.json \ formats/jsontest/rewrite-user.lnav \ formats/jsontest2/format.json \ formats/jsontest3/format.json \ formats/nestedjson/format.json \ formats/scripts/multiline-echo.lnav \ formats/sqldir/init.sql \ formats/timestamp/format.json \ log-samples/sample-27353a72ba4025448f261dcfa6ea16e474187795.txt \ log-samples/sample-70c906b3c1a1cf03f15bde92ee78edfa6f9b7960.txt \ log-samples/sample-ad31f12d2adabd07e3ddda3ad5b0dbf6b49c4c99.txt DISTCLEANFILES = \ *.dat \ *.err \ *.db \ *.dpt \ *.diff \ *.index \ *.tmp \ *.gz \ *.bz2 \ truncfile.0 \ logfile_append.0 \ logfile_changed.0 \ test.log \ logfile_stdin.log \ logfile_syslog.0 \ unreadable.log \ empty \ scripts-empty all: all-am .SUFFIXES: .SUFFIXES: .cc .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) drive_data_scanner$(EXEEXT): $(drive_data_scanner_OBJECTS) $(drive_data_scanner_DEPENDENCIES) $(EXTRA_drive_data_scanner_DEPENDENCIES) @rm -f drive_data_scanner$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_data_scanner_OBJECTS) $(drive_data_scanner_LDADD) $(LIBS) drive_grep_proc$(EXEEXT): $(drive_grep_proc_OBJECTS) $(drive_grep_proc_DEPENDENCIES) $(EXTRA_drive_grep_proc_DEPENDENCIES) @rm -f drive_grep_proc$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_grep_proc_OBJECTS) $(drive_grep_proc_LDADD) $(LIBS) drive_json_op$(EXEEXT): $(drive_json_op_OBJECTS) $(drive_json_op_DEPENDENCIES) $(EXTRA_drive_json_op_DEPENDENCIES) @rm -f drive_json_op$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_json_op_OBJECTS) $(drive_json_op_LDADD) $(LIBS) drive_json_ptr_walk$(EXEEXT): $(drive_json_ptr_walk_OBJECTS) $(drive_json_ptr_walk_DEPENDENCIES) $(EXTRA_drive_json_ptr_walk_DEPENDENCIES) @rm -f drive_json_ptr_walk$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_json_ptr_walk_OBJECTS) $(drive_json_ptr_walk_LDADD) $(LIBS) drive_line_buffer$(EXEEXT): $(drive_line_buffer_OBJECTS) $(drive_line_buffer_DEPENDENCIES) $(EXTRA_drive_line_buffer_DEPENDENCIES) @rm -f drive_line_buffer$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_line_buffer_OBJECTS) $(drive_line_buffer_LDADD) $(LIBS) drive_listview$(EXEEXT): $(drive_listview_OBJECTS) $(drive_listview_DEPENDENCIES) $(EXTRA_drive_listview_DEPENDENCIES) @rm -f drive_listview$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_listview_OBJECTS) $(drive_listview_LDADD) $(LIBS) drive_logfile$(EXEEXT): $(drive_logfile_OBJECTS) $(drive_logfile_DEPENDENCIES) $(EXTRA_drive_logfile_DEPENDENCIES) @rm -f drive_logfile$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_logfile_OBJECTS) $(drive_logfile_LDADD) $(LIBS) drive_mvwattrline$(EXEEXT): $(drive_mvwattrline_OBJECTS) $(drive_mvwattrline_DEPENDENCIES) $(EXTRA_drive_mvwattrline_DEPENDENCIES) @rm -f drive_mvwattrline$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_mvwattrline_OBJECTS) $(drive_mvwattrline_LDADD) $(LIBS) drive_readline_curses$(EXEEXT): $(drive_readline_curses_OBJECTS) $(drive_readline_curses_DEPENDENCIES) $(EXTRA_drive_readline_curses_DEPENDENCIES) @rm -f drive_readline_curses$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_readline_curses_OBJECTS) $(drive_readline_curses_LDADD) $(LIBS) drive_sequencer$(EXEEXT): $(drive_sequencer_OBJECTS) $(drive_sequencer_DEPENDENCIES) $(EXTRA_drive_sequencer_DEPENDENCIES) @rm -f drive_sequencer$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_sequencer_OBJECTS) $(drive_sequencer_LDADD) $(LIBS) drive_shlexer$(EXEEXT): $(drive_shlexer_OBJECTS) $(drive_shlexer_DEPENDENCIES) $(EXTRA_drive_shlexer_DEPENDENCIES) @rm -f drive_shlexer$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_shlexer_OBJECTS) $(drive_shlexer_LDADD) $(LIBS) drive_sql$(EXEEXT): $(drive_sql_OBJECTS) $(drive_sql_DEPENDENCIES) $(EXTRA_drive_sql_DEPENDENCIES) @rm -f drive_sql$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_sql_OBJECTS) $(drive_sql_LDADD) $(LIBS) drive_sql_anno$(EXEEXT): $(drive_sql_anno_OBJECTS) $(drive_sql_anno_DEPENDENCIES) $(EXTRA_drive_sql_anno_DEPENDENCIES) @rm -f drive_sql_anno$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_sql_anno_OBJECTS) $(drive_sql_anno_LDADD) $(LIBS) drive_view_colors$(EXEEXT): $(drive_view_colors_OBJECTS) $(drive_view_colors_DEPENDENCIES) $(EXTRA_drive_view_colors_DEPENDENCIES) @rm -f drive_view_colors$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_view_colors_OBJECTS) $(drive_view_colors_LDADD) $(LIBS) drive_vt52_curses$(EXEEXT): $(drive_vt52_curses_OBJECTS) $(drive_vt52_curses_DEPENDENCIES) $(EXTRA_drive_vt52_curses_DEPENDENCIES) @rm -f drive_vt52_curses$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(drive_vt52_curses_OBJECTS) $(drive_vt52_curses_LDADD) $(LIBS) scripty$(EXEEXT): $(scripty_OBJECTS) $(scripty_DEPENDENCIES) $(EXTRA_scripty_DEPENDENCIES) @rm -f scripty$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(scripty_OBJECTS) $(scripty_LDADD) $(LIBS) slicer$(EXEEXT): $(slicer_OBJECTS) $(slicer_DEPENDENCIES) $(EXTRA_slicer_DEPENDENCIES) @rm -f slicer$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(slicer_OBJECTS) $(slicer_LDADD) $(LIBS) test_abbrev$(EXEEXT): $(test_abbrev_OBJECTS) $(test_abbrev_DEPENDENCIES) $(EXTRA_test_abbrev_DEPENDENCIES) @rm -f test_abbrev$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_abbrev_OBJECTS) $(test_abbrev_LDADD) $(LIBS) test_ansi_scrubber$(EXEEXT): $(test_ansi_scrubber_OBJECTS) $(test_ansi_scrubber_DEPENDENCIES) $(EXTRA_test_ansi_scrubber_DEPENDENCIES) @rm -f test_ansi_scrubber$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_ansi_scrubber_OBJECTS) $(test_ansi_scrubber_LDADD) $(LIBS) test_auto_fd$(EXEEXT): $(test_auto_fd_OBJECTS) $(test_auto_fd_DEPENDENCIES) $(EXTRA_test_auto_fd_DEPENDENCIES) @rm -f test_auto_fd$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_auto_fd_OBJECTS) $(test_auto_fd_LDADD) $(LIBS) test_auto_mem$(EXEEXT): $(test_auto_mem_OBJECTS) $(test_auto_mem_DEPENDENCIES) $(EXTRA_test_auto_mem_DEPENDENCIES) @rm -f test_auto_mem$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_auto_mem_OBJECTS) $(test_auto_mem_LDADD) $(LIBS) test_bookmarks$(EXEEXT): $(test_bookmarks_OBJECTS) $(test_bookmarks_DEPENDENCIES) $(EXTRA_test_bookmarks_DEPENDENCIES) @rm -f test_bookmarks$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_bookmarks_OBJECTS) $(test_bookmarks_LDADD) $(LIBS) test_chunky_index$(EXEEXT): $(test_chunky_index_OBJECTS) $(test_chunky_index_DEPENDENCIES) $(EXTRA_test_chunky_index_DEPENDENCIES) @rm -f test_chunky_index$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_chunky_index_OBJECTS) $(test_chunky_index_LDADD) $(LIBS) test_concise$(EXEEXT): $(test_concise_OBJECTS) $(test_concise_DEPENDENCIES) $(EXTRA_test_concise_DEPENDENCIES) @rm -f test_concise$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_concise_OBJECTS) $(test_concise_LDADD) $(LIBS) test_date_time_scanner$(EXEEXT): $(test_date_time_scanner_OBJECTS) $(test_date_time_scanner_DEPENDENCIES) $(EXTRA_test_date_time_scanner_DEPENDENCIES) @rm -f test_date_time_scanner$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_date_time_scanner_OBJECTS) $(test_date_time_scanner_LDADD) $(LIBS) test_grep_proc2$(EXEEXT): $(test_grep_proc2_OBJECTS) $(test_grep_proc2_DEPENDENCIES) $(EXTRA_test_grep_proc2_DEPENDENCIES) @rm -f test_grep_proc2$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_grep_proc2_OBJECTS) $(test_grep_proc2_LDADD) $(LIBS) test_help_text_formatter$(EXEEXT): $(test_help_text_formatter_OBJECTS) $(test_help_text_formatter_DEPENDENCIES) $(EXTRA_test_help_text_formatter_DEPENDENCIES) @rm -f test_help_text_formatter$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_help_text_formatter_OBJECTS) $(test_help_text_formatter_LDADD) $(LIBS) test_hist_source$(EXEEXT): $(test_hist_source_OBJECTS) $(test_hist_source_DEPENDENCIES) $(EXTRA_test_hist_source_DEPENDENCIES) @rm -f test_hist_source$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_hist_source_OBJECTS) $(test_hist_source_LDADD) $(LIBS) test_json_ptr$(EXEEXT): $(test_json_ptr_OBJECTS) $(test_json_ptr_DEPENDENCIES) $(EXTRA_test_json_ptr_DEPENDENCIES) @rm -f test_json_ptr$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_json_ptr_OBJECTS) $(test_json_ptr_LDADD) $(LIBS) test_line_buffer2$(EXEEXT): $(test_line_buffer2_OBJECTS) $(test_line_buffer2_DEPENDENCIES) $(EXTRA_test_line_buffer2_DEPENDENCIES) @rm -f test_line_buffer2$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_line_buffer2_OBJECTS) $(test_line_buffer2_LDADD) $(LIBS) test_log_accel$(EXEEXT): $(test_log_accel_OBJECTS) $(test_log_accel_DEPENDENCIES) $(EXTRA_test_log_accel_DEPENDENCIES) @rm -f test_log_accel$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_log_accel_OBJECTS) $(test_log_accel_LDADD) $(LIBS) test_pcrepp$(EXEEXT): $(test_pcrepp_OBJECTS) $(test_pcrepp_DEPENDENCIES) $(EXTRA_test_pcrepp_DEPENDENCIES) @rm -f test_pcrepp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_pcrepp_OBJECTS) $(test_pcrepp_LDADD) $(LIBS) test_reltime$(EXEEXT): $(test_reltime_OBJECTS) $(test_reltime_DEPENDENCIES) $(EXTRA_test_reltime_DEPENDENCIES) @rm -f test_reltime$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_reltime_OBJECTS) $(test_reltime_LDADD) $(LIBS) test_top_status$(EXEEXT): $(test_top_status_OBJECTS) $(test_top_status_DEPENDENCIES) $(EXTRA_test_top_status_DEPENDENCIES) @rm -f test_top_status$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_top_status_OBJECTS) $(test_top_status_LDADD) $(LIBS) test_yajlpp$(EXEEXT): $(test_yajlpp_OBJECTS) $(test_yajlpp_DEPENDENCIES) $(EXTRA_test_yajlpp_DEPENDENCIES) @rm -f test_yajlpp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_yajlpp_OBJECTS) $(test_yajlpp_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_data_scanner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_grep_proc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_json_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_json_ptr_walk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_line_buffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_listview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_logfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_mvwattrline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_readline_curses.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_sequencer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_shlexer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_sql.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_sql_anno.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_view_colors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive_vt52_curses.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scripty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slicer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_abbrev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ansi_scrubber.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_auto_fd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_auto_mem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bookmarks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_chunky_index.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_concise.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_date_time_scanner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_grep_proc2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_help_text_formatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hist_source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_json_ptr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_line_buffer2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_log_accel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pcrepp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_reltime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_top_status.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_yajlpp.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test_abbrev.log: test_abbrev$(EXEEXT) @p='test_abbrev$(EXEEXT)'; \ b='test_abbrev'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_ansi_scrubber.log: test_ansi_scrubber$(EXEEXT) @p='test_ansi_scrubber$(EXEEXT)'; \ b='test_ansi_scrubber'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_auto_fd.log: test_auto_fd$(EXEEXT) @p='test_auto_fd$(EXEEXT)'; \ b='test_auto_fd'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_auto_mem.log: test_auto_mem$(EXEEXT) @p='test_auto_mem$(EXEEXT)'; \ b='test_auto_mem'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_bookmarks.log: test_bookmarks$(EXEEXT) @p='test_bookmarks$(EXEEXT)'; \ b='test_bookmarks'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_chunky_index.log: test_chunky_index$(EXEEXT) @p='test_chunky_index$(EXEEXT)'; \ b='test_chunky_index'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_date_time_scanner.log: test_date_time_scanner$(EXEEXT) @p='test_date_time_scanner$(EXEEXT)'; \ b='test_date_time_scanner'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_format_installer.sh.log: test_format_installer.sh @p='test_format_installer.sh'; \ b='test_format_installer.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_format_loader.sh.log: test_format_loader.sh @p='test_format_loader.sh'; \ b='test_format_loader.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_cli.sh.log: test_cli.sh @p='test_cli.sh'; \ b='test_cli.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_cmds.sh.log: test_cmds.sh @p='test_cmds.sh'; \ b='test_cmds.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_concise.log: test_concise$(EXEEXT) @p='test_concise$(EXEEXT)'; \ b='test_concise'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_line_buffer2.log: test_line_buffer2$(EXEEXT) @p='test_line_buffer2$(EXEEXT)'; \ b='test_line_buffer2'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_line_buffer.sh.log: test_line_buffer.sh @p='test_line_buffer.sh'; \ b='test_line_buffer.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_listview.sh.log: test_listview.sh @p='test_listview.sh'; \ b='test_listview.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_mvwattrline.sh.log: test_mvwattrline.sh @p='test_mvwattrline.sh'; \ b='test_mvwattrline.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_grep_proc.sh.log: test_grep_proc.sh @p='test_grep_proc.sh'; \ b='test_grep_proc.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_grep_proc2.log: test_grep_proc2$(EXEEXT) @p='test_grep_proc2$(EXEEXT)'; \ b='test_grep_proc2'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_hist_source.log: test_hist_source$(EXEEXT) @p='test_hist_source$(EXEEXT)'; \ b='test_hist_source'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_json_format.sh.log: test_json_format.sh @p='test_json_format.sh'; \ b='test_json_format.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_json_op.sh.log: test_json_op.sh @p='test_json_op.sh'; \ b='test_json_op.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_json_ptr_walk.sh.log: test_json_ptr_walk.sh @p='test_json_ptr_walk.sh'; \ b='test_json_ptr_walk.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_log_accel.log: test_log_accel$(EXEEXT) @p='test_log_accel$(EXEEXT)'; \ b='test_log_accel'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_logfile.sh.log: test_logfile.sh @p='test_logfile.sh'; \ b='test_logfile.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_pcrepp.log: test_pcrepp$(EXEEXT) @p='test_pcrepp$(EXEEXT)'; \ b='test_pcrepp'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_reltime.log: test_reltime$(EXEEXT) @p='test_reltime$(EXEEXT)'; \ b='test_reltime'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_scripts.sh.log: test_scripts.sh @p='test_scripts.sh'; \ b='test_scripts.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sessions.sh.log: test_sessions.sh @p='test_sessions.sh'; \ b='test_sessions.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_shlexer.sh.log: test_shlexer.sh @p='test_shlexer.sh'; \ b='test_shlexer.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql.sh.log: test_sql.sh @p='test_sql.sh'; \ b='test_sql.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql_coll_func.sh.log: test_sql_coll_func.sh @p='test_sql_coll_func.sh'; \ b='test_sql_coll_func.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql_json_func.sh.log: test_sql_json_func.sh @p='test_sql_json_func.sh'; \ b='test_sql_json_func.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql_fs_func.sh.log: test_sql_fs_func.sh @p='test_sql_fs_func.sh'; \ b='test_sql_fs_func.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql_str_func.sh.log: test_sql_str_func.sh @p='test_sql_str_func.sh'; \ b='test_sql_str_func.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_sql_time_func.sh.log: test_sql_time_func.sh @p='test_sql_time_func.sh'; \ b='test_sql_time_func.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_view_colors.sh.log: test_view_colors.sh @p='test_view_colors.sh'; \ b='test_view_colors.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_vt52_curses.sh.log: test_vt52_curses.sh @p='test_vt52_curses.sh'; \ b='test_vt52_curses.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_top_status.log: test_top_status$(EXEEXT) @p='test_top_status$(EXEEXT)'; \ b='test_top_status'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_data_parser.sh.log: test_data_parser.sh @p='test_data_parser.sh'; \ b='test_data_parser.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_yajlpp.log: test_yajlpp$(EXEEXT) @p='test_yajlpp$(EXEEXT)'; \ b='test_yajlpp'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_pretty_print.sh.log: test_pretty_print.sh @p='test_pretty_print.sh'; \ b='test_pretty_print.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_curl.sh.log: test_curl.sh @p='test_curl.sh'; \ b='test_curl.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-local \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am .PRECIOUS: Makefile distclean-local: $(RM_V)rm -rf sessions $(RM_V)rm -rf .lnav $(RM_V)rm -rf ../installer-test-home # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lnav-0.8.2/test/multiline.lnav000664 000765 000024 00000000377 12511246404 016604 0ustar00stackstaff000000 000000 #! /usr/bin/env lnav -f ;CREATE TABLE foobar ( mykey integer primary key, name text ); ;INSERT INTO foobar VALUES (1, 'Jules'); ;INSERT INTO environ SELECT "msg", "Hello: " || group_concat(name, ", ") FROM foobar; :pipe-line-to echo $msg lnav-0.8.2/test/mvwattrline_output.0000664 000765 000024 00000011260 12711544661 017776 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b6d1b5b6d1b5b33376d1b5b34306d1b5b313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b343b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b353b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b363b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b373b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b383b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b393b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31303b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31343b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31353b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31363b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31373b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31383b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31393b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32303b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32343b3148202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200820081b5b3468201b5b346c1b5b481b5b33376d1b5b34306d506c61696e20746578740d0a1b5b376d20202020202020201b5b6d1b5b33376d1b5b34306d4c656164696e67207461620d0a541b5b376d616220202020201b5b6d1b5b33376d1b5b34306d7769746820746578740d0a5461621b5b376d20202020201b5b6d1b5b33376d1b5b34306d7769746820746578742023320d0a54657874201b5b33316d1b5b34306d77691b5b376d74681b5b33376d1b5b34306d206d691b5b6d1b5b33376d1b5b34306d78656420617474726962757465732e0d0a1b5b6d1b5b6d1b5b33376d1b5b34306d1b5b6d1b5b3138421b5b4b1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/nested.lnav000644 000765 000024 00000000042 12635172202 016050 0ustar00stackstaff000000 000000 :eval :echo nested here $0 $1 $2 lnav-0.8.2/test/parser_debugger.py000775 000765 000024 00000016706 12710565071 017445 0ustar00stackstaff000000 000000 #! /usr/bin/env python # Copyright (c) 2013, Timothy Stack # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # * Neither the name of Timothy Stack nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os import json import string import readline import itertools import collections TEST_DIR = os.path.dirname(__file__) ROOT_DIR = os.path.dirname(TEST_DIR) SRC_DIR = os.path.join(ROOT_DIR, "src") addr_to_name = {} name_to_addr = {} element_lists = collections.defaultdict(list) list_depth = {} list_format = {} breakpoints = set() def completer(text, state): options = [x for x in itertools.chain(name_to_addr, element_lists, breakpoints) if x.startswith(text)] try: return options[state] except IndexError: return None readline.set_completer(completer) if 'libedit' in readline.__doc__: readline.parse_and_bind('bind ^I rl_complete') else: readline.parse_and_bind('tab: complete') input_line = '' ops = [] for line in open("scanned.dpt"): if line.startswith("input "): input_line = line[6:-1] else: ops.append(map(string.strip, line.split())) def getstr(capture): start, end = capture.split(':') return input_line[int(start):int(end)] def printlist(name_or_addr): if name_or_addr in name_to_addr: addr = name_to_addr[name_or_addr] print "% 3d (%s:%s) %s" % (list_depth.get(addr, -1), name_or_addr, addr, element_lists[addr]) elif name_or_addr in element_lists: addr = name_or_addr print "% 3d (%s:%s) %s" % (list_depth.get(name_or_addr, -1), addr_to_name.get(name_or_addr, name_or_addr), name_or_addr, element_lists[name_or_addr]) else: print "error: unknown list --", name_or_addr if addr in list_format: print " format -- appender(%s) term(%s) qual(%s) sep(%s) prefix_term(%s)" % tuple(list_format[addr]) def handleop(fields): addr = fields[0] loc = fields[1].split(':') method_name = fields[2] method_args = fields[3:] if addr == '0x0': el = None else: el = element_lists[addr] if method_name == 'element_list_t': addr_to_name[addr] = method_args[0] name_to_addr[method_args[0]] = addr list_depth[addr] = int(method_args[1]) elif method_name == '~element_list_t': del element_lists[addr] elif method_name == 'format': list_depth[addr] = int(method_args[0]) list_format[addr] = method_args[1:] elif method_name == 'consumed': list_depth[addr] = -1 elif method_name == 'push_back': el.append((method_args[0], getstr(method_args[1]))) elif method_name == 'pop_front': el.pop(0) elif method_name == 'pop_back': el.pop() elif method_name == 'clear2': el[::] = [] elif method_name == 'splice': pos = int(method_args[0]) other = element_lists[method_args[1]] start, from_end = map(int, method_args[2].split(':')) end = len(other) - from_end sub_list = other[start:end] del other[start:end] el[pos:pos] = sub_list elif method_name == 'swap': other = element_lists[method_args[0]] element_lists[method_args[0]] = el element_lists[addr] = other elif method_name == 'point': breakpoints.add(method_args[0]) else: print "Unhandled method: ", method_name def playupto(length): addr_to_name.clear() name_to_addr.clear() element_lists.clear() list_depth.clear() for index in range(length): handleop(ops[index]) def find_prev_point(start, name): orig_start = start while start > 0: start -= 1; fields = ops[start] if fields[2] != 'point': continue if not name or fields[3] == name: return start + 1 return orig_start + 1 def find_next_point(start, name): orig_start = start while start < len(ops): start += 1; fields = ops[start] if fields[2] != 'point': continue if not name or fields[3] == name: return start + 1 return orig_start + 1 def printall(): print input_line sorted_lists = [(list_depth.get(addr, -1), addr) for addr in element_lists] sorted_lists.sort() for _depth, addr in sorted_lists: printlist(addr) index = len(ops) last_cmd = [''] watch_list = set() while True: playupto(index) if index == 0: print "init" else: op = ops[index - 1] print "#%s %s" % (index -1, op) if op[2] == 'push_back': print getstr(op[4]) for list_name in watch_list: printlist(list_name) try: cmd = raw_input("> ").split() except EOFError: print break if not cmd or cmd[0] == '': cmd = last_cmd if not cmd or cmd[0] == '': pass elif cmd[0] == 'h': print 'Help:' print ' q - quit' print ' s - Start over' print ' n - Next step' print ' r - Previous step' print ' b - Previous breakpoint' print ' c - Next breakpoint' print ' p - Print state' print ' w - Add a variable to the watch list' print ' u - Remove a variable from the watch list' elif cmd[0] == 'q': break elif cmd[0] == 's': index = 0 elif cmd[0] == 'n': if index < len(ops): index += 1 elif cmd[0] == 'r': if index > 0: index -= 1 elif cmd[0] == 'b': if len(cmd) == 1: cmd.append('') index = find_prev_point(index - 1, cmd[1]) elif cmd[0] == 'c': if len(cmd) == 1: cmd.append('') index = find_next_point(index - 1, cmd[1]) elif cmd[0] == 'p': if len(cmd) > 1: printlist(cmd[1]) else: printall() elif cmd[0] == 'w': watch_list.add(cmd[1]) elif cmd[0] == 'u': if watch_list: watch_list.remove(cmd[1]) else: print "error: unknown command --", cmd printall() last_cmd = cmd lnav-0.8.2/test/scripty.cc000664 000765 000024 00000040467 12510241024 015720 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined HAVE_NCURSESW_CURSES_H # include #elif defined HAVE_NCURSESW_H # include #elif defined HAVE_NCURSES_CURSES_H # include #elif defined HAVE_NCURSES_H # include #elif defined HAVE_CURSES_H # include #else # error "SysV or X/Open-compatible Curses header file required" #endif #ifdef HAVE_PTY_H #include #endif #ifdef HAVE_UTIL_H #include #endif #ifdef HAVE_LIBUTIL_H #include #endif #include #include #include "auto_fd.hh" using namespace std; /** * An RAII class for opening a PTY and forking a child process. */ class child_term { public: class error : public std::exception { public: error(int err) : e_err(err) { }; int e_err; }; child_term() { struct winsize ws; auto_fd slave; memset(&ws, 0, sizeof(ws)); if (isatty(STDIN_FILENO) && tcgetattr(STDIN_FILENO, &this->ct_termios) == -1) { throw error(errno); } if (isatty(STDOUT_FILENO) && ioctl(STDOUT_FILENO, TIOCGWINSZ, &this->ct_winsize) == -1) { throw error(errno); } ws.ws_col = 80; ws.ws_row = 24; if (openpty(this->ct_master.out(), slave.out(), NULL, NULL, &ws) < 0) { throw error(errno); } if ((this->ct_child = fork()) == -1) throw error(errno); if (this->ct_child == 0) { this->ct_master.reset(); dup2(slave, STDIN_FILENO); dup2(slave, STDOUT_FILENO); setenv("TERM", "xterm-color", 1); } else { slave.reset(); } }; virtual ~child_term() { (void)this->wait_for_child(); if (isatty(STDIN_FILENO) && tcsetattr(STDIN_FILENO, TCSANOW, &this->ct_termios) == -1) { perror("tcsetattr"); } if (isatty(STDOUT_FILENO) && ioctl(STDOUT_FILENO, TIOCSWINSZ, &this->ct_winsize) == -1) { perror("ioctl"); } }; int wait_for_child(void) { int retval = -1; if (this->ct_child > 0) { kill(this->ct_child, SIGTERM); this->ct_child = -1; while (wait(&retval) < 0 && (errno == EINTR)); } return retval; }; bool is_child() { return this->ct_child == 0; }; pid_t get_child_pid() { return this->ct_child; }; int get_fd() { return this->ct_master; }; protected: pid_t ct_child; auto_fd ct_master; struct termios ct_termios; struct winsize ct_winsize; }; /** * @param fd The file descriptor to switch to raw mode. * @return Zero on success, -1 on error. */ static int tty_raw(int fd) { struct termios attr[1]; assert(fd >= 0); if (tcgetattr(fd, attr) == -1) return -1; attr->c_lflag &= ~(ECHO | ICANON | IEXTEN); attr->c_iflag &= ~(ICRNL | INPCK | ISTRIP | IXON); attr->c_cflag &= ~(CSIZE | PARENB); attr->c_cflag |= (CS8); attr->c_oflag &= ~(OPOST); attr->c_cc[VMIN] = 1; attr->c_cc[VTIME] = 0; return tcsetattr(fd, TCSANOW, attr); } static void dump_memory(FILE *dst, const char *src, int len) { int lpc; for (lpc = 0; lpc < len; lpc++) { fprintf(dst, "%02x", src[lpc]); } } static char *hex2bits(const char *src) { int len, pos = sizeof(int); char *retval; len = strlen(src) / 2; retval = new char[sizeof(uint32_t) + len]; *((uint32_t *)retval) = len; while ((size_t)pos < (sizeof(uint32_t) + len)) { int val; sscanf(src, "%2x", &val); src += 2; retval[pos] = (char)val; pos += 1; } return retval; } typedef enum { ET_NONE, ET_READ, } expect_type_t; struct expect_read { uint32_t er_length; char er_data[]; }; struct expect { expect_type_t e_type; union { struct expect_read *read; } e_arg; }; struct expect_read_state { uint32_t ers_pos; }; class expect_handler { public: expect_handler() { memset(&this->eh_state, 0, sizeof(this->eh_state)); }; int process_input(const char *buffer, size_t blen) { if (this->eh_queue.empty()) return 0; uint32_t &exp_pos = this->eh_state.es_read.ers_pos; struct expect &next = this->eh_queue.front(); int cmp_len = min((next.e_arg.read->er_length - exp_pos), (uint32_t)blen); char *exp_start = &next.e_arg.read->er_data[this->eh_state.es_read.ers_pos]; int retval = 0; assert(buffer != NULL || blen == 0); if (memcmp(exp_start, buffer, cmp_len) == 0) { exp_pos += cmp_len; if (exp_pos == next.e_arg.read->er_length) { retval = 1; if (!this->eh_queue.empty()) { exp_pos = 0; this->eh_queue.pop(); } } } else { printf("Detected output differences at offset %d, " "expecting:\n ", exp_pos); dump_memory(stdout, exp_start, cmp_len); printf("\nGot:\n "); dump_memory(stdout, buffer, cmp_len); retval = -1; } fprintf(stderr, "pi ret %d\n", retval); return retval; }; queue eh_queue; private: union { struct expect_read_state es_read; } eh_state; }; typedef enum { CT_SLEEP, CT_WRITE, } command_type_t; struct command { command_type_t c_type; union { char *b; } c_arg; }; static struct { const char *sd_program_name; sig_atomic_t sd_looping; pid_t sd_child_pid; const char *sd_to_child_name; FILE *sd_to_child; const char *sd_from_child_name; FILE *sd_from_child; queue sd_replay; bool sd_user_step; } scripty_data; static void sigchld(int sig) { } static void sigpass(int sig) { kill(scripty_data.sd_child_pid, sig); } static void usage(void) { const char *usage_msg = "usage: %s [-h] [-t to_child] [-f from_child] -- \n" "\n" "Recorder for TTY I/O from a child process." "\n" "Options:\n" " -h Print this message, then exit.\n" " -t The file where any input sent to the child process\n" " should be stored.\n" " -f The file where any output from the child process\n" " should be stored.\n" " -r The file containing the input to be sent to the child\n" " process.\n" " -e The file containing the expected output from the child\n" " process.\n" "\n" "Examples:\n" " To record a session for playback later:\n" " $ scripty -t input.0 -f output.0 -- myCursesApp\n" "\n" " To replay the recorded session:\n" " $ scripty -r input.0 -- myCursesApp\n"; fprintf(stderr, usage_msg, scripty_data.sd_program_name); } int main(int argc, char *argv[]) { int c, fd, retval = EXIT_SUCCESS; expect_handler ex_handler; bool passout = true; FILE *file; scripty_data.sd_program_name = argv[0]; scripty_data.sd_looping = true; while ((c = getopt(argc, argv, "ht:f:r:e:ns")) != -1) { switch (c) { case 'h': usage(); exit(retval); break; case 's': scripty_data.sd_user_step = true; break; case 't': scripty_data.sd_to_child_name = optarg; break; case 'f': scripty_data.sd_from_child_name = optarg; break; case 'e': if ((file = fopen(optarg, "r")) == NULL) { fprintf(stderr, "error: cannot open %s\n", optarg); retval = EXIT_FAILURE; } else { char line[32 * 1024]; while (fgets(line, sizeof(line), file)) { char *sp; if (line[0] == '#' || (sp = strchr(line, ' ')) == NULL) { } else { struct expect exp; *sp = '\0'; sp += 1; if (strcmp(line, "read") == 0) { exp.e_type = ET_READ; exp.e_arg.read = (struct expect_read *)hex2bits(sp); } else { fprintf(stderr, "error: unknown command -- %s\n", line); retval = EXIT_FAILURE; } ex_handler.eh_queue.push(exp); } } fclose(file); file = NULL; } break; case 'r': if ((file = fopen(optarg, "r")) == NULL) { fprintf(stderr, "error: cannot open %s\n", optarg); retval = EXIT_FAILURE; } else { char line[32 * 1024]; while (fgets(line, sizeof(line), file)) { char *sp; if (line[0] == '#' || (sp = strchr(line, ' ')) == NULL) { } else { struct command cmd; *sp = '\0'; sp += 1; if (strcmp(line, "sleep") == 0) { cmd.c_type = CT_SLEEP; } else if (strcmp(line, "write") == 0) { cmd.c_type = CT_WRITE; cmd.c_arg.b = hex2bits(sp); scripty_data.sd_replay.push(cmd); } else { fprintf(stderr, "error: unknown command -- %s\n", line); retval = EXIT_FAILURE; } } } fclose(file); file = NULL; } break; case 'n': passout = false; break; default: retval = EXIT_FAILURE; break; } } argc -= optind; argv += optind; if ((scripty_data.sd_to_child_name != NULL) && (scripty_data.sd_to_child = fopen(scripty_data.sd_to_child_name, "w")) == NULL) { fprintf(stderr, "error: unable to open %s -- %s\n", scripty_data.sd_to_child_name, strerror(errno)); retval = EXIT_FAILURE; } if (scripty_data.sd_from_child_name != NULL) { if (strcmp(scripty_data.sd_from_child_name, "-") == 0) { scripty_data.sd_from_child = stdout; } else if ((scripty_data.sd_from_child = fopen(scripty_data.sd_from_child_name, "w")) == NULL) { fprintf(stderr, "error: unable from open %s -- %s\n", scripty_data.sd_from_child_name, strerror(errno)); retval = EXIT_FAILURE; } } fd = open("/tmp/scripty.err", O_WRONLY|O_CREAT|O_APPEND, 0666); dup2(fd, STDERR_FILENO); close(fd); fprintf(stderr, "startup\n"); if (scripty_data.sd_to_child != NULL) fcntl(fileno(scripty_data.sd_to_child), F_SETFD, 1); if (scripty_data.sd_from_child != NULL) fcntl(fileno(scripty_data.sd_from_child), F_SETFD, 1); if (retval != EXIT_FAILURE) { child_term ct; if (ct.is_child()) { execvp(argv[0], argv); perror("execvp"); exit(-1); } else { int maxfd, out_len = 0; bool got_expected = true; bool got_user_step; struct timeval last, now; char out_buffer[8192]; fd_set read_fds; scripty_data.sd_child_pid = ct.get_child_pid(); signal(SIGINT, sigpass); signal(SIGTERM, sigpass); signal(SIGCHLD, sigchld); gettimeofday(&now, NULL); last = now; FD_ZERO(&read_fds); FD_SET(STDIN_FILENO, &read_fds); FD_SET(ct.get_fd(), &read_fds); fprintf(stderr, "goin in the loop\n"); tty_raw(STDIN_FILENO); if (!ex_handler.eh_queue.empty()) { got_expected = false; } maxfd = max(STDIN_FILENO, ct.get_fd()); while (scripty_data.sd_looping) { fd_set ready_rfds = read_fds; struct timeval diff, to; int rc; to.tv_sec = 0; to.tv_usec = 10000; rc = select(maxfd + 1, &ready_rfds, NULL, NULL, &to); if (rc == 0) { if (!got_expected) { switch (ex_handler.process_input(NULL, 0)) { case -1: scripty_data.sd_looping = false; retval = EXIT_FAILURE; break; case 0: break; case 1: got_expected = true; break; } } if (!scripty_data.sd_replay.empty() && got_expected && (!scripty_data.sd_user_step || got_user_step)) { struct command cmd = scripty_data.sd_replay.front(); int len; fprintf(stderr, " us %d got %d\n", scripty_data.sd_user_step, got_user_step); scripty_data.sd_replay.pop(); fprintf(stderr, "replay %zd\n", scripty_data.sd_replay.size()); switch (cmd.c_type) { case CT_SLEEP: break; case CT_WRITE: len = *((int *)cmd.c_arg.b); log_perror(write(ct.get_fd(), cmd.c_arg.b + sizeof(int), len)); delete [] cmd.c_arg.b; break; } got_user_step = false; got_expected = false; } } else if (rc < 0) { switch (errno) { case EINTR: break; default: fprintf(stderr, "select %s\n", strerror(errno)); scripty_data.sd_looping = false; break; } } else { char buffer[1024]; fprintf(stderr, "fds ready %d\n", rc); gettimeofday(&now, NULL); timersub(&now, &last, &diff); if (FD_ISSET(STDIN_FILENO, &ready_rfds)) { rc = read(STDIN_FILENO, buffer, sizeof(buffer)); if (rc < 0) { scripty_data.sd_looping = false; } else if (rc == 0) { FD_CLR(STDIN_FILENO, &read_fds); } else if (!scripty_data.sd_replay.empty()) { if (scripty_data.sd_user_step) { got_user_step = true; } } else { log_perror(write(ct.get_fd(), buffer, rc)); if (scripty_data.sd_to_child != NULL) { fprintf(scripty_data.sd_to_child, "sleep %ld.%06ld\n" "write ", (long)diff.tv_sec, (long)diff.tv_usec); dump_memory(scripty_data.sd_to_child, buffer, rc); fprintf(scripty_data.sd_to_child, "\n"); } if (scripty_data.sd_from_child != NULL) { fprintf(stderr, "do write %d\n", out_len); fprintf(scripty_data.sd_from_child, "read "); dump_memory(scripty_data.sd_from_child, out_buffer, out_len); fprintf(scripty_data.sd_from_child, "\n"); fprintf(scripty_data.sd_from_child, "# write "); dump_memory(scripty_data.sd_from_child, buffer, rc); fprintf(scripty_data.sd_from_child, "\n"); out_len = 0; } } } if (FD_ISSET(ct.get_fd(), &ready_rfds)) { rc = read(ct.get_fd(), buffer, sizeof(buffer)); fprintf(stderr, "read rc %d\n", rc); if (rc <= 0) { scripty_data.sd_looping = false; if (scripty_data.sd_from_child) { fprintf(scripty_data.sd_from_child, "read "); dump_memory(scripty_data.sd_from_child, out_buffer, out_len); fprintf(scripty_data.sd_from_child, "\n"); out_len = 0; } } else { if (passout) log_perror(write(STDOUT_FILENO, buffer, rc)); if (scripty_data.sd_from_child != NULL) { fprintf(stderr, "got out %d\n", rc); memcpy(&out_buffer[out_len], buffer, rc); out_len += rc; } switch (ex_handler.process_input(buffer, rc)) { case -1: scripty_data.sd_looping = false; retval = EXIT_FAILURE; break; case 0: break; case 1: got_expected = true; break; } } } } last = now; } } if (!ex_handler.eh_queue.empty()) { fprintf(stderr, "More input expected from child\n"); retval = EXIT_FAILURE; } retval = ct.wait_for_child() || retval; } if (scripty_data.sd_to_child != NULL) { fclose(scripty_data.sd_to_child); scripty_data.sd_to_child = NULL; } if (scripty_data.sd_from_child != NULL) { fclose(scripty_data.sd_from_child); scripty_data.sd_from_child = NULL; } return retval; } lnav-0.8.2/test/slicer.cc000664 000765 000024 00000005157 12477462531 015525 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include "line_buffer.hh" using namespace std; int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; vector index; auto_fd fd; if (argc < 2) { fprintf(stderr, "error: expecting file argument\n"); retval = EXIT_FAILURE; } else if ((fd = open(argv[1], O_RDONLY)) == -1) { perror("open"); retval = EXIT_FAILURE; } else { int line_number, start, end; off_t offset = 0; line_buffer lb; line_value lv; lb.set_fd(fd); index.push_back(offset); while (lb.read_line(offset, lv)) { index.push_back(offset); } index.pop_back(); try { while (scanf("%d:%d:%d", &line_number, &start, &end) == 3) { string str; offset = index[line_number]; lb.read_line(offset, lv); str = string(lv.lv_start, lv.lv_len); str = str.substr(start, end); printf("%s\n", str.c_str()); } } catch (line_buffer::error &e) { fprintf(stderr, "error: line buffer %s\n", strerror(e.e_err)); } } return retval; } lnav-0.8.2/test/test_abbrev.cc000664 000765 000024 00000004442 13044377034 016532 0ustar00stackstaff000000 000000 /** * Copyright (c) 2016, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include "lnav_util.hh" static struct test_data { const char *str; const char *abbrev_str; size_t max_len; } TEST_DATA[] = { { "abc", "abc", 5 }, { "com.example.foo.bar", "c.e.f.bar", 5 }, { "com.example.foo.bar", "c.e.foo.bar", 15 }, { "no dots in here", "no dots in here", 5 }, { NULL } }; int main(int argc, char *argv[]) { for (int lpc = 0; TEST_DATA[lpc].str; lpc++) { test_data &td = TEST_DATA[lpc]; char buffer[1024]; strcpy(buffer, td.str); size_t actual = abbreviate_str(buffer, strlen(td.str), td.max_len); buffer[actual] = '\0'; printf("orig: %s\n", td.str); printf(" act: %s\n", buffer); assert(strcmp(buffer, td.abbrev_str) == 0); } } lnav-0.8.2/test/test_ansi_scrubber.cc000664 000765 000024 00000005134 12477462531 020117 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file test_ansi_scrubber.cc * * Test for the scrub_ansi_string function. * * TODO: Add a test for the ansi-colors.0.in file. It has a matrix of all the * color/style combinations. */ #include "config.h" #include #include "ansi_scrubber.hh" using namespace std; int main(int argc, char *argv[]) { view_colors &vc = view_colors::singleton(); string_attrs_t::iterator iter; string_attrs_t sa; string str_cp; str_cp = "Hello, World!"; scrub_ansi_string(str_cp, sa); assert(str_cp == "Hello, World!"); assert(sa.empty()); str_cp = "Hello\x1b[44;m, \x1b[33;mWorld\x1b[0;m!"; scrub_ansi_string(str_cp, sa); assert(str_cp == "Hello, World!"); assert(sa[0].sa_range.lr_start == 5); assert(sa[0].sa_range.lr_end == 7); assert(sa[0].sa_type == &view_curses::VC_STYLE); assert(sa[0].sa_value.sav_int == vc.ansi_color_pair(0, 4)); assert(sa[1].sa_range.lr_start == 7); assert(sa[1].sa_range.lr_end == 12); assert(sa[1].sa_type == &view_curses::VC_STYLE); assert(sa[1].sa_value.sav_int == vc.ansi_color_pair(3, 0)); } lnav-0.8.2/test/test_auto_fd.cc000664 000765 000024 00000005047 12477462531 016722 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include #include "auto_fd.hh" int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; auto_fd fd1, fd2; int tmp; assert(fd1 == -1); tmp = open("/dev/null", O_RDONLY); assert(tmp != -1); fd1 = tmp; fd1 = tmp; assert(fcntl(tmp, F_GETFL) >= 0); fd1 = fd2; assert(fcntl(tmp, F_GETFL) == -1); assert(errno == EBADF); assert(fd1 == -1); tmp = open("/dev/null", O_RDONLY); assert(tmp != -1); fd1 = tmp; *fd1.out() = STDOUT_FILENO; assert(fcntl(tmp, F_GETFL) == -1); assert(errno == EBADF); { auto_fd fd_cp(const_cast(fd1)); assert(fd1 == STDOUT_FILENO); assert(fd_cp != STDOUT_FILENO); assert(fd_cp != -1); tmp = (int)fd_cp; } { auto_fd fd_cp(const_cast(fd1)); assert(fd_cp == tmp); } assert(fd1.release() == STDOUT_FILENO); assert(fd1 == -1); return retval; } lnav-0.8.2/test/test_auto_mem.cc000664 000765 000024 00000005044 12477462531 017104 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include #include "auto_mem.hh" struct my_data { int dummy1; int dummy2; }; int free_count; void *last_free; void my_free(void *mem) { free_count += 1; last_free = mem; } int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; auto_mem md1, md2; struct my_data md1_val, md2_val; md1 = &md1_val; assert(free_count == 0); md1 = md2; assert(free_count == 1); assert(last_free == &md1_val); assert(md1 == NULL); md1 = &md2_val; assert(free_count == 1); assert(last_free == &md1_val); *md1.out() = &md1_val; assert(free_count == 2); assert(last_free == &md2_val); assert(md1.in() == &md1_val); { auto_mem md_cp(md1); assert(md1 == NULL); assert(free_count == 2); assert(md_cp == &md1_val); } assert(free_count == 3); assert(last_free == &md1_val); return retval; } lnav-0.8.2/test/test_bookmarks.cc000664 000765 000024 00000007045 12477462531 017271 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "bookmarks.hh" int main(int argc, char *argv[]) { int lpc, retval = EXIT_SUCCESS; bookmark_vector bv, bv_cp; bv.insert_once(vis_line_t(1)); bv.insert_once(vis_line_t(1)); assert(bv.size() == 1); bv.insert_once(vis_line_t(3)); bv.insert_once(vis_line_t(2)); assert(bv[0] == 1); assert(bv[1] == 2); assert(bv[2] == 3); bv.clear(); assert(bv.next(vis_line_t(0)) == -1); assert(bv.prev(vis_line_t(0)) == -1); assert(bv.next(vis_line_t(100)) == -1); assert(bv.prev(vis_line_t(100)) == -1); bv.insert_once(vis_line_t(2)); assert(bv.next(vis_line_t(0)) == 2); assert(bv.next(vis_line_t(2)) == -1); assert(bv.next(vis_line_t(3)) == -1); assert(bv.prev(vis_line_t(3)) == 2); assert(bv.prev(vis_line_t(2)) == -1); bv.insert_once(vis_line_t(4)); assert(bv.next(vis_line_t(0)) == 2); assert(bv.next(vis_line_t(2)) == 4); assert(bv.next(vis_line_t(3)) == 4); assert(bv.next(vis_line_t(4)) == -1); assert(bv.prev(vis_line_t(10)) == 4); assert(bv.prev(vis_line_t(5)) == 4); assert(bv.prev(vis_line_t(4)) == 2); assert(bv.prev(vis_line_t(2)) == -1); bv.clear(); const int LINE_COUNT = 10000; for (lpc = 0; lpc < 1000; lpc++) { bv.insert_once(vis_line_t(random() % LINE_COUNT)); } bv_cp = bv; sort(bv_cp.begin(), bv_cp.end()); assert(equal(bv.begin(), bv.end(), bv_cp.begin())); unique(bv_cp.begin(), bv_cp.end()); assert(equal(bv.begin(), bv.end(), bv_cp.begin())); { vis_line_t last_line(-1); for (lpc = 0; lpc != -1; lpc = bv.next(vis_line_t(lpc))) { assert(lpc >= 0); assert(lpc < LINE_COUNT); assert(last_line < lpc); last_line = vis_line_t(lpc); } last_line = vis_line_t(10000); for (lpc = LINE_COUNT - 1; lpc != -1; lpc = bv.prev(vis_line_t(lpc))) { assert(lpc >= 0); assert(lpc < LINE_COUNT); assert(last_line > lpc); last_line = vis_line_t(lpc); } } return retval; } lnav-0.8.2/test/test_chunky_index.cc000664 000765 000024 00000004333 12477462531 017766 0ustar00stackstaff000000 000000 #include "config.h" #include #include #include "chunky_index.hh" #include "../src/chunky_index.hh" int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; { chunky_index ci; ci.reset(); ci.finish(); assert(ci.chunk_count() == 0); } { chunky_index ci; off_t off; ci.reset(); off = ci.merge_value(1); assert(off == 0); ci.finish(); ci.reset(); off = ci.merge_value(2); assert(off == 1); ci.finish(); assert(ci.size() == 2); assert(ci[0] == 1); assert(ci[1] == 2); assert(ci.chunk_count() == 1); ci.clear(); assert(ci.size() == 0); assert(ci.chunk_count() == 0); } { int expected[] = {0, 10, 11, 20, 30, 40, 50, 60, 70, 80, 90, 100}; chunky_index ci; off_t off; ci.reset(); for (int lpc = 0; lpc < 11; lpc++) { ci.merge_value(lpc * 10); } ci.finish(); ci.reset(); off = ci.merge_value(11); assert(off == 2); ci.finish(); for (int lpc = 0; lpc < 12; lpc++) { assert(expected[lpc] == ci[lpc]); } assert(ci.chunk_count() == 3); } { int expected[] = {0, 10, 20, 30, 40, 50, 51, 60, 70, 80, 90, 100}; chunky_index ci; ci.reset(); for (int lpc = 0; lpc < 11; lpc++) { ci.merge_value(lpc * 10); } ci.finish(); ci.reset(); ci.merge_value(51); ci.finish(); for (int lpc = 0; lpc < 12; lpc++) { assert(expected[lpc] == ci[lpc]); } assert(ci.chunk_count() == 3); } { int expected[] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110}; chunky_index ci; ci.reset(); for (int lpc = 0; lpc < 11; lpc++) { ci.merge_value(lpc * 10); } ci.finish(); ci.reset(); ci.merge_value(110); ci.finish(); for (int lpc = 0; lpc < 12; lpc++) { assert(expected[lpc] == ci[lpc]); } assert(ci.chunk_count() == 3); } return retval; } lnav-0.8.2/test/test_cli.sh000644 000765 000024 00000000424 12565252130 016053 0ustar00stackstaff000000 000000 #! /bin/bash export TZ="UTC" run_test ${lnav_test} -t -n <(0x0)::listenerCallback - Thunderbolt HPD packet for route = 0x0 port = 11 unplug = 0 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: vm_compressor_flush - starting Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer Sep 13 03:13:16 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff838f1fc000, 0xffffff838f2bc000 EOF run_test ${lnav_test} -n \ -c ":goto 0" \ -c ":goto 3:45" \ ${test_dir}/logfile_syslog_with_mixed_times.0 check_output "goto 3:45 is not working?" <(0x0)::listenerCallback - Thunderbolt HPD packet for route = 0x0 port = 11 unplug = 0 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: vm_compressor_flush - starting Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer Sep 13 03:13:16 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff838f1fc000, 0xffffff838f2bc000 EOF run_test ${lnav_test} -n \ -c ":goto invalid" \ ${test_dir}/logfile_access_log.0 check_error_output "goto invalid is working" <> logfile_append.0" \ -c ":rebuild" \ logfile_append.0 check_output "filter-out append is not working" < en-US ipInfo 198.51.100.253 (unknown) true true nic1 0.0.0.0 (unknown) True 22 dhcp 198.51.100.110 (unknown) nic1 fe80::214:f609:19f7:6bf1 (unknown) True nic1 False False other preferred 64 fe80::250:56ff:feaa:5abf (unknown) up 00:50:56:aa:5a:bf nic1 EOF run_test ${lnav_test} -n \ -c ":goto 0" \ -c ":switch-to-view pretty" \ ${test_dir}/logfile_pretty.0 check_output "pretty-printer is not working" < url="https://tools.google.com/service/update2" runningFetchers=0 tickets=1 activeTickets=1 rollCallTickets=1 body= > Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.2 instead of 10.10.2. Use NSProcessInfo's operatingSystemVersion property to get correct system version number. Call location: Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 0 CarbonCore 0x00007fff8a9b3d9b ___Gestalt_SystemVersion_block_invoke + 113 Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 1 libdispatch.dylib 0x00007fff8bc84c13 _dispatch_client_callout + 8 Apr 7 07:32:56 Tim-Stacks-iMac.local logger[234]: Bad data { abc, 123, 456 ) }] EOF run_test ${lnav_test} -n \ -c ":set-min-log-level error" \ ${test_dir}/logfile_access_log.0 check_output "set-min-log-level is not working" < #include #include #include "concise_index.hh" static void push_bits(concise_index &ci, bool v, size_t count) { for (size_t lpc = 0; lpc < count; lpc++) { ci.push_back(v); } } static void check_bits(concise_index::const_iterator &iter, bool v, size_t count) { for (size_t lpc = 0; lpc < count; lpc++) { assert(v == *iter); ++iter; } } int main(int argc, char *argv[]) { concise_index::const_iterator iter; concise_index ci; size_t valid_bits; uint64_t v; assert(ci.empty()); ci.push_back(true); assert(ci.size() == 1); assert(!ci.empty()); iter = ci.begin(); assert(iter != ci.end()); v = iter.get_word(valid_bits); assert(v == 1ULL); assert(valid_bits == 1); assert(*iter == true); ++iter; assert(iter == ci.end()); ci.clear(); ci.push_back_word(0, 0); assert(ci.size() == 0); assert(ci.empty()); v = iter.get_word(valid_bits); assert(v == 0); assert(valid_bits == 0); assert(ci.begin() == ci.end()); push_bits(ci, true, concise_index::BITS_PER_WORD); assert(ci.size() == concise_index::BITS_PER_WORD); assert(!ci.empty()); iter = ci.begin(); check_bits(iter, true, concise_index::BITS_PER_WORD); assert(iter == ci.end()); push_bits(ci, false, concise_index::BITS_PER_WORD); assert(ci.size() == concise_index::BITS_PER_WORD * 2); assert(!ci.empty()); iter = ci.begin(); iter.increment(concise_index::BITS_PER_WORD); check_bits(iter, false, concise_index::BITS_PER_WORD); assert(iter == ci.end()); ci.clear(); ci.push_back_word(~0ULL, concise_index::BITS_PER_WORD - 1); assert(ci.size() == concise_index::BITS_PER_WORD - 1); iter = ci.begin(); v = iter.get_word(valid_bits); assert(v == (~0ULL >> 1)); assert(valid_bits == concise_index::BITS_PER_WORD - 1); ci.push_back(true); assert(ci.size() == concise_index::BITS_PER_WORD); iter = ci.begin(); v = iter.get_word(valid_bits); assert(v == ~0ULL); assert(valid_bits == concise_index::BITS_PER_WORD); ci.clear(); ci.push_back_word(~0ULL); ci.push_back_word(0ULL); iter = ci.begin(); v = iter.get_word(valid_bits); assert(v == ~0ULL); assert(valid_bits == concise_index::BITS_PER_WORD); iter.next_word(); v = iter.get_word(valid_bits); assert(v == 0ULL); assert(valid_bits == concise_index::BITS_PER_WORD); } lnav-0.8.2/test/test_curl.sh000644 000765 000024 00000004126 12557417067 016271 0ustar00stackstaff000000 000000 #! /bin/bash if test x"$SFTP_TEST_URL" == x""; then exit 0 fi run_test ${lnav_test} -n \ file://${test_dir}/logfile_access_log.0 check_output "file URL is not working" <> curl_access_log.0" \ $SFTP_TEST_URL/`pwd`/curl_access_log.0 check_output "sftp URL is not working" < #include #include "lnav_util.hh" #include "../src/lnav_util.hh" static const char *GOOD_TIMES[] = { "May 01 00:00:01", "May 10 12:00:01", "2014-02-11 16:12:34", NULL }; static const char *BAD_TIMES[] = { "1-2-3 1:2:3", "2013-22-01 12:01:22", "2013-00-01 12:01:22", "@4000000043", NULL }; int main(int argc, char *argv[]) { setenv("TZ", "UTC", 1); for (int lpc = 0; GOOD_TIMES[lpc]; lpc++) { date_time_scanner dts; struct timeval tv; struct exttm tm; const char *rc; rc = dts.scan(GOOD_TIMES[lpc], strlen(GOOD_TIMES[lpc]), NULL, &tm, tv); printf("ret %s %p\n", GOOD_TIMES[lpc], rc); assert(rc != NULL); char ts[64]; dts.ftime(ts, sizeof(ts), tm); printf("orig %s\n", GOOD_TIMES[lpc]); printf("loop %s\n", ts); assert(strcmp(ts, GOOD_TIMES[lpc]) == 0); } { date_time_scanner dts; struct timeval tv; dts.convert_to_timeval("@40000000433225833b6e1a8c", -1, NULL, tv); assert(tv.tv_sec == 1127359865); assert(tv.tv_usec == 997071); memset(&tv, 0, sizeof(tv)); dts.convert_to_timeval("@4000000043322583", -1, NULL, tv); assert(tv.tv_sec == 1127359865); assert(tv.tv_usec == 0); } for (int lpc = 0; BAD_TIMES[lpc]; lpc++) { date_time_scanner dts; struct timeval tv; struct exttm tm; printf("Checking bad time: %s\n", BAD_TIMES[lpc]); assert(dts.scan(BAD_TIMES[lpc], strlen(BAD_TIMES[lpc]), NULL, &tm, tv) == NULL); } { const char *en_date = "Jan 1 12:00:00"; const char *es_date = " 1/Ene/2014:12:00:00 +0000"; struct timeval en_tv, es_tv; struct exttm en_tm, es_tm; date_time_scanner dts; if (setlocale(LC_TIME, "es_ES.UTF-8") != NULL) { assert(dts.scan(en_date, strlen(en_date), NULL, &en_tm, en_tv) != NULL); dts.clear(); assert(dts.scan(es_date, strlen(es_date), NULL, &es_tm, es_tv) != NULL); } } { const char *epoch_str = "ts 1428721664 ]"; struct exttm tm; off_t off = 0; bool rc = ptime_fmt("ts %s ]", &tm, epoch_str, off, strlen(epoch_str)); assert(rc); assert(tm2sec(&tm.et_tm) == 1428721664); } } lnav-0.8.2/test/test_format_installer.sh000664 000765 000024 00000001363 12562021222 020647 0ustar00stackstaff000000 000000 #! /bin/bash CONFIG_DIR="${top_builddir}/installer-test-home" mkdir -p "${CONFIG_DIR}" rm -rf "${CONFIG_DIR}/.lnav/formats" HOME=${CONFIG_DIR} export HOME ${lnav_test} -i ${srcdir}/formats/jsontest/format.json if ! test -f ${CONFIG_DIR}/.lnav/formats/installed/test_log.json; then echo "Format not installed correctly?" exit 1 fi if test x"${TEST_GIT_INSTALL}" = x""; then # Hitting the git repos frequently is slow/noisy exit 0 fi ${lnav_test} -i extra if ! test -f ${CONFIG_DIR}/.lnav/remote-config/remote-config.json; then echo "Remote config not downloaded?" exit 1 fi if ! test -d ${CONFIG_DIR}/.lnav/formats/https___github_com_PaulWay_lnav_formats_git; then echo "Third-party repo not downloaded?" exit 1 fi lnav-0.8.2/test/test_format_loader.sh000664 000765 000024 00000003226 13071032570 020124 0ustar00stackstaff000000 000000 #! /bin/bash lnav_test="${top_builddir}/src/lnav-test" run_test ${lnav_test} -C \ -I ${test_dir}/bad-config sed -i "" -e "s|/.*/init.sql|init.sql|g" `test_err_filename` check_error_output "invalid format not detected?" <\d+: (?.*)$ error:bad_regex_log.regex[std]: ^ error:bad_regex_log.level:missing ) error:bad_regex_log:invalid sample -- 1428634687123; foo error:bad_regex_log:highlighters[0]:missing ) error:bad_regex_log:highlighters[0]:abc( error:bad_regex_log:highlighters[0]: ^ error:bad_sample_log:invalid sample -- 1428634687123; foo bar error:bad_sample_log:partial sample matched -- 1428634687123; foo error: against pattern -- ^(?\d+); (?\w+)$ error:bad_sample_log:partial sample matched -- 1428634687123 error: against pattern -- ^(?\d+): (?.*)$ error:no_sample_log:no sample logs provided, all formats must have samples error:init.sql:2:near "TALE": syntax error EOF run_test ${lnav_test} -n \ -I ${test_dir} \ -c ";select * from leveltest_log" \ -c ':write-csv-to -' \ ${test_dir}/logfile_leveltest.0 check_output "levels are not correct?" <,2016-06-30 12:00:01.000,0,trace,0 1,,2016-06-30 12:00:02.000,1000,debug,0 2,,2016-06-30 12:00:03.000,1000,debug2,0 3,,2016-06-30 12:00:04.000,1000,debug3,0 4,,2016-06-30 12:00:05.000,1000,info,0 5,,2016-06-30 12:00:06.000,1000,warning,0 6,,2016-06-30 12:00:07.000,1000,fatal,0 7,,2016-06-30 12:00:08.000,1000,info,0 EOF lnav-0.8.2/test/test_grep_proc.sh000664 000765 000024 00000001511 12477462531 017276 0ustar00stackstaff000000 000000 #! /bin/bash cat > gp.dat </dev/null } run_test grep_slice 'Hello' gp.dat check_output "grep_proc didn't find the right match?" < #include #include #include #include #include "grep_proc.hh" using namespace std; static struct { int l_number; const char *l_value; } MS_LINES[] = { { 10, "" }, { 11, "" }, { 12, "" }, { 13, "" }, { 0, "" }, { 1, "" }, { 2, "" }, }; class my_source : public grep_proc_source { public: my_source() : ms_current_line(0) { }; bool grep_value_for_line(int line_number, string &value_out) { bool retval = true; assert(line_number == MS_LINES[this->ms_current_line].l_number); value_out = MS_LINES[this->ms_current_line].l_value; this->ms_current_line += 1; return retval; }; int ms_current_line; }; class my_sleeper_source : public grep_proc_source { bool grep_value_for_line(int line_number, string &value_out) { sleep(1000); return true; }; }; class my_sink : public grep_proc_sink { public: my_sink() : ms_finished(false) { }; void grep_match(grep_proc &gp, grep_line_t line, int start, int end) { }; void grep_end(grep_proc &gp) { this->ms_finished = true; }; bool ms_finished; }; static void looper(grep_proc &gp) { my_sink msink; gp.set_sink(&msink); while (!msink.ms_finished) { vector pollfds; gp.update_poll_set(pollfds); poll(&pollfds[0], pollfds.size(), -1); gp.check_poll_set(pollfds); } } int main(int argc, char *argv[]) { int eoff, retval = EXIT_SUCCESS; const char *errptr; pcre *code; code = pcre_compile("foobar", PCRE_CASELESS, &errptr, &eoff, NULL); pcre_refcount(code, 1); assert(code != NULL); { my_source ms; grep_proc gp(code, ms); gp.queue_request(grep_line_t(10), grep_line_t(14)); gp.queue_request(grep_line_t(0), grep_line_t(3)); gp.start(); looper(gp); } { my_sleeper_source mss; grep_proc *gp = new grep_proc(code, mss); int status; gp->queue_request(); gp->start(); assert(wait3(&status, WNOHANG, NULL) == 0); delete gp; assert(wait(&status) == -1); assert(errno == ECHILD); } free(code); return retval; } lnav-0.8.2/test/test_help_text_formatter.cc000664 000765 000024 00000005427 13065472263 021357 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include "lnav_config.hh" #include "help_text_formatter.hh" struct _lnav_config lnav_config; lnav_config_listener *lnav_config_listener::LISTENER_LIST; int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; static help_text ht = help_text( "regexp_replace", "Replace parts of a string that match a regular expression") .with_parameters( { {"str", "The string to perform replacements on"}, {"re", "The regular expression to match"}, {"repl", "The replacement string"}, }) .with_example( { ";SELECT regexp_replace('abbb bbbc', 'b+', '') AS res", "a c", }); { setenv("TERM", "ansi", 1); screen_curses sc; view_colors::init(); attr_line_t al; format_help_text_for_term(ht, 35, al); std::vector lines; al.split_lines(lines); line_range lr{0, 80}; int y = 0; for (auto &line : lines) { view_curses::mvwattrline(sc.get_window(), y++, 0, line, lr); } getch(); } return retval; } lnav-0.8.2/test/test_hist_source.cc000664 000765 000024 00000003601 12477462531 017622 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include "hist_source.hh" int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; hist_source hs; assert(hs.text_line_count() == 0); hs.add_value(1, bucket_type_t(1)); assert(hs.text_line_count() == 101); hs.add_value(2, bucket_type_t(1)); assert(hs.text_line_count() == 101); return retval; } lnav-0.8.2/test/test_json_format.sh000664 000765 000024 00000026616 13071625754 017653 0ustar00stackstaff000000 000000 #! /bin/bash lnav_test="${top_builddir}/src/lnav-test" run_test ${lnav_test} -n \ -I ${test_dir} \ ${test_dir}/logfile_json.json check_output "json log format is not working" <,2013-09-06 20:00:48.124,0,trace,0, 1,,2013-09-06 20:00:49.124,1000,info,0, 2,,2013-09-06 22:00:49.124,7200000,info,0,steve@example.com 4,,2013-09-06 22:00:59.124,10000,debug5,0, 5,,2013-09-06 22:00:59.124,0,debug4,0, 6,,2013-09-06 22:00:59.124,0,debug3,0, 7,,2013-09-06 22:00:59.124,0,debug2,0, 8,,2013-09-06 22:00:59.124,0,debug,0, 9,,2013-09-06 22:01:49.124,50000,stats,0, 10,,2013-09-06 22:01:49.124,0,warning,0, 11,,2013-09-06 22:01:49.124,0,error,0, 12,,2013-09-06 22:01:49.124,0,critical,0, 13,,2013-09-06 22:01:49.124,0,fatal,0, EOF run_test ${lnav_test} -n \ -I ${test_dir} \ ${test_dir}/logfile_json2.json check_output "timestamp-format not working" <,2013-09-06 20:00:49.124,0,info,0,com.exmaple.foo, 1,,2013-09-06 22:00:49.124,7200000,info,0,com.exmaple.foo,steve@example.com 3,,2013-09-06 22:01:49.124,60000,error,0,com.exmaple.foo, EOF run_test ${lnav_test} -n \ -I ${test_dir} \ -c ":goto 2" \ -c ":pipe-line-to sed -e 's/2013//g'" \ -c ":switch-to-view text" \ ${test_dir}/logfile_json.json check_output "pipe-line-to is not working" <,2013-09-06 20:00:48.124,0,trace,0, 2,,2013-09-06 20:00:49.124,1000,info,0, 4,,2013-09-06 22:00:49.124,7200000,info,0,steve@example.com 7,,2013-09-06 22:00:59.124,10000,debug5,0, 9,,2013-09-06 22:00:59.124,0,debug4,0, 11,,2013-09-06 22:00:59.124,0,debug3,0, 13,,2013-09-06 22:00:59.124,0,debug2,0, 15,,2013-09-06 22:00:59.124,0,debug,0, 17,,2013-09-06 22:01:49.124,50000,stats,0, 19,,2013-09-06 22:01:49.124,0,warning,0, 21,,2013-09-06 22:01:49.124,0,error,0, 23,,2013-09-06 22:01:49.124,0,critical,0, 25,,2013-09-06 22:01:49.124,0,fatal,0, EOF run_test ${lnav_test} -n \ -I ${test_dir} \ -c ":goto 4" \ -c ":pipe-line-to sed -e 's/2013//g'" \ -c ":switch-to-view text" \ ${test_dir}/logfile_nested_json.json check_output "pipe-line-to is not working" <,2017-03-24 20:06:26.240,0,info,0,1.1.1.1,GET,166,/example/uri/5,200 1,,2017-03-24 20:12:47.764,381524,critical,0,1.1.1.1,GET,166,/example/uri/5,500 2,,2017-03-24 20:15:31.694,163930,warning,0,1.1.1.1,GET,166,/example/uri/5,400 EOF lnav-0.8.2/test/test_json_op.sh000664 000765 000024 00000003224 12627174375 016773 0ustar00stackstaff000000 000000 #! /bin/bash run_test ./drive_json_op get "" < #include #include #include "json_ptr.hh" int main(int argc, const char *argv[]) { int32_t depth, index; { json_ptr jptr(""); depth = 0; index = -1; assert(jptr.at_index(depth, index)); } { json_ptr jptr("/"); depth = 0; index = -1; assert(!jptr.at_index(depth, index)); assert(jptr.expect_map(depth)); assert(jptr.at_index(depth, index)); } { json_ptr jptr("/foo/bar"); depth = 0; index = -1; assert(jptr.expect_map(depth)); assert(jptr.at_key(depth, "foo")); assert(jptr.expect_map(depth)); assert(jptr.at_key(depth, "bar")); assert(jptr.at_index(depth, index)); } } lnav-0.8.2/test/test_json_ptr_walk.sh000664 000765 000024 00000001566 12477462531 020204 0ustar00stackstaff000000 000000 #! /bin/bash run_test ./drive_json_ptr_walk < logfile_changed.0" \ -c ":rebuild" \ logfile_changed.0 check_error_output "line buffer cache flush" < lb.dat < lb-2.dat grep -b '$' lb-2.dat | cut -f 1 -d : > lb.index line_count=`wc -l lb-2.dat` run_test ./drive_line_buffer -i lb.index -n 10 lb-2.dat check_output "Random reads don't match input?" < #include #include #include #include "auto_fd.hh" #include "line_buffer.hh" static void single_line(const char *data, int lendiff) { line_buffer lb; line_value lv; auto_fd pi[2]; off_t off = 0; bool ret; assert(auto_fd::pipe(pi) == 0); log_perror(write(pi[1], data, strlen(data))); pi[1].reset(); lb.set_fd(pi[0]); ret = lb.read_line(off, lv); assert(ret); assert(off == (off_t)strlen(data)); assert(lv.lv_len == strlen(data) - lendiff); ret = lb.read_line(off, lv); assert(!ret); } int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; single_line("Dexter Morgan", 0); single_line("Rudy Morgan\n", 1); return retval; } lnav-0.8.2/test/test_listview.sh000664 000765 000024 00000002112 13065471463 017160 0ustar00stackstaff000000 000000 #! /bin/bash run_test ./scripty -n -e ${srcdir}/listview_output.0 -- \ ./drive_listview < /dev/null on_error_fail_with "listview output does not match?" run_test ./scripty -n -e ${srcdir}/listview_output.1 -- \ ./drive_listview -t 1 < /dev/null on_error_fail_with "listview didn't move down?" run_test ./scripty -n -e ${srcdir}/listview_output.2 -- \ ./drive_listview -l 1 < /dev/null on_error_fail_with "Listview didn't move right?" run_test ./scripty -n -e ${srcdir}/listview_output.3 -- \ ./drive_listview -t 1 -l 1 < /dev/null on_error_fail_with "Listview didn't move left and right?" run_test ./scripty -n -e ${srcdir}/listview_output.4 -- \ ./drive_listview -y 1 -r 50 < /dev/null on_error_fail_with "Listview doesn't start down one line?" run_test ./scripty -n -e ${srcdir}/listview_output.5 -- \ ./drive_listview -y 1 -r 50 -h -1 < /dev/null on_error_fail_with "Listview isn't shorter?" run_test ./scripty -n -e ${srcdir}/listview_output.6 -- \ ./drive_listview -y 1 -r 50 -h -1 -t 1 < /dev/null on_error_fail_with "Listview didn't move down (2)?" lnav-0.8.2/test/test_log_accel.cc000664 000765 000024 00000004442 12477462531 017207 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include "log_accel.hh" static int64_t SIMPLE_TEST_POINTS[] = { 90, 80, 40, 30, 20, 10, -1 }; static log_accel::direction_t SIMPLE_TEST_DIRS[] = { log_accel::A_STEADY, log_accel::A_DECEL, log_accel::A_STEADY, log_accel::A_STEADY, log_accel::A_STEADY, log_accel::A_STEADY, log_accel::A_STEADY, }; int main(int argc, char *argv[]) { for (int point = 0; SIMPLE_TEST_POINTS[point] != -1; point++) { log_accel la; for (int lpc = point; SIMPLE_TEST_POINTS[lpc] != -1; lpc++) { if (!la.add_point(SIMPLE_TEST_POINTS[lpc])) { break; } } assert(SIMPLE_TEST_DIRS[point] == la.get_direction()); } return EXIT_SUCCESS; }lnav-0.8.2/test/test_logfile.sh000664 000765 000024 00000023135 13044377034 016737 0ustar00stackstaff000000 000000 #! /bin/bash touch unreadable.log chmod ugo-r unreadable.log run_test ${lnav_test} -n unreadable.log sed -i "" -e "s|/.*/unreadable.log|unreadable.log|g" `test_err_filename` check_error_output "able to read an unreadable log file?" < logfile_syslog.1.gz run_test ./drive_logfile -t -f syslog_log logfile_syslog.1.gz check_output "Syslog timestamp incorrect for gzipped file?" < logfile_syslog.1.bz2 touch -t 200711030923 logfile_syslog.1.bz2 run_test ./drive_logfile -t -f syslog_log logfile_syslog.1.bz2 check_output "bzip2 file not loaded?" < #include #include #include #include "pcrepp.hh" int main(int argc, char *argv[]) { pcre_context_static<30> context; int retval = EXIT_SUCCESS; { pcrepp nomatch("nothing-to-match"); pcre_input pi("dummy"); assert(!nomatch.match(context, pi)); } { pcrepp match1("(\\w*)=(\\d+)"); pcre_input pi("a=1 b=2"); pcre_context::capture_t *cap; assert(match1.match(context, pi)); cap = context.all(); assert(cap->c_begin == 0); assert(cap->c_end == 3); assert((context.end() - context.begin()) == 2); assert(pi.get_substr(context.begin()) == "a"); assert(pi.get_substr(context.begin() + 1) == "1"); assert(pi.get_substr(context[1]) == "1"); assert(match1.match(context, pi)); assert((context.end() - context.begin()) == 2); assert(pi.get_substr(context.begin()) == "b"); assert(pi.get_substr(context.begin() + 1) == "2"); } { pcrepp match2(""); } { pcrepp match3("(?\\d+)(?\\w+)"); pcre_named_capture::iterator iter; const char *expected_names[] = { "var1", "var2", }; int index = 0; for (iter = match3.named_begin(); iter != match3.named_end(); ++iter, index++) { assert(strcmp(iter->pnc_name, expected_names[index]) == 0); } assert(match3.name_index("var2") == 1); pcre_input pi("123foo"); match3.match(context, pi); assert(pi.get_substr(context["var1"]) == "123"); } { pcre_context::capture cap(1, 4); pcre_input pi("\0foo", 0, 4); assert("foo" == pi.get_substr(&cap)); } const char *empty_cap_regexes[] = { "foo (?:bar)", "foo [(]", "foo \\Q(bar)\\E", "(?i)", NULL }; for (int lpc = 0; empty_cap_regexes[lpc]; lpc++) { pcrepp re(empty_cap_regexes[lpc]); assert(re.captures().empty()); } { pcrepp re("foo (bar (?:baz)?)"); assert(re.captures().size() == 1); assert(re.captures()[0].c_begin == 4); assert(re.captures()[0].c_end == 18); assert(re.captures()[0].length() == 14); } { pcrepp re("(a)(b)(c)"); assert(re.captures().size() == 3); assert(re.captures()[0].c_begin == 0); assert(re.captures()[0].c_end == 3); assert(re.captures()[1].c_begin == 3); assert(re.captures()[1].c_end == 6); assert(re.captures()[2].c_begin == 6); assert(re.captures()[2].c_end == 9); } { pcrepp re("\\(a\\)(b)"); assert(re.captures().size() == 1); assert(re.captures()[0].c_begin == 5); assert(re.captures()[0].c_end == 8); } { pcrepp re("(?b)"); assert(re.captures().size() == 1); assert(re.captures()[0].c_begin == 0); assert(re.captures()[0].c_end == 11); } { pcrepp re("(?Pb)"); assert(re.captures().size() == 1); assert(re.captures()[0].c_begin == 0); assert(re.captures()[0].c_end == 12); } { pcrepp re("(?'named'b)"); assert(re.captures().size() == 1); assert(re.captures()[0].c_begin == 0); assert(re.captures()[0].c_end == 11); } return retval; } lnav-0.8.2/test/test_pretty_print.sh000664 000765 000024 00000002540 13044377034 020056 0ustar00stackstaff000000 000000 #! /bin/bash echo '2015-04-18T13:16:30.003 8.8.8.8 8.8.8.89 8.8.8.8<1054 198.51.100.1546 544.9.8.7 98.542.241.99 19143.2.5.6' | \ run_test ${lnav_test} -n -c ":switch-to-view pretty" check_output "pretty print not able to properly grok ipv4?" <8.8.8.8 (google-public-dns-a.google.com) 9 8.8.8.8 (google-public-dns-a.google.com)<1054 198.51.100.1546 544.9.8.7 98.542.241.99 19143.2.5.6 EOF cat < #include "relative_time.hh" static struct { const char *reltime; const char *expected; } TEST_DATA[] = { { "a minute ago", "0y0m0d0h-1m0s0u" }, { "1m ago", "0y0m0d0h-1m0s0u" }, { "a min ago", "0y0m0d0h-1m0s0u" }, { "a m ago", "0y0m0d0h-1m0s0u" }, { "+1 minute ago", "0y0m0d0h-1m0s0u" }, { "-1 minute ago", "0y0m0d0h-1m0s0u" }, { "-1 minute", "0y0m0d0h-1m0s0u" }, { "1:40", "0y0m0d1H40M0S0U" }, { "01:40", "0y0m0d1H40M0S0U" }, { "1h40m", "0y0m0d1h40m0s0u" }, { "1pm", "0y0m0d13H0M0S0U" }, { NULL, NULL } }; static struct { const char *reltime; const char *expected_error; } BAD_TEST_DATA[] = { { "ago", "" }, { "minute", "" }, { "1 2", "" }, { NULL, NULL } }; int main(int argc, char *argv[]) { time_t base_time = 1317913200; struct exttm base_tm; base_tm.et_tm = *gmtime(&base_time); struct relative_time::parse_error pe; struct timeval tv; struct exttm tm, tm2; time_t new_time; relative_time rt; for (int lpc = 0; TEST_DATA[lpc].reltime; lpc++) { bool rc; rt.clear(); rc = rt.parse(TEST_DATA[lpc].reltime, pe); printf("%s %s %s\n", TEST_DATA[lpc].reltime, TEST_DATA[lpc].expected, rt.to_string().c_str()); assert(rc); assert(std::string(TEST_DATA[lpc].expected) == rt.to_string()); } for (int lpc = 0; BAD_TEST_DATA[lpc].reltime; lpc++) { bool rc; rt.clear(); rc = rt.parse(BAD_TEST_DATA[lpc].reltime, pe); printf("%s -- %s\n", BAD_TEST_DATA[lpc].reltime, pe.pe_msg.c_str()); assert(!rc); } rt.parse("a minute ago", pe); assert(rt.rt_field[relative_time::RTF_MINUTES] == -1); rt.parse("5 milliseconds", pe); assert(rt.rt_field[relative_time::RTF_MICROSECONDS] == 5 * 1000); rt.clear(); rt.parse("5000 ms ago", pe); assert(rt.rt_field[relative_time::RTF_SECONDS] == -5); rt.clear(); rt.parse("5 hours 20 minutes ago", pe); assert(rt.rt_field[relative_time::RTF_HOURS] == -5); assert(rt.rt_field[relative_time::RTF_MINUTES] == -20); rt.clear(); rt.parse("5 hours and 20 minutes ago", pe); assert(rt.rt_field[relative_time::RTF_HOURS] == -5); assert(rt.rt_field[relative_time::RTF_MINUTES] == -20); rt.clear(); rt.parse("1:23", pe); assert(rt.rt_field[relative_time::RTF_HOURS] == 1); assert(rt.rt_is_absolute[relative_time::RTF_HOURS]); assert(rt.rt_field[relative_time::RTF_MINUTES] == 23); assert(rt.rt_is_absolute[relative_time::RTF_MINUTES]); rt.clear(); rt.parse("1:23:45", pe); assert(rt.rt_field[relative_time::RTF_HOURS] == 1); assert(rt.rt_is_absolute[relative_time::RTF_HOURS]); assert(rt.rt_field[relative_time::RTF_MINUTES] == 23); assert(rt.rt_is_absolute[relative_time::RTF_MINUTES]); assert(rt.rt_field[relative_time::RTF_SECONDS] == 45); assert(rt.rt_is_absolute[relative_time::RTF_SECONDS]); tm = base_tm; rt.add(tm); new_time = timegm(&tm.et_tm); tm.et_tm = *gmtime(&new_time); assert(tm.et_tm.tm_hour == 1); assert(tm.et_tm.tm_min == 23); rt.clear(); rt.parse("5 minutes ago", pe); tm = base_tm; rt.add(tm); new_time = timegm(&tm.et_tm); assert(new_time == (base_time - (5 * 60))); rt.clear(); rt.parse("today at 4pm", pe); memset(&tm, 0, sizeof(tm)); memset(&tm2, 0, sizeof(tm2)); gettimeofday(&tv, NULL); localtime_r(&tv.tv_sec, &tm2.et_tm); tm2.et_tm.tm_hour = 16; tm2.et_tm.tm_min = 0; tm2.et_tm.tm_sec = 0; rt.add(tm); tm.et_tm.tm_yday = 0; tm2.et_tm.tm_yday = 0; tm.et_tm.tm_wday = 0; tm2.et_tm.tm_wday = 0; #ifdef HAVE_STRUCT_TM_TM_ZONE tm2.et_tm.tm_gmtoff = 0; tm2.et_tm.tm_zone = NULL; #endif assert(tm.et_tm.tm_year == tm2.et_tm.tm_year); assert(tm.et_tm.tm_mon == tm2.et_tm.tm_mon); assert(tm.et_tm.tm_mday == tm2.et_tm.tm_mday); assert(tm.et_tm.tm_hour == tm2.et_tm.tm_hour); assert(tm.et_tm.tm_min == tm2.et_tm.tm_min); assert(tm.et_tm.tm_sec == tm2.et_tm.tm_sec); rt.clear(); rt.parse("yesterday at 4pm", pe); gettimeofday(&tv, NULL); localtime_r(&tv.tv_sec, &tm2.et_tm); tm2.et_tm.tm_mday -= 1; tm2.et_tm.tm_hour = 16; tm2.et_tm.tm_min = 0; tm2.et_tm.tm_sec = 0; rt.add(tm); tm.et_tm.tm_yday = 0; tm2.et_tm.tm_yday = 0; tm.et_tm.tm_wday = 0; tm2.et_tm.tm_wday = 0; #ifdef HAVE_STRUCT_TM_TM_ZONE tm2.et_tm.tm_gmtoff = 0; tm2.et_tm.tm_zone = NULL; #endif assert(tm.et_tm.tm_year == tm2.et_tm.tm_year); assert(tm.et_tm.tm_mon == tm2.et_tm.tm_mon); assert(tm.et_tm.tm_mday == tm2.et_tm.tm_mday); assert(tm.et_tm.tm_hour == tm2.et_tm.tm_hour); assert(tm.et_tm.tm_min == tm2.et_tm.tm_min); assert(tm.et_tm.tm_sec == tm2.et_tm.tm_sec); } lnav-0.8.2/test/test_scripts.sh000644 000765 000024 00000000515 12667036110 016775 0ustar00stackstaff000000 000000 #! /bin/bash lnav_test="${top_builddir}/src/lnav-test" touch scripts-empty run_test ${lnav_test} -n -d /tmp/lnav.err \ -I ${test_dir} \ -f 'multiline-echo' \ scripts-empty check_error_output "multiline-echo has errors?" < 60000" \ -c ":goto 1" \ -c ":partition-name middle" \ -c ":save-session" \ ${test_dir}/logfile_access_log.0 check_output "setting log_mark is not working" < 1,middle 2,middle EOF run_test ${lnav_test} -nq \ -c ":adjust-log-time 2010-01-01T00:00:00" \ -c ":save-session" \ ${test_dir}/logfile_access_log.0 check_output "adjust time is not working" < 100000' \ -c ':switch-to-view db' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" < -100000' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" < -10000' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" <= 0' \ -c ':switch-to-view db' \ ${test_dir}/logfile_access_log.0 check_output "range query failed?" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";update access_log set log_part = 'middle' where log_line = 1" \ -c ";update access_log set log_part = NULL where log_line = 1" \ -c ';select * from access_log' \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_part is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";update access_log set log_part = 'middle' where log_line = 1" \ -c ";update access_log set log_part = NULL where log_line = 2" \ -c ';select * from access_log' \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_part is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -I "${top_srcdir}/test" \ -c ";select * from web_status" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "access_log table is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";select * from access_log where log_level >= 'warning'" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "loglevel collator is not working" <,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 EOF run_test ${lnav_test} -n \ -c ":goto 0" \ -c ";select log_line from access_log where log_level >= 'warning'" \ -c ":switch-to-view log" \ -c ":next-mark query" \ ${test_dir}/logfile_access_log.0 check_output "query bookmark not working?" <,2013-11-03 09:23:38.000,0,error,0,veridian,7998,automount 1,,2013-11-03 09:23:38.000,0,info,0,veridian,16442,automount 2,,2013-11-03 09:23:38.000,0,error,0,veridian,7999,automount 3,,2013-11-03 09:47:02.000,1404000,info,0,veridian,,sudo EOF run_test ${lnav_test} -n \ -c ";select * from syslog_log where log_time >= datetime('2013-11-03T09:47:02.000')" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.0 check_output "log_time collation is wrong" <,2013-11-03 09:47:02.000,1404000,info,0,veridian,,sudo EOF run_test ${lnav_test} -n \ -c ':filter-in sudo' \ -c ";select * from logline" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.0 check_output "logline table is not working" <,2013-11-03 09:47:02.000,0,info,0,veridian,,sudo,0,timstack,pts/6,/auto/wstimstack/rpms/lbuild/test,root,/usr/bin/tail /var/log/messages EOF run_test ${lnav_test} -n \ -c ':goto 1' \ -c ";select * from logline" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.1 check_output "logline table is not working" <,2006-12-03 09:23:38.000,0,info,0,veridian,16442,automount,0,/auto/opt EOF run_test ${lnav_test} -n \ -c ";select sc_bytes from logline" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "logline table is not working for defined columns" < 60000" \ -c ':write-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_mark is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ":goto 1" \ -c ":partition-name middle" \ -c ":clear-partition" \ -c ";select * from access_log" \ -c ":write-csv-to -" \ ${test_dir}/logfile_access_log.0 check_output "clear-partition does not work" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ":goto 1" \ -c ":partition-name middle" \ -c ":goto 2" \ -c ":clear-partition" \ -c ";select * from access_log" \ -c ":write-csv-to -" \ ${test_dir}/logfile_access_log.0 check_output "clear-partition does not work when in the middle of a part" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";SELECT * FROM openam_log" \ -c ":write-json-to -" \ ${test_dir}/logfile_openam.0 check_output "" <http://openam.vagrant.dev/openam\\\\n\\\\n\\\\n\\\\nhttp://openam.vagrant.dev/openam\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n4uSmVzjovUdQd3px/RcnoxQBsqE=\\\\n\\\\n\\\\n\\\\nhm/grge36uA6j1OWif2bTcvVTwESjmuJa27NxepW0AiV5YlcsHDl7RAIk6k/CjsSero3bxGbm56m\\\\nYncOEi9F1Tu7dS0bfx+vhm/kKTPgwZctf4GWn4qQwP+KeoZywbNj9ShsYJ+zPKzXwN4xBSuPjMxP\\\\nNf5szzjEWpOndQO/uDs=\\\\n\\\\n\\\\n\\\\n\\\\nMIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh\\\\nbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w\\\\nZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw\\\\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK\\\\nBgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B\\\\nAQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+\\\\nRkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY\\\\nJs0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U\\\\nQzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA\\\\ncGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC\\\\n/FfwWigmrW0Y0Q==\\\\n\\\\n\\\\n\\\\n\\\\nuser@example.com\\\\n\\\\n\\\\n\\\\nhttp://localhost:8086\\\\n\\\\n\\\\nurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", "domain": "dc=openam", "hostname": "192.168.33.1\t", "ipaddr": "Not Available", "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam", "loginid": "id=openamuser,ou=user,dc=openam", "messageid": "SAML2-37", "modulename": "SAML2.access", "nameid": "user@example.com" }, { "log_line": 1, "log_part": null, "log_time": "2014-06-15 01:04:52.000", "log_idle_msecs": 0, "log_level": "trace", "log_mark": 0, "contextid": "ec5708a7f199678a01", "data": "vagrant|/", "domain": "dc=openam", "hostname": "127.0.1.1\t", "ipaddr": "Not Available", "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam", "loginid": "cn=dsameuser,ou=DSAME Users,dc=openam", "messageid": "COT-22", "modulename": "COT.access", "nameid": "Not Available" } ] EOF run_test ${lnav_test} -d "/tmp/lnav.err" -n \ -c ";select log_line, log_msg_instance, col_0 from logline" \ ${test_dir}/logfile_for_join.0 check_output "log msg instance is not working" < 4" \ ${test_dir}/logfile_for_join.0 check_output "log msg instance is not working" < 2017-11-03 09:23:38.000 0 error 0 veridian 7998 automount 1 2017-11-03 09:23:38.000 0 info 0 veridian 16442 automount 2 2017-11-03 09:23:38.000 0 error 0 veridian 7999 automount EOF cat ${test_dir}/logfile_syslog.0 | run_test ${lnav_test} -n \ -c ";select * from syslog_log where log_procname = 'sudo'" check_output "single result is not working?" < 2017-11-03 09:47:02.000 1404000 info 0 veridian sudo EOF # Create a dummy database for the next couple of tests to consume. touch empty run_test ${lnav_test} -n \ -c ";ATTACH DATABASE 'simple-db.db' as 'db'" \ -c ";CREATE TABLE IF NOT EXISTS db.person ( id integer PRIMARY KEY, first_name text, last_name, age integer )" \ -c ";INSERT INTO db.person(id, first_name, last_name, age) VALUES (0, 'Phil', 'Myman', 30)" \ -c ";INSERT INTO db.person(id, first_name, last_name, age) VALUES (1, 'Lem', 'Hewitt', 35)" \ -c ";DETACH DATABASE 'db'" \ empty check_output "Could not create db?" <,2015-03-24 14:02:50.000,6927348000,info,0,127.0.0.1,GET,,,/includes/js/combined-javascript.js,,-,HTTP/1.1,65508,200 EOF run_test ${lnav_test} -n \ -c ";select log_text from generic_log" \ -c ":write-json-to -" \ ${test_dir}/logfile_multiline.0 check_output "multiline data is not right?" < 0" \ -c ":write-csv-to -" \ ${test_dir}/logfile_multiline.0 check_output "create-search-table is not working with where clause?" <\w+), World!" \ -c ";select word, typeof(word) from search_test1" \ -c ":write-csv-to -" \ ${test_dir}/logfile_multiline.0 check_output "create-search-table is not working?" <\d+)" \ -c ";select typeof(ethnum) from search_test1" \ -c ":write-csv-to -" \ ${test_dir}/logfile_syslog.2 check_output "regex type guessing is not working?" < EOF run_test ${lnav_test} -n \ -c ";SELECT regexp_capture.content FROM access_log, regexp_capture(access_log.cs_version, 'HTTP/(\d+\.\d+)') WHERE regexp_capture.capture_index = 1" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "joining log table with regexp_capture is not working?" < '' collate ipaddress" check_output "" < '' collate ipaddress: 1 EOF run_test ./drive_sql "select '192.168.1.2' < 'fe80::a85f:80b4:5cbe:8691' collate ipaddress" check_output "" <\w+); (\w+)', 'foo=abc; 123') as result" check_output "" <\w+); (\w+\.\w+)', 'foo=abc; 123.456') as result" check_output "" <\w+)')" check_output "" <\w+)')" check_output "" < #include #include "lnav_config.hh" #include "top_status_source.hh" using namespace std; static time_t current_time = 1; time_t time(time_t *arg) { if (arg != NULL) *arg = current_time; return current_time; } string execute_any(exec_context &ec, const string &cmdline_with_mode) { return ""; } int main(int argc, char *argv[]) { int retval = EXIT_SUCCESS; top_status_source tss; setenv("HOME", "/", 1); vector paths, errors; load_config(paths, errors); { status_field &sf = tss. statusview_value_for_field(top_status_source::TSF_TIME); attr_line_t val; tss.update_time(); val = sf.get_value(); assert(val.get_string() == sf.get_value().get_string()); current_time += 2; tss.update_time(); assert(val.get_string() != sf.get_value().get_string()); lnav_config.lc_ui_clock_format = "abc"; tss.update_time(); val = sf.get_value(); assert(val.get_string() == " abc"); } return retval; } lnav-0.8.2/test/test_view_colors.sh000664 000765 000024 00000000231 12477462531 017647 0ustar00stackstaff000000 000000 #! /bin/bash run_test ./scripty -n -e ${srcdir}/view_colors_output.0 -- \ ./drive_view_colors < /dev/null on_error_fail_with "view colors are wrong?" lnav-0.8.2/test/test_vt52_curses.sh000664 000765 000024 00000000605 12477462531 017505 0ustar00stackstaff000000 000000 #! /bin/bash run_test ./scripty -n -r ${srcdir}/vt52_curses_input.0 \ -e ${srcdir}/vt52_curses_output.0 -- ./drive_vt52_curses < /dev/null on_error_fail_with "single line vt52 did not work?" run_test ./scripty -n -r ${srcdir}/vt52_curses_input.1 \ -e ${srcdir}/vt52_curses_output.1 -- ./drive_vt52_curses -y 5 < /dev/null on_error_fail_with "vt52 doesn't maintain past lines?" lnav-0.8.2/test/test_yajlpp.cc000664 000765 000024 00000004543 12477462531 016600 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file test_yajlpp.cc */ #include "config.h" #include #include #include "yajlpp.hh" const char *TEST_DATA = "[{ \"foo\": 0 }, { \"foo\": 1 }]"; static int FOO_COUNT = 0; static int read_foo(yajlpp_parse_context *ypc, long long value) { assert(value == FOO_COUNT); assert(ypc->ypc_array_index.back() == FOO_COUNT); FOO_COUNT += 1; return 1; } int main(int argc, char *argv[]) { struct json_path_handler test_handlers[] = { json_path_handler("#/foo", read_foo), json_path_handler() }; yajlpp_parse_context ypc("test_data", test_handlers); yajl_handle handle; handle = yajl_alloc(&ypc.ypc_callbacks, NULL, &ypc); yajl_parse(handle, (const unsigned char *)TEST_DATA, strlen(TEST_DATA)); yajl_complete_parse(handle); yajl_free(handle); assert(FOO_COUNT == 2); } lnav-0.8.2/test/textfile_json_indented.0000644 000765 000024 00000000152 12564775454 020541 0ustar00stackstaff000000 000000 { "foo bar": null, "array": [ 1, 2, 3 ], "obj": { "one": 1, "two": true } } lnav-0.8.2/test/textfile_json_one_line.0000644 000765 000024 00000000117 12564775253 020535 0ustar00stackstaff000000 000000 { "foo bar" : null, "array" : [1, 2, 3], "obj" : { "one" : 1, "two" : true } } lnav-0.8.2/test/textfile_quoted_json.0000644 000765 000024 00000000121 12567510633 020231 0ustar00stackstaff000000 000000 '{ "foo bar" : null, "array" : [1, 2, 3], "obj" : { "one" : 1, "two" : true } }' lnav-0.8.2/test/toplevel.lnav000644 000765 000024 00000000066 12637320332 016427 0ustar00stackstaff000000 000000 :eval :echo toplevel here $1 $2 |nested.lnav abc $3 lnav-0.8.2/test/view_colors_output.0000664 000765 000024 00000013632 13044377034 017760 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b6d1b5b6d1b5b33376d1b5b34306d1b5b313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b343b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b353b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b363b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b373b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b383b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b393b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31303b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31343b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31353b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31363b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31373b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31383b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b31393b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32303b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32313b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32323b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32333b314820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b5b32343b3148202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200820081b5b3468201b5b346c1b5b481b5b33326d1b5b34376d54686973206973206c696e653a2030202020202020202020202020202020202020202020202020200d0a1b5b33346d1b5b34306d54686973206973206c696e653a2031202020202020202020202020202020202020202020202020200d0a1b5b33326d1b5b34306d54686973206973206c696e653a2032202020202020202020202020202020202020202020202020200d0a1b5b33346d1b5b34376d54686973206973206c696e653a2033202020202020202020202020202020202020202020202020200d0a1b5b33356d1b5b34376d54686973206973206c696e653a2034202020202020202020202020202020202020202020202020200d0a1b5b33366d1b5b34306d54686973206973206c696e653a2035202020202020202020202020202020202020202020202020200d0a1b5b33356d1b5b34306d54686973206973206c696e653a2036202020202020202020202020202020202020202020202020200d0a1b5b33366d1b5b34306d54686973206973206c696e653a2037202020202020202020202020202020202020202020202020200d0a1b5b33346d1b5b34376d54686973206973206c696e653a2038202020202020202020202020202020202020202020202020200d0a1b5b33326d1b5b34306d54686973206973206c696e653a2039202020202020202020202020202020202020202020202020200d0a1b5b33356d1b5b34306d54686973206973206c696e653a2031302020202020202020202020202020202020202020202020200d0a1b5b33366d1b5b34306d54686973206973206c696e653a2031312020202020202020202020202020202020202020202020200d0a1b5b33356d1b5b34376d54686973206973206c696e653a2031322020202020202020202020202020202020202020202020200d0a1b5b33366d1b5b34306d54686973206973206c696e653a2031332020202020202020202020202020202020202020202020200d0a1b5b33326d1b5b34306d54686973206973206c696e653a2031342020202020202020202020202020202020202020202020200d0a1b5b33346d1b5b34376d54686973206973206c696e653a2031352020202020202020202020202020202020202020202020200d1b5b6d1b5b6d1b5b33376d1b5b34306d1b5b6d1b5b38421b5b4b1b5b32343b31481b5b324a1b5b3f34376c1b380d1b5b3f316c1b3e lnav-0.8.2/test/vt52_curses_input.0000664 000765 000024 00000000710 12477462531 017407 0ustar00stackstaff000000 000000 sleep 2.051763 write 31 sleep 0.311858 write 32 sleep 0.295852 write 33 sleep 0.319916 write 34 sleep 0.327742 write 35 sleep 0.328183 write 36 sleep 0.335896 write 37 sleep 0.360085 write 38 sleep 0.336000 write 39 sleep 0.376058 write 30 sleep 0.840149 write 61 sleep 0.783892 write 62 sleep 0.415990 write 63 sleep 0.280001 write 64 sleep 0.191901 write 65 sleep 0.295949 write 66 sleep 0.775841 write 67 sleep 0.399883 write 68 sleep 0.304016 write 69 lnav-0.8.2/test/vt52_curses_input.1000664 000765 000024 00000000710 12477462531 017410 0ustar00stackstaff000000 000000 sleep 1.124207 write 31 sleep 0.295830 write 32 sleep 0.487919 write 33 sleep 0.343913 write 34 sleep 0.303816 write 35 sleep 0.343703 write 36 sleep 0.295997 write 37 sleep 0.327862 write 38 sleep 0.295952 write 39 sleep 0.247670 write 30 sleep 0.911859 write 61 sleep 0.311780 write 62 sleep 0.407914 write 63 sleep 0.319836 write 64 sleep 0.199866 write 65 sleep 0.327904 write 66 sleep 0.359919 write 67 sleep 0.343907 write 68 sleep 0.288008 write 69 lnav-0.8.2/test/vt52_curses_output.0000664 000765 000024 00000000667 12477462531 017623 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a616263 # write 31 read 0d # write 32 read 1b5b4a # write 33 read 6465 # write 34 read 0d1b5b4a # write 35 read # write 36 read # write 37 read # write 38 read # write 39 read # write 30 read # write 61 read # write 62 read # write 63 read # write 64 read 616263 # write 65 read 0d1b5b4a # write 66 read 07 # write 67 read 6163646566 # write 68 read # write 69 lnav-0.8.2/test/vt52_curses_output.1000664 000765 000024 00000001313 12477462531 017611 0ustar00stackstaff000000 000000 read 1b29301b371b5b3f3437681b5b313b3234721b5b6d1b5b346c1b5b481b5b324a1b5b3542616263 # write 31 read 0d # write 32 read 1b5b4a # write 33 read 6465 # write 34 read 0d1b5b3138420a1b5b313841 # write 35 read 1b5b3138420a1b5b313941310a08 # write 36 read 1b5b3138420a1b5b313941320a08 # write 37 read 1b5b3138420a1b5b313941330a08 # write 38 read 1b5b3138420a1b5b313941340a08 # write 39 read 1b5b3138420a1b5b313941350a08 # write 30 read 1b5b3138420a1b5b313941360a08 # write 61 read 1b5b3138420a1b5b313941370a08 # write 62 read 1b5b3138420a1b5b313941380a08 # write 63 read 1b5b3138420a1b5b313941390a08 # write 64 read 616263 # write 65 read 0d1b5b4a # write 66 read 07 # write 67 read 6163646566 # write 68 read # write 69 lnav-0.8.2/test/log-samples/sample-27353a72ba4025448f261dcfa6ea16e474187795.txt000664 000765 000024 00000005662 12710577123 025337 0ustar00stackstaff000000 000000 Jun 3 07:00:23 Tim-Stacks-iMac.local sudo[2326]: stack : TTY=ttys002 ; PWD=/ ; USER=root ; COMMAND=/bin/ls key 53:53 ^ word 53:58 ^---^ stack val 53:58 ^---^ stack pair 53:58 ^---^ stack key 61:64 ^-^ TTY sym 65:72 ^-----^ ttys002 val 65:72 ^-----^ ttys002 pair 61:72 ^---------^ TTY=ttys002 key 75:78 ^-^ PWD path 79:80 ^ / val 79:80 ^ / pair 75:80 ^---^ PWD=/ key 83:87 ^--^ USER word 88:92 ^--^ root val 88:92 ^--^ root pair 83:92 ^-------^ USER=root key 95:102 ^-----^ COMMAND path 103:110 ^-----^ /bin/ls val 103:110 ^-----^ /bin/ls pair 95:110 ^-------------^ COMMAND=/bin/ls msg : stack : TTY=ttys002 ; PWD=/ ; USER=root ; COMMAND=/bin/ls format : # : TTY=# ; PWD=# ; USER=# ; COMMAND=# { "col_0": "stack", "TTY": "ttys002", "PWD": "/", "USER": "root", "COMMAND": "/bin/ls" } lnav-0.8.2/test/log-samples/sample-70c906b3c1a1cf03f15bde92ee78edfa6f9b7960.txt000664 000765 000024 00000010066 12710577146 026061 0ustar00stackstaff000000 000000 Jun 3 07:02:37 Tim-Stacks-iMac.local sudo[2717]: stack : TTY=ttys002 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/env VAR1=foo ls key 53:53 ^ word 53:58 ^---^ stack val 53:58 ^---^ stack pair 53:58 ^---^ stack key 61:64 ^-^ TTY sym 65:72 ^-----^ ttys002 val 65:72 ^-----^ ttys002 pair 61:72 ^---------^ TTY=ttys002 key 75:78 ^-^ PWD path 79:80 ^ / val 79:80 ^ / pair 75:80 ^---^ PWD=/ key 83:87 ^--^ USER word 88:92 ^--^ root val 88:92 ^--^ root pair 83:92 ^-------^ USER=root key 95:102 ^-----^ COMMAND path 103:115 ^----------^ /usr/bin/env wspc 115:116 ^ sym 116:120 ^--^ VAR1 word 121:124 ^-^ foo wspc 124:125 ^ word 125:127 ^^ ls val 103:127 ^----------------------^ /usr/bin/env VAR1=foo ls pair 95:127 ^------------------------------^ COMMAND=/usr/bin/env VAR1=foo ls msg : stack : TTY=ttys002 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/env VAR1=foo ls format : # : TTY=# ; PWD=# ; USER=# ; COMMAND=# { "col_0": "stack", "TTY": "ttys002", "PWD": "/", "USER": "root", "COMMAND": "/usr/bin/env VAR1=foo ls" } lnav-0.8.2/test/log-samples/sample-ad31f12d2adabd07e3ddda3ad5b0dbf6b49c4c99.txt000664 000765 000024 00000004177 12710577160 026407 0ustar00stackstaff000000 000000 Jun 2 00:34:32 Tim-Stacks-iMac kernel[0]: vmnet: VNetUserIf_Create: created userIf at 0xffffff802644f400. key 43:48 ^---^ vmnet quot 49:49 ^ val 49:49 ^ pair 43:49 ^----^ vmnet: key 50:67 ^---------------^ VNetUserIf_Create word 69:76 ^-----^ created wspc 76:77 ^ sym 77:83 ^----^ userIf wspc 83:84 ^ word 84:86 ^^ at wspc 86:87 ^ hex 87:105 ^----------------^ 0xffffff802644f400 val 69:105 ^----------------------------------^ created userIf at 0xffffff802644f400 pair 50:105 ^-----------------------------------------------------^ VNetUserIf_Create: created userIf at 0xffffff802644f400 msg : vmnet: VNetUserIf_Create: created userIf at 0xffffff802644f400. format : vmnet:# VNetUserIf_Create: # { "vmnet": "", "VNetUserIf_Create": "created userIf at 0xffffff802644f400" } lnav-0.8.2/test/formats/collision/000775 000765 000024 00000000000 13073703477 017373 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/customlevel/000775 000765 000024 00000000000 13073703477 017742 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/jsontest/000775 000765 000024 00000000000 13073703477 017251 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/jsontest2/000775 000765 000024 00000000000 13073703477 017333 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/jsontest3/000775 000765 000024 00000000000 13073703477 017334 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/nestedjson/000775 000765 000024 00000000000 13073703477 017554 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/scripts/000775 000765 000024 00000000000 13073703477 017067 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/sqldir/000775 000765 000024 00000000000 13073703477 016676 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/timestamp/000775 000765 000024 00000000000 13073703477 017403 5ustar00stackstaff000000 000000 lnav-0.8.2/test/formats/timestamp/format.json000664 000765 000024 00000001034 13044377034 021556 0ustar00stackstaff000000 000000 { "epoch_log": { "title": "epoch timestamp test", "regex": { "std": { "pattern": "^(?\\d+) (?.*)$" }, "non_epoch": { "pattern": "^(?\\d+-\\d+-\\d+ \\d+:\\d+:\\d+\\.\\d+) (?.*)$" } }, "timestamp-format" : [ "%i", "%Y-%m-%d %H:%M:%S.%f" ], "sample": [ { "line": "1428634687123 Hello, World!" } ] } } lnav-0.8.2/test/formats/sqldir/init.sql000644 000765 000024 00000000155 12625766603 020363 0ustar00stackstaff000000 000000 CREATE VIEW web_status AS SELECT group_concat(cs_uri_stem), sc_status FROM access_log group by sc_status; lnav-0.8.2/test/formats/scripts/multiline-echo.lnav000644 000765 000024 00000000106 13056645747 022670 0ustar00stackstaff000000 000000 ;SELECT 'World' as name :eval :echo Hello, ${name}! Goodbye, ${name}! lnav-0.8.2/test/formats/nestedjson/format.json000664 000765 000024 00000001156 12517151267 021736 0ustar00stackstaff000000 000000 { "ntest_log" : { "title" : "Test JSON Log", "json" : true, "file-pattern" : "logfile_nested_json\\.json", "description" : "Test config", "line-format" : [ { "field" : "ts" }, " ", { "field" : "@fields/lvl" }, " ", { "field" : "@fields/msg" } ], "level-field" : "@fields/lvl", "timestamp-field": "ts", "body-field" : "@fields/msg", "value" : { "@fields/user" : { "kind" : "string", "identifier" : true } } } } lnav-0.8.2/test/formats/jsontest3/format.json000644 000765 000024 00000003123 13071625606 021507 0ustar00stackstaff000000 000000 { "json_log3": { "title": "Test JSON Log Format", "description": "Test JSON Log Format", "file-pattern" : "logfile_json3\\.json", "json": true, "hide-extra": true, "line-format": [ { "field": "__timestamp__" }, " ", { "field": "client_ip" }, " ", { "field": "request/method" }, " ", { "field": "response/status" }, " ", { "field": "request/uri" } ], "value": { "started_at": { "kind": "integer", "identifier": true }, "client_ip": { "kind": "string", "identifier": true }, "request/method": { "kind": "string", "identifier": true }, "request/uri": { "kind": "string", "identifier": true }, "request/size": { "kind": "integer", "identifier": false, "hidden": true }, "response/status": { "kind": "string" } }, "timestamp-field" : "started_at", "timestamp-divisor" : 1000, "level-field": "response/status", "level": { "info": "2\\d+", "warning": "4\\d+", "critical": "5\\d+" } } } lnav-0.8.2/test/formats/jsontest2/format.json000664 000765 000024 00000001576 13044377034 021521 0ustar00stackstaff000000 000000 { "json_log2" : { "title" : "Test JSON Log with integer levels", "json" : true, "file-pattern" : "logfile_json2\\.json", "description" : "Test config", "line-format" : [ { "field" : "ts" }, " ", { "timestamp-format" : "abc %S def" }, " ", { "field" : "lvl", "min-width": 5 }, " ", { "field" : "cl", "max-width": 5}, " ", { "field" : "msg" } ], "level-field" : "lvl", "level" : { "info" : 0, "error" : 10 }, "timestamp-field": "ts", "body-field" : "msg", "value" : { "user" : { "kind" : "string", "identifier" : true }, "cl" : { "kind" : "string" } } } } lnav-0.8.2/test/formats/jsontest/format.json000664 000765 000024 00000001366 13044377034 021434 0ustar00stackstaff000000 000000 { "test_log" : { "title" : "Test JSON Log", "json" : true, "file-pattern" : "logfile_json\\.json", "description" : "Test config", "line-format" : [ { "field" : "ts" }, " ", { "field" : "lvl" }, " ", { "field" : "msg" } ], "level-field" : "lvl", "timestamp-field": "ts", "body-field" : "msg", "value" : { "user" : { "kind" : "string", "identifier" : true }, "msg" : { "rewriter" : ";SELECT :msg || 'bork bork bork'" }, "user" : { "rewriter" : "|rewrite-user" } } } } lnav-0.8.2/test/formats/jsontest/lnav-logstash.json000664 000765 000024 00000002441 13044377034 022721 0ustar00stackstaff000000 000000 { "logstash_dam": { "title" : "Logstash Java JSON", "url" : "https://github.com/logstash/logstash-logback-encoder", "description" : "Log format for DAM Logstash JSON", "json" : true, "hide-extra" : false, "file-pattern" : "\\.clog.*", "multiline": false, "line-format" : [ { "field" : "@timestamp" }, " ", { "field" : "ipaddress" }, " ", { "field" : "message" }, " ", { "field" : "stack_trace", "default-value" : "" } ], "timestamp-field" : "@timestamp", "body-field" : "message", "level-field" : "level", "level" : { "trace" : "TRACE", "debug" : "DEBUG", "info" : "INFO", "error" : "ERROR", "warning" : "WARN" }, "value" : { "logger_name" : { "kind" : "string", "identifier" : true }, "ipaddress" : { "kind" : "string", "identifier" : true }, "level_value" : { "hidden": true }, "stack_trace" : { "kind" : "string" } } } } lnav-0.8.2/test/formats/jsontest/rewrite-user.lnav000664 000765 000024 00000000034 13044377034 022557 0ustar00stackstaff000000 000000 ;SELECT 'mailto:' || :user lnav-0.8.2/test/formats/customlevel/format.json000644 000765 000024 00000001200 12735373550 022113 0ustar00stackstaff000000 000000 { "leveltest_log": { "description": "Log format used for testing levels", "regex": { "line": { "pattern": "^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) (?[^ ]+) (?.*)$" } }, "level": { "trace": "trace", "debug": "debug", "debug2": "debug2", "debug3": "debug3", "info": "info", "warning": "warn", "fatal": "fatal" }, "sample": [ { "line": "2016-06-30 12:00:01 trace tracemessage" } ] } } lnav-0.8.2/test/formats/collision/format.json000664 000765 000024 00000002711 12510241032 021532 0ustar00stackstaff000000 000000 { "zblued_log" : { "title" : "blued", "regex" : { "std" : { "pattern" : "^(?\\w{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2})(?: (?[a-zA-Z0-9:][^ ]+[a-zA-Z0-9]))? blued(?:\\[(?\\d+)])?:(?(?:.|\\n)*)$" } }, "level-field" : "body", "level" : { "error" : "(?:failed|failure|error)", "warning" : "(?:warn|not responding|init: cannot execute)" }, "value" : { "log_hostname" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true } }, "sample" : [ { "line" : "Apr 4 20:02:32 Tim-Stacks-iMac.local blued[59]: Release the WiFi lock" } ] }, "xerror_log" : { "title" : "Common Error Log", "description" : "The default web error log format for servers like Apache.", "regex" : { "cups" : { "pattern" : "^(?\\w) \\[(?[^\\]]+)\\] (?.*)" } }, "level-field": "level", "level" : { "error" : "E", "warning" : "W", "info" : "I" }, "sample" : [ { "line" : "E [08/Jun/2013:11:28:58 -0700] Unknown directive BrowseOrder on line 22 of /private/etc/cups/cupsd.conf." } ] } } lnav-0.8.2/test/bad-config/formats/000775 000765 000024 00000000000 13073703476 017370 5ustar00stackstaff000000 000000 lnav-0.8.2/test/bad-config/formats/invalid-regex/000775 000765 000024 00000000000 13073703477 022127 5ustar00stackstaff000000 000000 lnav-0.8.2/test/bad-config/formats/invalid-sample/000775 000765 000024 00000000000 13073703477 022276 5ustar00stackstaff000000 000000 lnav-0.8.2/test/bad-config/formats/invalid-sql/000775 000765 000024 00000000000 13073703477 021614 5ustar00stackstaff000000 000000 lnav-0.8.2/test/bad-config/formats/no-samples/000775 000765 000024 00000000000 13073703477 021447 5ustar00stackstaff000000 000000 lnav-0.8.2/test/bad-config/formats/no-samples/format.json000644 000765 000024 00000000551 12563024625 023623 0ustar00stackstaff000000 000000 { "no_sample_log": { "title": "invalid sample test", "regex": { "std": { "pattern": "^(?\\d+): (?.*)$" }, "semi": { "pattern": "^(?\\d+); (?\\w+)$" } }, "timestamp-format" : [ "%i" ] } } lnav-0.8.2/test/bad-config/formats/invalid-sql/init.sql000644 000765 000024 00000000056 12625765004 023273 0ustar00stackstaff000000 000000 -- comment test CREATE TALE invalid (x y z); lnav-0.8.2/test/bad-config/formats/invalid-sample/format.json000644 000765 000024 00000000726 12553173220 024451 0ustar00stackstaff000000 000000 { "bad_sample_log": { "title": "invalid sample test", "regex": { "std": { "pattern": "^(?\\d+): (?.*)$" }, "semi": { "pattern": "^(?\\d+); (?\\w+)$" } }, "timestamp-format" : [ "%i" ], "sample": [ { "line": "1428634687123; foo bar" } ] } } lnav-0.8.2/test/bad-config/formats/invalid-regex/format.json000664 000765 000024 00000000733 13071032570 024300 0ustar00stackstaff000000 000000 { "bad_regex_log": { "title": "invalid regex test", "regex": { "std": { "pattern": "^(?\\d+: (?.*)$" } }, "level" : { "error" : "(foo" }, "timestamp-format" : [ "%i" ], "sample": [ { "line": "1428634687123; foo" } ], "highlights": [ "abc(" ] } } lnav-0.8.2/src/all_logs_vtab.hh000664 000765 000024 00000010403 13072335732 016656 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef LNAV_ALL_LOGS_VTAB_HH #define LNAV_ALL_LOGS_VTAB_HH #include "byte_array.hh" #include "log_vtab_impl.hh" #include "data_parser.hh" class all_logs_vtab : public log_vtab_impl { public: all_logs_vtab() : log_vtab_impl(intern_string::lookup("all_logs")) { this->alv_value_name = intern_string::lookup("log_format"); this->alv_msg_name = intern_string::lookup("log_msg_format"); this->alv_schema_name = intern_string::lookup("log_msg_schema"); } void get_columns(std::vector &cols) const { cols.push_back(vtab_column(this->alv_value_name.get())); cols.push_back(vtab_column(this->alv_msg_name.get())); cols.push_back(vtab_column(this->alv_schema_name.get(), SQLITE3_TEXT, NULL, true)); }; void extract(logfile *lf, shared_buffer_ref &line, std::vector &values) { log_format *format = lf->get_format(); values.push_back(logline_value(this->alv_value_name, format->get_name(), 0)); std::vector sub_values; struct line_range body; string_attrs_t sa; format->annotate(line, sa, sub_values); body = find_string_attr_range(sa, &textview_curses::SA_BODY); if (body.lr_start == -1) { body.lr_start = 0; body.lr_end = line.length(); } data_scanner ds(line, body.lr_start, body.lr_end); data_parser dp(&ds); std::string str; dp.dp_msg_format = &str; dp.parse(); tmp_shared_buffer tsb(str.c_str()); values.push_back(logline_value(this->alv_msg_name, tsb.tsb_ref, 1)); this->alv_schema_manager.invalidate_refs(); dp.dp_schema_id.to_string(this->alv_schema_buffer); shared_buffer_ref schema_ref; schema_ref.share(this->alv_schema_manager, this->alv_schema_buffer, data_parser::schema_id_t::STRING_SIZE - 1); values.push_back({this->alv_schema_name, schema_ref, 2}); } bool next(log_cursor &lc, logfile_sub_source &lss) { lc.lc_curr_line = lc.lc_curr_line + vis_line_t(1); lc.lc_sub_index = 0; if (lc.is_eof()) { return true; } content_line_t cl(lss.at(lc.lc_curr_line)); logfile * lf = lss.find(cl); logfile::iterator lf_iter = lf->begin() + cl; if (lf_iter->is_continued()) { return false; } return true; }; private: intern_string_t alv_value_name; intern_string_t alv_msg_name; intern_string_t alv_schema_name; shared_buffer alv_schema_manager; char alv_schema_buffer[data_parser::schema_id_t::STRING_SIZE]; }; #endif //LNAV_ALL_LOGS_VTAB_HH lnav-0.8.2/src/alpha-release.sh000775 000765 000024 00000000316 13072300420 016553 0ustar00stackstaff000000 000000 #!/bin/bash if test x"${TRAVIS_BUILD_DIR}" == x""; then exit 0 fi cp lnav ${TRAVIS_BUILD_DIR}/ cd ${TRAVIS_BUILD_DIR} ldd lnav VERSION=`git describe --tags` zip lnav-${VERSION}-linux-64bit.zip lnav lnav-0.8.2/src/ansi_scrubber.cc000664 000765 000024 00000013121 12671355453 016663 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file ansi_scrubber.cc */ #include "config.h" #include #include "pcrepp.hh" #include "ansi_scrubber.hh" using namespace std; static pcrepp &ansi_regex(void) { static pcrepp retval("\x1b\\[([\\d=;]*)([a-zA-Z])"); return retval; } void scrub_ansi_string(std::string &str, string_attrs_t &sa) { view_colors &vc = view_colors::singleton(); pcre_context_static<60> context; pcrepp & regex = ansi_regex(); pcre_input pi(str); replace(str.begin(), str.end(), '\0', ' '); while (regex.match(context, pi)) { pcre_context::capture_t *caps = context.all(); struct line_range lr; bool has_attrs = false; int attrs = 0; int bg = 0; int fg = 0; size_t lpc; switch (pi.get_substr_start(&caps[2])[0]) { case 'm': for (lpc = caps[1].c_begin; lpc != string::npos && lpc < (size_t) caps[1].c_end;) { int ansi_code = 0; if (sscanf(&(str[lpc]), "%d", &ansi_code) == 1) { if (90 <= ansi_code && ansi_code <= 97) { ansi_code -= 60; attrs |= A_STANDOUT; } if (30 <= ansi_code && ansi_code <= 37) { fg = ansi_code - 30; } if (40 <= ansi_code && ansi_code <= 47) { bg = ansi_code - 40; } switch (ansi_code) { case 1: attrs |= A_BOLD; break; case 2: attrs |= A_DIM; break; case 4: attrs |= A_UNDERLINE; break; case 7: attrs |= A_REVERSE; break; } } lpc = str.find(";", lpc); if (lpc != string::npos) { lpc += 1; } } if (fg != 0 || bg != 0) { attrs |= vc.ansi_color_pair(fg, bg); } has_attrs = true; break; case 'C': { unsigned int spaces = 0; if (sscanf(&(str[caps[1].c_begin]), "%u", &spaces) == 1 && spaces > 0) { str.insert((unsigned long) caps[0].c_end, spaces, ' '); } break; } case 'O': { int role_int; if (sscanf(&(str[caps[1].c_begin]), "%d", &role_int) == 1) { if (role_int >= 0 && role_int < view_colors::VCR__MAX) { attrs = vc.attrs_for_role( (view_colors::role_t) role_int); has_attrs = true; } } break; } } str.erase(str.begin() + caps[0].c_begin, str.begin() + caps[0].c_end); if (has_attrs) { if (!sa.empty()) { sa.back().sa_range.lr_end = caps[0].c_begin; } lr.lr_start = caps[0].c_begin; lr.lr_end = -1; sa.push_back(string_attr(lr, &view_curses::VC_STYLE, attrs)); } pi.reset(str); } } void add_ansi_vars(std::map &vars) { vars["ansi_csi"] = "\x1b["; vars["ansi_norm"] = "\x1b[0m"; vars["ansi_bold"] = "\x1b[1m"; vars["ansi_underline"] = "\x1b[4m"; vars["ansi_black"] = "\x1b[30m"; vars["ansi_red"] = "\x1b[31m"; vars["ansi_green"] = "\x1b[32m"; vars["ansi_yellow"] = "\x1b[33m"; vars["ansi_blue"] = "\x1b[34m"; vars["ansi_magenta"] = "\x1b[35m"; vars["ansi_cyan"] = "\x1b[36m"; vars["ansi_white"] = "\x1b[37m"; } lnav-0.8.2/src/ansi_scrubber.hh000664 000765 000024 00000004641 12672435447 016707 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file ansi_scrubber.hh */ #ifndef _ansi_scrubber_hh #define _ansi_scrubber_hh #include #include "view_curses.hh" #define ANSI_CSI "\x1b[" #define ANSI_BOLD_START ANSI_CSI "1m" #define ANSI_UNDERLINE_START ANSI_CSI "4m" #define ANSI_NORM ANSI_CSI "0m" #define ANSI_BOLD(msg) ANSI_BOLD_START msg ANSI_NORM #define ANSI_ROLE(msg) ANSI_CSI "%dO" msg ANSI_NORM /** * Check a string for ANSI escape sequences, process them, remove them, and add * any style attributes to the given attribute container. * * @param str The string to check for ANSI escape sequences. * @param sa The container for any style attributes. */ void scrub_ansi_string(std::string &str, string_attrs_t &sa); /** * Populate a variable map with strings that contain escape sequences that * might be useful to script writers. */ void add_ansi_vars(std::map &vars); #endif lnav-0.8.2/src/attr_line.hh000664 000765 000024 00000032641 13072335346 016040 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file attr_line.hh */ #ifndef __attr_line_hh #define __attr_line_hh #include #include #include #include "lnav_log.hh" #include "intern_string.hh" /** * Encapsulates a range in a string. */ struct line_range { int lr_start; int lr_end; explicit line_range(int start = -1, int end = -1) : lr_start(start), lr_end(end) { }; bool is_valid() const { return this->lr_start != -1; } int length() const { return this->lr_end == -1 ? INT_MAX : this->lr_end - this->lr_start; }; bool contains(int pos) const { return this->lr_start <= pos && pos < this->lr_end; }; bool contains(const struct line_range &other) const { return this->contains(other.lr_start) && other.lr_end <= this->lr_end; }; bool intersects(const struct line_range &other) const { return this->contains(other.lr_start) || this->contains(other.lr_end); }; line_range intersection(const struct line_range &other) const { int actual_end; if (this->lr_end == -1) { actual_end = other.lr_end; } else if (other.lr_end == -1) { actual_end = this->lr_end; } else { actual_end = std::min(this->lr_end, other.lr_end); } return line_range{std::max(this->lr_start, other.lr_start), actual_end}; }; line_range &shift(int32_t start, int32_t amount) { if (this->lr_start >= start) { this->lr_start = std::max(0, this->lr_start + amount); } if (this->lr_end != -1 && start < this->lr_end) { this->lr_end += amount; if (this->lr_end < this->lr_start) { this->lr_end = this->lr_start; } } return *this; }; void ltrim(const char *str) { while (this->lr_start < this->lr_end && isspace(str[this->lr_start])) { this->lr_start += 1; } }; 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 false; } if (this->lr_end < rhs.lr_end) { return true; } return false; }; bool operator==(const struct line_range &rhs) const { return (this->lr_start == rhs.lr_start && this->lr_end == rhs.lr_end); }; const char *substr(const std::string &str) const { if (this->lr_start == -1) { return str.c_str(); } return &(str.c_str()[this->lr_start]); } size_t sublen(const std::string &str) const { if (this->lr_start == -1) { return str.length(); } if (this->lr_end == -1) { return str.length() - this->lr_start; } return this->length(); } }; /** * Container for attribute values for a substring. */ typedef union { const void *sav_ptr; int64_t sav_int; } string_attr_value_t; class string_attr_type { public: string_attr_type(const char *name = nullptr) : sat_name(name) { }; const char *sat_name; }; typedef string_attr_type *string_attr_type_t; struct string_attr { string_attr(const struct line_range &lr, string_attr_type_t type, void *val) : sa_range(lr), sa_type(type) { this->sa_value.sav_ptr = val; }; string_attr(const struct line_range &lr, string_attr_type_t type, intern_string_t val) : sa_range(lr), sa_type(type) { this->sa_value.sav_ptr = val.unwrap(); }; string_attr(const struct line_range &lr, string_attr_type_t type, int64_t val = 0) : sa_range(lr), sa_type(type) { this->sa_value.sav_int = val; }; string_attr(const struct line_range &lr, string_attr_type_t type, string_attr_value_t val) : sa_range(lr), sa_type(type), sa_value(val) { }; string_attr() : sa_type(NULL) { }; bool operator<(const struct string_attr &rhs) const { return this->sa_range < rhs.sa_range; }; intern_string_t to_string() const { return intern_string_t((const intern_string *) this->sa_value.sav_ptr); }; struct line_range sa_range; string_attr_type_t sa_type; string_attr_value_t sa_value; }; /** A map of line ranges to attributes for that range. */ typedef std::vector string_attrs_t; inline string_attrs_t::const_iterator find_string_attr(const string_attrs_t &sa, string_attr_type_t type, int start = 0) { string_attrs_t::const_iterator iter; for (iter = sa.begin(); iter != sa.end(); ++iter) { if (iter->sa_type == type && iter->sa_range.lr_start >= start) { break; } } return iter; } inline string_attrs_t::const_iterator find_string_attr_containing(const string_attrs_t &sa, string_attr_type_t type, int x) { string_attrs_t::const_iterator iter; for (iter = sa.begin(); iter != sa.end(); ++iter) { if (iter->sa_type == type && iter->sa_range.contains(x)) { break; } } return iter; } inline string_attrs_t::iterator find_string_attr(string_attrs_t &sa, const struct line_range &lr) { string_attrs_t::iterator iter; for (iter = sa.begin(); iter != sa.end(); ++iter) { if (lr.contains(iter->sa_range)) { break; } } return iter; } inline string_attrs_t::const_iterator find_string_attr(const string_attrs_t &sa, size_t near) { string_attrs_t::const_iterator iter, nearest = sa.end(); ssize_t last_diff = INT_MAX; for (iter = sa.begin(); iter != sa.end(); ++iter) { auto &lr = iter->sa_range; if (!lr.is_valid() || !lr.contains(near)) { continue; } ssize_t diff = near - lr.lr_start; if (diff < last_diff) { last_diff = diff; nearest = iter; } } return nearest; } template inline string_attrs_t::const_iterator rfind_string_attr_if(const string_attrs_t &sa, ssize_t near, T predicate) { string_attrs_t::const_iterator iter, nearest = sa.end(); ssize_t last_diff = INT_MAX; for (iter = sa.begin(); iter != sa.end(); ++iter) { auto &lr = iter->sa_range; if (lr.lr_start > near) { continue; } if (!predicate(*iter)) { continue; } ssize_t diff = near - lr.lr_start; if (diff < last_diff) { last_diff = diff; nearest = iter; } } return nearest; } inline struct line_range find_string_attr_range(const string_attrs_t &sa, string_attr_type_t type) { string_attrs_t::const_iterator iter = find_string_attr(sa, type); if (iter != sa.end()) { return iter->sa_range; } return line_range(); } inline void remove_string_attr(string_attrs_t &sa, const struct line_range &lr) { string_attrs_t::iterator iter; while ((iter = find_string_attr(sa, lr)) != sa.end()) { sa.erase(iter); } } inline void remove_string_attr(string_attrs_t &sa, string_attr_type_t type) { string_attrs_t::iterator iter; for (auto iter = sa.begin(); iter != sa.end();) { if (iter->sa_type == type) { iter = sa.erase(iter); } else { ++iter; } } } inline void shift_string_attrs(string_attrs_t &sa, int32_t start, int32_t amount) { for (string_attrs_t::iterator iter = sa.begin(); iter != sa.end(); ++iter) { iter->sa_range.shift(start, amount); } } struct text_wrap_settings { text_wrap_settings() : tws_indent(2), tws_width(80) {}; text_wrap_settings &with_indent(int indent) { this->tws_indent = indent; return *this; }; text_wrap_settings &with_width(int width) { this->tws_width = width; return *this; }; int tws_indent; int tws_width; }; /** * A line that has attributes. */ class attr_line_t { public: attr_line_t() { this->al_attrs.reserve(RESERVE_SIZE); }; attr_line_t(const std::string &str) : al_string(str) { this->al_attrs.reserve(RESERVE_SIZE); }; attr_line_t(const char *str) : al_string(str) { this->al_attrs.reserve(RESERVE_SIZE); }; static inline attr_line_t from_ansi_str(const char *str) { attr_line_t retval; return retval.with_ansi_string(str); }; /** @return The string itself. */ std::string &get_string() { return this->al_string; }; /** @return The attributes for the string. */ string_attrs_t &get_attrs() { return this->al_attrs; }; attr_line_t &with_string(const std::string &str) { this->al_string = str; return *this; } attr_line_t &with_ansi_string(const char *str, ...); attr_line_t &with_attr(const string_attr &sa) { this->al_attrs.push_back(sa); return *this; }; template attr_line_t &append(S str, string_attr_type_t type = nullptr, T val = T()) { size_t start_len = this->al_string.length(); this->al_string.append(str); if (type != nullptr) { line_range lr{(int) start_len, (int) this->al_string.length()}; this->al_attrs.emplace_back(lr, type, val); } return *this; }; attr_line_t &append(const attr_line_t &al, text_wrap_settings *tws = nullptr); attr_line_t &append(size_t len, char c) { this->al_string.append(len, c); return *this; }; attr_line_t &insert(size_t index, size_t len, char c) { this->al_string.insert(index, len, c); shift_string_attrs(this->al_attrs, index, len); return *this; } attr_line_t &insert(size_t index, const char *str) { this->al_string.insert(index, str); shift_string_attrs(this->al_attrs, index, strlen(str)); return *this; } attr_line_t &erase(size_t pos, size_t len = std::string::npos) { this->al_string.erase(pos, len); shift_string_attrs(this->al_attrs, pos, -((int32_t) len)); return *this; }; attr_line_t &right_justify(unsigned long width) { long padding = width - this->length(); if (padding > 0) { this->al_string.insert(0, padding, ' '); for (std::vector::iterator iter = this->al_attrs.begin(); iter != this->al_attrs.end(); ++iter) { iter->sa_range.lr_start += padding; iter->sa_range.lr_end += padding; } } return *this; } ssize_t length() const { size_t retval = this->al_string.length(); for (std::vector::const_iterator iter = this->al_attrs.begin(); iter != this->al_attrs.end(); ++iter) { retval = std::max(retval, (size_t) iter->sa_range.lr_start); if (iter->sa_range.lr_end != -1) { retval = std::max(retval, (size_t) iter->sa_range.lr_end); } } return retval; }; std::string get_substring(const line_range &lr) const { if (!lr.is_valid()) { return ""; } return this->al_string.substr(lr.lr_start, lr.length()); }; string_attrs_t::const_iterator find_attr(size_t near) const { near = std::min(near, this->al_string.length() - 1); while (near > 0 && isspace(this->al_string[near])) { near -= 1; } return find_string_attr(this->al_attrs, near); }; bool empty() const { return this->length() == 0; }; /** Clear the string and the attributes for the string. */ attr_line_t &clear() { this->al_string.clear(); this->al_attrs.clear(); return *this; }; attr_line_t subline(size_t start, size_t len = std::string::npos) const; void split_lines(std::vector &lines) const; private: const static size_t RESERVE_SIZE = 128; std::string al_string; string_attrs_t al_attrs; }; #endif lnav-0.8.2/src/auto_fd.hh000664 000765 000024 00000016452 12511372231 015471 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file auto_fd.hh */ #ifndef __auto_fd_hh #define __auto_fd_hh #include #include #include #include #include #include "lnav_log.hh" /** * Resource management class for file descriptors. * * @see auto_ptr */ class auto_fd { public: /** * Wrapper for the posix pipe(2) function that stores the file descriptor * results in an auto_fd array. * * @param af An array of at least two auto_fd elements, where the first * contains the reader end of the pipe and the second contains the writer. * @return The result of the pipe(2) function. */ static int pipe(auto_fd *af) { int retval, fd[2]; require(fd != NULL); if ((retval = ::pipe(fd)) == 0) { af[0] = fd[0]; af[1] = fd[1]; } return retval; }; /** * Construct an auto_fd to manage the given file descriptor. * * @param fd The file descriptor to be managed. */ auto_fd(int fd = -1) : af_fd(fd) { require(fd >= -1); }; /** * Non-const copy constructor. Management of the file descriptor will be * transferred from the source to this object and the source will be * cleared. * * @param af The source of the file descriptor. */ auto_fd(auto_fd & af) : af_fd(af.release()) { }; /** * Const copy constructor. The file descriptor from the source will be * dup(2)'d and the new descriptor stored in this object. * * @param af The source of the file descriptor. */ auto_fd(const auto_fd &af) : af_fd(-1) { if (af.af_fd != -1 && (this->af_fd = dup(af.af_fd)) == -1) { throw std::bad_alloc(); } }; /** * Destructor that will close the file descriptor managed by this object. */ ~auto_fd() { this->reset(); }; /** @return The file descriptor as a plain integer. */ operator int(void) const { return this->af_fd; }; /** * Replace the current descriptor with the given one. The current * descriptor will be closed. * * @param fd The file descriptor to store in this object. * @return *this */ auto_fd &operator =(int fd) { require(fd >= -1); this->reset(fd); return *this; }; /** * Transfer management of the given file descriptor to this object. * * @param af The old manager of the file descriptor. * @return *this */ auto_fd &operator =(auto_fd & af) { this->reset(af.release()); return *this; }; /** * Return a pointer that can be passed to functions that require an out * parameter for file descriptors (e.g. openpty). * * @return A pointer to the internal integer. */ int *out(void) { this->reset(); return &this->af_fd; }; /** * Stop managing the file descriptor in this object and return its value. * * @return The file descriptor. */ int release(void) { int retval = this->af_fd; this->af_fd = -1; return retval; }; /** * @return The file descriptor. */ int get(void) const { return this->af_fd; }; /** * Closes the current file descriptor and replaces its value with the given * one. * * @param fd The new file descriptor to be managed. */ void reset(int fd = -1) { require(fd >= -1); if (this->af_fd != fd) { if (this->af_fd != -1) { close(this->af_fd); } this->af_fd = fd; } }; void close_on_exec() const { if (this->af_fd == -1) { return; } log_perror(fcntl(this->af_fd, F_SETFD, FD_CLOEXEC)); } private: int af_fd; /*< The managed file descriptor. */ }; class auto_pipe { public: auto_pipe(int child_fd = -1, int child_flags = O_RDONLY) : ap_child_flags(child_flags), ap_child_fd(child_fd) { switch (child_fd) { case STDIN_FILENO: this->ap_child_flags = O_RDONLY; break; case STDOUT_FILENO: case STDERR_FILENO: this->ap_child_flags = O_WRONLY; break; } }; int open() { return auto_fd::pipe(this->ap_fd); }; void close() { this->ap_fd[0].reset(); this->ap_fd[1].reset(); }; auto_fd &read_end() { return this->ap_fd[0]; }; auto_fd &write_end() { return this->ap_fd[1]; }; void after_fork(pid_t child_pid) { int new_fd; switch (child_pid) { case -1: this->close(); break; case 0: if (this->ap_child_flags == O_RDONLY) { this->write_end().reset(); if (this->read_end() == -1) { this->read_end() = ::open("/dev/null", O_RDONLY); } new_fd = this->read_end(); } else { this->read_end().reset(); if (this->write_end() == -1) { this->write_end() = ::open("/dev/null", O_WRONLY); } new_fd = this->write_end(); } if (this->ap_child_fd != -1) { if (new_fd != this->ap_child_fd) { dup2(new_fd, this->ap_child_fd); this->close(); } } break; default: if (this->ap_child_flags == O_RDONLY) { this->read_end().reset(); } else { this->write_end().reset(); } break; } }; int ap_child_flags; int ap_child_fd; auto_fd ap_fd[2]; }; #endif lnav-0.8.2/src/auto_mem.hh000664 000765 000024 00000007274 12557552460 015676 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file auto_mem.hh */ #ifndef __auto_mem_hh #define __auto_mem_hh #include #include #include #include typedef void (*free_func_t)(void *); /** * Resource management class for memory allocated by a custom allocator. * * @param T The object type. * @param auto_free The function to call to free the managed object. */ template class auto_mem { public: auto_mem(T *ptr = NULL) : am_ptr(ptr), am_free_func(default_free) { }; auto_mem(auto_mem & am) : am_ptr(am.release()), am_free_func(am.am_free_func) {}; template auto_mem(F free_func) : am_ptr(NULL), am_free_func((free_func_t)free_func) { }; ~auto_mem() { this->reset(); }; operator T *(void) const { return this->am_ptr; }; auto_mem &operator =(T *ptr) { this->reset(ptr); return *this; }; auto_mem &operator =(auto_mem & am) { this->reset(am.release()); this->am_free_func = am.am_free_func; return *this; }; T *release(void) { T *retval = this->am_ptr; this->am_ptr = NULL; return retval; }; T *in(void) const { return this->am_ptr; }; T **out(void) { this->reset(); return &this->am_ptr; }; void reset(T *ptr = NULL) { if (this->am_ptr != ptr) { if (this->am_ptr != NULL) { this->am_free_func((void *)this->am_ptr); } this->am_ptr = ptr; } }; private: T * am_ptr; void (*am_free_func)(void *); }; template class static_root_mem { public: static_root_mem() { memset(&this->srm_value, 0, sizeof(T)); }; ~static_root_mem() { free_func(&this->srm_value); }; const T *operator->(void) const { return &this->srm_value; }; const T &in(void) const { return this->srm_value; }; T *inout(void) { return &this->srm_value; }; private: static_root_mem &operator =(T &) { return *this; }; static_root_mem &operator =(static_root_mem &) { return *this; }; T srm_value; }; #endif lnav-0.8.2/src/auto_pid.hh000664 000765 000024 00000006121 12562021222 015641 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file auto_pid.hh */ #ifndef __auto_pid_hh #define __auto_pid_hh #include #include #include #include class auto_pid { public: auto_pid(pid_t child = -1) : ap_child(child), ap_status(0) {}; auto_pid(auto_pid &other) : ap_child(other.release()), ap_status(0) { }; ~auto_pid() { this->reset(); }; auto_pid &operator =(auto_pid &other) { this->reset(other.release()); this->ap_status = other.ap_status; return *this; }; bool in_child() const { return this->ap_child == 0; }; pid_t release() { pid_t retval = this->ap_child; this->ap_child = -1; return retval; }; int status() const { return this->ap_status; }; bool wait_for_child(int options = 0) { if (this->ap_child != -1) { int rc; while ((rc = waitpid(this->ap_child, &this->ap_status, options)) < 0 && (errno == EINTR)) { ; } if (rc > 0) { this->ap_child = -1; } } return this->ap_child == -1; }; void reset(pid_t child = -1) { if (this->ap_child != child) { this->ap_status = 0; if (this->ap_child != -1) { kill(this->ap_child, SIGTERM); this->wait_for_child(); } this->ap_child = child; } }; private: auto_pid(const auto_pid &other) { }; pid_t ap_child; int ap_status; }; #endif lnav-0.8.2/src/bin2c.c000664 000765 000024 00000004354 12477462531 014704 0ustar00stackstaff000000 000000 // bin2c.c // // convert a binary file into a C source vector // // THE "BEER-WARE LICENSE" (Revision 3.1415): // sandro AT sigala DOT it wrote this file. As long as you retain this notice you can do // whatever you want with this stuff. If we meet some day, and you think this stuff is // worth it, you can buy me a beer in return. Sandro Sigala // // syntax: bin2c [-c] [-z] // // -c add the "const" keyword to definition // -z terminate the array with a zero (useful for embedded C strings) // // examples: // bin2c -c myimage.png myimage_png.cpp // bin2c -z sometext.txt sometext_txt.cpp #include #include #include #include #ifndef PATH_MAX #define PATH_MAX 1024 #endif int useconst = 0; int zeroterminated = 0; int myfgetc(FILE *f) { int c = fgetc(f); if (c == EOF && zeroterminated) { zeroterminated = 0; return 0; } return c; } void process(const char *ifname, const char *ofname) { FILE *ifile, *ofile; ifile = fopen(ifname, "rb"); if (ifile == NULL) { fprintf(stderr, "cannot open %s for reading\n", ifname); exit(1); } ofile = fopen(ofname, "wb"); if (ofile == NULL) { fprintf(stderr, "cannot open %s for writing\n", ofname); exit(1); } char buf[PATH_MAX], *p; const char *cp; if ((cp = strrchr(ifname, '/')) != NULL) { ++cp; } else { if ((cp = strrchr(ifname, '\\')) != NULL) ++cp; else cp = ifname; } strcpy(buf, cp); for (p = buf; *p != '\0'; ++p) { if (!isalnum(*p)) *p = '_'; } fprintf(ofile, "%sunsigned char %s[] = {\n", useconst ? "const " : "", buf); int c, col = 1; while ((c = myfgetc(ifile)) != EOF) { if (col >= 78 - 6) { fputc('\n', ofile); col = 1; } fprintf(ofile, "0x%.2x, ", c); col += 6; } fprintf(ofile, "\n};\n"); fclose(ifile); fclose(ofile); } void usage(void) { fprintf(stderr, "usage: bin2c [-cz] \n"); exit(1); } int main(int argc, char **argv) { while (argc > 3) { if (!strcmp(argv[1], "-c")) { useconst = 1; --argc; ++argv; } else if (!strcmp(argv[1], "-z")) { zeroterminated = 1; --argc; ++argv; } else { usage(); } } if (argc != 3) { usage(); } process(argv[1], argv[2]); return 0; } lnav-0.8.2/src/bookmarks.cc000664 000765 000024 00000004562 12510342306 016024 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file bookmarks.cc */ #include "config.h" #include "bookmarks.hh" using namespace std; template LineType bookmark_vector::next(LineType start) { typename bookmark_vector::iterator ub; LineType retval(-1); require(start >= -1); ub = upper_bound(this->begin(), this->end(), start); if (ub != this->end()) { retval = *ub; } ensure(retval == -1 || start < retval); return retval; } template LineType bookmark_vector::prev(LineType start) { typename bookmark_vector::iterator lb; LineType retval(-1); require(start >= 0); lb = lower_bound(this->begin(), this->end(), start); if (lb != this->begin()) { lb -= 1; retval = *lb; } ensure(retval < start); return retval; } template class bookmark_vector; lnav-0.8.2/src/bookmarks.hh000664 000765 000024 00000012154 12510342306 016032 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file bookmarks.hh */ #ifndef __bookmarks_hh #define __bookmarks_hh #include #include #include #include #include "lnav_log.hh" #include "listview_curses.hh" struct bookmark_metadata { std::string bm_name; }; /** * Extension of the STL vector that is used to store bookmarks for * files being viewed, where a bookmark is just a particular line in * the file(s). The value-added over the standard vector are some * methods for doing content-wise iteration. In other words, given a * value that may or may not be in the vector, find the next or * previous value that is in the vector. * * @param LineType The type used to store line numbers. (e.g. * vis_line_t or content_line_t) * * @note The vector is expected to be sorted. */ template class bookmark_vector : public std::vector { public: /** * Insert a bookmark into this vector, but only if it is not already in the * vector. * * @param vl The line to bookmark. */ typename bookmark_vector::iterator insert_once(LineType vl) { typename bookmark_vector::iterator lb, retval; require(vl >= 0); lb = std::lower_bound(this->begin(), this->end(), vl); if (lb == this->end() || *lb != vl) { this->insert(lb, vl); retval = this->end(); } else { retval = lb; } return retval; }; /** * @param start The value to start the search for the next bookmark. * @return The next bookmark value in the vector or -1 if there are * no more remaining bookmarks. If the 'start' value is a bookmark, * the next bookmark is returned. If the 'start' value is not a * bookmark, the next highest value in the vector is returned. */ LineType next(LineType start); /** * @param start The value to start the search for the previous * bookmark. * @return The previous bookmark value in the vector or -1 if there * are no more prior bookmarks. * @see next */ LineType prev(LineType start); }; /** * Dummy type whose instances are used to distinguish between * bookmarks maintained by different source modules. */ class bookmark_type_t { public: typedef std::vector::iterator type_iterator; static type_iterator type_begin() { return get_all_types().begin(); }; static type_iterator type_end() { return get_all_types().end(); }; static bookmark_type_t *find_type(const std::string &name) { type_iterator iter = find_if(type_begin(), type_end(), mark_eq(name)); bookmark_type_t *retval = NULL; if (iter != type_end()) { retval = (*iter); } return retval; }; static std::vector &get_all_types() { static std::vector all_types; return all_types; }; bookmark_type_t(const std::string &name) : bt_name(name) { get_all_types().push_back(this); }; const std::string &get_name() const { return this->bt_name; }; private: struct mark_eq { mark_eq(const std::string &name) : me_name(name) { }; bool operator()(bookmark_type_t *bt) { return bt->bt_name == this->me_name; }; const std::string &me_name; }; const std::string bt_name; }; /** * Map of bookmark types to bookmark vectors. */ template struct bookmarks { typedef std::map > type; }; typedef bookmarks::type vis_bookmarks; #endif lnav-0.8.2/src/bottom_status_source.hh000664 000765 000024 00000021266 13071032570 020337 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _bottom_status_source_hh #define _bottom_status_source_hh #include #include "grep_proc.hh" #include "textview_curses.hh" #include "logfile_sub_source.hh" #include "status_controllers.hh" class bottom_status_source : public status_data_source, public grep_proc_control { public: typedef listview_curses::action::mem_functor_t< bottom_status_source> lv_functor_t; typedef enum { BSF_LINE_NUMBER, BSF_PERCENT, BSF_HITS, BSF_FILTERED, BSF_LOADING, BSF_HELP, BSF__MAX } field_t; bottom_status_source() : line_number_wire(*this, &bottom_status_source::update_line_number), percent_wire(*this, &bottom_status_source::update_percent), marks_wire(*this, &bottom_status_source::update_marks), bss_prompt(1024, view_colors::VCR_STATUS), bss_error(1024, view_colors::VCR_ALERT_STATUS), bss_hit_spinner(0), bss_load_percent(0), bss_last_filtered_count(0), bss_filter_counter(0) { this->bss_fields[BSF_LINE_NUMBER].set_width(11); this->bss_fields[BSF_PERCENT].set_width(4); this->bss_fields[BSF_PERCENT].set_left_pad(1); this->bss_fields[BSF_HITS].set_width(36); this->bss_fields[BSF_FILTERED].set_width(20); this->bss_fields[BSF_FILTERED].set_role(view_colors::VCR_BOLD_STATUS); this->bss_fields[BSF_LOADING].set_width(13); this->bss_fields[BSF_LOADING].set_cylon(true); this->bss_fields[BSF_LOADING].right_justify(true); this->bss_fields[BSF_HELP].set_width(14); this->bss_fields[BSF_HELP].set_value("?:View Help"); this->bss_fields[BSF_HELP].right_justify(true); this->bss_prompt.set_left_pad(1); this->bss_prompt.set_min_width(35); this->bss_prompt.set_share(1); this->bss_error.set_left_pad(1); this->bss_error.set_min_width(35); this->bss_error.set_share(1); }; virtual ~bottom_status_source() { }; lv_functor_t line_number_wire; lv_functor_t percent_wire; lv_functor_t marks_wire; status_field &get_field(field_t id) { return this->bss_fields[id]; }; void set_prompt(const std::string &prompt) { this->bss_prompt.set_value(prompt); }; void grep_error(std::string msg) { this->bss_error.set_value(msg); }; size_t statusview_fields(void) { size_t retval; if (this->bss_prompt.empty() && this->bss_error.empty()) { retval = BSF__MAX; } else{ retval = 1; } return retval; }; status_field &statusview_value_for_field(int field) { if (!this->bss_error.empty()) { return this->bss_error; } else if (!this->bss_prompt.empty()) { return this->bss_prompt; } else { return this->get_field((field_t)field); } }; void update_line_number(listview_curses *lc) { status_field &sf = this->bss_fields[BSF_LINE_NUMBER]; if (lc->get_inner_height() == 0) { sf.set_value(" L0"); } else { sf.set_value(" L%'d", (int)lc->get_top()); } }; void update_percent(listview_curses *lc) { status_field &sf = this->bss_fields[BSF_PERCENT]; vis_line_t top = lc->get_top(); vis_line_t bottom, height; unsigned long width; double percent; lc->get_dimensions(height, width); if (lc->get_inner_height() > 0) { bottom = std::min(top + height - vis_line_t(1), vis_line_t(lc->get_inner_height() - 1)); percent = (double)(bottom + 1); percent /= (double)lc->get_inner_height(); percent *= 100.0; } else { percent = 0.0; } sf.set_value("%3d%%", (int)percent); }; void update_marks(listview_curses *lc) { textview_curses *tc = static_cast(lc); vis_bookmarks &bm = tc->get_bookmarks(); status_field &sf = this->bss_fields[BSF_HITS]; if (bm.find(&textview_curses::BM_SEARCH) != bm.end()) { bookmark_vector &bv = bm[&textview_curses::BM_SEARCH]; bookmark_vector::iterator lb; lb = std::lower_bound(bv.begin(), bv.end(), tc->get_top()); if (lb != bv.end() && *lb == tc->get_top()) { sf.set_value(" Hit %'d of %'d", std::distance(bv.begin(), lb) + 1, tc->get_match_count()); } else { sf.set_value("%'9d hits", tc->get_match_count()); } } else { sf.clear(); } }; void update_hits(textview_curses *tc) { status_field & sf = this->bss_fields[BSF_HITS]; view_colors::role_t new_role; if (tc->is_searching()) { this->bss_hit_spinner += 1; if (this->bss_hit_spinner % 2) { new_role = view_colors::VCR_ACTIVE_STATUS; } else{ new_role = view_colors::VCR_ACTIVE_STATUS2; } sf.set_cylon(true); } else { new_role = view_colors::VCR_STATUS; sf.set_cylon(false); } // this->bss_error.clear(); sf.set_role(new_role); this->update_marks(tc); }; void update_loading(off_t off, size_t total) { status_field &sf = this->bss_fields[BSF_LOADING]; if (total == 0 || (size_t)off == total) { sf.set_role(view_colors::VCR_STATUS); sf.clear(); } else { int pct = (int)(((double)off / (double)total) * 100.0); if (this->bss_load_percent != pct) { this->bss_load_percent = pct; sf.set_role(view_colors::VCR_ACTIVE_STATUS2); sf.set_value(" Loading %2d%% ", pct); } } }; void update_filtered(text_sub_source *tss) { status_field &sf = this->bss_fields[BSF_FILTERED]; if (tss == NULL || tss->get_filtered_count() == 0) { sf.clear(); } else { ui_periodic_timer &timer = ui_periodic_timer::singleton(); if (tss->get_filtered_count() == this->bss_last_filtered_count) { if (timer.fade_diff(this->bss_filter_counter) == 0) { this->bss_fields[BSF_FILTERED].set_role( view_colors::VCR_BOLD_STATUS); } } else { this->bss_fields[BSF_FILTERED].set_role( view_colors::VCR_ALERT_STATUS); this->bss_last_filtered_count = tss->get_filtered_count(); timer.start_fade(this->bss_filter_counter, 3); } sf.set_value("%'9d Not Shown", tss->get_filtered_count()); } }; private: status_field bss_prompt; status_field bss_error; status_field bss_fields[BSF__MAX]; int bss_hit_spinner; int bss_load_percent; int bss_last_filtered_count; sig_atomic_t bss_filter_counter; }; #endif lnav-0.8.2/src/byte_array.hh000664 000765 000024 00000005700 12567000510 016202 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __byte_array_hh #define __byte_array_hh #include #include #include #include #include "lnav_log.hh" template struct byte_array { static const size_t BYTE_COUNT = COUNT * sizeof(T); static const size_t STRING_SIZE = BYTE_COUNT * 2 + 1; byte_array() { }; byte_array(const byte_array &other) { memcpy(this->ba_data, other.ba_data, BYTE_COUNT); }; bool operator<(const byte_array &other) const { return memcmp(this->ba_data, other.ba_data, BYTE_COUNT) < 0; }; bool operator!=(const byte_array &other) const { return memcmp(this->ba_data, other.ba_data, BYTE_COUNT) != 0; }; void clear(void) { memset(this->ba_data, 0, BYTE_COUNT); }; void to_string(char *buffer) const { require(buffer != NULL); for (size_t lpc = 0; lpc < BYTE_COUNT; lpc++) { snprintf(&buffer[lpc * 2], 3, "%02x", this->ba_data[lpc]); } }; std::string to_string() const { char buffer[STRING_SIZE]; this->to_string(buffer); return std::string(buffer); } const unsigned char *in() const { return this->ba_data; }; T *out(int offset = 0) { T *ptr = (T *)this->ba_data; return &ptr[offset]; }; unsigned char ba_data[BYTE_COUNT]; }; #endif lnav-0.8.2/src/chunky_index.hh000664 000765 000024 00000021476 12673073155 016556 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file chunky_index.hh */ #ifndef __chunky_index_hh #define __chunky_index_hh #include #include #include #include "lnav_log.hh" template class chunky_index { public: class iterator { public: typedef std::random_access_iterator_tag iterator_category; typedef T value_type; typedef T *pointer; typedef T &reference; typedef std::ptrdiff_t difference_type; iterator(chunky_index *ci = NULL, off_t offset = 0) : i_chunky(ci), i_offset(offset) { }; iterator &operator++() { this->i_offset += 1; return *this; }; T &operator*() { return (*this->i_chunky)[this->i_offset]; }; bool operator!=(const iterator &other) const { return (this->i_chunky != other.i_chunky) || (this->i_offset != other.i_offset); }; bool operator==(const iterator &other) const { return (this->i_chunky == other.i_chunky) && (this->i_offset == other.i_offset); }; difference_type operator-(const iterator &other) const { return this->i_offset - other.i_offset; }; void operator+=(difference_type n) { this->i_offset += n; }; private: chunky_index *i_chunky; off_t i_offset; }; chunky_index() : ci_generation(0), ci_merge_chunk(NULL), ci_size(0) { }; ~chunky_index() { this->clear(); }; iterator begin() { return iterator(this); }; iterator end() { return iterator(this, this->ci_size); }; size_t size() const { return this->ci_size; }; bool empty() const { return this->ci_size == 0; }; size_t chunk_count() const { return this->ci_completed_chunks.size(); }; T& operator[](size_t index) { size_t chunk_index = index / CHUNK_SIZE; require(chunk_index < this->chunk_count()); struct chunk *target_chunk = this->ci_completed_chunks[chunk_index]; return target_chunk->c_body[index % CHUNK_SIZE]; }; void clear() { while (!this->ci_completed_chunks.empty()) { delete this->ci_completed_chunks.back(); this->ci_completed_chunks.pop_back(); } while (!this->ci_pending_chunks.empty()) { delete this->ci_pending_chunks.front(); this->ci_pending_chunks.pop_front(); } if (this->ci_merge_chunk != NULL) { delete this->ci_merge_chunk; this->ci_merge_chunk = NULL; } this->ci_size = 0; }; void reset() { for (size_t lpc = 0; lpc < this->ci_completed_chunks.size(); lpc++) { this->ci_pending_chunks.push_back(this->ci_completed_chunks[lpc]); } this->ci_completed_chunks.clear(); this->ci_generation += 1; }; template off_t merge_value(const T &val, Comparator comparator) { off_t retval; this->merge_up_to(&val, comparator); retval = (this->ci_completed_chunks.size() * CHUNK_SIZE); retval += this->ci_merge_chunk->c_used; this->ci_merge_chunk->push_back(val); this->ci_size += 1; return retval; }; off_t merge_value(const T &val) { return this->merge_value(val, less_comparator()); }; void finish() { this->merge_up_to(NULL, null_comparator()); if (this->ci_merge_chunk != NULL) { if (this->ci_merge_chunk->empty()) { delete this->ci_merge_chunk; this->ci_merge_chunk = NULL; } else { this->ci_completed_chunks.push_back(this->ci_merge_chunk); this->ci_merge_chunk = NULL; } } }; private: template void skip_chunks(const T *val, Comparator comparator) { while (!this->ci_pending_chunks.empty() && this->ci_pending_chunks.front()->skippable(val, comparator)) { struct chunk *skipped_chunk = this->ci_pending_chunks.front(); this->ci_pending_chunks.pop_front(); skipped_chunk->c_consumed = 0; skipped_chunk->c_generation = this->ci_generation; this->ci_completed_chunks.push_back(skipped_chunk); } }; struct null_comparator { int operator()(const T &val, const T &other) const { return 0; }; }; struct less_comparator { bool operator()(const T &val, const T &other) const { return (val < other); }; }; template void merge_up_to(const T *val, Comparator comparator) { this->skip_chunks(val, comparator); do { if (this->ci_merge_chunk != NULL && this->ci_merge_chunk->full()) { this->ci_completed_chunks.push_back(this->ci_merge_chunk); this->ci_merge_chunk = NULL; } if (this->ci_merge_chunk == NULL) { this->ci_merge_chunk = new chunk(this->ci_generation); } if (!this->ci_pending_chunks.empty()) { struct chunk *next_chunk = this->ci_pending_chunks.front(); while (((val == NULL) || comparator(next_chunk->front(), *val) || !comparator(*val, next_chunk->front())) && !this->ci_merge_chunk->full()) { this->ci_merge_chunk->push_back(next_chunk->consume()); if (next_chunk->empty()) { this->ci_pending_chunks.pop_front(); delete next_chunk; if (!this->ci_pending_chunks.empty()) { next_chunk = this->ci_pending_chunks.front(); } else { break; } } } } } while (this->ci_merge_chunk->full()); }; struct chunk { chunk(unsigned long gen) : c_generation(gen), c_consumed(0), c_used(0) { }; bool empty() const { return this->c_consumed == this->c_used; }; bool full() const { return this->c_used == CHUNK_SIZE; }; template bool skippable(const T *val, Comparator comparator) const { return this->c_consumed == 0 && this->full() && (val == NULL || comparator(this->back(), *val) || !comparator(*val, this->back())); }; const T &front() const { return this->c_body[this->c_consumed]; }; const T &consume() { this->c_consumed += 1; return this->c_body[this->c_consumed - 1]; }; const T &back() const { return this->c_body[this->c_used - 1]; }; void push_back(const T &val) { this->c_body[this->c_used] = val; this->c_used += 1; }; unsigned long c_generation; T c_body[CHUNK_SIZE]; size_t c_consumed; size_t c_used; }; unsigned long ci_generation; std::vector ci_completed_chunks; struct chunk *ci_merge_chunk; std::list ci_pending_chunks; size_t ci_size; }; #endif lnav-0.8.2/src/collation-functions.cc000664 000765 000024 00000011752 13071343523 020032 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file logfile_sub_source.hh */ #include "config.h" #include #include #include #include #include #include #include #include "log_format.hh" #include "strnatcmp.h" #define MAX_ADDR_LEN 128 static int try_inet_pton(int p_len, const char *p, char *n) { static int ADDR_FAMILIES[] = { AF_INET, AF_INET6 }; char buf[MAX_ADDR_LEN + 1]; int retval = AF_MAX; strncpy(buf, p, p_len); buf[p_len] = '\0'; for (int family : ADDR_FAMILIES) { if (inet_pton(family, buf, n) == 1) { retval = family; break; } } return retval; } static int convert_v6_to_v4(int family, char *n) { struct in6_addr *ia = (struct in6_addr *)n; if (family == AF_INET6 && (IN6_IS_ADDR_V4COMPAT(ia) || IN6_IS_ADDR_V4MAPPED(ia))) { family = AF_INET; memmove(n, n + 12, sizeof(struct in_addr)); } return family; } static int ipaddress(void *ptr, int a_len, const void *a_in, int b_len, const void *b_in) { char a_addr[sizeof(struct in6_addr)], b_addr[sizeof(struct in6_addr)]; const char *a_str = (const char *)a_in, *b_str = (const char *)b_in; int a_family, b_family, retval; if ((a_len > MAX_ADDR_LEN) || (b_len > MAX_ADDR_LEN)) { return strnatcasecmp(a_len, a_str, b_len, b_str); } int v4res = 0; if (ipv4cmp(a_len, a_str, b_len, b_str, &v4res)) { return v4res; } a_family = try_inet_pton(a_len, a_str, a_addr); b_family = try_inet_pton(b_len, b_str, b_addr); if (a_family == AF_MAX && b_family == AF_MAX) { return strnatcasecmp(a_len, a_str, b_len, b_str); } else if (a_family == AF_MAX && b_family != AF_MAX) { retval = -1; } else if (a_family != AF_MAX && b_family == AF_MAX) { retval = 1; } else { a_family = convert_v6_to_v4(a_family, a_addr); b_family = convert_v6_to_v4(b_family, b_addr); if (a_family == b_family) { retval = memcmp(a_addr, b_addr, a_family == AF_INET ? sizeof(struct in_addr) : sizeof(struct in6_addr)); } else if (a_family == AF_INET) { retval = -1; } else { retval = 1; } } return retval; } static int sql_strnatcmp(void *ptr, int a_len, const void *a_in, int b_len, const void *b_in) { return strnatcmp(a_len, (char *)a_in, b_len, (char *)b_in); } static int sql_strnatcasecmp(void *ptr, int a_len, const void *a_in, int b_len, const void *b_in) { return strnatcasecmp(a_len, (char *)a_in, b_len, (char *)b_in); } static int sql_loglevelcmp(void *ptr, int a_len, const void *a_in, int b_len, const void *b_in) { return logline::levelcmp((const char *)a_in, a_len, (const char *)b_in, b_len); } int register_collation_functions(sqlite3 *db) { sqlite3_create_collation(db, "ipaddress", SQLITE_UTF8, NULL, ipaddress); sqlite3_create_collation(db, "naturalcase", SQLITE_UTF8, NULL, sql_strnatcmp); sqlite3_create_collation(db, "naturalnocase", SQLITE_UTF8, NULL, sql_strnatcasecmp); sqlite3_create_collation(db, "loglevel", SQLITE_UTF8, NULL, sql_loglevelcmp); return 0; } lnav-0.8.2/src/column_namer.hh000664 000765 000024 00000005626 12477462531 016546 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file column_namer.hh */ #ifndef _column_namer_hh #define _column_namer_hh #include #include #include #include class column_namer { public: column_namer() { this->cn_builtin_names.push_back("col"); }; bool existing_name(const std::string &in_name) const { if (find(this->cn_builtin_names.begin(), this->cn_builtin_names.end(), in_name) != this->cn_builtin_names.end()) { return true; } else if (find(this->cn_names.begin(), this->cn_names.end(), in_name) != this->cn_names.end()) { return true; } return false; }; std::string add_column(const std::string &in_name) { std::string base_name = in_name, retval; size_t buf_size; int num = 0; buf_size = in_name.length() + 64; char buffer[buf_size]; if (in_name == "") { base_name = "col"; } retval = base_name; while (this->existing_name(retval)) { snprintf(buffer, buf_size, "%s_%d", base_name.c_str(), num); retval = buffer; num += 1; } this->cn_names.push_back(retval); return retval; }; std::vector cn_builtin_names; std::vector cn_names; }; #endif lnav-0.8.2/src/command_executor.cc000664 000765 000024 00000054416 13073471374 017410 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include "json_ptr.hh" #include "pcrecpp.h" #include "lnav.hh" #include "log_format_loader.hh" #include "shlex.hh" #include "sql_util.hh" #include "command_executor.hh" #include "db_sub_source.hh" using namespace std; exec_context INIT_EXEC_CONTEXT; static const string MSG_FORMAT_STMT = "SELECT count(*) as total, min(log_line) as log_line, log_msg_format " "FROM all_logs GROUP BY log_msg_format ORDER BY total desc"; int sql_progress(const struct log_cursor &lc) { static sig_atomic_t sql_counter = 0; size_t total = lnav_data.ld_log_source.text_line_count(); off_t off = lc.lc_curr_line; if (lnav_data.ld_window == NULL) { return 0; } if (!lnav_data.ld_looping) { return 1; } if (ui_periodic_timer::singleton().time_to_update(sql_counter)) { lnav_data.ld_bottom_source.update_loading(off, total); lnav_data.ld_top_source.update_time(); lnav_data.ld_status[LNS_TOP].do_update(); lnav_data.ld_status[LNS_BOTTOM].do_update(); refresh(); } return 0; } string execute_from_file(exec_context &ec, const string &path, int line_number, char mode, const string &cmdline); string execute_command(exec_context &ec, const string &cmdline) { vector args; string msg; log_info("Executing: %s", cmdline.c_str()); split_ws(cmdline, args); if (args.size() > 0) { readline_context::command_map_t::iterator iter; if ((iter = lnav_commands.find(args[0])) == lnav_commands.end()) { msg = "error: unknown command - " + args[0]; } else { msg = iter->second.c_func(ec, cmdline, args); } } return msg; } string execute_sql(exec_context &ec, const string &sql, string &alt_msg) { db_label_source &dls = lnav_data.ld_db_row_source; auto_mem stmt(sqlite3_finalize); struct timeval start_tv, end_tv; string stmt_str = trim(sql); string retval; int retcode; log_info("Executing SQL: %s", sql.c_str()); lnav_data.ld_bottom_source.grep_error(""); if (stmt_str == ".schema") { alt_msg = ""; ensure_view(&lnav_data.ld_views[LNV_SCHEMA]); lnav_data.ld_mode = LNM_PAGING; return ""; } else if (stmt_str == ".msgformats") { stmt_str = MSG_FORMAT_STMT; } ec.ec_accumulator.clear(); sql_progress_guard progress_guard(sql_progress); gettimeofday(&start_tv, NULL); retcode = sqlite3_prepare_v2(lnav_data.ld_db.in(), stmt_str.c_str(), -1, stmt.out(), NULL); if (retcode != SQLITE_OK) { const char *errmsg = sqlite3_errmsg(lnav_data.ld_db); retval = "error: " + string(errmsg); alt_msg = ""; } else if (stmt == NULL) { retval = ""; alt_msg = ""; } else { bool done = false; int param_count; param_count = sqlite3_bind_parameter_count(stmt.in()); for (int lpc = 0; lpc < param_count; lpc++) { map::iterator ov_iter; const char *name; name = sqlite3_bind_parameter_name(stmt.in(), lpc + 1); ov_iter = ec.ec_override.find(name); if (ov_iter != ec.ec_override.end()) { sqlite3_bind_text(stmt.in(), lpc, ov_iter->second.c_str(), ov_iter->second.length(), SQLITE_TRANSIENT); } else if (name[0] == '$') { map &lvars = ec.ec_local_vars.top(); map &gvars = ec.ec_global_vars; map::iterator local_var, global_var; const char *env_value; if ((local_var = lvars.find(&name[1])) != lvars.end()) { sqlite3_bind_text(stmt.in(), lpc + 1, local_var->second.c_str(), -1, SQLITE_TRANSIENT); } else if ((global_var = gvars.find(&name[1])) != gvars.end()) { sqlite3_bind_text(stmt.in(), lpc + 1, global_var->second.c_str(), -1, SQLITE_TRANSIENT); } else if ((env_value = getenv(&name[1])) != NULL) { sqlite3_bind_text(stmt.in(), lpc + 1, env_value, -1, SQLITE_STATIC); } } else if (name[0] == ':' && ec.ec_line_values != NULL) { vector &lvalues = *ec.ec_line_values; vector::iterator iter; for (iter = lvalues.begin(); iter != lvalues.end(); ++iter) { if (strcmp(&name[1], iter->lv_name.get()) != 0) { continue; } switch (iter->lv_kind) { case logline_value::VALUE_BOOLEAN: sqlite3_bind_int64(stmt.in(), lpc + 1, iter->lv_value.i); break; case logline_value::VALUE_FLOAT: sqlite3_bind_double(stmt.in(), lpc + 1, iter->lv_value.d); break; case logline_value::VALUE_INTEGER: sqlite3_bind_int64(stmt.in(), lpc + 1, iter->lv_value.i); break; case logline_value::VALUE_NULL: sqlite3_bind_null(stmt.in(), lpc + 1); break; default: sqlite3_bind_text(stmt.in(), lpc + 1, iter->text_value(), iter->text_length(), SQLITE_TRANSIENT); break; } } } else { sqlite3_bind_null(stmt.in(), lpc + 1); log_warning("Could not bind variable: %s", name); } } if (lnav_data.ld_rl_view != NULL) { lnav_data.ld_rl_view->set_value("Executing query: " + sql + " ..."); } ec.ec_sql_callback(ec, stmt.in()); while (!done) { retcode = sqlite3_step(stmt.in()); switch (retcode) { case SQLITE_OK: case SQLITE_DONE: done = true; break; case SQLITE_ROW: ec.ec_sql_callback(ec, stmt.in()); break; default: { const char *errmsg; log_error("sqlite3_step error code: %d", retcode); errmsg = sqlite3_errmsg(lnav_data.ld_db); retval = "error: " + string(errmsg); done = true; } break; } } if (!dls.dls_rows.empty() && !ec.ec_local_vars.empty() && !ec.ec_dry_run) { auto &vars = ec.ec_local_vars.top(); for (int lpc = 0; lpc < dls.dls_headers.size(); lpc++) { const string &column_name = dls.dls_headers[lpc].hm_name; if (sql_ident_needs_quote(column_name.c_str())) { continue; } vars[column_name] = dls.dls_rows[0][lpc]; } } if (lnav_data.ld_rl_view != NULL) { lnav_data.ld_rl_view->set_value(""); } } gettimeofday(&end_tv, NULL); if (retcode == SQLITE_DONE) { lnav_data.ld_views[LNV_DB].reload_data(); lnav_data.ld_views[LNV_DB].set_left(0); if (!ec.ec_accumulator.empty()) { retval = ec.ec_accumulator.get_string(); } else if (dls.dls_rows.size() > 0) { vis_bookmarks &bm = lnav_data.ld_views[LNV_LOG].get_bookmarks(); if (lnav_data.ld_flags & LNF_HEADLESS) { if (ec.ec_local_vars.size() == 1) { ensure_view(&lnav_data.ld_views[LNV_DB]); } retval = ""; alt_msg = ""; } else if (dls.dls_headers.size() == 1 && !bm[&BM_QUERY].empty()) { retval = ""; alt_msg = HELP_MSG_2( y, Y, "to move forward/backward through query results " "in the log view"); } else if (dls.dls_rows.size() == 1) { auto &row = dls.dls_rows[0]; if (dls.dls_headers.size() == 1) { retval = row[0]; } else { for (int lpc = 0; lpc < dls.dls_headers.size(); lpc++) { if (lpc > 0) { retval.append("; "); } retval.append(dls.dls_headers[lpc].hm_name); retval.push_back('='); retval.append(row[lpc]); } } } else { int row_count = dls.dls_rows.size(); char row_count_buf[128]; struct timeval diff_tv; timersub(&end_tv, &start_tv, &diff_tv); snprintf(row_count_buf, sizeof(row_count_buf), ANSI_BOLD("%'d") " row%s matched in " ANSI_BOLD("%ld.%03ld") " seconds", row_count, row_count == 1 ? "" : "s", diff_tv.tv_sec, std::max((long) diff_tv.tv_usec / 1000, 1L)); retval = row_count_buf; alt_msg = HELP_MSG_2( y, Y, "to move forward/backward through query results " "in the log view"); } } #ifdef HAVE_SQLITE3_STMT_READONLY else if (sqlite3_stmt_readonly(stmt.in())) { retval = "No rows matched"; alt_msg = ""; } #endif } if (!(lnav_data.ld_flags & LNF_HEADLESS)) { lnav_data.ld_bottom_source.update_loading(0, 0); lnav_data.ld_status[LNS_BOTTOM].do_update(); redo_search(LNV_DB); } return retval; } static string execute_file_contents(exec_context &ec, const string &path, bool multiline) { string retval; FILE *file; if (path == "-" || path == "/dev/stdin") { if (isatty(STDIN_FILENO)) { return "error: stdin has already been consumed"; } file = stdin; } else if ((file = fopen(path.c_str(), "r")) == NULL) { return "error: unable to open file"; } int line_number = 0, starting_line_number = 0; char *line = NULL; size_t line_max_size; ssize_t line_size; string cmdline; char mode = '\0'; pair dir_and_base = split_path(path); ec.ec_path_stack.push_back(dir_and_base.first); while ((line_size = getline(&line, &line_max_size, file)) != -1) { line_number += 1; if (trim(line).empty()) { continue; } if (line[0] == '#') { continue; } switch (line[0]) { case ':': case '/': case ';': case '|': if (mode) { retval = execute_from_file(ec, path, starting_line_number, mode, trim(cmdline)); } starting_line_number = line_number; mode = line[0]; cmdline = string(&line[1]); break; default: if (multiline) { cmdline += line; } else { retval = execute_from_file(ec, path, line_number, ':', line); } break; } } if (mode) { retval = execute_from_file(ec, path, starting_line_number, mode, trim(cmdline)); } if (file == stdin) { if (isatty(STDOUT_FILENO)) { log_perror(dup2(STDOUT_FILENO, STDIN_FILENO)); } } else { fclose(file); } ec.ec_path_stack.pop_back(); return retval; } string execute_file(exec_context &ec, const string &path_and_args, bool multiline) { map > scripts; map >::iterator iter; vector split_args; string msg, retval; shlex lexer(path_and_args); log_info("Executing file: %s", path_and_args.c_str()); if (!lexer.split(split_args, ec.ec_local_vars.top())) { retval = "error: unable to parse path"; } else if (split_args.empty()) { retval = "error: no script specified"; } else { ec.ec_local_vars.push(map()); string script_name = split_args[0]; map &vars = ec.ec_local_vars.top(); char env_arg_name[32]; string star, result, open_error = "file not found"; add_ansi_vars(vars); snprintf(env_arg_name, sizeof(env_arg_name), "%d", (int) split_args.size() - 1); vars["#"] = env_arg_name; for (size_t lpc = 0; lpc < split_args.size(); lpc++) { snprintf(env_arg_name, sizeof(env_arg_name), "%lu", lpc); vars[env_arg_name] = split_args[lpc]; } for (size_t lpc = 1; lpc < split_args.size(); lpc++) { if (lpc > 1) { star.append(" "); } star.append(split_args[lpc]); } vars["__all__"] = star; vector paths_to_exec; map::iterator internal_iter; find_format_scripts(lnav_data.ld_config_paths, scripts); if ((iter = scripts.find(script_name)) != scripts.end()) { paths_to_exec = iter->second; } if (script_name == "-" || script_name == "/dev/stdin") { paths_to_exec.push_back({script_name}); } else if (access(script_name.c_str(), R_OK) == 0) { struct script_metadata meta; meta.sm_path = script_name; extract_metadata_from_file(meta); paths_to_exec.push_back(meta); } else if (errno != ENOENT) { open_error = strerror(errno); } else { string local_path = ec.ec_path_stack.back() + "/" + script_name; if (access(local_path.c_str(), R_OK) == 0) { struct script_metadata meta; meta.sm_path = local_path; extract_metadata_from_file(meta); paths_to_exec.push_back(meta); } else if (errno != ENOENT) { open_error = strerror(errno); } } if (!paths_to_exec.empty()) { for (vector::iterator path_iter = paths_to_exec.begin(); path_iter != paths_to_exec.end(); ++path_iter) { result = execute_file_contents(ec, path_iter->sm_path, multiline); } retval = result; } else { retval = "error: unknown script -- " + script_name + " -- " + open_error; } ec.ec_local_vars.pop(); } return retval; } string execute_from_file(exec_context &ec, const string &path, int line_number, char mode, const string &cmdline) { string retval, alt_msg; switch (mode) { case ':': retval = execute_command(ec, cmdline); break; case '/': case ';': setup_logline_table(); retval = execute_sql(ec, cmdline, alt_msg); break; case '|': retval = execute_file(ec, cmdline); break; default: retval = execute_command(ec, cmdline); break; } if (rescan_files()) { rebuild_indexes(true); } log_info("%s:%d:execute result -- %s", path.c_str(), line_number, retval.c_str()); return retval; } string execute_any(exec_context &ec, const string &cmdline_with_mode) { string retval, alt_msg, cmdline = cmdline_with_mode.substr(1); switch (cmdline_with_mode[0]) { case ':': retval = execute_command(ec, cmdline); break; case '/': case ';': setup_logline_table(); retval = execute_sql(ec, cmdline, alt_msg); break; case '|': { retval = execute_file(ec, cmdline); break; } default: retval = execute_command(ec, cmdline); break; } if (rescan_files()) { rebuild_indexes(true); } return retval; } void execute_init_commands(exec_context &ec, vector > &msgs) { if (lnav_data.ld_cmd_init_done) { return; } db_label_source &dls = lnav_data.ld_db_row_source; log_info("Executing initial commands"); for (auto &cmd : lnav_data.ld_commands) { string msg, alt_msg; wait_for_children(); switch (cmd.at(0)) { case ':': msg = execute_command(ec, cmd.substr(1)); break; case '/': case ';': setup_logline_table(); msg = execute_sql(ec, cmd.substr(1), alt_msg); break; case '|': msg = execute_file(ec, cmd.substr(1)); break; } msgs.push_back(make_pair(msg, alt_msg)); if (rescan_files()) { rebuild_indexes(true); } } lnav_data.ld_commands.clear(); if (!lnav_data.ld_pt_search.empty()) { #ifdef HAVE_LIBCURL unique_ptr pt(new papertrail_proc( lnav_data.ld_pt_search.substr(3), lnav_data.ld_pt_min_time, lnav_data.ld_pt_max_time)); lnav_data.ld_file_names[lnav_data.ld_pt_search] .with_fd(pt->copy_fd()); lnav_data.ld_curl_looper.add_request(pt.release()); #endif } if (dls.dls_rows.size() > 1) { ensure_view(&lnav_data.ld_views[LNV_DB]); } lnav_data.ld_cmd_init_done = true; } int sql_callback(exec_context &ec, sqlite3_stmt *stmt) { db_label_source &dls = lnav_data.ld_db_row_source; logfile_sub_source &lss = lnav_data.ld_log_source; if (!sqlite3_stmt_busy(stmt)) { dls.clear(); lss.text_clear_marks(&BM_QUERY); return 0; } stacked_bar_chart &chart = dls.dls_chart; view_colors &vc = view_colors::singleton(); int ncols = sqlite3_column_count(stmt); 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++) { int type = sqlite3_column_type(stmt, lpc); string colname = sqlite3_column_name(stmt, lpc); bool graphable; graphable = ((type == SQLITE_INTEGER || type == SQLITE_FLOAT) && !binary_search(lnav_data.ld_db_key_names.begin(), lnav_data.ld_db_key_names.end(), colname)); dls.push_header(colname, type, graphable); if (graphable) { int attrs = vc.attrs_for_ident(colname); chart.with_attrs_for_ident(colname, attrs); } } } for (lpc = 0; lpc < ncols; lpc++) { const char *value = (const char *)sqlite3_column_text(stmt, lpc); dls.push_column(value); if (value != NULL && (dls.dls_headers[lpc].hm_name == "log_line" || dls.dls_headers[lpc].hm_name == "min(log_line)")) { int line_number = -1; if (sscanf(value, "%d", &line_number) == 1) { lnav_data.ld_views[LNV_LOG].toggle_user_mark( &BM_QUERY, vis_line_t(line_number)); } } } return retval; } future pipe_callback(exec_context &ec, const string &cmdline, auto_fd &fd) { auto pp = make_shared(fd, false); static int exec_count = 0; char desc[128]; lnav_data.ld_pipers.push_back(pp); snprintf(desc, sizeof(desc), "[%d] Output of %s", exec_count++, cmdline.c_str()); lnav_data.ld_file_names[desc] .with_fd(pp->get_fd()) .with_detect_format(false); lnav_data.ld_files_to_front.push_back(make_pair(desc, 0)); if (lnav_data.ld_rl_view != NULL) { lnav_data.ld_rl_view->set_alt_value(HELP_MSG_1( X, "to close the file")); } packaged_task task([]() { return ""; }); task(); return task.get_future(); } lnav-0.8.2/src/command_executor.hh000664 000765 000024 00000006676 13070203404 017407 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef LNAV_COMMAND_EXECUTOR_H #define LNAV_COMMAND_EXECUTOR_H #include #include #include #include "attr_line.hh" struct exec_context; typedef int (*sql_callback_t)(exec_context &ec, sqlite3_stmt *stmt); typedef std::future (*pipe_callback_t)( exec_context &ec, const std::string &cmdline, auto_fd &fd); struct exec_context { exec_context(std::vector *line_values = NULL, sql_callback_t sql_callback = NULL, pipe_callback_t pipe_callback = NULL) : ec_top_line(vis_line_t(0)), ec_dry_run(false), ec_line_values(line_values), ec_sql_callback(sql_callback), ec_pipe_callback(pipe_callback) { this->ec_local_vars.push(std::map()); this->ec_path_stack.push_back("."); } vis_line_t ec_top_line; bool ec_dry_run; std::map ec_override; std::vector *ec_line_values; std::stack > ec_local_vars; std::map ec_global_vars; std::vector ec_path_stack; attr_line_t ec_accumulator; sql_callback_t ec_sql_callback; pipe_callback_t ec_pipe_callback; }; std::string execute_command(exec_context &ec, const std::string &cmdline); std::string execute_sql(exec_context &ec, const std::string &sql, std::string &alt_msg); std::string execute_file(exec_context &ec, const std::string &path_and_args, bool multiline = true); std::string execute_any(exec_context &ec, const std::string &cmdline); void execute_init_commands(exec_context &ec, std::vector > &msgs); int sql_callback(exec_context &ec, sqlite3_stmt *stmt); std::future pipe_callback( exec_context &ec, const std::string &cmdline, auto_fd &fd); int sql_progress(const struct log_cursor &lc); #endif //LNAV_COMMAND_EXECUTOR_H lnav-0.8.2/src/concise_index.hh000664 000765 000024 00000036357 12477462531 016706 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __concise_index_hh #define __concise_index_hh #include #include #include #include #include "lnav_log.hh" class concise_index { public: concise_index() : ci_bitmap(NULL), ci_map_size(0), ci_map_max_size(0), ci_literal_size(0), ci_size(0) { this->ensure_size(1); }; ~concise_index() { free(this->ci_bitmap); this->ci_bitmap = NULL; }; uint64_t size(void) const { return this->ci_size; }; bool empty(void) const { return this->ci_size == 0; }; void clear(void) { memset(this->ci_bitmap, 0, sizeof(uint64_t) * this->ci_map_size); this->ci_literal_size = 0; this->ci_size = 0; this->ci_map_size = 1; }; bool push_back(bool v) { uint64_t &lit_or_rle_word = this->get_last_word(); if (this->is_rle(lit_or_rle_word)) { if (this->get_rle_value(lit_or_rle_word) == v && this->have_run_length_available(lit_or_rle_word)) { this->inc_run_length(lit_or_rle_word); this->ci_size += 1; ensure(this->ci_literal_size == 0); return true; } if (!this->ensure_size(this->ci_map_size + 1)) { return false; } } if (this->ci_literal_size == LITERAL_SIZE) { if (!this->ensure_size(this->ci_map_size + 1)) { return false; } this->ci_literal_size = 0; } uint64_t &lit_word = this->get_last_word(); if (v) { lit_word |= this->bit_in_word(this->ci_literal_size); } this->ci_literal_size += 1; this->ci_size += 1; this->compact_last_word(); ensure(this->ci_literal_size <= LITERAL_SIZE); return true; }; void pop_back() { uint64_t &lit_or_rle_word = this->get_last_word(); this->ci_size -= 1; if (this->is_rle(lit_or_rle_word)) { this->dec_run_length(lit_or_rle_word); if (this->run_length(lit_or_rle_word) == 0) { lit_or_rle_word = 0; this->ci_literal_size = 0; } return; } this->ci_literal_size -= 1; if (this->ci_literal_size == 0 && this->ci_map_size > 1) { this->ci_map_size -= 1; } }; bool push_back_word(uint64_t v, uint64_t len = BITS_PER_WORD) { uint64_t &lit_or_rle_word = this->get_last_word(); require(len <= BITS_PER_WORD); if (len == 0) { return true; } for (uint64_t lpc = len; lpc < BITS_PER_WORD; lpc++) { uint64_t mask = 1ULL << (len - 1); uint64_t bit_to_set_or_clear = (1ULL << lpc); if (v & mask) { v |= bit_to_set_or_clear; } else { v &= ~bit_to_set_or_clear; } } if ((v == 0ULL || v == ~0ULL) && (this->is_rle(lit_or_rle_word) || this->ci_literal_size == 0)) { bool bv = (bool) v; if (this->is_rle(lit_or_rle_word)) { if (this->get_rle_value(lit_or_rle_word) == bv && this->have_run_length_available(lit_or_rle_word, len)) { this->inc_run_length(lit_or_rle_word); this->ci_size += len; return true; } if (!this->ensure_size(this->ci_map_size + 1)) { return false; } } uint64_t &last_word = this->get_last_word(); last_word = ( RLE_MODE | (v & VAL_MASK) | len); this->ci_size += len; this->compact_last_word(); return true; } int words_needed = 0; if (this->is_rle(lit_or_rle_word)) { words_needed = 1; if (len > LITERAL_SIZE) { words_needed += 1; } if (!this->ensure_size(this->ci_map_size + words_needed)) { return false; } } else { if ((this->ci_literal_size + len) > LITERAL_SIZE) { words_needed = 1; } if (!this->ensure_size(this->ci_map_size + words_needed)) { return false; } words_needed += 1; } uint64_t &prev_word = this->ci_bitmap[this->ci_map_size - words_needed]; uint64_t &last_word = this->get_last_word(); prev_word |= (v << this->ci_literal_size) & LITERAL_MASK; if (words_needed == 2) { last_word = v >> this->ci_literal_size; } this->ci_literal_size = len - this->ci_literal_size; this->ci_size += len; this->compact_last_word(); return true; }; struct const_iterator { const_iterator(const concise_index *ci = NULL, uint64_t map_index = 0, uint64_t bit_index = 0) : i_parent(ci), i_map_index(map_index), i_bit_index(bit_index) { }; void increment(uint64_t amount) { uint64_t &curr_word = this->i_parent->ci_bitmap[this->i_map_index]; if (this->i_parent->is_rle(curr_word)) { if ((this->i_bit_index + amount) < this->i_parent->run_length(curr_word)) { this->i_bit_index += amount; } else { amount -= (this->i_parent->run_length(curr_word) - this->i_bit_index); this->i_map_index += 1; this->i_bit_index = amount; } } else { if ((this->i_bit_index + amount) < LITERAL_SIZE) { this->i_bit_index += amount; } else { amount -= LITERAL_SIZE - this->i_bit_index; this->i_map_index += 1; this->i_bit_index = amount; } } if (this->i_map_index >= (this->i_parent->ci_map_size - 1)) { const uint64_t &last_word = this->i_parent->get_last_word(); if (this->i_map_index >= this->i_parent->ci_map_size) { this->i_map_index = this->i_parent->ci_map_size - 1; this->i_bit_index = ~0ULL; } if (this->i_parent->is_rle(last_word)) { if (this->i_bit_index > this->i_parent->run_length(last_word)) { this->i_bit_index = this->i_parent->run_length(last_word); } } else { if (this->i_bit_index > this->i_parent->ci_literal_size) { this->i_bit_index = this->i_parent->ci_literal_size; } } } ensure(this->i_map_index < this->i_parent->ci_map_size); }; void next_word() { this->increment(BITS_PER_WORD); }; const_iterator &operator++(void) { this->increment(1); return *this; }; bool operator!=(const const_iterator &rhs) const { return (this->i_map_index != rhs.i_map_index || this->i_bit_index != rhs.i_bit_index); }; bool operator==(const const_iterator &rhs) const { return (this->i_map_index == rhs.i_map_index || this->i_bit_index == rhs.i_bit_index); }; bool operator*(void) const { uint64_t &word = this->i_parent->ci_bitmap[this->i_map_index]; if (this->i_parent->is_rle(word)) { return this->i_parent->get_rle_value(word); } return (bool) (word & this->i_parent->bit_in_word(this->i_bit_index)); }; uint64_t get_word(size_t &valid_bits_out) const { uint64_t &word = this->i_parent->ci_bitmap[this->i_map_index]; uint64_t bits_remaining = BITS_PER_WORD; uint64_t next_index = this->i_map_index + 1; uint64_t retval = 0; valid_bits_out = 0; if (this->i_parent->is_literal(word)) { retval = (word >> this->i_bit_index); if (this->i_map_index == (this->i_parent->ci_map_size - 1)) { valid_bits_out = this->i_parent->ci_literal_size; } else { valid_bits_out = (LITERAL_SIZE - this->i_bit_index); } bits_remaining -= valid_bits_out; } else { uint64_t min_len = std::min( this->i_parent->run_length(word) - this->i_bit_index, bits_remaining); bits_remaining -= min_len; valid_bits_out += min_len; if (this->i_parent->get_rle_value(word)) { retval = ~0ULL; } else { retval = 0ULL; } retval = retval >> bits_remaining; } if (bits_remaining && next_index < this->i_parent->ci_map_size) { uint64_t &next_word = this->i_parent->ci_bitmap[next_index]; uint64_t upper_bits = 0; if (this->i_parent->is_literal(next_word)) { upper_bits = next_word; if (this->i_map_index == (this->i_parent->ci_map_size - 1)) { valid_bits_out += this->i_parent->ci_literal_size; valid_bits_out = std::min( (size_t)BITS_PER_WORD, valid_bits_out); } } else if (this->i_parent->get_rle_value(next_word)) { upper_bits = ~0ULL; valid_bits_out = BITS_PER_WORD; } else { upper_bits = 0; valid_bits_out = BITS_PER_WORD; } retval |= (upper_bits << (BITS_PER_WORD - bits_remaining)); } return retval; }; const concise_index *i_parent; uint64_t i_map_index; uint64_t i_bit_index; }; const_iterator begin() { return const_iterator(this); }; const_iterator end() { uint64_t &word = this->get_last_word(); if (this->is_rle(word)) { return const_iterator(this, this->ci_map_size - 1, this->run_length(word)); } else { return const_iterator(this, this->ci_map_size - 1, this->ci_literal_size); } }; // private: static const uint64_t MODE_MASK = 0x8000000000000000ULL; static const uint64_t VAL_MASK = 0x4000000000000000ULL; static const uint64_t POS_MASK = 0x3f00000000000000ULL; static const uint64_t LEN_MASK = 0x00ffffffffffffffULL; static const uint64_t LITERAL_MASK = ~MODE_MASK; static const uint64_t RLE_MODE = MODE_MASK; static const uint64_t LIT_MODE = 0ULL; static const uint64_t BITS_PER_WORD = sizeof(uint64_t) * 8; static const uint64_t LITERAL_SIZE = BITS_PER_WORD - 1; static const uint64_t BITMAP_INCREMENT = 64; bool is_literal(uint64_t v) const { return (v & MODE_MASK) == LIT_MODE; }; bool is_rle(uint64_t v) const { return (v & MODE_MASK) == RLE_MODE; }; bool get_rle_value(uint64_t v) const { return (bool) (v & VAL_MASK); }; int pos_index(uint64_t v) const { return (int) ((v & POS_MASK) >> (64 - 6 - 1)); }; uint64_t run_length(uint64_t v) const { return (v & LEN_MASK); }; void inc_run_length(uint64_t &v, uint64_t len = 1) const { v += len; }; void dec_run_length(uint64_t &v, uint64_t len = 1) const { v -= len; }; bool have_run_length_available(uint64_t v, uint64_t len = 1) const { return (this->run_length(v) + len) < LEN_MASK; }; uint64_t bitmap_size_for_bits(uint64_t bits_size) { return (bits_size + LITERAL_SIZE - 1) / LITERAL_SIZE; }; uint64_t &get_word(uint64_t bit_index) { uint64_t word_index = bit_index / sizeof(uint64_t); return this->ci_bitmap[word_index]; }; uint64_t &get_last_word() { return this->ci_bitmap[this->ci_map_size - 1]; }; const uint64_t &get_last_word() const { return this->ci_bitmap[this->ci_map_size - 1]; }; uint64_t bit_in_word(uint64_t bit_index) const { uint64_t bit_in_word_index = bit_index % LITERAL_SIZE; return (1ULL << bit_in_word_index); }; void compact_last_word() { if (this->ci_size == 0 || this->ci_literal_size % LITERAL_SIZE) { return; } uint64_t &last_word = this->get_last_word(); if (last_word != 0 && last_word != LITERAL_MASK) { return; } last_word = ( RLE_MODE | (last_word & VAL_MASK) | LITERAL_SIZE); this->ci_literal_size = 0; }; bool ensure_size(uint64_t map_size) { if (map_size <= this->ci_map_max_size) { this->ci_map_size = map_size; return true; } uint64_t new_map_size = map_size + BITMAP_INCREMENT; uint64_t *new_bitmap = (uint64_t *)realloc( this->ci_bitmap, new_map_size * sizeof(uint64_t)); if (new_bitmap == NULL) { return false; } memset(&new_bitmap[this->ci_map_size], 0, (new_map_size - this->ci_map_size) * sizeof(uint64_t)); this->ci_bitmap = new_bitmap; this->ci_map_size = map_size; this->ci_map_max_size = new_map_size; return true; }; uint64_t *ci_bitmap; uint64_t ci_map_size; uint64_t ci_map_max_size; uint64_t ci_literal_size; uint64_t ci_size; }; #endif lnav-0.8.2/src/config.h.in000664 000765 000024 00000014112 13073703423 015546 0ustar00stackstaff000000 000000 /* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_BZLIB_H /* Define to 1 if a SysV or X/Open compatible Curses library is present */ #undef HAVE_CURSES /* Define to 1 if library supports color (enhanced functions) */ #undef HAVE_CURSES_COLOR /* Define to 1 if library supports X/Open Enhanced functions */ #undef HAVE_CURSES_ENHANCED /* Define to 1 if is present */ #undef HAVE_CURSES_H /* Define to 1 if library supports certain obsolete features */ #undef HAVE_CURSES_OBSOLETE /* define if the compiler supports basic C++14 syntax */ #undef HAVE_CXX14 /* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. */ #undef HAVE_DECL_TZNAME /* Define to 1 if you have the header file. */ #undef HAVE_EXECINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_JEMALLOC_JEMALLOC_H /* Define to 1 if you have a functional curl library. */ #undef HAVE_LIBCURL /* Define to 1 if you have the `pcre' library (-lpcre). */ #undef HAVE_LIBPCRE /* Define to 1 if you have the header file. */ #undef HAVE_LIBUTIL_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if the Ncurses library is present */ #undef HAVE_NCURSES /* Define to 1 if the NcursesW library is present */ #undef HAVE_NCURSESW /* Define to 1 if is present */ #undef HAVE_NCURSESW_CURSES_H /* Define to 1 if is present */ #undef HAVE_NCURSESW_H /* Define to 1 if is present */ #undef HAVE_NCURSES_CURSES_H /* Define to 1 if is present */ #undef HAVE_NCURSES_H /* Define to 1 if you have the header file. */ #undef HAVE_PCRE_H /* Define to 1 if you have the header file. */ #undef HAVE_PCRE_PCRE_H /* Define to 1 if you have the header file. */ #undef HAVE_PTY_H /* Define to 1 if you have the header file. */ #undef HAVE_READLINE_H /* Define to 1 if you have the header file. */ #undef HAVE_READLINE_READLINE_H /* Define to 1 if you have the header file. */ #undef HAVE_SQLITE3_H /* Have the sqlite3_stmt_readonly function */ #undef HAVE_SQLITE3_STMT_READONLY /* Have the sqlite3_value_subtype function */ #undef HAVE_SQLITE3_VALUE_SUBTYPE /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if `tm_zone' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM_TM_ZONE /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTYDEFAULTS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE /* Define to 1 if you don't have `tm_zone' but do have the external array `tzname'. */ #undef HAVE_TZNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_UTIL_H /* Define to 1 if you have the header file. */ #undef HAVE_YAJL_YAJL_PARSE_H /* Define to 1 if you have the header file. */ #undef HAVE_ZLIB_H /* Defined if libcurl supports AsynchDNS */ #undef LIBCURL_FEATURE_ASYNCHDNS /* Defined if libcurl supports IDN */ #undef LIBCURL_FEATURE_IDN /* Defined if libcurl supports IPv6 */ #undef LIBCURL_FEATURE_IPV6 /* Defined if libcurl supports KRB4 */ #undef LIBCURL_FEATURE_KRB4 /* Defined if libcurl supports libz */ #undef LIBCURL_FEATURE_LIBZ /* Defined if libcurl supports NTLM */ #undef LIBCURL_FEATURE_NTLM /* Defined if libcurl supports SSL */ #undef LIBCURL_FEATURE_SSL /* Defined if libcurl supports SSPI */ #undef LIBCURL_FEATURE_SSPI /* Defined if libcurl supports DICT */ #undef LIBCURL_PROTOCOL_DICT /* Defined if libcurl supports FILE */ #undef LIBCURL_PROTOCOL_FILE /* Defined if libcurl supports FTP */ #undef LIBCURL_PROTOCOL_FTP /* Defined if libcurl supports FTPS */ #undef LIBCURL_PROTOCOL_FTPS /* Defined if libcurl supports HTTP */ #undef LIBCURL_PROTOCOL_HTTP /* Defined if libcurl supports HTTPS */ #undef LIBCURL_PROTOCOL_HTTPS /* Defined if libcurl supports IMAP */ #undef LIBCURL_PROTOCOL_IMAP /* Defined if libcurl supports LDAP */ #undef LIBCURL_PROTOCOL_LDAP /* Defined if libcurl supports POP3 */ #undef LIBCURL_PROTOCOL_POP3 /* Defined if libcurl supports RTSP */ #undef LIBCURL_PROTOCOL_RTSP /* Defined if libcurl supports SMTP */ #undef LIBCURL_PROTOCOL_SMTP /* Defined if libcurl supports TELNET */ #undef LIBCURL_PROTOCOL_TELNET /* Defined if libcurl supports TFTP */ #undef LIBCURL_PROTOCOL_TFTP /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `off_t', as computed by sizeof. */ #undef SIZEOF_OFF_T /* The size of `size_t', as computed by sizeof. */ #undef SIZEOF_SIZE_T /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* VCS package string */ #undef VCS_PACKAGE_STRING /* Version number of package */ #undef VERSION /* Need pread */ #undef _BSD_SOURCE /* Define curl_free() as free() if our version of curl lacks curl_free. */ #undef curl_free lnav-0.8.2/src/curl_looper.cc000644 000765 000024 00000021642 12575732465 016401 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file curl_looper.cc */ #include "config.h" #include #ifdef HAVE_LIBCURL #include #include "curl_looper.hh" using namespace std; struct curl_request_eq { curl_request_eq(const std::string &name) : cre_name(name) { }; bool operator()(const curl_request *cr) const { return this->cre_name == cr->get_name(); }; bool operator()(const pair &pair) const { return this->cre_name == pair.second->get_name(); }; const std::string &cre_name; }; int curl_request::debug_cb(CURL *handle, curl_infotype type, char *data, size_t size, void *userp) { curl_request *cr = (curl_request *) userp; bool write_to_log; switch (type) { case CURLINFO_TEXT: write_to_log = true; break; case CURLINFO_HEADER_IN: case CURLINFO_HEADER_OUT: if (lnav_log_level == LOG_LEVEL_TRACE) { write_to_log = true; } else { write_to_log = false; } break; default: write_to_log = false; break; } if (write_to_log) { while (size > 0 && isspace(data[size - 1])) { size -= 1; } log_debug("%s:%.*s", cr->get_name().c_str(), size, data); } return 0; } void *curl_looper::trampoline(void *arg) { curl_looper *cl = (curl_looper *) arg; return cl->run(); } void *curl_looper::run() { log_info("curl looper thread started"); while (this->cl_looping) { this->loop_body(); } log_info("curl looper thread exiting"); return NULL; } void curl_looper::loop_body() { mstime_t current_time = getmstime(); int timeout = this->compute_timeout(current_time); if (this->cl_handle_to_request.empty()) { mutex_guard mg(this->cl_mutex); if (this->cl_new_requests.empty() && this->cl_close_requests.empty()) { mstime_t deadline = current_time + timeout; struct timespec ts; ts.tv_sec = deadline / 1000ULL; ts.tv_nsec = (deadline % 1000ULL) * 1000 * 1000; log_trace("no requests in progress, waiting %d ms for new ones", timeout); pthread_cond_timedwait(&this->cl_cond, &this->cl_mutex, &ts); } } this->perform_io(); this->check_for_finished_requests(); this->check_for_new_requests(); this->requeue_requests(current_time + 5); } void curl_looper::perform_io() { if (this->cl_handle_to_request.empty()) { return; } mstime_t current_time = getmstime(); int timeout = this->compute_timeout(current_time); int running_handles; curl_multi_wait(this->cl_curl_multi, NULL, 0, timeout, NULL); curl_multi_perform(this->cl_curl_multi, &running_handles); } void curl_looper::requeue_requests(mstime_t up_to_time) { while (!this->cl_poll_queue.empty() && this->cl_poll_queue.front().first <= up_to_time) { curl_request *cr = this->cl_poll_queue.front().second; log_debug("%s:polling request is ready again -- %p", cr->get_name().c_str(), cr); this->cl_handle_to_request[cr->get_handle()] = cr; curl_multi_add_handle(this->cl_curl_multi, cr->get_handle()); this->cl_poll_queue.erase(this->cl_poll_queue.begin()); } } void curl_looper::check_for_new_requests() { mutex_guard mg(this->cl_mutex); while (!this->cl_new_requests.empty()) { curl_request *cr = this->cl_new_requests.back(); log_info("%s:new curl request %p", cr->get_name().c_str(), cr); this->cl_handle_to_request[cr->get_handle()] = cr; curl_multi_add_handle(this->cl_curl_multi, cr->get_handle()); this->cl_new_requests.pop_back(); } while (!this->cl_close_requests.empty()) { const std::string &name = this->cl_close_requests.back(); vector::iterator all_iter = find_if( this->cl_all_requests.begin(), this->cl_all_requests.end(), curl_request_eq(name)); log_info("attempting to close request -- %s", name.c_str()); if (all_iter != this->cl_all_requests.end()) { map::iterator act_iter; vector >::iterator poll_iter; curl_request *cr = *all_iter; log_info("%s:closing request -- %p", cr->get_name().c_str(), cr); (*all_iter)->close(); act_iter = this->cl_handle_to_request.find(cr); if (act_iter != this->cl_handle_to_request.end()) { this->cl_handle_to_request.erase(act_iter); curl_multi_remove_handle(this->cl_curl_multi, cr->get_handle()); delete cr; } poll_iter = find_if(this->cl_poll_queue.begin(), this->cl_poll_queue.end(), curl_request_eq(name)); if (poll_iter != this->cl_poll_queue.end()) { this->cl_poll_queue.erase(poll_iter); } this->cl_all_requests.erase(all_iter); } else { log_error("Unable to find request with the name -- %s", name.c_str()); } this->cl_close_requests.pop_back(); pthread_cond_broadcast(&this->cl_cond); } } void curl_looper::check_for_finished_requests() { CURLMsg *msg; int msgs_left; while ((msg = curl_multi_info_read(this->cl_curl_multi, &msgs_left)) != NULL) { if (msg->msg != CURLMSG_DONE) { continue; } CURL *easy = msg->easy_handle; map::iterator iter = this->cl_handle_to_request.find(easy); curl_multi_remove_handle(this->cl_curl_multi, easy); if (iter != this->cl_handle_to_request.end()) { curl_request *cr = iter->second; long delay_ms; this->cl_handle_to_request.erase(iter); delay_ms = cr->complete(msg->data.result); if (delay_ms < 0) { vector::iterator all_iter; log_info("%s:curl_request %p finished, deleting...", cr->get_name().c_str(), cr); { mutex_guard mg(this->cl_mutex); all_iter = find(this->cl_all_requests.begin(), this->cl_all_requests.end(), cr); if (all_iter != this->cl_all_requests.end()) { this->cl_all_requests.erase(all_iter); } pthread_cond_broadcast(&cl_cond); } delete cr; } else { log_debug("%s:curl_request %p is polling, requeueing in %d", cr->get_name().c_str(), cr, delay_ms); this->cl_poll_queue.push_back( make_pair(getmstime() + delay_ms, cr)); sort(this->cl_poll_queue.begin(), this->cl_poll_queue.end()); } } } } #endif lnav-0.8.2/src/curl_looper.hh000644 000765 000024 00000016025 12642760627 016406 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file curl_looper.hh */ #ifndef curl_looper_hh #define curl_looper_hh #include #include #include #ifndef HAVE_LIBCURL typedef int CURLcode; class curl_request { public: curl_request(const std::string &name) { }; }; class curl_looper { public: void start() { }; void stop() { }; void add_request(curl_request *cr) { }; void close_request(const std::string &name) { }; void process_all() { }; }; #else #include #include "auto_mem.hh" #include "lnav_log.hh" #include "lnav_util.hh" #include "pthreadpp.hh" class curl_request { public: curl_request(const std::string &name) : cr_name(name), cr_open(true), cr_handle(curl_easy_cleanup), cr_completions(0) { this->cr_handle.reset(curl_easy_init()); curl_easy_setopt(this->cr_handle, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(this->cr_handle, CURLOPT_ERRORBUFFER, this->cr_error_buffer); curl_easy_setopt(this->cr_handle, CURLOPT_DEBUGFUNCTION, debug_cb); curl_easy_setopt(this->cr_handle, CURLOPT_DEBUGDATA, this); curl_easy_setopt(this->cr_handle, CURLOPT_VERBOSE, 1); if (getenv("SSH_AUTH_SOCK") != NULL) { curl_easy_setopt(this->cr_handle, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_AGENT|CURLSSH_AUTH_PASSWORD); } }; virtual ~curl_request() { }; const std::string &get_name() const { return this->cr_name; }; virtual void close() { this->cr_open = false; }; bool is_open() { return this->cr_open; }; CURL *get_handle() const { return this->cr_handle; }; int get_completions() const { return this->cr_completions; }; virtual long complete(CURLcode result) { double total_time = 0, download_size = 0, download_speed = 0; this->cr_completions += 1; curl_easy_getinfo(this->cr_handle, CURLINFO_TOTAL_TIME, &total_time); log_debug("%s: total_time=%f", this->cr_name.c_str(), total_time); curl_easy_getinfo(this->cr_handle, CURLINFO_SIZE_DOWNLOAD, &download_size); log_debug("%s: download_size=%f", this->cr_name.c_str(), download_size); curl_easy_getinfo(this->cr_handle, CURLINFO_SPEED_DOWNLOAD, &download_speed); log_debug("%s: download_speed=%f", this->cr_name.c_str(), download_speed); return -1; }; protected: static int debug_cb(CURL *handle, curl_infotype type, char *data, size_t size, void *userp); const std::string cr_name; bool cr_open; auto_mem cr_handle; char cr_error_buffer[CURL_ERROR_SIZE]; int cr_completions; }; class curl_looper { public: curl_looper() : cl_started(false), cl_looping(true), cl_curl_multi(curl_multi_cleanup) { this->cl_curl_multi.reset(curl_multi_init()); pthread_mutex_init(&this->cl_mutex, NULL); pthread_cond_init(&this->cl_cond, NULL); }; ~curl_looper() { this->stop(); pthread_cond_destroy(&this->cl_cond); pthread_mutex_destroy(&this->cl_mutex); } void start() { if (pthread_create(&this->cl_thread, NULL, trampoline, this) == 0) { this->cl_started = true; } }; void stop() { if (this->cl_started) { void *result; this->cl_looping = false; { mutex_guard mg(this->cl_mutex); pthread_cond_broadcast(&this->cl_cond); } log_debug("waiting for curl_looper thread"); pthread_join(this->cl_thread, &result); log_debug("curl_looper thread joined"); this->cl_started = false; } }; void process_all() { this->check_for_new_requests(); this->requeue_requests(LONG_MAX); while (!this->cl_handle_to_request.empty()) { this->perform_io(); this->check_for_finished_requests(); } }; void add_request(curl_request *cr) { mutex_guard mg(this->cl_mutex); require(cr != NULL); this->cl_all_requests.push_back(cr); this->cl_new_requests.push_back(cr); pthread_cond_broadcast(&this->cl_cond); }; void close_request(const std::string &name) { mutex_guard mg(this->cl_mutex); this->cl_close_requests.push_back(name); pthread_cond_broadcast(&this->cl_cond); }; private: void *run(); void loop_body(); void perform_io(); void check_for_new_requests(); void check_for_finished_requests(); void requeue_requests(mstime_t up_to_time); int compute_timeout(mstime_t current_time) const { int retval = 1000; if (!this->cl_poll_queue.empty()) { retval = std::max( (mstime_t) 1, this->cl_poll_queue.front().first - current_time); } ensure(retval > 0); return retval; }; static void *trampoline(void *arg); bool cl_started; pthread_t cl_thread; volatile bool cl_looping; auto_mem cl_curl_multi; pthread_mutex_t cl_mutex; pthread_cond_t cl_cond; std::vector cl_all_requests; std::vector cl_new_requests; std::vector cl_close_requests; std::map cl_handle_to_request; std::vector > cl_poll_queue; }; #endif #endif lnav-0.8.2/src/data_parser.cc000664 000765 000024 00000012207 12710566505 016327 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include "data_parser.hh" using namespace std; data_format data_parser::FORMAT_SEMI("semi", DT_COMMA, DT_SEMI); data_format data_parser::FORMAT_COMMA("comma", DT_INVALID, DT_COMMA); data_format data_parser::FORMAT_PLAIN("plain", DT_INVALID, DT_INVALID); FILE *data_parser::TRACE_FILE; data_format_state_t dfs_prefix_next(data_format_state_t state, data_token_t next_token) { data_format_state_t retval = state; switch (state) { case DFS_INIT: switch (next_token) { case DT_PATH: case DT_COLON: case DT_EQUALS: case DT_CONSTANT: case DT_EMAIL: case DT_WORD: case DT_SYMBOL: case DT_OCTAL_NUMBER: case DT_HEX_NUMBER: case DT_NUMBER: case DT_WHITE: case DT_LSQUARE: case DT_RSQUARE: case DT_LANGLE: case DT_RANGLE: break; default: retval = DFS_ERROR; break; } break; case DFS_EXPECTING_SEP: case DFS_ERROR: retval = DFS_ERROR; break; default: break; } return retval; } data_format_state_t dfs_semi_next(data_format_state_t state, data_token_t next_token) { data_format_state_t retval = state; switch (state) { case DFS_INIT: switch (next_token) { case DT_COMMA: case DT_SEMI: retval = DFS_ERROR; break; default: retval = DFS_KEY; break; } break; case DFS_KEY: switch (next_token) { case DT_COLON: case DT_EQUALS: retval = DFS_VALUE; break; case DT_SEMI: retval = DFS_ERROR; break; default: break; } break; case DFS_VALUE: switch (next_token) { case DT_SEMI: retval = DFS_INIT; break; default: break; } break; case DFS_EXPECTING_SEP: case DFS_ERROR: retval = DFS_ERROR; break; } return retval; } data_format_state_t dfs_comma_next(data_format_state_t state, data_token_t next_token) { data_format_state_t retval = state; switch (state) { case DFS_INIT: switch (next_token) { case DT_COMMA: break; case DT_SEMI: retval = DFS_ERROR; break; default: retval = DFS_KEY; break; } break; case DFS_KEY: switch (next_token) { case DT_COLON: case DT_EQUALS: retval = DFS_VALUE; break; case DT_COMMA: retval = DFS_INIT; break; case DT_WORD: retval = DFS_EXPECTING_SEP; break; case DT_SEMI: retval = DFS_ERROR; break; default: break; } break; case DFS_EXPECTING_SEP: switch (next_token) { case DT_COLON: case DT_EQUALS: case DT_LPAREN: case DT_LCURLY: case DT_LSQUARE: case DT_LANGLE: retval = DFS_VALUE; break; case DT_COMMA: case DT_SEMI: retval = DFS_ERROR; break; default: break; } break; case DFS_VALUE: switch (next_token) { case DT_COMMA: retval = DFS_INIT; break; case DT_COLON: case DT_EQUALS: retval = DFS_ERROR; break; default: break; } break; case DFS_ERROR: retval = DFS_ERROR; break; } return retval; } lnav-0.8.2/src/data_parser.hh000664 000765 000024 00000125574 13071450130 016340 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __data_parser_hh #define __data_parser_hh #include #include "spookyhash/SpookyV2.h" #include #include #include #include #include #include "lnav_log.hh" #include "lnav_util.hh" #include "yajlpp.hh" #include "pcrepp.hh" #include "byte_array.hh" #include "data_scanner.hh" #define ELEMENT_LIST_T(var) var("" #var, __FILE__, __LINE__, group_depth) #define PUSH_FRONT(elem) push_front(elem, __FILE__, __LINE__) #define PUSH_BACK(elem) push_back(elem, __FILE__, __LINE__) #define POP_FRONT(elem) pop_front(__FILE__, __LINE__) #define POP_BACK(elem) pop_back(__FILE__, __LINE__) #define CLEAR(elem) clear2(__FILE__, __LINE__) #define SWAP(other) swap(other, __FILE__, __LINE__) #define SPLICE(pos, other, first, last) splice(pos, other, first, last, \ __FILE__, __LINE__) template void strip(Container &container, UnaryPredicate p) { while (!container.empty() && p(container.front())) { container.POP_FRONT(); } while (!container.empty() && p(container.back())) { container.POP_BACK(); } } enum data_format_state_t { DFS_ERROR = -1, DFS_INIT, DFS_KEY, DFS_EXPECTING_SEP, DFS_VALUE, }; struct data_format { data_format(const char *name = NULL, data_token_t appender = DT_INVALID, data_token_t terminator = DT_INVALID) : df_name(name), df_appender(appender), df_terminator(terminator), df_qualifier(DT_INVALID), df_separator(DT_COLON), df_prefix_terminator(DT_INVALID) {}; const char * df_name; data_token_t df_appender; data_token_t df_terminator; data_token_t df_qualifier; data_token_t df_separator; data_token_t df_prefix_terminator; }; data_format_state_t dfs_prefix_next(data_format_state_t state, data_token_t next_token); data_format_state_t dfs_semi_next(data_format_state_t state, data_token_t next_token); data_format_state_t dfs_comma_next(data_format_state_t state, data_token_t next_token); #define LIST_INIT_TRACE \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s %s %d\n", \ this, \ fn, line, \ __func__, \ varname, \ group_depth); \ } \ } while (false) #define LIST_DEINIT_TRACE \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s\n", \ this, \ fn, line, \ __func__); \ } \ } while (false) #define ELEMENT_TRACE \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s %s %d:%d\n", \ this, \ fn, line, \ __func__, \ data_scanner::token2name(elem.e_token), \ elem.e_capture.c_begin, \ elem.e_capture.c_end); \ } \ } while (false) #define LIST_TRACE \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s\n", \ this, \ fn, line, \ __func__); \ } \ } while (false) #define SPLICE_TRACE \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s %d %p %d:%d\n", \ this, \ fn, line, \ __func__, \ (int)std::distance(this->begin(), pos), \ &other, \ (int)std::distance(other.begin(), first), \ (int)std::distance(last, other.end())); \ } \ } while (false); #define SWAP_TRACE(other) \ do { \ if (TRACE_FILE != NULL) { \ fprintf(TRACE_FILE, \ "%p %s:%d %s %p\n", \ this, \ fn, line, \ __func__, \ &other); \ } \ } while (false); #define POINT_TRACE(name) \ do { \ if (TRACE_FILE) { \ fprintf(TRACE_FILE, \ "0x0 %s:%d point %s\n", \ __FILE__, __LINE__, \ name); \ } \ } while (false); #define FORMAT_TRACE(elist) \ do { \ if (TRACE_FILE) { \ const data_format &df = elist.el_format; \ fprintf(TRACE_FILE, \ "%p %s:%d format %d %s %s %s %s %s\n", \ &elist, \ __FILE__, __LINE__, \ group_depth, \ data_scanner::token2name(df.df_appender), \ data_scanner::token2name(df.df_terminator), \ data_scanner::token2name(df.df_qualifier), \ data_scanner::token2name(df.df_separator), \ data_scanner::token2name(df.df_prefix_terminator)); \ } \ } while (false); #define CONSUMED_TRACE(elist) \ do { \ if (TRACE_FILE) { \ fprintf(TRACE_FILE, \ "%p %s:%d consumed\n", \ &elist, \ __FILE__, __LINE__); \ } \ } while (false); class data_parser { public: static data_format FORMAT_SEMI; static data_format FORMAT_COMMA; static data_format FORMAT_PLAIN; static FILE *TRACE_FILE; typedef byte_array<2, uint64> schema_id_t; struct element; /* typedef std::list element_list_t; */ class element_list_t : public std::list { public: element_list_t(const char *varname, const char *fn, int line, int group_depth = -1) { LIST_INIT_TRACE; } element_list_t() { const char *varname = "_anon2_"; const char *fn = __FILE__; int line = __LINE__; int group_depth = -1; LIST_INIT_TRACE; }; element_list_t(const element_list_t &other) : std::list(other) { this->el_format = other.el_format; } ~element_list_t() { const char *fn = __FILE__; int line = __LINE__; LIST_DEINIT_TRACE; }; void push_front(const element &elem, const char *fn, int line) { ELEMENT_TRACE; this->std::list::push_front(elem); }; void push_back(const element &elem, const char *fn, int line) { ELEMENT_TRACE; this->std::list::push_back(elem); }; void pop_front(const char *fn, int line) { LIST_TRACE; this->std::list::pop_front(); }; void pop_back(const char *fn, int line) { LIST_TRACE; this->std::list::pop_back(); }; void clear2(const char *fn, int line) { LIST_TRACE; this->std::list::clear(); }; void swap(element_list_t &other, const char *fn, int line) { SWAP_TRACE(other); this->std::list::swap(other); } void splice(iterator pos, element_list_t &other, iterator first, iterator last, const char *fn, int line) { SPLICE_TRACE; this->std::list::splice(pos, other, first, last); } data_format el_format; }; struct element { element() : e_token(DT_INVALID), e_sub_elements(NULL) { }; element(element_list_t &subs, data_token_t token, bool assign_subs_elements = true) : e_capture(subs.front().e_capture.c_begin, subs.back().e_capture.c_end), e_token(token), e_sub_elements(NULL) { if (assign_subs_elements) { this->assign_elements(subs); } }; element(const element &other) { /* require(other.e_sub_elements == NULL); */ this->e_capture = other.e_capture; this->e_token = other.e_token; this->e_sub_elements = NULL; if (other.e_sub_elements != NULL) { this->assign_elements(*other.e_sub_elements); } }; ~element() { delete this->e_sub_elements; this->e_sub_elements = NULL; }; element & operator=(const element &other) { this->e_capture = other.e_capture; this->e_token = other.e_token; this->e_sub_elements = NULL; if (other.e_sub_elements != NULL) { this->assign_elements(*other.e_sub_elements); } return *this; }; void assign_elements(element_list_t &subs) { if (this->e_sub_elements == NULL) { this->e_sub_elements = new element_list_t("_sub_", __FILE__, __LINE__); this->e_sub_elements->el_format = subs.el_format; } this->e_sub_elements->SWAP(subs); this->update_capture(); }; void update_capture(void) { if (this->e_sub_elements != NULL && !this->e_sub_elements->empty()) { this->e_capture.c_begin = this->e_sub_elements->front().e_capture.c_begin; this->e_capture.c_end = this->e_sub_elements->back().e_capture.c_end; } }; const element &get_pair_value(void) const { require(this->e_token == DNT_PAIR); return this->e_sub_elements->back(); }; data_token_t value_token(void) const { data_token_t retval = DT_INVALID; if (this->e_token == DNT_VALUE) { if (this->e_sub_elements != NULL && this->e_sub_elements->size() == 1) { retval = this->e_sub_elements->front().e_token; } else { retval = DT_SYMBOL; } } else { retval = this->e_token; } return retval; }; const element &get_value_elem() const { if (this->e_token == DNT_VALUE) { if (this->e_sub_elements != NULL && this->e_sub_elements->size() == 1) { return this->e_sub_elements->front(); } } return *this; }; const element &get_pair_elem() const { if (this->e_token == DNT_VALUE) { return this->e_sub_elements->front(); } return *this; } void print(FILE *out, pcre_input &pi, int offset = 0) const { int lpc; if (this->e_sub_elements != NULL) { for (element_list_t::iterator iter2 = this->e_sub_elements->begin(); iter2 != this->e_sub_elements->end(); ++iter2) { iter2->print(out, pi, offset + 1); } } fprintf(out, "%4s %3d:%-3d ", data_scanner::token2name(this->e_token), this->e_capture.c_begin, this->e_capture.c_end); for (lpc = 0; lpc < this->e_capture.c_end; lpc++) { if (lpc == this->e_capture.c_begin) { fputc('^', out); } else if (lpc == (this->e_capture.c_end - 1)) { fputc('^', out); } else if (lpc > this->e_capture.c_begin) { fputc('-', out); } else{ fputc(' ', out); } } for (; lpc < (int)pi.pi_length; lpc++) { fputc(' ', out); } std::string sub = pi.get_substr(&this->e_capture); fprintf(out, " %s\n", sub.c_str()); }; pcre_context::capture_t e_capture; data_token_t e_token; element_list_t * e_sub_elements; }; struct element_cmp { bool operator()(data_token_t token, const element &elem) const { return token == elem.e_token || token == DT_ANY; }; bool operator()(const element &elem, data_token_t token) const { return (*this)(token, elem); }; }; struct element_if { element_if(data_token_t token) : ei_token(token) { }; bool operator()(const element &a) const { return a.e_token == this->ei_token; }; private: data_token_t ei_token; }; struct discover_format_state { discover_format_state() { memset(this->dfs_hist, 0, sizeof(this->dfs_hist)); this->dfs_prefix_state = DFS_INIT; this->dfs_semi_state = DFS_INIT; this->dfs_comma_state = DFS_INIT; } void update_for_element(const element &elem) { this->dfs_prefix_state = dfs_prefix_next(this->dfs_prefix_state, elem.e_token); this->dfs_semi_state = dfs_semi_next(this->dfs_semi_state, elem.e_token); this->dfs_comma_state = dfs_comma_next(this->dfs_comma_state, elem.e_token); if (this->dfs_prefix_state != DFS_ERROR) { if (this->dfs_semi_state == DFS_ERROR) { this->dfs_semi_state = DFS_INIT; } if (this->dfs_comma_state == DFS_ERROR) { this->dfs_comma_state = DFS_INIT; } } this->dfs_hist[elem.e_token] += 1; } void finalize() { data_token_t qualifier = this->dfs_format.df_qualifier; data_token_t separator = this->dfs_format.df_separator; data_token_t prefix_term = this->dfs_format.df_prefix_terminator; this->dfs_format = FORMAT_PLAIN; if (this->dfs_hist[DT_EQUALS]) { qualifier = DT_COLON; separator = DT_EQUALS; } if (this->dfs_semi_state != DFS_ERROR && this->dfs_hist[DT_SEMI]) { this->dfs_format = FORMAT_SEMI; } else if (this->dfs_comma_state != DFS_ERROR) { this->dfs_format = FORMAT_COMMA; if (separator == DT_COLON && this->dfs_hist[DT_COMMA] > 0) { if (!((this->dfs_hist[DT_COLON] == this->dfs_hist[DT_COMMA]) || ((this->dfs_hist[DT_COLON] - 1) == this->dfs_hist[DT_COMMA]))) { separator = DT_INVALID; if (this->dfs_hist[DT_COLON] == 1) { prefix_term = DT_COLON; } } } } this->dfs_format.df_qualifier = qualifier; this->dfs_format.df_separator = separator; this->dfs_format.df_prefix_terminator = prefix_term; }; data_format_state_t dfs_prefix_state; data_format_state_t dfs_semi_state; data_format_state_t dfs_comma_state; int dfs_hist[DT_TERMINAL_MAX]; data_format dfs_format; }; data_parser(data_scanner *ds) : dp_errors("dp_errors", __FILE__, __LINE__), dp_pairs("dp_pairs", __FILE__, __LINE__), dp_msg_format(NULL), dp_msg_format_begin(ds->get_input().pi_offset), dp_scanner(ds) { if (TRACE_FILE != NULL) { fprintf(TRACE_FILE, "input %s\n", ds->get_input().get_string()); } }; void pairup(schema_id_t *schema, element_list_t &pairs_out, element_list_t &in_list, int group_depth = 0) { element_list_t ELEMENT_LIST_T(el_stack), ELEMENT_LIST_T(free_row), ELEMENT_LIST_T(key_comps), ELEMENT_LIST_T(value), ELEMENT_LIST_T(prefix); SpookyHash context; require(in_list.el_format.df_name != NULL); POINT_TRACE("pairup_start"); FORMAT_TRACE(in_list); for (element_list_t::iterator iter = in_list.begin(); iter != in_list.end(); ++iter) { if (iter->e_token == DNT_GROUP) { element_list_t ELEMENT_LIST_T(group_pairs); this->pairup(NULL, group_pairs, *iter->e_sub_elements, group_depth + 1); if (!group_pairs.empty()) { iter->assign_elements(group_pairs); } } if (in_list.el_format.df_prefix_terminator != DT_INVALID) { if (iter->e_token == in_list.el_format.df_prefix_terminator) { in_list.el_format.df_prefix_terminator = DT_INVALID; } else { el_stack.PUSH_BACK(*iter); } } else if (iter->e_token == in_list.el_format.df_terminator) { this->end_of_value(el_stack, key_comps, value, in_list, group_depth); key_comps.PUSH_BACK(*iter); } else if (iter->e_token == in_list.el_format.df_qualifier) { value.SPLICE(value.end(), key_comps, key_comps.begin(), key_comps.end()); strip(value, element_if(DT_WHITE)); if (!value.empty()) { el_stack.PUSH_BACK(element(value, DNT_VALUE)); } } else if (iter->e_token == in_list.el_format.df_separator) { element_list_t::iterator key_iter = key_comps.end(); bool found = false, key_is_values = true; if (!key_comps.empty()) { do { --key_iter; if (key_iter->e_token == in_list.el_format.df_appender) { ++key_iter; value.SPLICE(value.end(), key_comps, key_comps.begin(), key_iter); key_comps.POP_FRONT(); found = true; } else if (key_iter->e_token == in_list.el_format.df_terminator) { std::vector key_copy; value.SPLICE(value.end(), key_comps, key_comps.begin(), key_iter); key_comps.POP_FRONT(); strip(key_comps, element_if(DT_WHITE)); if (key_comps.empty()) { key_iter = key_comps.end(); } else { key_iter = key_comps.begin(); } found = true; } if (key_iter != key_comps.end()) { switch (key_iter->e_token) { case DT_WORD: case DT_SYMBOL: key_is_values = false; break; default: break; } } } while (key_iter != key_comps.begin() && !found); } if (!found && !el_stack.empty() && !key_comps.empty()) { element_list_t::iterator value_iter; if (el_stack.size() > 1 && in_list.el_format.df_appender != DT_INVALID && in_list.el_format.df_terminator != DT_INVALID) { /* If we're expecting a terminator and haven't found it */ /* then this is part of the value. */ continue; } value.SPLICE(value.end(), key_comps, key_comps.begin(), key_comps.end()); value_iter = value.end(); std::advance(value_iter, -1); key_comps.SPLICE(key_comps.begin(), value, value_iter, value.end()); key_comps.resize(1); } strip(value, element_if(DT_WHITE)); value.remove_if(element_if(DT_COMMA)); if (!value.empty()) { el_stack.PUSH_BACK(element(value, DNT_VALUE)); } strip(key_comps, element_if(DT_WHITE)); if (!key_comps.empty()) { if (key_is_values) { el_stack.PUSH_BACK(element(key_comps, DNT_VALUE)); } else { el_stack.PUSH_BACK(element(key_comps, DNT_KEY, false)); } } key_comps.CLEAR(); value.CLEAR(); } else { key_comps.PUSH_BACK(*iter); } POINT_TRACE("pairup_loop"); } POINT_TRACE("pairup_eol"); CONSUMED_TRACE(in_list); // Only perform the free-row logic at the top level, if we're in a group // assume it is a list. if (group_depth < 1 && el_stack.empty()) { free_row.SPLICE(free_row.begin(), key_comps, key_comps.begin(), key_comps.end()); } else { this->end_of_value(el_stack, key_comps, value, in_list, group_depth); } POINT_TRACE("pairup_stack"); context.Init(0, 0); while (!el_stack.empty()) { element_list_t::iterator kv_iter = el_stack.begin(); if (kv_iter->e_token == DNT_VALUE) { if (pairs_out.empty()) { free_row.PUSH_BACK(el_stack.front()); } else { element_list_t ELEMENT_LIST_T(free_pair_subs); struct element blank; blank.e_capture.c_begin = blank.e_capture.c_end = el_stack.front().e_capture. c_begin; blank.e_token = DNT_KEY; free_pair_subs.PUSH_BACK(blank); free_pair_subs.PUSH_BACK(el_stack.front()); pairs_out.PUSH_BACK(element(free_pair_subs, DNT_PAIR)); } } if (kv_iter->e_token != DNT_KEY) { el_stack.POP_FRONT(); continue; } ++kv_iter; if (kv_iter == el_stack.end()) { el_stack.POP_FRONT(); continue; } element_list_t ELEMENT_LIST_T(pair_subs); if (schema != NULL) { size_t key_len; const char *key_val = this->get_element_string(el_stack.front(), key_len); context.Update(key_val, key_len); } while (!free_row.empty()) { element_list_t ELEMENT_LIST_T(free_pair_subs); struct element blank; blank.e_capture.c_begin = blank.e_capture.c_end = free_row.front().e_capture. c_begin; blank.e_token = DNT_KEY; free_pair_subs.PUSH_BACK(blank); free_pair_subs.PUSH_BACK(free_row.front()); pairs_out.PUSH_BACK(element(free_pair_subs, DNT_PAIR)); free_row.POP_FRONT(); } bool has_value = false; if (kv_iter->e_token == DNT_VALUE) { ++kv_iter; has_value = true; } pair_subs.SPLICE(pair_subs.begin(), el_stack, el_stack.begin(), kv_iter); if (!has_value) { element_list_t ELEMENT_LIST_T(blank_value); pcre_input &pi = this->dp_scanner->get_input(); const char *str = pi.get_string(); struct element blank; blank.e_token = DT_QUOTED_STRING; blank.e_capture.c_begin = blank.e_capture.c_end = pair_subs.front().e_capture.c_end; if ((blank.e_capture.c_begin >= 0) && ((size_t) blank.e_capture.c_begin < pi.pi_length)) { switch (str[blank.e_capture.c_begin]) { case '=': case ':': blank.e_capture.c_begin += 1; blank.e_capture.c_end += 1; break; } } blank_value.PUSH_BACK(blank); pair_subs.PUSH_BACK(element(blank_value, DNT_VALUE)); } pairs_out.PUSH_BACK(element(pair_subs, DNT_PAIR)); } if (pairs_out.size() == 1) { element &pair = pairs_out.front(); element &evalue = pair.e_sub_elements->back(); if (evalue.e_token == DNT_VALUE && evalue.e_sub_elements != NULL && evalue.e_sub_elements->size() > 1) { element_list_t::iterator next_sub; next_sub = pair.e_sub_elements->begin(); ++next_sub; prefix.SPLICE(prefix.begin(), *pair.e_sub_elements, pair.e_sub_elements->begin(), next_sub); free_row.CLEAR(); free_row.SPLICE(free_row.begin(), *evalue.e_sub_elements, evalue.e_sub_elements->begin(), evalue.e_sub_elements->end()); pairs_out.CLEAR(); context.Init(0, 0); } } if (group_depth >= 1 && pairs_out.empty() && !free_row.empty()) { pairs_out.SWAP(free_row); } if (pairs_out.empty() && !free_row.empty()) { while (!free_row.empty()) { switch (free_row.front().e_token) { case DNT_GROUP: case DNT_VALUE: case DT_EMAIL: case DT_CONSTANT: case DT_NUMBER: case DT_SYMBOL: case DT_HEX_NUMBER: case DT_OCTAL_NUMBER: case DT_VERSION_NUMBER: case DT_QUOTED_STRING: case DT_IPV4_ADDRESS: case DT_IPV6_ADDRESS: case DT_MAC_ADDRESS: case DT_HEX_DUMP: case DT_XML_OPEN_TAG: case DT_XML_CLOSE_TAG: case DT_XML_EMPTY_TAG: case DT_UUID: case DT_URL: case DT_PATH: case DT_DATE: case DT_TIME: case DT_PERCENTAGE: { element_list_t ELEMENT_LIST_T(pair_subs); struct element blank; blank.e_capture.c_begin = blank.e_capture.c_end = free_row.front().e_capture. c_begin; blank.e_token = DNT_KEY; pair_subs.PUSH_BACK(blank); pair_subs.PUSH_BACK(free_row.front()); pairs_out.PUSH_BACK(element(pair_subs, DNT_PAIR)); // Throw something into the hash so that the number of // columns is significant. I don't think we want to // use the token ID since some columns values might vary // between rows. context.Update(" ", 1); } break; default: { size_t key_len; const char *key_val = this->get_element_string( free_row.front(), key_len); context.Update(key_val, key_len); } break; } free_row.POP_FRONT(); } } if (!prefix.empty()) { element_list_t ELEMENT_LIST_T(pair_subs); struct element blank; blank.e_capture.c_begin = blank.e_capture.c_end = prefix.front().e_capture.c_begin; blank.e_token = DNT_KEY; pair_subs.PUSH_BACK(blank); pair_subs.PUSH_BACK(prefix.front()); pairs_out.PUSH_FRONT(element(pair_subs, DNT_PAIR)); } if (schema != NULL) { context.Final(schema->out(0), schema->out(1)); } if (schema != NULL && this->dp_msg_format != NULL) { pcre_input &pi = this->dp_scanner->get_input(); for (element_list_t::iterator fiter = pairs_out.begin(); fiter != pairs_out.end(); ++fiter) { *(this->dp_msg_format) += this->get_string_up_to_value(*fiter); this->dp_msg_format->append("#"); } if ((size_t) this->dp_msg_format_begin < pi.pi_length) { const char *str = pi.get_string(); pcre_context::capture_t last(this->dp_msg_format_begin, pi.pi_length); switch (str[last.c_begin]) { case '\'': case '"': last.c_begin += 1; break; } *(this->dp_msg_format) += pi.get_substr(&last); } } }; void discover_format(void) { pcre_context_static<30> pc; std::stack state_stack; struct element elem; this->dp_group_token.push_back(DT_INVALID); this->dp_group_stack.resize(1); state_stack.push(discover_format_state()); while (this->dp_scanner->tokenize2(pc, elem.e_token)) { pcre_context::iterator pc_iter; pc_iter = std::find_if(pc.begin(), pc.end(), capture_if_not(-1)); require(pc_iter != pc.end()); elem.e_capture = *pc_iter; require(elem.e_capture.c_begin != -1); require(elem.e_capture.c_end != -1); state_stack.top().update_for_element(elem); switch (elem.e_token) { case DT_LPAREN: case DT_LANGLE: case DT_LCURLY: case DT_LSQUARE: this->dp_group_token.push_back(elem.e_token); this->dp_group_stack.push_back(element_list_t("_anon_", __FILE__, __LINE__)); state_stack.push(discover_format_state()); break; case DT_RPAREN: case DT_RANGLE: case DT_RCURLY: case DT_RSQUARE: if (this->dp_group_token.back() == (elem.e_token - 1)) { this->dp_group_token.pop_back(); std::list::reverse_iterator riter = this->dp_group_stack.rbegin(); ++riter; state_stack.top().finalize(); this->dp_group_stack.back().el_format = state_stack.top().dfs_format; state_stack.pop(); if (!this->dp_group_stack.back().empty()) { (*riter).PUSH_BACK(element(this->dp_group_stack.back(), DNT_GROUP)); } else { (*riter).PUSH_BACK(element()); riter->back().e_capture.c_begin = elem.e_capture.c_begin; riter->back().e_capture.c_end = elem.e_capture.c_begin; riter->back().e_token = DNT_GROUP; riter->back().assign_elements(this->dp_group_stack.back()); } this->dp_group_stack.pop_back(); } else { this->dp_group_stack.back().PUSH_BACK(elem); } break; default: this->dp_group_stack.back().PUSH_BACK(elem); break; } } while (this->dp_group_stack.size() > 1) { this->dp_group_token.pop_back(); std::list::reverse_iterator riter = this->dp_group_stack.rbegin(); ++riter; if (!this->dp_group_stack.back().empty()) { state_stack.top().finalize(); this->dp_group_stack.back().el_format = state_stack.top().dfs_format; state_stack.pop(); (*riter).PUSH_BACK(element(this->dp_group_stack.back(), DNT_GROUP)); } this->dp_group_stack.pop_back(); } state_stack.top().finalize(); this->dp_group_stack.back().el_format = state_stack.top().dfs_format; }; void end_of_value(element_list_t &el_stack, element_list_t &key_comps, element_list_t &value, const element_list_t &in_list, int group_depth) { key_comps.remove_if(element_if(in_list.el_format.df_terminator)); key_comps.remove_if(element_if(DT_COMMA)); value.remove_if(element_if(in_list.el_format.df_terminator)); value.remove_if(element_if(DT_COMMA)); strip(key_comps, element_if(DT_WHITE)); strip(value, element_if(DT_WHITE)); if ((el_stack.empty() || el_stack.back().e_token != DNT_KEY) && value.empty() && key_comps.size() > 1 && (key_comps.front().e_token == DT_WORD || key_comps.front().e_token == DT_SYMBOL)) { element_list_t::iterator key_iter, key_end; bool found_value = false; int word_count = 0; key_iter = key_comps.begin(); key_end = key_comps.begin(); for (; key_iter != key_comps.end(); ++key_iter) { if (key_iter->e_token == DT_WORD || key_iter->e_token == DT_SYMBOL) { word_count += 1; if (found_value) { key_end = key_comps.begin(); } } else if (key_iter->e_token == DT_WHITE) { } else { if (!found_value) { key_end = key_iter; } found_value = true; } } if (word_count != 1) { key_end = key_comps.begin(); } value.SPLICE(value.end(), key_comps, key_end, key_comps.end()); strip(key_comps, element_if(DT_WHITE)); if (!key_comps.empty()) { el_stack.PUSH_BACK(element(key_comps, DNT_KEY, false)); } key_comps.CLEAR(); } else { value.SPLICE(value.end(), key_comps, key_comps.begin(), key_comps.end()); } strip(value, element_if(DT_WHITE)); strip(value, element_if(DT_COLON)); strip(value, element_if(DT_WHITE)); if (!value.empty()) { if (value.size() == 2 && value.back().e_token == DNT_GROUP) { element_list_t ELEMENT_LIST_T(group_pair); group_pair.PUSH_BACK(element(value, DNT_PAIR)); el_stack.PUSH_BACK(element(group_pair, DNT_VALUE)); } else { el_stack.PUSH_BACK(element(value, DNT_VALUE)); } } value.CLEAR(); }; void parse(void) { this->discover_format(); this->pairup(&this->dp_schema_id, this->dp_pairs, this->dp_group_stack.front()); }; std::string get_element_string(const element &elem) const { pcre_input &pi = this->dp_scanner->get_input(); return pi.get_substr(&elem.e_capture); }; std::string get_string_up_to_value(const element &elem) { pcre_input &pi = this->dp_scanner->get_input(); const element &val_elem = elem.e_token == DNT_PAIR ? elem.e_sub_elements->back() : elem; if (this->dp_msg_format_begin <= val_elem.e_capture.c_begin) { pcre_context::capture_t leading_and_key = pcre_context::capture_t( this->dp_msg_format_begin, val_elem.e_capture.c_begin); const char *str = pi.get_string(); if (leading_and_key.length() >= 2) { switch (str[leading_and_key.c_end - 1]) { case '\'': case '"': leading_and_key.c_end -= 1; switch (str[leading_and_key.c_end - 1]) { case 'r': case 'u': leading_and_key.c_end -= 1; break; } break; } switch (str[leading_and_key.c_begin]) { case '\'': case '"': leading_and_key.c_begin += 1; break; } } this->dp_msg_format_begin = val_elem.e_capture.c_end; return pi.get_substr(&leading_and_key); } else { this->dp_msg_format_begin = val_elem.e_capture.c_end; } return ""; }; const char *get_element_string(const element &elem, size_t &len_out) { pcre_input &pi = this->dp_scanner->get_input(); len_out = elem.e_capture.length(); return pi.get_substr_start(&elem.e_capture); }; void print(FILE *out, element_list_t &el) { fprintf(out, " %s\n", this->dp_scanner->get_input().get_string()); for (element_list_t::iterator iter = el.begin(); iter != el.end(); ++iter) { iter->print(out, this->dp_scanner->get_input()); } }; std::vector dp_group_token; std::list dp_group_stack; element_list_t dp_errors; element_list_t dp_pairs; schema_id_t dp_schema_id; std::string *dp_msg_format; int dp_msg_format_begin; private: data_scanner *dp_scanner; }; #endif lnav-0.8.2/src/data_scanner.cc000664 000765 000024 00000025164 12542700153 016462 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "pcrepp.hh" #include "data_scanner.hh" using namespace std; static struct { const char *name; pcrepp pcre; } MATCHERS[DT_TERMINAL_MAX] = { { "quot", pcrepp("\\A(?:(?:u|r)?\"((?:\\\\.|[^\"])+)\"|" "(?:u|r)?'((?:\\\\.|[^'])+)')"), }, { "url", pcrepp("\\A([\\w]+://[^\\s'\"\\[\\](){}]+[/a-zA-Z0-9\\-=&])"), }, { "path", pcrepp("\\A((?:/|\\./|\\.\\./)[\\w\\.\\-_\\~/]*)"), }, { "mac", pcrepp( "\\A([0-9a-fA-F][0-9a-fA-F](?::[0-9a-fA-F][0-9a-fA-F]){5})(?!:)"), }, { "date", pcrepp("\\A(" "\\d{4}/\\d{1,2}/\\d{1,2}|" "\\d{4}-\\d{1,2}-\\d{1,2}|" "\\d{2}/\\w{3}/\\d{4}" ")T?"), }, { "time", pcrepp( "\\A([\\s\\d]\\d:\\d\\d(?:(?!:\\d)|:\\d\\d(?:[\\.,]\\d{3,6})?Z?))\\b"), }, /* { "qual", pcrepp("\\A([^\\s:=]+:[^\\s:=,]+(?!,)(?::[^\\s:=,]+)*)"), }, */ { "ipv6", pcrepp("\\A(::|[:\\da-fA-F\\.]+[a-fA-F\\d](?:%\\w+)?)"), }, { "hexd", pcrepp( "\\A([0-9a-fA-F][0-9a-fA-F](?::[0-9a-fA-F][0-9a-fA-F])+)"), }, { "xmlt", pcrepp( "\\A(<\\??[\\w:]+\\s*(?:[\\w:]+(?:\\s*=\\s*" "(?:\"((?:\\\\.|[^\"])+)\"|'((?:\\\\.|[^'])+)'|[^>]+)" "))*\\s*(?:/|\\?)>)"), }, { "xmlo", pcrepp( "\\A(<[\\w:]+\\s*(?:[\\w:]+(?:\\s*=\\s*" "(?:\"((?:\\\\.|[^\"])+)\"|'((?:\\\\.|[^'])+)'|[^>]+)" "))*\\s*>)"), }, { "xmlc", pcrepp("\\A()"), }, { "coln", pcrepp("\\A(:)"), }, { "eq", pcrepp("\\A(=)"), }, { "comm", pcrepp("\\A(,)"), }, { "semi", pcrepp("\\A(;)"), }, { "lcurly", pcrepp("\\A({)"), }, { "rcurly", pcrepp("\\A(})"), }, { "lsquare", pcrepp("\\A(\\[)"), }, { "rsquare", pcrepp("\\A(\\])"), }, { "lparen", pcrepp("\\A(\\()"), }, { "rparen", pcrepp("\\A(\\))"), }, { "langle", pcrepp("\\A(\\<)"), }, { "rangle", pcrepp("\\A(\\>)"), }, { "ipv4", pcrepp("\\A(" "(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}" "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(?![\\d]))"), }, { "uuid", pcrepp( "\\A([0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})"), }, { "vers", pcrepp( "\\A(" "[0-9]+(?:\\.[0-9]+\\w*){2,}(?:-\\w+)?|" "[0-9]+(?:\\.[0-9]+\\w*)+(?\\~`\\|\\\\]+" "(?:::[^\";\\s:=,\\(\\)\\{\\}\\[\\]\\+#!@%\\^&\\*'\\?<>\\~`\\|\\\\]+)*)"), }, { "line", pcrepp("\\A(\r?\n|\r|;)"), }, { "wspc", pcrepp("\\A([ \\r\\t\\n]+)"), }, { "dot", pcrepp("\\A(\\.)"), }, { "gbg", pcrepp("\\A(.)"), }, }; const char *DNT_NAMES[DNT_MAX - DNT_KEY] = { "key", "pair", "val", "row", "unit", "meas", "var", "rang", "dt", "grp", }; const char *data_scanner::token2name(data_token_t token) { if (token < 0) { return "inv"; } else if (token < DT_TERMINAL_MAX) { return MATCHERS[token].name; } else if (token == DT_ANY) { return "any"; } else{ return DNT_NAMES[token - DNT_KEY]; } } static bool find_string_end(const char *str, size_t &start, size_t length, char term) { for (; start < length; start++) { if (str[start] == term) { start += 1; return true; } if (str[start] == '\\') { if (start + 1 >= length) { return false; } start += 1; } } return false; } static void single_char_capture(pcre_context &pc, pcre_input &pi) { pc.all()[0].c_begin = pi.pi_offset; pc.all()[0].c_end = pi.pi_offset + 1; pc.all()[1] = pc.all()[0]; pc.set_count(2); pi.pi_next_offset = pi.pi_offset + 1; } bool data_scanner::tokenize(pcre_context &pc, data_token_t &token_out) { const char *str = this->ds_pcre_input.get_string(); pcre_input &pi = this->ds_pcre_input; int lpc; token_out = data_token_t(-1); if (this->ds_pcre_input.pi_next_offset > this->ds_pcre_input.pi_length) { return false; } else if (this->ds_pcre_input.pi_next_offset == this->ds_pcre_input.pi_length) { this->ds_pcre_input.pi_next_offset += 1; token_out = DT_LINE; return false; } for (lpc = 0; lpc < DT_TERMINAL_MAX; lpc++) { switch (lpc) { case DT_QUOTED_STRING: { pcre_input &pi = this->ds_pcre_input; const char *str = pi.get_string(); size_t str_start, str_end; bool found = false; pi.pi_offset = pi.pi_next_offset; str_end = str_start = pi.pi_offset + 1; switch (str[pi.pi_offset]) { case 'u': case 'r': if (pi.pi_offset + 1 < pi.pi_length && (str[pi.pi_offset + 1] == '\'' || str[pi.pi_offset + 1] == '\"')) { str_start += 1; str_end += 1; found = find_string_end(str, str_end, pi.pi_length, str[pi.pi_offset + 1]); } break; case '\'': case '\"': found = find_string_end(str, str_end, pi.pi_length, str[pi.pi_offset]); break; } if (found) { token_out = data_token_t(DT_QUOTED_STRING); pi.pi_next_offset = str_end; pc.all()[0].c_begin = pi.pi_offset; pc.all()[0].c_end = str_end; pc.all()[1].c_begin = str_start; pc.all()[1].c_end = str_end - 1; pc.set_count(2); return true; } } break; case DT_COLON: { pi.pi_offset = pi.pi_next_offset; if (str[pi.pi_offset] == ':') { token_out = data_token_t(DT_COLON); single_char_capture(pc, pi); return true; } } break; case DT_EQUALS: { pi.pi_offset = pi.pi_next_offset; if (str[pi.pi_offset] == '=') { token_out = data_token_t(DT_EQUALS); single_char_capture(pc, pi); return true; } } break; case DT_COMMA: { pi.pi_offset = pi.pi_next_offset; if (str[pi.pi_offset] == ',') { token_out = data_token_t(DT_COMMA); single_char_capture(pc, pi); return true; } } break; case DT_SEMI: { pi.pi_offset = pi.pi_next_offset; if (str[pi.pi_offset] == ';') { token_out = data_token_t(DT_SEMI); single_char_capture(pc, pi); return true; } } break; default: if (MATCHERS[lpc].pcre.match(pc, this->ds_pcre_input, PCRE_ANCHORED)) { switch (lpc) { case DT_IPV6_ADDRESS: if (pc.all()->length() <= INET6_ADDRSTRLEN) { char in6str[INET6_ADDRSTRLEN]; char buf[sizeof(struct in6_addr)]; this->ds_pcre_input.get_substr(pc.all(), in6str); if (inet_pton(AF_INET6, in6str, buf) == 1) { token_out = data_token_t(lpc); return true; } } this->ds_pcre_input.pi_next_offset = this->ds_pcre_input.pi_offset; break; default: token_out = data_token_t(lpc); return true; } } break; } } ensure((0 <= token_out && token_out < DT_TERMINAL_MAX)); return true; } lnav-0.8.2/src/data_scanner.hh000664 000765 000024 00000007164 12562277276 016515 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __data_scanner_hh #define __data_scanner_hh #include #include "pcrepp.hh" #include "shared_buffer.hh" enum data_token_t { DT_INVALID = -1, DT_QUOTED_STRING = 0, DT_URL, DT_PATH, DT_MAC_ADDRESS, DT_DATE, DT_TIME, DT_IPV6_ADDRESS, DT_HEX_DUMP, DT_XML_EMPTY_TAG, DT_XML_OPEN_TAG, DT_XML_CLOSE_TAG, /* DT_QUALIFIED_NAME, */ DT_COLON, DT_EQUALS, DT_COMMA, DT_SEMI, DT_LCURLY, DT_RCURLY, DT_LSQUARE, DT_RSQUARE, DT_LPAREN, DT_RPAREN, DT_LANGLE, DT_RANGLE, DT_IPV4_ADDRESS, DT_UUID, DT_VERSION_NUMBER, DT_OCTAL_NUMBER, DT_PERCENTAGE, DT_NUMBER, DT_HEX_NUMBER, DT_EMAIL, DT_CONSTANT, DT_WORD, DT_SYMBOL, DT_LINE, DT_WHITE, DT_DOT, DT_GARBAGE, DT_TERMINAL_MAX = DT_GARBAGE + 1, DNT_KEY = 50, DNT_PAIR, DNT_VALUE, DNT_ROW, DNT_UNITS, DNT_MEASUREMENT, DNT_VARIABLE_KEY, DNT_ROWRANGE, DNT_DATE_TIME, DNT_GROUP, DNT_MAX, DT_ANY = 100, }; class data_scanner { public: static const char *token2name(data_token_t token); data_scanner(const std::string &line, size_t off = 0, size_t len = (size_t) -1) : ds_line(line), ds_pcre_input(ds_line.c_str(), off, len) { if (!line.empty() && line[line.length() - 1] == '.') { this->ds_pcre_input.pi_length -= 1; } }; data_scanner(shared_buffer_ref &line, size_t off = 0, size_t len = (size_t) -1) : ds_sbr(line), ds_pcre_input(line.get_data(), off, len == (size_t) -1 ? line.length() : len) { require(len == (size_t) -1 || len <= line.length()); if (line.length() > 0 && line.get_data()[line.length() - 1] == '.') { this->ds_pcre_input.pi_length -= 1; } }; bool tokenize(pcre_context &pc, data_token_t &token_out); bool tokenize2(pcre_context &pc, data_token_t &token_out); pcre_input &get_input() { return this->ds_pcre_input; }; private: std::string ds_line; shared_buffer_ref ds_sbr; pcre_input ds_pcre_input; }; #endif lnav-0.8.2/src/data_scanner_re.cc000664 000765 000024 00002233477 13044377034 017170 0ustar00stackstaff000000 000000 /* Generated by re2c 0.14.2 on Fri Oct 14 10:31:35 2016 */ #line 1 "../../lnav2/src/data_scanner_re.re" /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "data_scanner.hh" bool data_scanner::tokenize2(pcre_context &pc, data_token_t &token_out) { # define YYCTYPE char # define CAPTURE(tok) { \ pi.pi_next_offset = YYCURSOR.val - pi.get_string(); \ cap[0].c_end = pi.pi_next_offset; \ cap[1].c_end = pi.pi_next_offset; \ token_out = tok; \ } # define RET(tok) { \ CAPTURE(tok); \ return true; \ } pcre_input &pi = this->ds_pcre_input; struct _YYCURSOR { const YYCTYPE operator*() const { if (this->val < this->lim) { return *val; } return '\0'; } operator const YYCTYPE *() const { return this->val; } const YYCTYPE *operator=(const YYCTYPE *rhs) { this->val = rhs; return rhs; } const YYCTYPE *operator+(int rhs) { return this->val + rhs; } _YYCURSOR& operator++() { this->val += 1; return *this; } const YYCTYPE *val; const YYCTYPE *lim; } YYCURSOR; YYCURSOR = pi.get_string() + pi.pi_next_offset; const YYCTYPE *YYLIMIT = pi.get_string() + pi.pi_length; const YYCTYPE *YYMARKER = YYCURSOR; const YYCTYPE *YYCTXMARKER = YYCURSOR; pcre_context::capture_t *cap = pc.all(); YYCURSOR.lim = YYLIMIT; pc.set_count(2); cap[0].c_begin = pi.pi_next_offset; cap[1].c_begin = pi.pi_next_offset; #line 97 "../../lnav2/src/data_scanner_re.cc" { YYCTYPE yych; unsigned int yyaccept = 0; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy2; case '\t': case ' ': goto yy27; case '\n': goto yy58; case '\r': goto yy29; case '!': case '#': case '&': case '*': case '?': case '\\': case '^': case '`': case '|': case '~': goto yy60; case '"': goto yy7; case '%': case '+': goto yy55; case '\'': goto yy17; case '(': goto yy48; case ')': goto yy50; case ',': goto yy36; case '-': goto yy54; case '.': goto yy26; case '/': goto yy24; case '0': goto yy18; case '1': goto yy20; case '2': goto yy21; case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy22; case ':': goto yy30; case ';': goto yy38; case '<': goto yy32; case '=': goto yy34; case '>': goto yy52; case 'A': case 'B': case 'C': case 'D': case 'E': case 'a': case 'b': case 'c': case 'd': case 'e': goto yy9; case 'F': goto yy10; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'O': case 'P': case 'Q': case 'S': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'o': case 'p': case 'q': case 's': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy11; case 'N': goto yy12; case 'R': case 'U': goto yy23; case 'T': goto yy13; case '[': goto yy44; case ']': goto yy46; case '_': goto yy56; case 'f': goto yy14; case 'n': goto yy15; case 'r': goto yy4; case 't': goto yy16; case 'u': goto yy6; case '{': goto yy40; case '}': goto yy42; default: goto yy57; } yy2: ++YYCURSOR; #line 119 "../../lnav2/src/data_scanner_re.re" { return false; } #line 207 "../../lnav2/src/data_scanner_re.cc" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': goto yy983; case '%': case '+': goto yy71; case '\'': goto yy991; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy1002; default: goto yy64; } yy5: #line 212 "../../lnav2/src/data_scanner_re.re" { RET(DT_SYMBOL); } #line 290 "../../lnav2/src/data_scanner_re.cc" yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '"': goto yy983; case '%': case '+': goto yy71; case '\'': goto yy991; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy7: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych >= 0x01) goto yy984; yy8: #line 219 "../../lnav2/src/data_scanner_re.re" { RET(DT_GARBAGE); } #line 375 "../../lnav2/src/data_scanner_re.cc" yy9: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy944; case ':': goto yy498; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy946; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy10: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy944; case ':': goto yy498; case '@': goto yy70; case 'A': goto yy977; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': goto yy978; case 'b': case 'c': case 'd': case 'e': case 'f': goto yy946; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy12: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'U': goto yy973; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'o': goto yy974; default: goto yy64; } yy13: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'R': goto yy964; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'r': goto yy965; default: goto yy64; } yy14: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy944; case ':': goto yy498; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': goto yy945; case 'b': case 'c': case 'd': case 'e': case 'f': goto yy946; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy15: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'u': goto yy942; default: goto yy64; } yy16: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy932; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'r': goto yy931; default: goto yy64; } yy17: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x00) goto yy8; goto yy920; yy18: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy492; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy909; case '8': case '9': goto yy493; case ':': goto yy491; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy494; case 'E': case 'e': goto yy495; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'y': case 'z': goto yy470; case 'x': goto yy910; default: goto yy63; } yy19: #line 203 "../../lnav2/src/data_scanner_re.re" { RET(DT_NUMBER); } #line 1095 "../../lnav2/src/data_scanner_re.cc" yy20: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy492; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy906; case ':': goto yy491; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy494; case 'E': case 'e': goto yy495; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy21: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy492; case '0': case '1': case '2': case '3': case '4': goto yy906; case '5': goto yy907; case '6': case '7': case '8': case '9': goto yy493; case ':': goto yy491; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy494; case 'E': case 'e': goto yy495; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy22: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy492; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy493; case ':': goto yy491; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy494; case 'E': case 'e': goto yy495; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy23: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy474; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy24: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '\'': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '`': case '{': case '|': case '}': goto yy25; case '!': case '#': case '%': case '&': case '(': case ')': case '*': case '^': case '~': goto yy467; case '$': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy465; case ':': goto yy61; default: goto yy63; } yy25: #line 149 "../../lnav2/src/data_scanner_re.re" { RET(DT_PATH); } #line 1589 "../../lnav2/src/data_scanner_re.cc" yy26: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '.': goto yy464; case '/': goto yy465; case '@': goto yy70; default: goto yy64; } yy27: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy443; case ':': goto yy444; default: goto yy442; } yy28: #line 217 "../../lnav2/src/data_scanner_re.re" { RET(DT_WHITE); } #line 1685 "../../lnav2/src/data_scanner_re.cc" yy29: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy58; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy443; case ':': goto yy444; default: goto yy442; } yy30: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ':': goto yy332; default: goto yy31; } yy31: #line 176 "../../lnav2/src/data_scanner_re.re" { RET(DT_COLON); } #line 1714 "../../lnav2/src/data_scanner_re.cc" yy32: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy114; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy115; case '?': goto yy116; default: goto yy33; } yy33: #line 186 "../../lnav2/src/data_scanner_re.re" { RET(DT_LANGLE); } #line 1790 "../../lnav2/src/data_scanner_re.cc" yy34: ++YYCURSOR; #line 177 "../../lnav2/src/data_scanner_re.re" { RET(DT_EQUALS); } #line 1795 "../../lnav2/src/data_scanner_re.cc" yy36: ++YYCURSOR; #line 178 "../../lnav2/src/data_scanner_re.re" { RET(DT_COMMA); } #line 1800 "../../lnav2/src/data_scanner_re.cc" yy38: ++YYCURSOR; #line 179 "../../lnav2/src/data_scanner_re.re" { RET(DT_SEMI); } #line 1805 "../../lnav2/src/data_scanner_re.cc" yy40: ++YYCURSOR; #line 180 "../../lnav2/src/data_scanner_re.re" { RET(DT_LCURLY); } #line 1810 "../../lnav2/src/data_scanner_re.cc" yy42: ++YYCURSOR; #line 181 "../../lnav2/src/data_scanner_re.re" { RET(DT_RCURLY); } #line 1815 "../../lnav2/src/data_scanner_re.cc" yy44: ++YYCURSOR; #line 182 "../../lnav2/src/data_scanner_re.re" { RET(DT_LSQUARE); } #line 1820 "../../lnav2/src/data_scanner_re.cc" yy46: ++YYCURSOR; #line 183 "../../lnav2/src/data_scanner_re.re" { RET(DT_RSQUARE); } #line 1825 "../../lnav2/src/data_scanner_re.cc" yy48: ++YYCURSOR; #line 184 "../../lnav2/src/data_scanner_re.re" { RET(DT_LPAREN); } #line 1830 "../../lnav2/src/data_scanner_re.cc" yy50: ++YYCURSOR; #line 185 "../../lnav2/src/data_scanner_re.re" { RET(DT_RPAREN); } #line 1835 "../../lnav2/src/data_scanner_re.cc" yy52: ++YYCURSOR; #line 187 "../../lnav2/src/data_scanner_re.re" { RET(DT_RANGLE); } #line 1840 "../../lnav2/src/data_scanner_re.cc" yy54: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': goto yy87; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy88; case '@': goto yy70; default: goto yy64; } yy55: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy72; default: goto yy8; } yy56: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy57: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy64; yy58: ++YYCURSOR; #line 216 "../../lnav2/src/data_scanner_re.re" { RET(DT_LINE); } #line 2071 "../../lnav2/src/data_scanner_re.cc" yy60: yych = *++YYCURSOR; goto yy8; yy61: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case ':': goto yy65; default: goto yy62; } yy62: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy5; case 1: goto yy8; case 2: goto yy19; case 3: goto yy25; case 4: goto yy28; case 5: goto yy31; case 6: goto yy33; case 7: goto yy80; case 8: goto yy93; case 9: goto yy97; case 10: goto yy112; case 11: goto yy124; case 12: goto yy224; case 13: goto yy339; case 14: goto yy451; case 15: goto yy477; case 16: goto yy490; case 17: goto yy535; case 18: goto yy765; case 19: goto yy804; case 20: goto yy828; case 21: goto yy846; case 22: goto yy463; case 23: goto yy895; case 24: goto yy925; case 25: goto yy933; case 26: goto yy937; default: goto yy988; } yy63: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy64: switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case ':': goto yy61; default: goto yy63; } yy65: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ':': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy62; default: goto yy66; } yy66: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy67: switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case ':': goto yy61; default: goto yy66; } yy68: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy70: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy81; default: goto yy64; } yy71: ++YYCURSOR; yych = *YYCURSOR; yy72: switch (yych) { case '%': case '+': case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy71; case '@': goto yy73; default: goto yy62; } yy73: yych = *++YYCURSOR; switch (yych) { case '.': goto yy74; default: goto yy75; } yy74: ++YYCURSOR; yych = *YYCURSOR; yy75: switch (yych) { case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy74; case '.': goto yy76; default: goto yy62; } yy76: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy74; case '.': goto yy76; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy78; default: goto yy62; } yy78: yyaccept = 7; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy74; case '.': goto yy76; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy78; default: goto yy80; } yy80: #line 206 "../../lnav2/src/data_scanner_re.re" { RET(DT_EMAIL); } #line 2699 "../../lnav2/src/data_scanner_re.cc" yy81: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy81; case '.': goto yy83; case ':': goto yy61; default: goto yy63; } yy83: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy81; case '.': goto yy83; case ':': goto yy61; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy85; default: goto yy63; } yy85: yyaccept = 7; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy80; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy81; case '.': goto yy83; case ':': goto yy61; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy85; default: goto yy63; } yy87: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'y': case 'z': goto yy68; case '.': goto yy89; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy110; case '8': case '9': goto yy94; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy98; case 'E': case 'e': goto yy96; case 'x': goto yy113; default: goto yy63; } yy88: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '.': goto yy89; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy94; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy98; case 'E': case 'e': goto yy96; default: goto yy63; } yy89: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy107; case '@': goto yy70; default: goto yy64; } yy90: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case ' ': goto yy90; case '%': goto yy106; default: goto yy62; } yy92: yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy72; default: goto yy93; } yy93: #line 202 "../../lnav2/src/data_scanner_re.re" { RET(DT_PERCENTAGE); } #line 3371 "../../lnav2/src/data_scanner_re.cc" yy94: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '.': goto yy89; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy94; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy98; case 'E': case 'e': goto yy96; default: goto yy63; } yy96: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy98; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy97: #line 204 "../../lnav2/src/data_scanner_re.re" { RET(DT_HEX_NUMBER); } #line 3582 "../../lnav2/src/data_scanner_re.cc" yy98: yyaccept = 9; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy98; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy100: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; case '@': goto yy70; default: goto yy64; } yy101: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy102; default: goto yy72; } yy102: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '%': case '+': case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy71; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy102; case '@': goto yy73; default: goto yy19; } yy104: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy106: yych = *++YYCURSOR; goto yy93; yy107: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy107; case ':': goto yy61; case '@': goto yy70; case 'E': case 'e': goto yy109; default: goto yy63; } yy109: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy110: yyaccept = 10; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '.': goto yy89; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy110; case '8': case '9': goto yy94; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy98; case 'E': case 'e': goto yy96; default: goto yy63; } yy112: #line 201 "../../lnav2/src/data_scanner_re.re" { RET(DT_OCTAL_NUMBER); } #line 4243 "../../lnav2/src/data_scanner_re.cc" yy113: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy98; case '@': goto yy70; default: goto yy64; } yy114: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy326; default: goto yy62; } yy115: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy221; default: goto yy220; } yy116: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy117; default: goto yy62; } yy117: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy120; default: goto yy119; } yy118: ++YYCURSOR; yych = *YYCURSOR; yy119: switch (yych) { case '\t': case '\r': case ' ': goto yy118; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy215; default: goto yy62; } yy120: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy125; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy120; case '=': goto yy127; default: goto yy62; } yy122: yych = *++YYCURSOR; switch (yych) { case '>': goto yy123; default: goto yy62; } yy123: ++YYCURSOR; yy124: #line 164 "../../lnav2/src/data_scanner_re.re" { RET(DT_XML_EMPTY_TAG); } #line 4758 "../../lnav2/src/data_scanner_re.cc" yy125: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy125; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy215; case '=': goto yy127; default: goto yy62; } yy127: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy62; case '\t': case '\r': case ' ': goto yy128; case '"': goto yy130; case '\'': goto yy131; default: goto yy132; } yy128: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy62; case '\t': case '\r': case ' ': goto yy128; case '"': goto yy130; case '\'': goto yy131; case '/': case '?': goto yy134; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy136; default: goto yy132; } yy130: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy132; case '/': case '?': goto yy207; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '>': goto yy196; case '\\': goto yy205; default: goto yy163; } yy131: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy132; case '/': case '?': goto yy140; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '>': goto yy146; case '\\': goto yy144; default: goto yy138; } yy132: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy62; case '/': case '?': goto yy134; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy136; default: goto yy132; } yy134: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '/': case '?': goto yy134; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy136; case '>': goto yy123; default: goto yy132; } yy136: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy136; case '/': case '?': goto yy134; case '=': goto yy128; default: goto yy132; } yy138: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy132; case '/': case '?': goto yy140; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '>': goto yy146; case '\\': goto yy144; default: goto yy138; } yy140: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy132; case '/': case '?': goto yy140; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '>': goto yy212; case '\\': goto yy144; default: goto yy138; } yy142: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '\'': goto yy132; case '/': case '?': goto yy140; case '=': goto yy160; case '>': goto yy146; case '\\': goto yy144; default: goto yy138; } yy144: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy146; case '/': case '?': goto yy140; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '\\': goto yy144; default: goto yy138; } yy146: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy148; case '\\': goto yy149; default: goto yy146; } yy148: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy213; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy215; default: goto yy62; } yy149: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\'': goto yy151; case '\\': goto yy149; default: goto yy146; } yy151: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy152; case '\'': goto yy148; case '/': case '?': goto yy154; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy155; case '\\': goto yy149; default: goto yy146; } yy152: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy152; case '\'': goto yy148; case '/': case '?': goto yy154; case '\\': goto yy149; default: goto yy146; } yy154: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy148; case '>': goto yy212; case '\\': goto yy149; default: goto yy146; } yy155: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy157; case '\'': goto yy148; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy155; case '=': goto yy159; case '\\': goto yy149; default: goto yy146; } yy157: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy157; case '\'': goto yy148; case '=': goto yy159; case '\\': goto yy149; default: goto yy146; } yy159: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy160; case '"': goto yy162; case '\'': goto yy131; case '>': goto yy146; case '\\': goto yy144; default: goto yy138; } yy160: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy160; case '"': goto yy162; case '\'': goto yy131; case '/': case '?': goto yy140; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy142; case '>': goto yy146; case '\\': goto yy144; default: goto yy138; } yy162: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy138; case '\'': goto yy163; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy163: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy132; case '/': case '?': goto yy207; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '>': goto yy196; case '\\': goto yy205; default: goto yy163; } yy165: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy138; case '\'': goto yy163; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy167: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy138; case '\'': goto yy163; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '>': goto yy190; case '\\': goto yy173; default: goto yy165; } yy169: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '"': goto yy138; case '\'': goto yy163; case '/': case '?': goto yy167; case '=': goto yy187; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy171: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy151; case '\'': goto yy175; case '\\': goto yy176; default: goto yy171; } yy173: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy171; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '\\': goto yy173; default: goto yy165; } yy175: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy191; case '"': goto yy148; case '/': case '?': goto yy193; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy194; case '\\': goto yy198; default: goto yy196; } yy176: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': case '\'': goto yy178; case '\\': goto yy176; default: goto yy171; } yy178: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy179; case '"': goto yy151; case '\'': goto yy175; case '/': case '?': goto yy181; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy182; case '\\': goto yy176; default: goto yy171; } yy179: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy179; case '"': goto yy151; case '\'': goto yy175; case '/': case '?': goto yy181; case '\\': goto yy176; default: goto yy171; } yy181: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy151; case '\'': goto yy175; case '>': goto yy190; case '\\': goto yy176; default: goto yy171; } yy182: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy184; case '"': goto yy151; case '\'': goto yy175; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy182; case '=': goto yy186; case '\\': goto yy176; default: goto yy171; } yy184: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy184; case '"': goto yy151; case '\'': goto yy175; case '=': goto yy186; case '\\': goto yy176; default: goto yy171; } yy186: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy187; case '"': goto yy162; case '\'': goto yy189; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy187: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy187; case '"': goto yy162; case '\'': goto yy189; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy189: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy138; case '\'': goto yy163; case '/': case '?': goto yy167; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy169; case '>': goto yy171; case '\\': goto yy173; default: goto yy165; } yy190: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy151; case '\'': goto yy175; case '\\': goto yy176; default: goto yy171; } yy191: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy191; case '"': goto yy148; case '/': case '?': goto yy193; case '\\': goto yy198; default: goto yy196; } yy193: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy148; case '>': goto yy211; case '\\': goto yy198; default: goto yy196; } yy194: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy200; case '"': goto yy148; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy194; case '=': goto yy202; case '\\': goto yy198; default: goto yy196; } yy196: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy148; case '\\': goto yy198; default: goto yy196; } yy198: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': goto yy175; case '\\': goto yy198; default: goto yy196; } yy200: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy200; case '"': goto yy148; case '=': goto yy202; case '\\': goto yy198; default: goto yy196; } yy202: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy203; case '"': goto yy130; case '\'': goto yy189; case '>': goto yy196; case '\\': goto yy205; default: goto yy163; } yy203: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy203; case '"': goto yy130; case '\'': goto yy189; case '/': case '?': goto yy207; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '>': goto yy196; case '\\': goto yy205; default: goto yy163; } yy205: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy196; case '/': case '?': goto yy207; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '\\': goto yy205; default: goto yy163; } yy207: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy132; case '/': case '?': goto yy207; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '>': goto yy211; case '\\': goto yy205; default: goto yy163; } yy209: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy209; case '"': goto yy132; case '/': case '?': goto yy207; case '=': goto yy203; case '>': goto yy196; case '\\': goto yy205; default: goto yy163; } yy211: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy148; case '\\': goto yy198; default: goto yy196; } yy212: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '\'': goto yy148; case '\\': goto yy149; default: goto yy146; } yy213: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy213; case '/': case '?': goto yy122; default: goto yy62; } yy215: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy217; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy215; case '=': goto yy127; default: goto yy62; } yy217: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy217; case '=': goto yy127; default: goto yy62; } yy219: ++YYCURSOR; yych = *YYCURSOR; yy220: switch (yych) { case '\t': case '\r': case ' ': goto yy219; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy321; case '>': goto yy223; default: goto yy62; } yy221: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy225; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy221; case '=': goto yy227; case '>': goto yy223; default: goto yy62; } yy223: ++YYCURSOR; yy224: #line 168 "../../lnav2/src/data_scanner_re.re" { RET(DT_XML_OPEN_TAG); } #line 7661 "../../lnav2/src/data_scanner_re.cc" yy225: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy225; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy321; case '=': goto yy227; case '>': goto yy223; default: goto yy62; } yy227: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '>': goto yy62; case '\t': case '\r': case ' ': goto yy228; case '"': goto yy230; case '\'': goto yy231; default: goto yy232; } yy228: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy228; case '"': goto yy230; case '\'': goto yy231; case '/': case '?': goto yy236; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy234; case '>': goto yy223; default: goto yy232; } yy230: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy232; case '/': case '?': goto yy312; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '>': goto yy302; case '\\': goto yy310; default: goto yy266; } yy231: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy232; case '/': case '?': goto yy244; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '>': goto yy241; case '\\': goto yy246; default: goto yy239; } yy232: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '/': case '?': goto yy236; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy234; case '>': goto yy223; default: goto yy232; } yy234: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy234; case '/': case '?': goto yy236; case '=': goto yy228; case '>': goto yy223; default: goto yy232; } yy236: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '/': case '?': goto yy236; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy234; case '>': goto yy238; default: goto yy232; } yy238: yych = *++YYCURSOR; goto yy124; yy239: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy232; case '/': case '?': goto yy244; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '>': goto yy241; case '\\': goto yy246; default: goto yy239; } yy241: yyaccept = 12; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy224; case '\'': goto yy250; case '\\': goto yy251; default: goto yy248; } yy242: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '\'': goto yy232; case '/': case '?': goto yy244; case '=': goto yy263; case '>': goto yy241; case '\\': goto yy246; default: goto yy239; } yy244: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy232; case '/': case '?': goto yy244; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '>': goto yy325; case '\\': goto yy246; default: goto yy239; } yy246: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy248; case '/': case '?': goto yy244; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '>': goto yy241; case '\\': goto yy246; default: goto yy239; } yy248: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy250; case '\\': goto yy251; default: goto yy248; } yy250: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy319; case '/': case '?': goto yy122; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy321; case '>': goto yy223; default: goto yy62; } yy251: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\'': goto yy253; case '\\': goto yy251; default: goto yy248; } yy253: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy254; case '\'': goto yy250; case '/': case '?': goto yy258; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy256; case '>': goto yy241; case '\\': goto yy251; default: goto yy248; } yy254: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy254; case '\'': goto yy250; case '/': case '?': goto yy258; case '>': goto yy241; case '\\': goto yy251; default: goto yy248; } yy256: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy260; case '\'': goto yy250; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy256; case '=': goto yy262; case '\\': goto yy251; default: goto yy248; } yy258: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\'': goto yy250; case '>': goto yy259; case '\\': goto yy251; default: goto yy248; } yy259: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '\'': goto yy250; case '\\': goto yy251; default: goto yy248; } yy260: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy260; case '\'': goto yy250; case '=': goto yy262; case '\\': goto yy251; default: goto yy248; } yy262: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy263; case '"': goto yy265; case '\'': goto yy231; case '>': goto yy248; case '\\': goto yy246; default: goto yy239; } yy263: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy263; case '"': goto yy265; case '\'': goto yy231; case '/': case '?': goto yy244; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy242; case '>': goto yy241; case '\\': goto yy246; default: goto yy239; } yy265: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy239; case '\'': goto yy266; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy266: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy232; case '/': case '?': goto yy312; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '>': goto yy302; case '\\': goto yy310; default: goto yy266; } yy268: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy239; case '\'': goto yy266; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy270: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy239; case '\'': goto yy266; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy318; case '\\': goto yy275; default: goto yy268; } yy272: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '"': goto yy239; case '\'': goto yy266; case '/': case '?': goto yy270; case '=': goto yy292; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy274: yyaccept = 12; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy224; case '"': goto yy253; case '\'': goto yy279; case '\\': goto yy280; default: goto yy277; } yy275: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy277; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy277: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy253; case '\'': goto yy279; case '\\': goto yy280; default: goto yy277; } yy279: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy297; case '"': goto yy250; case '/': case '?': goto yy299; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy300; case '>': goto yy302; case '\\': goto yy303; default: goto yy295; } yy280: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': case '\'': goto yy282; case '\\': goto yy280; default: goto yy277; } yy282: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy283; case '"': goto yy253; case '\'': goto yy279; case '/': case '?': goto yy285; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy286; case '>': goto yy274; case '\\': goto yy280; default: goto yy277; } yy283: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy283; case '"': goto yy253; case '\'': goto yy279; case '/': case '?': goto yy285; case '>': goto yy274; case '\\': goto yy280; default: goto yy277; } yy285: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy253; case '\'': goto yy279; case '>': goto yy294; case '\\': goto yy280; default: goto yy277; } yy286: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy288; case '"': goto yy253; case '\'': goto yy279; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy286; case '=': goto yy290; case '\\': goto yy280; default: goto yy277; } yy288: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy288; case '"': goto yy253; case '\'': goto yy279; case '=': goto yy290; case '\\': goto yy280; default: goto yy277; } yy290: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy292; case '"': goto yy265; case '\'': goto yy291; case '>': goto yy277; case '\\': goto yy275; default: goto yy268; } yy291: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy239; case '\'': goto yy266; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy292: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy292; case '"': goto yy265; case '\'': goto yy291; case '/': case '?': goto yy270; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy272; case '>': goto yy274; case '\\': goto yy275; default: goto yy268; } yy294: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy253; case '\'': goto yy279; case '\\': goto yy280; default: goto yy277; } yy295: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy250; case '\\': goto yy303; default: goto yy295; } yy297: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy297; case '"': goto yy250; case '/': case '?': goto yy299; case '>': goto yy302; case '\\': goto yy303; default: goto yy295; } yy299: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy250; case '>': goto yy317; case '\\': goto yy303; default: goto yy295; } yy300: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy305; case '"': goto yy250; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy300; case '=': goto yy307; case '\\': goto yy303; default: goto yy295; } yy302: yyaccept = 12; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy224; case '"': goto yy250; case '\\': goto yy303; default: goto yy295; } yy303: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': goto yy279; case '\\': goto yy303; default: goto yy295; } yy305: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy305; case '"': goto yy250; case '=': goto yy307; case '\\': goto yy303; default: goto yy295; } yy307: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy308; case '"': goto yy230; case '\'': goto yy291; case '>': goto yy295; case '\\': goto yy310; default: goto yy266; } yy308: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': goto yy308; case '"': goto yy230; case '\'': goto yy291; case '/': case '?': goto yy312; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '>': goto yy302; case '\\': goto yy310; default: goto yy266; } yy310: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy295; case '/': case '?': goto yy312; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '>': goto yy302; case '\\': goto yy310; default: goto yy266; } yy312: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '"': goto yy232; case '/': case '?': goto yy312; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '>': goto yy316; case '\\': goto yy310; default: goto yy266; } yy314: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy62; case '\t': case '\r': case ' ': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy314; case '"': goto yy232; case '/': case '?': goto yy312; case '=': goto yy308; case '>': goto yy302; case '\\': goto yy310; default: goto yy266; } yy316: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy250; case '\\': goto yy303; default: goto yy295; } yy317: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy250; case '\\': goto yy303; default: goto yy295; } yy318: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '"': goto yy253; case '\'': goto yy279; case '\\': goto yy280; default: goto yy277; } yy319: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy319; case '/': case '?': goto yy122; case '>': goto yy223; default: goto yy62; } yy321: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy323; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy321; case '=': goto yy227; default: goto yy62; } yy323: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy323; case '=': goto yy227; default: goto yy62; } yy325: yyaccept = 11; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy124; case '\'': goto yy250; case '\\': goto yy251; default: goto yy248; } yy326: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy328; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy326; case '>': goto yy330; default: goto yy62; } yy328: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy328; case '>': goto yy330; default: goto yy62; } yy330: ++YYCURSOR; #line 172 "../../lnav2/src/data_scanner_re.re" { RET(DT_XML_CLOSE_TAG); } #line 10566 "../../lnav2/src/data_scanner_re.cc" yy332: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy333; case '1': goto yy334; case '2': goto yy335; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'a': case 'b': case 'c': case 'd': case 'e': goto yy336; case 'F': case 'f': goto yy337; default: goto yy338; } yy333: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy439; case ':': goto yy341; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy342; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy334: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy437; case ':': goto yy341; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy342; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy335: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy437; case '5': goto yy438; case '6': case '7': case '8': case '9': goto yy439; case ':': goto yy341; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy342; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy336: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy342; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy337: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'a': case 'b': case 'c': case 'd': case 'e': goto yy342; case ':': goto yy341; case 'F': case 'f': goto yy340; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy338: ++YYCURSOR; yy339: YYCURSOR = YYCTXMARKER; #line 162 "../../lnav2/src/data_scanner_re.re" { RET(DT_IPV6_ADDRESS); } #line 10990 "../../lnav2/src/data_scanner_re.cc" yy340: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'a': case 'b': case 'c': case 'd': case 'e': goto yy343; case ':': goto yy341; case 'F': case 'f': goto yy374; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy341: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy345; default: goto yy62; } yy342: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy343; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy343: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy344; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy344: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy341; default: goto yy338; } yy345: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy347; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy346: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy350; default: goto yy62; } yy347: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy348; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy348: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy349; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy349: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy346; default: goto yy338; } yy350: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy352; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy351: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy355; default: goto yy62; } yy352: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy353; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy353: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy354; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy354: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy351; default: goto yy338; } yy355: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy357; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy356: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy360; default: goto yy62; } yy357: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy358; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy358: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy359; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy359: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy356; default: goto yy338; } yy360: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy362; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy361: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy365; default: goto yy62; } yy362: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy363; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy363: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy364; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy364: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy361; default: goto yy338; } yy365: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy367; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy366: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy370; default: goto yy62; } yy367: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy368; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy368: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy369; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy369: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy366; default: goto yy338; } yy370: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy371; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy371: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy372; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy372: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy373: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy374: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'a': case 'b': case 'c': case 'd': case 'e': goto yy344; case ':': goto yy341; case 'F': case 'f': goto yy375; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy375: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy376; default: goto yy338; } yy376: yych = *++YYCURSOR; switch (yych) { case '0': goto yy379; case '1': goto yy378; case '2': goto yy377; case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy380; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy345; default: goto yy62; } yy377: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy434; case '5': goto yy436; case '6': case '7': case '8': case '9': goto yy381; case ':': goto yy346; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy347; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy378: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy434; case ':': goto yy346; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy347; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy379: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy381; case ':': goto yy399; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy347; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy380: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy381; case ':': goto yy346; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy347; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy381: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy348; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy382: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy385; case '1': goto yy384; case '2': goto yy383; default: goto yy339; } yy383: yych = *++YYCURSOR; switch (yych) { case '.': goto yy386; case '0': case '1': case '2': case '3': case '4': goto yy385; case '5': goto yy398; case '6': case '7': case '8': case '9': goto yy387; default: goto yy62; } yy384: yych = *++YYCURSOR; switch (yych) { case '.': goto yy386; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy385; default: goto yy62; } yy385: yych = *++YYCURSOR; switch (yych) { case '.': goto yy386; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy387; default: goto yy62; } yy386: yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy390; case '1': goto yy389; case '2': goto yy388; default: goto yy62; } yy387: yych = *++YYCURSOR; switch (yych) { case '.': goto yy386; default: goto yy62; } yy388: yych = *++YYCURSOR; switch (yych) { case '.': goto yy391; case '0': case '1': case '2': case '3': case '4': goto yy390; case '5': goto yy397; case '6': case '7': case '8': case '9': goto yy392; default: goto yy62; } yy389: yych = *++YYCURSOR; switch (yych) { case '.': goto yy391; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy390; default: goto yy62; } yy390: yych = *++YYCURSOR; switch (yych) { case '.': goto yy391; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy392; default: goto yy62; } yy391: yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy395; case '1': goto yy394; case '2': goto yy393; default: goto yy62; } yy392: yych = *++YYCURSOR; switch (yych) { case '.': goto yy391; default: goto yy62; } yy393: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': goto yy395; case '5': goto yy396; case '6': case '7': case '8': case '9': goto yy373; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy394: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy395; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy395: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy373; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy396: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': goto yy373; case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy397: yych = *++YYCURSOR; switch (yych) { case '.': goto yy391; case '0': case '1': case '2': case '3': case '4': case '5': goto yy392; default: goto yy62; } yy398: yych = *++YYCURSOR; switch (yych) { case '.': goto yy386; case '0': case '1': case '2': case '3': case '4': case '5': goto yy387; default: goto yy62; } yy399: yych = *++YYCURSOR; switch (yych) { case '0': goto yy402; case '1': goto yy401; case '2': goto yy400; case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy403; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy350; default: goto yy62; } yy400: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy431; case '5': goto yy433; case '6': case '7': case '8': case '9': goto yy404; case ':': goto yy351; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy352; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy401: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy431; case ':': goto yy351; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy352; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy402: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy404; case ':': goto yy405; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy352; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy403: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy404; case ':': goto yy351; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy352; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy404: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy353; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy405: yych = *++YYCURSOR; switch (yych) { case '0': goto yy408; case '1': goto yy407; case '2': goto yy406; case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy409; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy355; default: goto yy62; } yy406: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy428; case '5': goto yy430; case '6': case '7': case '8': case '9': goto yy410; case ':': goto yy356; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy357; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy407: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy428; case ':': goto yy356; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy357; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy408: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy410; case ':': goto yy411; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy357; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy409: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy410; case ':': goto yy356; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy357; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy410: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy358; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy411: yych = *++YYCURSOR; switch (yych) { case '0': goto yy414; case '1': goto yy413; case '2': goto yy412; case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy415; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy360; default: goto yy62; } yy412: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy425; case '5': goto yy427; case '6': case '7': case '8': case '9': goto yy416; case ':': goto yy361; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy362; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy413: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy425; case ':': goto yy361; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy362; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy414: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy416; case ':': goto yy417; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy362; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy415: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy416; case ':': goto yy361; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy362; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy416: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy363; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy417: yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy420; case '1': goto yy419; case '2': goto yy418; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy365; default: goto yy62; } yy418: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': goto yy422; case '5': goto yy424; case '6': case '7': case '8': case '9': goto yy421; case ':': goto yy366; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy367; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy419: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy422; case ':': goto yy366; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy367; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy420: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy421; case ':': goto yy366; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy367; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy421: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy368; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy422: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy423; case ':': goto yy366; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy368; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy423: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy369; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy424: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy423; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy368; case ':': goto yy366; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy425: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy426; case ':': goto yy361; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy363; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy426: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy364; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy427: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy426; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy363; case ':': goto yy361; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy428: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy429; case ':': goto yy356; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy358; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy429: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy359; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy430: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy429; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy358; case ':': goto yy356; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy431: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy432; case ':': goto yy351; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy353; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy432: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy354; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy433: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy432; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy353; case ':': goto yy351; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy434: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy435; case ':': goto yy346; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy348; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy435: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy349; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy436: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy435; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy348; case ':': goto yy346; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy437: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy440; case ':': goto yy341; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy343; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy438: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': goto yy440; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy343; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy439: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy343; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy440: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy382; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy344; case ':': goto yy341; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy441: ++YYCURSOR; yych = *YYCURSOR; yy442: switch (yych) { case '\t': case '\r': case ' ': goto yy441; default: goto yy28; } yy443: yych = *++YYCURSOR; switch (yych) { case ':': goto yy459; default: goto yy62; } yy444: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy445; default: goto yy62; } yy445: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy446; default: goto yy62; } yy446: yych = *++YYCURSOR; switch (yych) { case ':': goto yy447; default: goto yy62; } yy447: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy448; default: goto yy62; } yy448: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy449; default: goto yy62; } yy449: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy450; case ':': goto yy62; default: goto yy452; } yy450: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy453; default: goto yy451; } yy451: YYCURSOR = YYCTXMARKER; #line 151 "../../lnav2/src/data_scanner_re.re" { RET(DT_TIME); } #line 16932 "../../lnav2/src/data_scanner_re.cc" yy452: yych = *++YYCURSOR; goto yy451; yy453: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy454; default: goto yy62; } yy454: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy455; default: goto yy62; } yy455: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy456; case ':': goto yy62; default: goto yy452; } yy456: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy457; case ':': goto yy451; default: goto yy452; } yy457: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy458; case ':': goto yy451; default: goto yy452; } yy458: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case ':': goto yy451; default: goto yy452; } yy459: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy460; default: goto yy62; } yy460: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy461; default: goto yy62; } yy461: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case ':': goto yy447; default: goto yy462; } yy462: ++YYCURSOR; yy463: YYCURSOR = YYCTXMARKER; #line 150 "../../lnav2/src/data_scanner_re.re" { RET(DT_TIME); } #line 17067 "../../lnav2/src/data_scanner_re.cc" yy464: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '/': goto yy465; case '@': goto yy70; default: goto yy64; } yy465: yyaccept = 3; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '\'': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '`': case '{': case '|': case '}': goto yy25; case '!': case '#': case '%': case '&': case '(': case ')': case '*': case '^': case '~': goto yy467; case '$': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy465; case ':': goto yy61; default: goto yy63; } yy467: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '!': case '#': case '$': case '%': case '&': case '(': case ')': case '*': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '^': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '~': goto yy467; default: goto yy25; } yy469: yych = *++YYCURSOR; switch (yych) { case '/': goto yy484; case ':': goto yy65; default: goto yy62; } yy470: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; default: goto yy63; } yy472: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '#': case '&': case '<': case '=': case '>': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy63; } yy474: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ':': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '\'': goto yy479; case '.': goto yy481; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy474; default: goto yy62; } yy476: ++YYCURSOR; yy477: YYCURSOR = YYCTXMARKER; #line 210 "../../lnav2/src/data_scanner_re.re" { RET(DT_WORD); } #line 17603 "../../lnav2/src/data_scanner_re.cc" yy478: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy476; default: goto yy477; } yy479: YYCTXMARKER = YYCURSOR + 1; yyaccept = 15; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; yy480: switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ':': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '\'': goto yy479; case '.': goto yy481; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy474; default: goto yy477; } yy481: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy476; default: goto yy62; } yy482: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy484; case ':': goto yy65; default: goto yy477; } yy483: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': case '\r': case ' ': goto yy476; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy484: yych = *++YYCURSOR; switch (yych) { case '/': goto yy485; default: goto yy62; } yy485: yych = *++YYCURSOR; switch (yych) { case '%': case '&': case '-': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '=': case '?': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy486; default: goto yy487; } yy486: ++YYCURSOR; yych = *YYCURSOR; yy487: switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '\'': case '(': case ')': case '[': case ']': case '{': case '}': goto yy62; case '%': case '&': case '-': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '=': case '?': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy488; default: goto yy486; } yy488: yyaccept = 16; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '\'': case '(': case ')': case '[': case ']': case '{': case '}': goto yy490; case '%': case '&': case '-': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '=': case '?': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy488; default: goto yy486; } yy490: #line 148 "../../lnav2/src/data_scanner_re.re" { RET(DT_URL); } #line 18014 "../../lnav2/src/data_scanner_re.cc" yy491: yych = *++YYCURSOR; switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy901; case ':': goto yy736; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy537; default: goto yy62; } yy492: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy888; case '1': goto yy887; case '2': goto yy886; case '@': goto yy70; default: goto yy64; } yy493: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy791; case '/': goto yy790; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy788; case ':': goto yy787; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy497; case 'E': case 'e': goto yy789; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy494: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy497; case ':': goto yy496; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy495: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy497; case ':': goto yy496; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy496: yych = *++YYCURSOR; switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy763; case ':': goto yy736; default: goto yy62; } yy497: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy499; case ':': goto yy498; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy498: yych = *++YYCURSOR; switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy537; case ':': goto yy736; default: goto yy62; } yy499: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy501; case ':': goto yy500; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy500: yych = *++YYCURSOR; switch (yych) { case '%': goto yy538; case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy537; case ':': goto yy536; default: goto yy62; } yy501: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy502; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy502: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy503; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy503: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy504; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy504: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': goto yy507; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy505; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy505: yyaccept = 9; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy505; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy507: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy508; case '@': goto yy70; default: goto yy64; } yy508: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy509; case '@': goto yy70; default: goto yy64; } yy509: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy510; case '@': goto yy70; default: goto yy64; } yy510: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy511; case '@': goto yy70; default: goto yy64; } yy511: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy512; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy512: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy513; case '@': goto yy70; default: goto yy64; } yy513: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy514; case '@': goto yy70; default: goto yy64; } yy514: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy515; case '@': goto yy70; default: goto yy64; } yy515: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy516; case '@': goto yy70; default: goto yy64; } yy516: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy517; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy517: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy518; case '@': goto yy70; default: goto yy64; } yy518: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy519; case '@': goto yy70; default: goto yy64; } yy519: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy520; case '@': goto yy70; default: goto yy64; } yy520: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy521; case '@': goto yy70; default: goto yy64; } yy521: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy522; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy522: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy523; case '@': goto yy70; default: goto yy64; } yy523: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy524; case '@': goto yy70; default: goto yy64; } yy524: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy525; case '@': goto yy70; default: goto yy64; } yy525: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy526; case '@': goto yy70; default: goto yy64; } yy526: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy527; case '@': goto yy70; default: goto yy64; } yy527: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy528; case '@': goto yy70; default: goto yy64; } yy528: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy529; case '@': goto yy70; default: goto yy64; } yy529: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy530; case '@': goto yy70; default: goto yy64; } yy530: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy531; case '@': goto yy70; default: goto yy64; } yy531: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy532; case '@': goto yy70; default: goto yy64; } yy532: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy533; case '@': goto yy70; default: goto yy64; } yy533: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy534; case '@': goto yy70; default: goto yy64; } yy534: yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy535; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy535: #line 193 "../../lnav2/src/data_scanner_re.re" { RET(DT_UUID); } #line 21342 "../../lnav2/src/data_scanner_re.cc" yy536: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy682; case '1': goto yy683; case '2': goto yy684; case ':': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy685; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy537: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy542; case ':': goto yy541; default: goto yy62; } yy538: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy539; default: goto yy62; } yy539: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy539; case ':': goto yy62; default: goto yy338; } yy541: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy545; case ':': goto yy546; default: goto yy62; } yy542: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy543; case ':': goto yy541; default: goto yy62; } yy543: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy544; case ':': goto yy541; default: goto yy62; } yy544: yych = *++YYCURSOR; switch (yych) { case ':': goto yy541; default: goto yy62; } yy545: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy595; case ':': goto yy594; default: goto yy62; } yy546: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy547; case '1': goto yy548; case '2': goto yy549; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy550; default: goto yy338; } yy547: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy576; case ':': goto yy551; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy552; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy548: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy574; case ':': goto yy551; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy552; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy549: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': goto yy574; case '5': goto yy575; case '6': case '7': case '8': case '9': goto yy576; case ':': goto yy551; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy552; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy550: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy552; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy551: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy555; default: goto yy62; } yy552: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy553; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy553: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy554; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy554: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy551; default: goto yy338; } yy555: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy557; case ':': goto yy556; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy556: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy560; default: goto yy62; } yy557: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy558; case ':': goto yy556; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy558: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy559; case ':': goto yy556; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy559: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy556; default: goto yy338; } yy560: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy562; case ':': goto yy561; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy561: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy565; default: goto yy62; } yy562: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy563; case ':': goto yy561; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy563: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy564; case ':': goto yy561; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy564: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy561; default: goto yy338; } yy565: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy567; case ':': goto yy566; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy566: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy570; default: goto yy62; } yy567: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy568; case ':': goto yy566; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy568: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy569; case ':': goto yy566; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy569: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy566; default: goto yy338; } yy570: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy571; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy571: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy572; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy572: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy573: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy580; case '1': goto yy579; case '2': goto yy578; default: goto yy339; } yy574: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy577; case ':': goto yy551; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy553; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy575: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': goto yy577; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy553; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy576: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy553; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy577: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy554; case ':': goto yy551; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy578: yych = *++YYCURSOR; switch (yych) { case '.': goto yy581; case '0': case '1': case '2': case '3': case '4': goto yy580; case '5': goto yy593; case '6': case '7': case '8': case '9': goto yy582; default: goto yy62; } yy579: yych = *++YYCURSOR; switch (yych) { case '.': goto yy581; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy580; default: goto yy62; } yy580: yych = *++YYCURSOR; switch (yych) { case '.': goto yy581; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy582; default: goto yy62; } yy581: yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy585; case '1': goto yy584; case '2': goto yy583; default: goto yy62; } yy582: yych = *++YYCURSOR; switch (yych) { case '.': goto yy581; default: goto yy62; } yy583: yych = *++YYCURSOR; switch (yych) { case '.': goto yy586; case '0': case '1': case '2': case '3': case '4': goto yy585; case '5': goto yy592; case '6': case '7': case '8': case '9': goto yy587; default: goto yy62; } yy584: yych = *++YYCURSOR; switch (yych) { case '.': goto yy586; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy585; default: goto yy62; } yy585: yych = *++YYCURSOR; switch (yych) { case '.': goto yy586; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy587; default: goto yy62; } yy586: yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy590; case '1': goto yy589; case '2': goto yy588; default: goto yy62; } yy587: yych = *++YYCURSOR; switch (yych) { case '.': goto yy586; default: goto yy62; } yy588: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': goto yy590; case '5': goto yy591; case '6': case '7': case '8': case '9': goto yy373; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy589: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy590; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy590: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy373; case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy591: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': goto yy373; case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy592: yych = *++YYCURSOR; switch (yych) { case '.': goto yy586; case '0': case '1': case '2': case '3': case '4': case '5': goto yy587; default: goto yy62; } yy593: yych = *++YYCURSOR; switch (yych) { case '.': goto yy581; case '0': case '1': case '2': case '3': case '4': case '5': goto yy582; default: goto yy62; } yy594: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy598; case ':': goto yy599; default: goto yy62; } yy595: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy596; case ':': goto yy594; default: goto yy62; } yy596: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy597; case ':': goto yy594; default: goto yy62; } yy597: yych = *++YYCURSOR; switch (yych) { case ':': goto yy594; default: goto yy62; } yy598: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy626; case ':': goto yy625; default: goto yy62; } yy599: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy600; case '1': goto yy601; case '2': goto yy602; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy603; default: goto yy338; } yy600: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy623; case ':': goto yy604; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy605; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy601: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy621; case ':': goto yy604; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy605; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy602: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': goto yy621; case '5': goto yy622; case '6': case '7': case '8': case '9': goto yy623; case ':': goto yy604; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy605; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy603: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy605; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy604: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy608; default: goto yy62; } yy605: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy606; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy606: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy607; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy607: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy604; default: goto yy338; } yy608: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy610; case ':': goto yy609; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy609: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy613; default: goto yy62; } yy610: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy611; case ':': goto yy609; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy611: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy612; case ':': goto yy609; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy612: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy609; default: goto yy338; } yy613: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy615; case ':': goto yy614; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy614: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy618; default: goto yy62; } yy615: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy616; case ':': goto yy614; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy616: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy617; case ':': goto yy614; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy617: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy614; default: goto yy338; } yy618: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy619; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy619: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy620; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy620: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy621: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy624; case ':': goto yy604; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy606; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy622: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': goto yy624; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy606; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy623: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy606; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy624: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy607; case ':': goto yy604; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy625: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy630; case ':': goto yy629; default: goto yy62; } yy626: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy627; case ':': goto yy625; default: goto yy62; } yy627: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy628; case ':': goto yy625; default: goto yy62; } yy628: yych = *++YYCURSOR; switch (yych) { case ':': goto yy625; default: goto yy62; } yy629: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy661; case '1': goto yy662; case '2': goto yy663; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy664; default: goto yy338; } yy630: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy632; case ':': goto yy631; default: goto yy62; } yy631: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy636; case ':': goto yy635; default: goto yy62; } yy632: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy633; case ':': goto yy631; default: goto yy62; } yy633: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy634; case ':': goto yy631; default: goto yy62; } yy634: yych = *++YYCURSOR; switch (yych) { case ':': goto yy631; default: goto yy62; } yy635: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy653; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy636: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy638; case ':': goto yy637; default: goto yy62; } yy637: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy642; case ':': goto yy641; default: goto yy62; } yy638: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy639; case ':': goto yy637; default: goto yy62; } yy639: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy640; case ':': goto yy637; default: goto yy62; } yy640: yych = *++YYCURSOR; switch (yych) { case ':': goto yy637; default: goto yy62; } yy641: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy650; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy642: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy644; case ':': goto yy643; default: goto yy62; } yy643: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy647; case ':': goto yy373; default: goto yy62; } yy644: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy645; case ':': goto yy643; default: goto yy62; } yy645: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy646; case ':': goto yy643; default: goto yy62; } yy646: yych = *++YYCURSOR; switch (yych) { case ':': goto yy643; default: goto yy62; } yy647: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy648; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy648: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy649; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy649: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy650: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy651; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy651: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy652; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy652: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy653: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy655; case ':': goto yy654; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy654: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy658; default: goto yy62; } yy655: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy656; case ':': goto yy654; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy656: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy657; case ':': goto yy654; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy657: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy654; default: goto yy338; } yy658: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy659; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy659: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy660; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy660: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy661: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy679; case ':': goto yy665; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy666; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy662: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy677; case ':': goto yy665; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy666; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy663: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': goto yy677; case '5': goto yy678; case '6': case '7': case '8': case '9': goto yy679; case ':': goto yy665; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy666; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy664: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy666; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy665: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy669; default: goto yy62; } yy666: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy667; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy667: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy668; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy668: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy665; default: goto yy338; } yy669: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy671; case ':': goto yy670; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy670: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy674; default: goto yy62; } yy671: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy672; case ':': goto yy670; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy672: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy673; case ':': goto yy670; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy673: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy670; default: goto yy338; } yy674: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy675; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy675: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy676; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy676: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy677: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy680; case ':': goto yy665; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy667; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy678: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': goto yy680; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy667; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy679: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy667; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy680: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy573; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy668; case ':': goto yy665; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy681: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy339; default: goto yy67; } yy682: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy717; case ':': goto yy686; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy687; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy683: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy715; case ':': goto yy686; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy687; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy684: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': goto yy715; case '5': goto yy716; case '6': case '7': case '8': case '9': goto yy717; case ':': goto yy686; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy687; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy685: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy687; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy686: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy691; case ':': goto yy65; default: goto yy62; } yy687: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy689; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy688: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy539; default: goto yy339; } yy689: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy690; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy690: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; case ':': goto yy686; default: goto yy681; } yy691: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy693; case ':': goto yy692; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy692: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy696; default: goto yy62; } yy693: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy694; case ':': goto yy692; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy694: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy695; case ':': goto yy692; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy695: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy692; default: goto yy338; } yy696: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy698; case ':': goto yy697; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy697: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy701; default: goto yy62; } yy698: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy699; case ':': goto yy697; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy699: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy700; case ':': goto yy697; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy700: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy697; default: goto yy338; } yy701: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy702; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy702: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy712; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy703: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy704; default: goto yy62; } yy704: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy706; case ':': goto yy705; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy705: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy709; default: goto yy62; } yy706: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy707; case ':': goto yy705; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy707: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy708; case ':': goto yy705; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy708: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy705; default: goto yy338; } yy709: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy710; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy710: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy711; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy711: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy373; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy712: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy713; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy713: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '%': goto yy688; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy703; default: goto yy338; } yy714: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy339; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy721; case '1': goto yy720; case '2': goto yy719; case ':': goto yy61; default: goto yy66; } yy715: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy718; case ':': goto yy686; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy689; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy716: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': goto yy718; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy689; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy717: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy689; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy718: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '%': goto yy688; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy690; case ':': goto yy686; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy719: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy722; case '0': case '1': case '2': case '3': case '4': goto yy721; case '5': goto yy735; case '6': case '7': case '8': case '9': goto yy723; default: goto yy67; } yy720: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy722; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy721; default: goto yy67; } yy721: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy722; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy723; default: goto yy67; } yy722: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy726; case '1': goto yy725; case '2': goto yy724; default: goto yy67; } yy723: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy722; default: goto yy67; } yy724: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy727; case '0': case '1': case '2': case '3': case '4': goto yy726; case '5': goto yy734; case '6': case '7': case '8': case '9': goto yy728; default: goto yy67; } yy725: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy727; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy726; default: goto yy67; } yy726: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy727; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy728; default: goto yy67; } yy727: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy731; case '1': goto yy730; case '2': goto yy729; default: goto yy67; } yy728: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy727; default: goto yy67; } yy729: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': goto yy731; case '5': goto yy733; case '6': case '7': case '8': case '9': goto yy732; case ':': goto yy61; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy730: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy731; case ':': goto yy61; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy731: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy732; case ':': goto yy61; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy732: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy67; default: goto yy681; } yy733: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': goto yy732; case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy67; default: goto yy681; } yy734: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy727; case '0': case '1': case '2': case '3': case '4': case '5': goto yy728; default: goto yy67; } yy735: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy722; case '0': case '1': case '2': case '3': case '4': case '5': goto yy723; default: goto yy67; } yy736: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy737; case '1': goto yy738; case '2': goto yy739; case ':': goto yy62; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy740; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy737: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy761; case ':': goto yy742; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy741; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy738: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy759; case ':': goto yy742; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy741; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy739: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': goto yy759; case '5': goto yy760; case '6': case '7': case '8': case '9': goto yy761; case ':': goto yy742; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy741; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy740: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy741; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy741: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy757; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy742: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy743; case ':': goto yy65; default: goto yy62; } yy743: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy744; case ':': goto yy745; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy744: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy755; case ':': goto yy745; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy745: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy746; default: goto yy62; } yy746: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy747; case ':': goto yy748; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy747: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy753; case ':': goto yy748; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy748: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy749; default: goto yy62; } yy749: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy750; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy750: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy751; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy751: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy752; case ':': goto yy703; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy752: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy703; default: goto yy338; } yy753: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy754; case ':': goto yy748; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy754: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy748; default: goto yy338; } yy755: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy756; case ':': goto yy745; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy756: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; case ':': goto yy745; default: goto yy338; } yy757: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy758; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy758: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; case ':': goto yy742; default: goto yy681; } yy759: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy762; case ':': goto yy742; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy757; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy760: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': goto yy762; case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy757; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy761: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy757; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy762: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy338; case '.': goto yy714; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy758; case ':': goto yy742; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy66; default: goto yy681; } yy763: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy764; case ':': goto yy541; default: goto yy62; } yy764: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy543; case ':': goto yy766; default: goto yy765; } yy765: #line 152 "../../lnav2/src/data_scanner_re.re" { if ((YYCURSOR - pi.get_string()) == 17) { RET(DT_MAC_ADDRESS); } else { RET(DT_HEX_DUMP); } } #line 34401 "../../lnav2/src/data_scanner_re.cc" yy766: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy767; case ':': goto yy546; default: goto yy62; } yy767: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy768; case ':': goto yy594; default: goto yy62; } yy768: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy596; case ':': goto yy769; default: goto yy765; } yy769: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy770; case ':': goto yy599; default: goto yy62; } yy770: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy771; case ':': goto yy625; default: goto yy62; } yy771: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy627; case ':': goto yy772; default: goto yy765; } yy772: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy773; case ':': goto yy629; default: goto yy62; } yy773: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy774; case ':': goto yy631; default: goto yy62; } yy774: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy633; case ':': goto yy775; default: goto yy765; } yy775: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy776; case ':': goto yy635; default: goto yy62; } yy776: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy777; case ':': goto yy637; default: goto yy62; } yy777: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy639; case ':': goto yy778; default: goto yy765; } yy778: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy779; case ':': goto yy641; default: goto yy62; } yy779: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy780; case ':': goto yy643; default: goto yy62; } yy780: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy645; case ':': goto yy781; default: goto yy765; } yy781: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy782; case ':': goto yy373; default: goto yy62; } yy782: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy783; case ':': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy62; default: goto yy338; } yy783: YYCTXMARKER = YYCURSOR + 1; yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy649; case ':': goto yy784; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy765; default: goto yy338; } yy784: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy785; default: goto yy62; } yy785: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy786; default: goto yy62; } yy786: yyaccept = 18; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case ':': goto yy784; default: goto yy765; } yy787: yych = *++YYCURSOR; switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy879; case ':': goto yy736; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy763; default: goto yy62; } yy788: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy849; case ':': goto yy498; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy499; case 'E': case 'e': goto yy850; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy789: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy499; case ':': goto yy498; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy790: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy838; default: goto yy64; } yy791: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy792; case '1': goto yy793; case '2': goto yy794; case '@': goto yy70; default: goto yy64; } yy792: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy797; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy793: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy792; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy794: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': goto yy792; case '5': goto yy796; case '6': case '7': case '8': case '9': goto yy797; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy795: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy818; case '1': goto yy819; case '2': goto yy820; case '@': goto yy70; default: goto yy64; } yy796: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': goto yy797; case '6': case '7': case '8': case '9': goto yy816; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy797: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy816; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy798: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '-': goto yy801; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy800: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': goto yy71; case '+': goto yy101; case '-': goto yy805; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case '@': goto yy70; default: goto yy64; } yy801: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; case '@': goto yy70; default: goto yy64; } yy802: yyaccept = 19; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy804: #line 197 "../../lnav2/src/data_scanner_re.re" { RET(DT_VERSION_NUMBER); } #line 36375 "../../lnav2/src/data_scanner_re.cc" yy805: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy814; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; default: goto yy64; } yy806: yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy807: yyaccept = 19; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy809: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy812; case '@': goto yy70; default: goto yy64; } yy810: yyaccept = 19; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy812: yyaccept = 19; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy812; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy814: yyaccept = 19; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy814; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; default: goto yy63; } yy816: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy816; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy800; default: goto yy63; } yy818: yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy821; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy823; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy819: yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy821; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy818; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy820: yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy821; case '0': case '1': case '2': case '3': case '4': goto yy818; case '5': goto yy822; case '6': case '7': case '8': case '9': goto yy823; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy821: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy824; case '1': goto yy825; case '2': goto yy826; case '@': goto yy70; default: goto yy64; } yy822: yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy821; case '0': case '1': case '2': case '3': case '4': case '5': goto yy823; case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy823: yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy804; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy821; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; default: goto yy63; } yy824: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy827; case '%': case '+': goto yy830; case '-': goto yy831; case '.': goto yy832; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy837; case ':': goto yy833; case '@': goto yy834; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy835; default: goto yy829; } yy825: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy827; case '%': case '+': goto yy830; case '-': goto yy831; case '.': goto yy832; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy824; case ':': goto yy833; case '@': goto yy834; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy835; default: goto yy829; } yy826: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy827; case '%': case '+': goto yy830; case '-': goto yy831; case '.': goto yy832; case '0': case '1': case '2': case '3': case '4': goto yy824; case '5': goto yy836; case '6': case '7': case '8': case '9': goto yy837; case ':': goto yy833; case '@': goto yy834; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy835; default: goto yy829; } yy827: ++YYCURSOR; yy828: YYCURSOR = YYCTXMARKER; #line 189 "../../lnav2/src/data_scanner_re.re" { RET(DT_IPV4_ADDRESS); } #line 38054 "../../lnav2/src/data_scanner_re.cc" yy829: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy828; default: goto yy64; } yy830: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy72; default: goto yy828; } yy831: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy828; case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy812; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy832: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy828; case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy833: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ':': goto yy65; default: goto yy828; } yy834: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy828; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy81; case ':': goto yy61; default: goto yy63; } yy835: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy828; case '%': case '+': goto yy71; case '-': goto yy809; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy810; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy836: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy827; case '%': case '+': goto yy830; case '-': goto yy831; case '.': goto yy832; case '0': case '1': case '2': case '3': case '4': case '5': goto yy837; case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy833; case '@': goto yy834; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy835; default: goto yy829; } yy837: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy827; case '%': case '+': goto yy830; case '-': goto yy831; case '.': goto yy832; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy807; case ':': goto yy833; case '@': goto yy834; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy835; default: goto yy829; } yy838: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy839; default: goto yy64; } yy839: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy840; default: goto yy64; } yy840: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy841; default: goto yy64; } yy841: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy842; default: goto yy64; } yy842: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy843; default: goto yy64; } yy843: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy844; default: goto yy64; } yy844: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy845; default: goto yy64; } yy845: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; case 'T': goto yy847; default: goto yy64; } yy846: #line 159 "../../lnav2/src/data_scanner_re.re" { RET(DT_DATE); } #line 39017 "../../lnav2/src/data_scanner_re.cc" yy847: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; default: goto yy64; } yy848: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy816; case '@': goto yy70; default: goto yy64; } yy849: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy854; case '.': goto yy848; case '/': goto yy853; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy851; case ':': goto yy500; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy501; case 'E': case 'e': goto yy852; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case '_': goto yy68; default: goto yy63; } yy850: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy501; case ':': goto yy500; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy851: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy865; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy502; case 'E': case 'e': goto yy866; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy852: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy502; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy853: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy861; default: goto yy64; } yy854: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy855; case '@': goto yy70; default: goto yy64; } yy855: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy856; case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy857; case '@': goto yy70; default: goto yy64; } yy856: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy858; case '@': goto yy70; default: goto yy64; } yy857: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy856; case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy858: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; case '%': case '+': goto yy71; case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy860; case ':': goto yy61; case '@': goto yy70; case 'T': goto yy859; default: goto yy63; } yy859: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy860: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case ':': goto yy61; case '@': goto yy70; case 'T': goto yy859; default: goto yy63; } yy861: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy862; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy863; default: goto yy64; } yy862: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy864; default: goto yy64; } yy863: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy862; default: goto yy64; } yy864: yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy846; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy845; case ':': goto yy61; case 'T': goto yy847; default: goto yy63; } yy865: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy867; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy503; case 'E': case 'e': goto yy868; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy866: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy503; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy867: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy869; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy504; case 'E': case 'e': goto yy870; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy868: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy504; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy869: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy507; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy876; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy505; case 'E': case 'e': goto yy878; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case '_': goto yy68; default: goto yy63; } yy870: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy871; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy505; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy871: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy872; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy508; default: goto yy64; } yy872: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy873; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy509; default: goto yy63; } yy873: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy874; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy510; default: goto yy63; } yy874: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case '%': case '+': goto yy71; case '-': case '.': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy875; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy511; default: goto yy63; } yy875: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case '%': case '+': goto yy71; case '-': goto yy512; case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; case ':': goto yy61; case '@': goto yy70; default: goto yy63; } yy876: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy876; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy505; case 'E': case 'e': goto yy878; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy878: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy97; case '%': goto yy71; case '+': goto yy101; case '-': goto yy100; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy505; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy879: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy880; case ':': goto yy541; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy764; default: goto yy62; } yy880: YYCTXMARKER = YYCURSOR + 1; yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy882; case ':': goto yy881; default: goto yy462; } yy881: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy883; case ':': goto yy546; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy767; default: goto yy62; } yy882: yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy544; case ':': goto yy541; default: goto yy463; } yy883: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy884; case ':': goto yy594; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy768; default: goto yy62; } yy884: YYCTXMARKER = YYCURSOR + 1; yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy450; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy885; case ':': goto yy769; default: goto yy452; } yy885: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy597; case ':': goto yy594; default: goto yy451; } yy886: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': goto yy888; case '5': goto yy900; case '6': case '7': case '8': case '9': goto yy889; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy887: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy888; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy888: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy889; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy889: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy898; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy890: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': goto yy71; case '+': goto yy891; case '-': goto yy892; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case '@': goto yy70; default: goto yy64; } yy891: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy896; default: goto yy72; } yy892: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy893; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; default: goto yy64; } yy893: yyaccept = 23; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy895; case '%': case '+': goto yy71; case '-': case '.': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy893; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy802; default: goto yy63; } yy895: #line 195 "../../lnav2/src/data_scanner_re.re" { RET(DT_NUMBER); } #line 42446 "../../lnav2/src/data_scanner_re.cc" yy896: yyaccept = 23; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '%': case '+': case '-': case '.': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy71; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy896; case '@': goto yy73; default: goto yy895; } yy898: yyaccept = 2; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy806; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy898; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy900: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy801; case '.': goto yy795; case '0': case '1': case '2': case '3': case '4': case '5': goto yy889; case '6': case '7': case '8': case '9': goto yy898; case ':': goto yy61; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy798; case 'E': case 'e': goto yy890; default: goto yy63; } yy901: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy902; case ':': goto yy541; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy542; default: goto yy62; } yy902: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy543; case ':': goto yy903; default: goto yy62; } yy903: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy904; case ':': goto yy546; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy545; default: goto yy62; } yy904: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy905; case ':': goto yy594; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy595; default: goto yy62; } yy905: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; switch (yych) { case '.': goto yy450; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy885; case ':': goto yy594; default: goto yy452; } yy906: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy791; case '/': goto yy790; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy908; case ':': goto yy787; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy497; case 'E': case 'e': goto yy789; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy907: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy791; case '/': goto yy790; case '0': case '1': case '2': case '3': case '4': case '5': goto yy908; case '6': case '7': case '8': case '9': goto yy788; case ':': goto yy787; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy497; case 'E': case 'e': goto yy789; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy908: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy19; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy791; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy849; case ':': goto yy498; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy499; case 'E': case 'e': goto yy850; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy909: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy791; case '/': goto yy790; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy911; case '8': case '9': goto yy788; case ':': goto yy787; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy497; case 'E': case 'e': goto yy789; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy910: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy505; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy911: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy912; case '8': case '9': goto yy849; case ':': goto yy498; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy499; case 'E': case 'e': goto yy850; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy912: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy854; case '.': goto yy848; case '/': goto yy853; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy913; case '8': case '9': goto yy851; case ':': goto yy500; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy501; case 'E': case 'e': goto yy852; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case '_': goto yy68; default: goto yy63; } yy913: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy914; case '8': case '9': goto yy865; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy502; case 'E': case 'e': goto yy866; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy914: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy915; case '8': case '9': goto yy867; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy503; case 'E': case 'e': goto yy868; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy915: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy916; case '8': case '9': goto yy869; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy504; case 'E': case 'e': goto yy870; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy916: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': goto yy507; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy917; case '8': case '9': goto yy876; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy505; case 'E': case 'e': goto yy878; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case '_': goto yy68; default: goto yy63; } yy917: yyaccept = 10; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case '!': case '"': case '#': case '&': case '\'': case '(': case ')': case '*': case ',': case ';': case '<': case '=': case '>': case '?': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy112; case ' ': goto yy90; case '%': goto yy92; case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy848; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy917; case '8': case '9': goto yy876; case ':': goto yy469; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'F': case 'a': case 'b': case 'c': case 'd': case 'f': goto yy505; case 'E': case 'e': goto yy878; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy63; } yy919: ++YYCURSOR; yych = *YYCURSOR; yy920: switch (yych) { case 0x00: goto yy62; case '\'': goto yy923; case '\\': goto yy921; default: goto yy919; } yy921: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\'': goto yy927; case '\\': goto yy921; default: goto yy919; } yy923: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\'': goto yy926; case 'S': case 's': goto yy62; default: goto yy924; } yy924: ++YYCURSOR; yy925: YYCURSOR = YYCTXMARKER; #line 136 "../../lnav2/src/data_scanner_re.re" { CAPTURE(DT_QUOTED_STRING); switch (pi.get_string()[cap[1].c_begin]) { case 'u': case 'r': cap[1].c_begin += 1; break; } cap[1].c_begin += 1; cap[1].c_end -= 1; return true; } #line 44129 "../../lnav2/src/data_scanner_re.cc" yy926: yyaccept = 24; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy925; case '\'': goto yy923; case '\\': goto yy921; default: goto yy919; } yy927: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy924; case '\'': goto yy928; case 'S': case 's': goto yy919; case '\\': goto yy930; default: goto yy926; } yy928: YYCTXMARKER = YYCURSOR + 1; yyaccept = 24; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy924; case '\'': goto yy928; case 'S': case 's': goto yy919; case '\\': goto yy930; default: goto yy926; } yy930: yyaccept = 24; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '\'': goto yy927; case '\\': goto yy921; default: goto yy919; } yy931: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'u': goto yy934; default: goto yy64; } yy932: YYCTXMARKER = YYCURSOR + 1; yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '\'': case '(': case ')': case '*': case ',': case '.': case ':': case ';': case '?': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy480; default: goto yy933; } yy933: #line 133 "../../lnav2/src/data_scanner_re.re" { CAPTURE(DT_WORD); } #line 44318 "../../lnav2/src/data_scanner_re.cc" yy934: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy935; default: goto yy64; } yy935: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy939; case '!': case ',': case '?': goto yy940; case '%': case '+': goto yy71; case '\'': goto yy941; case '-': case '_': goto yy68; case '.': goto yy938; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy936; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy936: yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy484; case ':': goto yy65; default: goto yy937; } yy937: YYCURSOR = YYCTXMARKER; #line 208 "../../lnav2/src/data_scanner_re.re" { RET(DT_CONSTANT); } #line 44511 "../../lnav2/src/data_scanner_re.cc" yy938: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': case '\r': case ' ': goto yy939; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy939: yych = *++YYCURSOR; goto yy937; yy940: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy939; default: goto yy937; } yy941: YYCTXMARKER = YYCURSOR + 1; yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '\'': case '(': case ')': case '*': case ',': case '.': case ':': case ';': case '?': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy480; default: goto yy937; } yy942: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'l': goto yy943; default: goto yy64; } yy943: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'l': goto yy935; default: goto yy64; } yy944: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy948; case ':': goto yy496; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy945: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy948; case ':': goto yy947; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy949; case 'g': case 'h': case 'i': case 'j': case 'k': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'l': goto yy962; default: goto yy64; } yy946: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy948; case ':': goto yy947; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy949; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy947: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy763; case ':': goto yy736; default: goto yy477; } yy948: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy951; case ':': goto yy498; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy949: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy951; case ':': goto yy950; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy952; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy950: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy537; case ':': goto yy736; default: goto yy477; } yy951: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy954; case ':': goto yy500; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy952: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy954; case ':': goto yy953; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy955; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy953: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': goto yy538; case '/': goto yy484; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy537; case ':': goto yy536; default: goto yy477; } yy954: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy956; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy955: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy956; case ':': goto yy482; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy957; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy956: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy958; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy957: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy958; case ':': goto yy482; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy959; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy958: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy960; case ':': goto yy469; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; default: goto yy64; } yy959: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy960; case ':': goto yy482; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy961; case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy960: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': goto yy507; case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; default: goto yy64; } yy961: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': goto yy507; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case '_': goto yy68; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy962: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 's': goto yy963; default: goto yy64; } yy963: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy935; default: goto yy64; } yy964: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'U': goto yy967; default: goto yy64; } yy965: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'u': goto yy966; default: goto yy64; } yy966: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy935; default: goto yy64; } yy967: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'E': goto yy968; default: goto yy64; } yy968: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '\'': case '(': case ')': case '*': case ';': goto yy971; case '!': case ',': case '?': goto yy972; case '%': case '+': goto yy71; case '-': case '_': goto yy68; case '.': goto yy970; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy969; case '@': goto yy70; default: goto yy64; } yy969: yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '/': goto yy484; case ':': goto yy65; default: goto yy937; } yy970: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': case '\r': case ' ': goto yy971; case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy68; case '@': goto yy70; default: goto yy64; } yy971: yych = *++YYCURSOR; goto yy937; yy972: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy971; default: goto yy937; } yy973: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'L': goto yy976; default: goto yy64; } yy974: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'n': goto yy975; default: goto yy64; } yy975: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy935; default: goto yy64; } yy976: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'L': goto yy968; default: goto yy64; } yy977: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy948; case ':': goto yy496; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case 'L': goto yy981; default: goto yy64; } yy978: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': goto yy948; case ':': goto yy947; case '@': goto yy70; case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy949; case 'g': case 'h': case 'i': case 'j': case 'k': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'l': goto yy979; default: goto yy64; } yy979: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 's': goto yy980; default: goto yy64; } yy980: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '_': goto yy68; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; case 'e': goto yy935; default: goto yy64; } yy981: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'S': goto yy982; default: goto yy64; } yy982: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '_': goto yy68; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy470; case ':': goto yy469; case '@': goto yy70; case 'E': goto yy968; default: goto yy64; } yy983: ++YYCURSOR; yych = *YYCURSOR; yy984: switch (yych) { case 0x00: goto yy62; case '"': goto yy987; case '\\': goto yy985; default: goto yy983; } yy985: ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': goto yy989; case '\\': goto yy985; default: goto yy983; } yy987: yyaccept = 27; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case '"': goto yy983; default: goto yy988; } yy988: #line 121 "../../lnav2/src/data_scanner_re.re" { CAPTURE(DT_QUOTED_STRING); switch (pi.get_string()[cap[1].c_begin]) { case 'u': case 'r': cap[1].c_begin += 1; break; } cap[1].c_begin += 1; cap[1].c_end -= 1; return true; } #line 47726 "../../lnav2/src/data_scanner_re.cc" yy989: yyaccept = 27; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy988; case '"': goto yy989; case '\\': goto yy985; default: goto yy983; } yy991: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy476; case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ':': case ';': goto yy993; case '!': case ',': case '?': goto yy994; case '\'': goto yy996; case '.': goto yy995; case '\\': goto yy921; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy991; default: goto yy919; } yy993: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x00) goto yy477; goto yy920; yy994: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: goto yy477; case '\t': case '\r': case ' ': goto yy993; default: goto yy920; } yy995: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy993; default: goto yy920; } yy996: YYCTXMARKER = YYCURSOR + 1; yyaccept = 15; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ':': case ';': goto yy997; case '!': case ',': case '?': goto yy998; case '\'': goto yy999; case '.': goto yy1000; case 'S': goto yy477; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy1001; case 's': goto yy474; default: goto yy924; } yy997: yych = *++YYCURSOR; goto yy925; yy998: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy476; default: goto yy925; } yy999: YYCTXMARKER = YYCURSOR + 1; yyaccept = 24; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: goto yy476; case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ':': case ';': goto yy993; case '!': case ',': case '?': goto yy994; case '\'': goto yy996; case '.': goto yy995; case '\\': goto yy921; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy991; default: goto yy919; } yy1000: yych = *++YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': goto yy476; default: goto yy925; } yy1001: YYCTXMARKER = YYCURSOR + 1; yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '!': case '"': case '\'': case '(': case ')': case '*': case ',': case '.': case ':': case ';': case '?': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy480; default: goto yy925; } yy1002: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': goto yy1003; case '.': goto yy483; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': goto yy470; case ':': goto yy482; case '@': goto yy70; case '_': goto yy68; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy472; default: goto yy64; } yy1003: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '_': goto yy68; case '@': goto yy70; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy1004; default: goto yy64; } yy1004: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '%': case '+': goto yy71; case '\'': goto yy474; case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': goto yy68; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy1005; default: goto yy64; } yy1005: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; YYMARKER = ++YYCURSOR; yych = *YYCURSOR; switch (yych) { case 0x00: case '\t': case '\n': case '\r': case ' ': case '"': case '(': case ')': case '*': case ';': goto yy476; case '!': case ',': case '?': goto yy478; case '#': case '&': case '<': case '=': case '>': case '[': case '\\': case ']': case '^': case '`': case '{': case '|': case '}': case '~': goto yy5; case '%': case '+': goto yy71; case '\'': goto yy479; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': goto yy68; case '.': goto yy483; case ':': goto yy1007; case '@': goto yy70; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy1005; default: goto yy63; } yy1007: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ':': goto yy65; default: goto yy477; } } #line 221 "../../lnav2/src/data_scanner_re.re" } lnav-0.8.2/src/data_scanner_re.re000664 000765 000024 00000016736 13044377034 017204 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "data_scanner.hh" bool data_scanner::tokenize2(pcre_context &pc, data_token_t &token_out) { # define YYCTYPE char # define CAPTURE(tok) { \ pi.pi_next_offset = YYCURSOR.val - pi.get_string(); \ cap[0].c_end = pi.pi_next_offset; \ cap[1].c_end = pi.pi_next_offset; \ token_out = tok; \ } # define RET(tok) { \ CAPTURE(tok); \ return true; \ } pcre_input &pi = this->ds_pcre_input; struct _YYCURSOR { const YYCTYPE operator*() const { if (this->val < this->lim) { return *val; } return '\0'; } operator const YYCTYPE *() const { return this->val; } const YYCTYPE *operator=(const YYCTYPE *rhs) { this->val = rhs; return rhs; } const YYCTYPE *operator+(int rhs) { return this->val + rhs; } _YYCURSOR& operator++() { this->val += 1; return *this; } const YYCTYPE *val; const YYCTYPE *lim; } YYCURSOR; YYCURSOR = pi.get_string() + pi.pi_next_offset; const YYCTYPE *YYLIMIT = pi.get_string() + pi.pi_length; const YYCTYPE *YYMARKER = YYCURSOR; const YYCTYPE *YYCTXMARKER = YYCURSOR; pcre_context::capture_t *cap = pc.all(); YYCURSOR.lim = YYLIMIT; pc.set_count(2); cap[0].c_begin = pi.pi_next_offset; cap[1].c_begin = pi.pi_next_offset; /*!re2c re2c:yyfill:enable = 0; SPACE = [ \t\r]; ALPHA = [a-zA-Z]; NUM = [0-9]; ALPHANUM = [a-zA-Z0-9_]; EOF = "\x00"; IPV4SEG = ("25"[0-5]|("2"[0-4]|"1"{0,1}[0-9]){0,1}[0-9]); IPV4ADDR = (IPV4SEG"."){3,3}IPV4SEG; IPV6SEG = [0-9a-fA-F]{1,4}; IPV6ADDR = ( (IPV6SEG":"){7,7}IPV6SEG| (IPV6SEG":"){1,7}":"| (IPV6SEG":"){1,6}":"IPV6SEG| (IPV6SEG":"){1,5}(":"IPV6SEG){1,2}| (IPV6SEG":"){1,4}(":"IPV6SEG){1,3}| (IPV6SEG":"){1,3}(":"IPV6SEG){1,4}| (IPV6SEG":"){1,2}(":"IPV6SEG){1,5}| IPV6SEG":"((":"IPV6SEG){1,6})| ":"((":"IPV6SEG){1,7}|":")| [a-fA-F0-9]{4}":"(":"IPV6SEG){0,4}"%"[0-9a-zA-Z]{1,}| "::"('ffff'(":0"{1,4}){0,1}":"){0,1}IPV4ADDR| (IPV6SEG":"){1,4}":"IPV4ADDR ); EOF { return false; } ("u"|"r")?'"'('\\'.|'""'|[^\x00\"])*'"' { CAPTURE(DT_QUOTED_STRING); switch (pi.get_string()[cap[1].c_begin]) { case 'u': case 'r': cap[1].c_begin += 1; break; } cap[1].c_begin += 1; cap[1].c_end -= 1; return true; } [a-qstv-zA-QSTV-Z]"'" { CAPTURE(DT_WORD); } ("u"|"r")?"'"('\\'.|"''"|[^\x00\'])*"'"/[^sS] { CAPTURE(DT_QUOTED_STRING); switch (pi.get_string()[cap[1].c_begin]) { case 'u': case 'r': cap[1].c_begin += 1; break; } cap[1].c_begin += 1; cap[1].c_end -= 1; return true; } [a-zA-Z0-9]+"://"[^\x00\r\n\t '"\[\](){}]+[/a-zA-Z0-9\-=&?%] { RET(DT_URL); } ("/"|"./"|"../")[a-zA-Z0-9_\.\-\~/!@#$%^&*()]* { RET(DT_PATH); } (SPACE|NUM)NUM":"NUM{2}/[^:] { RET(DT_TIME); } (SPACE|NUM)NUM?":"NUM{2}":"NUM{2}("."NUM{3,6})?/[^:] { RET(DT_TIME); } [0-9a-fA-F][0-9a-fA-F](":"[0-9a-fA-F][0-9a-fA-F])+ { if ((YYCURSOR - pi.get_string()) == 17) { RET(DT_MAC_ADDRESS); } else { RET(DT_HEX_DUMP); } } (NUM{4}"/"NUM{1,2}"/"NUM{1,2}|NUM{4}"-"NUM{1,2}"-"NUM{1,2}|NUM{2}"/"ALPHA{3}"/"NUM{4})"T"? { RET(DT_DATE); } IPV6ADDR/[^:a-zA-Z0-9] { RET(DT_IPV6_ADDRESS); } "<""?"?[a-zA-Z0-9_:]+SPACE*([a-zA-Z0-9_:]+(SPACE*'='SPACE*('"'(('\\'.|[^\x00"])+)'"'|"'"(('\\'.|[^\x00'])+)"'"|[^\x00>]+)))*SPACE*("/"|"?")">" { RET(DT_XML_EMPTY_TAG); } "<"[a-zA-Z0-9_:]+SPACE*([a-zA-Z0-9_:]+(SPACE*"="SPACE*('"'(('\\'.|[^\x00"])+)'"'|"'"(('\\'.|[^\x00'])+)"'"|[^\x00>]+)))*SPACE*">" { RET(DT_XML_OPEN_TAG); } "" { RET(DT_XML_CLOSE_TAG); } ":" { RET(DT_COLON); } "=" { RET(DT_EQUALS); } "," { RET(DT_COMMA); } ";" { RET(DT_SEMI); } "{" { RET(DT_LCURLY); } "}" { RET(DT_RCURLY); } "[" { RET(DT_LSQUARE); } "]" { RET(DT_RSQUARE); } "(" { RET(DT_LPAREN); } ")" { RET(DT_RPAREN); } "<" { RET(DT_LANGLE); } ">" { RET(DT_RANGLE); } IPV4ADDR/[^0-9] { RET(DT_IPV4_ADDRESS); } [0-9a-fA-F]{8}("-"[0-9a-fA-F]{4}){3}"-"[0-9a-fA-F]{12} { RET(DT_UUID); } [0-9]"."[0-9]+'e'[\-\+][0-9]+ { RET(DT_NUMBER); } [0-9]+("."[0-9]+[a-zA-Z0-9_]*){2,}("-"[a-zA-Z0-9_]+)?|[0-9]+("."[0-9]+[a-zA-Z0-9_]*)+"-"[a-zA-Z0-9_]+ { RET(DT_VERSION_NUMBER); } "-"?"0"[0-7]+ { RET(DT_OCTAL_NUMBER); } "-"?[0-9]+("."[0-9]+)?[ ]*"%" { RET(DT_PERCENTAGE); } "-"?[0-9]+("."[0-9]+)?([eE][\-+][0-9]+)? { RET(DT_NUMBER); } "-"?("0x"|[0-9])[0-9a-fA-F]+ { RET(DT_HEX_NUMBER); } [a-zA-Z0-9\._%+-]+"@"[a-zA-Z0-9\.-]+"."[a-zA-Z]+ { RET(DT_EMAIL); } "true"|"True"|"TRUE"|"false"|"False"|"FALSE"|"None"|"null"|"NULL"/([\r\n\t \(\)!\*:;'\"\?,]|[\.\!,\?]SPACE|EOF) { RET(DT_CONSTANT); } ("re-")?[a-zA-Z][a-z']+/([\r\n\t \(\)!\*:;'\"\?,]|[\.\!,\?]SPACE|EOF) { RET(DT_WORD); } [^\x00"; \t\r\n:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]+("::"[^\x00"; \r\n\t:=,\(\)\{\}\[\]\+#!%\^&\*'\?<>\~`\|\\]+)* { RET(DT_SYMBOL); } ("\r"?"\n"|"\n") { RET(DT_LINE); } SPACE+ { RET(DT_WHITE); } "." { RET(DT_DOT); } . { RET(DT_GARBAGE); } */ } lnav-0.8.2/src/db_sub_source.cc000664 000765 000024 00000003147 12477462531 016667 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include "db_sub_source.hh" const char *db_label_source::NULL_STR = ""; lnav-0.8.2/src/db_sub_source.hh000664 000765 000024 00000041332 13044377034 016671 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __db_sub_source_hh #define __db_sub_source_hh #include #include #include #include #include "json_ptr.hh" #include "listview_curses.hh" #include "hist_source.hh" #include "log_vtab_impl.hh" class db_label_source : public text_sub_source, public text_time_translator { public: db_label_source() : dls_time_column_index(-1) { }; ~db_label_source() { }; bool has_log_time_column() const { return !this->dls_time_column.empty(); }; size_t text_line_count() { return this->dls_rows.size(); }; size_t text_size_for_line(textview_curses &tc, int line, bool raw) { return this->text_line_width(tc); }; size_t text_line_width(textview_curses &curses) { size_t retval = 0; for (std::vector::iterator iter = this->dls_headers.begin(); iter != this->dls_headers.end(); ++iter) { retval += iter->hm_column_size; } return retval; }; void text_value_for_line(textview_curses &tc, int row, std::string &label_out, bool raw) { /* * start_value is the result rowid, each bucket type is a column value * label_out should be the raw text output. */ label_out.clear(); if (row >= (int)this->dls_rows.size()) { return; } for (int lpc = 0; lpc < (int)this->dls_rows[row].size(); lpc++) { int padding = (this->dls_headers[lpc].hm_column_size - strlen(this->dls_rows[row][lpc]) - 1); if (this->dls_headers[lpc].hm_column_type != SQLITE3_TEXT) { label_out.append(padding, ' '); } label_out.append(this->dls_rows[row][lpc]); if (this->dls_headers[lpc].hm_column_type == SQLITE3_TEXT) { label_out.append(padding, ' '); } label_out.append(1, ' '); } }; void text_attrs_for_line(textview_curses &tc, int row, string_attrs_t &sa) { struct line_range lr(0, 0); struct line_range lr2(0, -1); if (row >= (int)this->dls_rows.size()) { return; } for (size_t lpc = 0; lpc < this->dls_headers.size() - 1; lpc++) { if (row % 2 == 0) { sa.push_back(string_attr(lr2, &view_curses::VC_STYLE, A_BOLD)); } lr.lr_start += this->dls_headers[lpc].hm_column_size - 1; lr.lr_end = lr.lr_start + 1; sa.push_back(string_attr(lr, &view_curses::VC_GRAPHIC, ACS_VLINE)); lr.lr_start += 1; } int left = 0; for (size_t lpc = 0; lpc < this->dls_headers.size(); lpc++) { const char *row_value = this->dls_rows[row][lpc]; size_t row_len = strlen(row_value); if (this->dls_headers[lpc].hm_graphable) { double num_value; if (sscanf(row_value, "%lf", &num_value) == 1) { this->dls_chart.chart_attrs_for_value(tc, left, this->dls_headers[lpc].hm_name, num_value, sa); } } if (row_len > 2 && ((row_value[0] == '{' && row_value[row_len - 1] == '}') || (row_value[0] == '[' && row_value[row_len - 1] == ']'))) { json_ptr_walk jpw; if (jpw.parse(row_value, row_len) == yajl_status_ok && jpw.complete_parse() == yajl_status_ok) { for (json_ptr_walk::walk_list_t::iterator iter = jpw.jpw_values.begin(); iter != jpw.jpw_values.end(); ++iter) { double num_value; if (iter->wt_type == yajl_t_number && sscanf(iter->wt_value.c_str(), "%lf", &num_value) == 1) { this->dls_chart.chart_attrs_for_value(tc, left, iter->wt_ptr, num_value, sa); } } } } } } void push_header(const std::string &colstr, int type, bool graphable) { this->dls_headers.push_back(header_meta(colstr)); header_meta &hm = this->dls_headers.back(); hm.hm_column_size = colstr.length() + 1; hm.hm_column_type = type; hm.hm_graphable = graphable; if (colstr == "log_time") { this->dls_time_column_index = this->dls_headers.size() - 1; } } /* TODO: add support for left and right justification... numbers should */ /* be right justified and strings should be left. */ void push_column(const char *colstr) { view_colors &vc = view_colors::singleton(); int index = this->dls_rows.back().size(); double num_value = 0.0; size_t value_len; if (colstr == NULL) { value_len = 0; } else { value_len = strlen(colstr); } if (colstr == NULL) { colstr = NULL_STR; } else { colstr = strdup(colstr); if (colstr == NULL) { throw "out of memory"; } } if (index == this->dls_time_column_index) { date_time_scanner dts; struct timeval tv; if (!dts.convert_to_timeval(colstr, -1, NULL, tv)) { tv.tv_sec = -1; tv.tv_usec = -1; } if (!this->dls_time_column.empty() && tv < this->dls_time_column.back()) { this->dls_time_column_index = -1; this->dls_time_column.clear(); } else { this->dls_time_column.push_back(tv); } } this->dls_rows.back().push_back(colstr); this->dls_headers[index].hm_column_size = std::max(this->dls_headers[index].hm_column_size, strlen(colstr) + 1); if (colstr != NULL && this->dls_headers[index].hm_graphable) { if (sscanf(colstr, "%lf", &num_value) != 1) { num_value = 0.0; } this->dls_chart.add_value(this->dls_headers[index].hm_name, num_value); } else if (value_len > 2 && ((colstr[0] == '{' && colstr[value_len - 1] == '}') || (colstr[0] == '[' && colstr[value_len - 1] == ']'))) { json_ptr_walk jpw; if (jpw.parse(colstr, value_len) == yajl_status_ok && jpw.complete_parse() == yajl_status_ok) { for (json_ptr_walk::walk_list_t::iterator iter = jpw.jpw_values.begin(); iter != jpw.jpw_values.end(); ++iter) { if (iter->wt_type == yajl_t_number && sscanf(iter->wt_value.c_str(), "%lf", &num_value) == 1) { this->dls_chart.add_value(iter->wt_ptr, num_value); this->dls_chart.with_attrs_for_ident( iter->wt_ptr, vc.attrs_for_ident(iter->wt_ptr)); } } } } }; void clear(void) { this->dls_chart.clear(); this->dls_headers.clear(); for (size_t row = 0; row < this->dls_rows.size(); row++) { for (size_t col = 0; col < this->dls_rows[row].size(); col++) { if (this->dls_rows[row][col] != NULL_STR) { free((void *)this->dls_rows[row][col]); } } } this->dls_rows.clear(); this->dls_time_column.clear(); }; long column_name_to_index(const std::string &name) const { std::vector::const_iterator iter; iter = std::find(this->dls_headers.begin(), this->dls_headers.end(), name); if (iter == this->dls_headers.end()) { return -1; } return std::distance(this->dls_headers.begin(), iter); }; int row_for_time(time_t time_bucket) { std::vector::iterator iter; iter = std::lower_bound(this->dls_time_column.begin(), this->dls_time_column.end(), time_bucket); if (iter != this->dls_time_column.end()) { return std::distance(this->dls_time_column.begin(), iter); } return -1; }; time_t time_for_row(int row) { if ((row < 0) || (((size_t) row) >= this->dls_time_column.size())) { return -1; } return this->dls_time_column[row].tv_sec; }; struct header_meta { header_meta(const std::string &name) : hm_name(name), hm_column_type(SQLITE3_TEXT), hm_graphable(false), hm_log_time(false), hm_column_size(0) { }; bool operator==(const std::string &name) const { return this->hm_name == name; }; std::string hm_name; int hm_column_type; bool hm_graphable; bool hm_log_time; size_t hm_column_size; }; stacked_bar_chart dls_chart; std::vector dls_headers; std::vector > dls_rows; std::vector dls_time_column; int dls_time_column_index; static const char *NULL_STR; }; class db_overlay_source : public list_overlay_source { public: db_overlay_source() : dos_active(false), dos_labels(NULL) { }; size_t list_overlay_count(const listview_curses &lv) { size_t retval = 1; if (!this->dos_active || lv.get_inner_height() == 0) { this->dos_lines.clear(); return retval; } view_colors &vc = view_colors::singleton(); vis_line_t top = lv.get_top(); const std::vector &cols = this->dos_labels->dls_rows[top]; unsigned long width; vis_line_t height; lv.get_dimensions(height, width); this->dos_lines.clear(); for (size_t col = 0; col < cols.size(); col++) { const char *col_value = cols[col]; size_t col_len = strlen(col_value); if (!(col_len >= 2 && ((col_value[0] == '{' && col_value[col_len - 1] == '}') || (col_value[0] == '[' && col_value[col_len - 1] == ']')))) { continue; } json_ptr_walk jpw; if (jpw.parse(col_value, col_len) == yajl_status_ok && jpw.complete_parse() == yajl_status_ok) { { const std::string &header = this->dos_labels->dls_headers[col].hm_name; this->dos_lines.push_back(" JSON Column: " + header); retval += 1; } stacked_bar_chart chart; int start_line = this->dos_lines.size(); chart.with_stacking_enabled(false) .with_margins(3, 0); for (json_ptr_walk::walk_list_t::iterator iter = jpw.jpw_values.begin(); iter != jpw.jpw_values.end(); ++iter) { this->dos_lines.push_back(" " + iter->wt_ptr + " = " + iter->wt_value); string_attrs_t &sa = this->dos_lines.back().get_attrs(); struct line_range lr(1, 2); sa.push_back(string_attr(lr, &view_curses::VC_GRAPHIC, ACS_LTEE)); lr.lr_start = 3 + iter->wt_ptr.size() + 3; lr.lr_end = -1; sa.push_back(string_attr(lr, &view_curses::VC_STYLE, A_BOLD)); double num_value = 0.0; if (iter->wt_type == yajl_t_number && sscanf(iter->wt_value.c_str(), "%lf", &num_value) == 1) { int attrs = vc.attrs_for_ident(iter->wt_ptr); chart.add_value(iter->wt_ptr, num_value); chart.with_attrs_for_ident(iter->wt_ptr, attrs); } retval += 1; } int curr_line = start_line; for (json_ptr_walk::walk_list_t::iterator iter = jpw.jpw_values.begin(); iter != jpw.jpw_values.end(); ++iter, curr_line++) { double num_value = 0.0; if (iter->wt_type == yajl_t_number && sscanf(iter->wt_value.c_str(), "%lf", &num_value) == 1) { string_attrs_t &sa = this->dos_lines[curr_line].get_attrs(); int left = 3; chart.chart_attrs_for_value(lv, left, iter->wt_ptr, num_value, sa); } } } } if (retval > 1) { this->dos_lines.push_back(""); string_attrs_t &sa = this->dos_lines.back().get_attrs(); struct line_range lr(1, 2); sa.push_back(string_attr(lr, &view_curses::VC_GRAPHIC, ACS_LLCORNER)); lr.lr_start = 2; lr.lr_end = -1; sa.push_back(string_attr(lr, &view_curses::VC_GRAPHIC, ACS_HLINE)); retval += 1; } return retval; }; bool list_value_for_overlay(const listview_curses &lv, vis_line_t y, attr_line_t &value_out) { view_colors &vc = view_colors::singleton(); if (y == 0) { std::string &line = value_out.get_string(); db_label_source *dls = this->dos_labels; string_attrs_t &sa = value_out.get_attrs(); for (size_t lpc = 0; lpc < this->dos_labels->dls_headers.size(); lpc++) { int before, total_fill = dls->dls_headers[lpc].hm_column_size - dls->dls_headers[lpc].hm_name.length(); struct line_range header_range(line.length(), line.length() + dls->dls_headers[lpc].hm_column_size); int attrs = vc.attrs_for_ident(dls->dls_headers[lpc].hm_name) | A_UNDERLINE; if (!this->dos_labels->dls_headers[lpc].hm_graphable) { attrs = A_UNDERLINE; } sa.push_back(string_attr(header_range, &view_curses::VC_STYLE, attrs)); before = total_fill / 2; total_fill -= before; line.append(before, ' '); line.append(dls->dls_headers[lpc].hm_name); line.append(total_fill, ' '); } struct line_range lr(0); sa.push_back(string_attr(lr, &view_curses::VC_STYLE, A_BOLD | A_UNDERLINE)); return true; } else if (this->dos_active && y >= 2 && ((size_t) y) < (this->dos_lines.size() + 2)) { value_out = this->dos_lines[y - 2]; return true; } return false; }; bool dos_active; db_label_source *dos_labels; std::vector dos_lines; }; #endif lnav-0.8.2/src/default-config.json000664 000765 000024 00000000143 13044377034 017307 0ustar00stackstaff000000 000000 { "ui" : { "clock-format": "%a %b %d %H:%M:%S %Z", "keymap": "default" } } lnav-0.8.2/src/default-log-formats-json.hh000664 000765 000024 00000003504 12477462531 020703 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file default-log-formats-json.hh */ #ifndef __default_log_formats_json_hh #define __default_log_formats_json_hh extern "C" { /** * The value for this comes from the "default-log-formats.json" file, * which gets linked into the executable by the Makefile. */ extern const char default_log_formats_json[]; } #endif lnav-0.8.2/src/default-log-formats.json000664 000765 000024 00000161275 13071032570 020303 0ustar00stackstaff000000 000000 { "access_log" : { "title" : "Common Access Log", "description" : "The default web access log format for servers like Apache.", "url" : "http://en.wikipedia.org/wiki/Common_Log_Format", "multiline" : false, "regex" : { "ts-first-noquotes" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?) (?[^ ]+) (?[^ ]+) (?[A-Z]+) (?[^ \\?]+)(?:\\?(?[^ ]*))? (?:-1|\\d+) (?\\d+) \\d+\\s*(?.*)" }, "ts-first" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?) (?[^ ]+) (?[^ ]+) (?[A-Z]+) \"(?[^ \\?]+)(?:\\?(?[^ ]*))?\" (?:-1|\\d+) (?\\d+) \\d+\\s*(?.*)" }, "std" : { "pattern" : "^(?[\\w\\.:\\-]+)\\s+[\\w\\.\\-]+\\s+(?\\S+)\\s+\\[(?[^\\]]+)\\] \"(?:\\-|(?\\w+) (?[^ \\?]+)(?:\\?(?[^ ]*))? (?[\\w/\\.]+))\" (?\\d+) (?\\d+|-)(?: \"(?[^\"]+)\" \"(?[^\"]+)\")?\\s*(?.*)" }, "mod-std" : { "module-format" : true, "pattern" : "^(?[\\w\\.:\\-]+)\\s+[\\w\\.\\-]+\\s+(?\\S+)\\s+\"(?:\\-|(?\\w+) (?[^ \\?]+)(?:\\?(?[^ ]*))? (?[\\w/\\.]+))\" (?\\d+) (?\\d+|-)(?: \"(?[^\"]+)\" \"(?[^\"]+)\")?\\s*(?.*)" } }, "level-field": "sc_status", "level" : { "error" : "^[^123].*" }, "opid-field" : "c_ip", "value" : { "c_ip" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true, "description" : "The client IP address" }, "cs_username" : { "kind" : "string", "identifier" : true, "description" : "The username passed from the client to the server" }, "cs_method" : { "kind" : "string", "identifier" : true, "description" : "The request method" }, "cs_uri_stem" : { "kind" : "string", "identifier" : true, "description" : "The path part of the request URI" }, "cs_uri_query" : { "kind" : "string", "description" : "The query parameters in the request URI" }, "cs_version" : { "kind" : "string", "identifier" : true, "description" : "The client's HTTP version" }, "sc_status" : { "kind" : "integer", "foreign-key" : true, "rewriter" : ";SELECT :sc_status || ' (' || (SELECT message FROM http_status_codes WHERE status = :sc_status) || ') '", "description" : "The status code returned by the server" }, "sc_bytes" : { "kind" : "integer", "description" : "The number of bytes returned by the server" }, "cs_referer" : { "kind" : "string", "identifier" : true, "description" : "The client's referrer" }, "cs_user_agent" : { "kind" : "string", "identifier" : true, "description" : "The client's HTTP agent" } }, "sample" : [ { "line" : "10.112.72.172 - - [11/Feb/2013:06:43:36 +0000] \"GET /client/ HTTP/1.1\" 200 5778 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17\"", "level" : "info" }, { "line" : "10.112.72.172 - - [11/Feb/2013:06:43:36 +0000] \"GET /client/ HTTP/1.1\" 404 5778 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17\"", "level" : "error" }, { "line" : "10.1.10.51 - - [23/Dec/2014:21:20:35 +0000] \"POST /api/1/rest/foo/bar HTTP/1.1\" 200 - \"-\" \"-\" 293" } ] }, "autodeploy_log" : { "title" : "VMware vSphere Auto Deploy log format", "description" : "The log format for the VMware Auto Deploy service", "url" : "http://kb.vmware.com/kb/2000988", "regex" : { "std" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?) \\[(?\\d+)\\](?\\w+):(?[\\w-]+):(?.*$)" } }, "level-field" : "level", "timestamp-field" : "timestamp", "level" : { "error" : "ERROR", "debug" : "DEBUG", "info" : "INFO", "warning" : "WARNING" }, "value" : { "pid" : { "kind" : "integer", "identifier" : true, "foreign-key" : true, "description" : "The ID of the process that generated the message" }, "module" : { "kind" : "string", "identifier" : true, "description" : "The name of the module that generated the message" } }, "sample" : [ { "line" : "2015-04-24T21:09:29.296 [25376]INFO:somemodule:Something very INFOrmative." } ] }, "block_log" : { "title" : "Generic Block", "description" : "A generic format for logs, like cron, that have a date at the start of a block.", "regex" : { "std" : { "pattern" : "^(?\\w{3} \\w{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2} \\w+ \\d{4})(?(?:.|\\n)*)$" } }, "sample" : [ { "line" : "Sat Apr 27 03:33:07 PDT 2013" } ] }, "candlepin_log" : { "title" : "Candlepin log format", "description" : "Log format used by Candlepin registration system", "regex" : { "reqorg" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}) \\[(req=(?[0-9a-f-]+)|=), org=(?\\w*)\\] (?\\w+) (?[\\w.]+) - (?.*)$" }, "other" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}[+-]\\d{4}) (?.*)$" } }, "value" : { "req" : { "kind" : "string", "identifier" : true }, "org" : { "kind" : "string", "identifier" : true }, "alert_level" : { "kind" : "string" }, "module" : { "kind" : "string", "identifier" : true }, "body" : { "kind" : "string" } }, "sample" : [ { "line" : "2015-04-17 09:41:50,544 [=, org=] INFO org.candlepin.guice.CustomizableModules - Found custom module module.config.katello" }, { "line" : "2015-04-17 09:41:56,320 [req=f91d4a84-020d-4874-9741-3979d0baf58d, org=] INFO org.candlepin.common.filter.LoggingFilter - Request: verb=GET, uri=/candlepin/status" }, { "line" : "2015-04-17 09:42:39+0200 principalType=trusteduser principal=admin target=OWNER entityId=8ab219c64cc653a7014cc6545a6c0001 type=CREATED owner=8ab219c64cc653a7014cc6545a6c0001" }, { "line" : "2015-04-17 10:49:21,912 [req=ec7867ea-2501-4036-bb08-e2d830720cb5, org=npr_goep_hm_com] INFO org.candlepin.common.filter.LoggingFilter - Response: status=200, content-type=\"application/json\", time=235ms" } ] }, "choose_repo_log" : { "title" : "Yum choose_repo Log", "description" : "The log format for the yum choose_repo tool.", "regex" : { "std" : { "pattern" : "^\\[(?\\w+):[^\\]]+] [^:]+:\\d+ (?\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:[\\.,]\\d{3})?):(?.*)" } }, "level-field" : "level", "level" : { "error" : "ERROR", "debug" : "DEBUG", "info" : "INFO", "warning" : "WARNING" }, "sample" : [ { "line": "[INFO:choose_repo] choose_repo:47 2013-06-20 17:26:10,691: Setting region in redhat-rhui.repo" } ] }, "cups_log" : { "title" : "CUPS log format", "description" : "Log format used by the Common Unix Printing System", "regex" : { "system" : { "pattern" : "^(?[IEW]) \\[(?\\d{2}/\\w{3}/\\d{4}:\\d{2}:\\d{2}:\\d{2} [+-]\\d{2,4})\\] (?
\\w+): (?.*)$" }, "default" : { "pattern" : "^(?[IEW]) \\[(?\\d{2}/\\w{3}/\\d{4}:\\d{2}:\\d{2}:\\d{2} [+-]\\d{2,4})\\] (?.*)$" } }, "level" : { "error" : "E", "warning" : "W" }, "value" : { "level" : { "kind" : "string", "identifier" : true }, "section" : { "kind" : "string", "identifier" : true }, "body" : { "kind" : "string" } }, "sample" : [ { "line" : "I [04/Nov/2010:17:37:40 -0400] Allowing up to 100 client connections per host." }, { "line" : "I [04/Nov/2010:17:37:40 -0400] LoadPPDs: Wrote \"/etc/cups/ppds.dat\", 14 PPDs..." }, { "line" : "E [04/Nov/2010:17:37:40 -0400] StartListening: Unable to find IP address for server name \"localhost.localdomain\" - Host name lookup failure" } ] }, "dpkg_log" : { "title" : "Dpkg Log", "description" : "The debian dpkg log.", "regex" : { "std" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?) (?:(?:(?startup|status|configure|install|upgrade|trigproc|remove|purge)(?: (?config-files|failed-config|half-configured|half-installed|installed|not-installed|post-inst-failed|removal-failed|triggers-awaited|triggers-pending|unpacked))? (?[^ ]+) (?[^ ]+)(?: (?[^ ]+))?)|update-alternatives: (?.*))$" } }, "value" : { "action" : { "kind" : "string", "identifier" : true }, "status" : { "kind" : "string", "identifier" : true }, "package" : { "kind" : "string", "identifier" : true }, "installed_version" : { "kind" : "string" }, "available_version" : { "kind" : "string" } }, "sample" : [ { "line" : "2012-02-14 10:44:10 configure base-files 5.0.0ubuntu20 5.0.0ubuntu20" }, { "line" : "2012-02-14 10:44:30 status unpacked rsyslog 4.2.0-2ubuntu8" }, { "line" : "2012-02-14 10:44:32 update-alternatives: run with --install /usr/bin/rview rview /usr/bin/vim.tiny 10" } ] }, "elb_log" : { "title" : "Amazon ELB log", "description" : "Log format for Amazon Elastic Load Balancers", "url" : "http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/access-log-collection.html", "regex" : { "std" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z) (?[^ ]+) (?[\\w\\.:]+):(?\\d+) (?[\\w\\.:]+):(?\\d+) (?\\d+(\\.\\d+)?) (?\\d+(\\.\\d+)?) (?\\d+(\\.\\d+)?) (?\\d+|-) (?\\d+|-) (?\\d+) (?\\d+) \"(?:\\-|(?\\w+|-) (?[^ \\?]+)(?:\\?(?[^ ]*))? (?[\\w/\\.]+|-)\\s*)\" \"(?[^\"]+)\" (?[\\w-]+) (?[\\w\\.-]+)(?.*)" } }, "level-field": "elb_status_code", "level" : { "error" : "^[^123].*" }, "opid-field" : "client_ip", "value" : { "elb" : { "kind" : "string", "identifier" : true }, "client_ip" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true }, "client_port" : { "kind" : "integer", "foreign-key" : true }, "backend_ip" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true }, "backend_port" : { "kind" : "integer", "foreign-key" : true }, "request_processing_time" : { "kind" : "float" }, "backend_processing_time" : { "kind" : "float" }, "response_processing_time" : { "kind" : "float" }, "elb_status_code" : { "kind" : "integer", "foreign-key" : true }, "backend_status_code" : { "kind" : "integer", "foreign-key" : true }, "received_bytes" : { "kind" : "integer" }, "sent_bytes" : { "kind" : "integer" }, "cs_method" : { "kind" : "string", "identifier" : true }, "cs_uri_stem" : { "kind" : "string", "identifier" : true }, "cs_uri_query" : { "kind" : "string" }, "cs_version" : { "kind" : "string", "identifier" : true }, "user_agent" : { "kind" : "string", "identifier" : true }, "ssl_cipher" : { "kind" : "string", "identifier" : true }, "ssl_protocol" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "2015-11-17T05:45:24.077255Z elastic-prod 54.161.222.121:40909 10.231.68.180:443 0.000031 0.009511 0.000029 200 200 0 415 \"GET https://example.com/foo/bar?baz=1234 HTTP/1.1\" \"test agent\" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2" }, { "line" : "2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.000073 0.001048 0.000057 200 200 0 29 \"GET http://www.example.com:80/ HTTP/1.1\" \"curl/7.38.0\" - -" }, { "line" : "2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.000086 0.001048 0.001337 200 200 0 57 \"GET https://www.example.com:443/ HTTP/1.1\" \"curl/7.38.0\" DHE-RSA-AES128-SHA TLSv1.2" }, { "line" : "2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.001069 0.000028 0.000041 - - 82 305 \"- - - \" \"-\" - -" }, { "line" : "2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.001065 0.000015 0.000023 - - 57 502 \"- - - \" \"-\" ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2" } ] }, "engine_log" : { "title" : "engine log", "description" : "The log format for the engine.log files from RHEV/oVirt", "regex" : { "std" : { "pattern" : "^(?.+) (?.+) \\[(?.+)\\] \\((?.+)\\) (?(?:-|\\n)*)" } }, "opid-field" : "tid", "value" : { "tid" : { "kind" : "string", "identifier" : true }, "logger" : { "kind" : "string", "identifier" : true }, "thread" : { "kind" : "string", "identifier" : true } }, "level-field" : "level", "level" : { "error" : "ERROR", "info" : "INFO", "warning" : "WARN" }, "sample" : [ { "line": "2014-09-21 04:01:29,522 INFO [org.ovirt.engine.core.bll.OvfDataUpdater] (DefaultQuartzScheduler_Worker-90) Successfully updated VM OVFs in Data Center Test" } ] }, "error_log" : { "title" : "Common Error Log", "description" : "The default web error log format for servers like Apache.", "regex" : { "cups" : { "pattern" : "^(?\\w) \\[(?[^\\]]+)\\] (?.*)" }, "apache" : { "pattern" : "^\\[(?[^\\]]+)\\] \\[(?:(?[^:]+):)?(?\\w+)\\](?: \\[pid (?\\d+)\\])?(?: \\[client (?[\\w\\.:\\-]+):(?\\d+)\\])? (?.*)" } }, "level-field": "level", "value": { "module": { "kind" : "string", "identifier" : true }, "pid": { "kind" : "integer", "identifier" : true }, "c_ip" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true, "description" : "The client IP address" }, "c_port" : { "kind" : "integer", "identifier" : true } }, "sample" : [ { "line" : "E [08/Jun/2013:11:28:58 -0700] Unknown directive BrowseOrder on line 22 of /private/etc/cups/cupsd.conf.", "level" : "error" }, { "line": "[Tue Apr 04 06:18:29.712806 2017] [mpm_prefork:notice] [pid 17725] AH00163: Apache/2.4.23 (Unix) configured -- resuming normal operations", "level" : "info" }, { "line": "[Tue Apr 04 06:28:08.605341 2017] [core:error] [pid 17962] [client 127.0.0.1:60444] AH00135: Invalid method in request FOO /", "level" : "error" }, { "line": "[Thu Jan 17 02:42:49 2013] [notice] Digest: generating secret for digest authentication ...", "level" : "info" } ] }, "fsck_hfs_log" : { "title" : "Fsck_hfs Log", "description" : "Log for the fsck_hfs tool on Mac OS X.", "regex" : { "std" : { "pattern" : "^(?[^:]+): fsck_hfs (?:run|started) at (?\\w{3} \\w{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2} \\d{4})(?(?:.|\\n)*)" } }, "value" : { "device" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "/dev/rdisk0s2: fsck_hfs run at Wed Jul 25 23:01:18 2012" } ] }, "glog_log" : { "title" : "Glog", "description" : "The google glog format.", "url" : "https://code.google.com/p/google-glog/", "regex" : { "std" : { "pattern" : "^(?[IWECF])(?\\d{4} \\d{2}:\\d{2}:\\d{2}\\.\\d{6}) +(?\\d+) (?[^:]+):(?\\d+)\\] (?(?:.|\\n)*)" } }, "level-field" : "level", "level" : { "error" : "E", "warning" : "W", "info" : "I", "critical" : "C", "fatal" : "F" }, "opid-field" : "thread", "value" : { "thread" : { "kind" : "integer", "identifier" : true, "foreign-key" : true }, "src_file" : { "kind" : "string", "identifier" : true }, "src_line" : { "kind" : "integer", "foreign-key" : true } }, "sample" : [ { "line" : "E0517 15:04:22.619632 1952452992 logging_unittest.cc:253] Log every 3, iteration 19", "line" : "E0517 15:04:22.619632 52992 logging_unittest.cc:253] Log every 3, iteration 19" } ] }, "java_log" : { "title" : "Java log format", "description" : "Log format used by log4j and output by most java programs", "url" : "", "regex" : { "jvm" : { "pattern" : "^(?\\w+)\\s+\\|\\s+jvm (?\\d+)\\s+\\|\\s(?\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2})\\s+\\| (?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}) \\[(?\\w+-\\d+)\\]\\s+(?\\w+)\\s+(?[\\w.]+)\\s+-\\s+(?\\S.*)" }, "dump" : { "pattern" : "^(?\\w+)\\s+\\|\\s+jvm (?\\d+)\\s+\\|\\s(?\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2})\\s+\\| JVMDUMP\\w+\\s(?\\S.*)$" }, "tasko" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}) \\[(?\\w+-\\d+)\\]\\s+(?\\w+)\\s+(?[\\w.]+)\\s+-\\s+(?\\S.*)$" } }, "level-field" : "alert_level", "level" : { "error" : "ERROR", "warning" : "WARN", "debug" : "DEBUG", "info" : "INFO" }, "value" : { "function" : { "kind" : "string", "identifier" : true }, "alert_level" : { "kind" : "string" }, "jvm_no" : { "kind" : "integer" }, "debug_level" : { "kind" : "string" }, "class" : { "kind" : "string" }, "body" : { "kind" : "string" } }, "sample" : [ { "line" : "INFO | jvm 1 | 2015/04/28 18:40:00 | 2015-04-28 18:40:00,077 [DefaultQuartzScheduler_Worker-8] INFO com.redhat.rhn.taskomatic.TaskoJob - errata-queue-default: bunch errata-queue-bunch STARTED" }, { "line" : "INFO | jvm 1 | 2015/04/28 18:34:18 | 2015-04-28 18:34:18,872 [Thread-46] DEBUG com.redhat.rhn.common.hibernate.ConnectionManager - Adding resource com/redhat/rhn/domain/action/ActionArchType.hbm.xml" }, { "line" : "2015-05-22 16:10:00,123 [DefaultQuartzScheduler_Worker-5] INFO com.redhat.rhn.taskomatic.task.ErrataCacheTask - In the queue: 24" }, { "line" : "INFO | jvm 1 | 2015/05/24 07:35:50 | JVMDUMP013I Processed dump event \"user\", detail \"\"." } ] }, "katello_log" : { "title" : "Katello log format", "description" : "Log format used by katello and foreman as used in Satellite 6.", "url" : "http://theforeman.org/", "regex" : { "log" : { "pattern" : "^\\[\\s?(?\\w+)\\s(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})\\s(?\\w+)\\]\\s+(?\\S.*)$" } }, "level-field" : "alert_level", "level" : { "error" : "ERROR", "warning" : "WARN", "debug" : "DEBUG" }, "value" : { "alert_level" : { "kind" : "string" }, "module" : { "kind" : "string" }, "message" : { "kind" : "string" } }, "sample" : [ { "line" : "[DEBUG 2015-05-20 12:22:19 main] /Stage[main]/Certs::Candlepin/Exec[create candlepin qpid exchange]/unless: Failed: ConnectError: [Errno 1] _ssl.c:504: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca", "level" : "debug" }, { "line" : "[DEBUG 2015-05-20 12:22:19 main] Exec[create candlepin qpid exchange](provider=posix): Executing 'qpid-config --ssl-certificate /etc/pki/katello/certs/java-client.crt --ssl-key /etc/pki/katello/private/java-client.key -b 'amqps://avl248.bcc.qld.gov.au:5671' add exchange topic event --durable'", "level" : "debug" }, { "line" : "[ERROR 2015-05-20 12:22:19 main] qpid-config --ssl-certificate /etc/pki/katello/certs/java-client.crt --ssl-key /etc/pki/katello/private/java-client.key -b 'amqps://avl248.bcc.qld.gov.au:5671' add exchange topic event --durable returned 1 instead of one of [0]", "level" : "error" }, { "line" : "[ INFO 2015-05-20 12:22:19 main] /usr/share/ruby/vendor_ruby/puppet/util/errors.rb:104:in `fail'", "level" : "info" } ] }, "openam_log": { "title" : "OpenAM Log", "description" : "The OpenAM identity provider.", "url" : "http://openam.forgerock.org", "level-field" : "level", "level" : { "error" : "ERROR", "warning" : "WARNING", "info" : "INFO", "critical" : "SEVERE", "trace" : "FINE|FINEST" }, "multiline" : false, "regex" : { "std" : { "pattern" : "^\"(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})\"\\s+(?[^ \"]+|\"(?:[^\"]*|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]*|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")\\s+(?[^ \"]+|\"(?:[^\"]|\"\")*\")(?.*)$" } }, "value" : { "data" : { "kind" : "quoted" }, "loginid" : { "kind" : "quoted", "identifier" : true }, "contextid" : { "kind" : "quoted", "identifier" : true }, "ipaddr" : { "kind" : "quoted", "identifier" : true, "collate" : "ipaddress" }, "domain" : { "kind" : "quoted", "identifier" : true }, "loggedby" : { "kind" : "quoted", "identifier" : true }, "messageid" : { "kind" : "quoted", "identifier" : true }, "modulename" : { "kind" : "quoted", "identifier" : true }, "nameid" : { "kind" : "quoted", "identifier" : true }, "hostname" : { "kind" : "quoted", "identifier" : true, "collate" : "ipaddress" } }, "sample" : [ { "line" : "\"2014-06-14 17:08:39\" \"http://localhost:8086|/|\\nhttp://localhost:8086\\n\\nurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport\\n\" \"cn=dsameuser,ou=DSAME Users,dc=openam\" 8fc43a8f6a8c14101 \"Not Available\" INFO dc=openam \"cn=dsameuser,ou=DSAME Users,dc=openam\" SAML2-36 SAML2.access \"Not Available\" 127.0.1.1" }, { "line" : "\"2014-06-09 14:49:56\" /etc/openam/openam/log/ \"cn=dsameuser,ou=DSAME Users,dc=openam\" 3d956febb91fed31 \"Not Available\" INFO dc=openam \"cn=dsameuser,ou=DSAME Users,dc=openam\" LOG-1 amPolicy.access \"Not Available\" 127.0.1.1" } ] }, "openamdb_log": { "title" : "OpenAM Debug Log", "description" : "Debug logs for the OpenAM identity provider.", "url" : "http://openam.forgerock.org", "regex" : { "std" : { "pattern" : "^(?[\\w]+):(?\\d{2}/\\d{2}/\\d{4} \\d{2}:\\d{2}:\\d{2}:\\d{3} [AP]M \\w+): Thread\\[(?[^,]+,\\d+,[^,]+)\\]\\n?(?:\\*+|(?.*))$" } }, "sample" : [ { "line" : "amMonitoring:06/09/2014 02:49:59:447 PM UTC: Thread[http-80-1,5,main]\n**********************************************" }, { "line" : "amLog:06/09/2014 04:08:22:515 PM UTC: Thread[http-80-8,5,main]\nERROR: LogMessageProviderBase.createLogRecord: unable to locate message ID object for ATTEMPT_GET_METAALIAS" } ] }, "openstack_log" : { "title" : "OpenStack log format", "description" : "The log format for the OpenStack log files", "url" : "http://docs.openstack.org/openstack-ops/content/logging_monitoring.html", "regex" : { "std" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{3}) (?\\d+) (?\\w+) (?.+) \\[(?.+)\\] (?.*)" } }, "level-field" : "level", "level" : { "error" : "ERROR", "info" : "INFO", "warning" : "WARNING", "trace" : "TRACE", "debug" : "AUDIT" }, "value" : { "tid" : { "kind" : "string", "identifier" : true }, "pid" : { "kind" : "string", "identifier" : true }, "logger" : { "kind" : "string", "identifier" : true }, "body" : { "kind" : "string", "identifier" : false } }, "sample" : [ { "line": "2014-10-28 10:42:22.772 23623 INFO neutron.wsgi [req-40743023-00ed-441c-9d0a-19b8167ea0ad None] 10.1.255.252 - - [28/Oct/2014 10:42:22] GET /v2.0/floatingips.json?fixed_ip_address=80.0.0.9&port_id=b4291e0e-a941-4663-9379-7af6471e983f HTTP/1.1 200 208 0.008971" } ] }, "page_log" : { "title" : "CUPS Page Log", "description" : "The CUPS server log of printed pages.", "url" : "http://www.cups.org/documentation.php/doc-1.7/ref-page_log.html", "multiline" : false, "regex" : { "pre-1.7" : { "pattern" : "^(?[\\w_\\-\\.]+) (?[\\w\\.\\-]+) (?\\d+) \\[(?[^\\]]+)\\] (?total|\\d+) (?\\d+) (?[^ ]+) (?[\\w\\.:\\-]+)(?.*)$" }, "1.7" : { "pattern" : "^(?[\\w_\\-\\.]+) (?[\\w\\.\\-]+) (?\\d+) \\[(?[^\\]]+)\\] (?total|\\d+) (?\\d+) (?[^ ]+) (?[\\w\\.:\\-]+) (?.+) (?[^ ]+) (?.+)(?.*)$" } }, "value" : { "printer" : { "kind" : "string", "identifier" : true }, "username" : { "kind" : "string", "identifier" : true }, "job_id" : { "kind" : "integer", "identifier" : true, "foreign-key" : true }, "page_number" : { "kind" : "string" }, "num_copies" : { "kind" : "integer" }, "job_billing" : { "kind" : "string", "identifier" : true }, "job_originating_hostname" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true }, "job_name" : { "kind" : "string", "identifier" : true }, "media" : { "kind" : "string", "identifier" : true }, "sides" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "Photosmart_7520_series stack 11 [18/May/2013:13:21:15 -0700] total 0 - localhost 5615311548-159003235-tickets.pdf Letter one-sided" }, { "line" : "tec_IS2027 kurt 401 [22/Apr/2003:10:28:43 +0100] 1 3 #marketing 10.160.50.13" } ] }, "papertrail_log": { "title" : "Papertrail Service", "url" : "https://papertrailapp.com/", "description" : "Log format for the papertrail log management service", "json" : true, "hide-extra" : true, "file-pattern" : "pt:.*", "line-format" : [ { "field" : "display_received_at" }, " ", { "field" : "hostname" }, " ", { "field" : "program" }, ": ", { "field" : "message" } ], "level-field" : "severity", "level" : { "error" : "Error", "debug" : "Debug", "warning" : "Warning", "info" : "Info(?:rmational)?|Notice", "critical" : "Crit(?:ical)?", "fatal" : "Emerg(?:ency)?|Alert" }, "timestamp-field" : "generated_at", "body-field" : "message", "value" : { "display_received_at" : { "kind" : "string" }, "program" : { "kind" : "string", "identifier" : true }, "hostname" : { "kind" : "string", "identifier" : true } } }, "snaplogic_log" : { "title" : "SnapLogic Server Log", "description" : "The SnapLogic server log format.", "url" : "http://www.snaplogic.com/docs/user-guide/user-guide.htm", "regex" : { "std" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?) (?:(?:(?\\w{4,}) (?[^ ]+) (?[^ ]+) (?[^ ]+) (?-|\\d+)(?:\\.(?[^ ]+))? (?[^ ]+) (?[^ ]+))|(?:(?:stdout|stderr): ))(?.*)" } }, "level-field" : "level", "level" : { "error" : "ERROR", "debug" : "DEBUG", "info" : "INFO", "warning" : "WARNING" }, "value" : { "logger" : { "kind" : "string", "identifier" : true }, "facility" : { "kind" : "string", "identifier" : true }, "msgid" : { "kind" : "string", "identifier" : true }, "pipe_rid" : { "kind" : "string", "identifier" : true }, "comp_rid" : { "kind" : "string", "identifier" : true }, "resource_name" : { "kind" : "string", "identifier" : true }, "invoker" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "2013-07-30T09:40:25 DEBUG main_process.main PM - 1768839331504132353247612213662950165988626018 - - Pipeline manager '' sending to Leads. Invoker 'admin': PREPARE {'parent_rid': '1768839331504132353247612213662950165988626018', 'resource_name': u'Leads', 'input_views': {}, 'parameters': {u'DELIMITER': u',', u'INPUTFILE': u'file://tutorial/data/leads.csv'}, 'output_views': {u'Output1': {'method': 'GET'}}, 'context_name': u'', 'snap_control_version': '1.2'}" } ] }, "sssd_log" : { "title" : "SSSD log format", "description" : "Log format used by the System Security Services Daemon", "url" : "http://fedorahosted.org/sssd", "regex" : { "core" : { "pattern" : "^\\((?\\w{3} \\w{3} ( \\d|\\d{2}) \\d{2}:\\d{2}:\\d{2} \\d{4})\\) \\[sssd\\] \\[(?\\w+)\\] \\((?0x[0-9a-fA-F]{4})\\): (?.*)$" }, "module" : { "pattern" : "^\\((?\\w{3} \\w{3} ( \\d|\\d{2}) \\d{2}:\\d{2}:\\d{2} \\d{4})\\) \\[sssd(?\\[.*?\\])\\] \\[(?\\w+)\\] \\((?0x[0-9a-fA-F]{4})\\): (?.*)$" } }, "value" : { "module" : { "kind" : "string" }, "function" : { "kind" : "string" }, "debug_level" : { "kind" : "string" }, "body" : { "kind" : "string" } }, "sample" : [ { "line" : "(Tue Mar 31 06:03:46 2015) [sssd[be[default]]] [sysdb_search_by_name] (0x0400): No such entry" }, { "line" : "(Tue Mar 31 05:58:38 2015) [sssd] [start_service] (0x0100): Queueing service LDAP for startup" } ] }, "strace_log" : { "title" : "Strace", "description" : "The strace output format.", "url" : "http://en.wikipedia.org/wiki/Strace", "multiline" : false, "regex" : { "std" : { "pattern" : "^(?\\d{2}:\\d{2}:\\d{2}\\.\\d{6}) (?\\w+)\\((?.*)\\)\\s+=\\s+(?[-\\w]+)(?: (?\\w+) \\([^\\)]+\\))?(?: <(?\\d+\\.\\d+)>)?$" } }, "level-field" : "errno", "level" : { "error" : ".+" }, "value" : { "syscall" : { "kind" : "string", "identifier" : true }, "args" : { "kind" : "string" }, "rc" : { "kind" : "integer", "foreign-key" : true }, "duration" : { "kind" : "float" }, "errno" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "08:09:33.814936 execve(\"/bin/ls\", [\"ls\"], [/* 38 vars */]) = 0 <0.000264>" }, { "line" : "08:09:33.815943 access(\"/etc/ld.so.nohwcap\", F_OK) = -1 ENOENT (No such file or directory) <0.000019>" } ] }, "sudo_log" : { "title" : "sudo", "description" : "The sudo privilege management tool.", "url" : "", "regex" : { "std" : { "module-format" : true, "pattern" : "^(?\\S+)\\s*: (?:(?[^;]+);)?\\s*TTY=(?[^;]+)\\s+;\\s*PWD=(?[^;]+)\\s+;\\s*USER=(?[^;]+)\\s+;\\s*COMMAND=(?(\\n|.)*)$" } }, "level-field" : "error_msg", "level" : { "error" : ".+" }, "value" : { "login" : { "kind" : "string", "identifier" : true }, "error_msg" : { "kind" : "string" }, "tty" : { "kind" : "string" }, "pwd" : { "kind" : "string" }, "user" : { "kind" : "string", "identifier" : true }, "command" : { "kind" : "string" } }, "sample" : [ { "line" : "stack : 3 incorrect password attempts ; TTY=ttys005 ; PWD=/Users/stack/ClionProjects/lbuild ; USER=root ; COMMAND=/bin/ls" }, { "line" : "stack : TTY=ttys005 ; PWD=/Users/stack/ClionProjects/lbuild ; USER=root ; COMMAND=/bin/ls" } ] }, "syslog_log" : { "title" : "Syslog", "description" : "The system logger format found on most posix systems.", "url" : "http://en.wikipedia.org/wiki/Syslog", "regex" : { "std" : { "pattern" : "^(?\\w{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2})(?: (?[a-zA-Z0-9:][^ ]+[a-zA-Z0-9]))?(?:(?: (?(?:[^\\[:]+|[^:]+))(?:\\[(?\\d+)\\])?:(?(?:.|\\n)*))$|:?(?:(?: ---)? last message repeated \\d+ times?(?: ---)?))" } }, "level-field" : "body", "level" : { "error" : "(?:(?:(?\\d{2}:\\d{2}.\\d{3}): (?:Server-Properties: (?:.*)|channel server|\\w+: (?--->|<---) (?\\w)(?: (?\\w+))?(?: (?\\w+))?(?: (?\\w+))?(?: (?.*))?(?: ))(?.*)$" } }, "value" : { "dir" : { "kind" : "string" }, "type" : { "kind" : "string", "identifier" : true }, "token" : { "kind" : "string", "identifier" : true }, "service" : { "kind" : "string", "identifier" : true }, "name" : { "kind" : "string", "identifier" : true }, "msg" : { "kind" : "json" } }, "sample" : [ { "line" : "TCF 29:47.191: Server-Properties: {\"Name\":\"TCF Protocol Logger\",\"OSName\":\"Linux 3.2.0-60-generic\",\"UserName\":\"xavier\",\"AgentID\":\"1fde3dd1-d4be-4f79-8090-6f8d212f03bf\",\"TransportName\":\"TCP\",\"Proxy\":\"\",\"ValueAdd\":\"1\",\"Port\":\"1534\"}" }, { "line" : "TCF 30:11.475: 0: <--- R 2 [\"P1\"] " }, { "line" : "TCF 30:11.475: 0: ---> C 4 RunControl getChildren \"P1\" " } ] }, "tcsh_history" : { "title" : "TCSH History", "description" : "The tcsh history file format.", "convert-to-local-time" : true, "regex" : { "std" : { "pattern" : "^#(?\\+\\d+)\\n?(?.*)?$" } }, "sample" : [ { "line" : "#+1375138067\necho HELLO=BAR" } ] }, "uwsgi_log" : { "title" : "Uwsgi Log", "description" : "The uwsgi log format.", "multiline" : false, "regex" : { "std" : { "pattern" : "^\\[pid: (?\\d+)\\|app: (?[\\-\\d]+)\\|req: (?[\\-\\d]+)/(?\\d+)\\] (?[^ ]+) \\((?[^\\)]*)\\) \\{(?\\d+) vars in (?\\d+) bytes\\} \\[(?[^\\]]+)\\] (?[A-Z]+) (?[^ \\?]+)(?:\\?(?[^ ]*))? => generated (?\\d+) bytes in (?\\d+) (?\\w+) \\((?[^ ]+) (?\\d+)\\) (?\\d+) headers in (?\\d+) bytes \\((?\\d+) switches on core (?\\d+)\\)(?.*)" } }, "level-field": "sc_status", "level" : { "error" : "^[^123]" }, "opid-field" : "s_pid", "value" : { "s_pid" : { "kind" : "string", "identifier" : true }, "s_app" : { "kind" : "string", "identifier" : true }, "s_req" : { "kind" : "integer", "foreign-key" : true }, "s_worker_reqs" : { "kind" : "integer", "foreign-key" : true }, "c_ip" : { "kind" : "string", "collate" : "ipaddress", "identifier" : true }, "cs_username" : { "kind" : "string", "identifier" : true }, "cs_vars" : { "kind" : "integer" }, "cs_bytes" : { "kind" : "integer" }, "cs_method" : { "kind" : "string", "identifier" : true }, "cs_uri_stem" : { "kind" : "string", "identifier" : true }, "cs_uri_query" : { "kind" : "string" }, "sc_bytes" : { "kind" : "integer" }, "s_runtime" : { "kind" : "float", "unit" : { "field" : "rt_unit", "scaling-factor" : { "/msecs" : 1000.0, "/micros" : 1000000.0 } } }, "cs_version" : { "kind" : "string", "identifier" : true }, "sc_status" : { "kind" : "integer", "foreign-key" : true }, "sc_headers" : { "kind" : "integer" }, "sc_header_bytes" : { "kind" : "integer" }, "s_switches" : { "kind" : "integer" }, "s_core" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "[pid: 24386|app: 0|req: 482950/4125645] 86.221.170.65 () {44 vars in 1322 bytes} [Tue Jan 3 05:01:31 2012] GET /contest/log_presence/shhootter/?_=1325592089910 => generated 192 bytes in 21 msecs (HTTP/1.1 200) 4 headers in 188 bytes (1 switches on core 0)" } ] }, "vdsm_log" : { "title": "Vdsm Logs", "description": "Vdsm log format", "url": "http://www.ovirt.org/develop/developer-guide/vdsm/log-files/", "regex": { "v4.1": { "pattern": "(?s)^(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}(?:\\+\\d{4})?) (?\\w+)\\s+\\((?.+?)\\) \\[(?.+?)\\]\\s+?(?(?:.|[\\r\\n])*?)\\s+?\\((?\\w+?):(?\\d+)\\)(\\n(?Traceback.*?)(?=\\n(?P=timestamp)|$))?" }, "v4": { "pattern": "^(?.+)::(?.+)::(?.+)::(?.+)::(?.+)::(?.+)::\\((?[^\\)]+)\\)(?(?:.|\\n)*)" } }, "level-field": "level", "level": { "error": "ERROR", "debug": "DEBUG", "info": "INFO", "warning": "WARNING|WARN", "critical": "CRIT", "trace": "TRACE" }, "value": { "tid": { "kind": "string", "identifier": true }, "module": { "kind": "string", "identifier": true }, "src_line": { "kind": "integer", "foreign-key": true }, "logger": { "kind": "string", "identifier": true }, "func": { "kind": "string", "identifier": true }, "thread": { "kind": "string", "identifier": true }, "src_file": { "kind": "string", "identifier": true }, "traceback": { "kind": "string", "identifier": true } }, "sample": [ { "line": "Thread-1950::INFO::2011-12-07 12:14:15,018::dispatcher::94::Storage.Dispatcher.Protect::(run) Run and protect: getDeviceList, args: ( storageType=2)", "line": "2017-03-06 14:49:05,167+0200 INFO (vm/9e5dd42e) [virt.vm] (vmId='9e5dd42e-5177-4da3-a6ce-87fa2052d315') (vm:2104)" } ] }, "vmk_log" : { "title": "VMKernel Logs", "description": "The VMKernel's log format", "url": "", "regex": { "std": { "pattern": "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z) cpu(?\\d+):(?\\d+)\\)((?:(?WARNING|ALERT)|(?[^:]+)): )?(?.*)" } }, "level-field": "level", "level": { "error": "ALERT", "warning": "WARNING" }, "value": { "cpu": { "kind": "integer", "identifier": true, "foreign-key" : true }, "world_id": { "kind": "integer", "identifier": true, "foreign-key" : true }, "subsystem": { "kind": "string", "identifier": true } }, "sample": [ { "line": "2014-11-14T19:19:51.559Z cpu7:35233)VC: 2002: Device rescan time 704 msec (total number of devices 91)" }, { "line": "2015-04-01T22:22:35.038Z cpu22:44012977)ALERT: This is what an alert looks like." } ] }, "vmw_log" : { "title" : "VMware Logs", "description" : "One of the log formats used in VMware's ESXi and vCenter software.", "url" : "http://kb.vmware.com/kb/2004201", "regex" : { "6.0+" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}(?:Z|[-+]\\d{2}:\\d{2})) (?:Section for VMware VirtualCenter,.*|(?\\w+) (?\\w+)\\[(?\\w+)\\] \\[(?[^ \\]]+)\\s*(?: sub=(?[^ \\]]+))?(?: opID=(?[^ \\]]+))?(?: user=(?[\\w\\-]+))?\\](?.*)(?:\\n(?:.|\\n)*)?)$" }, "5.0+" : { "pattern" : "^(?\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}(?:Z|[-+]\\d{2}:\\d{2})) \\[(?\\w+) (?\\w+) '(?[^']+)'(?: opID=(?[^ \\]]+))?(?: user=(?[\\w\\-]+))?\\](?.*)(?:\\n(?:.|\\n)*)?$" }, "pre-5.0" : { "pattern" : "^\\[(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}) (?\\w+) (?\\w+) '(?[^']+)'(?: opID=(?[^ \\]]+))?(?: user=(?[\\w\\-]+))?\\](?.*)(?:\\n(?:.|\\n)*)?$" }, "ls-log" : { "pattern" : "^\\[(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}) (?[\\w\\-]+)\\s+(?\\w+)\\s+(?[^\\]]+)\\]\\s+(?(?:.|\\n)*)" } }, "level-field": "level", "level" : { "error" : "(error|ERROR|panic|PANIC)", "warning" : "(warning|WARNING|warn|WARN)", "trace" : "verbose" }, "opid-field" : "opid", "value" : { "prc" : { "kind" : "string", "identifier" : true }, "tid" : { "kind" : "string", "identifier" : true }, "src" : { "kind" : "string", "identifier" : true }, "comp" : { "kind" : "string", "identifier" : true }, "sub" : { "kind" : "string", "identifier" : true }, "opid" : { "kind" : "string", "identifier" : true }, "user" : { "kind" : "string", "identifier" : true } }, "sample" : [ { "line" : "[2011-04-01 15:14:34.203 F5A5AB90 info 'vm:/vmfs/volumes/4d6579ec-23f981cb-465c-00237da0cfee/Vmotion-test/Vmotion-test.vmx' opID=F6FC49D5-000007E6-d] VMotionPrepare: dstMgmtIp=10.21.49.138" }, { "line" : "2014-11-04T15:53:31.075+05:30 verbose vpxd[05160] [Originator@6876 sub=PropertyProvider opID=ProcessAlarmFiring-427c3c55] RecordOp ASSIGN: declaredAlarmState[\"alarm-1.host-23\"], host-23. Applied change to temp map." }, { "line" : "2014-01-17T04:55:50.347Z [7F03ECE76700 verbose 'Default' opID=2140bc71] [VpxVmomi] Invoke done: vmodl.query.PropertyCollector.waitForUpdatesEx session: c580b3ef-0011-88a5-b2af-7ca7e74114c8" }, { "line" : "2014-11-04T12:46:42.990+05:30 Section for VMware VirtualCenter, pid=6432, version=6.0.0, build=2255588, option=BETA" }, { "line" : "[2013-01-16 02:26:25,500 pool-3-thread-1 INFO com.vmware.vim.license.service.impl.ServiceImpl] License Accounting Service initialized" } ] }, "xmlrpc_log" : { "title" : "RHN server XMLRPC log format", "description" : "Generated by Satellite's XMLRPC component", "url" : "https://access.redhat.com/products/red-hat-satellite", "regex" : { "main" : { "pattern" : "^(?\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2} [+-]?\\d{2}:\\d{2}) (?\\d+) (?\\S+): (?\\w+)/(?.*)(?\\(.*?\\))?(?.*)$" } }, "value" : { "pid" : { "kind" : "integer", "identifier" : true }, "client_ip" : { "kind" : "string", "identifier" : true }, "module" : { "kind" : "string" }, "function" : { "kind" : "string" } }, "sample" : [ { "line" : "2015/05/24 07:48:21 -05:00 767 10.206.22.17: xmlrpc/up2date.listChannels(1000011979,)" }, { "line" : "2015/05/24 07:48:22 -05:00 1377 10.184.37.105: xmlrpc/registration.welcome_message('lang: None',)" }, { "line" : "2015/05/24 07:48:22 -05:00 759 10.49.10.30: xmlrpc/registration.register_osad" }, { "line" : "2015/05/24 07:48:22 -05:00 759 10.49.10.30: rhnServer/server_certificate.valid('Server id ID-1000019942 not found in database',)" } ] } } lnav-0.8.2/src/dhclient-summary.lnav000664 000765 000024 00000001611 12670277160 017700 0ustar00stackstaff000000 000000 # # @synopsis: dhclient-summary # @description: Generate a summary of DHCP addresses bound in this log # :echo DHCP leases over time: :echo ;SELECT ip AS IP, start_time AS "Start Time", printf("% 24s", CASE WHEN end_time IS NULL THEN printf("%s%s%s", $ansi_green, 'Active', $ansi_norm) ELSE printf("%s%.02f%s hours", $ansi_bold, (julianday(end_time) - julianday(start_time)) * 24, $ansi_norm) END) AS Duration FROM (WITH lease_times AS (SELECT min(log_time) AS start_time, ip FROM (SELECT log_time, regexp_match('bound to (\S+) --', log_text) AS ip FROM syslog_log WHERE ip IS NOT NULL) GROUP BY ip ORDER BY start_time ASC) SELECT start_time, (SELECT lt2.start_time AS end_time FROM lease_times AS lt2 WHERE lt1.start_time < lt2.start_time LIMIT 1) AS end_time, ip FROM lease_times AS lt1) :write-cols-to - lnav-0.8.2/src/doc_status_source.hh000664 000765 000024 00000004663 13070203404 017575 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _doc_status_source_hh #define _doc_status_source_hh #include #include "lnav_config.hh" #include "statusview_curses.hh" class doc_status_source : public status_data_source { public: typedef enum { TSF_TITLE, TSF_STITCH_TITLE, TSF__MAX } field_t; doc_status_source() { this->tss_fields[TSF_TITLE].set_width(14); this->tss_fields[TSF_TITLE].set_role(view_colors::VCR_VIEW_STATUS); this->tss_fields[TSF_TITLE].set_value(" Command Help "); this->tss_fields[TSF_STITCH_TITLE].set_width(2); this->tss_fields[TSF_STITCH_TITLE].set_stitch_value( view_colors::ansi_color_pair_index(COLOR_BLUE, COLOR_WHITE)); }; size_t statusview_fields(void) { return TSF__MAX; }; status_field &statusview_value_for_field(int field) { return this->tss_fields[field]; }; private: status_field tss_fields[TSF__MAX]; }; #endif lnav-0.8.2/src/dump-pid.sh000775 000765 000024 00000000422 12477462531 015611 0ustar00stackstaff000000 000000 #!/bin/sh IN_PID=`cat` if test "${IN_PID}" -gt 0 > /dev/null 2>&1 && \ kill -0 $IN_PID > /dev/null 2>&1; then echo "== ps ==" ps uewww -p $IN_PID echo "== lsof ==" lsof -p $IN_PID else echo "error: inaccessible process -- $IN_PID" > /dev/stderr fi lnav-0.8.2/src/elem_to_json.cc000644 000765 000024 00000015054 12710576123 016515 0ustar00stackstaff000000 000000 /** * Copyright (c) 2016, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include "elem_to_json.hh" using namespace std; static void element_to_json(yajl_gen gen, data_parser &dp, const data_parser::element &elem) { size_t value_len; const char *value_str = dp.get_element_string(elem, value_len); switch (elem.value_token()) { case DT_NUMBER: { yajl_gen_number(gen, value_str, value_len); break; } case DNT_GROUP: { elements_to_json(gen, dp, elem.get_value_elem().e_sub_elements, false); break; } case DNT_PAIR: { const data_parser::element &pair_elem = elem.get_pair_elem(); string key_str = dp.get_element_string(pair_elem.e_sub_elements->front()); if (!key_str.empty()) { yajlpp_map singleton_map(gen); singleton_map.gen(key_str); element_to_json(gen, dp, pair_elem.get_pair_value()); } else { element_to_json(gen, dp, pair_elem.get_pair_value()); } break; } case DT_CONSTANT: { if (strncasecmp("true", value_str, value_len) == 0) { yajl_gen_bool(gen, true); } else if (strncasecmp("false", value_str, value_len) == 0) { yajl_gen_bool(gen, false); } else { yajl_gen_null(gen); } break; } default: yajl_gen_pstring(gen, value_str, value_len); break; } } static void map_elements_to_json2(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el) { yajlpp_map root_map(gen); int col = 0; for (data_parser::element_list_t::iterator iter = el->begin(); iter != el->end(); ++iter) { const data_parser::element &pvalue = iter->get_pair_value(); if (pvalue.value_token() == DT_INVALID) { log_debug("invalid!!"); // continue; } std::string key_str = dp.get_element_string( iter->e_sub_elements->front()); if (key_str.empty()) { char buffer[32]; snprintf(buffer, sizeof(buffer), "col_%d", col); key_str = buffer; col += 1; } root_map.gen(key_str); element_to_json(gen, dp, pvalue); } } static void list_body_elements_to_json(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el) { for (data_parser::element_list_t::iterator iter = el->begin(); iter != el->end(); ++iter) { element_to_json(gen, dp, *iter); } } static void list_elements_to_json(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el) { yajlpp_array root_array(gen); list_body_elements_to_json(gen, dp, el); } static void map_elements_to_json(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el) { bool unique_names = el->size() > 1; vector names; for (data_parser::element_list_t::iterator iter = el->begin(); iter != el->end(); ++iter) { const data_parser::element &pvalue = iter->get_pair_value(); if (pvalue.value_token() == DT_INVALID) { log_debug("invalid!!"); // continue; } std::string key_str = dp.get_element_string( iter->e_sub_elements->front()); if (key_str.empty()) { continue; } if (find(names.begin(), names.end(), key_str) != names.end()) { unique_names = false; break; } else { names.push_back(key_str); } } names.clear(); if (unique_names) { map_elements_to_json2(gen, dp, el); } else { list_elements_to_json(gen, dp, el); } } void elements_to_json(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el, bool root) { if (el->empty()) { yajl_gen_null(gen); } else { switch (el->front().e_token) { case DNT_PAIR: { if (root && el->size() == 1) { const data_parser::element &pair_elem = el->front().get_pair_elem(); std::string key_str = dp.get_element_string( pair_elem.e_sub_elements->front()); if (key_str.empty() && el->front().get_pair_value().value_token() == DNT_GROUP) { element_to_json(gen, dp, el->front().get_pair_value()); } else { yajlpp_map singleton_map(gen); if (key_str.empty()) { key_str = "col_0"; } singleton_map.gen(key_str); element_to_json(gen, dp, pair_elem.get_pair_value()); } } else { map_elements_to_json(gen, dp, el); } break; } default: list_elements_to_json(gen, dp, el); break; } } } lnav-0.8.2/src/elem_to_json.hh000644 000765 000024 00000003343 12710573243 016525 0ustar00stackstaff000000 000000 /** * Copyright (c) 2016, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __elem_to_json_hh #define __elem_to_json_hh #include "yajl/api/yajl_gen.h" #include "data_parser.hh" void elements_to_json(yajl_gen gen, data_parser &dp, data_parser::element_list_t *el, bool root = true); #endif lnav-0.8.2/src/environ_vtab.cc000664 000765 000024 00000021335 12505672464 016544 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include #include "auto_mem.hh" #include "lnav_log.hh" #include "sql_util.hh" #include "environ_vtab.hh" using namespace std; extern char **environ; const char *ENVIRON_CREATE_STMT = "\ -- Access lnav's environment variables through this table.\n\ CREATE TABLE environ (\n\ name text PRIMARY KEY,\n\ value text\n\ );\n\ "; struct vtab { sqlite3_vtab base; sqlite3 * db; }; struct vtab_cursor { sqlite3_vtab_cursor base; char **env_cursor; }; static int vt_destructor(sqlite3_vtab *p_svt); static int vt_create(sqlite3 *db, void *pAux, int argc, const char *const *argv, sqlite3_vtab **pp_vt, char **pzErr) { vtab *p_vt; /* Allocate the sqlite3_vtab/vtab structure itself */ p_vt = (vtab *)sqlite3_malloc(sizeof(*p_vt)); if (p_vt == NULL) { return SQLITE_NOMEM; } memset(&p_vt->base, 0, sizeof(sqlite3_vtab)); p_vt->db = db; *pp_vt = &p_vt->base; int rc = sqlite3_declare_vtab(db, ENVIRON_CREATE_STMT); return rc; } static int vt_destructor(sqlite3_vtab *p_svt) { vtab *p_vt = (vtab *)p_svt; /* Free the SQLite structure */ sqlite3_free(p_vt); return SQLITE_OK; } static int vt_connect(sqlite3 *db, void *p_aux, int argc, const char *const *argv, sqlite3_vtab **pp_vt, char **pzErr) { return vt_create(db, p_aux, argc, argv, pp_vt, pzErr); } static int vt_disconnect(sqlite3_vtab *pVtab) { return vt_destructor(pVtab); } static int vt_destroy(sqlite3_vtab *p_vt) { return vt_destructor(p_vt); } static int vt_next(sqlite3_vtab_cursor *cur); static int vt_open(sqlite3_vtab *p_svt, sqlite3_vtab_cursor **pp_cursor) { vtab *p_vt = (vtab *)p_svt; p_vt->base.zErrMsg = NULL; vtab_cursor *p_cur = (vtab_cursor *)new vtab_cursor(); if (p_cur == NULL) { return SQLITE_NOMEM; } else { *pp_cursor = (sqlite3_vtab_cursor *)p_cur; p_cur->base.pVtab = p_svt; p_cur->env_cursor = environ; vt_next((sqlite3_vtab_cursor *)p_cur); } return SQLITE_OK; } static int vt_close(sqlite3_vtab_cursor *cur) { vtab_cursor *p_cur = (vtab_cursor *)cur; /* Free cursor struct. */ delete p_cur; return SQLITE_OK; } static int vt_eof(sqlite3_vtab_cursor *cur) { vtab_cursor *vc = (vtab_cursor *)cur; return vc->env_cursor[0] == NULL; } static int vt_next(sqlite3_vtab_cursor *cur) { vtab_cursor *vc = (vtab_cursor *)cur; if (vc->env_cursor[0] != NULL) { vc->env_cursor += 1; } return SQLITE_OK; } static int vt_column(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int col) { vtab_cursor *vc = (vtab_cursor *)cur; const char *eq = strchr(vc->env_cursor[0], '='); switch (col) { case 0: sqlite3_result_text(ctx, vc->env_cursor[0], eq - vc->env_cursor[0], SQLITE_TRANSIENT); break; case 1: sqlite3_result_text(ctx, eq + 1, -1, SQLITE_TRANSIENT); break; } return SQLITE_OK; } static int vt_rowid(sqlite3_vtab_cursor *cur, sqlite_int64 *p_rowid) { vtab_cursor *p_cur = (vtab_cursor *)cur; *p_rowid = (int64_t)p_cur->env_cursor[0]; return SQLITE_OK; } static int vt_best_index(sqlite3_vtab *tab, sqlite3_index_info *p_info) { return SQLITE_OK; } static int vt_filter(sqlite3_vtab_cursor *p_vtc, int idxNum, const char *idxStr, int argc, sqlite3_value **argv) { return SQLITE_OK; } static int vt_update(sqlite3_vtab *tab, int argc, sqlite3_value **argv, sqlite_int64 *rowid) { const char *name = ( argc > 2 ? (const char *)sqlite3_value_text(argv[2]) : NULL); vtab *p_vt = (vtab *)tab; int retval = SQLITE_ERROR; if (argc != 1 && (argc < 3 || sqlite3_value_type(argv[2]) == SQLITE_NULL || sqlite3_value_type(argv[3]) == SQLITE_NULL || sqlite3_value_text(argv[2])[0] == '\0')) { tab->zErrMsg = sqlite3_mprintf( "A non-empty name and value must be provided when inserting an " "environment variable"); return SQLITE_ERROR; } if (name != NULL && strchr(name, '=') != NULL) { tab->zErrMsg = sqlite3_mprintf( "Environment variable names cannot contain an equals sign (=)"); return SQLITE_ERROR; } if (sqlite3_value_type(argv[0]) != SQLITE_NULL) { int64_t index = sqlite3_value_int64(argv[0]); const char *var = (const char *)index; const char *eq = strchr(var, '='); size_t namelen = eq - var; char name[namelen + 1]; memcpy(name, var, namelen); name[namelen] = '\0'; unsetenv(name); retval = SQLITE_OK; } else if (name != NULL && getenv(name) != NULL) { #ifdef SQLITE_FAIL int rc; rc = sqlite3_vtab_on_conflict(p_vt->db); switch (rc) { case SQLITE_FAIL: case SQLITE_ABORT: tab->zErrMsg = sqlite3_mprintf( "An environment variable with the name '%s' already exists", name); return rc; case SQLITE_IGNORE: return SQLITE_OK; case SQLITE_REPLACE: break; default: return rc; } #endif } if (name != NULL && argc == 4) { const unsigned char *value = sqlite3_value_text(argv[3]); setenv((const char *)name, (const char *)value, 1); return SQLITE_OK; } return retval; } static sqlite3_module vtab_module = { 0, /* iVersion */ vt_create, /* xCreate - create a vtable */ vt_connect, /* xConnect - associate a vtable with a connection */ vt_best_index, /* xBestIndex - best index */ vt_disconnect, /* xDisconnect - disassociate a vtable with a connection */ vt_destroy, /* xDestroy - destroy a vtable */ vt_open, /* xOpen - open a cursor */ vt_close, /* xClose - close a cursor */ vt_filter, /* xFilter - configure scan constraints */ vt_next, /* xNext - advance a cursor */ vt_eof, /* xEof - inidicate end of result set*/ vt_column, /* xColumn - read data */ vt_rowid, /* xRowid - read data */ vt_update, /* xUpdate - write data */ NULL, /* xBegin - begin transaction */ NULL, /* xSync - sync transaction */ NULL, /* xCommit - commit transaction */ NULL, /* xRollback - rollback transaction */ NULL, /* xFindFunction - function overloading */ }; int register_environ_vtab(sqlite3 *db) { auto_mem errmsg; int rc; rc = sqlite3_create_module(db, "environ_vtab_impl", &vtab_module, NULL); assert(rc == SQLITE_OK); if ((rc = sqlite3_exec(db, "CREATE VIRTUAL TABLE environ USING environ_vtab_impl()", NULL, NULL, errmsg.out())) != SQLITE_OK) { fprintf(stderr, "wtf %s\n", errmsg.in()); } return rc; } lnav-0.8.2/src/environ_vtab.hh000664 000765 000024 00000003247 12477462531 016560 0ustar00stackstaff000000 000000 /** * Copyright (c) 2014, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __environ_vtab_hh #define __environ_vtab_hh #include int register_environ_vtab(sqlite3 *db); extern const char *ENVIRON_CREATE_STMT; #endif lnav-0.8.2/src/extension-functions.cc000664 000765 000024 00000143152 13067344023 020063 0ustar00stackstaff000000 000000 /* This library will provide common mathematical and string functions in SQL queries using the operating system libraries or provided definitions. It includes the following functions: Math: acos, asin, atan, atn2, atan2, acosh, asinh, atanh, difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp, log, log10, power, sign, sqrt, square, ceil, floor, pi. String: replicate, charindex, leftstr, rightstr, ltrim, rtrim, trim, replace, reverse, proper, padl, padr, padc, strfilter. Aggregate: stdev, variance, mode, median, lower_quartile, upper_quartile. The string functions ltrim, rtrim, trim, replace are included in recent versions of SQLite and so by default do not build. Compilation instructions: Compile this C source file into a dynamic library as follows: * Linux: gcc -fPIC -lm -shared extension-functions.c -o libsqlitefunctions.so * Mac OS X: gcc -fno-common -dynamiclib extension-functions.c -o libsqlitefunctions.dylib (You may need to add flags -I /opt/local/include/ -L/opt/local/lib -lsqlite3 if your sqlite3 is installed from Mac ports, or -I /sw/include/ -L/sw/lib -lsqlite3 if installed with Fink.) * Windows: 1. Install MinGW (http://www.mingw.org/) and you will get the gcc (gnu compiler collection) 2. add the path to your path variable (isn't done during the installation!) 3. compile: gcc -shared -I "path" -o libsqlitefunctions.so extension-functions.c (path = path of sqlite3ext.h; i.e. C:\programs\sqlite) Usage instructions for applications calling the sqlite3 API functions: In your application, call sqlite3_enable_load_extension(db,1) to allow loading external libraries. Then load the library libsqlitefunctions using sqlite3_load_extension; the third argument should be 0. See http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions. Select statements may now use these functions, as in SELECT cos(radians(inclination)) FROM satsum WHERE satnum = 25544; Usage instructions for the sqlite3 program: If the program is built so that loading extensions is permitted, the following will work: sqlite> SELECT load_extension('./libsqlitefunctions.so'); sqlite> select cos(radians(45)); 0.707106781186548 Note: Loading extensions is by default prohibited as a security measure; see "Security Considerations" in http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions. If the sqlite3 program and library are built this way, you cannot use these functions from the program, you must write your own program using the sqlite3 API, and call sqlite3_enable_load_extension as described above, or else rebuilt the sqlite3 program to allow loadable extensions. Alterations: The instructions are for Linux, Mac OS X, and Windows; users of other OSes may need to modify this procedure. In particular, if your math library lacks one or more of the needed trig or log functions, comment out the appropriate HAVE_ #define at the top of file. If you do not wish to make a loadable module, comment out the define for COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE. If you are using a version of SQLite without the trim functions and replace, comment out the HAVE_TRIM #define. Liam Healy History: 2010-01-06 Correct check for argc in squareFunc, and add Windows compilation instructions. 2009-06-24 Correct check for argc in properFunc. 2008-09-14 Add check that memory was actually allocated after sqlite3_malloc or sqlite3StrDup, call sqlite3_result_error_nomem if not. Thanks to Robert Simpson. 2008-06-13 Change to instructions to indicate use of the math library and that program might work. 2007-10-01 Minor clarification to instructions. 2007-09-29 Compilation as loadable module is optional with COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE. 2007-09-28 Use sqlite3_extension_init and macros SQLITE_EXTENSION_INIT1, SQLITE_EXTENSION_INIT2, so that it works with sqlite3_load_extension. Thanks to Eric Higashino and Joe Wilson. New instructions for Mac compilation. 2007-09-17 With help from Joe Wilson and Nuno Luca, made use of external interfaces so that compilation is no longer dependent on SQLite source code. Merged source, header, and README into a single file. Added casts so that Mac will compile without warnings (unsigned and signed char). 2007-09-05 Included some definitions from sqlite 3.3.13 so that this will continue to work in newer versions of sqlite. Completed description of functions available. 2007-03-27 Revised description. 2007-03-23 Small cleanup and a bug fix on the code. This was mainly letting errno flag errors encountered in the math library and checking the result, rather than pre-checking. This fixes a bug in power that would cause an error if any non-positive number was raised to any power. 2007-02-07 posted by Mikey C to sqlite mailing list. Original code 2006 June 05 by relicoder. */ //#include "config.h" // #define COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE 1 #define HAVE_ACOSH 1 #define HAVE_ASINH 1 #define HAVE_ATANH 1 #define HAVE_SINH 1 #define HAVE_COSH 1 #define HAVE_TANH 1 #define HAVE_LOG10 1 #define HAVE_ISBLANK 1 #define SQLITE_SOUNDEX 1 #define HAVE_TRIM 1 /* LMH 2007-03-25 if sqlite has trim functions */ #define __STDC_FORMAT_MACROS #ifdef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE #include "sqlite3ext.h" SQLITE_EXTENSION_INIT1 #else #include "sqlite3.h" #endif #include /* relicoder */ #include #include #include #include /* LMH 2007-03-25 */ #include #include #ifndef _MAP_H_ #define _MAP_H_ #include #include #include "sqlite-extension-func.hh" /* ** Simple binary tree implementation to use in median, mode and quartile calculations ** Tree is not necessarily balanced. That would require something like red&black trees of AVL */ typedef int(*cmp_func)(const void *, const void *); typedef void(*map_iterator)(void*, int64_t, void*); typedef struct node{ struct node *l; struct node *r; void* data; int64_t count; } node; typedef struct map{ node *base; cmp_func cmp; short free; } map; /* ** creates a map given a comparison function */ map map_make(cmp_func cmp); /* ** inserts the element e into map m */ void map_insert(map *m, void *e); /* ** executes function iter over all elements in the map, in key increasing order */ void map_iterate(map *m, map_iterator iter, void* p); /* ** frees all memory used by a map */ void map_destroy(map *m); /* ** compares 2 integers ** to use with map_make */ int int_cmp(const void *a, const void *b); /* ** compares 2 doubles ** to use with map_make */ int double_cmp(const void *a, const void *b); #endif /* _MAP_H_ */ typedef uint8_t u8; typedef uint16_t u16; typedef int64_t i64; static char *sqlite3StrDup( const char *z ) { char *res = (char *) sqlite3_malloc(strlen(z) + 1 ); return strcpy( res, z ); } /* ** These are copied verbatim from fun.c so as to not have the names exported */ /* LMH from sqlite3 3.3.13 */ /* ** This table maps from the first byte of a UTF-8 character to the number ** of trailing bytes expected. A value '4' indicates that the table key ** is not a legal first byte for a UTF-8 character. */ static const u8 xtra_utf8_bytes[256] = { /* 0xxxxxxx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10wwwwww */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 110yyyyy */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 1110zzzz */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 11110yyy */ 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, }; /* ** This table maps from the number of trailing bytes in a UTF-8 character ** to an integer constant that is effectively calculated for each character ** read by a naive implementation of a UTF-8 character reader. The code ** in the READ_UTF8 macro explains things best. */ static const int xtra_utf8_bits[] = { 0, 12416, /* (0xC0 << 6) + (0x80) */ 925824, /* (0xE0 << 12) + (0x80 << 6) + (0x80) */ 63447168 /* (0xF0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80 */ }; /* ** If a UTF-8 character contains N bytes extra bytes (N bytes follow ** the initial byte so that the total character length is N+1) then ** masking the character with utf8_mask[N] must produce a non-zero ** result. Otherwise, we have an (illegal) overlong encoding. */ static const long utf_mask[] = { 0x00000000, 0xffffff80, 0xfffff800, 0xffff0000, }; /* LMH salvaged from sqlite3 3.3.13 source code src/utf.c */ #define READ_UTF8(zIn, c) { \ int xtra; \ c = *(zIn)++; \ xtra = xtra_utf8_bytes[c]; \ switch( xtra ){ \ case 4: c = (int)0xFFFD; break; \ case 3: c = (c<<6) + *(zIn)++; \ case 2: c = (c<<6) + *(zIn)++; \ case 1: c = (c<<6) + *(zIn)++; \ c -= xtra_utf8_bits[xtra]; \ if( (utf_mask[xtra]&c)==0 \ || (c&0xFFFFF800)==0xD800 \ || (c&0xFFFFFFFE)==0xFFFE ){ c = 0xFFFD; } \ } \ } static int sqlite3ReadUtf8(const unsigned char *z){ int c; READ_UTF8(z, c); return c; } #define SKIP_UTF8(zIn) { \ zIn += (xtra_utf8_bytes[*(u8 *)zIn] + 1); \ } /* ** pZ is a UTF-8 encoded unicode string. If nByte is less than zero, ** return the number of unicode characters in pZ up to (but not including) ** the first 0x00 byte. If nByte is not less than zero, return the ** number of unicode characters in the first nByte of pZ (or up to ** the first 0x00, whichever comes first). */ static int sqlite3Utf8CharLen(const char *z, int nByte){ int r = 0; const char *zTerm; if( nByte>=0 ){ zTerm = &z[nByte]; }else{ zTerm = (const char *)(-1); } assert( z<=zTerm ); while( *z!=0 && z 0) ? 1: ( iVal < 0 ) ? -1: 0; sqlite3_result_int64(context, iVal); break; } case SQLITE_NULL: { sqlite3_result_null(context); break; } default: { /* 2nd change below. Line for abs was: if( rVal<0 ) rVal = rVal * -1.0; */ rVal = sqlite3_value_double(argv[0]); rVal = ( rVal > 0) ? 1: ( rVal < 0 ) ? -1: 0; sqlite3_result_double(context, rVal); break; } } } /* ** smallest integer value not less than argument */ static void ceilFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ double rVal=0.0; assert( argc==1 ); switch( sqlite3_value_type(argv[0]) ){ case SQLITE_INTEGER: { i64 iVal = sqlite3_value_int64(argv[0]); sqlite3_result_int64(context, iVal); break; } case SQLITE_NULL: { sqlite3_result_null(context); break; } default: { rVal = sqlite3_value_double(argv[0]); sqlite3_result_int64(context, (i64) ceil(rVal)); break; } } } /* ** largest integer value not greater than argument */ static void floorFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ double rVal=0.0; assert( argc==1 ); switch( sqlite3_value_type(argv[0]) ){ case SQLITE_INTEGER: { i64 iVal = sqlite3_value_int64(argv[0]); sqlite3_result_int64(context, iVal); break; } case SQLITE_NULL: { sqlite3_result_null(context); break; } default: { rVal = sqlite3_value_double(argv[0]); sqlite3_result_int64(context, (i64) floor(rVal)); break; } } } /* ** Given a string (s) in the first argument and an integer (n) in the second returns the ** string that constains s contatenated n times */ static void replicateFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ unsigned char *z; /* input string */ unsigned char *zo; /* result string */ i64 iCount; /* times to repeat */ i64 nLen; /* length of the input string (no multibyte considerations) */ i64 nTLen; /* length of the result string (no multibyte considerations) */ i64 i=0; if( argc!=2 || SQLITE_NULL==sqlite3_value_type(argv[0]) ) return; iCount = sqlite3_value_int64(argv[1]); if( iCount<0 ){ sqlite3_result_error(context, "domain error", -1); }else{ nLen = sqlite3_value_bytes(argv[0]); nTLen = nLen*iCount; z= (unsigned char *) sqlite3_malloc(nTLen + 1); zo= (unsigned char *) sqlite3_malloc(nLen + 1); if (!z || !zo){ sqlite3_result_error_nomem(context); if (z) sqlite3_free(z); if (zo) sqlite3_free(zo); return; } strcpy((char*)zo, (char*)sqlite3_value_text(argv[0])); for(i=0; i=n it's a NOP ** padl(NULL) = NULL */ static void padlFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ i64 ilen; /* length to pad to */ i64 zl; /* length of the input string (UTF-8 chars) */ int i = 0; const char *zi; /* input string */ char *zo; /* output string */ char *zt; assert( argc==2 ); if( sqlite3_value_type(argv[0]) == SQLITE_NULL ){ sqlite3_result_null(context); }else{ zi = (char *)sqlite3_value_text(argv[0]); ilen = sqlite3_value_int64(argv[1]); /* check domain */ if(ilen<0){ sqlite3_result_error(context, "domain error", -1); return; } zl = sqlite3Utf8CharLen(zi, -1); if( zl>=ilen ){ /* string is longer than the requested pad length, return the same string (dup it) */ zo = sqlite3StrDup(zi); if (!zo){ sqlite3_result_error_nomem(context); return; } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); }else{ zo = (char *) sqlite3_malloc(strlen(zi) + ilen - zl + 1); if (!zo){ sqlite3_result_error_nomem(context); return; } zt = zo; for(i=1; i+zl<=ilen; ++i){ *(zt++)=' '; } /* no need to take UTF-8 into consideration here */ strcpy(zt,zi); } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); sqlite3_free(zo); } } /* ** given an input string (s) and an integer (n) appends spaces at the end of s ** until it has a length of n characters. ** When s has a length >=n it's a NOP ** padl(NULL) = NULL */ static void padrFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ i64 ilen; /* length to pad to */ i64 zl; /* length of the input string (UTF-8 chars) */ i64 zll; /* length of the input string (bytes) */ int i = 0; const char *zi; /* input string */ char *zo; /* output string */ char *zt; assert( argc==2 ); if( sqlite3_value_type(argv[0]) == SQLITE_NULL ){ sqlite3_result_null(context); }else{ zi = (char *)sqlite3_value_text(argv[0]); ilen = sqlite3_value_int64(argv[1]); /* check domain */ if(ilen<0){ sqlite3_result_error(context, "domain error", -1); return; } zl = sqlite3Utf8CharLen(zi, -1); if( zl>=ilen ){ /* string is longer than the requested pad length, return the same string (dup it) */ zo = sqlite3StrDup(zi); if (!zo){ sqlite3_result_error_nomem(context); return; } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); }else{ zll = strlen(zi); zo = (char *) sqlite3_malloc(zll + ilen - zl + 1); if (!zo){ sqlite3_result_error_nomem(context); return; } zt = strcpy(zo,zi)+zll; for(i=1; i+zl<=ilen; ++i){ *(zt++) = ' '; } *zt = '\0'; } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); sqlite3_free(zo); } } /* ** given an input string (s) and an integer (n) appends spaces at the end of s ** and adds spaces at the begining of s until it has a length of n characters. ** Tries to add has many characters at the left as at the right. ** When s has a length >=n it's a NOP ** padl(NULL) = NULL */ static void padcFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ i64 ilen; /* length to pad to */ i64 zl; /* length of the input string (UTF-8 chars) */ i64 zll; /* length of the input string (bytes) */ int i = 0; const char *zi; /* input string */ char *zo; /* output string */ char *zt; assert( argc==2 ); if( sqlite3_value_type(argv[0]) == SQLITE_NULL ){ sqlite3_result_null(context); }else{ zi = (char *)sqlite3_value_text(argv[0]); ilen = sqlite3_value_int64(argv[1]); /* check domain */ if(ilen<0){ sqlite3_result_error(context, "domain error", -1); return; } zl = sqlite3Utf8CharLen(zi, -1); if( zl>=ilen ){ /* string is longer than the requested pad length, return the same string (dup it) */ zo = sqlite3StrDup(zi); if (!zo){ sqlite3_result_error_nomem(context); return; } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); }else{ zll = strlen(zi); zo = (char *) sqlite3_malloc(zll + ilen - zl + 1); if (!zo){ sqlite3_result_error_nomem(context); return; } zt = zo; for(i=1; 2*i+zl<=ilen; ++i){ *(zt++) = ' '; } strcpy(zt, zi); zt+=zll; for(; i+zl<=ilen; ++i){ *(zt++) = ' '; } *zt = '\0'; } sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); sqlite3_free(zo); } } /* ** given 2 string (s1,s2) returns the string s1 with the characters NOT in s2 removed ** assumes strings are UTF-8 encoded */ static void strfilterFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *zi1; /* first parameter string (searched string) */ const char *zi2; /* second parameter string (vcontains valid characters) */ const char *z1; const char *z21; const char *z22; char *zo; /* output string */ char *zot; int c1 = 0; int c2 = 0; assert( argc==2 ); if( sqlite3_value_type(argv[0]) == SQLITE_NULL || sqlite3_value_type(argv[1]) == SQLITE_NULL ){ sqlite3_result_null(context); }else{ zi1 = (char *)sqlite3_value_text(argv[0]); zi2 = (char *)sqlite3_value_text(argv[1]); /* ** maybe I could allocate less, but that would imply 2 passes, rather waste ** (possibly) some memory */ zo = (char *) sqlite3_malloc(strlen(zi1) + 1); if (!zo){ sqlite3_result_error_nomem(context); return; } zot = zo; z1 = zi1; while( (c1=sqliteCharVal((unsigned char *)z1))!=0 ){ z21=zi2; while( (c2=sqliteCharVal((unsigned char *)z21))!=0 && c2!=c1 ){ sqliteNextChar(z21); } if( c2!=0){ z22=z21; sqliteNextChar(z22); strncpy(zot, z21, z22-z21); zot+=z22-z21; } sqliteNextChar(z1); } *zot = '\0'; sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); sqlite3_free(zo); } } /* ** Given a string z1, retutns the (0 based) index of it's first occurence ** in z2 after the first s characters. ** Returns -1 when there isn't a match. ** updates p to point to the character where the match occured. ** This is an auxiliary function. */ static int _substr(const char* z1, const char* z2, int s, const char** p){ int c = 0; int rVal=-1; const char* zt1; const char* zt2; int c1,c2; if( '\0'==*z1 ){ return -1; } while( (sqliteCharVal((unsigned char *)z2) != 0) && (c++)=0 ? rVal+s : rVal; } /* ** given 2 input strings (s1,s2) and an integer (n) searches from the nth character ** for the string s1. Returns the position where the match occured. ** Characters are counted from 1. ** 0 is returned when no match occurs. */ static void charindexFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const u8 *z1; /* s1 string */ u8 *z2; /* s2 string */ int s=0; int rVal=0; assert( argc==3 ||argc==2); if( SQLITE_NULL==sqlite3_value_type(argv[0]) || SQLITE_NULL==sqlite3_value_type(argv[1])){ sqlite3_result_null(context); return; } z1 = sqlite3_value_text(argv[0]); if( z1==0 ) return; z2 = (u8*) sqlite3_value_text(argv[1]); if(argc==3){ s = sqlite3_value_int(argv[2])-1; if(s<0){ s=0; } }else{ s = 0; } rVal = _substr((char *)z1,(char *)z2,s,NULL); sqlite3_result_int(context, rVal+1); } /* ** given a string (s) and an integer (n) returns the n leftmost (UTF-8) characters ** if the string has a length<=n or is NULL this function is NOP */ static void leftFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ int c=0; int cc=0; int l=0; const unsigned char *z; /* input string */ const unsigned char *zt; unsigned char *rz; /* output string */ assert( argc==2); if( SQLITE_NULL==sqlite3_value_type(argv[0]) || SQLITE_NULL==sqlite3_value_type(argv[1])){ sqlite3_result_null(context); return; } z = sqlite3_value_text(argv[0]); l = sqlite3_value_int(argv[1]); zt = z; while( sqliteCharVal(zt) && c++ 0 ){ sqliteNextChar(zt); } rz = (char *) sqlite3_malloc(ze - zt + 1); if (!rz){ sqlite3_result_error_nomem(context); return; } strcpy((char*) rz, (char*) (zt)); sqlite3_result_text(context, (char*)rz, -1, SQLITE_TRANSIENT); sqlite3_free(rz); } #ifndef HAVE_TRIM /* ** removes the whitespaces at the begining of a string. */ const char* ltrim(const char* s){ while( *s==' ' ) ++s; return s; } /* ** removes the whitespaces at the end of a string. ** !mutates the input string! */ void rtrim(char* s){ char* ss = s+strlen(s)-1; while( ss>=s && *ss==' ' ) --ss; *(ss+1)='\0'; } /* ** Removes the whitespace at the begining of a string */ static void ltrimFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *z; assert( argc==1); if( SQLITE_NULL==sqlite3_value_type(argv[0]) ){ sqlite3_result_null(context); return; } z = sqlite3_value_text(argv[0]); sqlite3_result_text(context, ltrim(z), -1, SQLITE_TRANSIENT); } /* ** Removes the whitespace at the end of a string */ static void rtrimFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *z; char *rz; /* try not to change data in argv */ assert( argc==1); if( SQLITE_NULL==sqlite3_value_type(argv[0]) ){ sqlite3_result_null(context); return; } z = sqlite3_value_text(argv[0]); rz = sqlite3StrDup(z); rtrim(rz); sqlite3_result_text(context, rz, -1, SQLITE_TRANSIENT); sqlite3_free(rz); } /* ** Removes the whitespace at the begining and end of a string */ static void trimFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *z; char *rz; /* try not to change data in argv */ assert( argc==1); if( SQLITE_NULL==sqlite3_value_type(argv[0]) ){ sqlite3_result_null(context); return; } z = sqlite3_value_text(argv[0]); rz = sqlite3StrDup(z); rtrim(rz); sqlite3_result_text(context, ltrim(rz), -1, SQLITE_TRANSIENT); sqlite3_free(rz); } #endif /* ** given a pointer to a string s1, the length of that string (l1), a new string (s2) ** and it's length (l2) appends s2 to s1. ** All lengths in bytes. ** This is just an auxiliary function */ // static void _append(char **s1, int l1, const char *s2, int l2){ // *s1 = realloc(*s1, (l1+l2+1)*sizeof(char)); // strncpy((*s1)+l1, s2, l2); // *(*(s1)+l1+l2) = '\0'; // } #ifndef HAVE_TRIM /* ** given strings s, s1 and s2 replaces occurrences of s1 in s by s2 */ static void replaceFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *z1; /* string s (first parameter) */ const char *z2; /* string s1 (second parameter) string to look for */ const char *z3; /* string s2 (third parameter) string to replace occurrences of s1 with */ int lz1; int lz2; int lz3; int lzo=0; char *zo=0; int ret=0; const char *zt1; const char *zt2; assert( 3==argc ); if( SQLITE_NULL==sqlite3_value_type(argv[0]) ){ sqlite3_result_null(context); return; } z1 = sqlite3_value_text(argv[0]); z2 = sqlite3_value_text(argv[1]); z3 = sqlite3_value_text(argv[2]); /* handle possible null values */ if( 0==z2 ){ z2=""; } if( 0==z3 ){ z3=""; } lz1 = strlen(z1); lz2 = strlen(z2); lz3 = strlen(z3); #if 0 /* special case when z2 is empty (or null) nothing will be changed */ if( 0==lz2 ){ sqlite3_result_text(context, z1, -1, SQLITE_TRANSIENT); return; } #endif zt1=z1; zt2=z1; while(1){ ret=_substr(z2,zt1 , 0, &zt2); if( ret<0 ) break; _append(&zo, lzo, zt1, zt2-zt1); lzo+=zt2-zt1; _append(&zo, lzo, z3, lz3); lzo+=lz3; zt1=zt2+lz2; } _append(&zo, lzo, zt1, lz1-(zt1-z1)); sqlite3_result_text(context, zo, -1, SQLITE_TRANSIENT); sqlite3_free(zo); } #endif /* ** given a string returns the same string but with the characters in reverse order */ static void reverseFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ const char *z; const char *zt; char *rz; char *rzt; int l = 0; int i = 0; assert( 1==argc ); if( SQLITE_NULL==sqlite3_value_type(argv[0]) ){ sqlite3_result_null(context); return; } z = (char *)sqlite3_value_text(argv[0]); l = strlen(z); rz = (char *) sqlite3_malloc(l + 1); if (!rz){ sqlite3_result_error_nomem(context); return; } rzt = rz+l; *(rzt--) = '\0'; zt=z; while( sqliteCharVal((unsigned char *)zt)!=0 ){ z=zt; sqliteNextChar(zt); for(i=1; zt-i>=z; ++i){ *(rzt--)=*(zt-i); } } sqlite3_result_text(context, rz, -1, SQLITE_TRANSIENT); sqlite3_free(rz); } /* ** An instance of the following structure holds the context of a ** stdev() or variance() aggregate computation. ** implementaion of http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Algorithm_II ** less prone to rounding errors */ typedef struct StdevCtx StdevCtx; struct StdevCtx { double rM; double rS; i64 cnt; /* number of elements */ }; /* ** An instance of the following structure holds the context of a ** mode() or median() aggregate computation. ** Depends on structures defined in map.c (see map & map) ** These aggregate functions only work for integers and floats although ** they could be made to work for strings. This is usually considered meaningless. ** Only usuall order (for median), no use of collation functions (would this even make sense?) */ typedef struct ModeCtx ModeCtx; struct ModeCtx { i64 riM; /* integer value found so far */ double rdM; /* double value found so far */ i64 cnt; /* number of elements so far */ double pcnt; /* number of elements smaller than a percentile */ i64 mcnt; /* maximum number of occurrences (for mode) */ i64 mn; /* number of occurrences (for mode and percentiles) */ i64 is_double; /* whether the computation is being done for doubles (>0) or integers (=0) */ map* m; /* map structure used for the computation */ int done; /* whether the answer has been found */ }; /* ** called for each value received during a calculation of stdev or variance */ static void varianceStep(sqlite3_context *context, int argc, sqlite3_value **argv){ StdevCtx *p; double delta; double x; assert( argc==1 ); p = (StdevCtx *) sqlite3_aggregate_context(context, sizeof(*p)); /* only consider non-null values */ if( SQLITE_NULL != sqlite3_value_numeric_type(argv[0]) ){ p->cnt++; x = sqlite3_value_double(argv[0]); delta = (x-p->rM); p->rM += delta/p->cnt; p->rS += delta*(x-p->rM); } } /* ** called for each value received during a calculation of mode of median */ static void modeStep(sqlite3_context *context, int argc, sqlite3_value **argv){ ModeCtx *p; i64 xi=0; double xd=0.0; i64 *iptr; double *dptr; int type; assert( argc==1 ); type = sqlite3_value_numeric_type(argv[0]); if( type == SQLITE_NULL) return; p = (ModeCtx *) sqlite3_aggregate_context(context, sizeof(*p)); if( 0==(p->m) ){ p->m = (map *) calloc(1, sizeof(map)); if( type==SQLITE_INTEGER ){ /* map will be used for integers */ *(p->m) = map_make(int_cmp); p->is_double = 0; }else{ p->is_double = 1; /* map will be used for doubles */ *(p->m) = map_make(double_cmp); } } ++(p->cnt); if( 0==p->is_double ){ xi = sqlite3_value_int64(argv[0]); iptr = (i64*)calloc(1,sizeof(i64)); *iptr = xi; map_insert(p->m, iptr); }else{ xd = sqlite3_value_double(argv[0]); dptr = (double*)calloc(1,sizeof(double)); *dptr = xd; map_insert(p->m, dptr); } } /* ** Auxiliary function that iterates all elements in a map and finds the mode ** (most frequent value) */ static void modeIterate(void* e, i64 c, void* pp){ i64 ei; double ed; ModeCtx *p = (ModeCtx*)pp; if( 0==p->is_double ){ ei = *(int*)(e); if( p->mcnt==c ){ ++p->mn; }else if( p->mcntriM = ei; p->mcnt = c; p->mn=1; } }else{ ed = *(double*)(e); if( p->mcnt==c ){ ++p->mn; }else if(p->mcntrdM = ed; p->mcnt = c; p->mn=1; } } } /* ** Auxiliary function that iterates all elements in a map and finds the median ** (the value such that the number of elements smaller is equal the the number of ** elements larger) */ static void medianIterate(void* e, i64 c, void* pp){ i64 ei; double ed; double iL; double iR; int il; int ir; ModeCtx *p = (ModeCtx*)pp; if(p->done>0) return; iL = p->pcnt; iR = p->cnt - p->pcnt; il = p->mcnt + c; ir = p->cnt - p->mcnt; if( il >= iL ){ if( ir >= iR ){ ++p->mn; if( 0==p->is_double ){ ei = *(int*)(e); p->riM += ei; }else{ ed = *(double*)(e); p->rdM += ed; } }else{ p->done=1; } } p->mcnt+=c; } /* ** Returns the mode value */ static void modeFinalize(sqlite3_context *context){ ModeCtx *p; p = (ModeCtx *) sqlite3_aggregate_context(context, 0); if( p && p->m ){ map_iterate(p->m, modeIterate, p); map_destroy(p->m); free(p->m); if( 1==p->mn ){ if( 0==p->is_double ) sqlite3_result_int64(context, p->riM); else sqlite3_result_double(context, p->rdM); } } } /* ** auxiliary function for percentiles */ static void _medianFinalize(sqlite3_context *context){ ModeCtx *p; p = (ModeCtx*) sqlite3_aggregate_context(context, 0); if( p && p->m ){ p->done=0; map_iterate(p->m, medianIterate, p); map_destroy(p->m); free(p->m); if( 0==p->is_double ) if( 1==p->mn ) sqlite3_result_int64(context, p->riM); else sqlite3_result_double(context, p->riM*1.0/p->mn); else sqlite3_result_double(context, p->rdM/p->mn); } } /* ** Returns the median value */ static void medianFinalize(sqlite3_context *context){ ModeCtx *p; p = (ModeCtx*) sqlite3_aggregate_context(context, 0); if( p!=0 ){ p->pcnt = (p->cnt)/2.0; _medianFinalize(context); } } /* ** Returns the lower_quartile value */ static void lower_quartileFinalize(sqlite3_context *context){ ModeCtx *p; p = (ModeCtx*) sqlite3_aggregate_context(context, 0); if( p!=0 ){ p->pcnt = (p->cnt)/4.0; _medianFinalize(context); } } /* ** Returns the upper_quartile value */ static void upper_quartileFinalize(sqlite3_context *context){ ModeCtx *p; p = (ModeCtx*) sqlite3_aggregate_context(context, 0); if( p!=0 ){ p->pcnt = (p->cnt)*3/4.0; _medianFinalize(context); } } /* ** Returns the stdev value */ static void stdevFinalize(sqlite3_context *context){ StdevCtx *p; p = (StdevCtx *) sqlite3_aggregate_context(context, 0); if( p && p->cnt>1 ){ sqlite3_result_double(context, sqrt(p->rS/(p->cnt-1))); }else{ sqlite3_result_double(context, 0.0); } } /* ** Returns the variance value */ static void varianceFinalize(sqlite3_context *context){ StdevCtx *p; p = (StdevCtx *) sqlite3_aggregate_context(context, 0); if( p && p->cnt>1 ){ sqlite3_result_double(context, p->rS/(p->cnt-1)); }else{ sqlite3_result_double(context, 0.0); } } #ifdef SQLITE_SOUNDEX /* relicoder factored code */ /* ** Calculates the soundex value of a string */ static void soundex(const u8 *zIn, char *zResult){ int i, j; static const unsigned char iCode[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 1, 2, 0, 0, 2, 2, 4, 5, 5, 0, 1, 2, 6, 2, 3, 0, 1, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 1, 2, 0, 0, 2, 2, 4, 5, 5, 0, 1, 2, 6, 2, 3, 0, 1, 0, 2, 0, 2, 0, 0, 0, 0, 0, }; for(i=0; zIn[i] && !isalpha(zIn[i]); i++){} if( zIn[i] ){ zResult[0] = toupper(zIn[i]); for(j=1; j<4 && zIn[i]; i++){ int code = iCode[zIn[i]&0x7f]; if( code>0 ){ zResult[j++] = code + '0'; } } while( j<4 ){ zResult[j++] = '0'; } zResult[j] = 0; }else{ strcpy(zResult, "?000"); } } /* ** computes the number of different characters between the soundex value fo 2 strings */ static void differenceFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ char zResult1[8]; char zResult2[8]; char *zR1 = zResult1; char *zR2 = zResult2; int rVal = 0; int i = 0; const u8 *zIn1; const u8 *zIn2; assert( argc==2 ); if( sqlite3_value_type(argv[0])==SQLITE_NULL || sqlite3_value_type(argv[1])==SQLITE_NULL ){ sqlite3_result_null(context); return; } zIn1 = (u8*)sqlite3_value_text(argv[0]); zIn2 = (u8*)sqlite3_value_text(argv[1]); soundex(zIn1, zR1); soundex(zIn2, zR2); for(i=0; i<4; ++i){ if( sqliteCharVal((unsigned char *)zR1)==sqliteCharVal((unsigned char *)zR2) ) ++rVal; sqliteNextChar(zR1); sqliteNextChar(zR2); } sqlite3_result_int(context, rVal); } #endif /* ** This function registered all of the above C functions as SQL ** functions. This should be the only routine in this file with ** external linkage. */ int common_extension_functions(struct FuncDef **basic_funcs, struct FuncDefAgg **agg_funcs) { static struct FuncDef aFuncs[] = { /* math.h */ { "acos", 1, SQLITE_UTF8, 0, acosFunc }, { "asin", 1, SQLITE_UTF8, 0, asinFunc }, { "atan", 1, SQLITE_UTF8, 0, atanFunc }, { "atn2", 2, SQLITE_UTF8, 0, atn2Func }, /* XXX alias */ { "atan2", 2, SQLITE_UTF8, 0, atn2Func }, { "acosh", 1, SQLITE_UTF8, 0, acoshFunc }, { "asinh", 1, SQLITE_UTF8, 0, asinhFunc }, { "atanh", 1, SQLITE_UTF8, 0, atanhFunc }, { "difference", 2, SQLITE_UTF8, 0, differenceFunc}, { "degrees", 1, SQLITE_UTF8, 0, rad2degFunc }, { "radians", 1, SQLITE_UTF8, 0, deg2radFunc }, { "cos", 1, SQLITE_UTF8, 0, cosFunc }, { "sin", 1, SQLITE_UTF8, 0, sinFunc }, { "tan", 1, SQLITE_UTF8, 0, tanFunc }, { "cot", 1, SQLITE_UTF8, 0, cotFunc }, { "cosh", 1, SQLITE_UTF8, 0, coshFunc }, { "sinh", 1, SQLITE_UTF8, 0, sinhFunc }, { "tanh", 1, SQLITE_UTF8, 0, tanhFunc }, { "coth", 1, SQLITE_UTF8, 0, cothFunc }, { "exp", 1, SQLITE_UTF8, 0, expFunc }, { "log", 1, SQLITE_UTF8, 0, logFunc }, { "log10", 1, SQLITE_UTF8, 0, log10Func }, { "power", 2, SQLITE_UTF8, 0, powerFunc }, { "sign", 1, SQLITE_UTF8, 0, signFunc }, { "sqrt", 1, SQLITE_UTF8, 0, sqrtFunc }, { "square", 1, SQLITE_UTF8, 0, squareFunc }, { "ceil", 1, SQLITE_UTF8, 0, ceilFunc }, { "floor", 1, SQLITE_UTF8, 0, floorFunc }, { "pi", 0, SQLITE_UTF8, 1, piFunc }, /* string */ { "replicate", 2, SQLITE_UTF8, 0, replicateFunc }, { "charindex", 2, SQLITE_UTF8, 0, charindexFunc }, { "charindex", 3, SQLITE_UTF8, 0, charindexFunc }, { "leftstr", 2, SQLITE_UTF8, 0, leftFunc }, { "rightstr", 2, SQLITE_UTF8, 0, rightFunc }, #ifndef HAVE_TRIM { "ltrim", 1, SQLITE_UTF8, 0, ltrimFunc }, { "rtrim", 1, SQLITE_UTF8, 0, rtrimFunc }, { "trim", 1, SQLITE_UTF8, 0, trimFunc }, { "replace", 3, SQLITE_UTF8, 0, replaceFunc }, #endif { "reverse", 1, SQLITE_UTF8, 0, reverseFunc }, { "proper", 1, SQLITE_UTF8, 0, properFunc }, { "padl", 2, SQLITE_UTF8, 0, padlFunc }, { "padr", 2, SQLITE_UTF8, 0, padrFunc }, { "padc", 2, SQLITE_UTF8, 0, padcFunc }, { "strfilter", 2, SQLITE_UTF8, 0, strfilterFunc }, { NULL } }; /* Aggregate functions */ static struct FuncDefAgg aAggs[] = { { "stdev", 1, 0, varianceStep, stdevFinalize }, { "stddev", 1, 0, varianceStep, stdevFinalize }, { "variance", 1, 0, varianceStep, varianceFinalize }, { "mode", 1, 0, modeStep, modeFinalize }, { "median", 1, 0, modeStep, medianFinalize }, { "lower_quartile", 1, 0, modeStep, lower_quartileFinalize }, { "upper_quartile", 1, 0, modeStep, upper_quartileFinalize }, { NULL } }; *basic_funcs = aFuncs; *agg_funcs = aAggs; return SQLITE_OK; } #ifdef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE int sqlite3_extension_init( sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi){ SQLITE_EXTENSION_INIT2(pApi); RegisterExtensionFunctions(db); return 0; } #endif /* COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE */ map map_make(cmp_func cmp){ map r; r.cmp=cmp; r.base = 0; r.free = 0; return r; } void* xcalloc(size_t nmemb, size_t size, const char* s){ void* ret = calloc(nmemb, size); return ret; } static void xfree(void* p){ free(p); } void node_insert(node** n, cmp_func cmp, void *e){ int c; node* nn; if(*n==0){ nn = (node*)xcalloc(1,sizeof(node), "for node"); nn->data = e; nn->count = 1; *n=nn; }else{ c=cmp((*n)->data,e); if(0==c){ ++((*n)->count); xfree(e); }else if(c>0){ /* put it right here */ node_insert(&((*n)->l), cmp, e); }else{ node_insert(&((*n)->r), cmp, e); } } } void map_insert(map *m, void *e){ node_insert(&(m->base), m->cmp, e); } void node_iterate(node *n, map_iterator iter, void* p){ if(n){ if(n->l) node_iterate(n->l, iter, p); iter(n->data, n->count, p); if(n->r) node_iterate(n->r, iter, p); } } void map_iterate(map *m, map_iterator iter, void* p){ node_iterate(m->base, iter, p); } void node_destroy(node *n){ if(0!=n){ xfree(n->data); if(n->l) node_destroy(n->l); if(n->r) node_destroy(n->r); xfree(n); } } void map_destroy(map *m){ node_destroy(m->base); } int int_cmp(const void *a, const void *b){ int64_t aa = *(int64_t *)(a); int64_t bb = *(int64_t *)(b); /* printf("cmp %d <=> %d\n",aa,bb); */ if(aa==bb) return 0; else if(aa %d\n",aa,bb); */ if(aa==bb) return 0; else if(aa %" PRId64 "\n", ee,c); } lnav-0.8.2/src/field_overlay_source.cc000664 000765 000024 00000041746 13073603605 020254 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include "lnav.hh" #include "relative_time.hh" #include "field_overlay_source.hh" #include "readline_highlighters.hh" using namespace std; void field_overlay_source::build_summary_lines(const listview_curses &lv) { textfile_sub_source &tss = lnav_data.ld_text_source; logfile_sub_source &lss = lnav_data.ld_log_source; this->fos_summary_lines.clear(); { vis_line_t filled_rows = lv.rows_available( lv.get_top(), listview_curses::RD_DOWN); vis_line_t height, free_rows; unsigned long width; long rate_len = 0; lv.get_dimensions(height, width); free_rows = height - filled_rows - vis_line_t(this->fos_lines.size()); if (free_rows < 2) { this->fos_summary_lines.clear(); } else { string last_time, time_span; double error_rate = 0.0; if (lv.get_inner_height() == 0) { last_time = "No log messages"; time_span = "None"; } else { logline *first_line, *last_line; time_t now = time(NULL); first_line = lss.find_line(lss.at(vis_line_t(0))); last_line = lss.find_line(lss.at(lv.get_bottom())); last_time = "Last message: " ANSI_BOLD_START + precise_time_ago( last_line->get_timeval(), true) + ANSI_NORM; str2reltime(last_line->get_time_in_millis() - first_line->get_time_in_millis(), time_span); time_t local_now = convert_log_time_to_local(now); time_t five_minutes_ago = local_now - (5 * 60 * 60); time_t ten_secs_ago = local_now - 10; vis_line_t from_five_min_ago = lnav_data.ld_log_source. find_from_time(five_minutes_ago); vis_line_t from_ten_secs_ago = lnav_data.ld_log_source. find_from_time(ten_secs_ago); vis_bookmarks &bm = lnav_data.ld_views[LNV_LOG].get_bookmarks(); bookmark_vector &error_bookmarks = bm[&logfile_sub_source::BM_ERRORS]; if (now > last_line->get_time() && from_five_min_ago != -1) { bookmark_vector::iterator five_min_lower = lower_bound(error_bookmarks.begin(), error_bookmarks.end(), from_five_min_ago); if (five_min_lower != error_bookmarks.end()) { double error_count = distance( five_min_lower, error_bookmarks.end()); double time_diff = 5.0; if (first_line->get_time() > five_minutes_ago) { time_diff = (double) (local_now - first_line->get_time()) / 60.0; } error_rate = error_count / time_diff; if (from_ten_secs_ago != -1) { bookmark_vector::iterator ten_sec_lower = lower_bound(error_bookmarks.begin(), error_bookmarks.end(), from_ten_secs_ago); if (ten_sec_lower != error_bookmarks.end()) { double recent_error_count = distance( ten_sec_lower, error_bookmarks.end()); double recent_error_rate = recent_error_count / 10.0; double long_error_rate = error_count / (time_diff * 60.0 / 10.0); if (long_error_rate == 0.0) { long_error_rate = 1.0; } long computed_rate_len = lrint(ceil( (recent_error_rate * 40.0) / long_error_rate)); rate_len = min(10L, computed_rate_len); } } } } } this->fos_summary_lines.push_back(attr_line_t()); attr_line_t &sum_line = this->fos_summary_lines.back(); sum_line.with_ansi_string( " %s; Files: " ANSI_BOLD("%'2d") "; " ANSI_ROLE("Error rate") ": " ANSI_BOLD("%'.2lf") "/min; " "Time span: " ANSI_BOLD("%s"), last_time.c_str(), lss.file_count() + tss.size(), view_colors::VCR_ERROR, error_rate, time_span.c_str()); string &sum_msg = sum_line.get_string(); sum_line.with_attr(string_attr( line_range(sum_msg.find("Error rate"), sum_msg.find("Error rate") + rate_len), &view_curses::VC_STYLE, A_REVERSE )) .with_attr(string_attr( line_range(1, 2), &view_curses::VC_GRAPHIC, ACS_ULCORNER )) .with_attr(string_attr( line_range(2, 6), &view_curses::VC_GRAPHIC, ACS_HLINE )) .with_attr(string_attr( line_range(sum_msg.length() + 1, sum_msg.length() + 5), &view_curses::VC_GRAPHIC, ACS_HLINE )) .with_attr(string_attr( line_range(sum_msg.length() + 5, sum_msg.length() + 6), &view_curses::VC_GRAPHIC, ACS_URCORNER )) .right_justify(width - 2); } } } void field_overlay_source::build_field_lines(const listview_curses &lv) { logfile_sub_source &lss = lnav_data.ld_log_source; view_colors &vc = view_colors::singleton(); this->fos_lines.clear(); if (lss.text_line_count() == 0) { this->fos_log_helper.clear(); return; } content_line_t cl = lss.at(lv.get_top()); logfile *file = lss.find(cl); logfile::iterator ll = file->begin() + cl; log_format *format = file->get_format(); bool display = false; if (ll->is_time_skewed()) { display = true; } if (this->fos_active) { display = true; } if (!display) { return; } if (!this->fos_log_helper.parse_line(lv.get_top())) { return; } char old_timestamp[64], curr_timestamp[64], orig_timestamp[64]; struct timeval curr_tv, offset_tv, orig_tv, diff_tv = { 0 }; attr_line_t time_line; string &time_str = time_line.get_string(); struct line_range time_lr; sql_strftime(curr_timestamp, sizeof(curr_timestamp), ll->get_time(), ll->get_millis(), 'T'); if (ll->is_time_skewed()) { time_lr.lr_start = 1; time_lr.lr_end = 2; time_line.with_attr(string_attr(time_lr, &view_curses::VC_GRAPHIC, ACS_LLCORNER)); time_str.append(" Out-Of-Time-Order Message"); time_lr.lr_start = 3; time_lr.lr_end = time_str.length(); time_line.with_attr(string_attr(time_lr, &view_curses::VC_STYLE, vc.attrs_for_role(view_colors::VCR_SKEWED_TIME))); time_str.append(" --"); } time_str.append(" Received Time: "); time_lr.lr_start = time_str.length(); time_str.append(curr_timestamp); time_lr.lr_end = time_str.length(); time_line.with_attr(string_attr(time_lr, &view_curses::VC_STYLE, A_BOLD)); time_str.append(" -- "); time_lr.lr_start = time_str.length(); time_str.append(precise_time_ago(ll->get_timeval(), true)); time_lr.lr_end = time_str.length(); time_line.with_attr(string_attr(time_lr, &view_curses::VC_STYLE, A_BOLD)); struct line_range time_range = find_string_attr_range( this->fos_log_helper.ldh_line_attrs, &logline::L_TIMESTAMP); curr_tv = this->fos_log_helper.ldh_line->get_timeval(); if (this->fos_log_helper.ldh_line->is_time_skewed() && time_range.lr_end != -1) { const char *time_src = this->fos_log_helper.ldh_msg.get_data() + time_range.lr_start; struct timeval actual_tv; struct exttm tm; if (format->lf_date_time.scan(time_src, time_range.length(), format->get_timestamp_formats(), &tm, actual_tv, false)) { sql_strftime(orig_timestamp, sizeof(orig_timestamp), actual_tv, 'T'); time_str.append("; Actual Time: "); time_lr.lr_start = time_str.length(); time_str.append(orig_timestamp); time_lr.lr_end = time_str.length(); time_line.with_attr(string_attr( time_lr, &view_curses::VC_STYLE, vc.attrs_for_role(view_colors::VCR_SKEWED_TIME))); timersub(&curr_tv, &actual_tv, &diff_tv); time_str.append("; Diff: "); time_lr.lr_start = time_str.length(); str2reltime(diff_tv, time_str); time_lr.lr_end = time_str.length(); time_line.with_attr(string_attr( time_lr, &view_curses::VC_STYLE, A_BOLD)); } } offset_tv = this->fos_log_helper.ldh_file->get_time_offset(); timersub(&curr_tv, &offset_tv, &orig_tv); sql_strftime(old_timestamp, sizeof(old_timestamp), orig_tv.tv_sec, orig_tv.tv_usec / 1000, 'T'); if (offset_tv.tv_sec || offset_tv.tv_usec) { char offset_str[32]; time_str.append(" Pre-adjust Time: "); time_str.append(old_timestamp); snprintf(offset_str, sizeof(offset_str), " Offset: %+d.%03d", (int)offset_tv.tv_sec, (int)(offset_tv.tv_usec / 1000)); time_str.append(offset_str); } if (this->fos_active || diff_tv.tv_sec > 0) { this->fos_lines.push_back(time_line); } if (!this->fos_active) { return; } this->fos_known_key_size = 0; this->fos_unknown_key_size = 0; for (std::vector::iterator iter = this->fos_log_helper.ldh_line_values.begin(); iter != this->fos_log_helper.ldh_line_values.end(); ++iter) { this->fos_known_key_size = max(this->fos_known_key_size, (int)iter->lv_name.size()); } for (data_parser::element_list_t::iterator iter = this->fos_log_helper.ldh_parser->dp_pairs.begin(); iter != this->fos_log_helper.ldh_parser->dp_pairs.end(); ++iter) { std::string colname = this->fos_log_helper.ldh_parser->get_element_string( iter->e_sub_elements->front()); colname = this->fos_log_helper.ldh_namer->add_column(colname); this->fos_unknown_key_size = max( this->fos_unknown_key_size, (int)colname.length()); } log_format *lf = this->fos_log_helper.ldh_file->get_format(); if (!lf->get_pattern_regex().empty()) { attr_line_t pattern_al; std::string &pattern_str = pattern_al.get_string(); pattern_str = " Pattern: " + lf->get_pattern_name() + " = "; int skip = pattern_str.length(); pattern_str += lf->get_pattern_regex(); readline_regex_highlighter(pattern_al, skip); this->fos_lines.push_back(pattern_al); } if (this->fos_log_helper.ldh_line_values.empty()) { this->fos_lines.push_back(" No known message fields"); } const log_format *last_format = NULL; for (size_t lpc = 0; lpc < this->fos_log_helper.ldh_line_values.size(); lpc++) { logline_value &lv = this->fos_log_helper.ldh_line_values[lpc]; string format_name = lv.lv_format->get_name().to_string(); attr_line_t al; string str; if (lv.lv_format != last_format) { this->fos_lines.push_back(" Known message fields for table " + format_name + ":"); this->fos_lines.back().with_attr(string_attr( line_range(32, 32 + format_name.length()), &view_curses::VC_STYLE, vc.attrs_for_ident(format_name) | A_BOLD)); last_format = lv.lv_format; } str = " " + lv.lv_name.to_string(); str.append(this->fos_known_key_size - lv.lv_name.size() + 3, ' '); str += " = " + lv.to_string(); al.with_string(str) .with_attr(string_attr( line_range(3, 3 + lv.lv_name.size()), &view_curses::VC_STYLE, vc.attrs_for_ident(lv.lv_name.to_string()))); this->fos_lines.push_back(al); this->add_key_line_attrs(this->fos_known_key_size); } std::map::iterator json_iter; if (!this->fos_log_helper.ldh_json_pairs.empty()) { this->fos_lines.push_back(" JSON fields:"); } for (json_iter = this->fos_log_helper.ldh_json_pairs.begin(); json_iter != this->fos_log_helper.ldh_json_pairs.end(); ++json_iter) { json_ptr_walk::walk_list_t &jpairs = json_iter->second; for (size_t lpc = 0; lpc < jpairs.size(); lpc++) { this->fos_lines.push_back(" " + this->fos_log_helper.format_json_getter(json_iter->first, lpc) + " = " + jpairs[lpc].wt_value); this->add_key_line_attrs(0); } } if (this->fos_log_helper.ldh_parser->dp_pairs.empty()) { this->fos_lines.push_back(" No discovered message fields"); } else { this->fos_lines.push_back(" Discovered fields for logline table from message format: "); this->fos_lines.back().with_attr(string_attr( line_range(23, 23 + 7), &view_curses::VC_STYLE, vc.attrs_for_ident("logline") )); attr_line_t &al = this->fos_lines.back(); string &disc_str = al.get_string(); al.with_attr(string_attr( line_range(disc_str.length(), -1), &view_curses::VC_STYLE, A_BOLD)); disc_str.append(this->fos_log_helper.ldh_msg_format); } data_parser::element_list_t::iterator iter; iter = this->fos_log_helper.ldh_parser->dp_pairs.begin(); for (size_t lpc = 0; lpc < this->fos_log_helper.ldh_parser->dp_pairs.size(); lpc++, ++iter) { string &name = this->fos_log_helper.ldh_namer->cn_names[lpc]; string val = this->fos_log_helper.ldh_parser->get_element_string( iter->e_sub_elements->back()); attr_line_t al(" " + name + " = " + val); al.with_attr(string_attr( line_range(3, 3 + name.length()), &view_curses::VC_STYLE, vc.attrs_for_ident(name))); this->fos_lines.push_back(al); this->add_key_line_attrs(this->fos_unknown_key_size, lpc == (this->fos_log_helper.ldh_parser->dp_pairs.size() - 1)); } }; lnav-0.8.2/src/field_overlay_source.hh000644 000765 000024 00000007177 13073603622 020263 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef LNAV_FIELD_OVERLAY_SOURCE_H #define LNAV_FIELD_OVERLAY_SOURCE_H #include #include "listview_curses.hh" #include "log_data_helper.hh" #include "logfile_sub_source.hh" class field_overlay_source : public list_overlay_source { public: field_overlay_source(logfile_sub_source &lss) : fos_active(false), fos_active_prev(false), fos_log_helper(lss), fos_known_key_size(0), fos_unknown_key_size(0) { }; size_t list_overlay_count(const listview_curses &lv) { this->build_field_lines(lv); this->build_summary_lines(lv); return this->fos_lines.size() + this->fos_summary_lines.size(); }; void add_key_line_attrs(int key_size, bool last_line = false) { string_attrs_t &sa = this->fos_lines.back().get_attrs(); struct line_range lr(1, 2); sa.push_back(string_attr(lr, &view_curses::VC_GRAPHIC, last_line ? ACS_LLCORNER : ACS_LTEE)); lr.lr_start = 3 + key_size + 3; lr.lr_end = -1; sa.push_back(string_attr(lr, &view_curses::VC_STYLE, A_BOLD)); }; bool list_value_for_overlay(const listview_curses &lv, vis_line_t y, attr_line_t &value_out) { if (1 <= y && y <= (int)this->fos_lines.size()) { value_out = this->fos_lines[y - 1]; return true; } if (!this->fos_summary_lines.empty()) { unsigned long width; vis_line_t height; lv.get_dimensions(height, width); if (y == height - 1) { value_out = this->fos_summary_lines[0]; return true; } } return false; }; void build_field_lines(const listview_curses &lv); void build_summary_lines(const listview_curses &lv); bool fos_active; bool fos_active_prev; log_data_helper fos_log_helper; int fos_known_key_size; int fos_unknown_key_size; std::vector fos_lines; std::vector fos_summary_lines; }; #endif //LNAV_FIELD_OVERLAY_SOURCE_H lnav-0.8.2/src/file_vtab.cc000664 000765 000024 00000007217 13062352710 015772 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include #include #include #include "lnav.hh" #include "auto_mem.hh" #include "lnav_log.hh" #include "sql_util.hh" #include "file_vtab.hh" #include "vtab_module.hh" using namespace std; struct lnav_file : public tvt_iterator_cursor { using iterator = vector::iterator; static constexpr const char *CREATE_STMT = R"( -- Access lnav's open file list through this table. CREATE TABLE lnav_file ( device integer, inode integer, filepath text, format text, lines integer ); )"; struct vtab { sqlite3_vtab base; operator sqlite3_vtab *() { return &this->base; }; }; iterator begin() { return lnav_data.ld_files.begin(); } iterator end() { return lnav_data.ld_files.end(); } int get_column(const cursor &vc, sqlite3_context *ctx, int col) { logfile *lf = *vc.iter; const struct stat &st = lf->get_stat(); const string &name = lf->get_filename(); log_format *format = lf->get_format(); const char *format_name = format != nullptr ? format->get_name().get() : nullptr; switch (col) { case 0: sqlite3_result_int(ctx, st.st_dev); break; case 1: sqlite3_result_int(ctx, st.st_ino); break; case 2: sqlite3_result_text(ctx, name.c_str(), name.size(), SQLITE_TRANSIENT); break; case 3: if (format_name != nullptr) { sqlite3_result_text(ctx, format_name, -1, SQLITE_STATIC); } else { sqlite3_result_null(ctx); } break; case 4: sqlite3_result_int(ctx, lf->size()); break; } return SQLITE_OK; } }; int register_file_vtab(sqlite3 *db) { static vtab_module LNAV_FILE_MODULE; int rc; rc = LNAV_FILE_MODULE.create(db, "lnav_file"); ensure(rc == SQLITE_OK); return rc; } lnav-0.8.2/src/file_vtab.hh000664 000765 000024 00000003165 13061763600 016005 0ustar00stackstaff000000 000000 /** * Copyright (c) 2017, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __file_vtab_hh #define __file_vtab_hh #include int register_file_vtab(sqlite3 *db); #endif lnav-0.8.2/src/filesystem/000775 000765 000024 00000000000 13073703476 015720 5ustar00stackstaff000000 000000 lnav-0.8.2/src/filter_observer.hh000664 000765 000024 00000010523 13014760776 017253 0ustar00stackstaff000000 000000 /** * Copyright (c) 2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __filter_observer_hh #define __filter_observer_hh #include #include "logfile.hh" #include "textview_curses.hh" class line_filter_observer : public logline_observer { public: line_filter_observer(filter_stack &fs, logfile *lf) : lfo_filter_stack(fs), lfo_filter_state(lf) { }; void logline_restart(const logfile &lf) { for (filter_stack::iterator iter = this->lfo_filter_stack.begin(); iter != this->lfo_filter_stack.end(); ++iter) { (*iter)->revert_to_last(this->lfo_filter_state); } }; void logline_new_line(const logfile &lf, logfile::const_iterator ll, shared_buffer_ref &sbr) { size_t offset = std::distance(lf.begin(), ll); require(&lf == this->lfo_filter_state.tfs_logfile); this->lfo_filter_state.resize(lf.size()); if (!this->lfo_filter_stack.empty()) { if (lf.get_format() != NULL) { lf.get_format()->get_subline(*ll, sbr); } for (filter_stack::iterator iter = this->lfo_filter_stack.begin(); iter != this->lfo_filter_stack.end(); ++iter) { if (offset >= this->lfo_filter_state.tfs_filter_count[(*iter)->get_index()]) { (*iter)->add_line(this->lfo_filter_state, ll, sbr); } } } }; void logline_eof(const logfile &lf) { for (filter_stack::iterator iter = this->lfo_filter_stack.begin(); iter != this->lfo_filter_stack.end(); ++iter) { (*iter)->end_of_message(this->lfo_filter_state); } }; bool excluded(uint32_t filter_in_mask, uint32_t filter_out_mask, size_t offset) const { bool filtered_in = (filter_in_mask == 0) || ( this->lfo_filter_state.tfs_mask[offset] & filter_in_mask) != 0; bool filtered_out = ( this->lfo_filter_state.tfs_mask[offset] & filter_out_mask) != 0; return !filtered_in || filtered_out; }; size_t get_min_count(size_t max) const { size_t retval = max; for (filter_stack::iterator iter = this->lfo_filter_stack.begin(); iter != this->lfo_filter_stack.end(); ++iter) { retval = std::min(retval, this->lfo_filter_state.tfs_filter_count[(*iter)->get_index()]); } return retval; }; void clear_deleted_filter_state() { uint32_t used_mask = 0; for (filter_stack::iterator iter = this->lfo_filter_stack.begin(); iter != this->lfo_filter_stack.end(); ++iter) { used_mask |= (1L << (*iter)->get_index()); } this->lfo_filter_state.clear_deleted_filter_state(used_mask); }; filter_stack &lfo_filter_stack; logfile_filter_state lfo_filter_state; }; #endif lnav-0.8.2/src/format-text-files.hh000664 000765 000024 00000003504 13071032570 017415 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013-2015, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file format-text-files.hh */ #ifndef __format_text_files_hh #define __format_text_files_hh extern "C" { extern const char dhclient_summary_lnav[]; extern const char dump_pid_sh[]; extern const char lnav_pop_view_lnav[]; extern const char partition_by_boot_lnav[]; extern const char search_for_lnav[]; } #endif lnav-0.8.2/src/fs-extension-functions.cc000664 000765 000024 00000013735 13067344023 020474 0ustar00stackstaff000000 000000 /** * Copyright (c) 2013, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file fs-extension-functions.cc */ #include "config.h" #include #include #include #include #include #include #include "sqlite3.h" #include "sqlite-extension-func.hh" #include "vtab_module.hh" using namespace std; using namespace mapbox; static util::variant sql_basename(const char *path_in) { int text_end = -1; if (path_in[0] == '\0') { return "."; } for (ssize_t lpc = strlen(path_in) - 1; lpc >= 0; lpc--) { if (path_in[lpc] == '/' || path_in[lpc] == '\\') { if (text_end != -1) { return string_fragment(path_in, lpc + 1, text_end); } } else if (text_end == -1) { text_end = (int) (lpc + 1); } } if (text_end == -1) { return "/"; } else { return string_fragment(path_in, 0, text_end); } } static util::variant sql_dirname(const char *path_in) { ssize_t text_end; text_end = strlen(path_in) - 1; while (text_end >= 0 && (path_in[text_end] == '/' || path_in[text_end] == '\\')) { text_end -= 1; } while (text_end >= 0) { if (path_in[text_end] == '/' || path_in[text_end] == '\\') { return string_fragment(path_in, 0, text_end == 0 ? 1 : text_end); } text_end -= 1; } return path_in[0] == '/' ? "/" : "."; } static nonstd::optional sql_joinpath(const vector paths) { std::string full_path; if (paths.empty()) { return nonstd::nullopt; } for (auto &path_in : paths) { if (path_in == nullptr) { return nonstd::nullopt; } if (path_in[0] == '/' || path_in[0] == '\\') { full_path.clear(); } if (!full_path.empty() && full_path[full_path.length() - 1] != '/' && full_path[full_path.length() - 1] != '\\') { full_path += "/"; } full_path += path_in; } return full_path; } int fs_extension_functions(struct FuncDef **basic_funcs, struct FuncDefAgg **agg_funcs) { static struct FuncDef fs_funcs[] = { sqlite_func_adapter::builder( help_text("basename", "Extract the base portion of a pathname.") .sql_function() .with_parameter({"path", "The path"}) .with_example({"SELECT basename('foobar')"}) .with_example({"SELECT basename('foo/bar')"}) .with_example({"SELECT basename('foo/bar/')"}) .with_example({"SELECT basename('')"}) .with_example({"SELECT basename('foo\\bar')"}) .with_example({"SELECT basename('foobar')"}) .with_example({"SELECT basename('/')"}) ), sqlite_func_adapter::builder( help_text("dirname", "Extract the directory portion of a pathname.") .sql_function() .with_parameter({"path", "The path"}) .with_example({"SELECT dirname('foo/bar')"}) .with_example({"SELECT dirname('/foo/bar')"}) .with_example({"SELECT dirname('/bar')"}) .with_example({"SELECT dirname('foo\\bar')"}) .with_example({"SELECT dirname('')"}) ), sqlite_func_adapter::builder( help_text("joinpath", "Join components of a path together.") .sql_function() .with_parameter(help_text("path", "One or more path components to join together. " "If an argument starts with a forward or backward slash, it will be considered " "an absolute path and any preceding elements will be ignored.") .one_or_more()) .with_example({"SELECT joinpath('foo', 'bar')"}) .with_example({"SELECT joinpath('', 'foo', 'bar')"}) .with_example({"SELECT joinpath('/', 'foo', 'bar')"}) .with_example({"SELECT joinpath('/', 'foo', '/bar')"}) ), /* * TODO: add other functions like readlink, normpath, ... */ { NULL } }; *basic_funcs = fs_funcs; *agg_funcs = NULL; return SQLITE_OK; } lnav-0.8.2/src/grep_highlighter.hh000664 000765 000024 00000004407 13044377034 017370 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __grep_highlighter_hh #define __grep_highlighter_hh #include #include #include "grep_proc.hh" #include "textview_curses.hh" class grep_highlighter { public: grep_highlighter(std::unique_ptr &gp, std::string hl_name, textview_curses::highlight_map_t &hl_map) : gh_grep_proc(std::move(gp)), gh_hl_name(hl_name), gh_hl_map(hl_map) { }; ~grep_highlighter() { this->gh_hl_map.erase(this->gh_hl_map.find(this->gh_hl_name)); }; grep_proc *get_grep_proc() { return this->gh_grep_proc.get(); }; private: std::unique_ptr gh_grep_proc; std::string gh_hl_name; textview_curses::highlight_map_t &gh_hl_map; }; #endif lnav-0.8.2/src/grep_proc.cc000664 000765 000024 00000025776 13071442105 016027 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file grep_proc.cc */ #include "config.h" #include #include #include #include #include #include #include #include #include "lnav_log.hh" #include "lnav_util.hh" #include "grep_proc.hh" #include "time_T.hh" using namespace std; grep_proc::grep_proc(pcre *code, grep_proc_source &gps) : gp_pcre(code), gp_code(code), gp_source(gps), gp_pipe_offset(0), gp_child(-1), gp_child_started(false), gp_last_line(0), gp_sink(NULL), gp_control(NULL) { require(this->invariant()); } grep_proc::~grep_proc() { this->gp_queue.clear(); this->cleanup(); } void grep_proc::handle_match(int line, string &line_value, int off, int *matches, int count) { int lpc; if (off == 0) { fprintf(stdout, "%d\n", line); } fprintf(stdout, "[%d:%d]\n", matches[0], matches[1]); for (lpc = 1; lpc < count; lpc++) { fprintf(stdout, "(%d:%d)", matches[lpc * 2], matches[lpc * 2 + 1]); fwrite(&(line_value.c_str()[matches[lpc * 2]]), 1, matches[lpc * 2 + 1] - matches[lpc * 2], stdout); fputc('\n', stdout); } } void grep_proc::start(void) { require(this->invariant()); if (this->gp_child_started || this->gp_queue.empty()) { return; } auto_pipe in_pipe(STDIN_FILENO); auto_pipe out_pipe(STDOUT_FILENO); auto_pipe err_pipe(STDERR_FILENO); /* Get ahold of some pipes for stdout and stderr. */ if (out_pipe.open() < 0) { throw error(errno); } if (err_pipe.open() < 0) { throw error(errno); } if ((this->gp_child = fork()) < 0) { throw error(errno); } in_pipe.after_fork(this->gp_child); out_pipe.after_fork(this->gp_child); err_pipe.after_fork(this->gp_child); if (this->gp_child != 0) { log_perror(fcntl(out_pipe.read_end(), F_SETFL, O_NONBLOCK)); log_perror(fcntl(out_pipe.read_end(), F_SETFD, 1)); this->gp_line_buffer.set_fd(out_pipe.read_end()); log_perror(fcntl(err_pipe.read_end(), F_SETFL, O_NONBLOCK)); log_perror(fcntl(err_pipe.read_end(), F_SETFD, 1)); require(this->gp_err_pipe.get() == -1); this->gp_err_pipe = err_pipe.read_end(); this->gp_child_started = true; this->gp_queue.clear(); return; } /* In the child... */ /* * Restore the default signal handlers so we don't hang around * forever if there is a problem. */ signal(SIGINT, SIG_DFL); signal(SIGTERM, SIG_DFL); this->child_init(); this->child_loop(); _exit(0); } void grep_proc::child_loop(void) { char outbuf[BUFSIZ * 2]; string line_value; stdout = fdopen(STDOUT_FILENO, "w"); /* Make sure buffering is on, not sure of the state in the parent. */ if (setvbuf(stdout, outbuf, _IOFBF, BUFSIZ * 2) < 0) { perror("setvbuf"); } line_value.reserve(BUFSIZ * 2); while (!this->gp_queue.empty()) { grep_line_t start_line = this->gp_queue.front().first; grep_line_t stop_line = this->gp_queue.front().second; bool done = false; int line; this->gp_queue.pop_front(); if (start_line == -1) { start_line = this->gp_highest_line; } for (line = start_line; (stop_line == -1 || line < stop_line) && !done; line++) { line_value.clear(); done = !this->gp_source.grep_value_for_line(line, line_value); if (!done) { pcre_context_static<128> pc; pcre_input pi(line_value); while (this->gp_pcre.match(pc, pi)) { pcre_context::iterator pc_iter; pcre_context::capture_t *m; if (pi.pi_offset == 0) { fprintf(stdout, "%d\n", line); } m = pc.all(); fprintf(stdout, "[%d:%d]\n", m->c_begin, m->c_end); for (pc_iter = pc.begin(); pc_iter != pc.end(); pc_iter++) { if (!pc_iter->is_valid()) { continue; } fprintf(stdout, "(%d:%d)", pc_iter->c_begin, pc_iter->c_end); /* If the capture was conditional, pcre will return a -1 * here. */ if (pc_iter->c_begin >= 0) { fwrite(pi.get_substr_start(pc_iter), 1, pc_iter->length(), stdout); } fputc('\n', stdout); } fprintf(stdout, "/\n"); } } if (((line + 1) % 10000) == 0) { /* Periodically flush the buffer so the parent sees progress */ this->child_batch(); } } if (stop_line == -1) { // When scanning to the end of the source, we need to return the // highest line that was seen so that the next request that // continues from the end works properly. fprintf(stdout, "h%d\n", line - 1); } this->child_term(); } } void grep_proc::cleanup(void) { if (this->gp_child != -1 && this->gp_child != 0) { int status = 0; kill(this->gp_child, SIGTERM); while (waitpid(this->gp_child, &status, 0) < 0 && (errno == EINTR)) { ; } require(!WIFSIGNALED(status) || WTERMSIG(status) != SIGABRT); this->gp_child = -1; this->gp_child_started = false; if (this->gp_sink) { this->gp_sink->grep_end(*this); } } if (this->gp_err_pipe != -1) { this->gp_err_pipe.reset(); } this->gp_pipe_offset = 0; this->gp_line_buffer.reset(); ensure(this->invariant()); if (!this->gp_queue.empty()) { this->start(); } } void grep_proc::dispatch_line(char *line) { int start, end, capture_start; require(line != NULL); if (sscanf(line, "h%d", this->gp_highest_line.out()) == 1) { } else if (sscanf(line, "%d", this->gp_last_line.out()) == 1) { /* Starting a new line with matches. */ ensure(this->gp_last_line >= 0); } else if (sscanf(line, "[%d:%d]", &start, &end) == 2) { require(start >= 0); require(end >= 0); /* Pass the match offsets to the sink delegate. */ if (this->gp_sink != NULL) { this->gp_sink->grep_match(*this, this->gp_last_line, start, end); } } else if (sscanf(line, "(%d:%d)%n", &start, &end, &capture_start) == 2) { require(start == -1 || start >= 0); require(end >= 0); /* Pass the captured strings to the sink delegate. */ if (this->gp_sink != NULL) { this->gp_sink->grep_capture(*this, this->gp_last_line, start, end, start < 0 ? NULL : &line[capture_start]); } } else if (line[0] == '/') { if (this->gp_sink != NULL) { this->gp_sink->grep_match_end(*this, this->gp_last_line); } } else { log_error("bad line from child -- %s", line); } } void grep_proc::check_poll_set(const std::vector &pollfds) { require(this->invariant()); if (this->gp_err_pipe != -1 && pollfd_ready(pollfds, this->gp_err_pipe)) { char buffer[1024 + 1]; ssize_t rc; rc = read(this->gp_err_pipe, buffer, sizeof(buffer) - 1); if (rc > 0) { static const char *PREFIX = ": "; buffer[rc] = '\0'; if (strncmp(buffer, PREFIX, strlen(PREFIX)) == 0) { char *lf; if ((lf = strchr(buffer, '\n')) != NULL) { *lf = '\0'; } if (this->gp_control != NULL) { this->gp_control->grep_error(&buffer[strlen(PREFIX)]); } } } else if (rc == 0) { this->gp_err_pipe.reset(); } } if (this->gp_line_buffer.get_fd() != -1 && pollfd_ready(pollfds, this->gp_line_buffer.get_fd())) { try { static const int MAX_LOOPS = 100; int loop_count = 0; line_value lv; while ((loop_count < MAX_LOOPS) && (this->gp_line_buffer.read_line(this->gp_pipe_offset, lv))) { lv.terminate(); this->dispatch_line(lv.lv_start); loop_count += 1; } if (this->gp_sink != NULL) { this->gp_sink->grep_end_batch(*this); } if ((off_t) this->gp_line_buffer.get_file_size() == this->gp_pipe_offset) { this->cleanup(); } } catch (line_buffer::error & e) { this->cleanup(); } } ensure(this->invariant()); } lnav-0.8.2/src/grep_proc.hh000664 000765 000024 00000023643 12511372231 016030 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file grep_proc.hh */ #ifndef __grep_proc_hh #define __grep_proc_hh #include "config.h" #include #include #include #include #ifdef HAVE_PCRE_H #include #elif HAVE_PCRE_PCRE_H #include #endif #include #include #include #include #include "pcrepp.hh" #include "auto_fd.hh" #include "auto_mem.hh" #include "lnav_log.hh" #include "strong_int.hh" #include "line_buffer.hh" /** Strongly-typed integer for matched line numbers. */ STRONG_INT_TYPE(int, grep_line); class grep_proc; /** * Data source for lines to be searched using a grep_proc. */ class grep_proc_source { public: virtual ~grep_proc_source() { }; /** * Get the value for a particular line in the source. * * @param line The line to retrieve. * @param value_out The destination for the line value. */ virtual bool grep_value_for_line(int line, std::string &value_out) = 0; }; /** * Delegate interface for control messages from the grep_proc. */ class grep_proc_control { public: virtual ~grep_proc_control() { }; /** @param msg The error encountered while attempting the grep. */ virtual void grep_error(std::string msg) { }; }; /** * Sink for matches produced by a grep_proc instance. */ class grep_proc_sink { public: virtual ~grep_proc_sink() { }; /** Called at the start of a new grep run. */ virtual void grep_begin(grep_proc &gp) { }; /** Called periodically between grep_begin and grep_end. */ virtual void grep_end_batch(grep_proc &gp) { }; /** Called at the end of a grep run. */ virtual void grep_end(grep_proc &gp) { }; /** * Called when a match is found on 'line' and between [start, end). * * @param line The line number that matched. * @param start The offset within the line where the match begins. * @param end The offset of the character after the last character in the * match. */ virtual void grep_match(grep_proc &gp, grep_line_t line, int start, int end) = 0; /** * Called for each captured substring in the line. * * @param line The line number that matched. * @param start The offset within the line where the capture begins. * @param end The offset of the character after the last character in the * capture. * @param capture The captured substring itself. */ virtual void grep_capture(grep_proc &gp, grep_line_t line, int start, int end, char *capture) { }; virtual void grep_match_end(grep_proc &gp, grep_line_t line) { }; }; /** * "Grep" that runs in a separate process so it doesn't stall user-interaction. * This class manages the child process and any interactions between the parent * and child. The source data to be matched comes from the grep_proc_source * delegate and the results are sent to the grep_proc_sink delegate in the * parent process. * * Note: The "grep" executable is not actually used, instead we use the pcre(3) * library directly. */ class grep_proc { public: class error : public std::exception { public: error(int err) : e_err(err) { }; int e_err; }; /** * Construct a grep_proc object. You must call the start() method * to fork off the child process and begin processing. * * @param code The pcre code to run over the lines of input. * @param gps The source of the data to match. */ grep_proc(pcre *code, grep_proc_source &gps); virtual ~grep_proc(); /** @return The code passed in to the constructor. */ pcre *get_code() { return this->gp_code; }; /** @param gpd The sink to send resuls to. */ void set_sink(grep_proc_sink *gpd) { this->gp_sink = gpd; this->reset(); }; void reset() { if (this->gp_sink != NULL) { this->gp_sink->grep_begin(*this); } }; void invalidate() { this->cleanup(); }; /** @param gpd The sink to send results to. */ void set_control(grep_proc_control *gpc) { this->gp_control = gpc; }; /** @return The sink to send resuls to. */ grep_proc_sink *get_sink() { return this->gp_sink; }; /** * Queue a request to search the input between the given line numbers. * * @param start The line number to start the search at. * @param stop The line number to stop the search at or -1 to read until * the end-of-file. */ void queue_request(grep_line_t start = grep_line_t(0), grep_line_t stop = grep_line_t(-1)) { require(start != -1 || stop == -1); require(stop == -1 || start < stop); this->gp_queue.push_back(std::make_pair(start, stop)); }; /** * Start the search requests that have been queued up with queue_request. */ void start(void); void update_poll_set(std::vector &pollfds) { if (this->gp_line_buffer.get_fd() != -1) { pollfds.push_back((struct pollfd) { this->gp_line_buffer.get_fd(), POLLIN, 0 }); } if (this->gp_err_pipe != -1) { pollfds.push_back((struct pollfd) { this->gp_err_pipe, POLLIN, 0 }); } }; /** * Check the fd_set to see if there is any new data to be processed. * * @param ready_rfds The set of ready-to-read file descriptors. */ void check_poll_set(const std::vector &pollfds); /** Check the invariants for this object. */ bool invariant(void) { require(this->gp_code != NULL); if (this->gp_child_started) { require(this->gp_child > 0); require(this->gp_line_buffer.get_fd() != -1); } else { require(this->gp_pipe_offset == 0); /* require(this->gp_child == -1); XXX doesnt work with static destr */ require(this->gp_line_buffer.get_fd() == -1); } return true; }; protected: /** * Dispatch a line received from the child. */ void dispatch_line(char *line); /** * Free any resources used by the object and make sure the child has been * terminated. */ void cleanup(void); void child_loop(void); virtual void child_init(void) { }; virtual void child_batch(void) { fflush(stdout); }; virtual void child_term(void) { fflush(stdout); }; virtual void handle_match(int line, std::string &line_value, int off, int *matches, int count); pcrepp gp_pcre; pcre * gp_code; /*< The compiled pattern. */ grep_proc_source & gp_source; /*< The data source delegate. */ auto_fd gp_err_pipe; /*< Standard error from the child. */ line_buffer gp_line_buffer; /*< Standard out from the child. */ off_t gp_pipe_offset; pid_t gp_child; /*< * The child's pid or zero in the * child. */ bool gp_child_started; /*< True if the child was start()'d. */ /** The queue of search requests. */ std::deque > gp_queue; grep_line_t gp_last_line; /*< * The last line number received from * the child. For multiple matches, * the line number is only sent once. */ grep_line_t gp_highest_line; /*< The highest numbered line processed * by the grep child process. This * value is used when the start line * for a queued request is -1. */ grep_proc_sink * gp_sink; /*< The sink delegate. */ grep_proc_control *gp_control; /*< The control delegate. */ }; #endif lnav-0.8.2/src/help.hh000664 000765 000024 00000003405 12477462531 015010 0ustar00stackstaff000000 000000 /** * Copyright (c) 2007-2012, Timothy Stack * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of Timothy Stack nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @file help.hh */ #ifndef __help_hh #define __help_hh extern "C" { /** * The help message text. The value for this comes from the "help.txt" file, * which gets linked into the executable by the Makefile. */ extern const char help_txt[]; } #endif lnav-0.8.2/src/help.txt000664 000765 000024 00000116774 13072367634 015246 0ustar00stackstaff000000 000000 lnav - A fancy log file viewer DESCRIPTION =========== The log file navigator, lnav, is an enhanced log file viewer that takes advantage of any semantic information that can be gleaned from the files being viewed, such as timestamps and log levels. Using this extra semantic information, lnav can do things like interleaving messages from different files, generate histograms of messages over time, and providing hotkeys for navigating through the file. It is hoped that these features will allow the user to quickly and efficiently zero in on problems. OPENING PATHS/URLs ================== The main arguments to lnav are the files, directories, glob patterns, or URLs to be viewed. If no arguments are given, the default syslog file for your system will be opened. These arguments will be polled periodically so that any new data or files will be automatically loaded. If a previously loaded file is removed or replaced, it will be closed and the replacement opened. Note: When opening SFTP URLs, if the password is not provided for the host, the SSH agent can be used to do authentication. OPTIONS ======= Lnav takes a list of files to view and/or you can use the flag arguments to load well-known log files, such as the syslog or apache log files. The flag arguments are: -a Load all of the most recent log file types. -r Load older rotated log files as well. When using the flag arguments, lnav will look for the files relative to the current directory and its parent directories. In other words, if you are working within a directory that has the well-known log files, those will be preferred over any others. Any files given on the command-line are scanned to determine their log file format and to create an index for each line in the file. You do not have to manually specify the log file format. The currently supported formats are: syslog, apache, strace, tcsh history, and generic log files with timestamps. Lnav will also display data piped in on the standard input. The following options are available when doing so: -t Prepend timestamps to the lines of data being read in on the standard input. -w file Write the contents of the standard input to this file. To automatically execute queries or lnav commands after the files have been loaded, you can use the following options: -c cmd A command, query, or file to execute. The first character determines the type of operation: a colon is used for the built-in commands; a semi-colon for SQL queries; and a pipe symbol (|) for executing a file containing other commands. For example, to open the file "foo.log" and go to the tenth line in the file, you can do: lnav -c ':goto 10' foo.log This option can be given multiple times to execute multiple operations in sequence. -f file A file that contains commands, queries, or files to execute. This option is a shortcut for "-c '|file'". You can use a dash (-) to execute commands from the standard input. To execute commands/queries without the opening the interactive text UI, you can pass the '-n' option. This combination of options allows you to write scripts for processing logs with lnav. For example, to get a list of IP addresses that dhclient has bound to in CSV format: #! /usr/bin/lnav -nf # Usage: dhcp_ip.lnav /var/log/messages # Only include lines that look like: # Apr 29 00:31:56 example-centos5 dhclient: bound to 10.1.10.103 -- renewal in 9938 seconds. :filter-in dhclient: bound to # The log message parser will extract the IP address as col_0, so we # select that and alias it to "dhcp_ip". ;select distinct col_0 as dhcp_ip from logline; # Finally, write the results of the query to stdout. :write-csv-to - DISPLAY ======= The main part of the display shows the log lines from the files interleaved based on time-of-day. New lines are automatically loaded as they are appended to the files and, if you are viewing the bottom of the files, lnav will scroll down to display the new lines, much like 'tail -f'. On color displays, the lines will be highlighted as follows: * Errors will be colored in red; * warnings will be yellow; * boundaries between days will be underlined; and * various color highlights will be applied to: IP addresses, SQL keywords, XML tags, file and line numbers in Java backtraces, and quoted strings. To give you an idea of where you are spatially, the right side of the display has a proportionally sized 'scroll bar' that indicates your current position in the files. The scroll bar will also show areas of the file where warnings or errors are detected by coloring the bar yellow or red, respectively. Tick marks will also be added to the left and right hand side of the bar, for search hits and bookmarks. When multiple files are open, a bar on the left side is color coded and broken up to indicate which messages are from the same file. When at the bottom of the log view, a summary line will be displayed on the right-hand-side to give you some more information about your logs, including: how long ago the last message was generated, the number of log files, the error rate, and how much time the logs cover. The error rate display shows the errors-per-minute over the last five minutes. A bar chart is also overlaid on the "Error rate" label to show the error rate over the past ten seconds. For example, if there have not been many errors in the past five minutes and there is a sudden spike, the bar chart will fill up completely. But, if there has been a steady stream of errors, then the chart will only partially fill based on the recent error frequency. Above and below the main body are status lines that display: * the current time; * the name of the file the top line was pulled from; * the log format for the top line; * the current view; * the line number for the top line in the display; * the current search hit and the total number of hits; * the number of lines not displayed because of filtering. Finally, the last line on the display is where you can enter search patterns and execute internal commands, such as converting a unix-timestamp into a human-readable date. The command-line is implemented using the readline library, so the usual set of keyboard shortcuts are available. Most commands and searches also support tab-completion. The body of the display is also used to display other content, such as: the help file, histograms of the log messages over time, and SQL results. The views are organized into a stack so that any time you activate a new view with a key press or command, the new view is pushed onto the stack. Pressing the same key again will pop the view off of the stack and return you to the previous view. Note that you can always use 'q' to pop the top view off of the stack. KEY BINDINGS ============ Views ----- ? View/leave this help message. q Leave the current view or quit the program when in the log file view. Q Similar to 'q', except it will try to sync the top time between the current and former views. For example, when leaving the spectrogram view with 'Q', the top time in that view will be matched to the top time in the log view. a/A Restore the view that was previously popped with 'q/Q'. The 'A' hotkey will try to match the top times between the two views. X Close the current text file or log file. Spatial Navigation ------------------ g/home Move to the top of the file. G/end Move to the end of the file. If the view is already at the end, it will move to the last line. space/pgdn Move down a page. b/bs/pgup Move up a page. j/cr/down-arrow Move down a line. k/up-arrow Move up a line. h/left-arrow Move to the left. l/right-arrow Move to the right. H/Shift+left Move to the left by a smaller increment. L/Shift+right Move to the right by a smaller increment. e/E Move to the next/previous error. w/W Move to the next/previous warning. n/N Move to the next/previous search hit. When pressed repeatedly within a short time, the view will move at least a full page at a time instead of moving to the next hit. f/F Move to the next/previous file. In the log view, this moves to the next line from a different file. In the text view, this rotates the view to the next file. >/< Move horizontally to the next/previous search hit. o/O Move forward/backward to the log message with a matching 'operation ID' (opid) field. u/U Move forward/backward through any user bookmarks you have added using the 'm' key. This hotkey will also jump to the start of any log partitions that have been created with the 'partition-name' command. y/Y Move forward/backward through the log view based on the "log_line" column in the SQL result view. s/S Move to the next/previous "slow down" in the log message rate. A slow down is detected by measuring how quickly the message rate has changed over the previous several messages. For example, if one message is logged every second for five seconds and then the last message arrives five seconds later, the last message will be highlighted as a slow down. Chronological Navigation ------------------------ d/D Move forward/backward 24 hours from the current position in the log file. 1-6/Shift 1-6 Move to the next/previous n'th ten minute of the hour. For example, '4' would move to the first log line in the fortieth minute of the current hour in the log. And, '6' would move to the next hour boundary. 0/Shift 0 Move to the next/previous day boundary. r/R Move forward/backward based on the relative time that was last used with the 'goto' command. For example, executing ':goto a minute later' will move the log view forward a minute and then pressing 'r' will move it forward a minute again. Pressing 'R' will then move the view in the opposite direction, so backwards a minute. Bookmarks --------- m Mark/unmark the line at the top of the display. The line will be highlighted with reverse video to indicate that it is a user bookmark. You can use the 'u' hotkey to iterate through marks you have added. M Mark/unmark all the lines between the top of the display and the last line marked/unmarked. J Mark/unmark the next line after the previously marked line. K Like 'J' except it toggles the mark on the previous line. c Copy the marked text to the X11 selection buffer or OS X clipboard. C Clear all marked lines. Display options --------------- P Switch to/from the pretty-printed view of the log or text files currently displayed. In this view, structured data, such as XML, will be reformatted to make it easier to read. t Switch to/from the text file view. The text file view is for any files that are not recognized as log files. Ctrl-L (Lo-fi mode) Exit screen-mode and write the displayed log lines in plain text to the terminal until a key is pressed. Useful for copying long lines from the terminal without picking up any of the extra decorations. T Toggle the display of the "elapsed time" column that shows the time elapsed since the beginning of the logs or the offset from the previous bookmark. Sharp changes in the message rate are highlighted by coloring the separator between the time column and the log message. A red highlight means the message rate has slowed down and green means it has sped up. You can use the "s/S" hotkeys to scan through the slow downs. i View/leave a histogram of the log messages over time. The histogram counts the number of displayed log lines for each bucket of time. The bars are layed out horizontally with colored segments representing the different log levels. You can use the 'z' hotkey to change the size of the time buckets (e.g. ten minutes, one hour, one day). I Switch between the log and histogram views while keeping the time displayed at the top of each view in sync. For example, if the top line in the log view is "11:40", hitting 'I' will switch to the histogram view and scrolled to display "11:00" at the top (if the zoom level is hours). z/Shift Z Zoom in or out one step in the histogram view. v Switch to/from the SQL result view. V Switch between the log and SQL result views while keeping the top line number in the log view in sync with the log_line column in the SQL view. For example, doing a query that selects for "log_idle_msecs" and "log_line", you can move the top of the SQL view to a line and hit 'V' to switch to the log view and move to the line number that was selected in the "log_line" column. If there is no "log_line" column, lnav will find the first column with a timestamp and move to corresponding time in the log view. TAB/Shift+TAB In the SQL result view, cycle through the columns that are graphed. Initially, all number values are displayed in a stacked graph. Pressing TAB will change the display to only graph the first column. Repeatedly pressing TAB will cycle through the columns until they are all graphed again. p In the log view: enable or disable the display of the fields that the log message parser knows about or has discovered. This overlay is temporarily enabled when the semicolon key (;) is pressed so that it is easier to write queries. In the DB view: enable or disable the display of values in columns containing JSON-encoded values in the top row. The overlay will display the JSON-Pointer reference and value for all fields in the JSON data. CTRL-W Toggle word-wrapping. CTRL-P Show/hide the data preview panel that may be opened when entering commands or SQL queries. x Toggle the hiding of log message fields. The hidden fields will be replaced with three bullets and highlighted in yellow. F2 Toggle mouse support. Query ----- / Start a search for the given regular expression. The search is live, so when there is a pause in typing, the currently running search will be canceled and a new one started. History is maintained for your searches so you can rerun them easily. Words that are currently displayed are also available for tab-completion, so you can easily search for values without needing to copy-and-paste the string. If there is an error encountered while trying to interpret the expression, the error will be displayed in red on the status line. While the search is active, the 'hits' field in the status line will be green, when finished it will turn back to black. Note: The regular expression format used by is PCRE (Perl-Compatible Regular Expressions). For example, if you wanted to search for ethernet device names, regardless of their ID number, you can type: eth\d+ You can find more information about Perl regular expressions at: http://perldoc.perl.org/perlre.html If the search string is not valid PCRE, a search is done for the exact string instead of doing a regex search. : Execute an internal command. The commands are listed below. History is also supported in this context as well as tab-completion for commands and some arguments. The result of the command replaces the command you typed. ; Execute an SQL query. Most supported log file formats provide a sqlite virtual table backend that can be used in queries. See the SQL section below for more information. |