Implement pcre2grep and its test.
This commit is contained in:
parent
3d0229c097
commit
7854bf34b3
|
@ -0,0 +1,571 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Run pcre2grep tests. The assumption is that the PCRE tests check the library
|
||||||
|
# itself. What we are checking here is the file handling and options that are
|
||||||
|
# supported by pcre2grep. This script must be run in the build directory.
|
||||||
|
|
||||||
|
# Set the C locale, so that sort(1) behaves predictably.
|
||||||
|
|
||||||
|
LC_ALL=C
|
||||||
|
export LC_ALL
|
||||||
|
|
||||||
|
# Remove any non-default colouring and aliases that the caller may have set.
|
||||||
|
|
||||||
|
unset PCRE2GREP_COLOUR PCRE2GREP_COLOR
|
||||||
|
unset cp ls mv rm
|
||||||
|
|
||||||
|
# Remember the current (build) directory, set the program to be tested, and
|
||||||
|
# valgrind settings when requested.
|
||||||
|
|
||||||
|
builddir=`pwd`
|
||||||
|
pcre2grep=$builddir/pcre2grep
|
||||||
|
|
||||||
|
valgrind=
|
||||||
|
while [ $# -gt 0 ] ; do
|
||||||
|
case $1 in
|
||||||
|
valgrind) valgrind="valgrind -q --leak-check=no --smc-check=all";;
|
||||||
|
*) echo "RunGrepTest: Unknown argument $1"; exit 1;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
pcre2grep_version=`$pcre2grep -V`
|
||||||
|
if [ "$valgrind" = "" ] ; then
|
||||||
|
echo "Testing $pcre2grep_version"
|
||||||
|
else
|
||||||
|
echo "Testing $pcre2grep_version using valgrind"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set up a suitable "diff" command for comparison. Some systems have a diff
|
||||||
|
# that lacks a -u option. Try to deal with this; better do the test for the -b
|
||||||
|
# option as well.
|
||||||
|
|
||||||
|
cf="diff"
|
||||||
|
diff -b /dev/null /dev/null 2>/dev/null && cf="diff -b"
|
||||||
|
diff -u /dev/null /dev/null 2>/dev/null && cf="diff -u"
|
||||||
|
diff -ub /dev/null /dev/null 2>/dev/null && cf="diff -ub"
|
||||||
|
|
||||||
|
# If this test is being run from "make check", $srcdir will be set. If not, set
|
||||||
|
# it to the current or parent directory, whichever one contains the test data.
|
||||||
|
# Subsequently, we run most of the pcre2grep tests in the source directory so
|
||||||
|
# that the file names in the output are always the same.
|
||||||
|
|
||||||
|
if [ -z "$srcdir" -o ! -d "$srcdir/testdata" ] ; then
|
||||||
|
if [ -d "./testdata" ] ; then
|
||||||
|
srcdir=.
|
||||||
|
elif [ -d "../testdata" ] ; then
|
||||||
|
srcdir=..
|
||||||
|
else
|
||||||
|
echo "Cannot find the testdata directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for the availability of UTF-8 support
|
||||||
|
|
||||||
|
./pcre2test -C utf >/dev/null
|
||||||
|
utf8=$?
|
||||||
|
|
||||||
|
echo "Testing pcre2grep main features"
|
||||||
|
|
||||||
|
echo "---------------------------- Test 1 ------------------------------" >testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 2 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep '^PATTERN' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 3 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -in PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 4 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -ic PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 5 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -in PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 6 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -inh PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 7 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -il PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 8 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -l PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 9 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -q PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 10 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 11 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -vn pattern ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 12 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -ix pattern ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 13 -----------------------------" >>testtrygrep
|
||||||
|
echo seventeen >testtemp1grep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -f./testdata/greplist -f $builddir/testtemp1grep ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 14 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -w pat ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 15 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep 'abc^*' ./testdata/grepinput) 2>>testtrygrep >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 16 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep abc ./testdata/grepinput ./testdata/nonexistfile) 2>>testtrygrep >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 17 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -M 'the\noutput' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 18 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Mn '(the\noutput|dog\.\n--)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 19 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Mix 'Pattern' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 20 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Mixn 'complete pair\nof lines' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 21 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -nA3 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 22 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -nB3 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 23 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -C3 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 24 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -A9 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 25 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -nB9 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 26 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -A9 -B9 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 27 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -A10 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 28 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -nB10 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 29 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -C12 -B10 'four' ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 30 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -inB3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 31 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -inA3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 32 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L 'fox' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 33 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep 'fox' ./testdata/grepnonexist) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 34 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -s 'fox' ./testdata/grepnonexist) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 35 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include=grepinputx --include grepinput8 --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 36 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include=grepinput --exclude 'grepinput$' --exclude=grepinput8 --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 37 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep '^(a+)*\d' ./testdata/grepinput) >>testtrygrep 2>teststderrgrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
echo "======== STDERR ========" >>testtrygrep
|
||||||
|
cat teststderrgrep >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 38 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep '>\x00<' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 39 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -A1 'before the binary zero' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 40 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -B1 'after the binary zero' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 41 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -B1 -o '\w+ the binary zero' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 42 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -B1 -onH '\w+ the binary zero' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 43 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -on 'before|zero|after' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 44 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -on -e before -ezero -e after ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 45 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -on -f ./testdata/greplist -e binary ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 46 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -eabc -e '(unclosed' ./testdata/grepinput) 2>>testtrygrep >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 47 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Fx "AB.VE
|
||||||
|
elephant" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 48 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -F "AB.VE
|
||||||
|
elephant" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 49 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -F -e DATA -e "AB.VE
|
||||||
|
elephant" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 50 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep "^(abc|def|ghi|jkl)" ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 51 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Mv "brown\sfox" ./testdata/grepinputv) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 52 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --colour=always jumps ./testdata/grepinputv) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 53 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --file-offsets 'before|zero|after' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 54 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --line-offsets 'before|zero|after' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 55 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -f./testdata/greplist --color=always ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 56 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -c lazy ./testdata/grepinput*) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 57 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -c -l lazy ./testdata/grepinput*) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 58 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --regex=PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 59 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --regexp=PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 60 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --regex PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 61 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --regexp PATTERN ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 62 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --match-limit=1000 --no-jit -M 'This is a file(.|\R)*file.' ./testdata/grepinput) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 63 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --recursion-limit=1000 --no-jit -M 'This is a file(.|\R)*file.' ./testdata/grepinput) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 64 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o1 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 65 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o2 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 66 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o3 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 67 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o12 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 68 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --only-matching=2 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 69 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -vn --colour=always pattern ./testdata/grepinputx) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 70 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --color=always -M "triple:\t.*\n\n" ./testdata/grepinput3) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 71 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 72 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --color=always "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 73 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o --colour=always "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 74 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o "^01|02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 75 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --color=always "^01|02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 76 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o --colour=always "^01|02|^03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 77 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o "^01|^02|03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 78 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --color=always "^01|^02|03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 79 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o --colour=always "^01|^02|03" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 80 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o "\b01|\b02" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 81 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --color=always "\\b01|\\b02" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 82 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o --colour=always "\\b01|\\b02" ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 83 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --buffer-size=100 "^a" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 84 -----------------------------" >>testtrygrep
|
||||||
|
echo testdata/grepinput3 >testtemp1grep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --file-list ./testdata/grepfilelist --file-list $builddir/testtemp1grep "fox|complete|t7") >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 85 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --file-list=./testdata/grepfilelist "dolor" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 86 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 87 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep "cat" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 88 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -v "cat" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 89 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -I "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 90 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --binary-files=without-match "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 91 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -a "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 92 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --binary-files=text "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 93 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --text "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 94 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include=grepinputx --include grepinput8 'fox' ./testdata/grepinput* | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 95 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --file-list ./testdata/grepfilelist --exclude grepinputv "fox|complete") >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 96 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include-dir=testdata --exclude '^(?!grepinput)' 'fox' ./test* | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 97 -----------------------------" >>testtrygrep
|
||||||
|
echo "grepinput$" >testtemp1grep
|
||||||
|
echo "grepinput8" >>testtemp1grep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include=grepinput --exclude-from $builddir/testtemp1grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 98 -----------------------------" >>testtrygrep
|
||||||
|
echo "grepinput$" >testtemp1grep
|
||||||
|
echo "grepinput8" >>testtemp1grep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --exclude=grepinput3 --include=grepinput --exclude-from $builddir/testtemp1grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 99 -----------------------------" >>testtrygrep
|
||||||
|
echo "grepinput$" >testtemp1grep
|
||||||
|
echo "grepinput8" >testtemp2grep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -L -r --include grepinput --exclude-from $builddir/testtemp1grep --exclude-from=$builddir/testtemp2grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 100 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -Ho2 --only-matching=1 -o3 '(\w+) binary (\w+)(\.)?' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 101 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -o3 -Ho2 -o12 --only-matching=1 -o3 --colour=always --om-separator='|' '(\w+) binary (\w+)(\.)?' ./testdata/grepinput) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 102 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -n "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 103 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --only-matching "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 104 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -n --only-matching "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 105 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep --colour=always "ipsum|" ./testdata/grepinput3) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test 106 -----------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; echo "a" | $valgrind $pcre2grep -M "|a" ) >>testtrygrep 2>&1
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
|
||||||
|
# Now compare the results.
|
||||||
|
|
||||||
|
$cf $srcdir/testdata/grepoutput testtrygrep
|
||||||
|
if [ $? != 0 ] ; then exit 1; fi
|
||||||
|
|
||||||
|
|
||||||
|
# These tests require UTF-8 support
|
||||||
|
|
||||||
|
if [ $utf8 -ne 0 ] ; then
|
||||||
|
echo "Testing pcre2grep UTF-8 features"
|
||||||
|
|
||||||
|
echo "---------------------------- Test U1 ------------------------------" >testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -n -u --newline=any "^X" ./testdata/grepinput8) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
echo "---------------------------- Test U2 ------------------------------" >>testtrygrep
|
||||||
|
(cd $srcdir; $valgrind $pcre2grep -n -u -C 3 --newline=any "Match" ./testdata/grepinput8) >>testtrygrep
|
||||||
|
echo "RC=$?" >>testtrygrep
|
||||||
|
|
||||||
|
$cf $srcdir/testdata/grepoutput8 testtrygrep
|
||||||
|
if [ $? != 0 ] ; then exit 1; fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Skipping pcre2grep UTF-8 tests: no UTF-8 support in PCRE library"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# We go to some contortions to try to ensure that the tests for the various
|
||||||
|
# newline settings will work in environments where the normal newline sequence
|
||||||
|
# is not \n. Do not use exported files, whose line endings might be changed.
|
||||||
|
# Instead, create an input file using printf so that its contents are exactly
|
||||||
|
# what we want. Note the messy fudge to get printf to write a string that
|
||||||
|
# starts with a hyphen. These tests are run in the build directory.
|
||||||
|
|
||||||
|
echo "Testing pcre2grep newline settings"
|
||||||
|
printf "abc\rdef\r\nghi\njkl" >testNinputgrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N1 ------------------------------\r\n" - >testtrygrep
|
||||||
|
$valgrind $pcre2grep -n -N CR "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N2 ------------------------------\r\n" - >>testtrygrep
|
||||||
|
$valgrind $pcre2grep -n --newline=crlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N3 ------------------------------\r\n" - >>testtrygrep
|
||||||
|
pattern=`printf 'def\rjkl'`
|
||||||
|
$valgrind $pcre2grep -n --newline=cr -F "$pattern" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N4 ------------------------------\r\n" - >>testtrygrep
|
||||||
|
$valgrind $pcre2grep -n --newline=crlf -F -f $srcdir/testdata/greppatN4 testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N5 ------------------------------\r\n" - >>testtrygrep
|
||||||
|
$valgrind $pcre2grep -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
printf "%c--------------------------- Test N6 ------------------------------\r\n" - >>testtrygrep
|
||||||
|
$valgrind $pcre2grep -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
|
$cf $srcdir/testdata/grepoutputN testtrygrep
|
||||||
|
if [ $? != 0 ] ; then exit 1; fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# End
|
30
src/pcre2.h
30
src/pcre2.h
|
@ -67,9 +67,10 @@ don't change existing definitions of PCRE2_EXP_DECL. */
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Have to include stdlib.h and stdint.h to ensure that size_t and uint8_t etc
|
/* Have to include limits.h, stdlib.h and stdint.h to ensure that size_t and
|
||||||
are defined. */
|
uint8_t, UCHAR_MAX, etc are defined. */
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
@ -256,21 +257,22 @@ must all be greater than zero. */
|
||||||
#define PCRE2_CONFIG_UTF 9
|
#define PCRE2_CONFIG_UTF 9
|
||||||
#define PCRE2_CONFIG_VERSION 10
|
#define PCRE2_CONFIG_VERSION 10
|
||||||
|
|
||||||
/* A value that is used to indicate 'unset' in unsigned size_t fields. In
|
/* Types for code units in patterns and subject strings. */
|
||||||
particular, this value is used in the ovector. */
|
|
||||||
|
|
||||||
#define PCRE2_UNSET (~(PCRE2_OFFSET)0)
|
typedef uint8_t PCRE2_UCHAR8;
|
||||||
|
typedef uint16_t PCRE2_UCHAR16;
|
||||||
|
typedef uint32_t PCRE2_UCHAR32;
|
||||||
|
|
||||||
|
typedef const PCRE2_UCHAR8 *PCRE2_SPTR8;
|
||||||
|
typedef const PCRE2_UCHAR16 *PCRE2_SPTR16;
|
||||||
|
typedef const PCRE2_UCHAR32 *PCRE2_SPTR32;
|
||||||
|
|
||||||
/* Types for patterns, subject strings, and offsets. */
|
/* Offsets in the pattern (for errors) and in the subject (after a match) are
|
||||||
|
unsigned 32-bit numbers. We also define a value to indicate "unset" in the
|
||||||
|
offset vector (ovector). */
|
||||||
|
|
||||||
typedef uint8_t PCRE2_UCHAR8;
|
#define PCRE2_OFFSET PCRE2_UCHAR32
|
||||||
typedef uint16_t PCRE2_UCHAR16;
|
#define PCRE2_UNSET (~(PCRE2_OFFSET)0)
|
||||||
typedef uint32_t PCRE2_UCHAR32;
|
|
||||||
typedef uint32_t PCRE2_OFFSET;
|
|
||||||
|
|
||||||
typedef const PCRE2_UCHAR8 *PCRE2_SPTR8;
|
|
||||||
typedef const PCRE2_UCHAR16 *PCRE2_SPTR16;
|
|
||||||
typedef const PCRE2_UCHAR32 *PCRE2_SPTR32;
|
|
||||||
|
|
||||||
/* Generic types for opaque structures and JIT callback functions. These
|
/* Generic types for opaque structures and JIT callback functions. These
|
||||||
declarations are defined in a macro that is expanded for each width later. */
|
declarations are defined in a macro that is expanded for each width later. */
|
||||||
|
|
|
@ -67,9 +67,10 @@ don't change existing definitions of PCRE2_EXP_DECL. */
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Have to include stdlib.h and stdint.h to ensure that size_t and uint8_t etc
|
/* Have to include limits.h, stdlib.h and stdint.h to ensure that size_t and
|
||||||
are defined. */
|
uint8_t, UCHAR_MAX, etc are defined. */
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
@ -256,21 +257,22 @@ must all be greater than zero. */
|
||||||
#define PCRE2_CONFIG_UTF 9
|
#define PCRE2_CONFIG_UTF 9
|
||||||
#define PCRE2_CONFIG_VERSION 10
|
#define PCRE2_CONFIG_VERSION 10
|
||||||
|
|
||||||
/* A value that is used to indicate 'unset' in unsigned size_t fields. In
|
/* Types for code units in patterns and subject strings. */
|
||||||
particular, this value is used in the ovector. */
|
|
||||||
|
|
||||||
#define PCRE2_UNSET (~(PCRE2_OFFSET)0)
|
typedef uint8_t PCRE2_UCHAR8;
|
||||||
|
typedef uint16_t PCRE2_UCHAR16;
|
||||||
|
typedef uint32_t PCRE2_UCHAR32;
|
||||||
|
|
||||||
|
typedef const PCRE2_UCHAR8 *PCRE2_SPTR8;
|
||||||
|
typedef const PCRE2_UCHAR16 *PCRE2_SPTR16;
|
||||||
|
typedef const PCRE2_UCHAR32 *PCRE2_SPTR32;
|
||||||
|
|
||||||
/* Types for patterns, subject strings, and offsets. */
|
/* Offsets in the pattern (for errors) and in the subject (after a match) are
|
||||||
|
unsigned 32-bit numbers. We also define a value to indicate "unset" in the
|
||||||
|
offset vector (ovector). */
|
||||||
|
|
||||||
typedef uint8_t PCRE2_UCHAR8;
|
#define PCRE2_OFFSET PCRE2_UCHAR32
|
||||||
typedef uint16_t PCRE2_UCHAR16;
|
#define PCRE2_UNSET (~(PCRE2_OFFSET)0)
|
||||||
typedef uint32_t PCRE2_UCHAR32;
|
|
||||||
typedef uint32_t PCRE2_OFFSET;
|
|
||||||
|
|
||||||
typedef const PCRE2_UCHAR8 *PCRE2_SPTR8;
|
|
||||||
typedef const PCRE2_UCHAR16 *PCRE2_SPTR16;
|
|
||||||
typedef const PCRE2_UCHAR32 *PCRE2_SPTR32;
|
|
||||||
|
|
||||||
/* Generic types for opaque structures and JIT callback functions. These
|
/* Generic types for opaque structures and JIT callback functions. These
|
||||||
declarations are defined in a macro that is expanded for each width later. */
|
declarations are defined in a macro that is expanded for each width later. */
|
||||||
|
|
|
@ -6782,12 +6782,16 @@ for (;;)
|
||||||
|
|
||||||
/* If it was a capturing subpattern, check to see if it contained any
|
/* If it was a capturing subpattern, check to see if it contained any
|
||||||
recursive back references. If so, we must wrap it in atomic brackets.
|
recursive back references. If so, we must wrap it in atomic brackets.
|
||||||
In any event, remove the block from the chain. */
|
Because we are moving code along, we must ensure that any pending recursive
|
||||||
|
references are updated. In any event, remove the block from the chain. */
|
||||||
|
|
||||||
if (capnumber > 0)
|
if (capnumber > 0)
|
||||||
{
|
{
|
||||||
if (cb->open_caps->flag)
|
if (cb->open_caps->flag)
|
||||||
{
|
{
|
||||||
|
*code = OP_END;
|
||||||
|
adjust_recurse(start_bracket, 1 + LINK_SIZE,
|
||||||
|
(options & PCRE2_UTF) != 0, cb, cb->hwm);
|
||||||
memmove(start_bracket + 1 + LINK_SIZE, start_bracket,
|
memmove(start_bracket + 1 + LINK_SIZE, start_bracket,
|
||||||
CU2BYTES(code - start_bracket));
|
CU2BYTES(code - start_bracket));
|
||||||
*start_bracket = OP_ONCE;
|
*start_bracket = OP_ONCE;
|
||||||
|
@ -7717,11 +7721,18 @@ subpattern. */
|
||||||
|
|
||||||
if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15;
|
if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15;
|
||||||
|
|
||||||
/* Unless disabled, check whether single character iterators can be
|
/* Unless disabled, check whether any single character iterators can be
|
||||||
auto-possessified. The function overwrites the appropriate opcode values. */
|
auto-possessified. The function overwrites the appropriate opcode values, so
|
||||||
|
the type of the pointer must be cast. NOTE: the intermediate variable "temp" is
|
||||||
|
used in this code because at least one compiler gives a warning about loss of
|
||||||
|
"const" attribute if the cast (PCRE2_UCHAR *)codestart is used directly in the
|
||||||
|
function call. */
|
||||||
|
|
||||||
if ((options & PCRE2_NO_AUTO_POSSESS) == 0)
|
if ((options & PCRE2_NO_AUTO_POSSESS) == 0)
|
||||||
PRIV(auto_possessify)((PCRE2_UCHAR *)codestart, utf, &cb);
|
{
|
||||||
|
PCRE2_UCHAR *temp = (PCRE2_UCHAR *)codestart;
|
||||||
|
PRIV(auto_possessify)(temp, utf, &cb);
|
||||||
|
}
|
||||||
|
|
||||||
/* If there were any lookbehind assertions that contained OP_RECURSE
|
/* If there were any lookbehind assertions that contained OP_RECURSE
|
||||||
(recursions or subroutine calls), a flag is set for them to be checked here,
|
(recursions or subroutine calls), a flag is set for them to be checked here,
|
||||||
|
|
|
@ -377,7 +377,8 @@ stateblock *next_active_state, *next_new_state;
|
||||||
|
|
||||||
const uint8_t *ctypes, *lcc, *fcc;
|
const uint8_t *ctypes, *lcc, *fcc;
|
||||||
PCRE2_SPTR ptr;
|
PCRE2_SPTR ptr;
|
||||||
PCRE2_SPTR end_code, first_op;
|
PCRE2_SPTR end_code;
|
||||||
|
PCRE2_SPTR first_op;
|
||||||
|
|
||||||
dfa_recursion_info new_recursive;
|
dfa_recursion_info new_recursive;
|
||||||
|
|
||||||
|
|
|
@ -6332,7 +6332,7 @@ smaller. */
|
||||||
|
|
||||||
mb->match_limit = (mcontext->match_limit < re->limit_match)?
|
mb->match_limit = (mcontext->match_limit < re->limit_match)?
|
||||||
mcontext->match_limit : re->limit_match;
|
mcontext->match_limit : re->limit_match;
|
||||||
mb->match_limit_recursion = (mcontext->recursion_limit > re->limit_recursion)?
|
mb->match_limit_recursion = (mcontext->recursion_limit < re->limit_recursion)?
|
||||||
mcontext->recursion_limit : re->limit_recursion;
|
mcontext->recursion_limit : re->limit_recursion;
|
||||||
|
|
||||||
/* Pointers to the individual character tables */
|
/* Pointers to the individual character tables */
|
||||||
|
@ -6380,7 +6380,7 @@ switch(newline)
|
||||||
|
|
||||||
default: return PCRE2_ERROR_INTERNAL;
|
default: return PCRE2_ERROR_INTERNAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the expression has got more back references than the offsets supplied can
|
/* If the expression has got more back references than the offsets supplied can
|
||||||
hold, we get a temporary chunk of memory to use during the matching. Otherwise,
|
hold, we get a temporary chunk of memory to use during the matching. Otherwise,
|
||||||
we can use the vector supplied. The size of the ovector is three times the
|
we can use the vector supplied. The size of the ovector is three times the
|
||||||
|
|
|
@ -73,7 +73,9 @@ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
|
||||||
pcre2_substring_copy_byname(pcre2_match_data *match_data, PCRE2_SPTR stringname,
|
pcre2_substring_copy_byname(pcre2_match_data *match_data, PCRE2_SPTR stringname,
|
||||||
PCRE2_UCHAR *buffer, size_t size)
|
PCRE2_UCHAR *buffer, size_t size)
|
||||||
{
|
{
|
||||||
PCRE2_SPTR first, last, entry;
|
PCRE2_SPTR first;
|
||||||
|
PCRE2_SPTR last;
|
||||||
|
PCRE2_SPTR entry;
|
||||||
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
||||||
&first, &last);
|
&first, &last);
|
||||||
if (entrysize <= 0) return entrysize;
|
if (entrysize <= 0) return entrysize;
|
||||||
|
@ -153,7 +155,9 @@ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
|
||||||
pcre2_substring_get_byname(pcre2_match_data *match_data,
|
pcre2_substring_get_byname(pcre2_match_data *match_data,
|
||||||
PCRE2_SPTR stringname, PCRE2_UCHAR **stringptr)
|
PCRE2_SPTR stringname, PCRE2_UCHAR **stringptr)
|
||||||
{
|
{
|
||||||
PCRE2_SPTR first, last, entry;
|
PCRE2_SPTR first;
|
||||||
|
PCRE2_SPTR last;
|
||||||
|
PCRE2_SPTR entry;
|
||||||
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
||||||
&first, &last);
|
&first, &last);
|
||||||
if (entrysize <= 0) return entrysize;
|
if (entrysize <= 0) return entrysize;
|
||||||
|
@ -253,7 +257,9 @@ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
|
||||||
pcre2_substring_length_byname(pcre2_match_data *match_data,
|
pcre2_substring_length_byname(pcre2_match_data *match_data,
|
||||||
PCRE2_SPTR stringname)
|
PCRE2_SPTR stringname)
|
||||||
{
|
{
|
||||||
PCRE2_SPTR first, last, entry;
|
PCRE2_SPTR first;
|
||||||
|
PCRE2_SPTR last;
|
||||||
|
PCRE2_SPTR entry;
|
||||||
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
int entrysize = pcre2_substring_nametable_scan(match_data->code, stringname,
|
||||||
&first, &last);
|
&first, &last);
|
||||||
if (entrysize <= 0) return entrysize;
|
if (entrysize <= 0) return entrysize;
|
||||||
|
@ -424,7 +430,9 @@ while (top > bot)
|
||||||
int c = PRIV(strcmp)(stringname, entry + IMM2_SIZE);
|
int c = PRIV(strcmp)(stringname, entry + IMM2_SIZE);
|
||||||
if (c == 0)
|
if (c == 0)
|
||||||
{
|
{
|
||||||
PCRE2_SPTR first, last, lastentry;
|
PCRE2_SPTR first;
|
||||||
|
PCRE2_SPTR last;
|
||||||
|
PCRE2_SPTR lastentry;
|
||||||
if (firstptr == NULL) return GET2(entry, 0);
|
if (firstptr == NULL) return GET2(entry, 0);
|
||||||
lastentry = nametable + entrysize * (code->name_count - 1);
|
lastentry = nametable + entrysize * (code->name_count - 1);
|
||||||
first = last = entry;
|
first = last = entry;
|
||||||
|
|
3247
src/pcre2grep.c
3247
src/pcre2grep.c
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
testdata/grepinputv
|
||||||
|
|
||||||
|
testdata/grepinputx
|
|
@ -0,0 +1,611 @@
|
||||||
|
This is a file of miscellaneous text that is used as test data for checking
|
||||||
|
that the pcregrep command is working correctly. The file must be more than 24K
|
||||||
|
long so that it needs more than a single read() call to process it. New
|
||||||
|
features should be added at the end, because some of the tests involve the
|
||||||
|
output of line numbers, and we don't want these to change.
|
||||||
|
|
||||||
|
PATTERN at the start of a line.
|
||||||
|
In the middle of a line, PATTERN appears.
|
||||||
|
|
||||||
|
This pattern is in lower case.
|
||||||
|
|
||||||
|
Here follows a whole lot of stuff that makes the file over 24K long.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
|
||||||
|
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
||||||
|
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
|
||||||
|
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
|
||||||
|
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
aaaaa0
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccccccccccccccccccccccccccccccccccccccc
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
eeeee
|
||||||
|
aaaaa2
|
||||||
|
ffffffffff
|
||||||
|
|
||||||
|
This is a line before the binary zero.
|
||||||
|
This line contains a binary zero here > |