From 80356b38781db27d081825244ca30d9f3057f2e7 Mon Sep 17 00:00:00 2001 From: surdeus Date: Wed, 1 Feb 2023 02:38:20 +0500 Subject: [PATCH] Trying to embed the gawk. --- license => license.txt | 0 readme => readme.md | 0 src/cmd/goblin/main.go | 4 +- src/tool/awk/csv.md | 387 + src/tool/awk/go.mod | 3 + src/tool/awk/goawk | Bin 0 -> 3680472 bytes src/tool/awk/goawk.go | 394 + src/tool/awk/goawk_test.go | 749 + src/tool/awk/internal/ast/ast.go | 600 + src/tool/awk/internal/ast/specialvars.go | 100 + src/tool/awk/internal/ast/specialvars_test.go | 46 + src/tool/awk/internal/compiler/compiler.go | 1005 + .../awk/internal/compiler/disassembler.go | 495 + .../internal/compiler/disassembler_test.go | 51 + .../awk/internal/compiler/opcode_string.go | 174 + src/tool/awk/internal/compiler/opcodes.go | 180 + src/tool/awk/interp/csvreader_test.go | 392 + src/tool/awk/interp/example_test.go | 177 + src/tool/awk/interp/functions.go | 413 + src/tool/awk/interp/fuzz_test.go | 107 + src/tool/awk/interp/fuzz_unexported_test.go | 75 + src/tool/awk/interp/interp.go | 1095 + src/tool/awk/interp/interp_test.go | 2609 ++ src/tool/awk/interp/io.go | 899 + src/tool/awk/interp/newexecute.go | 176 + src/tool/awk/interp/newexecute_test.go | 163 + src/tool/awk/interp/value.go | 294 + src/tool/awk/interp/vm.go | 1259 + src/tool/awk/lexer/lexer.go | 499 + src/tool/awk/lexer/lexer_test.go | 393 + src/tool/awk/lexer/token.go | 263 + src/tool/awk/license.txt | 21 + src/tool/awk/parser/parser.go | 1048 + src/tool/awk/parser/parser_test.go | 242 + src/tool/awk/parser/resolve.go | 462 + src/tool/awk/parser/toposort.go | 72 + src/tool/awk/parser/toposort_test.go | 100 + src/tool/awk/readme.md | 125 + src/tool/awk/scripts/benchmark.sh | 2 + src/tool/awk/scripts/benchmark_awks.py | 124 + src/tool/awk/scripts/benchstat.sh | 2 + src/tool/awk/scripts/csvbench/count.py | 9 + src/tool/awk/scripts/csvbench/count/main.go | 27 + src/tool/awk/scripts/csvbench/csvbench.sh | 48 + src/tool/awk/scripts/csvbench/write.py | 27 + src/tool/awk/scripts/csvbench/write/main.go | 43 + src/tool/awk/scripts/fuzz_input.sh | 2 + src/tool/awk/scripts/fuzz_source.sh | 2 + src/tool/awk/scripts/make_binaries.sh | 21 + src/tool/awk/testdata/README | 46 + src/tool/awk/testdata/csv/1.csv | 3 + src/tool/awk/testdata/csv/2.csv | 2 + src/tool/awk/testdata/csv/address5.csv | 2 + src/tool/awk/testdata/csv/fields.csv | 2 + src/tool/awk/testdata/csv/nz-schools.csv | 2563 ++ src/tool/awk/testdata/csv/states.csv | 52 + src/tool/awk/testdata/csv/states.psv | 53 + src/tool/awk/testdata/echo | Bin 0 -> 18128 bytes src/tool/awk/testdata/filename/10 | 1 + src/tool/awk/testdata/filename/10x | 1 + src/tool/awk/testdata/foo.td | 37801 ++++++++++++++++ src/tool/awk/testdata/g.1 | 1 + src/tool/awk/testdata/g.2 | 1 + src/tool/awk/testdata/g.3 | 10 + src/tool/awk/testdata/g.4 | 2 + src/tool/awk/testdata/gawk/addcomma.awk | 15 + src/tool/awk/testdata/gawk/addcomma.in | 7 + src/tool/awk/testdata/gawk/addcomma.ok | 7 + src/tool/awk/testdata/gawk/anchgsub.awk | 1 + src/tool/awk/testdata/gawk/anchgsub.in | 1 + src/tool/awk/testdata/gawk/anchgsub.ok | 1 + src/tool/awk/testdata/gawk/anchor.awk | 33 + src/tool/awk/testdata/gawk/anchor.in | 3 + src/tool/awk/testdata/gawk/anchor.ok | 6 + src/tool/awk/testdata/gawk/argarray.awk | 14 + src/tool/awk/testdata/gawk/argarray.in | 1 + src/tool/awk/testdata/gawk/argarray.ok | 6 + src/tool/awk/testdata/gawk/arrayind3.awk | 19 + src/tool/awk/testdata/gawk/arrayind3.ok | 2 + src/tool/awk/testdata/gawk/arrayparm.awk | 21 + src/tool/awk/testdata/gawk/arrayparm.ok | 1 + src/tool/awk/testdata/gawk/arrayprm2.awk | 67 + src/tool/awk/testdata/gawk/arrayprm2.ok | 0 src/tool/awk/testdata/gawk/arrayprm3.awk | 56 + src/tool/awk/testdata/gawk/arrayprm3.ok | 1 + src/tool/awk/testdata/gawk/arrayref.awk | 13 + src/tool/awk/testdata/gawk/arrayref.ok | 2 + src/tool/awk/testdata/gawk/arrymem1.awk | 81 + src/tool/awk/testdata/gawk/arrymem1.ok | 2 + src/tool/awk/testdata/gawk/arryref2.awk | 18 + src/tool/awk/testdata/gawk/arryref2.ok | 3 + src/tool/awk/testdata/gawk/arryref3.awk | 18 + src/tool/awk/testdata/gawk/arryref3.ok | 1 + src/tool/awk/testdata/gawk/arryref4.awk | 17 + src/tool/awk/testdata/gawk/arryref4.ok | 1 + src/tool/awk/testdata/gawk/arryref5.awk | 17 + src/tool/awk/testdata/gawk/arryref5.ok | 1 + src/tool/awk/testdata/gawk/arynasty.awk | 16 + src/tool/awk/testdata/gawk/arynasty.ok | 1 + src/tool/awk/testdata/gawk/aryprm1.awk | 9 + src/tool/awk/testdata/gawk/aryprm1.ok | 1 + src/tool/awk/testdata/gawk/aryprm3.awk | 10 + src/tool/awk/testdata/gawk/aryprm3.ok | 1 + src/tool/awk/testdata/gawk/aryprm4.awk | 7 + src/tool/awk/testdata/gawk/aryprm4.ok | 1 + src/tool/awk/testdata/gawk/aryprm5.awk | 6 + src/tool/awk/testdata/gawk/aryprm5.ok | 1 + src/tool/awk/testdata/gawk/aryprm6.awk | 7 + src/tool/awk/testdata/gawk/aryprm6.ok | 1 + src/tool/awk/testdata/gawk/aryprm7.awk | 6 + src/tool/awk/testdata/gawk/aryprm7.ok | 1 + src/tool/awk/testdata/gawk/aryprm8.awk | 22 + src/tool/awk/testdata/gawk/aryprm8.ok | 2 + src/tool/awk/testdata/gawk/aryprm9.awk | 16 + src/tool/awk/testdata/gawk/aryprm9.ok | 0 src/tool/awk/testdata/gawk/arysubnm.awk | 1 + src/tool/awk/testdata/gawk/arysubnm.ok | 1 + src/tool/awk/testdata/gawk/aryunasgn.awk | 17 + src/tool/awk/testdata/gawk/aryunasgn.ok | 8 + src/tool/awk/testdata/gawk/asgext.awk | 1 + src/tool/awk/testdata/gawk/asgext.in | 3 + src/tool/awk/testdata/gawk/asgext.ok | 6 + src/tool/awk/testdata/gawk/assignnumfield.awk | 1 + src/tool/awk/testdata/gawk/assignnumfield.in | 5 + src/tool/awk/testdata/gawk/assignnumfield.ok | 5 + src/tool/awk/testdata/gawk/back89.awk | 1 + src/tool/awk/testdata/gawk/back89.ok | 1 + src/tool/awk/testdata/gawk/backgsub.awk | 4 + src/tool/awk/testdata/gawk/backgsub.in | 1 + src/tool/awk/testdata/gawk/backgsub.ok | 1 + src/tool/awk/testdata/gawk/badassign1.awk | 1 + src/tool/awk/testdata/gawk/badassign1.ok | 1 + src/tool/awk/testdata/gawk/badbuild.awk | 6 + src/tool/awk/testdata/gawk/badbuild.in | 1 + src/tool/awk/testdata/gawk/badbuild.ok | 1 + src/tool/awk/testdata/gawk/callparam.awk | 6 + src/tool/awk/testdata/gawk/callparam.ok | 1 + src/tool/awk/testdata/gawk/childin.awk | 1 + src/tool/awk/testdata/gawk/childin.in | 1 + src/tool/awk/testdata/gawk/childin.ok | 1 + src/tool/awk/testdata/gawk/clobber.awk | 98 + src/tool/awk/testdata/gawk/clobber.ok | 1 + src/tool/awk/testdata/gawk/closebad.awk | 7 + src/tool/awk/testdata/gawk/closebad.ok | 3 + src/tool/awk/testdata/gawk/compare.awk | 9 + src/tool/awk/testdata/gawk/compare.in | 4 + src/tool/awk/testdata/gawk/compare.ok | 4 + src/tool/awk/testdata/gawk/compare2.awk | 165 + src/tool/awk/testdata/gawk/compare2.ok | 1 + src/tool/awk/testdata/gawk/concat1.awk | 78 + src/tool/awk/testdata/gawk/concat1.in | 4 + src/tool/awk/testdata/gawk/concat1.ok | 4 + src/tool/awk/testdata/gawk/concat2.awk | 8 + src/tool/awk/testdata/gawk/concat2.ok | 12 + src/tool/awk/testdata/gawk/concat3.awk | 1 + src/tool/awk/testdata/gawk/concat3.ok | 2 + src/tool/awk/testdata/gawk/concat4.awk | 9 + src/tool/awk/testdata/gawk/concat4.in | 2 + src/tool/awk/testdata/gawk/concat4.ok | 4 + src/tool/awk/testdata/gawk/concat5.awk | 7 + src/tool/awk/testdata/gawk/concat5.ok | 1 + src/tool/awk/testdata/gawk/convfmt.awk | 10 + src/tool/awk/testdata/gawk/convfmt.ok | 3 + src/tool/awk/testdata/gawk/datanonl.awk | 3 + src/tool/awk/testdata/gawk/datanonl.in | 1 + src/tool/awk/testdata/gawk/datanonl.ok | 1 + src/tool/awk/testdata/gawk/defref.awk | 1 + src/tool/awk/testdata/gawk/defref.ok | 1 + src/tool/awk/testdata/gawk/delargv.awk | 12 + src/tool/awk/testdata/gawk/delargv.ok | 3 + src/tool/awk/testdata/gawk/delarpm2.awk | 95 + src/tool/awk/testdata/gawk/delarpm2.ok | 2 + src/tool/awk/testdata/gawk/delfunc.awk | 7 + src/tool/awk/testdata/gawk/delfunc.ok | 1 + src/tool/awk/testdata/gawk/dfastress.awk | 1 + src/tool/awk/testdata/gawk/dfastress.ok | 1 + src/tool/awk/testdata/gawk/dynlj.awk | 1 + src/tool/awk/testdata/gawk/dynlj.ok | 1 + src/tool/awk/testdata/gawk/eofsplit.awk | 68 + src/tool/awk/testdata/gawk/eofsplit.ok | 0 src/tool/awk/testdata/gawk/exit2.awk | 2 + src/tool/awk/testdata/gawk/exit2.ok | 0 src/tool/awk/testdata/gawk/exitval2.awk | 3 + src/tool/awk/testdata/gawk/exitval2.ok | 1 + src/tool/awk/testdata/gawk/fcall_exit.awk | 24 + src/tool/awk/testdata/gawk/fcall_exit.ok | 1 + src/tool/awk/testdata/gawk/fcall_exit2.awk | 25 + src/tool/awk/testdata/gawk/fcall_exit2.in | 1 + src/tool/awk/testdata/gawk/fcall_exit2.ok | 1 + src/tool/awk/testdata/gawk/fldchg.awk | 8 + src/tool/awk/testdata/gawk/fldchg.in | 1 + src/tool/awk/testdata/gawk/fldchg.ok | 3 + src/tool/awk/testdata/gawk/fldchgnf.awk | 1 + src/tool/awk/testdata/gawk/fldchgnf.in | 1 + src/tool/awk/testdata/gawk/fldchgnf.ok | 2 + src/tool/awk/testdata/gawk/fldterm.awk | 10 + src/tool/awk/testdata/gawk/fldterm.in | 1 + src/tool/awk/testdata/gawk/fldterm.ok | 2 + src/tool/awk/testdata/gawk/fnamedat.awk | 1 + src/tool/awk/testdata/gawk/fnamedat.in | 1 + src/tool/awk/testdata/gawk/fnamedat.ok | 1 + src/tool/awk/testdata/gawk/fnarray.awk | 7 + src/tool/awk/testdata/gawk/fnarray.ok | 1 + src/tool/awk/testdata/gawk/fnarray2.awk | 5 + src/tool/awk/testdata/gawk/fnarray2.in | 1 + src/tool/awk/testdata/gawk/fnarray2.ok | 1 + src/tool/awk/testdata/gawk/fnaryscl.awk | 10 + src/tool/awk/testdata/gawk/fnaryscl.ok | 1 + src/tool/awk/testdata/gawk/fnasgnm.awk | 14 + src/tool/awk/testdata/gawk/fnasgnm.in | 1 + src/tool/awk/testdata/gawk/fnasgnm.ok | 1 + src/tool/awk/testdata/gawk/fnmisc.awk | 13 + src/tool/awk/testdata/gawk/fnmisc.ok | 1 + src/tool/awk/testdata/gawk/forref.awk | 11 + src/tool/awk/testdata/gawk/forref.ok | 3 + src/tool/awk/testdata/gawk/forsimp.awk | 1 + src/tool/awk/testdata/gawk/forsimp.ok | 1 + src/tool/awk/testdata/gawk/fsbs.awk | 2 + src/tool/awk/testdata/gawk/fsbs.in | 1 + src/tool/awk/testdata/gawk/fsbs.ok | 1 + src/tool/awk/testdata/gawk/fsnul1.awk | 2 + src/tool/awk/testdata/gawk/fsnul1.in | Bin 0 -> 6 bytes src/tool/awk/testdata/gawk/fsnul1.ok | 1 + src/tool/awk/testdata/gawk/fsrs.awk | 8 + src/tool/awk/testdata/gawk/fsrs.in | 7 + src/tool/awk/testdata/gawk/fsrs.ok | 5 + src/tool/awk/testdata/gawk/fsspcoln.awk | 42 + src/tool/awk/testdata/gawk/fsspcoln.in | 1 + src/tool/awk/testdata/gawk/fsspcoln.ok | 1 + src/tool/awk/testdata/gawk/fstabplus.awk | 2 + src/tool/awk/testdata/gawk/fstabplus.in | 1 + src/tool/awk/testdata/gawk/fstabplus.ok | 1 + src/tool/awk/testdata/gawk/funsemnl.awk | 3 + src/tool/awk/testdata/gawk/funsemnl.ok | 1 + src/tool/awk/testdata/gawk/funsmnam.awk | 6 + src/tool/awk/testdata/gawk/funsmnam.ok | 1 + src/tool/awk/testdata/gawk/funstack.awk | 981 + src/tool/awk/testdata/gawk/funstack.in | 206 + src/tool/awk/testdata/gawk/funstack.ok | 1 + src/tool/awk/testdata/gawk/getline.awk | 33 + src/tool/awk/testdata/gawk/getline.in | 3 + src/tool/awk/testdata/gawk/getline.ok | 8 + src/tool/awk/testdata/gawk/getline2.awk | 1 + src/tool/awk/testdata/gawk/getline2.in | 2 + src/tool/awk/testdata/gawk/getline2.ok | 2 + src/tool/awk/testdata/gawk/getline3.awk | 7 + src/tool/awk/testdata/gawk/getline3.ok | 1 + src/tool/awk/testdata/gawk/getline4.awk | 1 + src/tool/awk/testdata/gawk/getline4.in | 1 + src/tool/awk/testdata/gawk/getline4.ok | 1 + src/tool/awk/testdata/gawk/getline5.awk | 35 + src/tool/awk/testdata/gawk/getline5.ok | 1 + src/tool/awk/testdata/gawk/getlnbuf.awk | 18 + src/tool/awk/testdata/gawk/getlnbuf.in | 1708 + src/tool/awk/testdata/gawk/getlnbuf.ok | 1708 + src/tool/awk/testdata/gawk/getnr2tb.awk | 111 + src/tool/awk/testdata/gawk/getnr2tb.in | 6 + src/tool/awk/testdata/gawk/getnr2tb.ok | 6 + src/tool/awk/testdata/gawk/getnr2tm.awk | 75 + src/tool/awk/testdata/gawk/getnr2tm.in | 1 + src/tool/awk/testdata/gawk/getnr2tm.ok | 1 + src/tool/awk/testdata/gawk/gsubasgn.awk | 5 + src/tool/awk/testdata/gawk/gsubasgn.ok | 1 + src/tool/awk/testdata/gawk/gsubtest.awk | 9 + src/tool/awk/testdata/gawk/gsubtest.ok | 7 + src/tool/awk/testdata/gawk/gsubtst2.awk | 241 + src/tool/awk/testdata/gawk/gsubtst2.ok | 25 + src/tool/awk/testdata/gawk/gsubtst3.awk | 291 + src/tool/awk/testdata/gawk/gsubtst3.in | 57 + src/tool/awk/testdata/gawk/gsubtst3.ok | 60 + src/tool/awk/testdata/gawk/gsubtst4.awk | 242 + src/tool/awk/testdata/gawk/gsubtst4.ok | 33 + src/tool/awk/testdata/gawk/gsubtst5.awk | 97 + src/tool/awk/testdata/gawk/gsubtst5.in | 1 + src/tool/awk/testdata/gawk/gsubtst5.ok | 1 + src/tool/awk/testdata/gawk/gsubtst6.awk | 24 + src/tool/awk/testdata/gawk/gsubtst6.ok | 1 + src/tool/awk/testdata/gawk/gsubtst7.awk | 92 + src/tool/awk/testdata/gawk/gsubtst7.in | 1 + src/tool/awk/testdata/gawk/gsubtst7.ok | 1 + src/tool/awk/testdata/gawk/gsubtst8.awk | 5 + src/tool/awk/testdata/gawk/gsubtst8.in | 2 + src/tool/awk/testdata/gawk/gsubtst8.ok | 2 + src/tool/awk/testdata/gawk/hex.awk | 22 + src/tool/awk/testdata/gawk/hex.ok | 4 + src/tool/awk/testdata/gawk/hex2.awk | 1 + src/tool/awk/testdata/gawk/hex2.in | 2 + src/tool/awk/testdata/gawk/hex2.ok | 2 + src/tool/awk/testdata/gawk/hsprint.awk | 71 + src/tool/awk/testdata/gawk/hsprint.ok | 66 + src/tool/awk/testdata/gawk/inpref.awk | 9 + src/tool/awk/testdata/gawk/inpref.in | 2 + src/tool/awk/testdata/gawk/inpref.ok | 2 + src/tool/awk/testdata/gawk/inputred.awk | 1 + src/tool/awk/testdata/gawk/inputred.ok | 1 + src/tool/awk/testdata/gawk/intest.awk | 4 + src/tool/awk/testdata/gawk/intest.ok | 1 + src/tool/awk/testdata/gawk/intprec.awk | 1 + src/tool/awk/testdata/gawk/intprec.ok | 1 + src/tool/awk/testdata/gawk/iobug1.awk | 53 + src/tool/awk/testdata/gawk/iobug1.ok | 0 src/tool/awk/testdata/gawk/leaddig.awk | 12 + src/tool/awk/testdata/gawk/leaddig.ok | 1 + src/tool/awk/testdata/gawk/leadnl.awk | 10 + src/tool/awk/testdata/gawk/leadnl.in | 9 + src/tool/awk/testdata/gawk/leadnl.ok | 8 + src/tool/awk/testdata/gawk/litoct.awk | 1 + src/tool/awk/testdata/gawk/litoct.in | 1 + src/tool/awk/testdata/gawk/litoct.ok | 1 + src/tool/awk/testdata/gawk/longsub.awk | 1 + src/tool/awk/testdata/gawk/longsub.in | 1 + src/tool/awk/testdata/gawk/longsub.ok | 1 + src/tool/awk/testdata/gawk/longwrds.awk | 27 + src/tool/awk/testdata/gawk/longwrds.in | 200 + src/tool/awk/testdata/gawk/longwrds.ok | 21 + src/tool/awk/testdata/gawk/manglprm.awk | 41 + src/tool/awk/testdata/gawk/manglprm.in | 1 + src/tool/awk/testdata/gawk/manglprm.ok | 1 + src/tool/awk/testdata/gawk/math.awk | 10 + src/tool/awk/testdata/gawk/math.ok | 6 + src/tool/awk/testdata/gawk/minusstr.awk | 1 + src/tool/awk/testdata/gawk/minusstr.ok | 1 + src/tool/awk/testdata/gawk/mmap8k.awk | 1 + src/tool/awk/testdata/gawk/mmap8k.in | 143 + src/tool/awk/testdata/gawk/mmap8k.ok | 143 + src/tool/awk/testdata/gawk/nasty.awk | 92 + src/tool/awk/testdata/gawk/nasty.ok | 2 + src/tool/awk/testdata/gawk/nasty2.awk | 20 + src/tool/awk/testdata/gawk/nasty2.ok | 2 + src/tool/awk/testdata/gawk/negexp.awk | 1 + src/tool/awk/testdata/gawk/negexp.ok | 1 + src/tool/awk/testdata/gawk/negrange.awk | 7 + src/tool/awk/testdata/gawk/negrange.ok | 7 + src/tool/awk/testdata/gawk/nested.awk | 123 + src/tool/awk/testdata/gawk/nested.in | 1 + src/tool/awk/testdata/gawk/nested.ok | 2 + src/tool/awk/testdata/gawk/nfldstr.awk | 13 + src/tool/awk/testdata/gawk/nfldstr.in | 1 + src/tool/awk/testdata/gawk/nfldstr.ok | 0 src/tool/awk/testdata/gawk/nfloop.awk | 8 + src/tool/awk/testdata/gawk/nfloop.ok | 1 + src/tool/awk/testdata/gawk/nfneg.awk | 1 + src/tool/awk/testdata/gawk/nfneg.ok | 1 + src/tool/awk/testdata/gawk/nfset.awk | 1 + src/tool/awk/testdata/gawk/nfset.in | 5 + src/tool/awk/testdata/gawk/nfset.ok | 5 + src/tool/awk/testdata/gawk/nlfldsep.awk | 2 + src/tool/awk/testdata/gawk/nlfldsep.in | 5 + src/tool/awk/testdata/gawk/nlfldsep.ok | 13 + src/tool/awk/testdata/gawk/nlinstr.awk | 8 + src/tool/awk/testdata/gawk/nlinstr.in | 2 + src/tool/awk/testdata/gawk/nlinstr.ok | 1 + src/tool/awk/testdata/gawk/nlstrina.awk | 77 + src/tool/awk/testdata/gawk/nlstrina.ok | 3 + src/tool/awk/testdata/gawk/noeffect.awk | 10 + src/tool/awk/testdata/gawk/noeffect.ok | 0 src/tool/awk/testdata/gawk/nofmtch.awk | 1 + src/tool/awk/testdata/gawk/nofmtch.ok | 1 + src/tool/awk/testdata/gawk/noloop1.awk | 70 + src/tool/awk/testdata/gawk/noloop1.in | 1 + src/tool/awk/testdata/gawk/noloop1.ok | 0 src/tool/awk/testdata/gawk/noloop2.awk | 70 + src/tool/awk/testdata/gawk/noloop2.in | 1 + src/tool/awk/testdata/gawk/noloop2.ok | 0 src/tool/awk/testdata/gawk/nonl.awk | 1 + src/tool/awk/testdata/gawk/nonl.in | 1 + src/tool/awk/testdata/gawk/nonl.ok | 0 src/tool/awk/testdata/gawk/noparms.awk | 1 + src/tool/awk/testdata/gawk/noparms.ok | 1 + src/tool/awk/testdata/gawk/nulinsrc.awk | Bin 0 -> 3 bytes src/tool/awk/testdata/gawk/nulinsrc.ok | 1 + src/tool/awk/testdata/gawk/nulrsend.awk | 112 + src/tool/awk/testdata/gawk/nulrsend.in | 4 + src/tool/awk/testdata/gawk/nulrsend.ok | 2 + src/tool/awk/testdata/gawk/numindex.awk | 55 + src/tool/awk/testdata/gawk/numindex.in | 4 + src/tool/awk/testdata/gawk/numindex.ok | 1 + src/tool/awk/testdata/gawk/numrange.awk | 5 + src/tool/awk/testdata/gawk/numrange.ok | 2 + src/tool/awk/testdata/gawk/numstr1.awk | 7 + src/tool/awk/testdata/gawk/numstr1.ok | 2 + src/tool/awk/testdata/gawk/numsubstr.awk | 1 + src/tool/awk/testdata/gawk/numsubstr.in | 3 + src/tool/awk/testdata/gawk/numsubstr.ok | 3 + src/tool/awk/testdata/gawk/octsub.awk | 1 + src/tool/awk/testdata/gawk/octsub.ok | 1 + src/tool/awk/testdata/gawk/ofmt.awk | 53 + src/tool/awk/testdata/gawk/ofmt.in | 136 + src/tool/awk/testdata/gawk/ofmt.ok | 6 + src/tool/awk/testdata/gawk/ofmta.awk | 30 + src/tool/awk/testdata/gawk/ofmta.ok | 7 + src/tool/awk/testdata/gawk/ofmtbig.awk | 126 + src/tool/awk/testdata/gawk/ofmtbig.in | 3 + src/tool/awk/testdata/gawk/ofmtbig.ok | 2 + src/tool/awk/testdata/gawk/ofmtfidl.awk | 85 + src/tool/awk/testdata/gawk/ofmtfidl.in | 10 + src/tool/awk/testdata/gawk/ofmtfidl.ok | 10 + src/tool/awk/testdata/gawk/ofmts.awk | 2 + src/tool/awk/testdata/gawk/ofmts.in | 1 + src/tool/awk/testdata/gawk/ofmts.ok | 1 + src/tool/awk/testdata/gawk/ofmtstrnum.awk | 7 + src/tool/awk/testdata/gawk/ofmtstrnum.ok | 2 + src/tool/awk/testdata/gawk/ofs1.awk | 23 + src/tool/awk/testdata/gawk/ofs1.in | 4 + src/tool/awk/testdata/gawk/ofs1.ok | 7 + src/tool/awk/testdata/gawk/onlynl.awk | 2 + src/tool/awk/testdata/gawk/onlynl.in | 4 + src/tool/awk/testdata/gawk/onlynl.ok | 0 src/tool/awk/testdata/gawk/opasnidx.awk | 1 + src/tool/awk/testdata/gawk/opasnidx.ok | 1 + src/tool/awk/testdata/gawk/opasnslf.awk | 6 + src/tool/awk/testdata/gawk/opasnslf.ok | 3 + src/tool/awk/testdata/gawk/paramasfunc1.awk | 9 + src/tool/awk/testdata/gawk/paramasfunc1.ok | 1 + src/tool/awk/testdata/gawk/paramasfunc2.awk | 10 + src/tool/awk/testdata/gawk/paramasfunc2.ok | 1 + src/tool/awk/testdata/gawk/paramdup.awk | 8 + src/tool/awk/testdata/gawk/paramdup.ok | 1 + src/tool/awk/testdata/gawk/paramtyp.awk | 20 + src/tool/awk/testdata/gawk/paramtyp.ok | 6 + .../awk/testdata/gawk/paramuninitglobal.awk | 15 + .../awk/testdata/gawk/paramuninitglobal.ok | 4 + src/tool/awk/testdata/gawk/parse1.awk | 35 + src/tool/awk/testdata/gawk/parse1.in | 1 + src/tool/awk/testdata/gawk/parse1.ok | 4 + src/tool/awk/testdata/gawk/parsefld.awk | 1 + src/tool/awk/testdata/gawk/parsefld.in | 1 + src/tool/awk/testdata/gawk/parsefld.ok | 1 + src/tool/awk/testdata/gawk/parseme.awk | 1 + src/tool/awk/testdata/gawk/parseme.ok | 1 + src/tool/awk/testdata/gawk/pcntplus.awk | 1 + src/tool/awk/testdata/gawk/pcntplus.ok | 1 + src/tool/awk/testdata/gawk/posix2008sub.awk | 7 + src/tool/awk/testdata/gawk/posix2008sub.ok | 2 + src/tool/awk/testdata/gawk/prdupval.awk | 1 + src/tool/awk/testdata/gawk/prdupval.in | 1 + src/tool/awk/testdata/gawk/prdupval.ok | 1 + src/tool/awk/testdata/gawk/prec.awk | 7 + src/tool/awk/testdata/gawk/prec.ok | 1 + src/tool/awk/testdata/gawk/printf1.awk | 19 + src/tool/awk/testdata/gawk/printf1.ok | 7 + src/tool/awk/testdata/gawk/printfchar.awk | 7 + src/tool/awk/testdata/gawk/printfchar.ok | 1 + src/tool/awk/testdata/gawk/prmarscl.awk | 6 + src/tool/awk/testdata/gawk/prmarscl.ok | 1 + src/tool/awk/testdata/gawk/prmreuse.awk | 14 + src/tool/awk/testdata/gawk/prmreuse.ok | 0 src/tool/awk/testdata/gawk/prt1eval.awk | 6 + src/tool/awk/testdata/gawk/prt1eval.ok | 1 + src/tool/awk/testdata/gawk/prtoeval.awk | 4 + src/tool/awk/testdata/gawk/prtoeval.ok | 2 + src/tool/awk/testdata/gawk/rand.awk | 6 + src/tool/awk/testdata/gawk/rand.ok | 1 + src/tool/awk/testdata/gawk/range1.awk | 1 + src/tool/awk/testdata/gawk/range1.in | 2 + src/tool/awk/testdata/gawk/range1.ok | 1 + src/tool/awk/testdata/gawk/readbuf.awk | 2 + src/tool/awk/testdata/gawk/readbuf.ok | 1 + src/tool/awk/testdata/gawk/rebuild.awk | 4 + src/tool/awk/testdata/gawk/rebuild.in | 1 + src/tool/awk/testdata/gawk/rebuild.ok | 1 + src/tool/awk/testdata/gawk/redfilnm.awk | 98 + src/tool/awk/testdata/gawk/redfilnm.in | 1 + src/tool/awk/testdata/gawk/redfilnm.ok | 9 + src/tool/awk/testdata/gawk/regeq.awk | 29 + src/tool/awk/testdata/gawk/regeq.in | 2 + src/tool/awk/testdata/gawk/regeq.ok | 2 + src/tool/awk/testdata/gawk/regexpbrack.awk | 2 + src/tool/awk/testdata/gawk/regexpbrack.in | 0 src/tool/awk/testdata/gawk/regexpbrack.ok | 1 + src/tool/awk/testdata/gawk/regexpbrack2.awk | 2 + src/tool/awk/testdata/gawk/regexpbrack2.in | 2 + src/tool/awk/testdata/gawk/regexpbrack2.ok | 2 + src/tool/awk/testdata/gawk/regexprange.awk | 14 + src/tool/awk/testdata/gawk/regexprange.ok | 52 + src/tool/awk/testdata/gawk/regrange.awk | 30 + src/tool/awk/testdata/gawk/regrange.ok | 5 + src/tool/awk/testdata/gawk/reparse.awk | 7 + src/tool/awk/testdata/gawk/reparse.in | 1 + src/tool/awk/testdata/gawk/reparse.ok | 3 + src/tool/awk/testdata/gawk/resplit.awk | 1 + src/tool/awk/testdata/gawk/resplit.in | 1 + src/tool/awk/testdata/gawk/resplit.ok | 1 + src/tool/awk/testdata/gawk/rri1.awk | 1 + src/tool/awk/testdata/gawk/rri1.in | 1 + src/tool/awk/testdata/gawk/rri1.ok | 0 src/tool/awk/testdata/gawk/rs.awk | 2 + src/tool/awk/testdata/gawk/rs.in | 15 + src/tool/awk/testdata/gawk/rs.ok | 3 + src/tool/awk/testdata/gawk/rscompat.awk | 2 + src/tool/awk/testdata/gawk/rscompat.in | 2 + src/tool/awk/testdata/gawk/rscompat.ok | 3 + src/tool/awk/testdata/gawk/rsgetline.awk | 23 + src/tool/awk/testdata/gawk/rsgetline.in | 1 + src/tool/awk/testdata/gawk/rsgetline.ok | 3 + src/tool/awk/testdata/gawk/rsnul1nl.awk | 2 + src/tool/awk/testdata/gawk/rsnul1nl.in | 3 + src/tool/awk/testdata/gawk/rsnul1nl.ok | 2 + src/tool/awk/testdata/gawk/rsnullre.awk | 5 + src/tool/awk/testdata/gawk/rsnullre.in | 1 + src/tool/awk/testdata/gawk/rsnullre.ok | 3 + src/tool/awk/testdata/gawk/rsnulw.awk | 7 + src/tool/awk/testdata/gawk/rsnulw.in | 1 + src/tool/awk/testdata/gawk/rsnulw.ok | 5 + src/tool/awk/testdata/gawk/rsstart1.awk | 32 + src/tool/awk/testdata/gawk/rsstart1.in | 10000 ++++ src/tool/awk/testdata/gawk/rsstart1.ok | 1 + src/tool/awk/testdata/gawk/rsstart2.awk | 2 + src/tool/awk/testdata/gawk/rsstart2.in | 10000 ++++ src/tool/awk/testdata/gawk/rsstart2.ok | 1 + src/tool/awk/testdata/gawk/rstest1.awk | 7 + src/tool/awk/testdata/gawk/rstest1.ok | 2 + src/tool/awk/testdata/gawk/rstest2.awk | 6 + src/tool/awk/testdata/gawk/rstest2.ok | 1 + src/tool/awk/testdata/gawk/rstest3.awk | 73 + src/tool/awk/testdata/gawk/rstest3.ok | 0 src/tool/awk/testdata/gawk/rstest4.awk | 67 + src/tool/awk/testdata/gawk/rstest4.ok | 2 + src/tool/awk/testdata/gawk/rstest5.awk | 60 + src/tool/awk/testdata/gawk/rstest5.ok | 4 + src/tool/awk/testdata/gawk/rstest6.awk | 6 + src/tool/awk/testdata/gawk/rstest6.in | 1 + src/tool/awk/testdata/gawk/rstest6.ok | 1 + src/tool/awk/testdata/gawk/rswhite.awk | 2 + src/tool/awk/testdata/gawk/rswhite.in | 2 + src/tool/awk/testdata/gawk/rswhite.ok | 2 + src/tool/awk/testdata/gawk/scalar.awk | 4 + src/tool/awk/testdata/gawk/scalar.ok | 1 + src/tool/awk/testdata/gawk/sclforin.awk | 1 + src/tool/awk/testdata/gawk/sclforin.ok | 1 + src/tool/awk/testdata/gawk/sclifin.awk | 7 + src/tool/awk/testdata/gawk/sclifin.ok | 1 + src/tool/awk/testdata/gawk/setrec0.awk | 8 + src/tool/awk/testdata/gawk/setrec0.in | 1 + src/tool/awk/testdata/gawk/setrec0.ok | 1 + src/tool/awk/testdata/gawk/setrec1.awk | 9 + src/tool/awk/testdata/gawk/setrec1.ok | 1 + src/tool/awk/testdata/gawk/sigpipe1.awk | 13 + src/tool/awk/testdata/gawk/sigpipe1.ok | 3 + src/tool/awk/testdata/gawk/spacere.awk | 22 + src/tool/awk/testdata/gawk/spacere.ok | 16 + src/tool/awk/testdata/gawk/splitargv.awk | 7 + src/tool/awk/testdata/gawk/splitargv.in | 7 + src/tool/awk/testdata/gawk/splitargv.ok | 7 + src/tool/awk/testdata/gawk/splitarr.awk | 5 + src/tool/awk/testdata/gawk/splitarr.ok | 1 + src/tool/awk/testdata/gawk/splitdef.awk | 7 + src/tool/awk/testdata/gawk/splitdef.ok | 1 + src/tool/awk/testdata/gawk/splitvar.awk | 5 + src/tool/awk/testdata/gawk/splitvar.in | 1 + src/tool/awk/testdata/gawk/splitvar.ok | 1 + src/tool/awk/testdata/gawk/splitwht.awk | 7 + src/tool/awk/testdata/gawk/splitwht.ok | 2 + src/tool/awk/testdata/gawk/status-close.awk | 14 + src/tool/awk/testdata/gawk/status-close.ok | 6 + src/tool/awk/testdata/gawk/strcat1.awk | 6 + src/tool/awk/testdata/gawk/strcat1.ok | 1 + src/tool/awk/testdata/gawk/strnum1.awk | 35 + src/tool/awk/testdata/gawk/strnum1.ok | 2 + src/tool/awk/testdata/gawk/strnum2.awk | 18 + src/tool/awk/testdata/gawk/strnum2.ok | 4 + src/tool/awk/testdata/gawk/strtod.awk | 5 + src/tool/awk/testdata/gawk/strtod.in | 1 + src/tool/awk/testdata/gawk/strtod.ok | 2 + src/tool/awk/testdata/gawk/subamp.awk | 1 + src/tool/awk/testdata/gawk/subamp.in | 1 + src/tool/awk/testdata/gawk/subamp.ok | 1 + src/tool/awk/testdata/gawk/subback.awk | 15 + src/tool/awk/testdata/gawk/subback.in | 1 + src/tool/awk/testdata/gawk/subback.ok | 12 + src/tool/awk/testdata/gawk/subi18n.awk | 68 + src/tool/awk/testdata/gawk/subi18n.ok | 2 + src/tool/awk/testdata/gawk/subsepnm.awk | 1 + src/tool/awk/testdata/gawk/subsepnm.ok | 1 + src/tool/awk/testdata/gawk/subslash.awk | 6 + src/tool/awk/testdata/gawk/subslash.ok | 1 + src/tool/awk/testdata/gawk/substr.awk | 14 + src/tool/awk/testdata/gawk/substr.ok | 10 + src/tool/awk/testdata/gawk/swaplns.awk | 7 + src/tool/awk/testdata/gawk/swaplns.in | 9 + src/tool/awk/testdata/gawk/swaplns.ok | 9 + src/tool/awk/testdata/gawk/synerr1.awk | 4 + src/tool/awk/testdata/gawk/synerr1.ok | 1 + src/tool/awk/testdata/gawk/synerr2.awk | 47 + src/tool/awk/testdata/gawk/synerr2.ok | 1 + src/tool/awk/testdata/gawk/tailrecurse.awk | 22 + src/tool/awk/testdata/gawk/tailrecurse.ok | 5 + src/tool/awk/testdata/gawk/tradanch.awk | 2 + src/tool/awk/testdata/gawk/tradanch.in | 2 + src/tool/awk/testdata/gawk/tradanch.ok | 0 src/tool/awk/testdata/gawk/tweakfld.awk | 292 + src/tool/awk/testdata/gawk/tweakfld.in | 3 + src/tool/awk/testdata/gawk/tweakfld.ok | 3 + src/tool/awk/testdata/gawk/uninit2.awk | 2 + src/tool/awk/testdata/gawk/uninit2.ok | 2 + src/tool/awk/testdata/gawk/uninit3.awk | 7 + src/tool/awk/testdata/gawk/uninit3.ok | 1 + src/tool/awk/testdata/gawk/uninit4.awk | 13 + src/tool/awk/testdata/gawk/uninit4.ok | 5 + src/tool/awk/testdata/gawk/uninit5.awk | 117 + src/tool/awk/testdata/gawk/uninit5.ok | 6 + src/tool/awk/testdata/gawk/uninitialized.awk | 3 + src/tool/awk/testdata/gawk/uninitialized.ok | 0 src/tool/awk/testdata/gawk/unterm.awk | 1 + src/tool/awk/testdata/gawk/unterm.ok | 1 + src/tool/awk/testdata/gawk/uparrfs.awk | 8 + src/tool/awk/testdata/gawk/uparrfs.in | 1 + src/tool/awk/testdata/gawk/uparrfs.ok | 4 + src/tool/awk/testdata/gawk/uplus.awk | 5 + src/tool/awk/testdata/gawk/uplus.ok | 3 + src/tool/awk/testdata/gawk/wideidx.awk | 7 + src/tool/awk/testdata/gawk/wideidx.in | 2 + src/tool/awk/testdata/gawk/wideidx.ok | 2 + src/tool/awk/testdata/gawk/wideidx2.awk | 89 + src/tool/awk/testdata/gawk/wideidx2.ok | 2 + src/tool/awk/testdata/gawk/widesub.awk | 12 + src/tool/awk/testdata/gawk/widesub.ok | 2 + src/tool/awk/testdata/gawk/widesub2.awk | 9 + src/tool/awk/testdata/gawk/widesub2.ok | 2 + src/tool/awk/testdata/gawk/widesub3.awk | 6 + src/tool/awk/testdata/gawk/widesub3.in | 2 + src/tool/awk/testdata/gawk/widesub3.ok | 4 + src/tool/awk/testdata/gawk/widesub4.awk | 51 + src/tool/awk/testdata/gawk/widesub4.ok | 5 + src/tool/awk/testdata/gawk/wjposer1.awk | 75 + src/tool/awk/testdata/gawk/wjposer1.in | 1527 + src/tool/awk/testdata/gawk/wjposer1.ok | 2068 + src/tool/awk/testdata/gawk/zero2.awk | 5 + src/tool/awk/testdata/gawk/zero2.ok | 3 + src/tool/awk/testdata/gawk/zeroe0.awk | 40 + src/tool/awk/testdata/gawk/zeroe0.ok | 2 + src/tool/awk/testdata/gawk/zeroflag.awk | 1 + src/tool/awk/testdata/gawk/zeroflag.ok | 1 + src/tool/awk/testdata/output/p.1 | 10 + src/tool/awk/testdata/output/p.10 | 1 + src/tool/awk/testdata/output/p.11 | 3 + src/tool/awk/testdata/output/p.12 | 3 + src/tool/awk/testdata/output/p.13 | 7 + src/tool/awk/testdata/output/p.14 | 0 src/tool/awk/testdata/output/p.15 | 0 src/tool/awk/testdata/output/p.16 | 0 src/tool/awk/testdata/output/p.17 | 0 src/tool/awk/testdata/output/p.18 | 0 src/tool/awk/testdata/output/p.19 | 0 src/tool/awk/testdata/output/p.2 | 10 + src/tool/awk/testdata/output/p.20 | 2 + src/tool/awk/testdata/output/p.21 | 3 + src/tool/awk/testdata/output/p.21a | 5 + src/tool/awk/testdata/output/p.22 | 3 + src/tool/awk/testdata/output/p.23 | 4 + src/tool/awk/testdata/output/p.24 | 5 + src/tool/awk/testdata/output/p.25 | 10 + src/tool/awk/testdata/output/p.26 | 1 + src/tool/awk/testdata/output/p.26a | 1 + src/tool/awk/testdata/output/p.27 | 1 + src/tool/awk/testdata/output/p.28 | 10 + src/tool/awk/testdata/output/p.29 | 10 + src/tool/awk/testdata/output/p.3 | 10 + src/tool/awk/testdata/output/p.30 | 10 + src/tool/awk/testdata/output/p.31 | 1 + src/tool/awk/testdata/output/p.32 | 10 + src/tool/awk/testdata/output/p.33 | 1 + src/tool/awk/testdata/output/p.34 | 10 + src/tool/awk/testdata/output/p.35 | 10 + src/tool/awk/testdata/output/p.36 | 10 + src/tool/awk/testdata/output/p.37 | 0 src/tool/awk/testdata/output/p.38 | 1 + src/tool/awk/testdata/output/p.39 | 44 + src/tool/awk/testdata/output/p.4 | 10 + src/tool/awk/testdata/output/p.40 | 44 + src/tool/awk/testdata/output/p.41 | 0 src/tool/awk/testdata/output/p.42 | 2 + src/tool/awk/testdata/output/p.43 | 5 + src/tool/awk/testdata/output/p.44 | 10 + src/tool/awk/testdata/output/p.45 | 20 + src/tool/awk/testdata/output/p.46 | 10 + src/tool/awk/testdata/output/p.47 | 0 src/tool/awk/testdata/output/p.48 | 5 + src/tool/awk/testdata/output/p.48a | 1 + src/tool/awk/testdata/output/p.48b | 3 + src/tool/awk/testdata/output/p.49 | 0 src/tool/awk/testdata/output/p.5 | 11 + src/tool/awk/testdata/output/p.50 | 10 + src/tool/awk/testdata/output/p.51 | 30 + src/tool/awk/testdata/output/p.52 | 42 + src/tool/awk/testdata/output/p.5a | 11 + src/tool/awk/testdata/output/p.6 | 1 + src/tool/awk/testdata/output/p.7 | 5 + src/tool/awk/testdata/output/p.8 | 3 + src/tool/awk/testdata/output/p.9 | 2 + src/tool/awk/testdata/output/p.table | 10 + src/tool/awk/testdata/output/t.0 | 199 + src/tool/awk/testdata/output/t.0a | 199 + src/tool/awk/testdata/output/t.1 | 199 + src/tool/awk/testdata/output/t.1.x | 199 + src/tool/awk/testdata/output/t.2 | 199 + src/tool/awk/testdata/output/t.2.x | 199 + src/tool/awk/testdata/output/t.3 | 4 + src/tool/awk/testdata/output/t.3.x | 500 + src/tool/awk/testdata/output/t.4 | 90 + src/tool/awk/testdata/output/t.4.x | 199 + src/tool/awk/testdata/output/t.5.x | 199 + src/tool/awk/testdata/output/t.6 | 453 + src/tool/awk/testdata/output/t.6.x | 199 + src/tool/awk/testdata/output/t.6a | 453 + src/tool/awk/testdata/output/t.6b | 320 + src/tool/awk/testdata/output/t.8.x | 199 + src/tool/awk/testdata/output/t.8.y | 199 + src/tool/awk/testdata/output/t.NF | 995 + src/tool/awk/testdata/output/t.a | 187 + src/tool/awk/testdata/output/t.addops | 0 src/tool/awk/testdata/output/t.aeiou | 8 + src/tool/awk/testdata/output/t.aeiouy | 0 src/tool/awk/testdata/output/t.arith | 991 + src/tool/awk/testdata/output/t.array | 398 + src/tool/awk/testdata/output/t.array1 | 474 + src/tool/awk/testdata/output/t.array2 | 1 + src/tool/awk/testdata/output/t.assert | 124 + src/tool/awk/testdata/output/t.avg | 2 + src/tool/awk/testdata/output/t.b.x | 398 + src/tool/awk/testdata/output/t.be | 2 + src/tool/awk/testdata/output/t.beginexit | 10 + src/tool/awk/testdata/output/t.beginnext | 199 + src/tool/awk/testdata/output/t.break | 170 + src/tool/awk/testdata/output/t.break1 | 12 + src/tool/awk/testdata/output/t.break2 | 12 + src/tool/awk/testdata/output/t.break3 | 844 + src/tool/awk/testdata/output/t.bug1 | 199 + src/tool/awk/testdata/output/t.builtins | 67 + src/tool/awk/testdata/output/t.cat | 796 + src/tool/awk/testdata/output/t.cat1 | 199 + src/tool/awk/testdata/output/t.cat2 | 199 + src/tool/awk/testdata/output/t.cmp | 193 + src/tool/awk/testdata/output/t.coerce | 2 + src/tool/awk/testdata/output/t.coerce2 | 995 + src/tool/awk/testdata/output/t.comment | 0 src/tool/awk/testdata/output/t.comment1 | 1 + src/tool/awk/testdata/output/t.concat | 199 + src/tool/awk/testdata/output/t.cond | 398 + src/tool/awk/testdata/output/t.contin | 199 + src/tool/awk/testdata/output/t.count | 1 + src/tool/awk/testdata/output/t.crlf | 199 + src/tool/awk/testdata/output/t.cum | 200 + src/tool/awk/testdata/output/t.d.x | 199 + src/tool/awk/testdata/output/t.delete1 | 0 src/tool/awk/testdata/output/t.delete2 | 44 + src/tool/awk/testdata/output/t.delete3 | 0 src/tool/awk/testdata/output/t.do | 0 src/tool/awk/testdata/output/t.e | 24 + src/tool/awk/testdata/output/t.else | 199 + src/tool/awk/testdata/output/t.exit | 1 + src/tool/awk/testdata/output/t.exit1 | 4 + src/tool/awk/testdata/output/t.f | 199 + src/tool/awk/testdata/output/t.f.x | 197 + src/tool/awk/testdata/output/t.f0 | 0 src/tool/awk/testdata/output/t.f1 | 199 + src/tool/awk/testdata/output/t.f2 | 199 + src/tool/awk/testdata/output/t.f3 | 199 + src/tool/awk/testdata/output/t.f4 | 199 + src/tool/awk/testdata/output/t.for | 645 + src/tool/awk/testdata/output/t.for1 | 645 + src/tool/awk/testdata/output/t.for2 | 645 + src/tool/awk/testdata/output/t.for3 | 1290 + src/tool/awk/testdata/output/t.format4 | 4 + src/tool/awk/testdata/output/t.fun | 199 + src/tool/awk/testdata/output/t.fun0 | 398 + src/tool/awk/testdata/output/t.fun1 | 2 + src/tool/awk/testdata/output/t.fun2 | 573 + src/tool/awk/testdata/output/t.fun3 | 510 + src/tool/awk/testdata/output/t.fun4 | 844 + src/tool/awk/testdata/output/t.fun5 | 844 + src/tool/awk/testdata/output/t.getval | 199 + src/tool/awk/testdata/output/t.gsub | 199 + src/tool/awk/testdata/output/t.gsub1 | 199 + src/tool/awk/testdata/output/t.gsub3 | 198 + src/tool/awk/testdata/output/t.gsub4 | 276 + src/tool/awk/testdata/output/t.i.x | 198 + src/tool/awk/testdata/output/t.if | 198 + src/tool/awk/testdata/output/t.in | 3 + src/tool/awk/testdata/output/t.in1 | 187 + src/tool/awk/testdata/output/t.in2 | 38 + src/tool/awk/testdata/output/t.in3 | 1 + src/tool/awk/testdata/output/t.incr | 1 + src/tool/awk/testdata/output/t.incr2 | 199 + src/tool/awk/testdata/output/t.incr3 | 199 + src/tool/awk/testdata/output/t.index | 37 + src/tool/awk/testdata/output/t.intest | 398 + src/tool/awk/testdata/output/t.intest2 | 1978 + src/tool/awk/testdata/output/t.j.x | 200 + src/tool/awk/testdata/output/t.longstr | 1 + src/tool/awk/testdata/output/t.makef | 199 + src/tool/awk/testdata/output/t.match | 2 + src/tool/awk/testdata/output/t.match1 | 4 + src/tool/awk/testdata/output/t.max | 1 + src/tool/awk/testdata/output/t.mod | 100 + src/tool/awk/testdata/output/t.monotone | 1 + src/tool/awk/testdata/output/t.nameval | 187 + src/tool/awk/testdata/output/t.next | 159 + src/tool/awk/testdata/output/t.not | 464 + src/tool/awk/testdata/output/t.null0 | 937 + src/tool/awk/testdata/output/t.ofmt | 199 + src/tool/awk/testdata/output/t.ofs | 1 + src/tool/awk/testdata/output/t.ors | 1 + src/tool/awk/testdata/output/t.pat | 426 + src/tool/awk/testdata/output/t.pipe | 1 + src/tool/awk/testdata/output/t.pp | 130 + src/tool/awk/testdata/output/t.pp1 | 3 + src/tool/awk/testdata/output/t.pp2 | 76 + src/tool/awk/testdata/output/t.printf | 199 + src/tool/awk/testdata/output/t.printf2 | 202 + src/tool/awk/testdata/output/t.quote | 199 + src/tool/awk/testdata/output/t.randk | 203 + src/tool/awk/testdata/output/t.re1 | 389 + src/tool/awk/testdata/output/t.re1a | 389 + src/tool/awk/testdata/output/t.re2 | 202 + src/tool/awk/testdata/output/t.re3 | 175 + src/tool/awk/testdata/output/t.re4 | 82 + src/tool/awk/testdata/output/t.re5 | 571 + src/tool/awk/testdata/output/t.re7 | 0 src/tool/awk/testdata/output/t.reFS | 199 + src/tool/awk/testdata/output/t.rec | 199 + src/tool/awk/testdata/output/t.reg | 600 + src/tool/awk/testdata/output/t.roff | 74 + src/tool/awk/testdata/output/t.sep | 93 + src/tool/awk/testdata/output/t.seqno | 199 + src/tool/awk/testdata/output/t.set0 | 1393 + src/tool/awk/testdata/output/t.set0a | 597 + src/tool/awk/testdata/output/t.set0b | 597 + src/tool/awk/testdata/output/t.set1 | 398 + src/tool/awk/testdata/output/t.set2 | 199 + src/tool/awk/testdata/output/t.set3 | 199 + src/tool/awk/testdata/output/t.split2 | 199 + src/tool/awk/testdata/output/t.split2a | 1 + src/tool/awk/testdata/output/t.split3 | 139 + src/tool/awk/testdata/output/t.split4 | 199 + src/tool/awk/testdata/output/t.split8 | 725 + src/tool/awk/testdata/output/t.split9 | 0 src/tool/awk/testdata/output/t.split9a | 0 src/tool/awk/testdata/output/t.stately | 1 + src/tool/awk/testdata/output/t.strcmp | 56 + src/tool/awk/testdata/output/t.strcmp1 | 180 + src/tool/awk/testdata/output/t.strnum | 1 + src/tool/awk/testdata/output/t.sub1 | 199 + src/tool/awk/testdata/output/t.sub2 | 398 + src/tool/awk/testdata/output/t.sub3 | 198 + src/tool/awk/testdata/output/t.substr | 235 + src/tool/awk/testdata/output/t.substr1 | 100 + src/tool/awk/testdata/output/t.time | 40 + src/tool/awk/testdata/output/t.vf | 398 + src/tool/awk/testdata/output/t.vf1 | 844 + src/tool/awk/testdata/output/t.vf2 | 398 + src/tool/awk/testdata/output/t.vf3 | 199 + src/tool/awk/testdata/output/t.x | 3 + src/tool/awk/testdata/p.1 | 1 + src/tool/awk/testdata/p.10 | 1 + src/tool/awk/testdata/p.11 | 1 + src/tool/awk/testdata/p.12 | 1 + src/tool/awk/testdata/p.13 | 1 + src/tool/awk/testdata/p.14 | 1 + src/tool/awk/testdata/p.15 | 1 + src/tool/awk/testdata/p.16 | 1 + src/tool/awk/testdata/p.17 | 1 + src/tool/awk/testdata/p.18 | 1 + src/tool/awk/testdata/p.19 | 2 + src/tool/awk/testdata/p.2 | 1 + src/tool/awk/testdata/p.20 | 1 + src/tool/awk/testdata/p.21 | 1 + src/tool/awk/testdata/p.21a | 1 + src/tool/awk/testdata/p.22 | 1 + src/tool/awk/testdata/p.23 | 1 + src/tool/awk/testdata/p.24 | 1 + src/tool/awk/testdata/p.25 | 1 + src/tool/awk/testdata/p.26 | 3 + src/tool/awk/testdata/p.26a | 3 + src/tool/awk/testdata/p.27 | 2 + src/tool/awk/testdata/p.28 | 1 + src/tool/awk/testdata/p.29 | 1 + src/tool/awk/testdata/p.3 | 1 + src/tool/awk/testdata/p.30 | 1 + src/tool/awk/testdata/p.31 | 2 + src/tool/awk/testdata/p.32 | 1 + src/tool/awk/testdata/p.33 | 2 + src/tool/awk/testdata/p.34 | 1 + src/tool/awk/testdata/p.35 | 4 + src/tool/awk/testdata/p.36 | 2 + src/tool/awk/testdata/p.37 | 1 + src/tool/awk/testdata/p.38 | 6 + src/tool/awk/testdata/p.39 | 6 + src/tool/awk/testdata/p.4 | 1 + src/tool/awk/testdata/p.40 | 3 + src/tool/awk/testdata/p.41 | 3 + src/tool/awk/testdata/p.42 | 4 + src/tool/awk/testdata/p.43 | 4 + src/tool/awk/testdata/p.44 | 7 + src/tool/awk/testdata/p.45 | 2 + src/tool/awk/testdata/p.46 | 1 + src/tool/awk/testdata/p.47 | 2 + src/tool/awk/testdata/p.48 | 4 + src/tool/awk/testdata/p.48a | 6 + src/tool/awk/testdata/p.48b | 5 + src/tool/awk/testdata/p.49 | 1 + src/tool/awk/testdata/p.5 | 3 + src/tool/awk/testdata/p.50 | 4 + src/tool/awk/testdata/p.51 | 7 + src/tool/awk/testdata/p.52 | 16 + src/tool/awk/testdata/p.5a | 3 + src/tool/awk/testdata/p.6 | 1 + src/tool/awk/testdata/p.7 | 1 + src/tool/awk/testdata/p.8 | 1 + src/tool/awk/testdata/p.9 | 1 + src/tool/awk/testdata/p.table | 33 + src/tool/awk/testdata/parseerror/bad.awk | 2 + src/tool/awk/testdata/parseerror/good.awk | 3 + src/tool/awk/testdata/t.0 | 1 + src/tool/awk/testdata/t.0a | 1 + src/tool/awk/testdata/t.1 | 2 + src/tool/awk/testdata/t.1.x | 1 + src/tool/awk/testdata/t.2 | 2 + src/tool/awk/testdata/t.2.x | 1 + src/tool/awk/testdata/t.3 | 1 + src/tool/awk/testdata/t.3.x | 7 + src/tool/awk/testdata/t.4 | 1 + src/tool/awk/testdata/t.4.x | 1 + src/tool/awk/testdata/t.5.x | 1 + src/tool/awk/testdata/t.6 | 8 + src/tool/awk/testdata/t.6.x | 1 + src/tool/awk/testdata/t.6a | 5 + src/tool/awk/testdata/t.6b | 5 + src/tool/awk/testdata/t.8.x | 4 + src/tool/awk/testdata/t.8.y | 7 + src/tool/awk/testdata/t.NF | 1 + src/tool/awk/testdata/t.a | 6 + src/tool/awk/testdata/t.addops | 24 + src/tool/awk/testdata/t.aeiou | 1 + src/tool/awk/testdata/t.aeiouy | 1 + src/tool/awk/testdata/t.arith | 6 + src/tool/awk/testdata/t.array | 13 + src/tool/awk/testdata/t.array1 | 10 + src/tool/awk/testdata/t.array2 | 4 + src/tool/awk/testdata/t.assert | 9 + src/tool/awk/testdata/t.avg | 5 + src/tool/awk/testdata/t.b.x | 1 + src/tool/awk/testdata/t.be | 6 + src/tool/awk/testdata/t.beginexit | 6 + src/tool/awk/testdata/t.beginnext | 6 + src/tool/awk/testdata/t.break | 7 + src/tool/awk/testdata/t.break1 | 10 + src/tool/awk/testdata/t.break2 | 10 + src/tool/awk/testdata/t.break3 | 8 + src/tool/awk/testdata/t.bug1 | 3 + src/tool/awk/testdata/t.builtins | 6 + src/tool/awk/testdata/t.cat | 4 + src/tool/awk/testdata/t.cat1 | 1 + src/tool/awk/testdata/t.cat2 | 1 + src/tool/awk/testdata/t.cmp | 1 + src/tool/awk/testdata/t.coerce | 4 + src/tool/awk/testdata/t.coerce2 | 7 + src/tool/awk/testdata/t.comment | 5 + src/tool/awk/testdata/t.comment1 | 7 + src/tool/awk/testdata/t.concat | 1 + src/tool/awk/testdata/t.cond | 3 + src/tool/awk/testdata/t.contin | 9 + src/tool/awk/testdata/t.count | 1 + src/tool/awk/testdata/t.crlf | 4 + src/tool/awk/testdata/t.cum | 4 + src/tool/awk/testdata/t.d.x | 2 + src/tool/awk/testdata/t.delete1 | 7 + src/tool/awk/testdata/t.delete2 | 12 + src/tool/awk/testdata/t.delete3 | 7 + src/tool/awk/testdata/t.do | 14 + src/tool/awk/testdata/t.e | 1 + src/tool/awk/testdata/t.else | 3 + src/tool/awk/testdata/t.exit | 2 + src/tool/awk/testdata/t.exit1 | 15 + src/tool/awk/testdata/t.f | 1 + src/tool/awk/testdata/t.f.x | 1 + src/tool/awk/testdata/t.f0 | 1 + src/tool/awk/testdata/t.f1 | 1 + src/tool/awk/testdata/t.f2 | 1 + src/tool/awk/testdata/t.f3 | 1 + src/tool/awk/testdata/t.f4 | 1 + src/tool/awk/testdata/t.for | 3 + src/tool/awk/testdata/t.for1 | 9 + src/tool/awk/testdata/t.for2 | 7 + src/tool/awk/testdata/t.for3 | 8 + src/tool/awk/testdata/t.format4 | 9 + src/tool/awk/testdata/t.fun | 3 + src/tool/awk/testdata/t.fun0 | 2 + src/tool/awk/testdata/t.fun1 | 2 + src/tool/awk/testdata/t.fun2 | 10 + src/tool/awk/testdata/t.fun3 | 3 + src/tool/awk/testdata/t.fun4 | 9 + src/tool/awk/testdata/t.fun5 | 9 + src/tool/awk/testdata/t.getval | 6 + src/tool/awk/testdata/t.gsub | 1 + src/tool/awk/testdata/t.gsub1 | 1 + src/tool/awk/testdata/t.gsub3 | 1 + src/tool/awk/testdata/t.gsub4 | 4 + src/tool/awk/testdata/t.i.x | 2 + src/tool/awk/testdata/t.if | 1 + src/tool/awk/testdata/t.in | 9 + src/tool/awk/testdata/t.in1 | 7 + src/tool/awk/testdata/t.in2 | 4 + src/tool/awk/testdata/t.in3 | 7 + src/tool/awk/testdata/t.incr | 2 + src/tool/awk/testdata/t.incr2 | 8 + src/tool/awk/testdata/t.incr3 | 5 + src/tool/awk/testdata/t.index | 10 + src/tool/awk/testdata/t.intest | 9 + src/tool/awk/testdata/t.intest2 | 16 + src/tool/awk/testdata/t.j.x | 2 + src/tool/awk/testdata/t.longstr | 5 + src/tool/awk/testdata/t.makef | 1 + src/tool/awk/testdata/t.match | 1 + src/tool/awk/testdata/t.match1 | 6 + src/tool/awk/testdata/t.max | 2 + src/tool/awk/testdata/t.mod | 1 + src/tool/awk/testdata/t.monotone | 1 + src/tool/awk/testdata/t.nameval | 7 + src/tool/awk/testdata/t.next | 2 + src/tool/awk/testdata/t.not | 4 + src/tool/awk/testdata/t.null0 | 15 + src/tool/awk/testdata/t.ofmt | 2 + src/tool/awk/testdata/t.ofs | 2 + src/tool/awk/testdata/t.ors | 2 + src/tool/awk/testdata/t.pat | 4 + src/tool/awk/testdata/t.pipe | 1 + src/tool/awk/testdata/t.pp | 1 + src/tool/awk/testdata/t.pp1 | 3 + src/tool/awk/testdata/t.pp2 | 3 + src/tool/awk/testdata/t.printf | 5 + src/tool/awk/testdata/t.printf2 | 6 + src/tool/awk/testdata/t.quote | 1 + src/tool/awk/testdata/t.randk | 13 + src/tool/awk/testdata/t.re1 | 2 + src/tool/awk/testdata/t.re1a | 6 + src/tool/awk/testdata/t.re2 | 2 + src/tool/awk/testdata/t.re3 | 6 + src/tool/awk/testdata/t.re4 | 10 + src/tool/awk/testdata/t.re5 | 3 + src/tool/awk/testdata/t.re7 | 1 + src/tool/awk/testdata/t.reFS | 2 + src/tool/awk/testdata/t.rec | 1 + src/tool/awk/testdata/t.reg | 4 + src/tool/awk/testdata/t.roff | 23 + src/tool/awk/testdata/t.sep | 2 + src/tool/awk/testdata/t.seqno | 1 + src/tool/awk/testdata/t.set0 | 3 + src/tool/awk/testdata/t.set0a | 1 + src/tool/awk/testdata/t.set0b | 3 + src/tool/awk/testdata/t.set1 | 3 + src/tool/awk/testdata/t.set2 | 4 + src/tool/awk/testdata/t.set3 | 1 + src/tool/awk/testdata/t.split2 | 1 + src/tool/awk/testdata/t.split2a | 4 + src/tool/awk/testdata/t.split3 | 4 + src/tool/awk/testdata/t.split4 | 4 + src/tool/awk/testdata/t.split8 | 9 + src/tool/awk/testdata/t.split9 | 8 + src/tool/awk/testdata/t.split9a | 9 + src/tool/awk/testdata/t.stately | 1 + src/tool/awk/testdata/t.strcmp | 1 + src/tool/awk/testdata/t.strcmp1 | 1 + src/tool/awk/testdata/t.strnum | 1 + src/tool/awk/testdata/t.sub1 | 1 + src/tool/awk/testdata/t.sub2 | 2 + src/tool/awk/testdata/t.sub3 | 1 + src/tool/awk/testdata/t.substr | 3 + src/tool/awk/testdata/t.substr1 | 1 + src/tool/awk/testdata/t.time | 18 + src/tool/awk/testdata/t.vf | 3 + src/tool/awk/testdata/t.vf1 | 7 + src/tool/awk/testdata/t.vf2 | 1 + src/tool/awk/testdata/t.vf3 | 2 + src/tool/awk/testdata/t.x | 1 + src/tool/awk/testdata/test.countries | 10 + src/tool/awk/testdata/test.data | 199 + src/tool/awk/testdata/tt.01_print | 1 + src/tool/awk/testdata/tt.02_print_NR_NF | 1 + src/tool/awk/testdata/tt.02a_print_length | 1 + src/tool/awk/testdata/tt.03_sum_length | 2 + src/tool/awk/testdata/tt.03a_sum_field | 2 + src/tool/awk/testdata/tt.04_printf_fields | 3 + src/tool/awk/testdata/tt.05_concat_fields | 6 + src/tool/awk/testdata/tt.06_count_lengths | 7 + src/tool/awk/testdata/tt.07_even_fields | 1 + src/tool/awk/testdata/tt.08_even_lengths | 1 + src/tool/awk/testdata/tt.08z_regex_simple | 1 + src/tool/awk/testdata/tt.09_regex_starts_with | 1 + src/tool/awk/testdata/tt.10_regex_ends_with | 1 + .../awk/testdata/tt.10a_regex_ends_with_var | 2 + src/tool/awk/testdata/tt.11_substr | 1 + src/tool/awk/testdata/tt.12_update_fields | 1 + src/tool/awk/testdata/tt.13_array_ops | 5 + src/tool/awk/testdata/tt.13a_array_printf | 5 + src/tool/awk/testdata/tt.14_function_call | 7 + src/tool/awk/testdata/tt.15_format_lines | 33 + src/tool/awk/testdata/tt.16_count_words | 6 + src/tool/awk/testdata/tt.big_complex_program | 51 + src/tool/awk/testdata/tt.x1_mandelbrot | 46 + src/tool/awk/testdata/tt.x2_sum_loop | 6 + src/tool/awk/testdata/wildcards/a.awk | 1 + src/tool/awk/testdata/wildcards/b.awk | 1 + src/tool/awk/testdata/wildcards/one.txt | 3 + src/tool/awk/testdata/wildcards/two.txt | 3 + 1105 files changed, 133607 insertions(+), 1 deletion(-) rename license => license.txt (100%) rename readme => readme.md (100%) create mode 100644 src/tool/awk/csv.md create mode 100644 src/tool/awk/go.mod create mode 100755 src/tool/awk/goawk create mode 100644 src/tool/awk/goawk.go create mode 100644 src/tool/awk/goawk_test.go create mode 100644 src/tool/awk/internal/ast/ast.go create mode 100644 src/tool/awk/internal/ast/specialvars.go create mode 100644 src/tool/awk/internal/ast/specialvars_test.go create mode 100644 src/tool/awk/internal/compiler/compiler.go create mode 100644 src/tool/awk/internal/compiler/disassembler.go create mode 100644 src/tool/awk/internal/compiler/disassembler_test.go create mode 100644 src/tool/awk/internal/compiler/opcode_string.go create mode 100644 src/tool/awk/internal/compiler/opcodes.go create mode 100644 src/tool/awk/interp/csvreader_test.go create mode 100644 src/tool/awk/interp/example_test.go create mode 100644 src/tool/awk/interp/functions.go create mode 100644 src/tool/awk/interp/fuzz_test.go create mode 100644 src/tool/awk/interp/fuzz_unexported_test.go create mode 100644 src/tool/awk/interp/interp.go create mode 100644 src/tool/awk/interp/interp_test.go create mode 100644 src/tool/awk/interp/io.go create mode 100644 src/tool/awk/interp/newexecute.go create mode 100644 src/tool/awk/interp/newexecute_test.go create mode 100644 src/tool/awk/interp/value.go create mode 100644 src/tool/awk/interp/vm.go create mode 100644 src/tool/awk/lexer/lexer.go create mode 100644 src/tool/awk/lexer/lexer_test.go create mode 100644 src/tool/awk/lexer/token.go create mode 100644 src/tool/awk/license.txt create mode 100644 src/tool/awk/parser/parser.go create mode 100644 src/tool/awk/parser/parser_test.go create mode 100644 src/tool/awk/parser/resolve.go create mode 100644 src/tool/awk/parser/toposort.go create mode 100644 src/tool/awk/parser/toposort_test.go create mode 100644 src/tool/awk/readme.md create mode 100755 src/tool/awk/scripts/benchmark.sh create mode 100755 src/tool/awk/scripts/benchmark_awks.py create mode 100755 src/tool/awk/scripts/benchstat.sh create mode 100644 src/tool/awk/scripts/csvbench/count.py create mode 100644 src/tool/awk/scripts/csvbench/count/main.go create mode 100755 src/tool/awk/scripts/csvbench/csvbench.sh create mode 100644 src/tool/awk/scripts/csvbench/write.py create mode 100644 src/tool/awk/scripts/csvbench/write/main.go create mode 100755 src/tool/awk/scripts/fuzz_input.sh create mode 100755 src/tool/awk/scripts/fuzz_source.sh create mode 100755 src/tool/awk/scripts/make_binaries.sh create mode 100644 src/tool/awk/testdata/README create mode 100644 src/tool/awk/testdata/csv/1.csv create mode 100644 src/tool/awk/testdata/csv/2.csv create mode 100644 src/tool/awk/testdata/csv/address5.csv create mode 100644 src/tool/awk/testdata/csv/fields.csv create mode 100644 src/tool/awk/testdata/csv/nz-schools.csv create mode 100644 src/tool/awk/testdata/csv/states.csv create mode 100644 src/tool/awk/testdata/csv/states.psv create mode 100755 src/tool/awk/testdata/echo create mode 100644 src/tool/awk/testdata/filename/10 create mode 100644 src/tool/awk/testdata/filename/10x create mode 100644 src/tool/awk/testdata/foo.td create mode 100644 src/tool/awk/testdata/g.1 create mode 100644 src/tool/awk/testdata/g.2 create mode 100644 src/tool/awk/testdata/g.3 create mode 100644 src/tool/awk/testdata/g.4 create mode 100644 src/tool/awk/testdata/gawk/addcomma.awk create mode 100644 src/tool/awk/testdata/gawk/addcomma.in create mode 100644 src/tool/awk/testdata/gawk/addcomma.ok create mode 100644 src/tool/awk/testdata/gawk/anchgsub.awk create mode 100644 src/tool/awk/testdata/gawk/anchgsub.in create mode 100644 src/tool/awk/testdata/gawk/anchgsub.ok create mode 100644 src/tool/awk/testdata/gawk/anchor.awk create mode 100644 src/tool/awk/testdata/gawk/anchor.in create mode 100644 src/tool/awk/testdata/gawk/anchor.ok create mode 100644 src/tool/awk/testdata/gawk/argarray.awk create mode 100644 src/tool/awk/testdata/gawk/argarray.in create mode 100644 src/tool/awk/testdata/gawk/argarray.ok create mode 100644 src/tool/awk/testdata/gawk/arrayind3.awk create mode 100644 src/tool/awk/testdata/gawk/arrayind3.ok create mode 100644 src/tool/awk/testdata/gawk/arrayparm.awk create mode 100644 src/tool/awk/testdata/gawk/arrayparm.ok create mode 100644 src/tool/awk/testdata/gawk/arrayprm2.awk create mode 100644 src/tool/awk/testdata/gawk/arrayprm2.ok create mode 100644 src/tool/awk/testdata/gawk/arrayprm3.awk create mode 100644 src/tool/awk/testdata/gawk/arrayprm3.ok create mode 100644 src/tool/awk/testdata/gawk/arrayref.awk create mode 100644 src/tool/awk/testdata/gawk/arrayref.ok create mode 100644 src/tool/awk/testdata/gawk/arrymem1.awk create mode 100644 src/tool/awk/testdata/gawk/arrymem1.ok create mode 100644 src/tool/awk/testdata/gawk/arryref2.awk create mode 100644 src/tool/awk/testdata/gawk/arryref2.ok create mode 100644 src/tool/awk/testdata/gawk/arryref3.awk create mode 100644 src/tool/awk/testdata/gawk/arryref3.ok create mode 100644 src/tool/awk/testdata/gawk/arryref4.awk create mode 100644 src/tool/awk/testdata/gawk/arryref4.ok create mode 100644 src/tool/awk/testdata/gawk/arryref5.awk create mode 100644 src/tool/awk/testdata/gawk/arryref5.ok create mode 100644 src/tool/awk/testdata/gawk/arynasty.awk create mode 100644 src/tool/awk/testdata/gawk/arynasty.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm1.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm1.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm3.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm3.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm4.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm4.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm5.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm5.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm6.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm6.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm7.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm7.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm8.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm8.ok create mode 100644 src/tool/awk/testdata/gawk/aryprm9.awk create mode 100644 src/tool/awk/testdata/gawk/aryprm9.ok create mode 100644 src/tool/awk/testdata/gawk/arysubnm.awk create mode 100644 src/tool/awk/testdata/gawk/arysubnm.ok create mode 100644 src/tool/awk/testdata/gawk/aryunasgn.awk create mode 100644 src/tool/awk/testdata/gawk/aryunasgn.ok create mode 100644 src/tool/awk/testdata/gawk/asgext.awk create mode 100644 src/tool/awk/testdata/gawk/asgext.in create mode 100644 src/tool/awk/testdata/gawk/asgext.ok create mode 100644 src/tool/awk/testdata/gawk/assignnumfield.awk create mode 100644 src/tool/awk/testdata/gawk/assignnumfield.in create mode 100644 src/tool/awk/testdata/gawk/assignnumfield.ok create mode 100644 src/tool/awk/testdata/gawk/back89.awk create mode 100644 src/tool/awk/testdata/gawk/back89.ok create mode 100644 src/tool/awk/testdata/gawk/backgsub.awk create mode 100644 src/tool/awk/testdata/gawk/backgsub.in create mode 100644 src/tool/awk/testdata/gawk/backgsub.ok create mode 100644 src/tool/awk/testdata/gawk/badassign1.awk create mode 100644 src/tool/awk/testdata/gawk/badassign1.ok create mode 100644 src/tool/awk/testdata/gawk/badbuild.awk create mode 100644 src/tool/awk/testdata/gawk/badbuild.in create mode 100644 src/tool/awk/testdata/gawk/badbuild.ok create mode 100644 src/tool/awk/testdata/gawk/callparam.awk create mode 100644 src/tool/awk/testdata/gawk/callparam.ok create mode 100644 src/tool/awk/testdata/gawk/childin.awk create mode 100644 src/tool/awk/testdata/gawk/childin.in create mode 100644 src/tool/awk/testdata/gawk/childin.ok create mode 100644 src/tool/awk/testdata/gawk/clobber.awk create mode 100644 src/tool/awk/testdata/gawk/clobber.ok create mode 100644 src/tool/awk/testdata/gawk/closebad.awk create mode 100644 src/tool/awk/testdata/gawk/closebad.ok create mode 100644 src/tool/awk/testdata/gawk/compare.awk create mode 100644 src/tool/awk/testdata/gawk/compare.in create mode 100644 src/tool/awk/testdata/gawk/compare.ok create mode 100644 src/tool/awk/testdata/gawk/compare2.awk create mode 100644 src/tool/awk/testdata/gawk/compare2.ok create mode 100644 src/tool/awk/testdata/gawk/concat1.awk create mode 100644 src/tool/awk/testdata/gawk/concat1.in create mode 100644 src/tool/awk/testdata/gawk/concat1.ok create mode 100644 src/tool/awk/testdata/gawk/concat2.awk create mode 100644 src/tool/awk/testdata/gawk/concat2.ok create mode 100644 src/tool/awk/testdata/gawk/concat3.awk create mode 100644 src/tool/awk/testdata/gawk/concat3.ok create mode 100644 src/tool/awk/testdata/gawk/concat4.awk create mode 100644 src/tool/awk/testdata/gawk/concat4.in create mode 100644 src/tool/awk/testdata/gawk/concat4.ok create mode 100644 src/tool/awk/testdata/gawk/concat5.awk create mode 100644 src/tool/awk/testdata/gawk/concat5.ok create mode 100644 src/tool/awk/testdata/gawk/convfmt.awk create mode 100644 src/tool/awk/testdata/gawk/convfmt.ok create mode 100644 src/tool/awk/testdata/gawk/datanonl.awk create mode 100644 src/tool/awk/testdata/gawk/datanonl.in create mode 100644 src/tool/awk/testdata/gawk/datanonl.ok create mode 100644 src/tool/awk/testdata/gawk/defref.awk create mode 100644 src/tool/awk/testdata/gawk/defref.ok create mode 100644 src/tool/awk/testdata/gawk/delargv.awk create mode 100644 src/tool/awk/testdata/gawk/delargv.ok create mode 100644 src/tool/awk/testdata/gawk/delarpm2.awk create mode 100644 src/tool/awk/testdata/gawk/delarpm2.ok create mode 100644 src/tool/awk/testdata/gawk/delfunc.awk create mode 100644 src/tool/awk/testdata/gawk/delfunc.ok create mode 100644 src/tool/awk/testdata/gawk/dfastress.awk create mode 100644 src/tool/awk/testdata/gawk/dfastress.ok create mode 100644 src/tool/awk/testdata/gawk/dynlj.awk create mode 100644 src/tool/awk/testdata/gawk/dynlj.ok create mode 100644 src/tool/awk/testdata/gawk/eofsplit.awk create mode 100644 src/tool/awk/testdata/gawk/eofsplit.ok create mode 100644 src/tool/awk/testdata/gawk/exit2.awk create mode 100644 src/tool/awk/testdata/gawk/exit2.ok create mode 100644 src/tool/awk/testdata/gawk/exitval2.awk create mode 100644 src/tool/awk/testdata/gawk/exitval2.ok create mode 100644 src/tool/awk/testdata/gawk/fcall_exit.awk create mode 100644 src/tool/awk/testdata/gawk/fcall_exit.ok create mode 100644 src/tool/awk/testdata/gawk/fcall_exit2.awk create mode 100644 src/tool/awk/testdata/gawk/fcall_exit2.in create mode 100644 src/tool/awk/testdata/gawk/fcall_exit2.ok create mode 100644 src/tool/awk/testdata/gawk/fldchg.awk create mode 100644 src/tool/awk/testdata/gawk/fldchg.in create mode 100644 src/tool/awk/testdata/gawk/fldchg.ok create mode 100644 src/tool/awk/testdata/gawk/fldchgnf.awk create mode 100644 src/tool/awk/testdata/gawk/fldchgnf.in create mode 100644 src/tool/awk/testdata/gawk/fldchgnf.ok create mode 100644 src/tool/awk/testdata/gawk/fldterm.awk create mode 100644 src/tool/awk/testdata/gawk/fldterm.in create mode 100644 src/tool/awk/testdata/gawk/fldterm.ok create mode 100644 src/tool/awk/testdata/gawk/fnamedat.awk create mode 100644 src/tool/awk/testdata/gawk/fnamedat.in create mode 100644 src/tool/awk/testdata/gawk/fnamedat.ok create mode 100644 src/tool/awk/testdata/gawk/fnarray.awk create mode 100644 src/tool/awk/testdata/gawk/fnarray.ok create mode 100644 src/tool/awk/testdata/gawk/fnarray2.awk create mode 100644 src/tool/awk/testdata/gawk/fnarray2.in create mode 100644 src/tool/awk/testdata/gawk/fnarray2.ok create mode 100644 src/tool/awk/testdata/gawk/fnaryscl.awk create mode 100644 src/tool/awk/testdata/gawk/fnaryscl.ok create mode 100644 src/tool/awk/testdata/gawk/fnasgnm.awk create mode 100644 src/tool/awk/testdata/gawk/fnasgnm.in create mode 100644 src/tool/awk/testdata/gawk/fnasgnm.ok create mode 100644 src/tool/awk/testdata/gawk/fnmisc.awk create mode 100644 src/tool/awk/testdata/gawk/fnmisc.ok create mode 100644 src/tool/awk/testdata/gawk/forref.awk create mode 100644 src/tool/awk/testdata/gawk/forref.ok create mode 100644 src/tool/awk/testdata/gawk/forsimp.awk create mode 100644 src/tool/awk/testdata/gawk/forsimp.ok create mode 100644 src/tool/awk/testdata/gawk/fsbs.awk create mode 100644 src/tool/awk/testdata/gawk/fsbs.in create mode 100644 src/tool/awk/testdata/gawk/fsbs.ok create mode 100644 src/tool/awk/testdata/gawk/fsnul1.awk create mode 100644 src/tool/awk/testdata/gawk/fsnul1.in create mode 100644 src/tool/awk/testdata/gawk/fsnul1.ok create mode 100644 src/tool/awk/testdata/gawk/fsrs.awk create mode 100644 src/tool/awk/testdata/gawk/fsrs.in create mode 100644 src/tool/awk/testdata/gawk/fsrs.ok create mode 100644 src/tool/awk/testdata/gawk/fsspcoln.awk create mode 100644 src/tool/awk/testdata/gawk/fsspcoln.in create mode 100644 src/tool/awk/testdata/gawk/fsspcoln.ok create mode 100644 src/tool/awk/testdata/gawk/fstabplus.awk create mode 100644 src/tool/awk/testdata/gawk/fstabplus.in create mode 100644 src/tool/awk/testdata/gawk/fstabplus.ok create mode 100644 src/tool/awk/testdata/gawk/funsemnl.awk create mode 100644 src/tool/awk/testdata/gawk/funsemnl.ok create mode 100644 src/tool/awk/testdata/gawk/funsmnam.awk create mode 100644 src/tool/awk/testdata/gawk/funsmnam.ok create mode 100644 src/tool/awk/testdata/gawk/funstack.awk create mode 100644 src/tool/awk/testdata/gawk/funstack.in create mode 100644 src/tool/awk/testdata/gawk/funstack.ok create mode 100644 src/tool/awk/testdata/gawk/getline.awk create mode 100644 src/tool/awk/testdata/gawk/getline.in create mode 100644 src/tool/awk/testdata/gawk/getline.ok create mode 100644 src/tool/awk/testdata/gawk/getline2.awk create mode 100644 src/tool/awk/testdata/gawk/getline2.in create mode 100644 src/tool/awk/testdata/gawk/getline2.ok create mode 100644 src/tool/awk/testdata/gawk/getline3.awk create mode 100644 src/tool/awk/testdata/gawk/getline3.ok create mode 100644 src/tool/awk/testdata/gawk/getline4.awk create mode 100644 src/tool/awk/testdata/gawk/getline4.in create mode 100644 src/tool/awk/testdata/gawk/getline4.ok create mode 100644 src/tool/awk/testdata/gawk/getline5.awk create mode 100644 src/tool/awk/testdata/gawk/getline5.ok create mode 100644 src/tool/awk/testdata/gawk/getlnbuf.awk create mode 100644 src/tool/awk/testdata/gawk/getlnbuf.in create mode 100644 src/tool/awk/testdata/gawk/getlnbuf.ok create mode 100644 src/tool/awk/testdata/gawk/getnr2tb.awk create mode 100644 src/tool/awk/testdata/gawk/getnr2tb.in create mode 100644 src/tool/awk/testdata/gawk/getnr2tb.ok create mode 100644 src/tool/awk/testdata/gawk/getnr2tm.awk create mode 100644 src/tool/awk/testdata/gawk/getnr2tm.in create mode 100644 src/tool/awk/testdata/gawk/getnr2tm.ok create mode 100644 src/tool/awk/testdata/gawk/gsubasgn.awk create mode 100644 src/tool/awk/testdata/gawk/gsubasgn.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtest.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtest.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst2.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst2.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst3.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst3.in create mode 100644 src/tool/awk/testdata/gawk/gsubtst3.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst4.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst4.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst5.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst5.in create mode 100644 src/tool/awk/testdata/gawk/gsubtst5.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst6.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst6.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst7.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst7.in create mode 100644 src/tool/awk/testdata/gawk/gsubtst7.ok create mode 100644 src/tool/awk/testdata/gawk/gsubtst8.awk create mode 100644 src/tool/awk/testdata/gawk/gsubtst8.in create mode 100644 src/tool/awk/testdata/gawk/gsubtst8.ok create mode 100644 src/tool/awk/testdata/gawk/hex.awk create mode 100644 src/tool/awk/testdata/gawk/hex.ok create mode 100644 src/tool/awk/testdata/gawk/hex2.awk create mode 100644 src/tool/awk/testdata/gawk/hex2.in create mode 100644 src/tool/awk/testdata/gawk/hex2.ok create mode 100644 src/tool/awk/testdata/gawk/hsprint.awk create mode 100644 src/tool/awk/testdata/gawk/hsprint.ok create mode 100644 src/tool/awk/testdata/gawk/inpref.awk create mode 100644 src/tool/awk/testdata/gawk/inpref.in create mode 100644 src/tool/awk/testdata/gawk/inpref.ok create mode 100644 src/tool/awk/testdata/gawk/inputred.awk create mode 100644 src/tool/awk/testdata/gawk/inputred.ok create mode 100644 src/tool/awk/testdata/gawk/intest.awk create mode 100644 src/tool/awk/testdata/gawk/intest.ok create mode 100644 src/tool/awk/testdata/gawk/intprec.awk create mode 100644 src/tool/awk/testdata/gawk/intprec.ok create mode 100644 src/tool/awk/testdata/gawk/iobug1.awk create mode 100644 src/tool/awk/testdata/gawk/iobug1.ok create mode 100644 src/tool/awk/testdata/gawk/leaddig.awk create mode 100644 src/tool/awk/testdata/gawk/leaddig.ok create mode 100644 src/tool/awk/testdata/gawk/leadnl.awk create mode 100644 src/tool/awk/testdata/gawk/leadnl.in create mode 100644 src/tool/awk/testdata/gawk/leadnl.ok create mode 100644 src/tool/awk/testdata/gawk/litoct.awk create mode 100644 src/tool/awk/testdata/gawk/litoct.in create mode 100644 src/tool/awk/testdata/gawk/litoct.ok create mode 100644 src/tool/awk/testdata/gawk/longsub.awk create mode 100644 src/tool/awk/testdata/gawk/longsub.in create mode 100644 src/tool/awk/testdata/gawk/longsub.ok create mode 100644 src/tool/awk/testdata/gawk/longwrds.awk create mode 100644 src/tool/awk/testdata/gawk/longwrds.in create mode 100644 src/tool/awk/testdata/gawk/longwrds.ok create mode 100644 src/tool/awk/testdata/gawk/manglprm.awk create mode 100644 src/tool/awk/testdata/gawk/manglprm.in create mode 100644 src/tool/awk/testdata/gawk/manglprm.ok create mode 100644 src/tool/awk/testdata/gawk/math.awk create mode 100644 src/tool/awk/testdata/gawk/math.ok create mode 100644 src/tool/awk/testdata/gawk/minusstr.awk create mode 100644 src/tool/awk/testdata/gawk/minusstr.ok create mode 100644 src/tool/awk/testdata/gawk/mmap8k.awk create mode 100644 src/tool/awk/testdata/gawk/mmap8k.in create mode 100644 src/tool/awk/testdata/gawk/mmap8k.ok create mode 100644 src/tool/awk/testdata/gawk/nasty.awk create mode 100644 src/tool/awk/testdata/gawk/nasty.ok create mode 100644 src/tool/awk/testdata/gawk/nasty2.awk create mode 100644 src/tool/awk/testdata/gawk/nasty2.ok create mode 100644 src/tool/awk/testdata/gawk/negexp.awk create mode 100644 src/tool/awk/testdata/gawk/negexp.ok create mode 100644 src/tool/awk/testdata/gawk/negrange.awk create mode 100644 src/tool/awk/testdata/gawk/negrange.ok create mode 100644 src/tool/awk/testdata/gawk/nested.awk create mode 100644 src/tool/awk/testdata/gawk/nested.in create mode 100644 src/tool/awk/testdata/gawk/nested.ok create mode 100644 src/tool/awk/testdata/gawk/nfldstr.awk create mode 100644 src/tool/awk/testdata/gawk/nfldstr.in create mode 100644 src/tool/awk/testdata/gawk/nfldstr.ok create mode 100644 src/tool/awk/testdata/gawk/nfloop.awk create mode 100644 src/tool/awk/testdata/gawk/nfloop.ok create mode 100644 src/tool/awk/testdata/gawk/nfneg.awk create mode 100644 src/tool/awk/testdata/gawk/nfneg.ok create mode 100644 src/tool/awk/testdata/gawk/nfset.awk create mode 100644 src/tool/awk/testdata/gawk/nfset.in create mode 100644 src/tool/awk/testdata/gawk/nfset.ok create mode 100644 src/tool/awk/testdata/gawk/nlfldsep.awk create mode 100644 src/tool/awk/testdata/gawk/nlfldsep.in create mode 100644 src/tool/awk/testdata/gawk/nlfldsep.ok create mode 100644 src/tool/awk/testdata/gawk/nlinstr.awk create mode 100644 src/tool/awk/testdata/gawk/nlinstr.in create mode 100644 src/tool/awk/testdata/gawk/nlinstr.ok create mode 100644 src/tool/awk/testdata/gawk/nlstrina.awk create mode 100644 src/tool/awk/testdata/gawk/nlstrina.ok create mode 100644 src/tool/awk/testdata/gawk/noeffect.awk create mode 100644 src/tool/awk/testdata/gawk/noeffect.ok create mode 100644 src/tool/awk/testdata/gawk/nofmtch.awk create mode 100644 src/tool/awk/testdata/gawk/nofmtch.ok create mode 100644 src/tool/awk/testdata/gawk/noloop1.awk create mode 100644 src/tool/awk/testdata/gawk/noloop1.in create mode 100644 src/tool/awk/testdata/gawk/noloop1.ok create mode 100644 src/tool/awk/testdata/gawk/noloop2.awk create mode 100644 src/tool/awk/testdata/gawk/noloop2.in create mode 100644 src/tool/awk/testdata/gawk/noloop2.ok create mode 100644 src/tool/awk/testdata/gawk/nonl.awk create mode 100644 src/tool/awk/testdata/gawk/nonl.in create mode 100644 src/tool/awk/testdata/gawk/nonl.ok create mode 100644 src/tool/awk/testdata/gawk/noparms.awk create mode 100644 src/tool/awk/testdata/gawk/noparms.ok create mode 100644 src/tool/awk/testdata/gawk/nulinsrc.awk create mode 100644 src/tool/awk/testdata/gawk/nulinsrc.ok create mode 100644 src/tool/awk/testdata/gawk/nulrsend.awk create mode 100644 src/tool/awk/testdata/gawk/nulrsend.in create mode 100644 src/tool/awk/testdata/gawk/nulrsend.ok create mode 100644 src/tool/awk/testdata/gawk/numindex.awk create mode 100644 src/tool/awk/testdata/gawk/numindex.in create mode 100644 src/tool/awk/testdata/gawk/numindex.ok create mode 100644 src/tool/awk/testdata/gawk/numrange.awk create mode 100644 src/tool/awk/testdata/gawk/numrange.ok create mode 100644 src/tool/awk/testdata/gawk/numstr1.awk create mode 100644 src/tool/awk/testdata/gawk/numstr1.ok create mode 100644 src/tool/awk/testdata/gawk/numsubstr.awk create mode 100644 src/tool/awk/testdata/gawk/numsubstr.in create mode 100644 src/tool/awk/testdata/gawk/numsubstr.ok create mode 100644 src/tool/awk/testdata/gawk/octsub.awk create mode 100644 src/tool/awk/testdata/gawk/octsub.ok create mode 100644 src/tool/awk/testdata/gawk/ofmt.awk create mode 100644 src/tool/awk/testdata/gawk/ofmt.in create mode 100644 src/tool/awk/testdata/gawk/ofmt.ok create mode 100644 src/tool/awk/testdata/gawk/ofmta.awk create mode 100644 src/tool/awk/testdata/gawk/ofmta.ok create mode 100644 src/tool/awk/testdata/gawk/ofmtbig.awk create mode 100644 src/tool/awk/testdata/gawk/ofmtbig.in create mode 100644 src/tool/awk/testdata/gawk/ofmtbig.ok create mode 100644 src/tool/awk/testdata/gawk/ofmtfidl.awk create mode 100644 src/tool/awk/testdata/gawk/ofmtfidl.in create mode 100644 src/tool/awk/testdata/gawk/ofmtfidl.ok create mode 100644 src/tool/awk/testdata/gawk/ofmts.awk create mode 100644 src/tool/awk/testdata/gawk/ofmts.in create mode 100644 src/tool/awk/testdata/gawk/ofmts.ok create mode 100644 src/tool/awk/testdata/gawk/ofmtstrnum.awk create mode 100644 src/tool/awk/testdata/gawk/ofmtstrnum.ok create mode 100644 src/tool/awk/testdata/gawk/ofs1.awk create mode 100644 src/tool/awk/testdata/gawk/ofs1.in create mode 100644 src/tool/awk/testdata/gawk/ofs1.ok create mode 100644 src/tool/awk/testdata/gawk/onlynl.awk create mode 100644 src/tool/awk/testdata/gawk/onlynl.in create mode 100644 src/tool/awk/testdata/gawk/onlynl.ok create mode 100644 src/tool/awk/testdata/gawk/opasnidx.awk create mode 100644 src/tool/awk/testdata/gawk/opasnidx.ok create mode 100644 src/tool/awk/testdata/gawk/opasnslf.awk create mode 100644 src/tool/awk/testdata/gawk/opasnslf.ok create mode 100644 src/tool/awk/testdata/gawk/paramasfunc1.awk create mode 100644 src/tool/awk/testdata/gawk/paramasfunc1.ok create mode 100644 src/tool/awk/testdata/gawk/paramasfunc2.awk create mode 100644 src/tool/awk/testdata/gawk/paramasfunc2.ok create mode 100644 src/tool/awk/testdata/gawk/paramdup.awk create mode 100644 src/tool/awk/testdata/gawk/paramdup.ok create mode 100644 src/tool/awk/testdata/gawk/paramtyp.awk create mode 100644 src/tool/awk/testdata/gawk/paramtyp.ok create mode 100644 src/tool/awk/testdata/gawk/paramuninitglobal.awk create mode 100644 src/tool/awk/testdata/gawk/paramuninitglobal.ok create mode 100644 src/tool/awk/testdata/gawk/parse1.awk create mode 100644 src/tool/awk/testdata/gawk/parse1.in create mode 100644 src/tool/awk/testdata/gawk/parse1.ok create mode 100644 src/tool/awk/testdata/gawk/parsefld.awk create mode 100644 src/tool/awk/testdata/gawk/parsefld.in create mode 100644 src/tool/awk/testdata/gawk/parsefld.ok create mode 100644 src/tool/awk/testdata/gawk/parseme.awk create mode 100644 src/tool/awk/testdata/gawk/parseme.ok create mode 100644 src/tool/awk/testdata/gawk/pcntplus.awk create mode 100644 src/tool/awk/testdata/gawk/pcntplus.ok create mode 100644 src/tool/awk/testdata/gawk/posix2008sub.awk create mode 100644 src/tool/awk/testdata/gawk/posix2008sub.ok create mode 100644 src/tool/awk/testdata/gawk/prdupval.awk create mode 100644 src/tool/awk/testdata/gawk/prdupval.in create mode 100644 src/tool/awk/testdata/gawk/prdupval.ok create mode 100644 src/tool/awk/testdata/gawk/prec.awk create mode 100644 src/tool/awk/testdata/gawk/prec.ok create mode 100644 src/tool/awk/testdata/gawk/printf1.awk create mode 100644 src/tool/awk/testdata/gawk/printf1.ok create mode 100644 src/tool/awk/testdata/gawk/printfchar.awk create mode 100644 src/tool/awk/testdata/gawk/printfchar.ok create mode 100644 src/tool/awk/testdata/gawk/prmarscl.awk create mode 100644 src/tool/awk/testdata/gawk/prmarscl.ok create mode 100644 src/tool/awk/testdata/gawk/prmreuse.awk create mode 100644 src/tool/awk/testdata/gawk/prmreuse.ok create mode 100644 src/tool/awk/testdata/gawk/prt1eval.awk create mode 100644 src/tool/awk/testdata/gawk/prt1eval.ok create mode 100644 src/tool/awk/testdata/gawk/prtoeval.awk create mode 100644 src/tool/awk/testdata/gawk/prtoeval.ok create mode 100644 src/tool/awk/testdata/gawk/rand.awk create mode 100644 src/tool/awk/testdata/gawk/rand.ok create mode 100644 src/tool/awk/testdata/gawk/range1.awk create mode 100644 src/tool/awk/testdata/gawk/range1.in create mode 100644 src/tool/awk/testdata/gawk/range1.ok create mode 100644 src/tool/awk/testdata/gawk/readbuf.awk create mode 100644 src/tool/awk/testdata/gawk/readbuf.ok create mode 100644 src/tool/awk/testdata/gawk/rebuild.awk create mode 100644 src/tool/awk/testdata/gawk/rebuild.in create mode 100644 src/tool/awk/testdata/gawk/rebuild.ok create mode 100644 src/tool/awk/testdata/gawk/redfilnm.awk create mode 100644 src/tool/awk/testdata/gawk/redfilnm.in create mode 100644 src/tool/awk/testdata/gawk/redfilnm.ok create mode 100644 src/tool/awk/testdata/gawk/regeq.awk create mode 100644 src/tool/awk/testdata/gawk/regeq.in create mode 100644 src/tool/awk/testdata/gawk/regeq.ok create mode 100644 src/tool/awk/testdata/gawk/regexpbrack.awk create mode 100644 src/tool/awk/testdata/gawk/regexpbrack.in create mode 100644 src/tool/awk/testdata/gawk/regexpbrack.ok create mode 100644 src/tool/awk/testdata/gawk/regexpbrack2.awk create mode 100644 src/tool/awk/testdata/gawk/regexpbrack2.in create mode 100644 src/tool/awk/testdata/gawk/regexpbrack2.ok create mode 100644 src/tool/awk/testdata/gawk/regexprange.awk create mode 100644 src/tool/awk/testdata/gawk/regexprange.ok create mode 100644 src/tool/awk/testdata/gawk/regrange.awk create mode 100644 src/tool/awk/testdata/gawk/regrange.ok create mode 100644 src/tool/awk/testdata/gawk/reparse.awk create mode 100644 src/tool/awk/testdata/gawk/reparse.in create mode 100644 src/tool/awk/testdata/gawk/reparse.ok create mode 100644 src/tool/awk/testdata/gawk/resplit.awk create mode 100644 src/tool/awk/testdata/gawk/resplit.in create mode 100644 src/tool/awk/testdata/gawk/resplit.ok create mode 100644 src/tool/awk/testdata/gawk/rri1.awk create mode 100644 src/tool/awk/testdata/gawk/rri1.in create mode 100644 src/tool/awk/testdata/gawk/rri1.ok create mode 100644 src/tool/awk/testdata/gawk/rs.awk create mode 100644 src/tool/awk/testdata/gawk/rs.in create mode 100644 src/tool/awk/testdata/gawk/rs.ok create mode 100644 src/tool/awk/testdata/gawk/rscompat.awk create mode 100644 src/tool/awk/testdata/gawk/rscompat.in create mode 100644 src/tool/awk/testdata/gawk/rscompat.ok create mode 100644 src/tool/awk/testdata/gawk/rsgetline.awk create mode 100644 src/tool/awk/testdata/gawk/rsgetline.in create mode 100644 src/tool/awk/testdata/gawk/rsgetline.ok create mode 100644 src/tool/awk/testdata/gawk/rsnul1nl.awk create mode 100644 src/tool/awk/testdata/gawk/rsnul1nl.in create mode 100644 src/tool/awk/testdata/gawk/rsnul1nl.ok create mode 100644 src/tool/awk/testdata/gawk/rsnullre.awk create mode 100644 src/tool/awk/testdata/gawk/rsnullre.in create mode 100644 src/tool/awk/testdata/gawk/rsnullre.ok create mode 100644 src/tool/awk/testdata/gawk/rsnulw.awk create mode 100644 src/tool/awk/testdata/gawk/rsnulw.in create mode 100644 src/tool/awk/testdata/gawk/rsnulw.ok create mode 100644 src/tool/awk/testdata/gawk/rsstart1.awk create mode 100644 src/tool/awk/testdata/gawk/rsstart1.in create mode 100644 src/tool/awk/testdata/gawk/rsstart1.ok create mode 100644 src/tool/awk/testdata/gawk/rsstart2.awk create mode 100644 src/tool/awk/testdata/gawk/rsstart2.in create mode 100644 src/tool/awk/testdata/gawk/rsstart2.ok create mode 100644 src/tool/awk/testdata/gawk/rstest1.awk create mode 100644 src/tool/awk/testdata/gawk/rstest1.ok create mode 100644 src/tool/awk/testdata/gawk/rstest2.awk create mode 100644 src/tool/awk/testdata/gawk/rstest2.ok create mode 100644 src/tool/awk/testdata/gawk/rstest3.awk create mode 100644 src/tool/awk/testdata/gawk/rstest3.ok create mode 100644 src/tool/awk/testdata/gawk/rstest4.awk create mode 100644 src/tool/awk/testdata/gawk/rstest4.ok create mode 100644 src/tool/awk/testdata/gawk/rstest5.awk create mode 100644 src/tool/awk/testdata/gawk/rstest5.ok create mode 100644 src/tool/awk/testdata/gawk/rstest6.awk create mode 100644 src/tool/awk/testdata/gawk/rstest6.in create mode 100644 src/tool/awk/testdata/gawk/rstest6.ok create mode 100644 src/tool/awk/testdata/gawk/rswhite.awk create mode 100644 src/tool/awk/testdata/gawk/rswhite.in create mode 100644 src/tool/awk/testdata/gawk/rswhite.ok create mode 100644 src/tool/awk/testdata/gawk/scalar.awk create mode 100644 src/tool/awk/testdata/gawk/scalar.ok create mode 100644 src/tool/awk/testdata/gawk/sclforin.awk create mode 100644 src/tool/awk/testdata/gawk/sclforin.ok create mode 100644 src/tool/awk/testdata/gawk/sclifin.awk create mode 100644 src/tool/awk/testdata/gawk/sclifin.ok create mode 100644 src/tool/awk/testdata/gawk/setrec0.awk create mode 100644 src/tool/awk/testdata/gawk/setrec0.in create mode 100644 src/tool/awk/testdata/gawk/setrec0.ok create mode 100644 src/tool/awk/testdata/gawk/setrec1.awk create mode 100644 src/tool/awk/testdata/gawk/setrec1.ok create mode 100644 src/tool/awk/testdata/gawk/sigpipe1.awk create mode 100644 src/tool/awk/testdata/gawk/sigpipe1.ok create mode 100644 src/tool/awk/testdata/gawk/spacere.awk create mode 100644 src/tool/awk/testdata/gawk/spacere.ok create mode 100644 src/tool/awk/testdata/gawk/splitargv.awk create mode 100644 src/tool/awk/testdata/gawk/splitargv.in create mode 100644 src/tool/awk/testdata/gawk/splitargv.ok create mode 100644 src/tool/awk/testdata/gawk/splitarr.awk create mode 100644 src/tool/awk/testdata/gawk/splitarr.ok create mode 100644 src/tool/awk/testdata/gawk/splitdef.awk create mode 100644 src/tool/awk/testdata/gawk/splitdef.ok create mode 100644 src/tool/awk/testdata/gawk/splitvar.awk create mode 100644 src/tool/awk/testdata/gawk/splitvar.in create mode 100644 src/tool/awk/testdata/gawk/splitvar.ok create mode 100644 src/tool/awk/testdata/gawk/splitwht.awk create mode 100644 src/tool/awk/testdata/gawk/splitwht.ok create mode 100644 src/tool/awk/testdata/gawk/status-close.awk create mode 100644 src/tool/awk/testdata/gawk/status-close.ok create mode 100644 src/tool/awk/testdata/gawk/strcat1.awk create mode 100644 src/tool/awk/testdata/gawk/strcat1.ok create mode 100644 src/tool/awk/testdata/gawk/strnum1.awk create mode 100644 src/tool/awk/testdata/gawk/strnum1.ok create mode 100644 src/tool/awk/testdata/gawk/strnum2.awk create mode 100644 src/tool/awk/testdata/gawk/strnum2.ok create mode 100644 src/tool/awk/testdata/gawk/strtod.awk create mode 100644 src/tool/awk/testdata/gawk/strtod.in create mode 100644 src/tool/awk/testdata/gawk/strtod.ok create mode 100644 src/tool/awk/testdata/gawk/subamp.awk create mode 100644 src/tool/awk/testdata/gawk/subamp.in create mode 100644 src/tool/awk/testdata/gawk/subamp.ok create mode 100644 src/tool/awk/testdata/gawk/subback.awk create mode 100644 src/tool/awk/testdata/gawk/subback.in create mode 100644 src/tool/awk/testdata/gawk/subback.ok create mode 100644 src/tool/awk/testdata/gawk/subi18n.awk create mode 100644 src/tool/awk/testdata/gawk/subi18n.ok create mode 100644 src/tool/awk/testdata/gawk/subsepnm.awk create mode 100644 src/tool/awk/testdata/gawk/subsepnm.ok create mode 100644 src/tool/awk/testdata/gawk/subslash.awk create mode 100644 src/tool/awk/testdata/gawk/subslash.ok create mode 100644 src/tool/awk/testdata/gawk/substr.awk create mode 100644 src/tool/awk/testdata/gawk/substr.ok create mode 100644 src/tool/awk/testdata/gawk/swaplns.awk create mode 100644 src/tool/awk/testdata/gawk/swaplns.in create mode 100644 src/tool/awk/testdata/gawk/swaplns.ok create mode 100644 src/tool/awk/testdata/gawk/synerr1.awk create mode 100644 src/tool/awk/testdata/gawk/synerr1.ok create mode 100644 src/tool/awk/testdata/gawk/synerr2.awk create mode 100644 src/tool/awk/testdata/gawk/synerr2.ok create mode 100644 src/tool/awk/testdata/gawk/tailrecurse.awk create mode 100644 src/tool/awk/testdata/gawk/tailrecurse.ok create mode 100644 src/tool/awk/testdata/gawk/tradanch.awk create mode 100644 src/tool/awk/testdata/gawk/tradanch.in create mode 100644 src/tool/awk/testdata/gawk/tradanch.ok create mode 100644 src/tool/awk/testdata/gawk/tweakfld.awk create mode 100644 src/tool/awk/testdata/gawk/tweakfld.in create mode 100644 src/tool/awk/testdata/gawk/tweakfld.ok create mode 100644 src/tool/awk/testdata/gawk/uninit2.awk create mode 100644 src/tool/awk/testdata/gawk/uninit2.ok create mode 100644 src/tool/awk/testdata/gawk/uninit3.awk create mode 100644 src/tool/awk/testdata/gawk/uninit3.ok create mode 100644 src/tool/awk/testdata/gawk/uninit4.awk create mode 100644 src/tool/awk/testdata/gawk/uninit4.ok create mode 100644 src/tool/awk/testdata/gawk/uninit5.awk create mode 100644 src/tool/awk/testdata/gawk/uninit5.ok create mode 100644 src/tool/awk/testdata/gawk/uninitialized.awk create mode 100644 src/tool/awk/testdata/gawk/uninitialized.ok create mode 100644 src/tool/awk/testdata/gawk/unterm.awk create mode 100644 src/tool/awk/testdata/gawk/unterm.ok create mode 100644 src/tool/awk/testdata/gawk/uparrfs.awk create mode 100644 src/tool/awk/testdata/gawk/uparrfs.in create mode 100644 src/tool/awk/testdata/gawk/uparrfs.ok create mode 100644 src/tool/awk/testdata/gawk/uplus.awk create mode 100644 src/tool/awk/testdata/gawk/uplus.ok create mode 100644 src/tool/awk/testdata/gawk/wideidx.awk create mode 100644 src/tool/awk/testdata/gawk/wideidx.in create mode 100644 src/tool/awk/testdata/gawk/wideidx.ok create mode 100644 src/tool/awk/testdata/gawk/wideidx2.awk create mode 100644 src/tool/awk/testdata/gawk/wideidx2.ok create mode 100644 src/tool/awk/testdata/gawk/widesub.awk create mode 100644 src/tool/awk/testdata/gawk/widesub.ok create mode 100644 src/tool/awk/testdata/gawk/widesub2.awk create mode 100644 src/tool/awk/testdata/gawk/widesub2.ok create mode 100644 src/tool/awk/testdata/gawk/widesub3.awk create mode 100644 src/tool/awk/testdata/gawk/widesub3.in create mode 100644 src/tool/awk/testdata/gawk/widesub3.ok create mode 100644 src/tool/awk/testdata/gawk/widesub4.awk create mode 100644 src/tool/awk/testdata/gawk/widesub4.ok create mode 100644 src/tool/awk/testdata/gawk/wjposer1.awk create mode 100644 src/tool/awk/testdata/gawk/wjposer1.in create mode 100644 src/tool/awk/testdata/gawk/wjposer1.ok create mode 100644 src/tool/awk/testdata/gawk/zero2.awk create mode 100644 src/tool/awk/testdata/gawk/zero2.ok create mode 100644 src/tool/awk/testdata/gawk/zeroe0.awk create mode 100644 src/tool/awk/testdata/gawk/zeroe0.ok create mode 100644 src/tool/awk/testdata/gawk/zeroflag.awk create mode 100644 src/tool/awk/testdata/gawk/zeroflag.ok create mode 100644 src/tool/awk/testdata/output/p.1 create mode 100644 src/tool/awk/testdata/output/p.10 create mode 100644 src/tool/awk/testdata/output/p.11 create mode 100644 src/tool/awk/testdata/output/p.12 create mode 100644 src/tool/awk/testdata/output/p.13 create mode 100644 src/tool/awk/testdata/output/p.14 create mode 100644 src/tool/awk/testdata/output/p.15 create mode 100644 src/tool/awk/testdata/output/p.16 create mode 100644 src/tool/awk/testdata/output/p.17 create mode 100644 src/tool/awk/testdata/output/p.18 create mode 100644 src/tool/awk/testdata/output/p.19 create mode 100644 src/tool/awk/testdata/output/p.2 create mode 100644 src/tool/awk/testdata/output/p.20 create mode 100644 src/tool/awk/testdata/output/p.21 create mode 100644 src/tool/awk/testdata/output/p.21a create mode 100644 src/tool/awk/testdata/output/p.22 create mode 100644 src/tool/awk/testdata/output/p.23 create mode 100644 src/tool/awk/testdata/output/p.24 create mode 100644 src/tool/awk/testdata/output/p.25 create mode 100644 src/tool/awk/testdata/output/p.26 create mode 100644 src/tool/awk/testdata/output/p.26a create mode 100644 src/tool/awk/testdata/output/p.27 create mode 100644 src/tool/awk/testdata/output/p.28 create mode 100644 src/tool/awk/testdata/output/p.29 create mode 100644 src/tool/awk/testdata/output/p.3 create mode 100644 src/tool/awk/testdata/output/p.30 create mode 100644 src/tool/awk/testdata/output/p.31 create mode 100644 src/tool/awk/testdata/output/p.32 create mode 100644 src/tool/awk/testdata/output/p.33 create mode 100644 src/tool/awk/testdata/output/p.34 create mode 100644 src/tool/awk/testdata/output/p.35 create mode 100644 src/tool/awk/testdata/output/p.36 create mode 100644 src/tool/awk/testdata/output/p.37 create mode 100644 src/tool/awk/testdata/output/p.38 create mode 100644 src/tool/awk/testdata/output/p.39 create mode 100644 src/tool/awk/testdata/output/p.4 create mode 100644 src/tool/awk/testdata/output/p.40 create mode 100644 src/tool/awk/testdata/output/p.41 create mode 100644 src/tool/awk/testdata/output/p.42 create mode 100644 src/tool/awk/testdata/output/p.43 create mode 100644 src/tool/awk/testdata/output/p.44 create mode 100644 src/tool/awk/testdata/output/p.45 create mode 100644 src/tool/awk/testdata/output/p.46 create mode 100644 src/tool/awk/testdata/output/p.47 create mode 100644 src/tool/awk/testdata/output/p.48 create mode 100644 src/tool/awk/testdata/output/p.48a create mode 100644 src/tool/awk/testdata/output/p.48b create mode 100644 src/tool/awk/testdata/output/p.49 create mode 100644 src/tool/awk/testdata/output/p.5 create mode 100644 src/tool/awk/testdata/output/p.50 create mode 100644 src/tool/awk/testdata/output/p.51 create mode 100644 src/tool/awk/testdata/output/p.52 create mode 100644 src/tool/awk/testdata/output/p.5a create mode 100644 src/tool/awk/testdata/output/p.6 create mode 100644 src/tool/awk/testdata/output/p.7 create mode 100644 src/tool/awk/testdata/output/p.8 create mode 100644 src/tool/awk/testdata/output/p.9 create mode 100644 src/tool/awk/testdata/output/p.table create mode 100644 src/tool/awk/testdata/output/t.0 create mode 100644 src/tool/awk/testdata/output/t.0a create mode 100644 src/tool/awk/testdata/output/t.1 create mode 100644 src/tool/awk/testdata/output/t.1.x create mode 100644 src/tool/awk/testdata/output/t.2 create mode 100644 src/tool/awk/testdata/output/t.2.x create mode 100644 src/tool/awk/testdata/output/t.3 create mode 100644 src/tool/awk/testdata/output/t.3.x create mode 100644 src/tool/awk/testdata/output/t.4 create mode 100644 src/tool/awk/testdata/output/t.4.x create mode 100644 src/tool/awk/testdata/output/t.5.x create mode 100644 src/tool/awk/testdata/output/t.6 create mode 100644 src/tool/awk/testdata/output/t.6.x create mode 100644 src/tool/awk/testdata/output/t.6a create mode 100644 src/tool/awk/testdata/output/t.6b create mode 100644 src/tool/awk/testdata/output/t.8.x create mode 100644 src/tool/awk/testdata/output/t.8.y create mode 100644 src/tool/awk/testdata/output/t.NF create mode 100644 src/tool/awk/testdata/output/t.a create mode 100644 src/tool/awk/testdata/output/t.addops create mode 100644 src/tool/awk/testdata/output/t.aeiou create mode 100644 src/tool/awk/testdata/output/t.aeiouy create mode 100644 src/tool/awk/testdata/output/t.arith create mode 100644 src/tool/awk/testdata/output/t.array create mode 100644 src/tool/awk/testdata/output/t.array1 create mode 100644 src/tool/awk/testdata/output/t.array2 create mode 100644 src/tool/awk/testdata/output/t.assert create mode 100644 src/tool/awk/testdata/output/t.avg create mode 100644 src/tool/awk/testdata/output/t.b.x create mode 100644 src/tool/awk/testdata/output/t.be create mode 100644 src/tool/awk/testdata/output/t.beginexit create mode 100644 src/tool/awk/testdata/output/t.beginnext create mode 100644 src/tool/awk/testdata/output/t.break create mode 100644 src/tool/awk/testdata/output/t.break1 create mode 100644 src/tool/awk/testdata/output/t.break2 create mode 100644 src/tool/awk/testdata/output/t.break3 create mode 100644 src/tool/awk/testdata/output/t.bug1 create mode 100644 src/tool/awk/testdata/output/t.builtins create mode 100644 src/tool/awk/testdata/output/t.cat create mode 100644 src/tool/awk/testdata/output/t.cat1 create mode 100644 src/tool/awk/testdata/output/t.cat2 create mode 100644 src/tool/awk/testdata/output/t.cmp create mode 100644 src/tool/awk/testdata/output/t.coerce create mode 100644 src/tool/awk/testdata/output/t.coerce2 create mode 100644 src/tool/awk/testdata/output/t.comment create mode 100644 src/tool/awk/testdata/output/t.comment1 create mode 100644 src/tool/awk/testdata/output/t.concat create mode 100644 src/tool/awk/testdata/output/t.cond create mode 100644 src/tool/awk/testdata/output/t.contin create mode 100644 src/tool/awk/testdata/output/t.count create mode 100644 src/tool/awk/testdata/output/t.crlf create mode 100644 src/tool/awk/testdata/output/t.cum create mode 100644 src/tool/awk/testdata/output/t.d.x create mode 100644 src/tool/awk/testdata/output/t.delete1 create mode 100644 src/tool/awk/testdata/output/t.delete2 create mode 100644 src/tool/awk/testdata/output/t.delete3 create mode 100644 src/tool/awk/testdata/output/t.do create mode 100644 src/tool/awk/testdata/output/t.e create mode 100644 src/tool/awk/testdata/output/t.else create mode 100644 src/tool/awk/testdata/output/t.exit create mode 100644 src/tool/awk/testdata/output/t.exit1 create mode 100644 src/tool/awk/testdata/output/t.f create mode 100644 src/tool/awk/testdata/output/t.f.x create mode 100644 src/tool/awk/testdata/output/t.f0 create mode 100644 src/tool/awk/testdata/output/t.f1 create mode 100644 src/tool/awk/testdata/output/t.f2 create mode 100644 src/tool/awk/testdata/output/t.f3 create mode 100644 src/tool/awk/testdata/output/t.f4 create mode 100644 src/tool/awk/testdata/output/t.for create mode 100644 src/tool/awk/testdata/output/t.for1 create mode 100644 src/tool/awk/testdata/output/t.for2 create mode 100644 src/tool/awk/testdata/output/t.for3 create mode 100644 src/tool/awk/testdata/output/t.format4 create mode 100644 src/tool/awk/testdata/output/t.fun create mode 100644 src/tool/awk/testdata/output/t.fun0 create mode 100644 src/tool/awk/testdata/output/t.fun1 create mode 100644 src/tool/awk/testdata/output/t.fun2 create mode 100644 src/tool/awk/testdata/output/t.fun3 create mode 100644 src/tool/awk/testdata/output/t.fun4 create mode 100644 src/tool/awk/testdata/output/t.fun5 create mode 100644 src/tool/awk/testdata/output/t.getval create mode 100644 src/tool/awk/testdata/output/t.gsub create mode 100644 src/tool/awk/testdata/output/t.gsub1 create mode 100644 src/tool/awk/testdata/output/t.gsub3 create mode 100644 src/tool/awk/testdata/output/t.gsub4 create mode 100644 src/tool/awk/testdata/output/t.i.x create mode 100644 src/tool/awk/testdata/output/t.if create mode 100644 src/tool/awk/testdata/output/t.in create mode 100644 src/tool/awk/testdata/output/t.in1 create mode 100644 src/tool/awk/testdata/output/t.in2 create mode 100644 src/tool/awk/testdata/output/t.in3 create mode 100644 src/tool/awk/testdata/output/t.incr create mode 100644 src/tool/awk/testdata/output/t.incr2 create mode 100644 src/tool/awk/testdata/output/t.incr3 create mode 100644 src/tool/awk/testdata/output/t.index create mode 100644 src/tool/awk/testdata/output/t.intest create mode 100644 src/tool/awk/testdata/output/t.intest2 create mode 100644 src/tool/awk/testdata/output/t.j.x create mode 100644 src/tool/awk/testdata/output/t.longstr create mode 100644 src/tool/awk/testdata/output/t.makef create mode 100644 src/tool/awk/testdata/output/t.match create mode 100644 src/tool/awk/testdata/output/t.match1 create mode 100644 src/tool/awk/testdata/output/t.max create mode 100644 src/tool/awk/testdata/output/t.mod create mode 100644 src/tool/awk/testdata/output/t.monotone create mode 100644 src/tool/awk/testdata/output/t.nameval create mode 100644 src/tool/awk/testdata/output/t.next create mode 100644 src/tool/awk/testdata/output/t.not create mode 100644 src/tool/awk/testdata/output/t.null0 create mode 100644 src/tool/awk/testdata/output/t.ofmt create mode 100644 src/tool/awk/testdata/output/t.ofs create mode 100644 src/tool/awk/testdata/output/t.ors create mode 100644 src/tool/awk/testdata/output/t.pat create mode 100644 src/tool/awk/testdata/output/t.pipe create mode 100644 src/tool/awk/testdata/output/t.pp create mode 100644 src/tool/awk/testdata/output/t.pp1 create mode 100644 src/tool/awk/testdata/output/t.pp2 create mode 100644 src/tool/awk/testdata/output/t.printf create mode 100644 src/tool/awk/testdata/output/t.printf2 create mode 100644 src/tool/awk/testdata/output/t.quote create mode 100644 src/tool/awk/testdata/output/t.randk create mode 100644 src/tool/awk/testdata/output/t.re1 create mode 100644 src/tool/awk/testdata/output/t.re1a create mode 100644 src/tool/awk/testdata/output/t.re2 create mode 100644 src/tool/awk/testdata/output/t.re3 create mode 100644 src/tool/awk/testdata/output/t.re4 create mode 100644 src/tool/awk/testdata/output/t.re5 create mode 100644 src/tool/awk/testdata/output/t.re7 create mode 100644 src/tool/awk/testdata/output/t.reFS create mode 100644 src/tool/awk/testdata/output/t.rec create mode 100644 src/tool/awk/testdata/output/t.reg create mode 100644 src/tool/awk/testdata/output/t.roff create mode 100644 src/tool/awk/testdata/output/t.sep create mode 100644 src/tool/awk/testdata/output/t.seqno create mode 100644 src/tool/awk/testdata/output/t.set0 create mode 100644 src/tool/awk/testdata/output/t.set0a create mode 100644 src/tool/awk/testdata/output/t.set0b create mode 100644 src/tool/awk/testdata/output/t.set1 create mode 100644 src/tool/awk/testdata/output/t.set2 create mode 100644 src/tool/awk/testdata/output/t.set3 create mode 100644 src/tool/awk/testdata/output/t.split2 create mode 100644 src/tool/awk/testdata/output/t.split2a create mode 100644 src/tool/awk/testdata/output/t.split3 create mode 100644 src/tool/awk/testdata/output/t.split4 create mode 100644 src/tool/awk/testdata/output/t.split8 create mode 100644 src/tool/awk/testdata/output/t.split9 create mode 100644 src/tool/awk/testdata/output/t.split9a create mode 100644 src/tool/awk/testdata/output/t.stately create mode 100644 src/tool/awk/testdata/output/t.strcmp create mode 100644 src/tool/awk/testdata/output/t.strcmp1 create mode 100644 src/tool/awk/testdata/output/t.strnum create mode 100644 src/tool/awk/testdata/output/t.sub1 create mode 100644 src/tool/awk/testdata/output/t.sub2 create mode 100644 src/tool/awk/testdata/output/t.sub3 create mode 100644 src/tool/awk/testdata/output/t.substr create mode 100644 src/tool/awk/testdata/output/t.substr1 create mode 100644 src/tool/awk/testdata/output/t.time create mode 100644 src/tool/awk/testdata/output/t.vf create mode 100644 src/tool/awk/testdata/output/t.vf1 create mode 100644 src/tool/awk/testdata/output/t.vf2 create mode 100644 src/tool/awk/testdata/output/t.vf3 create mode 100644 src/tool/awk/testdata/output/t.x create mode 100644 src/tool/awk/testdata/p.1 create mode 100644 src/tool/awk/testdata/p.10 create mode 100644 src/tool/awk/testdata/p.11 create mode 100644 src/tool/awk/testdata/p.12 create mode 100644 src/tool/awk/testdata/p.13 create mode 100644 src/tool/awk/testdata/p.14 create mode 100644 src/tool/awk/testdata/p.15 create mode 100644 src/tool/awk/testdata/p.16 create mode 100644 src/tool/awk/testdata/p.17 create mode 100644 src/tool/awk/testdata/p.18 create mode 100644 src/tool/awk/testdata/p.19 create mode 100644 src/tool/awk/testdata/p.2 create mode 100644 src/tool/awk/testdata/p.20 create mode 100644 src/tool/awk/testdata/p.21 create mode 100644 src/tool/awk/testdata/p.21a create mode 100644 src/tool/awk/testdata/p.22 create mode 100644 src/tool/awk/testdata/p.23 create mode 100644 src/tool/awk/testdata/p.24 create mode 100644 src/tool/awk/testdata/p.25 create mode 100644 src/tool/awk/testdata/p.26 create mode 100644 src/tool/awk/testdata/p.26a create mode 100644 src/tool/awk/testdata/p.27 create mode 100644 src/tool/awk/testdata/p.28 create mode 100644 src/tool/awk/testdata/p.29 create mode 100644 src/tool/awk/testdata/p.3 create mode 100644 src/tool/awk/testdata/p.30 create mode 100644 src/tool/awk/testdata/p.31 create mode 100644 src/tool/awk/testdata/p.32 create mode 100644 src/tool/awk/testdata/p.33 create mode 100644 src/tool/awk/testdata/p.34 create mode 100644 src/tool/awk/testdata/p.35 create mode 100644 src/tool/awk/testdata/p.36 create mode 100644 src/tool/awk/testdata/p.37 create mode 100644 src/tool/awk/testdata/p.38 create mode 100644 src/tool/awk/testdata/p.39 create mode 100644 src/tool/awk/testdata/p.4 create mode 100644 src/tool/awk/testdata/p.40 create mode 100644 src/tool/awk/testdata/p.41 create mode 100644 src/tool/awk/testdata/p.42 create mode 100644 src/tool/awk/testdata/p.43 create mode 100644 src/tool/awk/testdata/p.44 create mode 100644 src/tool/awk/testdata/p.45 create mode 100644 src/tool/awk/testdata/p.46 create mode 100644 src/tool/awk/testdata/p.47 create mode 100644 src/tool/awk/testdata/p.48 create mode 100644 src/tool/awk/testdata/p.48a create mode 100644 src/tool/awk/testdata/p.48b create mode 100644 src/tool/awk/testdata/p.49 create mode 100644 src/tool/awk/testdata/p.5 create mode 100644 src/tool/awk/testdata/p.50 create mode 100644 src/tool/awk/testdata/p.51 create mode 100644 src/tool/awk/testdata/p.52 create mode 100644 src/tool/awk/testdata/p.5a create mode 100644 src/tool/awk/testdata/p.6 create mode 100644 src/tool/awk/testdata/p.7 create mode 100644 src/tool/awk/testdata/p.8 create mode 100644 src/tool/awk/testdata/p.9 create mode 100644 src/tool/awk/testdata/p.table create mode 100644 src/tool/awk/testdata/parseerror/bad.awk create mode 100644 src/tool/awk/testdata/parseerror/good.awk create mode 100644 src/tool/awk/testdata/t.0 create mode 100644 src/tool/awk/testdata/t.0a create mode 100644 src/tool/awk/testdata/t.1 create mode 100644 src/tool/awk/testdata/t.1.x create mode 100644 src/tool/awk/testdata/t.2 create mode 100644 src/tool/awk/testdata/t.2.x create mode 100644 src/tool/awk/testdata/t.3 create mode 100644 src/tool/awk/testdata/t.3.x create mode 100644 src/tool/awk/testdata/t.4 create mode 100644 src/tool/awk/testdata/t.4.x create mode 100644 src/tool/awk/testdata/t.5.x create mode 100644 src/tool/awk/testdata/t.6 create mode 100644 src/tool/awk/testdata/t.6.x create mode 100644 src/tool/awk/testdata/t.6a create mode 100644 src/tool/awk/testdata/t.6b create mode 100644 src/tool/awk/testdata/t.8.x create mode 100644 src/tool/awk/testdata/t.8.y create mode 100644 src/tool/awk/testdata/t.NF create mode 100644 src/tool/awk/testdata/t.a create mode 100644 src/tool/awk/testdata/t.addops create mode 100644 src/tool/awk/testdata/t.aeiou create mode 100644 src/tool/awk/testdata/t.aeiouy create mode 100644 src/tool/awk/testdata/t.arith create mode 100644 src/tool/awk/testdata/t.array create mode 100644 src/tool/awk/testdata/t.array1 create mode 100644 src/tool/awk/testdata/t.array2 create mode 100644 src/tool/awk/testdata/t.assert create mode 100644 src/tool/awk/testdata/t.avg create mode 100644 src/tool/awk/testdata/t.b.x create mode 100644 src/tool/awk/testdata/t.be create mode 100644 src/tool/awk/testdata/t.beginexit create mode 100644 src/tool/awk/testdata/t.beginnext create mode 100644 src/tool/awk/testdata/t.break create mode 100644 src/tool/awk/testdata/t.break1 create mode 100644 src/tool/awk/testdata/t.break2 create mode 100644 src/tool/awk/testdata/t.break3 create mode 100644 src/tool/awk/testdata/t.bug1 create mode 100644 src/tool/awk/testdata/t.builtins create mode 100644 src/tool/awk/testdata/t.cat create mode 100644 src/tool/awk/testdata/t.cat1 create mode 100644 src/tool/awk/testdata/t.cat2 create mode 100644 src/tool/awk/testdata/t.cmp create mode 100644 src/tool/awk/testdata/t.coerce create mode 100644 src/tool/awk/testdata/t.coerce2 create mode 100644 src/tool/awk/testdata/t.comment create mode 100644 src/tool/awk/testdata/t.comment1 create mode 100644 src/tool/awk/testdata/t.concat create mode 100644 src/tool/awk/testdata/t.cond create mode 100644 src/tool/awk/testdata/t.contin create mode 100644 src/tool/awk/testdata/t.count create mode 100644 src/tool/awk/testdata/t.crlf create mode 100644 src/tool/awk/testdata/t.cum create mode 100644 src/tool/awk/testdata/t.d.x create mode 100644 src/tool/awk/testdata/t.delete1 create mode 100644 src/tool/awk/testdata/t.delete2 create mode 100644 src/tool/awk/testdata/t.delete3 create mode 100644 src/tool/awk/testdata/t.do create mode 100644 src/tool/awk/testdata/t.e create mode 100644 src/tool/awk/testdata/t.else create mode 100644 src/tool/awk/testdata/t.exit create mode 100644 src/tool/awk/testdata/t.exit1 create mode 100644 src/tool/awk/testdata/t.f create mode 100644 src/tool/awk/testdata/t.f.x create mode 100644 src/tool/awk/testdata/t.f0 create mode 100644 src/tool/awk/testdata/t.f1 create mode 100644 src/tool/awk/testdata/t.f2 create mode 100644 src/tool/awk/testdata/t.f3 create mode 100644 src/tool/awk/testdata/t.f4 create mode 100644 src/tool/awk/testdata/t.for create mode 100644 src/tool/awk/testdata/t.for1 create mode 100644 src/tool/awk/testdata/t.for2 create mode 100644 src/tool/awk/testdata/t.for3 create mode 100644 src/tool/awk/testdata/t.format4 create mode 100644 src/tool/awk/testdata/t.fun create mode 100644 src/tool/awk/testdata/t.fun0 create mode 100644 src/tool/awk/testdata/t.fun1 create mode 100644 src/tool/awk/testdata/t.fun2 create mode 100644 src/tool/awk/testdata/t.fun3 create mode 100644 src/tool/awk/testdata/t.fun4 create mode 100644 src/tool/awk/testdata/t.fun5 create mode 100644 src/tool/awk/testdata/t.getval create mode 100644 src/tool/awk/testdata/t.gsub create mode 100644 src/tool/awk/testdata/t.gsub1 create mode 100644 src/tool/awk/testdata/t.gsub3 create mode 100644 src/tool/awk/testdata/t.gsub4 create mode 100644 src/tool/awk/testdata/t.i.x create mode 100644 src/tool/awk/testdata/t.if create mode 100644 src/tool/awk/testdata/t.in create mode 100644 src/tool/awk/testdata/t.in1 create mode 100644 src/tool/awk/testdata/t.in2 create mode 100644 src/tool/awk/testdata/t.in3 create mode 100644 src/tool/awk/testdata/t.incr create mode 100644 src/tool/awk/testdata/t.incr2 create mode 100644 src/tool/awk/testdata/t.incr3 create mode 100644 src/tool/awk/testdata/t.index create mode 100644 src/tool/awk/testdata/t.intest create mode 100644 src/tool/awk/testdata/t.intest2 create mode 100644 src/tool/awk/testdata/t.j.x create mode 100644 src/tool/awk/testdata/t.longstr create mode 100644 src/tool/awk/testdata/t.makef create mode 100644 src/tool/awk/testdata/t.match create mode 100644 src/tool/awk/testdata/t.match1 create mode 100644 src/tool/awk/testdata/t.max create mode 100644 src/tool/awk/testdata/t.mod create mode 100644 src/tool/awk/testdata/t.monotone create mode 100644 src/tool/awk/testdata/t.nameval create mode 100644 src/tool/awk/testdata/t.next create mode 100644 src/tool/awk/testdata/t.not create mode 100644 src/tool/awk/testdata/t.null0 create mode 100644 src/tool/awk/testdata/t.ofmt create mode 100644 src/tool/awk/testdata/t.ofs create mode 100644 src/tool/awk/testdata/t.ors create mode 100644 src/tool/awk/testdata/t.pat create mode 100644 src/tool/awk/testdata/t.pipe create mode 100644 src/tool/awk/testdata/t.pp create mode 100644 src/tool/awk/testdata/t.pp1 create mode 100644 src/tool/awk/testdata/t.pp2 create mode 100644 src/tool/awk/testdata/t.printf create mode 100644 src/tool/awk/testdata/t.printf2 create mode 100644 src/tool/awk/testdata/t.quote create mode 100644 src/tool/awk/testdata/t.randk create mode 100644 src/tool/awk/testdata/t.re1 create mode 100644 src/tool/awk/testdata/t.re1a create mode 100644 src/tool/awk/testdata/t.re2 create mode 100644 src/tool/awk/testdata/t.re3 create mode 100644 src/tool/awk/testdata/t.re4 create mode 100644 src/tool/awk/testdata/t.re5 create mode 100644 src/tool/awk/testdata/t.re7 create mode 100644 src/tool/awk/testdata/t.reFS create mode 100644 src/tool/awk/testdata/t.rec create mode 100644 src/tool/awk/testdata/t.reg create mode 100644 src/tool/awk/testdata/t.roff create mode 100644 src/tool/awk/testdata/t.sep create mode 100644 src/tool/awk/testdata/t.seqno create mode 100644 src/tool/awk/testdata/t.set0 create mode 100644 src/tool/awk/testdata/t.set0a create mode 100644 src/tool/awk/testdata/t.set0b create mode 100644 src/tool/awk/testdata/t.set1 create mode 100644 src/tool/awk/testdata/t.set2 create mode 100644 src/tool/awk/testdata/t.set3 create mode 100644 src/tool/awk/testdata/t.split2 create mode 100644 src/tool/awk/testdata/t.split2a create mode 100644 src/tool/awk/testdata/t.split3 create mode 100644 src/tool/awk/testdata/t.split4 create mode 100644 src/tool/awk/testdata/t.split8 create mode 100644 src/tool/awk/testdata/t.split9 create mode 100644 src/tool/awk/testdata/t.split9a create mode 100644 src/tool/awk/testdata/t.stately create mode 100644 src/tool/awk/testdata/t.strcmp create mode 100644 src/tool/awk/testdata/t.strcmp1 create mode 100644 src/tool/awk/testdata/t.strnum create mode 100644 src/tool/awk/testdata/t.sub1 create mode 100644 src/tool/awk/testdata/t.sub2 create mode 100644 src/tool/awk/testdata/t.sub3 create mode 100644 src/tool/awk/testdata/t.substr create mode 100644 src/tool/awk/testdata/t.substr1 create mode 100644 src/tool/awk/testdata/t.time create mode 100644 src/tool/awk/testdata/t.vf create mode 100644 src/tool/awk/testdata/t.vf1 create mode 100644 src/tool/awk/testdata/t.vf2 create mode 100644 src/tool/awk/testdata/t.vf3 create mode 100644 src/tool/awk/testdata/t.x create mode 100644 src/tool/awk/testdata/test.countries create mode 100644 src/tool/awk/testdata/test.data create mode 100644 src/tool/awk/testdata/tt.01_print create mode 100644 src/tool/awk/testdata/tt.02_print_NR_NF create mode 100644 src/tool/awk/testdata/tt.02a_print_length create mode 100644 src/tool/awk/testdata/tt.03_sum_length create mode 100644 src/tool/awk/testdata/tt.03a_sum_field create mode 100644 src/tool/awk/testdata/tt.04_printf_fields create mode 100644 src/tool/awk/testdata/tt.05_concat_fields create mode 100644 src/tool/awk/testdata/tt.06_count_lengths create mode 100644 src/tool/awk/testdata/tt.07_even_fields create mode 100644 src/tool/awk/testdata/tt.08_even_lengths create mode 100644 src/tool/awk/testdata/tt.08z_regex_simple create mode 100644 src/tool/awk/testdata/tt.09_regex_starts_with create mode 100644 src/tool/awk/testdata/tt.10_regex_ends_with create mode 100644 src/tool/awk/testdata/tt.10a_regex_ends_with_var create mode 100644 src/tool/awk/testdata/tt.11_substr create mode 100644 src/tool/awk/testdata/tt.12_update_fields create mode 100644 src/tool/awk/testdata/tt.13_array_ops create mode 100644 src/tool/awk/testdata/tt.13a_array_printf create mode 100644 src/tool/awk/testdata/tt.14_function_call create mode 100644 src/tool/awk/testdata/tt.15_format_lines create mode 100644 src/tool/awk/testdata/tt.16_count_words create mode 100644 src/tool/awk/testdata/tt.big_complex_program create mode 100644 src/tool/awk/testdata/tt.x1_mandelbrot create mode 100644 src/tool/awk/testdata/tt.x2_sum_loop create mode 100644 src/tool/awk/testdata/wildcards/a.awk create mode 100644 src/tool/awk/testdata/wildcards/b.awk create mode 100644 src/tool/awk/testdata/wildcards/one.txt create mode 100644 src/tool/awk/testdata/wildcards/two.txt diff --git a/license b/license.txt similarity index 100% rename from license rename to license.txt diff --git a/readme b/readme.md similarity index 100% rename from readme rename to readme.md diff --git a/src/cmd/goblin/main.go b/src/cmd/goblin/main.go index 95d373d..cf2425c 100644 --- a/src/cmd/goblin/main.go +++ b/src/cmd/goblin/main.go @@ -27,6 +27,7 @@ import( "github.com/surdeus/goblin/src/tool/useprog" "github.com/surdeus/goblin/src/tool/path" "github.com/surdeus/goblin/src/tool/mk" + //"github.com/surdeus/goblin/src/tool/awk" ) func main() { @@ -55,7 +56,8 @@ func main() { "in" : mtool.Tool{in.Run, "filter strings from stdin that aren not in arguments"}, "useprog" : mtool.Tool{useprog.Run, "print the name of the first existing program in arg list"}, "path" : mtool.Tool{path.Run, "print cross platform path based on cmd arguments"}, - "mk" : mtool.Tool{mk.Run, "file dependency system"}, + "mk" : mtool.Tool{mk.Run, "file dependency system, simpler make"}, + //"awk" : mtool.Tool{awk.Run, "simple scripting language for working with string templates"}, } mtool.Main("goblin", tools) diff --git a/src/tool/awk/csv.md b/src/tool/awk/csv.md new file mode 100644 index 0000000..d00d25a --- /dev/null +++ b/src/tool/awk/csv.md @@ -0,0 +1,387 @@ + +# GoAWK's CSV and TSV file support + +[CSV](https://en.wikipedia.org/wiki/Comma-separated_values) and [TSV](https://en.wikipedia.org/wiki/Tab-separated_values) files are often used in data processing today, but unfortunately you can't properly process them using POSIX AWK. You can change the field separator to `,` or tab (for example `awk -F,` or `awk '-F\t'`) but that doesn't handle quoted or multi-line fields. + +There are other workarounds, such as [Gawk's FPAT feature](https://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html), various [CSV extensions](http://mcollado.z15.es/xgawk/) for Gawk, or Adam Gordon Bell's [csvquote](https://github.com/adamgordonbell/csvquote) tool. There's also [frawk](https://github.com/ezrosent/frawk), which is an amazing tool that natively supports CSV, but unfortunately it deviates quite a bit from POSIX-compatible AWK. + +Since version v1.17.0, GoAWK has included CSV support, which allows you to read and write CSV and TSV files, including proper handling of quoted and multi-line fields as per [RFC 4180](https://rfc-editor.org/rfc/rfc4180.html). In addition, GoAWK supports a "named field" construct that allows you to access CSV fields by name as well as number, for example `@"Address"` rather than `$5`. + +**Many thanks to the [library of the University of Antwerp](https://www.uantwerpen.be/en/library/), who sponsored this feature in May 2022.** Thanks also to [Eli Rosenthal](https://github.com/ezrosent), whose frawk tool inspired aspects of the design (including the `-i` and `-o` command line arguments). + +Links to sections: + +* [CSV input configuration](#csv-input-configuration) +* [CSV output configuration](#csv-output-configuration) +* [Named field syntax](#named-field-syntax) +* [Go API](#go-api) +* [Examples](#examples) +* [Examples based on csvkit](#examples-based-on-csvkit) +* [Performance](#performance) +* [Future work](#future-work) + + +## CSV input configuration + +When in CSV input mode, GoAWK ignores the regular field and record separators (`FS` and `RS`), instead parsing input into records and fields using the CSV or TSV format. Fields can be accessed using the standard AWK numbered field syntax (for example, `$1` or `$5`), or using the GoAWK-specific [named field syntax](#named-field-syntax). + +To enable CSV input mode when using the `goawk` program, use the `-i mode` command line argument. You can also enable CSV input mode by setting the `INPUTMODE` special variable in the `BEGIN` block, or by using the [Go API](#go-api). The full syntax of `mode` is as follows: + +``` +csv|tsv [separator=] [comment=] [header] +``` + +The first field in `mode` is the format: `csv` for comma-separated values or `tsv` for tab-separated values. Optionally following the mode are configuration fields, defined as follows: + +* `separator=`: override the separator character, for example `separator=|` to use the pipe character. The default is `,` (comma) for `csv` format or `\t` (tab) for `tsv` format. +* `comment=`: consider lines starting with the given character to be comments and skip them, for example `comment=#` will ignore any lines starting with `#` (without preceding whitespace). The default is not to support comments. +* `header`: treat the first line of each input file as a header row providing the field names, and enable the `@"field"` syntax as well as the `FIELDS` array. This option is equivalent to the `-H` command line argument. If neither `header` or `-H` is specified, you can't use named fields. + + + +## CSV output configuration + +When in CSV output mode, the GoAWK `print` statement with one or more arguments ignores `OFS` and `ORS` and separates its arguments (fields) and records using CSV formatting. No header row is printed; if required, a header row can be printed in the `BEGIN` block manually. No other functionality is changed, for example, `printf` doesn't do anything different in CSV output mode. + +**NOTE:** The behaviour of `print` without arguments remains unchanged. This means you can print the input line (`$0`) without further quoting by using a bare `print` statement, but `print $0` will print the input line as a single CSV field, which is probably not what you want. See the [example](#example-convert-between-formats-all-fields) below. + +To enable CSV output mode when using the `goawk` program, use the `-o mode` command line argument. You can also enable CSV output mode by setting the `OUTPUTMODE` special variable in the `BEGIN` block, or by using the [Go API](#go-api). The full syntax of `mode` is as follows: + +``` +csv|tsv [separator=] +``` + +The first field in `mode` is the format: `csv` for comma-separated values or `tsv` for tab-separated values. Optionally following the mode are configuration fields, defined as follows: + +* `separator=`: override the separator character, for example `separator=|` to use the pipe character. The default is `,` (comma) for `csv` format or `\t` (tab) for `tsv` format. + + +## Named field syntax + +If the `header` option or `-H` argument is given, CSV input mode parses the first row of each input file as a header row containing a list of field names. + +When the header option is enabled, you can use the GoAWK-specific "named field" operator (`@`) to access fields by name instead of by number (`$`). For example, given the header row `id,name,email`, for each record you can access the email address using `@"email"`, `$3`, or even `$-1` (first field from the right). Further usage examples are shown [below](#examples). + +Every time a header row is processed, the `FIELDS` special array is updated: it is a mapping of field number to field name, allowing you to loop over the field names dynamically. For example, given the header row `id,name,email`, GoAWK sets `FIELDS` using the equivalent of: + +``` +FIELDS[1] = "id" +FIELDS[2] = "name" +FIELDS[3] = "email" +``` + +Note that named field assignment such as `@"id" = 42` is not yet supported, but this feature may be added later. + + +## Go API + +When using GoAWK via the Go API, you can still use `INPUTMODE`, but it may be more convenient to use the `interp.Config` fields directly: `InputMode`, `CSVInput`, `OutputMode`, and `CSVOutput`. + +Here's a simple snippet showing the use of the `InputMode` and `CSVInput` fields to enable `#` as the comment character: + +``` +prog, err := parser.ParseProgram([]byte(src), nil) +if err != nil { ... } + +config := &interp.Config{ + InputMode: interp.CSVMode, + CSVInput: interp.CSVInputConfig{Comment: '#'}, +} +_, err = interp.ExecProgram(prog, config) +if err != nil { ... } +``` + +Note that `INPUTMODE` and `OUTPUTMODE` set using `Vars` or in the `BEGIN` block will override these settings. + +See the [full reference documentation](https://pkg.go.dev/github.com/benhoyt/goawk/interp#Config) for the `interp.Config` struct. + + +## Examples + +Below are some examples using the [testdata/csv/states.csv](https://github.com/benhoyt/goawk/blob/master/testdata/csv/states.csv) file, which is a simple CSV file whose contents are as follows: + +``` +"State","Abbreviation" +"Alabama","AL" +"Alaska","AK" +"Arizona","AZ" +"Arkansas","AR" +"California","CA" +... +``` + +### Example: output a field by name + +To output a field by name (in this case the state's abbreviation): + +``` +$ goawk -i csv -H '{ print @"Abbreviation" }' testdata/csv/states.csv +AL +AK +AZ +... +``` + +### Example: match a field and count + +To count the number of states that have "New" in the name, and then print out what they are: + +``` +$ goawk -i csv -H '@"State" ~ /New/ { n++ } END { print n }' testdata/csv/states.csv +4 +$ goawk -i csv -H '@"State" ~ /New/ { print @"State" }' testdata/csv/states.csv +New Hampshire +New Jersey +New Mexico +New York +``` + +### Example: rename and reorder fields + +To rename and reorder the fields from `State`, `Abbreviation` to `abbr`, `name`. Note that the `print` statement in the `BEGIN` block prints the header row for the output: + +``` +$ goawk -i csv -H -o csv 'BEGIN { print "abbr", "name" } { print @"Abbreviation", @"State" }' testdata/csv/states.csv +abbr,name +AL,Alabama +AK,Alaska +... +``` + +### Example: convert between formats (explicit field list) + +To convert the file from CSV to TSV format (note how we're *not* using `-H`, so the header row is included): + +``` +$ goawk -i csv -o tsv '{ print $1, $2 }' testdata/csv/states.csv +State Abbreviation +Alabama AL +Alaska AK +... +``` + +### Example: convert between formats (all fields) + +If you want to convert between CSV and TSV format but don't know the number of fields, you can use a field assignment like `$1=$1` so that GoAWK reformats `$0` according to the output format (TSV in this case). This is similar to how in POSIX AWK a field assignment reformats `$0` according to the output field separator (`OFS`). Then `print` without arguments prints the raw value of `$0`: + +``` +$ goawk -i csv -o tsv '{ $1=$1; print }' testdata/csv/states.csv +State Abbreviation +Alabama AL +Alaska AK +... +``` + +**NOTE:** It's not correct to use `print $0` in this case, because that would print `$0` as a single TSV field, which you generally don't want: + +``` +$ goawk -i csv -o tsv '{ $1=$1; print $0 }' testdata/csv/states.csv # INCORRECT! +"State Abbreviation" +"Alabama AL" +"Alaska AK" +... +``` + +### Example: override separator + +To test overriding the separator character, we can use GoAWK to add a comment and convert the separator to `|` (pipe). We'll also add a comment line to test comment handling: + +``` +$ goawk -i csv -o 'csv separator=|' 'BEGIN { printf "# comment\n" } { $1=$1; print }' testdata/csv/states.csv +# comment +State|Abbreviation +Alabama|AL +Alaska|AK +... +``` + +### Example: skip comment lines + +We can process the "pipe-separated values" file generated above, skipping comment lines, and printing the first three state names (accessed by field number this time): + +``` +$ goawk -i 'csv header comment=# separator=|' 'NR<=3 { print $1 }' testdata/csv/states.psv +Alabama +Alaska +Arizona +``` + +### Example: use dynamic field names + +Similar to the `$` operator, you can also use `@` with dynamic values. For example, if there are fields named `address_1`, `address_2`, up through `address_5`, you could loop over them as follows: + +``` +$ cat testdata/csv/address5.csv +name,address_1,address_2,address_3,address_4,address_5 +Bob Smith,123 Way St,Apt 2B,Township,Cityville,United Plates +$ goawk -i csv -H '{ for (i=1; i<=5; i++) print @("address_" i) }' testdata/csv/address5.csv +123 Way St +Apt 2B +Township +Cityville +United Plates +``` + +### Example: use the `FIELDS` array + +A somewhat contrived example showing use of the `FIELDS` array: + +``` +$ cat testdata/csv/fields.csv +id,name,email +1,Bob,b@bob.com +$ goawk -i csv -H '{ for (i=1; i in FIELDS; i++) print i, FIELDS[i] }' testdata/csv/fields.csv +1 id +2 name +3 email +``` + +### Example: create CSV file from array + +The following example shows how you might pull fields out of an integer-indexed array to produce a CSV file: + +``` +$ goawk -o csv 'BEGIN { print "id", "name"; names[1]="Bob"; names[2]="Jane"; for (i=1; i in names; i++) print i, names[i] }' +id,name +1,Bob +2,Jane +``` + +### Example: create CSV file by assigning fields + +This example shows the same result, but producing the CSV output by assigning individual fields and then using a bare `print` statement: + +``` +$ goawk -o csv 'BEGIN { print "id", "name"; $1=1; $2="Bob"; print; $1=2; $2="Jane"; print }' +id,name +1,Bob +2,Jane +``` + +### Example: different ways to specify CSV mode + +And finally, four equivalent examples showing different ways to specify the input mode, using `-i` or the `INPUTMODE` special variable (the same techniques work for `-o` and `OUTPUTMODE`): + +``` +$ goawk -i csv -H '@"State"=="New York" { print @"Abbreviation" }' testdata/csv/states.csv +NY +$ goawk -icsv -H '@"State"=="New York" { print @"Abbreviation" }' testdata/csv/states.csv +NY +$ goawk 'BEGIN { INPUTMODE="csv header" } @"State"=="New York" { print @"Abbreviation" }' testdata/csv/states.csv +NY +$ goawk -v 'INPUTMODE=csv header' '@"State"=="New York" { print @"Abbreviation" }' testdata/csv/states.csv +NY +``` + + +## Examples based on csvkit + +The [csvkit](https://csvkit.readthedocs.io/en/latest/index.html) suite is a set of tools that allow you to quickly analyze and extract fields from CSV files. Each csvkit tool allows you to do a specific task; GoAWK is more low-level and verbose, but also a more general tool ([`csvsql`](https://csvkit.readthedocs.io/en/latest/tutorial/3_power_tools.html#csvsql-and-sql2csv-ultimate-power) being the exception!). GoAWK also runs significantly faster than csvkit (the latter is written in Python). + +Below are a few snippets showing how you'd do some of the tasks in the csvkit documentation, but using GoAWK (the input file is [testdata/csv/nz-schools.csv](https://github.com/benhoyt/goawk/blob/master/testdata/csv/nz-schools.csv)): + +### csvkit example: print column names + +``` +$ csvcut -n testdata/csv/nz-schools.csv + 1: School_Id + 2: Org_Name + 3: Decile + 4: Total + +# In GoAWK you have to loop through the fields, but you can print the data in +# any format you want (note the "exit" so it stops after the first row): +$ goawk -i csv '{ for (i=1; i<=NF; i++) printf "%3d: %s\n", i, $i; exit }' testdata/csv/nz-schools.csv + 1: School_Id + 2: Org_Name + 3: Decile + 4: Total + +# You could also use -H and the FIELDS array to do this: +$ goawk -i csv -H '{ for (i=1; i in FIELDS; i++) printf "%3d: %s\n", i, FIELDS[i]; exit }' testdata/csv/nz-schools.csv + 1: School_Id + 2: Org_Name + 3: Decile + 4: Total +``` + +### csvkit example: select a subset of columns + +``` +$ csvcut -c Org_Name,Total testdata/csv/nz-schools.csv +Org_Name,Total +Waipa Christian School,60 +Remarkables Primary School,494 +... + +# In GoAWK you need to print the field names explicitly in BEGIN: +$ goawk -i csv -H -o csv 'BEGIN { print "Org_Name", "Total" } { print @"Org_Name", @"Total" }' testdata/csv/nz-schools.csv +Org_Name,Total +Waipa Christian School,60 +Remarkables Primary School,494 +... + +# But you can also change the column names and reorder them: +$ goawk -i csv -H -o csv 'BEGIN { print "# Students", "School" } { print @"Total", @"Org_Name" }' testdata/csv/nz-schools.csv +# Students,School +60,Waipa Christian School +494,Remarkables Primary School +... +``` + +### csvkit example: generate statistics + +There's no equivalent of the `csvstat` tool in GoAWK, but you can calculate statistics yourself. For example, to calculate the total number of students in New Zealand schools, you can do the following (`csvstat` is giving a warning due to the single-column input): + +``` +$ csvcut -c Total testdata/csv/nz-schools.csv | csvstat --sum +/usr/local/lib/python3.9/dist-packages/agate/table/from_csv.py:74: RuntimeWarning: Error sniffing CSV dialect: Could not determine delimiter +802,516 + +$ goawk -i csv -H '{ sum += @"Total" } END { print sum }' testdata/csv/nz-schools.csv +802516 +``` + +To calculate the average (mean) decile level for boys' and girls' schools (sorry, boys!): + +``` +$ csvgrep -c Org_Name -m Boys testdata/csv/nz-schools.csv | csvcut -c Decile | csvstat --mean +/usr/local/lib/python3.9/dist-packages/agate/table/from_csv.py:74: RuntimeWarning: Error sniffing CSV dialect: Could not determine delimiter +6.45 +$ csvgrep -c Org_Name -m Girls testdata/csv/nz-schools.csv | csvcut -c Decile | csvstat --mean +/usr/local/lib/python3.9/dist-packages/agate/table/from_csv.py:74: RuntimeWarning: Error sniffing CSV dialect: Could not determine delimiter +8.889 + +$ goawk -i csv -H '/Boys/ { d+=@"Decile"; n++ } END { print d/n }' testdata/csv/nz-schools.csv +6.45 +$ goawk -i csv -H '/Girls/ { d+=@"Decile"; n++ } END { print d/n }' testdata/csv/nz-schools.csv +8.88889 +``` + + +## Performance + +The performance of GoAWK's CSV input and output mode is quite good, on a par with using the `encoding/csv` package from Go directly, and much faster than the `csv` module in Python. CSV input speed is significantly slower than `frawk`, though CSV output speed is significantly faster than `frawk`. + +Below are the results of some simple read and write [benchmarks](https://github.com/benhoyt/goawk/blob/master/scripts/csvbench) using `goawk` and `frawk` as well as plain Python and Go. The output of the write benchmarks is a 1GB, 3.5 million row CSV file with 20 columns (including quoted columns); the input for the read benchmarks uses that same file. Times are in seconds, showing the best of three runs on a 64-bit Linux laptop with an SSD drive: + +Test | goawk | frawk | Python | Go +--------------- | ----- | ----- | ------ | ---- +Reading 1GB CSV | 3.18 | 1.01 | 13.4 | 3.22 +Writing 1GB CSV | 5.64 | 13.0 | 17.0 | 3.24 + + +## Future work + +* Consider adding a `printrow(a)` or similar function to make it easier to construct CSV rows from scratch. + - `a` would be an array such as: `a["name"] = "Bob"; a["age"] = 7` + - keys would be ordered by `OFIELDS` (eg: `OFIELDS[1] = "name"; OFIELDS[2] = "age"`) or by "smart name" if `OFIELDS` not set ("smart name" meaning numeric if `a` keys are numeric, string otherwise) + - `printrow(a)` could take an optional second `fields` array arg to use that instead of the global `OFIELDS` +* Consider allowing `-H` to accept an optional list of field names which could be used as headers in the absence of headers in the file itself (either `-H=name,age` or `-i 'csv header=name,age'`). +* Consider adding TrimLeadingSpace CSV input option. See: https://github.com/benhoyt/goawk/issues/109 +* Consider supporting `@"id" = 42` named field assignment. + + +## Feedback + +Please [open an issue](https://github.com/benhoyt/goawk/issues) if you have bug reports or feature requests for GoAWK's CSV support. diff --git a/src/tool/awk/go.mod b/src/tool/awk/go.mod new file mode 100644 index 0000000..6f69581 --- /dev/null +++ b/src/tool/awk/go.mod @@ -0,0 +1,3 @@ +module github.com/benhoyt/goawk + +go 1.14 diff --git a/src/tool/awk/goawk b/src/tool/awk/goawk new file mode 100755 index 0000000000000000000000000000000000000000..44c91290323ed42c0ba339bc1f4f645da31298b1 GIT binary patch literal 3680472 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 z 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�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�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

kSTrD6eUO3vbPA{Woy#W>C0}^0W?Cns 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

@ueU7(l36LT8&E`%S;$b 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%0Dd<`eGNxK9=k9N!QceM6}5 zjrgvRVC*9uZqy5%Yfd%$4?8ezgB1_mz9EeGhA`?IRj>aW!t!r~9pVkHIo>pj-2e3- zabU>?s~@%X8^X132sdq9y}tEbNboHr3|*+!i*ZIfFMpTyA9LW~2BQ(u*HA1ZY*Qr`DyneLh>TQ zPX>3S!L7ZR&}K1V@M1!r#e_pSfrk}Dylyo7FV|alq5~Zy?&QUU1&axr77II=+zd+y zuPz~YmJli~QNOPx8h%px=jR;wW}}rCy-Nr?mk=tY9ERv zSozD`x8lC+!2OL@`;d7Vq3AL~iDfEx&@#g4Wx{V$m#Ov3ECr?Z%zM>=Y@2}nMreJx zjIe4MA;WT&TVVy^%@u_4D+nK~Af)XDJnRnO6Tm%R%){x|k7PACzFQ9L++^j0=PL-# zm4xgoRc`1?LY0+-x+@7aSE}Dr+8OykZ`aNFC-+YdJPyKb_Aj{of^Y*rIq=eE%f8)L z5@J>o#@M*ut|VO5|9`6pk5>{BN&xvk7ykOqh_mZuqj$TFRY~%jjzULlBKSaN-^AG#};=l@t z+d2>7lU0Q2Htxk$gadg9KdmApO-TC2pF$gxsqM`B$rUh+Rz> zotH3WHDUjGbsy%PAY9*X4&0FZws$q*%xc1U8+XJS!h|)1b!!NV))1N(2i&2;Z$2aM zd{)KUC+2?Sz)M>!`<`1vxW0yPYmKT`-{<;t4T0B+eXi#Gx?b028h(@WS>TZa1thM% z|J${ekYTOLHL6k2{ol)jaNUm`2$#6}{_m1&31w{DzuW&E2*M3KcHkX}tMC7=x0VoL z3-hTCRs@H{E| z&HcoInG(1CT0*b2guXWJCu<3F*AkYmB`mUW7YAwI{7)RXEOB?NB^+2wIBeryUQ4*O zmhkIZNOh#p)%VxuTSq8h zj>Z3xS8Sz`Qix0;|PV~RPHq6 z`<2WM{O-Wctw5|%q3XsFTE-Eg;#9x&h$D=QBTR}Td=y8RnHPvN<}nHzddrj5?jVhZ z#I4r|eRn-! z@Or{f8+XQf!q@8wtJV{i*zDl;1&On?8tQGc{I+X7;mCTzaU1vPdV&^D$Qe(_9Ix7U ze-OX<(rIWT=`9yes2fj+j92~EIiAoro-jC`(CvUa9`**YgC|5o|7}+Mz8_B*A5WNM z<9-)UI2%v+HJeUZuza*2Ev#Pgz+}+ zkd1^f8wn>i683E*M05e>P8aW=f3vmj!|b2=GHU23af@ssl-We6ut~K;^-Y8beP9aU ztxbfDuL3iT`-;sX*JE!c4Pzv3+fBm0eQewrn+RWTB5dA7Sg}d%r}i-XCUZTRHTbt% z{pv%T2uYg=S8d$ibgi3(-aMNLi(dv}jd(Ci*0R?3Hg{GHo3~r>P;fJ0*AdiQ4&X^dt0q>vEQws z$PVj0pKc{&+eXN>P1Un*8{y`PcIOahOAIpVzr3%)Q&dCb4l8f3-A>rGoseMT{rcKJ3we0AT+mey95XW1BB55!iWGNHmkM%bzBfX`9d}13|MhB zB|!KpK$vgio(K?<0)*cJgr5V#|K@(UnTDSf|CiSAcEFlnOuLhieJ3IJPSp-!I|&gx z2_1J5TIv6m56GND_$pv<<@LIOG8)DNtnXZdb`r+yBxKp8atG`o?B7FZwU^LrFJb?5 zU_n8`##un)%wql6;kH)&PL9;@qog)*+RvuQyLRMEL0t;l?2~|Bp8EslI;OY_I&CGz^ir=?@bM941sb zta6teCagb9`1UYi+hLU(J6!0Mx!x`szL2<24ihpRA!IwEaw{Dn)ILIJd4$mPh*~e^ z8uj9iq&Lu2L!4w^{eJCsM+nh2uHoj?()Ea{*DSJqle=ozCvo37LU>QtW8+RZLYRJp zF!u-{;{o-2*VRGlvA3Isvl4gy5yJK(gabBi-lK$~M+w!B5-J~6?NIifsCTkncMlED zT~;3NaFo#VD52j`)xNWj5*8jMY&}X?cT~;eH-qHyRQ z@a0Lu>XU?}C)If9W!P8N>l>`W_pQ}#22K(Vog^gKxWAkv@F@|$8BYD54^_i-fDFU4)6go}FcbX6u4ipX-{+edw-yf=4{Swb`4F|pz?TcP&ohCFp zP3Ux5?eESyO;~-JuvP!fzyYP)0>IUoB+ zYG@#Fo1Y=HKSOxO#(n<`Vf-1wj5CC(Hm)~FyX5t0=&;+0JNx;F#<=BQpN|;uX&5f) zoqvX~{0w28O|Kq1JI)ZkJ44uQ(>pGRUiSwYK9#t~&k&N%5Pq<6pPwN(6A3vI37HdB z`>qbc4Sb+sk;Hv9kx(X)P&HBYThl~B>qJ7=M1t4GO$@^Ij?%D0vhRRI!q7y*2#Krr zhest6CMSw`n31TqA7+u~EqotpI3scG=TDk``?u#$Vzh=|cUyU0?_cUaew$uh^n63F z-oG3aq&~>|6WpUUWZz@e3-kWz#X-2s46gof^8C43C4T z54aesp~ru~b&u8X;eWvOjMea^sY9;e}&q_^@} z;~Z}r_sz3}_6Aqi8|?l;dHq{poQ9tzz2-UIJ#1XPeKSk1v%%XTd0db@P6O|=#$El- z5{928_-x!UX9-gcy`TRDS08to;{yM94S6K)7iS4e&JtGGxNFZ6_88p5FT$Omq0Bxj zKb$yAICqwC(Z;=Tmhg+geRB4n?Td*Ts_nD-(R7ZG`5YnpIW-=toFmjZC*q;eIWg`s z_lKE9A0N#(oZ$XgLkr0cZ=NG`I!EYcUz!ZcFB`943YGvJx|Dcp76?f)edXU6Skcfb~tc8xE*x8W<2;l z)i6=wCY&c+JWsf60g`-_C%FB15Y%B^*Y5P6Bv`4S=OlB##HF>fGq z{c|)#?6>B723;ZyzeMoaxc*Co<(CNCE)mvWBK(#cn3_lEyk>A`l?QGc^&&7=!#k4R zgiC}omk8%=++Qydo?jC7O_wC}nszXYuGfq+?-v?AkhrcSLe3;Y-XxnHk_eGWg4-e~ zcz%$%zArUQ+i&H`wn>DZNrc`u?#v{@0)xB!FSvTW_`4v-19W7mh?VPB4ke{&RYHxcgtx8|8eLWOx|dt|!Q{GEYAFAmRgb$} zCG@#U7;sh9`{`A}msbg^t`Zhq6$_68#{5+~gR9r$KkC~m4UHtddOhBCm9W>w)$8#k zod@8$O|MyW`KdWnHNqepH}7>q(d&X6emyu>uNS6$ljAfDmbkUA3%|X2UDdn#I$`T|!m;aw?`+(e zhJAJJY%@>BYxv|lYn*leI$@CuSn3kvdA*-%-Y@dIp*L+x@P3~>|9}k|mPqz>rVw(b z5DKPPdUbBu6hieBLc0r~e2G@A?*$!{~fXRB_b2xKCNNYK`{<- z5m53Dp~)RW>pSATjOQHV?+~WnAuPK?n6E#d6^P0x?jvYE3iur2eq}SC`Vuv4ko4&H z5p1|a*nG#*qu+1wBKK1Krr%4EsNs;oD^9@nJA|Wm2!!HM|ebDvp658G+MBi2IH}Njv^Sh#cd~=tO zyCRT~8%U7u%k*>watc2oa8W~sL*kwXy)3&+*mak%*T!A>8)5Trgnai1+3pe2ZU%hW z(;(th8k{upaGS2c2=S*8xTB%-A*()@x<{ySk5F5G7BKDT=x~qF_nvrY)ID(z&B-o6 zv1qGK>-En3&gJ`6!|+2^J2LqmVd*`>b{qHSdxXdL2$}8^9QO&ad4wJGSoRzJ2z`Hy zd4)vaHw~)}S>xnF_X*+m2@US6dI#PojJ!|y>^@=Qef9hLeuJx@pJ?iJ-`B8L;?BEI z*mj?=)5cA@Px$e^u*1Xq!P`%L9@yjt9%#5C*%uE8xgHSmJy7+&_kb|wf#6PmKnQaK z5d|&V>P5G&*^lr%*6>`?`^5vo;s=D~Htwzmgu@2+)&6mcB8iy^vEqz2-|A?^Zk;*;r zh;aImutUz2_qh>?>YG~VV0rCuQR0m zd}h(VU;YtCX`T4+u+?8$^q8>rF(KZ@HTM_kMZZT+-d|)ExxeI1=fvlSt@^+BG2!fE z!bKbR(PKioC>2o)Df&=Q)~1|Gs4IKMaI8p`RbA-%Y5OTu+4FSD&bMDF1{|!{EM< zUWXIg4_kSq?h`_rCxjt3Zu}F%t|x>uPY6e!5C&yK>Uo)Ze!XMV|MU5QF^0Zm&527= zeBOUTc>aWt<*BN-%2Ps}r-Y_Y3CM&$?%mM2&5iz@{2eIZbmEp|-;PfSJ)aVW+qhpp zC9Hf(*zuIG>8Z8ONauD5vYsN~a^i^;XUCrsE<7dNwsEsPBNTW>DDh03=XW!sIEOc4 z8W3x6<@JJrmz;1OvHVu!8KK@YLew+W4kMlsCOjj|c}AH2%!+?K7Ctt(a-8|nJCW;% z6=y4-5#pZ_zO!-fJtL%fPDuZp;K-xKuixOx{YGyFCyE@g@`~xV0?$>wcE9QIpwGAH z_Kh>Rvfn%zov0#l>pdqlc~0=!xMQCaK7CG@|D5o}bJY&}gK&|_iMmIud=>v(_-(t5 ztNZQNbHi`XMf{q2FBn|;eg$N9;tk1f&z=*~{Z7dJyK0A;zY`k$PH6i(;jQ1*IJ;wT zWxoY7I}sg3Zyy_1*E{$3;Cj?#lAfZZd`tAUc{5riOrJV%zFID#{Ii` zJlx>Qeskw?VqXwD6iK7{?eFY6HHaOM+ljN19U{{(I;LUxY~0;x7zt?@*V8aAreP%K z0;2LEHBaXLP{i+=B7nK2z?a8~?~hphq_o7yNQ{D{>TN=d*2H*+7+r{!_IQDz_jl?0 zk}t0l_m3Ej5`g!KF`5_?iBs1-nd7z@#8@Knkk1J|YUP#H#MnrTEjB#?V(cMtNY4T3 zd9w}Ii`*V~@;Q-H;vOYNA~DX}xHpJ#%i!L90d63l6Ge|&>)`I|&oU#e{v(Y$^nONW z7J75AYCp4Vkmv34J5fc_o0k~{nNiqa9MH#8`Z=Q+)V{S|M(gX&@;lM&sO8t?PNe=s z+MZu*tj&~5g5KGA*@>Pkw=kzqR_GA9X zbwJ54J2CA)(Cc}{i4{k!cKJPKJYvQ(!@mc`xHffOD=Ho1-E@qu=~$W9T5Qbc$o+j^ zX(t{Ywes5dbc|W)7+<6labt3yr(?K6MBL;J;naSbdA^HT^zXXnxiRi?PB;=QZqX1% z^$><9MCFbRVSF0GSQElnXybZ}JfU;Ve!HiF6O|GyzikU)>Fq{sdH>ZO! zEu*y`$1L)^mb;P@^(Ah82cwjO;dQ8b3u%lp8l#WK=%FzlmIuNr0SVDS)U+V`I%+zR z>6m4Qr5YnnV{Ft^Zi2?Rpb5PuKfl-IHrM;XY>V$GNL9$jO-JRJp@4Gd{}9 zNY2bi%*=?00z%&rdJ8WQdgI#x#_===batZWF)Pm2XJPEk!Z?sc<-VJh5tCKu{Uj@= zj<1W^_6y2!mfXXMK@xXXR>p#?jAdC>?$)e~eOVbNvNDcjRpWP~k>6#mx2F>$j#>HP zgDSwetc;{^G4E~0@5QW)@Ta03SX@QjM{5?jpXTrB#6-z&H?uOF*%&#pse0>YW4xJ- z(LEa@I-Awr>&zZT{Oav}MWYFFzw5*T$qoavF=DbYhS|7gi}g)5#=LB*9i|#wxjz+n z*NNm~R-Rp%jj=WxBR(5L_mW|U5R-c)8)LCCcRF(#@X*K&`rN5re7&5w6NLBd1$hxC zM0;TJJiVPrbKKHbJUgRQc1F4E!S%JzuIig<=;=k4c2z2jE@ zp=J(7{Tz%&In?+Wn}hLb4#xZ(j5#)D<`u$*`aDWbArpcAPPCBhxF!eVL=MK89I74j z`sHHyaxr3Zsr4?|&?DywUyKur zB<{pqj8AhhrrWq*u8I5$IUBH~^DzH5#P0v|Y0`GgfmXYw!}=3zXw zaZBfARLv{w5Rq5aYZkfPz-TAxN!*rs858p|rsP%iF3HDOpO0}oALCFy#!dYmV56OD zY}8Mg>l^Px7l~UfKVwvW#@PHS_twjdhc7e2USSk`g;BORaHoWL|91DqZ=GxU%{|SD zfhVl~{gGD~XJ27tE1+_9zwIo*I9!0SuYeW*x(&ik3T||m<)`G&otPr&&ERI_a5Hkd zRj$6yzJOcUx2XG{?dzTC#NrcHeJkl^RBZirI8Mz8F@)cC=Fuo9DTOo#4nDL|#BXe8e z<_tia1B|;Q`cv}xW4`51)IVw2dsAV?-olIng;nmk!i?*Mg?(=o4nEG1@45A?aH5mJ zZId4Or7)vh5k}J@DtAgzMqE(_y~cQ4lu@`faOfQo2fy7;gY*Q*T=!-tCY`kMt9jr3 zhksQ-8MWsN(;dT?5}b@v_7l zTb%JtamEsf2Y@dXXM~jC)IA$_oWRXaLW5_Y6QR=cxl1tIB^cF9DE)}ELrO5dD8X27 zFw8x*f%}5vJ>W#;Q&v4cT!L}21mju>%Mbea{KpcE`z07ulJTsBnm@`0sprWDoOtt; zmG_+`8G9NM_BRysuV%kKb4fc73z3LENim>$Rb|_PlQPt4vjtKtUOv!hLocQcN;06vku}JcN z?UIa$l8k00h5s*#`GmA@mt=I+-=(D5meg%x#L;0V)=2sWmgLlPM?Wkn{D0Y)m)Kd7 zaoBk8Q#O`aC_CEfhne-< zf6|F1LAXUriTHUDZd4Gi@01fef^h5o3$8B+*L&KDQ>U$Qch^#kKBX7~4DNlSetuMn z@o6dH_c^6l`L1dDU7lBWpK;=m6i@R?F_xENtg>;pmSXHPxJ_PCzdxEqjwk;aC-R;V z@uZg{r5F!NF`kqX?WEqP(ANo+FU@$pv{i@vXPu~g#+nakRGKlkG-GIK;TPjMN18H> z3}wW7<}Jgi=OftnW$52g%zX~-3r@Uga9a^jtPG=G8Aiu4DtA#C#=0_$BV`zS%P{t5 z2CiiV9)1RlI|=kl1L$0Hy-D&VCw58ismJ>dWf(t|vEK7V<6Xb&%ai29wIIB^{{ydA z8o;0AL`Y()ty9b4pMfV{!ac)whCM@qt%vv?Kp@G9Vu@D1F`s{Evzzr71V7m!=H|@U z(2E=&$w^MUC2^mWVYtdNGL}{S@p@TC)3UGIki;@5*xOIz2mApRX|2y?C!U@rA@aR+e$GEaS3`o1q*dPdTBtZTjHtm^=^S zyXwRa$qog}G0K)>R4k|3A*vjsb2&!ea*TJ%srlR&q~GPf=EP%(JE9z8OgY9l8+Tec z##e^k#Wt>4Wc&KAIg#hA6%QtNRS@o$f5A<@=0x~e%Wu2OF%rr#ezbA3mS?enh7(IA?y2&O>*X1DZCrN+MrZ{_oeGR96;$qSW85NheK(!>?yNP=^j2WJTY=HH zf~t2y1;+FWBF^SkQ0-ur{247fc)oYyisZL%DlnE;V63xo4_08DuE0pDz{rqMtb;J~ z>a-wnmi)aFubi{uA*BN2ZUx3u8#ix7M$w9lY84q3DvEk+avvJ@mE$b%gA-8(w|p9) zenm#Rij000RXZ%M$cU@R*j16SwW6?ZoKy5kuu`nImAUR)POLj;Wh*^jpR35YSn=QI z>n>>k-z_K3o)iA6!oX!+UnNHEN~+G?l^6+?7{69x{8))GC>M~BL+C79Jq@y@0pxWc z?mJG*I{#;#=K5PbZ~vQi#dpVvjpwa#cE!q!$jXd9l~tWbDl^ViW<03OxLKL8F*h*W zn1?Ln4!6b@t54`b8}V^m~q*gfqP1V*FvW z*ME7>adqRa_`qW)e!gJU%YosH;o*#t;nw@=;{@HpqrycV`6yh?Pi9f-&l4xIU9|GF zecWyK&;ISW+xNtYQWq_M>*Lsu!x^6$?;R@oi+?$eU2KfI@YIP2iIb@#VRksin9+PL3WW&Eadt1+HbRpWeX zuyzeDJe2f0sxb;zV?B;R7t$tM?;jZg z{8E!~&!*G*i@?L0Y8;qFet%?eA$zh_AD+}?yi|*kua^4$Z`ES-ti>2ni!rDcLwg12 zVeC_gGwiCj?|<}5GrG_|*=mnx)?%!$#W-N&zT#n2^Dx?b7|lJ5L#2RQrG%e~of5zG z_Sobis|&tltG_$K!Mz7 zHY0y+Mxoj&w_I&T_1cWawHftlGyGYAlbOXlOoCC*bZ!U35&rBhtdi{8qBf&*ZN^77 zF1^mk`8uQQ>x`nW3;Pyx8*yvcLAS5D&fb&Dg(OLDuh$uaUT4Ix`8)Zs2vsL4$kp_26-qGrQ$~e{L7( zvS?TJosE)Af$~wW{U#@4#`CSOV zY{l)mI*iSA7~5^!{dE{84DN+G9P}I&Ilg=^yHNMCRe!J6Vcf36_|?WOQ;5;hye6MJP{4&|61PoVMvuCT8Ff`VT&~NwSC`?c$Dn%ZJi{F$FX(Y#wh!)t zE_^82H>@5bq8_7VJ(WAL9%E5G#*TW7_4ODV3tHc^9|md9P{@VFQXCwt$GB3D@uZ&U zR~qel+UoTgjq5X_>ofW>kk;t?hZ+-J{=zPNCvjryGse|tOsTJO{Ph{D>NB?1=hXe= zamF2~>6?mJ3>0zUn8f+EKI1@r#^L%_Te-9=qEFWKi-ea3_OjK}p= z`($Xq$lXBrvrq%;dDEAAk>k%_)P<{3{FQFNXx@O)wSmh0vH@dd1IEq^$g5*tKF&7?4?|Hfb<6;9was%}}Z#Q5(mUJc;b0N(YtDmj+N7F92p? zAN3S>!Fk21XBi?Gc_J9KY~1}3jEfPBA0rsoBSc;_&x_k{sg06mc6{$jY^Lzqm`e&|9*@yA2t`8ZthyaW^$&9B#p4L8ZnAAVwAFRBN{Qr+$^Q%@nHa(K@Wh7&s#MQ_13nCe- z3~u~iaOHU>Ph}UnU$y!nTOt{48xo==`|8}?k&L4T_jDxV;~?i~j*`YX$(3CgCfT8M zLqg?-gsKu(KTq_0B;$s`z4I4(WxoZgxG+`X+UFlkzx~_!2X~kY3ncE&a7z7oB-vNj zYeh6t|LvdF6L`X0*e2QcX(S`0F(YGR5f8?Gb4RJhjCze39U3#I*0MLy5Rne$l z`uY~LpMa_^?7wQ|TRng2`Kg6%q9t~6%++L)29iE7`_CXD(`7`>V>qMI=G zR{+Kt_nIaf?Soz~%8Ku(@YQso{57kc9MOa^r3qu6jk~`I<4O~T)|BzY#?8N4Z$EQ$7@zT%iEMuuqmT(Q&n&Iri>a*g&pRN3O>&ye@6<`b|FUM)@{mY*_6@W#x2u~ zQLP!{jb@C7%~bnF7;z@s*ImzrudiA2Hhr2g#x`S2Xr}5t(429)xzPJVbH;Az-W;>^ ztOSG__6;<0VWZ@?`^^~(A_*aHsN9-wFdDrfxGmoh^RednL}t@oj;&Mum5`a3Rli zD}LLyU<_!%7}Y}Mo@>EKX~D?el98^Z`W-1sieK}4xBD#@qOM!LjMHy3&b_U2)3;){TM0XqZ57-OuSoaC2D~n4Ddrym!dfwEwPL*9N{knb_JZoS zV!YAH>NB}Jx{zCXE~*uyb1TL>twevzcrNYeR*cVDF}{?Z)%_7LHv9)Vy3i!WYF8Gu zVytV$*w9LSufwev*NpeN)k^h)S>*m;ppy&jQmj1vODo1x{rM=Bn>&h8EQ(Ppicuj- ztiLepPd}qxrq*{Ok0f_?p;w9(=S`y+QBjO`HtwJ(#^@-r9aT!h1n9fbZbUfYex0fs(s&V&FElo-)+sQ=iA!#D%>6} zERy^-ur*_7YsMHG*Wa44tTkgxYesx)HJ>IJ^+&#U$lt?-IElNzHREh+#t$}b5t%&+V9(&YO4xo|<^-fzoz)|P>GDmP<0MxJ)UZxOGg3Hp8L3#q=N zzY9N0@#}8KDAtYIjs2g4|E~N4XYmSX~#I+j&aP!P1l~0rM<92?)Jg;E|a-~Tqt(Ksu!=cXB2DC z2yL(0w@-V&=Uq8P@zfxT<{=qKPko0b9&-k`IygkF!fswld zBWnjWelw31ah64z|MSPV(CLPi9}0C~RO`TatAnaHGMe#zG~;A6V`DU<*egK9%OcJq zwum@89S)2))+qZ&xG+|-Ljy0Pm6y@Wt8#C88Lp0u${iV{J2C>V0jrA&oe9+i_hx?J z9m5Wu4_%mZ!|KNk=*Sq~k+HC&%B|OlF{l$`PAA4^ofx-5fvu&5-a%UhcW5P`qrvr$ zb7A!jQQ!3Y7k=x+sL`2GyR*vO*qL#-vxtX>of#j80>$+6>9z>XdXei}@?;nG-!T4& zJ`vc3@lqE?#x7PnsDB^I+J*6Q7pomKbE90s^mVCITu2GREBrt5lBc+k_U51U75g7~ z-l;CU8iW`6Kk|~Ny5PBK)zh+F7;kl9jP9cPWl>kgfv$`vT^T=jW%x=0*IJ3YZ~WVY zzxBBHnEm#dE{wft#ZlF6j6U5MbGobCyYDh)_F_!$&6w1i(W5hvf1B`i*c;;9z_y`4 zZ^MM1O)jjG^lt3S*xi?*^;5aK`!P=TV_fOSxX@4J6?2_$`tCxn+|GEnxNz{M)gF}V zU&5#C?rnw}ikpV7O&ny-#fy_7`z~s6S(M zX8dXV(pa*Ccbf~pOL|ZBXC(D!T(xnv0gQYD7$pZV3Jp;8dJVmDee!R2A=~$s9cm3= zG#tQaGC;LM{{f8A0~pf=Fg~_%#|7ag?{J~m_f|YC8o<~%fN{{q?fV{M^?QtbgBjTd zGn!WgKJF><%EJ`lw~3X2E`}rA2`*Io-iqH_gBi~TGt$JUdaK1Sn#C~QiD9&hVLU7Z zXh#2QwV_w(#zD2;UMPeVk$z2h{*ccf0E#y)uhDj>kzCeA0XC z-&+!57$;&l_1nTEV_nRd7%P|R#e33)DUzO)7{)XGnONZmeJ!*;FIFd((Jq!TJeDya zRvqWyBT?^_an5NME`M*0GiJmxX2mk*+PJB7qs)(0IrI3xMA3lAi&KL5Tjma*h- zxGysQjx#P~{K1OH<*|&d`g_{AXJQ#wV})OSj#bCgW|8}=NOYmd50)Js#4>(~BDjXA z_ANGqQE`aidWO7!9THve{9yI}8V+GZ4PmsiaeYG=9~;~`LxSfgeICT@S0?kyzh^U==-}-FMbP`mRdWQD*MpJ~mVuMR<7>q4p?qy_hBEW7K#E zKF)}|R}H^4A4Ol6V_R{7e^DWYyWQy;h}}Q zO8QOXR*`MCm+Uxj)rjBhV+bY25Xy`(+uL>wq1zatL+>%q&pQFO zpDo;9KP6oIlu%$SA?H}a*or`-3Zh;teoe&h{dUIuM#yf*WkrXN#u9!XOGp`Owl{ek z;np}p{_%v&I68}iF%=OLmoS_{AuXBYZBqxNrY1tt|mvyB;mKmlb#>H z!2)&^{nN;2Jed$VnGiMEtV8rdT!b6Z%ai44G{7_qF&sDfef23)#_BvG1eF1YaW?#!CAZ%YMK1Z+s^0oAC_$>`MOf z7qX+D!kw$x(8z|xVYsU$cl`@+gN5w)T;b~WZVAKvC-x%Rj;)HG`uWG*(l)8XGtW=Tuc%1 zmu5=%_*4BGjJBhJ!p%5^u%eL-QBy=*t8tT8atpoy7lrNUp+6=C{OyOLlJQ(W6t?5j zFh5`N1%KXK*p3y-&uiyX%1$A~OcC`;{`=27pOXCdzDGL}|1!pV)^j-;=l|DN3ZbLoPu<>krx1orAq<#eo{xAa^R+ha)%UN2ir7(F;eIlO zFmVcDW*F|WDTJ@45aKOdcXN@iRj#+F9W52^&MAcbQwYbyaJwChz|Ud0(P6lOqIL|r z_J8j;6tiRg|A6Z&X2(87hd-te?o1&>#2WQb_nRx05Ec8hzE#8M5G-cLRfU@`mQXa7 zP(BQ|UM!(e7;cj=Tu*U3qOKcprrX;p4EI^~`oeJi#qEf>ZnTH>asl0932()Ub%Zr? z-m7T`8{%dg_elne+wqF>bNyloLt_aeV?}+JKgXZP64u5NwrKw)qguJV+lXT5`L23wMDk0c|RkR{!HZA>YthC&-9|sbNNcy(Oc2$mCp#BKO?;Pneea9 zU8Au+BYgK6;pk_C4%v-&`o=1H>GM0jGIqpWH~Kq&Xf{nHu=Wf1n_F-yq0Cf5!>NR7 zQ_bx{oaCzele}f^*rafqO(ncLmC)b9T{e}lVJhMLRKigUcZf2NsM{MXXUDPYM*DbW zDgo07to>5#eSaF^(`khH(+D%BiSr|4<@ua|66Ve{bHABM_+cjD`b@%aGtGV*CGFMj zf7H+I`Rds5@eQN?q?tu<&LY&BCF+5UGafLDuwoYB>@0IVXgyp^yoc)BG3ka8SLtUH za?B>=nJw%~l=YzPY(l@;q8^N#ZMIJ@>b(qj*^bqUo|9%%>RnCKE!<_Z3F{?y+cUVT zp8l8ZIC{g_mz6l1u;~DB*uuT7{eF(H*F7ivd_(2x#{6lZksZG)e#$wA5Iu)bY>run zm^p-olG}2Q*!QNNqtbQI+CBX~0^cik*l!y1WpB(ObeluyY2l8TLl`HyQzcj5U!xb( zJ-4sgQSzn{S99hNB754f+QR*I4&l7y7AX>b-$S$XM*Ht;Y)4Cldu0yc!5qR93wQQh z!jic{-wksKabf0rwR_q1eOcb-b_`OuJLVFO&Lte5Yu5LrI6~bx!EF{7KHsX`P)j>L zziHIl*W(CX;|M+C%-o4_gjsQfRdIwxapw44EAyfnXTjI(_))QUdmQ0-9N{|)_ih}) zK2O-2V;&)p!#J;}mr_}jeUPo~u-!83)$UW)#&4c^W_z{!lo!g$8tp#iaOas-d%dmg zC?L5r02G@?s5*~O!@_MekI-7$+kT$VA$>-m?{tyFv~%<-*VD!h?=2(GbeTt~Z{)l^ zPqfooe$dwY-?#lQ3=MiG(5vE)049+7Qn@32VM+nUmaiHHz zu{Vsr@E<$Y-xBrVQbr(U9wEbgf^)uE*M18Ka~BZKEg+m+KuE3%jO`)5zubrjJha^R z;OlBfcKJq~R`l=h82JDD{$N)-YTP#Rt#zNgo^SPe7OlL<{dk@??Rew1kq^2A2=4|6 z{R86rcgZ}yHbB@B5b^p=;Mwb7#pJrIzq=hD-!}5sg#h7pfN;;k&AyOOXrbViT^OFL zo`((euw#W{Z`Fl_77Gcj7h3FHNZ28{$DYAe*X=yL?D$r(_xwV_)rEv>7Otji>=%T% zF9^CReON2WW5zB|7lWcS&S^o7~pl0F+weIazH@3Wci!O@F4E(-Ow zqxKzRUFpIXgsWc=u35O6y;&9sZmvayQepNPtM4)f`qAwUUIv=2=_xf>fJTstj|*Mp227fx6;=(ERx*# zrRM#(deL=|88%wALNK!SJKYg z>gx#p(RM_o82#}<%Lv1l5ymYu>#%Pb;m2i!>&pngEhF4g&LLct_081J|J07oDTcm} zmJxC;C*)mj=GIwGXt`YY?TzKn_giqR9Um+9c3Doy`ic#`E!+>56Glt!$`O&Vc$x^?UjU!D+%c<04WtkU!l}eG2VF; z1LTqIg?G9gWA7R5#RsbhajOV{Rc5Z1&r((izuDr=>oj^PQ_AR<`e)d&=AID`>Ej8G zc!E3rX|7f(##8G1!D_z=Eri`_J@(GDp0G0B9A{a= zaQ(CFD16_j7YE}BXX6P!TDaL)6N;`T)Lc!du-eQmCb=t>{ll1J$7}bEIBU6@(0w(b z*J`s4@v8~@Rug_(O*p&SoF|jyxLVDVh_l0g-|!o)A-LBNvaB(46V?z8tr33vZVhSI zy#IavSTAb38Cqb+dd1!!*ARYNL%46@YCeluOK7;3;9X0IRk%Sp{#D<33NEz6`M~H$ zbzDp6vzE|rt=Zo7YYBVS63(tAe50}LhP^eUzF#Q&XuON;h@W)!hF;9Y7*-v>rKj95n)w~jE$!d@ueM0 z9vI`{gmr`;*AbprxLj|6J6RPF~mdX3STS$F1ZnWfLtsOHT8u9z}dcwK&ghv)` zpACee8wjx*2xB*x<2U_jQIECw)!%*hthb~5BWP7TwQSr#NZLU7V}se=UKjMW4!kBgo=tXic_e?M-Tl9jaCjr()J8GSBKy^RP5b>Of@_nwe^Z8~xw*CyN^T{1w-TyuB^+}Z`#1)ECH$?m zGi`KN?6o7H*!%icLhr4FzFW=Q-CGH#w-Rn|C0yPr;z*xYxhC^qs=fMnXTKf%#Hgpy zHX!XbLWXT-u5N}_dY?6~gX=|I{|)T7qrekG7w0xYwrzx*VYvCX34Noth0iP6dtLf^ z4G!2*Tj3VpMkv3HP$>+zn&j4c0j~dm9Ua5yP%jKuFE6CS0XqgO_P#9bZ5@W|`v>-V zlI)nOaCIHJhvEJc9Rf*q#6L0GnfPKruWf|h7H-uhHXM>cf4o@u`5JZq0uI`7?1`=% z@ZL7U;BACYx0&nh+HHix+X!d3nd@zid*Ww(hwO+%#NY20fAy*je{Lh(R_xQ(lOAp( zeE+HqmtM8ur&rDKIwVa0C3MJ+N(%SRMH{}%2&~8`_B(5NPhY2ca#2h!@Fg=>FKU0w zbJ&hHh(Hec>FKr;+}jDcw;T0K=a$$`sJNX_cDuPAOqBL&dua4}5IAhd`wF-Ac0!}= zgjQj=UAGh7+D>R@(IF6q>pfz}Ohmvf?Hydominutye~nYS1~+^)IWRP{R6%uc5MG2 z=o>g<#~DS3{@V#3ZYPWnqr<}Ogq7O~OD+0t2&cnQJMJi4UEghCxX;ozDGWDs)Q&6> z5%5R>4{j%{FKojx$vr0LtviHZ{H5W@g0OKI|!j2 zggnal);m_TU!4mZ?RM~(9SfE3ezb$&-bu)^)6A{0lhA0V`0frnpZ(qXy|12c?bse+ zU$A5VaFXshXXqahj$Xbv2gWz;7lN- zOEBL@a!qnI9rSt|JYh$q&G1vs1VVHIp=^TLPc0G%of8N>63n*tlz#G^v?E4v{F)5| z5-9c8-~^%FcUl}V(zXrr4r(Y0@SL)vxy{H+WfKXt5(#w^g+EToIBbw5@~_7Gm$ODMjV zu&NADtUa)78c?bwu-9^bpzlvRRw?#r_XpP8OYrU$>k=CGMepgW zgw}frZTFh(Ot+6vZ=Z<&_WKBpDgsGzK1eUxJik{ag5XU%ey0eOlfQp+A7Q{g!l->_ z?!kS8Klc$b?s#`|GWe2py9M zZIjG7DJ1Px&v^yy4m^?Etr0-aB*KU!!Wav8Z4zN$65&h|;aC#kVWe?itGA`N=UVGW z>gN!GP6zU)G2%3oM7W$pxSC{+gKJ5I2NpZ6B`E^%xE!dX@U*znc(#LP-nKVv$T!v4 zmt$pVMSCa4?{c7f8bi;t2MO5@5^^0h>-pguHZ(gZ;_C8%h}3u8t>Zhz%X(k;c%sxn1c+mVVPV1K9U7VoXf%##+clrP4_j)opuuJ*g z_=AMa2MOCP-VBkK2hGCOcqv9tVi;L1V5ABvsYaqMdc2`#4^ ze(_~?ASI2FA0KFc{}3U~A+!Ej4-q_vg#JYjnfu#%QS)Ocvjh3k8uhx|AwtX{LQ@Mj z?P0>phY4K|6WSdnY{?H4ljlGkABp<6zY35}hOjrc15eUM{GC5`9VQ$)O!)S&+1?w6 z36BpGvK}Egj}ZJNfLQsyV^7)sY;Om!ps>*tv_Xwfr5klD`X72DKggHkD z>yHpt9wFpV?7b@6i9*#4dqephXpzon-%lJN{Cb3t_o$h>=qMq0l<@sg!q-O$dvhT5 zo<2?6VfRG4sm*Wd>oxvD4$Ms#@%R3T;$IVDz9wA%+RT0FIAQ*A!m;CoJ;wl;Kt9zCUnK|jr8DB8+6ls|CkU^dFmpdYK{#}RkbHs=IziBmPL_L1aED2K zP4Q68fgjTu_59ii!u=D3#};m}lZ3`6MVxg!NqATq*ilMw^`hoCPYnkiDSqpIk}&5a zVg5<8y&1nFWcyBVqrW3mjRKwNIP5vU;SJrl(&Z4>Wb)e0n1fv^Y%|dYUlY!aZ}EaQn3I51kR~ zQvpl=_QUdkK4c5Dbl{P+_xoIc{S2Yd8AAHAW_u&f5vHCa{CSRW{v08$8<2i>1pHdR z;Z_8K5$63Y!QKv($YA(KYu~Q6x1sHM!#^+DZ`z@?mwg=Qn8Apn4(ACy&J*4~Z?<#% zdBXhjgs;vMR-708&tM6lZC7A%nEDia*MY4WjJ&e*JmKhh!f^|?%mqTs1)*!33xpw+ z0Y`VB+%%(3Y4jL4O3&!_r?Z}502$L^}JA$ue215NEc#^@$ z%QG(!7G5AMxnTaz0~ZKCTp;{;f$-}E!Z{bv%_VHvBENHKJ7wS9KnF@>H2QImE)cSY z2suM$?zIr1ogt*7k` zjCEk0!macxp~0_&SAI2fkNrxx^(!IrB7rUvI^+Vz%DbQ&oe?@~I_T%nLK7XhrRdQ4 zBBAd^!oZ7W?(U0(zqJ2%iSY2ES%>;=VXu0RQ7G1dD7&F=p-Y4cmk3oZnYrsO5x%)Z z`0Wzm!X@*#tJr#Bud1)-a|f#0jX2Bx8==^5gjTWWtBZgb~T+xF45Hn4WC(=e=<`4JiS>U^bdo&z%!d$jT8_!8{1tMw)w7`xq4B#fh`Uk za2oAm_v?iI*9q^3;Rdb~R$V77wQz4qf6P$!J$tu0aK~xH&&KP7gzJRe7Vfd@gde26 zKTB@ajKEmsT?%#F7TW4SK9`Yqt~!DHP9Rw_tp30@2bw5<|JrrJdWQ{9Y5S8B;O?brF@6B?v!$q zK(`2yw+I<;nd342YofhUzr(-Vfnf?a+bu%TTZEFgggzC8B3(^8vH|%X}Zk1*U{|0UOZ)PW@m_v&rJt=ohr7OwXGb<`a~zB`oq{&lxZ zMtvz4CLTgZ9k`%yi{BwsxI?IZ$E&U@(dbLGZ8T`#=H z9hjhSZ{8v7yko;73peduLbkgi&Z6%M9okj^dUgt5FGAlsuvg)hx=W~bm*Bl?)_2B6 z8(Q2Yw7*MOzEQlF>2-h;cM0?E5@y~N?XkX} zq-{7IPC8IAv*EX;cL_CH+OXQfE&srVEmDU%E5o1DG1ZHc4)j*IdORdrxc@XB@SOvT z74Dw9gp+p(XDrCDTH<@gzgsZpcKN$6vB)Y!sHYYXDPD2`NP=jIpe^8 z6z;+l!rBxhLYRnzVKU~ z+(vHDipmX~cVL*p?RcNi<36F6h5OT2HuRI+Pqce9m3^UlQMtI_z@{w5xOB*U!r1$S z&n?`;_X$7TC#2jbT)R)mQwCTi--TNy{icme-i4Bwws6(7_@-$xm#fonO8`2y?xUi!FC zyWi`qwC8kzh_Lfb>in4Jjsrz={@-&0cO3BLH2ht#B%yabTk4s7Z9Y%4R~!G9ElG$e zDfII+dV&3%cO96a*lWFSSJy$iZ#N`$xcub#^Mt{>4jfasH=YnSRkq=t#oyX{CXXaH zE%>?m`cfQl<}&pCzvAMa11~GwNU&+XRM#Op7==<52THwwy`g&!eDpuy2JbttP2pAo zqXrn+x`=nybbGyEG?w1%0g}6F$@A+)=z#+z za~pp90G#^9+GxqGAwo9YY%mr}Zag?_zfP-f`aLDShYr-uZPbemUP*Jk$Hv2g8TgcDBv z&>?^oHpVs^W4Dc=g@V+Vf3Y#{+ZY*%Q{PRUF2@d@@#0IoHYaN3G2$vGF$xf)Fqyx* zI58@bmMJy%^YaYIiPsfw+VMaGVlOuY4z^OVB_>(zxK3wW+OJPPw|R(1nWJ=ktQwUQ5r^74=_aDJN;{z`tFN#qIO=RpO!f-BTrgJrL>~H%kSh~X&Hmk zGW==T^uFr7w-bXD`(~$Q1ky4Vr8R%|%CwA4X~lOJsbkK|dQtOz$nC@gg}XB? zr`|Jg#KNuE!iMvb`$yXF^-p$&7ivh>v z`A)s4=f9E7iCv1Gd($zFremB-XV&vpI>wW9jP&V+o&(*Yj`x-M)1S?W-<0ppo}Tea zHX912H``YxJ)>HBVPAqv%*X2Urg~AoJCx0d`wF*yddBGVjHwoGR7OUVjEqGY8FMo- zZoP@rcf}jc26D_2`xaELuaFb<@)>bd&(8R$8lj2Zs4v?3k+xs9wVnT7#}5{AqEkL2 zuG`x=^~_aQyZJlQwX~tPU3}+KZSPAa;7H`N#~+?(Cx$BAL3U2PmvfkfJIc-eCc9rb}?4FgrD?xa8knLwLobnW+>dJaZboG{Be@WeL#|6Ehv5dwJ8?6=(XVOZW^`~fdb!Q^=FP;Y zor&>wCPvpxj2)$cCcS|(v4DGmuzRtx56oB9iS!<$e>XT2V@xK-q)cY+$<8(`&cs-o ziLo-1SznLTSM7(PniCZj?&eI4A2KoSTe$TzGkRraOvudmBr_vW1UOb)+-se_n8;5m zH&nxkG5R5VAa!5Rip-47na%a!S?}OfognH#u%;8!JVrgx_8sVZ542jT_PY*d7WGuy zm+-uK@K8-B)_4p*eVv(+uc8g7GaGtp^9bK(W?YoqtC_?1muD*Hz%51q?>~KK$m4aQP=Wt@zj?h*)GT25O`A{E=Txon@Uql_yV%0c zr>N(zd|oI1Q^4q-w2QH&{_4|6%p>SJXi?cja$823$D?{t&x`rJP7L}V*csX&gF=C?_(=GLERup5Av~xuiV}~+- zpqHsV0hj!T{dJwVU%=RhxHgJS@5<}-Y-N%0M;Qzh7 z-uh0IE@;?$Jc{vs6yv-_ho7Sue@J_8Jwpf8UQYuj8W%MBG1mP_QirGZC;1yV(W~J9 zAfGgJ!e7wHC-=3SnuX!YBJ!$y`X^n-ER3O97*n$_CT3yyiUX_K0`AU0a+vuoyyC%V&A}LygYixdMwSl1u&kop8(2*2UsU5g*vX0bLPorA%gH#E zlkt5{Gq*)9M)zEd5xE%sb1{OMf!6Y!C7g^c{SCKn?y7h_K@ zGq-SVMoex-^W2P=bDOzi_5MW_;JA$Y(3?(Vj5fGKax=!}W=za&=3dFoc#@luB@e@q z$IM+DhU@9!L~(^%B@d%+9!A4FX71~G7+vx(-p<2#=@0XMi4L;vYxe5<`9eLMXcTSe z+b<7eWFE$73-_-)jP!XK`SLQd zli7i8av#55G_JmHFVx$K%h5(VTRI=3em+K{d}e)*7xn(A zzH}a49o@Ouy9o!f_f!pHWy&5DIoHL9%r*8SAD0^Gt`M2g^l|5bpa8-XD!@&+V2Yr9U==F^BH<9Xhpr} zAu!YlM-d|)ausA0EXXKQ&}?s~f{Z=|86Op73@#|@aUQ#fvsKbw^`7~_2Tl|%67l!_ zTvH1&b{1spvTz3$Vti4EakLO)XCcPe_CQ=2IUbeVN5%%|eW{(Tt4I zW_!KSj3&`ShxQJ0p45vP51x@ubS+}&+d7)jEt=8O!d)EA*bvRw7tN{n6l>!rU5As> zUUl3M_}Gb&3io(47azY2@^9c!6iR_*nSabjB$qrJFSnBgwM$Wp}2%~zDsxG3ZOqKsZe z896EeLn;V+>u(hQZBSUb7hr-DKNKp<4RdGw|RNS#PW<=I(i+X{>!6~x@`Di;vk;e@T2q2HtmjQ9$SbrsC^{852%uY!mps>m3U z+1MAY7j=B(PjI4$!p%^T(V!yZm5OF=fl3T-B}VT`jBb?}=?eor<-8mw3jI{BZ?6-h z6z<4MjH#6vGb)+6TEAdhC1G!{62qsAk@TW+{rj9)Qp~9T`ztYyR$?5paL-p_T$bE> zp741^txutSPJCU=$gelFpRLSb?U%NeBG<9oRb~vX%!sed_`EWk-UoRo>%XbJO>%;Y z8}{z3%=o@CaapRoxg=&mj z)fg!jt~-X2Cq{6K#4x_Kt{QOp)9LF^snP zje4OMjXOZvi_=b|D`AYAzl>q5jbUuCaKDdXT#?+n+Mne>>N>g3)JnS!#(Jawj1whG z7&=5$XH==qs9xP{@9)(aX=^Yl)nF8@!N^h>;3}g2x?79?YWAL#_IfTj(YJ&V53kl> z_-imm)i86r)?|#W$yi&Hv9utZ;YMVw|bPIA`HztIa4_Tj)@!wwPZ%Ci@+F z(YT|f-$GZMu$468p>}P?tF;-;YMXWFS(`CXazCoghz(QUwEOGz`WF1%i9BJrpZ-g3 z;Hncf6z;;>jQHA&br$Z~+Kh|R-WxAqZ{QCnI+irz;eKsKMlZwVHS6%Ym(kTL^nKUM zXr1lpeHrR`eg9uh3|6=wdKnYEj42lG11}?89l_0Bhp{Cq;I)h=Rc`RQ6SGPh^)0#% zqhcLK)jDQ-d(>g{m)sBPgs&H-bFDX>_)6jW>oCUEVN9}cweXoMxeK4cU8nYEZaQ(K zq*0HxwTv(8Fjj=&>g8GM8Ku?n*-a-dD)z3f!`NJhu{{j;8)@&!7qHiV%ZVo?jduR~ zI$~UM#lp4KWn``^{FbM#c|Aif>bynZwiDS)8Qg+(8RhFTD%Umpt$tlbE6MFxH@x3W z+&fN`DP`#UGXvf0GJ0CLy0%(zu8jD5eO$LyD_dc-Z=pL*ysB{DtIK%5E@QZbJE<;X zR$a#8x{L)NzldUz}dlI1A)=A+fa4UR-R( zXxo->+rrJ;oKdQ|(4lH`F^{FcgQOR2{JTh2%%I1GkYaD0=8QSb8S|T)^+ij@=$4F& zEg5H8GJfq2q?0+pP@!RC^z{;-~EOg{h~3x-NWL#%OQTv}Q!M zX5?!9H20;}jGC<(Ra%?#%0S6g?-B9Wb78TZBGd^z37-r#)4a4=- zcVU;J!=%=X8Lb%$!*Ex%W^8KBSZCqJh0!5Y--VFE-PM|Lur=ejUH_O}u9`9TtKuNU=wxnLs~ zqRSfn+i%-2?zCY%v2a(kWqi|?k?9SF?F~j!c3_wsSC@KQ)TaXFfMK!Xb9|eY-tlWP8SF3wL4%MxX=ZPzOe0 z2ga(bKwqgtikx3i@39SaabZ+BV;wf710zF6M&^!Yd)szmjOfHz+=&s_iQy>$c;x=Z zy)qukl>_vr+Wfs-m|HFajpT>McVZms#Q3_CnfpO!MqFpcj?Rn?of+ji0&V4ere`F# zW;>vcTu1c0=fc5qMm{^ z_!zZ)j7B~)_i`6T+OCWmT^VJ&GLkz0$#R~xMQsshfwzDf(q0U8q5Mk*cUV`(lCF&9 zUCrDwZ!%tflkxtWjBal-lG_5I;v&wL$$pZ?4eINu!(Hh1lA*)=HyNAWWF)+4<~qAE za&}`>?ZznH&D{U0xJmF$dHo|7M!jUj?=Js8^mm3hb3uZK~`wBn!O!q19+qk1qt@4=Ye!~C5OdobK@ ziSNw+mejAUIbW&zA=ZW4@;kMnycmuU6(QMwPc1 zF=4p1q`fcleuY2Q1&_k5C%H|+a9jKXZYb7;%H@stZ1WbQ&s&UsZ;5>~(l2RmYQOKv z$kUT?rUKA+3XuK+5R`plO?t6=04M_)#cz6?)aGq+)1Mwh;fUVRzwRyN-YmPP8T_7nYETu4*V z@LRvWj6h$;4huJ?AERME#>jq*Ui~CLTNqE__+hs22ve=?+;+49mvQ%kdbMi*>6L__|3oDg)s`Z=s-s0fsB}eX1~2QkkN6V@LM+v zS1+0lfA^2}xUjI2k?=$+m&*<{L z=qKy@rvl;Htz$0iP`+=>`;3|IGv>Z;{=U3}8N~-P>JMhr7|bZ8Jp>gAY?%s7l=U-8 z`M%Hz7yeNE++{H1{lSb62AjDta|q)H3*9~&9DZI(-PaO0=|cJ{MxL5En6YXwW37c7 z9LzW(xhI~%Ro6#--?>m+;hr7LxHgz^%fgKw!l*bz*jsOin1|H$)r-pYpLU^X6(imo z4`H+(!e~3htV8c1jKPvSVu;vB5|`P0f3+I#-ZL)rQ|uizgfV>xW0r**KZLPYa*qu$ z$Aez9bu0b8{lHll<|_7{86x80j)gmDC}aFkp~DwL8NL$0H91b!i)L>{nJE1~y6{yM zBd=~ggw$Wl&WQO>eO^lY>nqQQ!L{~h&pU?`_|b)Lsu+37`YxHu)rY?U%&~4R<_Gizt*MHuHtW^ztt?$%n_UiMs z|Ky#z;CUBHS2gO}x}l71LmB%Ndv)%~p^WoG8E1!@+wXwP4{H13z2HJag?o7@0BKqJdN{Jz^RG^=K`151Z<>b;2T zhKuzCX|F9|IOF(mPCX-{-MfQ3E__Gj`NB@)+T4DRl6j1%J+r^lJO-tmk{;~Amxj1%J-Es6r}VuHKZ zFUI#8SMOH^YDc1Mbt66tP7vq9%S!T;-SYR#%o&wAoV#Jvq55C2b7**4V`+0L2C+A0C)m(Gj2j?;l&o$-@LyIG^zoy}r zZ|5?u%w_yJ*KAL{I7W{+Mr<5oY#d`*1)yq0pUZeL(3wOwwCdo%i|bZ;}|>R z%-rwd7?13EeI4?g^tY+~UlECswG4aH&SPYo$H+C$%xyA{(P18A&^*T5 z^ThrK{T-xhN*w9>c~(VYS1rTeBj+(Xe@2*U;U>;woSw&cIFIqiJVu}xuvXU7B-tO- z`d2liD?F45383mdR?#~!NNVWoRKWK`aO)XC4m&>K47)K68a+&x$8X5z40%( zzP}>Ty^fK$9V;05Rxk>#FzZ`x1*66aq3?(!A^0Lk53=lNXE^~ltFU((CGsN4I2h5JwK#f?a0u50MvD@Ev2itzne(SOz2X{{gB zw-n*SQeyM+$EBWskEriPB%1vXxWOBd823NmdTvG{N#TxN!I-*&F+=LBjaRj6bmp&M ztdM@&xI)}}F+D2~>}ZUM)pi`WBJr@U$Y-zEfSoHCM^`Y8TeuHbFtV;>lvv3qxRT+{ z4NQC+Si2qI*MSZZsauTxe&;7}Clc-I8SRYTzpA)Wv@_D)r}|gkyOEew&+vDhm5jzK z8O>LUxYxh)t(AZ=rZb`FK%J=RFqt ze*WA2#D2JOQ{mQ(XT;7Uylmn2jc54d8B^lL`JXKXfE0PpMX4}4z~)A=28O*e;~6{S z8T&2Va;q8bS2M<~W(-@+NM8v+N0GO4{P48Cfpl(6SGa-IjCHFS8&{ik7_*jfZY`tc zI!2{+j8)x%pgd1A>iX0Adb7H*N8#>RC+^GHv(C&tzK(HjozS=JrSR>6>bF2vH|{ow zfKTSDU)C{htz%^P%FOkD#aQtb3T+k^^AepfpYRZqgVP(ZD)LW-I%V#!^kRtuaOO%EZiS6 z6Bbqx#w@Gy0y^Y%<48jz9=fh)^jgp8ZQ=G^&-ie?(6`DkF+ZT+E2FnHs=mnQ23|I} zAFpRb_OxNDg}Zz`W2fY5_iLxu;nY;K=rG(<|B@Rh;>P+g-0%M-*HhGuOA1$yv-1}2 zKaDegQ8%JqG5n@;fBu);P*FD;ykgY1OB)&2HZpEmxKW!JMK_6fsI-aUFAlVj@1g2N zjWcg?HwJ{Ux8|mQSKk7~-B=WcTjyVLQNoQgiVh7nF*c+pw6So9Y+_8@#8|kAF?*9a z@3an=*GsyQ;Z?(L@tYWzN)k3%xZ5`|_Dg-QxSl^ht1T2%SGY$viTSNl7OwX0#}AVG zBKM33O1aVhRb%}7v((|5g`0CTqx5D*-OY@c&5RrcjQrbE>Y$B(_4OW!YHvtw#QpIwcXU)H@&FsX7D99dTFoN2zYyf1x zB*&zu`+fcjZtPdMp)HK7TNrmO+`L;ErMEJ?TNzciig^}&{w6kz-+~q0xTkO%Z)M!s z%5ZHn>+r{R#)ch?4|g&K>|_j^3mi#^NPVB~+U2MFlYtg)#5OVf_RCI&J%JIGVCKG> z!04L57@fcvp1>GZ7U*48^h*|pvDe$mjr&cEJUJi5OHZ^qUl_>7b?3-xTLAy8e<3vVmB4b>lc^%+L7#%#XyD>-M&P-%1O=PULaQ7!N zzDs0WNo4$-DC+UUY(n2qIPQPkxTA1yBr+(-hzgqRtsZ1F4l=q086AR*wZ#FH6x^O+ z;y2LNjSkHWzYPpBviocpW#QJ?YQyxPsBa5`jJQZ3ITPSh#?@;3=6}PDNzDwueHmn| z3o(FTz$gKB;9$BU{+>S8Cn~ zbaLa3=EnZ&Q@a?UU5sCMndSk~KHSA{?q)120K`=T(kt_Ad$lpR&y8`4eYtlt3hibT z-EIEvI=dMib_+j+=9%An)r)GMx2qe8%?ZOYdQH-^2J~4`a?A#>4hN zi;@wkZz-*k=T%Jg_H8%PwJ`jDbPwalJ&a3x%=TvA%P6{+@#g`5+3&a0!>}9;Um(hE#nY(H)j>VHo^ zH_j_u>|?n1F>>xRbGz(ge6)|TcpoEfALC4Up!eIrwT?h23>WXak*TGj@3wu6!}}O# zE!<-J8IATcKHSe3u%FT7P2gdc2&_F1q@OJGQ1$(P?7aze6vY-l{JY)NlUb9Q31lN- zde}mMgdv1|Nmvs=ATI0zVc$svMBHH9SriaA5Rj+{B+(}>DEbhB%Dx2+1P~!0@W3Sm z5CsC6@APzaW+BLXzW@Jx=X~G$aYEnep1NIAU3Kf$y|-?=pRl5bAK!V~8Q$E^aAbR6 zeJge{JiUvd{ceVo-3-^>0P6J@ur8bMJKq=K&$n=e6&vsMje`xl8Mf_aIJi5I@Acgb zmOTs&_AtnM)OoVC62ChV&=0tMo=khoipzd{llL%m*~5^&Cy?(Wdl;7PQTy+Qdl=5A z04wZ-%z-}pzJLF9zimaW`+V)YX%EBqdl*WB_+H<`VBf3qZMavBHQqZxt*@AKIOgY(lVe5-wb=6hCb_#5T2-m~Igf1_OCdsfuG z|39y%yvB;mzfsP;#tQe}C|A11iVc6GT-sVI&i##YxofS6ec(TD7p$}5p1)BpYn>HO z{f%;k>#X?nZmmlRwFla3#@SV_tkgiUWVvV0^&vm*7wQ140CyXU*3E7xSh23t+>CxufA{Y zWq5xt!}_55e!7=o3+KCCtFKX&?;8B&F+Q;3dB6HL5rF0b&`MDA{c7#IcP~Q;=X<9( zZ2$Jn{lJRP{P>>O%W!tDx|UU>y2khXUWO~2udV6&0mpyw?z`GX(e0ecY_cd3j3R>v~D^?Hi z>1UVrGt@Z1(CC0#zwi0)K6!xQ`T>TfMGVd&hW0Ii%r}6n#X!B!)&6y)K5&m#rLU|w zI>4t#_b6i6RK)PX!9c!!iW%N3W(YaN;3;Ovhz9N%2e{S}#*b9}_!kDj`_2soX?v`g zFwobYvkx=8f0%(v0{N~hVfeI!p{RsmcL~G!C_s);*HxP)sk(`O9*(sAR%{yR8@Kh3 zFmyP=Fz84i-_u7JEJqnqjxsbk%5c6luu+LSSPGQ${e=GG0L51PG0@kq1|Ma3^(e#F zM+5n09AlVyjNz+e3>%IytR4gmd>udp;n~S*ef{4X;{L&kzJq-Ay?Bga_7MT0KLql9 z`iOw!AJlQs{)fPPP#XO8sNCaL%o*f+Ze4$1c<={?r-Jw%{ehwE2Zmb58H~pnSf91MBwU;uuN*ShkPx9GYsWt7*3yI*fa>p{1M1q z3QYb*9mh(2wfL-3y$y37^!2mp;UcomGGw0(Cp4WB)zwu9nkUVWCK^elrXi0{Ma7@j)E@aZ{*_s=oaA0G>}9tIrw9LNC>&<>$C z)E}w|d3e`D$5KRme@?ZJDDy>4K>y_+0kxM@ABUqMlYr7t8?uJ_`d7(02J^od+Wjl= z_qRXK(EB{YobwEioM(t?1w1=S{r!5rU)0||pIg(0KZg4H*ZT7e&I=6nF9h;^bfbX0 z3k<~<7Xi+Xh%V z8Ndl(yj`6y6I%KDm)yt($8cXeZ2gU)^f!hxzXkFQEn|o&Q^#+;vOqmoga0@yY;41Q z!+rg>Nf|>%8N)qgfqdO%46l|kY%F8QQ;v0kS@qQC=HmLZA|JK(Elspx!Ej%H*jmPL zwv3@Hi0?fY86LjKu>2y!!ix+=%KMudsL$;hZ{H?0eC;bI+pyV>@4AZ&8!s~KxfodA zTNfD&Xe=3i#`<}$;tml@7oW{7GIL=6QB-v9>k z@#fDLoov{hKaDwx_c7-9QAy7U#@cp>Te3`}tX<;`Tl1KRX;&+CK-x-Gf9#~()Rfa}a z88WXjbh*mVJ_#5&1h6gxaw^pRpzy6)g7>sx$q3*4v-~Q?-n_kJF8GdzEt;l)JY3I6`~7poZ;?!h+f^5eVqI>YzZ8Ga4o z+u;U7&JBjV8w_vXU|8B3m^>CZUN(MxDAa)`TE1w8w>|;Fho}b*7tY?L-b9C zPB$6a++-Nv9Jptq+7DVcQrlPQ4^Qy+%^G9F!cjhXw&5nj_L~fcZwB%eZZSmMVsPDJ zXmE?6eJqd>q4Jd%`Q(m^PrdRu8@7+~jkmO03^}(LX50$o`^PN?TO~uQN`}Uj3}>Q& z#hmXtK91jP3gl|zVv-HLM*H~QQ^_!@l3`M1Am0U*3~y926jU<2T^XqF4dneHuPLxv zQx&Gz@Z@M;`+ic%u&0vYKoDQi!w~7=^N@#ObS+f9r(HuyD_|h!o0e_EdcXQ6c^HOx z7^Zjv>pPJod_od#kc3Ml;nz06-tmBSF)*W_`rMR!+mG^gNPEhL+GDiJE8AKnj1(kH z6eREaQu(@=tq>%v7bJWsNZvg+M-1w-nmj;dRQj|H1IPH}!PkO>V}gVxqU5!MXzS|- znS@*>;SiIslSx?70@ySOm^Bn=*k7%mzdR^hV8c6pd>cp-9*`s~kOKL>q?52mCxL}X zxT%wn*%EM%R_DnYQ>)?oiVewQef{4NXQBaWk~H&QPlUa!`-rC##Bx2<7Hpg+N%uY0Kt-;VXk#g2Ljee@FU(+9T0XuX6S z&UcPp!s-~n6|1(d)?fYQOztupZjAMfuNU+ZR_Z0Z9mMyadI>u?-|zGi)<*(4H3R*( z$~>vrgRtBN*EnDM9@9%WrI&Cfi0{iE3;3P$y``7#x^L3G+=i*+eB+iGBv=d*Y=*#g zsB4hW)S$L+TZ4q0yX0}sU17s&zxsAINa$^la9Us-gMPe^?-_%HKMfKp zg7}6TCDb;m?NHw+Rhu{6pRaqB4Xyq7Ha1G=Xq3>|7}&mpjS|LkzEl1UzFE08j2-XO zAEz57EH+A57sQvDBv?%nl1&ntm?ZCe2OHK`$J*jFRX+IZd8O~z@XL5#e;8nr@T5t? zE2hBuZZ%2Rr|>gL_|YW69S)?0s^elOpVvQX3(V#6Hg~lRH7EG$d(9*v#w?+^Igsym zvxM)=5`H#IIAad%568JY^RI92IvbWx@I5z&MZ&dc5iUz0-`N%k^DPoqSR}k|3FOOo zymxY_Z#_|(Z^I2gz8_d5oCuY$(iX_~W`cxKO(c{hNjRG%p=cA3*;&B4AAznS9B925D9=&(`sed< zzhKAmDL%fjT_j|8k??AlK)$uQN{H_&VQ^Oo_jOhK!z>=3@9L!X2Y>s8yuglqQ+)3! zS=?2^uC5Yn-2(aU?Iz(=Hwm@6OQ_jh!jWiT9gow}7pr_99uKtT{Xt%Ahd9+Y|31`R z!lT_KEbksT|L*E8p}e~UQ@Z4}hbZ|fGKT@*Hd4#Fm)J4fk591wmfI_Cd%sxe5<6y1 z^~uxV_d#m&wo={yQrAp4}MRdKi~i4eT8YS z*pZy=tM7lq*MA<&dc}^1vwi(>2pC3!VGIKGw(($??$wll_usp_f2i~oJ3jWSZ{u_c zyUqjR1=XL$pLa+~x`fnpRZe$LmoTH6_x0`Yv!`XfYR9kHzInS>y5zOhDYiI8Th;hJ zkS<|3=Q}oC!sKe+o6*+q{bG2{j)WYaJe`y-LH~h>&(5j-LXGc?bP01f-{;dMWL8t( zx7zyTNa1UCjLPxVcR{*@Aw2{P=YCU-@2lw&R&l;-?!ec-zFDu^@otWFai!$no{xJ?RpP(%bxO<$ryxfjH(|q+^ogtyyC;=JVKdRXT@;WJ*}uQH^&*LS%c&-n5ESO63~ zWRqWg6~4Xh7qFY>1U)F+Jx)PM?()xRzIpKL3<=+7NO-)5IuCy3tu9#CJ`!g4kx;L% zgt;Q1FC^$|5cXc@Wee>XJKZM_iuy_@?JMDYU$wt-J|UJ&3DKDnQZgkZWvcW4c!xTt zuH(=DcRxQ)*4K7CKi%gqY@aD%V5Wo-nSp#i$dvF!riA^O628uqu*r(5c z!~gI<{9lAePS2J{K0IOa=m}HDw$<|$g%A31+0BxgwMj~ORdhY_p?S#+z0m2@){t|D zqt4}wm@(ckZo-W5506Y5l|7~D$T3sLXFocl>A36>k4!R7$sT>ji-v}y$IKivIl*A` z-r0~iDtk)Kgvn#3br?5_pX!p{cX+oxojTvst!sy7e&@P$zo%3B{T=+zWMOXAk93V5IkI(1 z%9u8zTw_}Lm7OtR%9swxuH@uISF6Nk%^q;IZri+7+ZL?{`+a9h_UH*?CyW{0VeE*> z)5jRECwFP~e3U#5Pj|L2MAIr?gOZ0xv5RISlsbkb9%)eLaxu$$4cg>$`yycE~PI`|GJq?v(TIBta%2AF?@g9p-d%W&gcf^Va z<$PxBoLKMo);+RLIbvNC@6jFdQHb~RdyTz(FE_o?RQYU{EwXa#CUz5*;|g(;CbF%9Z^yiDhT68EkBcXUV+D> zB$f3Yl~_>aE^Pof0nAon8v#6~{C57i6M(^f-_vYRSii8m7Er~%bk%6i+vD+ggG|+X zq3Wo-j6y5z!<~MY_WQi;3HW{|2cX!#tyR~RgnHe(lkan_UbP6BwVtTOIgBT?p6I(? zSnEnH!p&M9?RreD7((qBM-2adjX4p7^-))&)X%vBp-AwRUmr%;6XyF2M(E4@K1UJS zMfrV}2=S8db7>gi5C8H_l(*u!nha~A-p?fxdWyd9cXGY%BCK?+(gGRs67vX6^P1+V z-(T+_?;o!{+yY^RUwt!egqb!UztY--Yqfo!)AU31gkkz&dX+=kRKlB6eb?Ov!YYIB zb5;ala)j@5VaSaT!mSXGIs)J}5>^>~*E2=JV}8E}VT5?U-=Ae9%<=m^%!CZHuY8uC zFh}qETo^;R7UTQu%DX?0Fg$NKZ;#xFpCbrm5!bvU7JxocPjKlw^55rPw{0C^|GJ~< z2!`86IO*3unT#;U?|GiG5q|f(?g}Fe@~eMl4B;KW`nYRtsYNJ^-QkrK03ywigwV(u zUWo!^Mo)<*id@m;o&RTrR{j+Eru->zK#hx6#Flc+;&)w> zf0|runlmkXRMY8WCXa18;^A2{@w4!YK#-a>ZAQp#w#DxaJt}g;uZ9z@h2IJ%

Zv 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ʬ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

vMqw0N!3!#eRejRS1LZ7J z6h>t$>iq4YIElzMPyC!McnL9XaZRuz&v$fz-&2xCD5*k;rVqSh!)Kc`QvUwnV=IU(7oOt%~`o&9z}HX72x&w<)~wZWbn@nu~iT1G>}xOIOS zTjaJl+(s<(lW2-r!&_733~a=9&4J{CHM@XuYZldE(4$+IG^vD=T(%>+!kbjwGS2_D za!VSa(Z5$DiIMJ?x+T205n&S*^9goZE!+RFVV}_E(B}EH^4NFLG+EiMCDZe?)iVpW zaKaJYA3p#)(&c?>@{+A7xDZZ2htoH)_yHA{{DC`DIZJW0CpJ)6(T$7PwEqHVYpZ+B z_o~Q_9~1Tq!*i&s)^fy7nknAx_MR!|3-K=!*u@+Nj*qA<@+x;ObDJqD^T9_rp_ih{ z113}jVx$B{Y)G8$_9O4#!rz1CBt2c&*~{bpiDGJpewaJI!$nF-0n?trFGAJNeBsfR zNUCx@BB#K%?8W-K5cK*LrON`l7&SNBn7>{}tGuVq)*WC$*V#icyto#mT~q-!1oWG8 zjJjlc`B#`^qyuIr9ApO$LQ92Y4(xXJozp_B_m1pWY$OTKVH^9S0&SqAgFOob=9dLl zI-eyTq|h3|3!)}CJ*#~08e{_v8@U*g{`R65t~0d+Tdpm+yguUeP(B-(jKfokx>MM* zH&oG`j@<*RntslBVR*}Le(2w1A`myT+>BNQz6RX#>HqQ7)cvsiP*V$l9;6D)Z~u$u zC8}xqXVd06C#gjcbFnJ#E1nKQ^X`e6L!rGe_K}|>$DE_{A)sItr>@)A8oCTP`m;ai z+w(u{*lwd4k@X+UR`b6dDzibflx_w7lw1HkebAl~XKU&vebVFt>mDMC|HdXKw8IlDrl>YU8PEw-!eM~eRi^)kJw;8XF_BL`SwipTLZ4jRDd;r zvnzAWDGau!W^Z{*ts*kv@w7kh4bJ3HlL7eSg{Itq$tAhlb?EhCD>wg0gF$Tcp7;2` z<_S*FT1yNu!wr*{<4c(q- z(b`xjJ4d1~{$vCaEWuJ3T)dI#pIlH+m)ZOAV*>2;4cCS)nJr1L-MoW1 zIqd?L$SDPNIkij~=2LU#ZQvw<(8_J2IwfEmZG<0X$<8*vy-xJpH1KTSU)6A$5sk9j zc9y7qkLG64mWzHTDp=vwA`8vcBG%zdKACG zO`=KVfK*`;z*$ zg!b&%5A`jdRKh=W3E=O;XY`RzMpwRF0xv`-e^vuqb(%K&L;%wYuIDw(pm;Xx z?E4*~EG+53iKQ?uxalXc<*#up{mW1e#*OlTXxSc}r1pgrbXmJ}L_w)`~{+$P;dzi3kNwjI$^dbHAlccDo=ue3?@el@i~&Wera$Z_^dl^5Z5)#)RiR_y$+ zxmVOrr!nT)N1Q?GqJXsJ``=w>MdUwx6@nvtk5HMcrfT~Xke7#S<3`Bv{J-7z!xc&G zbJMU`)WQ7R`1LT<<@p;?Z61Dq&W&GSdjyIoqo&q^0AgnIGrsU z$~htpwqO?&zg4J5oHq^A|3jnC#df1?+Im{}*eLU$u43g%~Tp{QgBsV2D>nxU= z4_WZfe_jva_{902LyP7Zh_>V&H_y`8GS73D=P2u?^+?OVKdrmxz}SuH%BX#U?j5MApB%I$IIzd~+SDnf z56mTo+$A!694X%q!nJ(c>diqxe_4?A^MX?Y8WBRlo9|jv83Yzn;DAhm6<{QNDCdH< z8mC#Zk6xxz^V(8y+HjA#Z%A#~lY+R?v z@qxtj6by?n7X}0Mz$l=Ig?@AtCHCijzs*a*Q9x)c)uZ32e@XZA*w|4&x|{>>LP6Ax zmRSLnLo@{~yu|!Rt^HVBxz>FL&-C?7O||^#p&cP{U-e9TiYjsE+2@tqrnZg;ft(9X zIXF&i#M4FY?g?Q3J#hnA_ryg+JY$;^(XH*K3kR3s8c9m8@1>-Z!qlKM7d2t`;K|L> zao0^gg1|4z-lnIX9*juB0Pt~fWaJW3r1BBl^J~EFdA20kL$&lH z$J`me^S4$Dg{rH-u}uLiJLu`p4@Vx*zyI$^`Z$gC(~Gp4EVI4a!4>2Vhk}V@E01wO zit*Iv>_u=VTDTOgqScN$#?{*0(c{9CYa=gI3rrKA$@?BWI4~X;B%p)G7d}7L$5uK1 ziAWaG0)6^%&v<@BkN42Cic@u#LH&UEqP^Tji0!9NM>N8?lIfmP8DJ@onEkq_Dg zK;L%*`sN>R_!G=1e^gHC7dg`AU4}6gvXAIz=?V`@ht6mQA(Fp((TgD>JSns53BahC zfE^$5z3gAABY#q}WS6nqYQ%aII4_2fmRs0&VFRW|Rd5jBdAN1{uX@l{bZ(0?UrNV` zq>dqPC{Jw8!$3!hH^V8B+G_7xYH#XH_4eL;hPVyi<>>0uU{G_8Me+`-XEPyjgz~T#VBSR07S`i*enh2?fz0P?SN|X! z92VSTq0@aauyr+Xd~#9R`6;2m`G+f{H;J(7nR>4iqapV!;7iO&qdn$HQ2ug+;@0sW zM#B%>lE2K{jjn^KYyodyw%}cD5o}a&7u&@&SR-JS>^#g)~s0h5oA?6*3N8wGJjy$ZoaSH6dw-eBp+8s z%51Fu3DY!87l4Gie7fOSv|sAEz!Jf}BUJvfH|uFV_Wm7w$GR#N+sQ4VMHk?7Mm9e< zZoQ8R>I>N6^P|c|UcGtl$&Qw34s&O}BOYug$-RxYpZw2dCMXQ*TIstH zjkt1A)ZGxR3{~wnw03>wnwFEGPSm4>)9nd>1eK)blU;0-01eEV>E;Y9SIa-#yfA22 z*O_|VB=wsYK#w~&;?sr~(p5mBt;$6V?|V7zvr9&lf&WNP6Y^eYq*CWy^3Mm3135&L zTFOm@bo!0)yj?^W7p_${quO9x?PcJhvHI_<)qGbXswj9`5oS7-_sOKNmPQ>gDG5xU zcEhJRJFW5hnq0w`xSzUg)es}D3q_huvx5pw&Nk3S!lgBhqfb3#7RQyZYlHfFnLXss z0zuybz9VN`z>y=v3(IfhD!JfFXX-tZXArxC^xe?TW+e(A=Xi~m!?!T0L$2)$Ly6N{ z>a14>k5#1q$xLL6!Opb(j`&)*`D-(ZnLM=ntQ&(UyB@(X(oGud8+1-THy=`nv6Jfh zt2&*#hbts@M%=*nj*fig*o_Y@2hp3qnoi!DfBiW}wY>9YckA%bmz7+Sg~P88n6ci_ zo;k+9wq(XA(tV~u$1^lnRI+#ZY5u9E)JdF#&niq}-xUI6Gt$M39gk4b@1pu$-)v=t z0H>I(HFoQ?h+zKg6VuF4xXN0z-5X39>AAtW@{ac}#iXS* zPJIY2Hz&5Mww~mih4;#oj4XTa{QIUDr2od=jG5ODh@bmZLDR8QK7N+-B$3(4nRs{i zaU{C`@60_Le9{ZBs%XA&RfyPtd#iFzxrqfk;YZ2N{3|&tIi-`+cfi25kSeZZe=#)6 zzaVh6yto7#e52j^C9GrdBkqTWjMcz9w82%loovt7nduiQMVRiRxnE#7SSjn0fIsv=sn zmP)Ua3Kxt^)KXskhIPF6i&e)6Ze5U&?v9IKhO!?5B!A6nT*<~wnz!d(7s_BBqZrL0 zC$kCX72PgD8nJ7Apr9TB%P=9sQsj_J4{#U)FG5F!3K-}7NEZo949i@JHK zXBBR`LUUD5Qfv(@!Gc-4;^je=w+QMEDEM=qP}^O$@ie9yfT)D0k~Zv|p-ZOYS7qe@ zpTqup`V{~u*j%9*I`i$HN5w{?G@>#z!zsZk!Lu?R49-Pd)){I~lNne8Xa)(cdd$@U z{1MgU)K$Z-zLi1`ON2Z`oLfb@_=K{4p9mD$ z)-80{pNXGee}++ZN~o!W1sY8oo^oUS2YqN-lG`%D7i;lrsJ#NmMg+$;hhH|fK8zxN z`{|cG>_uGs2&{= zLLwBcpq0)eP*inLlJnhP7lAjIjuLlRN2)ijo9cAe&?y=)iR^Zp6qs?kB`NS^vugmS zZz^t2&33==W9wI(Z>slADC2Z3bnK4R@wm;)T1Pop&V@CUt3tNjcmDvnuD>%JedrS0 zj1P3-jzUX*uxDb$CGdTNpn*5<)5lVS6uHrSyyfqN(ocTNPr z8fD;?nohej<$B^aZoG%P+_?|f#2TQrXVEJ2f>ycKuu})NF57?hFaw*maU&wZyE?I- z$a8^?!poC}GnA`IOAnd-xo@fwWRk663rR;svaSp#_<`tO?{XY5VI32_yY--L<0aBi zh1GE(@`U*OyWd{wZ6bGa?e?~c?H;X0wEbkG1P@XhZMgjR=2Rml5L7-U_=0I{J-BsXPw&GlQBAZe`Btl z^^8c{(`-Bot;_rzZbh5>4u3>Y;0}A-RG&q~HrK|bBv`?GH6DVOOxy=DjyvKbK)M_) znuln<3|?QOa76>}SX*=VT2St)V@2NMvp4t3?%|rwP+6&Oh8=6YVw?Q3_*rE$SHy2H zRXz@pp09|nseap(!YWfFN60n>t**&jjr1#9J!Ik4Om#; zJ)aI>ArCjdZ;`>jCcK2}*F40-dZt?^;0iOW8jS z&;IkzrD94t9%Wxc4jp?#n{bH%k?})_C8mef!JQ-bH863Hn2omkKq7|9qA6m5NVRoL zw$-zk9fZgVJc{o1`@oHb{RykYOg|rb@I#~NB)88hJ4xca`|5pY?uI3ql0!KYVV|U7 zAUb50kRirz5=|E%P6^O`-?}kjnStD&-0R?h2@Pt82hR}f29?@iEVeWyKfC*)Ax)fn z4L-}^a9r%2v#(=AFFB%4$Mxf6LNcqHX-2?4PR{Bp>VGQZ81(~d?Itu%LP3>&uv%*1 zA#bWRXA5?N+PwHM-o-DWDhb(w+^ve=7vWUaAd5V7UGjGY|9N*ZbXBow#5xljr{#pZ zaJPwPO%|-@X6S_pdg-jnfd;bx9khGl$wBC@pT_W>|7U0Ku1@&AI5uBa5Ty)>lGW*6 zH5%JUYU3ssM?631yCi&;M<&?zvE4eRPYR7%*+qfY&ubxUJ_+%6SRYFD+!G#m{|kIQ zZ6YqYpq*>Cpytx~?(Uy5r#{=*u}yYLcvmERuTUec^;=tkKw>RTeLC67sv%TR_>vjj zttQ7+4S(lY+e5}bMPe6YYjWl0r}pJ!)*)l7y4S7wULsM%&W50hm>78S^2JL%1$G|% zfC}eX8~7EEi-|)8eg}FPw(IY%y&om_O&1sAPI*$y^Iul1=GWS#evw9J(j+%KLmM~D z8@H!(;**?!Q(A#Nt>$eiRmsSrlTuaH8ssl?XL}V#?8SX|H_toG-%*|u{vTkZbQ^n$ z-@z?rvCW(G(j7^CkE2Py69nd5)6>e@|4Vx789L$BxY8G5))Pna^67S;Fw%+N_-BpG z>hft8%bt5^9|Rvav~hBVF0nX{Erd(K`4IqHcv<=bym#9|$J0poSaF0<_SU(o)=XR# zu@h#uaeP7fUEtMWLg9)wxbJ~;AxKNFX9jp?x2MT6_*K5A8?>oaTz35)syagBUr#6v z7SCEOnmn>mPTYaT9nIf532h=RW2~YxJ)eMLIe12Ws7uex{%0F0%vi6v4fIH$^Sa8z zmd{mXBuW6W)okXw>&j_)NyPL@=)j&L%DyrTe5d$x1ui|RH8{2zaXG5c;a_$awRByp z{NC!$%nIh9UiQU6-`aeGcNEjac^gzRn3#GY+PpfAV$)^D);M*1PvPU;zo(`>54&Y? zyrP7v%5ex!vz}CakBz&AN|qh#KF*ID>w-SwZ(_Y&pPM|6jo7;QGWw$mPGF6mP_9|B z-w{D2w>DR$cmS6WT z$o|FFV)EbKMb2N%)(Ud^9^yKdilFOzV1+aM17Ui7xHI(y2ym%0Zy)g}x3GO0FeH*h z6_M*^Gflhp5&t_*-$C56Y@q)S|3ke*C13JptS#yboqpDVSASx>{w-^}yx!(OvkbC1 z1X<3l-p7PGUjG@=Y8A4xxS_7bKOM4Zd1hQAv+yLiOQO&b%tcOG8y;#Vs2d*g7z-H- zOJwDcf`4v)PzmY#SKYUJ=7-s+($)*tv<)Cku~nc!BPcp;!!%d~f4L`c2)b#RG_0M;l1sKBaCd#c#xaM!FHqIc7k@iAs?{ChmV`sv#r{nV5rs6 z9Uws!LVA%i41TjNYm^o!hUX54-&s^>@5o9U?4Pm$U; zGC%hL>d!9-{yz7Yin%Y27QC(UmrDM`xcc$kXY_t@w|0Fx`N@^FD+q^)8n%Zc#y4mm7Z0?uxUuX6yFTEXtenqtd2U-mwu!;HA@s$} z1y9x1S_in>L^iP<>j3}V?!d{mbA`wXtQ8x^wKdntg- z%iKEpR+0k`65MBpj043SC`<%TzaZZq2xLr*)XIF|LJOpz3c4<#6MZCL%qzqu{taugq9adAAW>mcsPS zu)>=9ukj)$+$s?UcWYXT)+lt`*$=&eTWcSd8DLRug&RBnX zaEsG~b%56;A+!uo68bUR=yX?P8JX5sTJPpQL5oqJhJm-BvdY!|2+ez4J2Y8bMyukq;okJfM zC99@am1(P`KS|yNJE0vV3?W?A|E=WgT_P8#jK{?2&kx&%q}{MWjD4!`N;3e%RX4&8 zAAOM)YaN)ut;DhMU(P|hz7eEbtB5$bSK$`ym!5~e+^VZ^XNlcab*&b|$&P3_+Mr`aN%n{yr%EIr6b(GzIU?D%*>-F0eMc8WXCEWz{F^g+s<5z3u2=gf#D|{%fbxfk+(zj zM9Xe{U4jPo#H~)2wofi2r)Qtg$7$Cop5jXM({AfiNA`8c{fHJkkt8wK@KcSK5BU!1 z#YTC_Q0-^O^yQ+#2yjYn?m$rmnYJ0w3v-^J?LH2Y73-3C+;0|SNP;{*6VR=`cqxqyuThEc;pct4~kLXNz;;WV&i)pydRKhwBN($g7% zBvh=>JwJf?g9gdL3&JMJ*sw5K*Jb$Fk&{oK4 zf)0+Zl}}311Sr{Irr-8BMYWl@_0$rz1hlmAU4< zx6|l84Y|;bOisiRwUFm)7mHdzz7z$d&SHB!Yrx7abFwjhD4&ads4+IZT<{Z61u^&r zdEM1AwU2>`WD}x)M6aj6Va6yRF>%85a1%MAq8{QiZ@_G$S9)5yZby)!xK;21F*rc) zWSLTwhYz&Zm&`?e9$`qKLJ}iI^H`Nzu{?^FLQ+UGQ@;CW=D* zUH=J>Sb)1o{{@H70aWIFR*P`Ee7qFqWH~^swREAjj*551gB0}NyXzq(rC!BqX}eHK z=f*3Mn;W*Ed{Ex)n>y(dK61y2_h3MCL?ot29tBwa?fedXGSZ9QY z%A6`H6GE~kb}=0(2?dFty{)m^7l>`I2A{-KeCOV2&5dW}h8J#KuR9KYn_oM$APpSVDA%(J7ynx`xk0toZjGb24gV8W8zD}iH}4y4B*eKV zMSoLYPb|+?(eP>exiaWlcGFknj23WgL=US=xJ5cWBTDXtxKDJ!B&~)&O|H@0mLjrf zuRnsEYIsfq1&T%!=-lO6Eh_d1Lvv>M;3}V6loTLtM1=PY1UZR&9O@k)SzgJrhMmTG z(Ckfa1$&b3=ly<~NgH!TM52lm4`P<3re}%Lvx={gODQG68)c)ClVvl2alDA2Nr@lo@f8JIZ|3#58M@N}iBV8tK)!&LH+XRQ%b;xqu53afdX+BVU7#e=CYpmZua3^|!?nN5{NcX0 z&I>09e8R}DMOR;=2Sg_C_V<|YUw&MbT#e!J;;Yb5&<A-J?lG%vrl=fY&N1{UqY&>{F#3F(a+?(5Y|_b|2OpD1`zfRw-mj=J{!C3G^&#pQ z-=LSRqVdx`fcZjuS`+)FqC<0Mp8kQv&6S%>lXbaeQ0HTlh^Yiys^#kxnD6&sR@xD9 zU?g7y4YNYR!7zF>OdKZH&QqE1uAu&t$+*;i@@yw%;A7>qpHBRy5YMS^QubSuyaYeF z(zW7aBR>wJgPHHsLB28#VrAj7ELOlWOzuVd>i9f9g_YlZ2I<@q^v5y8xhlFbp);18 zAk2@Ax>mfw&tvUFm@kaOHAeYpK13NVx-pKGu?DZndN~!I!~7Qq{7=R5?uOlb--h78 zp3mnJ{{wY^aV^9Jyhd0XNlugt!z0kcG_I%FYdbGwzOU~Fsbf42xnbUrALcYYEVqY; zMcBi#Q_;VZr^)TQ;Smh>VYyg6EcV1Csr(gc>cI3sTjb8)fwJw6b9Z@QMRC*lMVMNxVTabH$LB-WD};-&DplcKB1rnV-!a194$ zKH)S-tQIpydh#Uc(u$K#S(6T?@2V0-D)R15O=dBjC5goL#_DhKDjZM#)`#uN_!iU2 zeSMC#&c|nafcV)EF9u-k4aozN$>>KX5&uu$U!hmsD3wtyL`<;OzR?=um-6E%X!_B< z{G^0GEr0uD=6|CvFL?w0G(D@Zj_Hp?Ch1?$lWrA5uFPvq#%^fhyP|8-%PjKtg>(b+ zUot1Z3~y7{;!mOBv~pCmNO?fMkHyi~>=nIJNN=T|zYu@uAs{On<)G=tL8w^OiYuej3n`H~2K~LORx8I-5x+k9UN)jNg+Pw=&>b@gTU2{CQAx zCh-$~d~I-7wjh!se!l|@T-g!}{gtha{4aT>biXTG2pli4cQZj0i!1TktF-4d8d00@t8C5k$vVQ*oSC0d0g5c?iSx3I465kA9QPcY`jEG;^yn6R$f8VL;HO> zLHsT5bPd-zk93y8nLG>Ih}+Ab-=Tf4mHJlXV5Gv`ZAF7?Rv2xhg1gChYe;|2`ya7{HP^8yLTys}&i8fMe=y(SUS7EW{QwH9VS=*u>ij2he-3c=Vt2BS zRHF%1!^`D-;vXN*7s*cvtmox-Ur$`9w>D&F-@s|yn3dnYfVliz3G}G8DnHx z`*trRK93g{%asaCZ(qdpJic1;RaDK=vo|vRzwxEa56PGDr`0dLgz2H3c>;E3y(nq+ zhQgbO+t=$`8{7@E$>&56H_XOT)f;A$|BO+G8)lP>G)4Nv4YRVPxB+2o7}wI5e+B98 z5sc5*wvsm{t`+0F$L9U)D&q3E*8^^xO7M96X_Pt6)39+EVTx}2JlBecBF}&C9nAl5 zP|jU5uw@k8T{Fq3aC_H`M&G$>M$9pH%}8gvYbM@=67HITdW79XzMl5pL%Qqy{15$g zn}qQmL13_$`%!EE^g7~C_VYW=ZC)-?TOWTJsimVjqk}buqfxM~M57 zZy)gS2RRQKNsj7ssz4jQa3k^Ic}nG6)UuMiUxZP?24#!kyEhSkr5^_at}Ja^POcYx z8BwwQel`0H@jvi*=nafZ*Niv&c1?E>_pDHUJcAfX?h(TFP(_XZC9co4wi;jU&ocjm zzMKJ9Pd+KoI`ry!@^62E_`hHf$apA8ywIX+CYMOArno?P`d=hIj9+H+g{Z+e_1%>B zhwMwlKgH7@aCPb;b3^Acd1OQQ8E{odvM7P0i>|s}Y|9@1-^AYs@I1Vj zZK^|}BfJ=iQ53bmLi~Y&e24XYv0?bn7u|4jnGZMX%jtZR`SNuW{q*OuA6tKdYsI6W zp3i@U?-HNSzlb071E<~8>lxYih&yz5=7&C=#Xm;J%i^E&*Y)x%=}BQU9&^$N&NDkd zA)VjiOO-<%@BMg7muPNv(b-_Eq?ysr2c4fXf8K8}55Ep2>pCMjo752WE4&kgm{(sG z80Ph&YjQsD1^=rWDeo@={JIxQdygHnqNVPbMdaTVIaIXe z9kUvbcE_v)+XD@GK?6FJ$*J&1@^eHm4~){@GMWrZHAXkPJRW8CXX2lzjuLo(;fmSh z{~m#+y<#@`RiBf{48FY{Abw8VE3qmxPIIk>#}yv@_c-IXtGIu7emA(EwvriH2!7fE ztLPS+r#E0jEH8FYB%5WYqy{4-;(@*C68xuc)K$E) zxggG0Pt$eUT5#_#+JoikF!lFgtz8P5KIi;O6~5K7dtHTRV!a$XiVywi)UtCD?B+%{ z+LPr%$HhnX6Y}mKJfQeW#z}#`(pLO(eo)r$)4fPPv@;>@a?#-!GxuZaDlU|FO}4zX z^I%o+dfeWmcbp0e^M4J7*P^}0BbucCl&PwQ_*=$LcOT||sn0*;N<4orog3_p93D}!?C z3EvHa>SE=XJbI5KK3wn2^giWUXZrE_c;a-rjm$4im&K^3>E{P}%If$g)Ni#|zgElQ zwK{o%%#iqR#hm|&ZuN#B4rBWOmKUDCPr+YH*H@EMb|7&f{|)Lz4LM$hmpo&0Z$$f8 zzO=x6cLj2)upj3;-&Z@`Wk=o~T6h}sof_)tR47Ie{;cSKiSy`))Ov&sJ;Dg9`kkhT zx1*}a{Aw+PHli;G;ky;`vpDxBQP4P0ciBrw z|Hr}|`qO|bQ~xWkb*;^YOAkL*5RVJmX*B*ksykYBt+iIq>7CpPWq~Bi>+-7i7fp!i=LRj)3<|RZQAW6FQwvr|E7w?V;&Z zilQirqUcmY_c`T=2q=tb1QiDBkAM*)3Zll?#&Ra8h$1Rr1`*4MaxsdcBM2Ja-&)UF z`|Rqb>CA`se5mfK^X#?nd#}B2+ip*K5p>q8XXDLC=i9|mWWk&*lC_&#w;FE&?yX)q zimVAQQgl>@YrPe?os@~xtI8Zxm72rp`5JEnF7-2}a{~h_Azvg@p(yAMpM3}Lr+fL2 zgMl0;!lKr2>p<(Bz#k|RnE0b}r%mx6sO8R`Hm^LC)kY5AJ_-0I9X~^H$hYz^i45Hj zjvTbT+hf3ABMyB;|M4mFb*BILlxZAjn;9aVFBe&`UQ-CtR{fpbMF)vHfvb1%7)6o>fYdaA#n3A*J3-+CME{R71MuUb+fq zS%uGw6`rIOGKru&VWoM4*4apR2o-|+osai!ytn1Oh-G-6r;Ar|c5;wrhstrINznP4 zmwyd<=o&8-HD;znN6K7xjkd+vc4e75=yb@lr2ZRhI$qoRiEC~GJwNVz4HszDHhc7% zn}PG=b*m<2!ox-90GGx!r1+#PX|MI$xTO18W@;`@;$q`~HwjBuT`$^#_xA&`R3N?m zDK;)>JGZ7m_xg@@W`&wu-~;Vhjd>u_Lg!##MTZuD{YXH^zmI9$WJzAbf+HPQnfC&B znK!>m=G{EMN{EYJqU>>MNXJdK#C`N*%490%t3Aqr0CAIIyHh9rfhE9ZZJ9y1}lKJ-|M3!1Z=yU4F? zGnNa7ZwkKCK9V^aa-15lRh%qdLBxU}h&~MZ3)$1R1P3o7T8Ea|Dc*LbsJJfw%q5`r z??jw&WGBfhbcZ9J)~_Y_4tqU_as^MPn6w|FkAVI`UcXI-ck`H_N9)!2C~&F=r}L5T zXQu0Kum!l;>#x4g$a`Vif;sVa=6SE>h~z!IY$*LQJGIF=en|6a32wf8+6%l7K8AYC zmp-$=`|JYmqXphK7I@!W;C*X>_w5DV2bV5T|9RePKV{|pLi3<0IA2aN3BP5!7B6!2 zE<<_fE=+oezb#N4ezq!4$8+Z6!1?q@;(=rFSUNrgH~So=`L*Re2QlPvM*AXm{$cCg z`}GOr=dZ7Ix=1X?c2?6$ulY&fKb1?R^6&9DdcvFdeI@)lA@R8OxElCQ{_d|f7Qv3L_rbNmo#@dmLcm=lW0agN_LA7A81CZ6 z(egxFk?!5zx>iEJl<1VEe5&GGp9P+ke%#;0cb~!SNOu_IY}8BEd9M7Q1KzjKt%TpP zswYugYa4JMC!$QZ$5x5Il8svPk3J8af4-{V99#)6<*Me9PHW9&Tzen4F^Y3>og||~NO1Oxn#C&Hd{3SPzE6)z3^V_8a{v9d}=i13OF4!9QBUcW=FZTMsPMVh-UsqYM9OWf&>vV7n z=!-au_&?4`+c_ieui;4_N=NB>-;M-QEJsv`$V+2czPBTRO~elUotCJ%In$AF?yo|TX0i7&`~iw1 zg*4A6rRVauQR9)FUmNZ4A#XjH44KU=>8-A5%L4UNagVsrDs)Dw@zEP#0|HXk@p>_fEtExGyR^REAf?M(?7pPLeM zL`XssPrlPIhy(4fhb71zOUx~mSTR{zB}N^5z}j*e0pN7u4qRqK;E z5cv0d^&iDx9)(8;T_2R=PdeMVd=5gob6kCBUq71LEn;`*D16+Pb3OxjKh6u?o1A0u z$~vbXY76c|o;-JZV$KVR8QGq&mGAb%ypl88p0Gv8_JlXkr~hOANs^E>EoZkUd_A@s zFO5S`K3~324Y?xK%{D&SjjKa}OZ6diZe(FK-SD6K%~{~m_4s7_myID$g1>BJgSx+L zWP8ECY#g?6uhP%{BhvZ$GAh6sG&sEZ+!9;|KfaMVm{#5No~-D3py%teYO;^u_*!Fa zTx~7ZYAr|W`AFA6|7_|6qCe=yLG%LPe7n4HF|8Zt`7?gJjW;>E?H2;y+0K_*x;u*= zm;YhF{g!^@b%FTan@~u<9bN>SZ(m&?obZ8;-r>OANQs4BjpS0IpjBMspMd)@fdp3# zFQ1cd^kU!^sz>$+;AV)J(BpjNz@qsEF9FW4N98H%5oCb-8W9tERcgOk^=JuhA$qNs zf}UUB%2U+0`7+=Zsz>y4;1+C`SL`1yb0l#7y~suH;G^xA{b%6(dOTIXW&Q=Y`O2s3 zTkuNYPIc>IuN^mr*N}1M1!!EK4WpF{S3?>UH8Op&+4f6xCEdn%Ti>lcz$SOf=?vmo!}|{=cQSYpa=YXpCNBO zb++J<1T3j1V+^td+`w#TJ^Tn&&XaRA-hq0i_kxmL+#!q}8ndzb18X~Ga=`oYg)y_9 z$N5;u2ESvyHkG$z-v#{7-Mk?BSGs$O9o^-?trI~I@k!0Z{1-QPGcm)9!0_mJZ}bA6 z$}I-%K=@l5hmdqB-S#Tr?v%jkME85KIqq=k$nVAGs3o0xzt&m6KXWm)5{)b38(+xh z?mqL)Ma&F&^Q2t|o^-|Z(72U-?*x)6X?defz$qU^xXnXk`GQCJ|UZ^K5RL=R;f0=GjFhzh1|?j@#%$la$Ukp<#h=gPR#S?cuPV= zSI?>Va~eBatiWRJ7s_>Mb8${>4--JzttggCU^4? zH_?!Z{cpTh>l-?Ch{9j_^TsDYcZ&o%r1fYfG2KjKCNam#Kg4R1VJNbkNl=BE#9So+ zzKf6%e8!nc%q9AU49bOFbmJ~_HS+zklULDreHO3tb#v7s9Z&7g0O#wM$}z2EcoY|H z1@4FVndMDWkRMI0w(+pyvY!R+Jcpw=X)J-L588M@5O)hTUmY7%YNZ*#2Q2v3D{I-P5XL9tH&sp0N3c65r z<;i>x`KxdrF*t!l>>+4yYTZ=zd4Z;6wy(f(ZH1{vaG@({0;@@axa5Flv! z#t)JHW;d=*wzqGjg?y>KeIpA*=^rx5$kB^c7A~J!&gdsdKVN+`pO)Y@xqNzUQQ~kF z&Fi_Di^QLjq0*O4P<=9PROM*?T~DA-tBOC3uy; zQ+ewoc9ipkmLvOf(Dm)~3+DaY&V^0s{-SgdXaMB%I-_2}>+i7Q@`8Ndb$MxfLA!3NFR9y5c(4BAG zDy}6sKdx~Vi+gpAjmH(&ybtsi!Zm)qf4Jy3zVXye^$fJK;5y%;e$U)xjcLY_CXcqz$zPT zJet-wdIb1XzDWFbi@J~Gkk0?N@h9LuN`pqmO&#)lF~A=n^YL{2{2BOO0xP~ccYSE= zC$25HKNB&g*K6w`dr;Na+W0-Lz5W;ZzQ(KnByQH1IG(YM^QoR9^CxUa()P_B1Ud_quPL}KUi%i|uU8CNhEgmMi=y?;{=?JLRa{eW^Tk0?TAIxn*|y*=_r_m$_$L~u-R3SHc-^pb=suBDq+0IA^FaR~uiTNj zjmsT5FO+njYQ6w?U+-VQ{4emnR=`QGKtA9@X?%~yVMv$y)%Dtfc`N5rU}0dPK=Zah zZJ)CRj%raLPYnv>`!1?SVaUcs9S4nn0=@a>iSB1@!OgyxSL+|V7<7K(&m+;}7gy`- zOzYo10{Fwd^=HhG9evJ@@y0)9zRa~6W0{uA=VeIuS1+HExrmXabyU65Y8#&(X#Ij$ z0RIWuym=#cc-||&(#`%0=zf5R3f(g4@r178+Jf`#AgVY& zRM&ZNA)2oQz4fj=25q+l0_irNtkj?U*I(A4&7yaxIDQ z@b`NCTr{6%`o$C7cIxoKF~DEuIhGC*>Z8ZypQ$Gdl2>(Euuv*k0RH+og3J z@N1=g6{MXIPdHhq!)!s?*t+xX2^G_9sDk`jYshq@} zr1;F+f$y;Y64_$ubgN-#-Fnk}2k-}{_2d6^J!;8&5zCX_s^fiI-pexX{9Uy?!8<`O zjl)HL*)5LH0iJIVron46!ycG3h!B@2pcybCy$W6?Nys{3Oy%Yb`=OHJh? zKJhlOZt>>#a^TW?NqX#LSe}Dx3C@=flbpI@`Fd?vzHArhb=Xl%+c=(uYYXmnt zpE6mR6Lnc`;$`;B{z%EWLyw(Q(!21wOUYp*Z&*e%AhwT@Ab} z>liQR@KKE)rP~tRfH(dMW*5)T0>u*%0?Nl^)`IR9nIL4BU6TE^BvEWi<_7Y^VV20{ zGlFzSdhJ7wx+EdrLaQUib~`g2Pr)egzMVDMn-IQY>v`9`uHn5H;$@LEB|oJWjeK&O{fh?Yj7M)n)!*=-i{_56(dP zG#(bk|6xVU1i5|W?8GQ>-P)e53h+yj9giCdh=$W&+CP~yfm1y%je|)x#}jY1g@I9wI<{C%?&-r^WM#kJ1@&X+GRP7Vl)3(f}4k0(1e!YpdbcRDGJ_&IRtz9=*Kz%p%o@IC|#+_oPR!L~BIYF>A52NQQ&*L z_U~u4L(cY_BMq$t{l`1A0LP~_KaO-qy7CR%y)hfn=Iq{>k7RpeaAtdB77Xl-HxjkI zamYI46vWo>dt*M0?2U1#dAi8w->o0wNE zp|(3WG4JFdaBgC*<-R#LF|XBs8j8s-b{(ecW%d@(_s`ok9`8B!M%8^r`G)9L;8Qt% z$SzAdKC|D)`E7X`E3w8EEusC`ybZXwci_k$ z0}5fSSNn&+9qH_hC@$iM*lm2Nc{7;>vjMTCOeweA<%EzmKKL)>&1EamfkX^XG3rh|JKWQJmmFpoYRk!E5TCth3z5ejqICR{>&dhXVmNW0_5BUrc)3-P~jAwfts%I z2-5j+v1-JhJqR5@+0=?-mtj;4$Lj&%NgfW79$ymI!+%_qHN&m|WPXu5`h-_l|) zzkb<{`pv&`R{f-Ao0YD)1nEw7?Ko&hLe^-Ez^Z11qSoc?2retp{4xjs-_q&0Zaxd? ze80#l;`WolTaG_Br2Ag$*}(h!Srzdus;j;8LhCue`TP-`XDMbTJ(_>!xxo4Ju}1CU z?(m2b-Fd!m}Bc-3U zz>RqHCuuz-ry7nYDN$3;fF+gA!{$FC-5b39wvQafa<a(ayy z-##4aKkxXLUOR@k%44L-%GojIN5*(EQD~T)9b?7dn7N0^kFhd~j5TwL0#l#T_FTI*Uk<$P*Te_;_7d8znO6W;mV-adzaELB z-($YZc0WDlRu@28`>lC2()scUy0=rVv2o=NUI(1NFP2#yS3Z$8pE8{}$5TGDE%(WiGJgt92J~Nbv)Ad>j14hHIpyh779=J5lJn20@s^TU`FMAAd z+D>G@U1#&SI`h$vp5Qv}%jWZFC$1&9`RM7s8yt&#=hJUz=6SE>$;$gQe$p~q=P0zD zPaw9{&-&4e9rJ=?mtAoW8*3Ern4! zyX!oR-T}OSzg-=6k7Ngtshm&6Cpgv6Tg#s^crjpXHg%hm3Q1$4AK`-{t!*;0unwqWy?(TpDA4+NE}kt%Jr4 zF4>XoX(bWy?lWk0fzCfVKY&5o!%Sq4IRUFa?^`{5bB9EL4L?Nn=z)8APk6tL*J!`B zSAkyawFd=YBzYyLs*(~fXRAZREmJ5N%yblQfTaU4FfYN=iJpkOnUVG)` zd`ec-+)3U!GB^?V4!sfaC89r9x(&hk@dE0wXd*RDsQMr+Z*vHA{dj8?L=va#5zkay zGz=UY|MR#fe{GhBR#tlaY-R+w4*4*}9mGAUIa@u2+MaIo;0OjyVn~J6XsAJ z?-PdHGtth9&%OtEKOT2vzRUQC?B#@E(DJuW2ENmt=F?Obl3%(wldW;!I?n6xSEaBV zOKqt@)6UTiCV&wQ?8@c}DD@c=wNAbZ1&|U8MBaZJk{tRk??Fn%XtdiAoL{;GDD~IA*g7f*O$#o=& z#-sUX&H}wv-gvK>Oaa4VXPHkCB$uE8s`D(k2OW>4=QpZCU9-Ap?FGHu`NWx#FpaFgbR+!wT9PG$Nf^D+EozL=x@YI{K6NE68iLoYCFDF*B?5_^iSE zoUQiJuPNQO;8Xw0W!8_+q~*-~40JalxwIqdU-sxV1((|Y5Z?g-52;wSy|ed#-t!zi ztoxc@B<~k0S5t6loJz`%k64_a(#!rF`OQ}@#kB<|+ZXS9)e2c?;!#|5FX;LH4t2zn zqx0B^DW1N?0$ z9`l2BvbW0FdTir7$kX?_oJ}r5FX$Kt$+}7E6h0=-c1D$WU`j{E|SIeLI z4c`0r9+${(Cud7!*P`vJ`DX41{xl-Oyl0Pgt?NB8)!du@%yEMy#A zP34`f2Z7(@ta#UwP1u3a8MdY`ZI^`0t65B>z)I(Lp5 zw9CwCyv{E($Kx;AWasQMS^o8F$Xc&u)GPGz$6PjjY3`P!H`374Up2|nIr`FQAIhP8 z8}W<2U#IqCOK^{S?OQT8bNiOU2jQFIY0#g97tu)QKNk8px3lElU#TafC$94!I< zp+kuZ&4-iiLsj!9-pC)Sn%kaD^?9foevhn~(s>jej&v-XXy7jMa2!V_XUEL#A*qu1QGDYV;O{wve`dW;zd3?O zUB6jsX5af3EeC$1H@>e+3_QNCOU&IN&Tv}p_6p$r_yBqHzl+q+6>ozevl9RLa=)=~ zH}(G*@5WF0!*F_Bd^ab3yNB*H2_8cs&oHL9>g`?}OnJHcp6o zx_&n=C-58ylV`GVy0-}C0v{5aCR(Tz{CBj9^`M$8p# zy2_8XXZs4^_qz7%wG-yIoX>>0b&=YQID8ZMBOU!-8<}f(7(|qhFgA+MTm$@9oql`R z?u*TnA&u*Ou~|kd!EoAN?au+vLEB}#lqre`?`~;(X14*Co*#QzE|ar0j?%@pB&C#Y z^m*XZc}V)9>#PhXHx9Db1NUvpT=FlG|4z8tmQGA@nJ)n6)0+(E#&YYHyq^LuQ4D3#YLt}Qq}E>9f>B4oQ%RQ*J7Bl2B!DAfYveq6@sxcNRe|G3zd zkF%-JxcMNDs&V$B7&kxQF)(i4$;J!gWXm;_%8#O5pg;SZsOv>T-dEkY8nh#3jPo5? zPo1y++*MvNb-V=M1>H2x2=N~*cN8@uo6$LZQ}7={HRU|EnKF>`DDc{T*;_#WQx4x_ z3*p&xg&;q=zP1G?(>$;;09`r12Rbq=kuS615;%v94ZZms3I2q|^ef?M-FP;)?I7Ee z4YK%RF#J!Ra$4Tj50Q`BBM@Ie@zI1WaJbCv!1?m4f;nYQyoKhEfWs%1qjNoW_4_dp z={c9|135031h8QCz~LK$Kg-pR8feGZyit=-D@BegS&(`n$;chdnx@#H`b;Sgh|KC2PmEns4@(pqHMrDBjr+ z-lytHcwfJpXLb)Ap}6Mnf%D~TrE|!W6pyw?@Gx+%^5*A=>EZb{Li-nO z+TMK2{t@{3=(_v`_jXFG>(9w^^KT2z_p=-mJ>b}gm0Ef2`zPdowA*in?e&RykT;y` zleL;c%Mm;Ze5$9V`SK<=U$h+>kIlyQ+HvzQ+z#WUAf`%q

@J-nSzh6Ftq?iD^IU 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πR$$9!P`tetDXU7f*^p(J(y_e-XKF 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 z

-#y4i)S2tOe&Jgx{;N>@H=AK#@Q$pWtZo0?(W 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


+d@DwIieJgKpaO7wD*6&@^7W#~JA7T_L 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%0D@Ut)?i0es}XZC^jK> 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 bar 34 +// > baz 56' >file.txt +// $ goawk '{ sum += $2 } END { print sum }' file.txt +// 102 +// +// To use GoAWK in your Go programs, see README.md or the "interp" +// package docs. +package awk + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "runtime" + "runtime/pprof" + "strings" + "unicode/utf8" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/lexer" + "github.com/benhoyt/goawk/parser" +) + +const ( + version = "v1.19.0" + copyright = "GoAWK " + version + " - Copyright (c) 2022 Ben Hoyt" + shortUsage = "usage: goawk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]" + longUsage = `Standard AWK arguments: + -F separator field separator (default " ") + -f progfile load AWK source from progfile (multiple allowed) + -v var=value variable assignment (multiple allowed) + +Additional GoAWK arguments: + -cpuprofile file write CPU profile to file + -d print parsed syntax tree to stderr (debug mode) + -da print virtual machine assembly instructions to stderr + -dt print variable type information to stderr + -H parse header row and enable @"field" in CSV input mode + -h, --help show this help message + -i mode parse input into fields using CSV format (ignore FS and RS) + 'csv|tsv [separator=] [comment=] [header]' + -o mode use CSV output for print with args (ignore OFS and ORS) + 'csv|tsv [separator=]' + -version show GoAWK version and exit +` +) + +func Run(args []string) { + // Parse command line arguments manually rather than using the + // "flag" package, so we can support flags with no space between + // flag and argument, like '-F:' (allowed by POSIX) + var progFiles []string + var vars []string + fieldSep := " " + cpuprofile := "" + debug := false + debugAsm := false + debugTypes := false + memprofile := "" + inputMode := "" + outputMode := "" + header := false + + var i int + for i = 1; i < len(args); i++ { + // Stop on explicit end of args or first arg not prefixed with "-" + arg := args[i] + if arg == "--" { + i++ + break + } + if arg == "-" || !strings.HasPrefix(arg, "-") { + break + } + + switch arg { + case "-F": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -F") + } + i++ + fieldSep = args[i] + case "-f": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -f") + } + i++ + progFiles = append(progFiles, args[i]) + case "-v": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -v") + } + i++ + vars = append(vars, args[i]) + case "-cpuprofile": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -cpuprofile") + } + i++ + cpuprofile = args[i] + case "-d": + debug = true + case "-da": + debugAsm = true + case "-dt": + debugTypes = true + case "-H": + header = true + case "-h", "--help": + fmt.Printf("%s\n\n%s\n\n%s", copyright, shortUsage, longUsage) + os.Exit(0) + case "-i": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -i") + } + i++ + inputMode = args[i] + case "-memprofile": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -memprofile") + } + i++ + memprofile = args[i] + case "-o": + if i+1 >= len(args) { + errorExitf("flag needs an argument: -o") + } + i++ + outputMode = args[i] + case "-version", "--version": + fmt.Println(version) + os.Exit(0) + default: + switch { + case strings.HasPrefix(arg, "-F"): + fieldSep = arg[2:] + case strings.HasPrefix(arg, "-f"): + progFiles = append(progFiles, arg[2:]) + case strings.HasPrefix(arg, "-i"): + inputMode = arg[2:] + case strings.HasPrefix(arg, "-o"): + outputMode = arg[2:] + case strings.HasPrefix(arg, "-v"): + vars = append(vars, arg[2:]) + case strings.HasPrefix(arg, "-cpuprofile="): + cpuprofile = arg[12:] + case strings.HasPrefix(arg, "-memprofile="): + memprofile = arg[12:] + default: + errorExitf("flag provided but not defined: %s", arg) + } + } + } + + // Any remaining args are program and input files + args = args[i:] + + var src []byte + var stdinBytes []byte // used if there's a parse error + if len(progFiles) > 0 { + // Read source: the concatenation of all source files specified + buf := &bytes.Buffer{} + progFiles = expandWildcardsOnWindows(progFiles) + for _, progFile := range progFiles { + if progFile == "-" { + b, err := ioutil.ReadAll(os.Stdin) + if err != nil { + errorExit(err) + } + stdinBytes = b + _, _ = buf.Write(b) + } else { + f, err := os.Open(progFile) + if err != nil { + errorExit(err) + } + _, err = buf.ReadFrom(f) + if err != nil { + _ = f.Close() + errorExit(err) + } + _ = f.Close() + } + // Append newline to file in case it doesn't end with one + _ = buf.WriteByte('\n') + } + src = buf.Bytes() + } else { + if len(args) < 1 { + errorExitf(shortUsage) + } + src = []byte(args[0]) + args = args[1:] + } + + // Parse source code and setup interpreter + parserConfig := &parser.ParserConfig{ + DebugTypes: debugTypes, + DebugWriter: os.Stderr, + } + prog, err := parser.ParseProgram(src, parserConfig) + if err != nil { + if err, ok := err.(*parser.ParseError); ok { + name, line := errorFileLine(progFiles, stdinBytes, err.Position.Line) + fmt.Fprintf(os.Stderr, "%s:%d:%d: %s\n", + name, line, err.Position.Column, err.Message) + showSourceLine(src, err.Position) + os.Exit(1) + } + errorExitf("%s", err) + } + + if debug { + fmt.Fprintln(os.Stderr, prog) + } + + if debugAsm { + err := prog.Disassemble(os.Stderr) + if err != nil { + errorExitf("could not disassemble program: %v", err) + } + } + + if header { + if inputMode == "" { + errorExitf("-H only allowed together with -i") + } + inputMode += " header" + } + + // Don't buffer output if stdout is a terminal (default output writer when + // Config.Output is nil is a buffered version of os.Stdout). + var stdout io.Writer + stdoutInfo, err := os.Stdout.Stat() + if err == nil && stdoutInfo.Mode()&os.ModeCharDevice != 0 { + stdout = os.Stdout + } + + config := &interp.Config{ + Argv0: filepath.Base(args[0]), + Args: expandWildcardsOnWindows(args), + Vars: []string{ + "FS", fieldSep, + "INPUTMODE", inputMode, + "OUTPUTMODE", outputMode, + }, + Output: stdout, + } + for _, v := range vars { + equals := strings.IndexByte(v, '=') + if equals < 0 { + errorExitf("-v flag must be in format name=value") + } + name, value := v[:equals], v[equals+1:] + // Oddly, -v must interpret escapes (issue #129) + unescaped, err := lexer.Unescape(value) + if err == nil { + value = unescaped + } + config.Vars = append(config.Vars, name, value) + } + + if cpuprofile != "" { + f, err := os.Create(cpuprofile) + if err != nil { + errorExitf("could not create CPU profile: %v", err) + } + if err := pprof.StartCPUProfile(f); err != nil { + errorExitf("could not start CPU profile: %v", err) + } + } + + // Run the program! + status, err := interp.ExecProgram(prog, config) + if err != nil { + errorExit(err) + } + + if cpuprofile != "" { + pprof.StopCPUProfile() + } + if memprofile != "" { + f, err := os.Create(memprofile) + if err != nil { + errorExitf("could not create memory profile: %v", err) + } + runtime.GC() // get up-to-date statistics + if err := pprof.WriteHeapProfile(f); err != nil { + errorExitf("could not write memory profile: %v", err) + } + _ = f.Close() + } + + os.Exit(status) +} + +// Show source line and position of error, for example: +// +// BEGIN { x*; } +// ^ +func showSourceLine(src []byte, pos lexer.Position) { + lines := bytes.Split(src, []byte{'\n'}) + srcLine := string(lines[pos.Line-1]) + numTabs := strings.Count(srcLine[:pos.Column-1], "\t") + runeColumn := utf8.RuneCountInString(srcLine[:pos.Column-1]) + fmt.Fprintln(os.Stderr, strings.Replace(srcLine, "\t", " ", -1)) + fmt.Fprintln(os.Stderr, strings.Repeat(" ", runeColumn)+strings.Repeat(" ", numTabs)+"^") +} + +// Determine which filename and line number to display for the overall +// error line number. +func errorFileLine(progFiles []string, stdinBytes []byte, errorLine int) (string, int) { + if len(progFiles) == 0 { + return "", errorLine + } + startLine := 1 + for _, progFile := range progFiles { + var content []byte + if progFile == "-" { + progFile = "" + content = stdinBytes + } else { + b, err := ioutil.ReadFile(progFile) + if err != nil { + return "", errorLine + } + content = b + } + content = append(content, '\n') + + numLines := bytes.Count(content, []byte{'\n'}) + if errorLine >= startLine && errorLine < startLine+numLines { + return progFile, errorLine - startLine + 1 + } + startLine += numLines + } + return "", errorLine +} + +func errorExit(err error) { + pathErr, ok := err.(*os.PathError) + if ok && os.IsNotExist(err) { + errorExitf("file %q not found", pathErr.Path) + } + errorExitf("%s", err) +} + +func errorExitf(format string, args ...interface{}) { + fmt.Fprintf(os.Stderr, format+"\n", args...) + os.Exit(1) +} + +func expandWildcardsOnWindows(args []string) []string { + if runtime.GOOS != "windows" { + return args + } + return expandWildcards(args) +} + +// Originally from https://github.com/mattn/getwild (compatible LICENSE). +func expandWildcards(args []string) []string { + result := make([]string, 0, len(args)) + for _, arg := range args { + matches, err := filepath.Glob(arg) + if err == nil && len(matches) > 0 { + result = append(result, matches...) + } else { + result = append(result, arg) + } + } + return result +} diff --git a/src/tool/awk/goawk_test.go b/src/tool/awk/goawk_test.go new file mode 100644 index 0000000..0bcfc8c --- /dev/null +++ b/src/tool/awk/goawk_test.go @@ -0,0 +1,749 @@ +// GoAWK tests + +package awk_test + +import ( + "bufio" + "bytes" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "runtime" + "sort" + "strings" + "sync" + "testing" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/parser" +) + +var ( + goExe string + testsDir string + outputDir string + awkExe string + goAWKExe string + writeAWK bool + writeGoAWK bool +) + +func TestMain(m *testing.M) { + flag.StringVar(&goExe, "goexe", "go", "set to override Go executable used to build goawk") + flag.StringVar(&testsDir, "testsdir", "./testdata", "directory with one-true-awk tests") + flag.StringVar(&outputDir, "outputdir", "./testdata/output", "directory for test output") + flag.StringVar(&awkExe, "awk", "gawk", "awk executable name") + flag.StringVar(&goAWKExe, "goawk", "./goawk", "goawk executable name") + flag.BoolVar(&writeAWK, "writeawk", false, "write expected output") + flag.BoolVar(&writeGoAWK, "writegoawk", true, "write Go AWK output") + flag.Parse() + + cmd := exec.Command(goExe, "build", "-ldflags=-w") + stderr, err := cmd.CombinedOutput() + if err != nil { + fmt.Fprintf(os.Stderr, "error building goawk: %v\n%s\n", err, stderr) + os.Exit(1) + } + + os.Exit(m.Run()) +} + +func TestAWK(t *testing.T) { + inputByPrefix := map[string]string{ + "t": "test.data", + "p": "test.countries", + } + // These programs exit with non-zero status code + errorExits := map[string]bool{ + "t.exit": true, + "t.exit1": true, + "t.gsub4": true, + "t.split3": true, + } + // These programs have known different output + knownDifferent := map[string]bool{ + "t.printf2": true, // because awk is weird here (our behavior is like mawk) + } + // Can't really diff test rand() tests as we're using a totally + // different algorithm for random numbers + randTests := map[string]bool{ + "p.48b": true, + "t.randk": true, + } + // These tests use "for (x in a)", which iterates in an undefined + // order (according to the spec), so sort lines before comparing. + sortLines := map[string]bool{ + "p.43": true, + "t.in1": true, // because "sort" is locale-dependent + "t.in2": true, + "t.intest2": true, + } + dontRunOnWindows := map[string]bool{ + "p.50": true, // because this pipes to Unix sort "sort -t: +0 -1 +2nr" + } + + infos, err := ioutil.ReadDir(testsDir) + if err != nil { + t.Fatalf("couldn't read test files: %v", err) + } + for _, info := range infos { + if !strings.HasPrefix(info.Name(), "t.") && !strings.HasPrefix(info.Name(), "p.") { + continue + } + if runtime.GOOS == "windows" && dontRunOnWindows[info.Name()] { + continue + } + t.Run(info.Name(), func(t *testing.T) { + srcPath := filepath.Join(testsDir, info.Name()) + inputPath := filepath.Join(testsDir, inputByPrefix[info.Name()[:1]]) + outputPath := filepath.Join(outputDir, info.Name()) + + cmd := exec.Command(awkExe, "-f", srcPath, inputPath) + expected, err := cmd.Output() + if err != nil && !errorExits[info.Name()] { + t.Fatalf("error running %s: %v", awkExe, err) + } + expected = bytes.Replace(expected, []byte{0}, []byte("<00>"), -1) + expected = normalizeNewlines(expected) + if sortLines[info.Name()] { + expected = sortedLines(expected) + } + if writeAWK { + err := ioutil.WriteFile(outputPath, expected, 0644) + if err != nil { + t.Fatalf("error writing awk output: %v", err) + } + } + + prog, err := parseGoAWK(srcPath) + if err != nil { + t.Fatal(err) + } + output, err := interpGoAWK(prog, inputPath) + if err != nil && !errorExits[info.Name()] { + t.Fatal(err) + } + output = bytes.Replace(output, []byte{0}, []byte("<00>"), -1) + output = normalizeNewlines(output) + if randTests[info.Name()] || knownDifferent[info.Name()] { + // For tests that use rand(), run them to ensure they + // parse and interpret, but can't compare the output, + // so stop now + return + } + if sortLines[info.Name()] { + output = sortedLines(output) + } + if writeGoAWK { + err := ioutil.WriteFile(outputPath, output, 0644) + if err != nil { + t.Fatalf("error writing goawk output: %v", err) + } + } + if string(output) != string(expected) { + t.Fatalf("output differs, run: git diff %s", outputPath) + } + }) + } + + _ = os.Remove("tempbig") + _ = os.Remove("tempsmall") +} + +func parseGoAWK(srcPath string) (*parser.Program, error) { + src, err := ioutil.ReadFile(srcPath) + if err != nil { + return nil, err + } + prog, err := parser.ParseProgram(src, nil) + if err != nil { + return nil, err + } + return prog, nil +} + +func interpGoAWK(prog *parser.Program, inputPath string) ([]byte, error) { + outBuf := &bytes.Buffer{} + errBuf := &bytes.Buffer{} + config := &interp.Config{ + Output: outBuf, + Error: &concurrentWriter{w: errBuf}, + Args: []string{inputPath}, + } + _, err := interp.ExecProgram(prog, config) + result := outBuf.Bytes() + result = append(result, errBuf.Bytes()...) + return result, err +} + +func interpGoAWKStdin(prog *parser.Program, inputPath string) ([]byte, error) { + input, _ := ioutil.ReadFile(inputPath) + outBuf := &bytes.Buffer{} + errBuf := &bytes.Buffer{} + config := &interp.Config{ + Stdin: &concurrentReader{r: bytes.NewReader(input)}, + Output: outBuf, + Error: &concurrentWriter{w: errBuf}, + // srcdir is for "redfilnm.awk" + Vars: []string{"srcdir", filepath.Dir(inputPath)}, + } + _, err := interp.ExecProgram(prog, config) + result := outBuf.Bytes() + result = append(result, errBuf.Bytes()...) + return result, err +} + +// Wraps a Writer but makes Write calls safe for concurrent use. +type concurrentWriter struct { + w io.Writer + mu sync.Mutex +} + +func (w *concurrentWriter) Write(p []byte) (int, error) { + w.mu.Lock() + defer w.mu.Unlock() + return w.w.Write(p) +} + +// Wraps a Reader but makes Read calls safe for concurrent use. +type concurrentReader struct { + r io.Reader + mu sync.Mutex +} + +func (r *concurrentReader) Read(p []byte) (int, error) { + r.mu.Lock() + defer r.mu.Unlock() + return r.r.Read(p) +} + +func sortedLines(data []byte) []byte { + trimmed := strings.TrimSuffix(string(data), "\n") + lines := strings.Split(trimmed, "\n") + sort.Strings(lines) + return []byte(strings.Join(lines, "\n") + "\n") +} + +func TestGAWK(t *testing.T) { + skip := map[string]bool{ // TODO: fix these (at least the ones that are bugs) + "getline": true, // getline syntax issues (may be okay, see grammar notes at http://pubs.opengroup.org/onlinepubs/007904975/utilities/awk.html#tag_04_06_13_14) + "getline3": true, // getline syntax issues (similar to above) + + "gsubtst7": true, // something wrong with gsub or field split/join + "splitwht": true, // other awks handle split(s, a, " ") differently from split(s, a, / /) + "status-close": true, // hmmm, not sure what's up here + "sigpipe1": true, // probable race condition: sometimes fails, sometimes passes + + "parse1": true, // incorrect parsing of $$a++++ (see TODOs in interp_test.go too) + + "rscompat": true, // GoAWK allows multi-char RS by default + "rsstart2": true, // GoAWK ^ and $ anchors match beginning and end of line, not file (unlike Gawk) + + "hex2": true, // GoAWK allows hex numbers / floating point (per POSIX) + "strtod": true, // GoAWK allows hex numbers / floating point (per POSIX) + } + + dontRunOnWindows := map[string]bool{ + "delargv": true, // reads from /dev/null + "eofsplit": true, // reads from /etc/passwd + "getline5": true, // removes a file while it's open + "iobug1": true, // reads from /dev/null + } + + sortLines := map[string]bool{ + "arryref2": true, + "delargv": true, + "delarpm2": true, + "forref": true, + } + + gawkDir := filepath.Join(testsDir, "gawk") + infos, err := ioutil.ReadDir(gawkDir) + if err != nil { + t.Fatalf("couldn't read test files: %v", err) + } + for _, info := range infos { + if !strings.HasSuffix(info.Name(), ".awk") { + continue + } + testName := info.Name()[:len(info.Name())-4] + if skip[testName] { + continue + } + if runtime.GOOS == "windows" && dontRunOnWindows[testName] { + continue + } + t.Run(testName, func(t *testing.T) { + srcPath := filepath.Join(gawkDir, info.Name()) + inputPath := filepath.Join(gawkDir, testName+".in") + okPath := filepath.Join(gawkDir, testName+".ok") + + expected, err := ioutil.ReadFile(okPath) + if err != nil { + t.Fatal(err) + } + expected = normalizeNewlines(expected) + + prog, err := parseGoAWK(srcPath) + if err != nil { + if err.Error() != string(expected) { + t.Fatalf("parser error differs, got:\n%s\nexpected:\n%s", err.Error(), expected) + } + return + } + output, err := interpGoAWKStdin(prog, inputPath) + output = normalizeNewlines(output) + if err != nil { + errStr := string(output) + err.Error() + if errStr != string(expected) { + t.Fatalf("interp error differs, got:\n%s\nexpected:\n%s", errStr, expected) + } + return + } + + if sortLines[testName] { + output = sortedLines(output) + expected = sortedLines(expected) + } + + if string(output) != string(expected) { + t.Fatalf("output differs, got:\n%s\nexpected:\n%s", output, expected) + } + }) + } + + _ = os.Remove("seq") +} + +func TestCommandLine(t *testing.T) { + tests := []struct { + args []string + stdin string + output string + error string + }{ + // Load source from stdin + {[]string{"-f", "-"}, `BEGIN { print "b" }`, "b\n", ""}, + {[]string{"-f", "-", "-f", "-"}, `BEGIN { print "b" }`, "b\n", ""}, + {[]string{"-f-", "-f", "-"}, `BEGIN { print "b" }`, "b\n", ""}, + + // Program with no input + {[]string{`BEGIN { print "a" }`}, "", "a\n", ""}, + + // Read input from stdin + {[]string{`$0`}, "one\n\nthree", "one\nthree\n", ""}, + {[]string{`$0`, "-"}, "one\n\nthree", "one\nthree\n", ""}, + {[]string{`$0`, "-", "-"}, "one\n\nthree", "one\nthree\n", ""}, + {[]string{"-f", "testdata/t.0", "-"}, "one\ntwo\n", "one\ntwo\n", ""}, + {[]string{"{ print FILENAME }"}, "a", "-\n", ""}, + {[]string{"{ print FILENAME }", "-"}, "a", "-\n", ""}, + + // Read input from file(s) + {[]string{`$0`, "testdata/g.1"}, "", "ONE\n", ""}, + {[]string{`$0`, "testdata/g.1", "testdata/g.2"}, "", "ONE\nTWO\n", ""}, + {[]string{`{ print FILENAME ":" FNR "/" NR ": " $0 }`, "testdata/g.1", "testdata/g.4"}, "", + "testdata/g.1:1/1: ONE\ntestdata/g.4:1/2: FOUR a\ntestdata/g.4:2/3: FOUR b\n", ""}, + {[]string{`$0`, "testdata/g.1", "-", "testdata/g.2"}, "STDIN", "ONE\nSTDIN\nTWO\n", ""}, + {[]string{`$0`, "testdata/g.1", "-", "testdata/g.2", "-"}, "STDIN", "ONE\nSTDIN\nTWO\n", ""}, + {[]string{"-F", " ", "--", "$0", "testdata/g.1"}, "", "ONE\n", ""}, + {[]string{"{ print NR, FNR } END { print NR, FNR }", "-"}, "a\nb\nc\n", "1 1\n2 2\n3 3\n3 3\n", ""}, + // I've deleted the "-ftest" file for now as it was causing problems with "go install" zip files + // {[]string{"--", "$0", "-ftest"}, "", "used in tests; do not delete\n", ""}, // Issue #53 + // {[]string{"$0", "-ftest"}, "", "used in tests; do not delete\n", ""}, + + // Specifying field separator with -F + {[]string{`{ print $1, $3 }`}, "1 2 3\n4 5 6", "1 3\n4 6\n", ""}, + {[]string{"-F", ",", `{ print $1, $3 }`}, "1 2 3\n4 5 6", "1 2 3 \n4 5 6 \n", ""}, + {[]string{"-F", ",", `{ print $1, $3 }`}, "1,2,3\n4,5,6", "1 3\n4 6\n", ""}, + {[]string{"-F", ",", `{ print $1, $3 }`}, "1,2,3\n4,5,6", "1 3\n4 6\n", ""}, + {[]string{"-F,", `{ print $1, $3 }`}, "1,2,3\n4,5,6", "1 3\n4 6\n", ""}, + + // Assigning other variables with -v + {[]string{"-v", "OFS=.", `{ print $1, $3 }`}, "1 2 3\n4 5 6", "1.3\n4.6\n", ""}, + {[]string{"-v", "OFS=.", "-v", "ORS=", `{ print $1, $3 }`}, "1 2 3\n4 5 6", "1.34.6", ""}, + {[]string{"-v", "x=42", "-v", "y=foo", `BEGIN { print x, y }`}, "", "42 foo\n", ""}, + {[]string{"-v", "RS=;", `$0`}, "a b;c\nd;e", "a b\nc\nd\ne\n", ""}, + {[]string{"-vRS=;", `$0`}, "a b;c\nd;e", "a b\nc\nd\ne\n", ""}, + {[]string{"-v", `X=x\ty`, `BEGIN { printf X }`}, "", "x\ty", ""}, + + // ARGV/ARGC handling + {[]string{` + BEGIN { + for (i=1; i:1:1: unexpected char\n`\n^"}, + {[]string{"BEGIN {\n\tx*;\n}"}, "", "", ":2:4: expected expression instead of ;\n x*;\n ^"}, + {[]string{"BEGIN {\n\tx*\r\n}"}, "", "", ":2:4: expected expression instead of \n x*\n ^"}, + {[]string{"-f", "-"}, "\n ++", "", ":2:4: expected expression instead of \n ++\n ^"}, + {[]string{"-f", "testdata/parseerror/good.awk", "-f", "testdata/parseerror/bad.awk"}, + "", "", "testdata/parseerror/bad.awk:2:3: expected expression instead of \nx*\n ^"}, + {[]string{"-f", "testdata/parseerror/bad.awk", "-f", "testdata/parseerror/good.awk"}, + "", "", "testdata/parseerror/bad.awk:2:3: expected expression instead of \nx*\n ^"}, + {[]string{"-f", "testdata/parseerror/good.awk", "-f", "-", "-f", "testdata/parseerror/bad.awk"}, + "`", "", ":1:1: unexpected char\n`\n^"}, + } + for _, test := range tests { + testName := strings.Join(test.args, " ") + t.Run(testName, func(t *testing.T) { + runAWKs(t, test.args, test.stdin, test.output, test.error) + }) + } +} + +func TestDevStdout(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("/dev/stdout not presnt on Windows") + } + runAWKs(t, []string{`BEGIN { print "1"; print "2">"/dev/stdout" }`}, "", "1\n2\n", "") +} + +func runGoAWK(args []string, stdin string) (stdout, stderr string, err error) { + cmd := exec.Command(goAWKExe, args...) + if stdin != "" { + cmd.Stdin = strings.NewReader(stdin) + } + errBuf := &bytes.Buffer{} + cmd.Stderr = errBuf + output, err := cmd.Output() + stdout = string(normalizeNewlines(output)) + stderr = string(normalizeNewlines(errBuf.Bytes())) + return stdout, stderr, err +} + +func runAWKs(t *testing.T, testArgs []string, testStdin, testOutput, testError string) { + var args []string + if strings.Contains(awkExe, "gawk") { + args = append(args, "--posix") + } + args = append(args, testArgs...) + cmd := exec.Command(awkExe, testArgs...) + if testStdin != "" { + cmd.Stdin = strings.NewReader(testStdin) + } + errBuf := &bytes.Buffer{} + cmd.Stderr = errBuf + output, err := cmd.Output() + if err != nil { + if testError == "" { + t.Fatalf("expected no error, got AWK error: %v (%s)", err, errBuf.String()) + } + } else { + if testError != "" { + t.Fatalf("expected AWK error, got none") + } + } + stdout := string(normalizeNewlines(output)) + if stdout != testOutput { + t.Fatalf("expected AWK to give %q, got %q", testOutput, stdout) + } + + stdout, stderr, err := runGoAWK(testArgs, testStdin) + if err != nil { + stderr = strings.TrimSpace(stderr) + if stderr != testError { + t.Fatalf("expected GoAWK error %q, got %q", testError, stderr) + } + } else { + if testError != "" { + t.Fatalf("expected GoAWK error %q, got none", testError) + } + } + if stdout != testOutput { + t.Fatalf("expected GoAWK to give %q, got %q", testOutput, stdout) + } +} + +func TestWildcards(t *testing.T) { + if runtime.GOOS != "windows" { + // Wildcards shouldn't be expanded on non-Windows systems, and a file + // literally named "*.go" doesn't exist, so expect a failure. + _, stderr, err := runGoAWK([]string{"FNR==1 { print FILENAME }", "testdata/wildcards/*.txt"}, "") + if err == nil { + t.Fatal("expected error using wildcards on non-Windows system") + } + expected := "file \"testdata/wildcards/*.txt\" not found\n" + if stderr != expected { + t.Fatalf("expected %q, got %q", expected, stderr) + } + return + } + + tests := []struct { + args []string + output string + }{ + { + []string{"FNR==1 { print FILENAME }", "testdata/wildcards/*.txt"}, + "testdata/wildcards/one.txt\ntestdata/wildcards/two.txt\n", + }, + { + []string{"-f", "testdata/wildcards/*.awk", "testdata/wildcards/one.txt"}, + "testdata/wildcards/one.txt\nbee\n", + }, + { + []string{"-f", "testdata/wildcards/*.awk", "testdata/wildcards/*.txt"}, + "testdata/wildcards/one.txt\nbee\ntestdata/wildcards/two.txt\nbee\n", + }, + } + + for _, test := range tests { + testName := strings.Join(test.args, " ") + t.Run(testName, func(t *testing.T) { + stdout, stderr, err := runGoAWK(test.args, "") + if err != nil { + t.Fatalf("expected no error, got %v (%q)", err, stderr) + } + stdout = strings.Replace(stdout, "\\", "/", -1) + if stdout != test.output { + t.Fatalf("expected %q, got %q", test.output, stdout) + } + }) + } +} + +func TestFILENAME(t *testing.T) { + origGoAWKExe := goAWKExe + goAWKExe = "../../" + goAWKExe + defer func() { goAWKExe = origGoAWKExe }() + + origDir, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + err = os.Chdir("testdata/filename") + if err != nil { + t.Fatal(err) + } + defer os.Chdir(origDir) + + src := ` +BEGIN { FILENAME = "10"; print(FILENAME, FILENAME<2) } +BEGIN { FILENAME = 10; print(FILENAME, FILENAME<2) } +{ print(FILENAME, FILENAME<2) } +` + runAWKs(t, []string{src, "10", "10x"}, "", "10 1\n10 0\n10 0\n10x 1\n", "") +} + +func normalizeNewlines(b []byte) []byte { + return bytes.Replace(b, []byte("\r\n"), []byte{'\n'}, -1) +} + +func TestInputOutputMode(t *testing.T) { + tests := []struct { + args []string + input string + output string + error string + }{ + {[]string{"-icsv", "-H", `{ print @"age", @"name" }`}, "name,age\nBob,42\nJane,37", "42 Bob\n37 Jane\n", ""}, + {[]string{"-i", "csv", "-H", `{ print @"age", @"name" }`}, "name,age\nBob,42\nJane,37", "42 Bob\n37 Jane\n", ""}, + {[]string{"-icsv", `{ print $2, $1 }`}, "Bob,42\nJane,37", "42 Bob\n37 Jane\n", ""}, + {[]string{"-i", "csv", `{ print $2, $1 }`}, "Bob,42\nJane,37", "42 Bob\n37 Jane\n", ""}, + {[]string{"-icsv", "-H", "-ocsv", `{ print @"age", @"name" }`}, "name,age\n\"Bo,ba\",42\nJane,37", "42,\"Bo,ba\"\n37,Jane\n", ""}, + {[]string{"-o", "csv", `BEGIN { print "foo,bar", 3.14, "baz" }`}, "", "\"foo,bar\",3.14,baz\n", ""}, + {[]string{"-iabc", `{}`}, "", "", "invalid input mode \"abc\"\n"}, + {[]string{"-oxyz", `{}`}, "", "", "invalid output mode \"xyz\"\n"}, + {[]string{"-H", `{}`}, "", "", "-H only allowed together with -i\n"}, + } + + for _, test := range tests { + testName := strings.Join(test.args, " ") + t.Run(testName, func(t *testing.T) { + stdout, stderr, err := runGoAWK(test.args, test.input) + if err != nil { + if test.error == "" { + t.Fatalf("expected no error, got %v (%q)", err, stderr) + } else if stderr != test.error { + t.Fatalf("expected error message %q, got %q", test.error, stderr) + } + } + if stdout != test.output { + t.Fatalf("expected %q, got %q", test.output, stdout) + } + }) + } +} + +func TestMultipleCSVFiles(t *testing.T) { + // Ensure CSV handling works across multiple files with different headers (field names). + src := ` +{ + for (i=1; i in FIELDS; i++) { + if (i>1) + printf ","; + printf "%s", FIELDS[i] + } + printf " " +} +{ print @"name", @"age" } +` + stdout, stderr, err := runGoAWK([]string{"-i", "csv", "-H", src, "testdata/csv/1.csv", "testdata/csv/2.csv"}, "") + if err != nil { + t.Fatalf("expected no error, got %v (%q)", err, stderr) + } + expected := ` +name,age Bob 42 +name,age Jill 37 +age,email,name Sarah 25 +`[1:] + if stdout != expected { + t.Fatalf("expected %q, got %q", expected, stdout) + } +} + +func TestCSVDocExamples(t *testing.T) { + f, err := os.Open("csv.md") + if err != nil { + t.Fatalf("error opening examples file: %v", err) + } + defer f.Close() + + var ( + command string + output string + truncated bool + n = 1 + ) + runTest := func() { + t.Run(fmt.Sprintf("Example%d", n), func(t *testing.T) { + shell := "/bin/sh" + if runtime.GOOS == "windows" { + shell = "sh" + } + cmd := exec.Command(shell, "-c", command) + gotBytes, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("error running %q: %v\n%s", command, err, gotBytes) + } + got := string(gotBytes) + if truncated { + numLines := strings.Count(output, "\n") + got = strings.Join(strings.Split(got, "\n")[:numLines], "\n") + "\n" + } + got = string(normalizeNewlines([]byte(got))) + if got != output { + t.Fatalf("error running %q\ngot:\n%s\nexpected:\n%s", command, got, output) + } + }) + n++ + } + + scanner := bufio.NewScanner(f) + inTest := false + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "$ goawk") { + if inTest { + runTest() + } + inTest = true + command = "./" + line[2:] + output = "" + truncated = false + } else if inTest { + switch line { + case "```", "": + runTest() + inTest = false + case "...": + truncated = true + runTest() + inTest = false + default: + output += line + "\n" + } + } + } + if scanner.Err() != nil { + t.Errorf("error reading input: %v", scanner.Err()) + } + if inTest { + t.Error("unexpectedly in test at end of file") + } +} + +func TestMandelbrot(t *testing.T) { + stdout, stderr, err := runGoAWK([]string{"-v", "width=80", "-v", "height=25", "-f", "testdata/tt.x1_mandelbrot"}, "") + if err != nil { + t.Fatalf("expected no error, got %v (%q)", err, stderr) + } + expected := ` +................................................................................ +......................................................--+-----.................. +....................................................-----+*+-++-................ +.................................................--------+* *+-----............. +..............................................--------+# #%*-------......... +.........................................------------++$ +-----------..... +...................................---------* # +* # *+++++%+--... +............................----------------++ @ *----.. +.......................-+----------------+$ %+----.. +..................-------*++%++**+++---++ #+--. +...............----------+* #*++* %*---. +.............-------+++++* # #----. +....------+-------++**@ @ ------. +....------+-------++**@ @ ------. +.............-------+++++* # #----. +...............----------+* #*++* %*---. +..................-------*++%++**+++---++ #+--. +.......................-+----------------+$ %+----.. +............................----------------++ @ *----.. +...................................---------* # +* # *+++++%+--... +.........................................------------++$ +-----------..... +..............................................--------+# #%*-------......... +.................................................--------+* *+-----............. +....................................................-----+*+-++-................ +......................................................--+-----.................. +`[1:] + if stdout != expected { + t.Fatalf("expected:\n%s\ngot:\n%s", expected, stdout) + } +} diff --git a/src/tool/awk/internal/ast/ast.go b/src/tool/awk/internal/ast/ast.go new file mode 100644 index 0000000..8232765 --- /dev/null +++ b/src/tool/awk/internal/ast/ast.go @@ -0,0 +1,600 @@ +// GoAWK parser - abstract syntax tree structs + +package ast + +import ( + "fmt" + "strconv" + "strings" + + . "github.com/benhoyt/goawk/lexer" +) + +// Program is an entire AWK program. +type Program struct { + Begin []Stmts + Actions []Action + End []Stmts + Functions []Function + Scalars map[string]int + Arrays map[string]int +} + +// String returns an indented, pretty-printed version of the parsed +// program. +func (p *Program) String() string { + parts := []string{} + for _, ss := range p.Begin { + parts = append(parts, "BEGIN {\n"+ss.String()+"}") + } + for _, a := range p.Actions { + parts = append(parts, a.String()) + } + for _, ss := range p.End { + parts = append(parts, "END {\n"+ss.String()+"}") + } + for _, function := range p.Functions { + parts = append(parts, function.String()) + } + return strings.Join(parts, "\n\n") +} + +// Stmts is a block containing multiple statements. +type Stmts []Stmt + +func (ss Stmts) String() string { + lines := []string{} + for _, s := range ss { + subLines := strings.Split(s.String(), "\n") + for _, sl := range subLines { + lines = append(lines, " "+sl+"\n") + } + } + return strings.Join(lines, "") +} + +// Action is pattern-action section of a program. +type Action struct { + Pattern []Expr + Stmts Stmts +} + +func (a *Action) String() string { + patterns := make([]string, len(a.Pattern)) + for i, p := range a.Pattern { + patterns[i] = p.String() + } + sep := "" + if len(patterns) > 0 && a.Stmts != nil { + sep = " " + } + stmtsStr := "" + if a.Stmts != nil { + stmtsStr = "{\n" + a.Stmts.String() + "}" + } + return strings.Join(patterns, ", ") + sep + stmtsStr +} + +// Expr is the abstract syntax tree for any AWK expression. +type Expr interface { + expr() + String() string +} + +// All these types implement the Expr interface. +func (e *FieldExpr) expr() {} +func (e *NamedFieldExpr) expr() {} +func (e *UnaryExpr) expr() {} +func (e *BinaryExpr) expr() {} +func (e *ArrayExpr) expr() {} +func (e *InExpr) expr() {} +func (e *CondExpr) expr() {} +func (e *NumExpr) expr() {} +func (e *StrExpr) expr() {} +func (e *RegExpr) expr() {} +func (e *VarExpr) expr() {} +func (e *IndexExpr) expr() {} +func (e *AssignExpr) expr() {} +func (e *AugAssignExpr) expr() {} +func (e *IncrExpr) expr() {} +func (e *CallExpr) expr() {} +func (e *UserCallExpr) expr() {} +func (e *MultiExpr) expr() {} +func (e *GetlineExpr) expr() {} + +// FieldExpr is an expression like $0. +type FieldExpr struct { + Index Expr +} + +func (e *FieldExpr) String() string { + return "$" + e.Index.String() +} + +// NamedFieldExpr is an expression like @"name". +type NamedFieldExpr struct { + Field Expr +} + +func (e *NamedFieldExpr) String() string { + return "@" + e.Field.String() +} + +// UnaryExpr is an expression like -1234. +type UnaryExpr struct { + Op Token + Value Expr +} + +func (e *UnaryExpr) String() string { + return e.Op.String() + e.Value.String() +} + +// BinaryExpr is an expression like 1 + 2. +type BinaryExpr struct { + Left Expr + Op Token + Right Expr +} + +func (e *BinaryExpr) String() string { + var opStr string + if e.Op == CONCAT { + opStr = " " + } else { + opStr = " " + e.Op.String() + " " + } + return "(" + e.Left.String() + opStr + e.Right.String() + ")" +} + +// ArrayExpr is an array reference. Not really a stand-alone +// expression, except as an argument to split() or a user function +// call. +type ArrayExpr struct { + Scope VarScope + Index int + Name string +} + +func (e *ArrayExpr) String() string { + return e.Name +} + +// InExpr is an expression like (index in array). +type InExpr struct { + Index []Expr + Array *ArrayExpr +} + +func (e *InExpr) String() string { + if len(e.Index) == 1 { + return "(" + e.Index[0].String() + " in " + e.Array.String() + ")" + } + indices := make([]string, len(e.Index)) + for i, index := range e.Index { + indices[i] = index.String() + } + return "((" + strings.Join(indices, ", ") + ") in " + e.Array.String() + ")" +} + +// CondExpr is an expression like cond ? 1 : 0. +type CondExpr struct { + Cond Expr + True Expr + False Expr +} + +func (e *CondExpr) String() string { + return "(" + e.Cond.String() + " ? " + e.True.String() + " : " + e.False.String() + ")" +} + +// NumExpr is a literal number like 1234. +type NumExpr struct { + Value float64 +} + +func (e *NumExpr) String() string { + if e.Value == float64(int(e.Value)) { + return strconv.Itoa(int(e.Value)) + } else { + return fmt.Sprintf("%.6g", e.Value) + } +} + +// StrExpr is a literal string like "foo". +type StrExpr struct { + Value string +} + +func (e *StrExpr) String() string { + return strconv.Quote(e.Value) +} + +// RegExpr is a stand-alone regex expression, equivalent to: +// $0 ~ /regex/. +type RegExpr struct { + Regex string +} + +func (e *RegExpr) String() string { + escaped := strings.Replace(e.Regex, "/", `\/`, -1) + return "/" + escaped + "/" +} + +type VarScope int + +const ( + ScopeSpecial VarScope = iota + ScopeGlobal + ScopeLocal +) + +// VarExpr is a variable reference (special var, global, or local). +// Index is the resolved variable index used by the interpreter; Name +// is the original name used by String(). +type VarExpr struct { + Scope VarScope + Index int + Name string +} + +func (e *VarExpr) String() string { + return e.Name +} + +// IndexExpr is an expression like a[k] (rvalue or lvalue). +type IndexExpr struct { + Array *ArrayExpr + Index []Expr +} + +func (e *IndexExpr) String() string { + indices := make([]string, len(e.Index)) + for i, index := range e.Index { + indices[i] = index.String() + } + return e.Array.String() + "[" + strings.Join(indices, ", ") + "]" +} + +// AssignExpr is an expression like x = 1234. +type AssignExpr struct { + Left Expr // can be one of: var, array[x], $n + Right Expr +} + +func (e *AssignExpr) String() string { + return e.Left.String() + " = " + e.Right.String() +} + +// AugAssignExpr is an assignment expression like x += 5. +type AugAssignExpr struct { + Left Expr // can be one of: var, array[x], $n + Op Token + Right Expr +} + +func (e *AugAssignExpr) String() string { + return e.Left.String() + " " + e.Op.String() + "= " + e.Right.String() +} + +// IncrExpr is an increment or decrement expression like x++ or --y. +type IncrExpr struct { + Expr Expr + Op Token + Pre bool +} + +func (e *IncrExpr) String() string { + if e.Pre { + return e.Op.String() + e.Expr.String() + } else { + return e.Expr.String() + e.Op.String() + } +} + +// CallExpr is a builtin function call like length($1). +type CallExpr struct { + Func Token + Args []Expr +} + +func (e *CallExpr) String() string { + args := make([]string, len(e.Args)) + for i, a := range e.Args { + args[i] = a.String() + } + return e.Func.String() + "(" + strings.Join(args, ", ") + ")" +} + +// UserCallExpr is a user-defined function call like my_func(1, 2, 3) +// +// Index is the resolved function index used by the interpreter; Name +// is the original name used by String(). +type UserCallExpr struct { + Native bool // false = AWK-defined function, true = native Go func + Index int + Name string + Args []Expr +} + +func (e *UserCallExpr) String() string { + args := make([]string, len(e.Args)) + for i, a := range e.Args { + args[i] = a.String() + } + return e.Name + "(" + strings.Join(args, ", ") + ")" +} + +// MultiExpr isn't an interpretable expression, but it's used as a +// pseudo-expression for print[f] parsing. +type MultiExpr struct { + Exprs []Expr +} + +func (e *MultiExpr) String() string { + exprs := make([]string, len(e.Exprs)) + for i, e := range e.Exprs { + exprs[i] = e.String() + } + return "(" + strings.Join(exprs, ", ") + ")" +} + +// GetlineExpr is an expression read from file or pipe input. +type GetlineExpr struct { + Command Expr + Target Expr + File Expr +} + +func (e *GetlineExpr) String() string { + s := "" + if e.Command != nil { + s += e.Command.String() + " |" + } + s += "getline" + if e.Target != nil { + s += " " + e.Target.String() + } + if e.File != nil { + s += " <" + e.File.String() + } + return s +} + +// IsLValue returns true if the given expression can be used as an +// lvalue (on the left-hand side of an assignment, in a ++ or -- +// operation, or as the third argument to sub or gsub). +func IsLValue(expr Expr) bool { + switch expr.(type) { + case *VarExpr, *IndexExpr, *FieldExpr: + return true + default: + return false + } +} + +// Stmt is the abstract syntax tree for any AWK statement. +type Stmt interface { + stmt() + String() string +} + +// All these types implement the Stmt interface. +func (s *PrintStmt) stmt() {} +func (s *PrintfStmt) stmt() {} +func (s *ExprStmt) stmt() {} +func (s *IfStmt) stmt() {} +func (s *ForStmt) stmt() {} +func (s *ForInStmt) stmt() {} +func (s *WhileStmt) stmt() {} +func (s *DoWhileStmt) stmt() {} +func (s *BreakStmt) stmt() {} +func (s *ContinueStmt) stmt() {} +func (s *NextStmt) stmt() {} +func (s *ExitStmt) stmt() {} +func (s *DeleteStmt) stmt() {} +func (s *ReturnStmt) stmt() {} +func (s *BlockStmt) stmt() {} + +// PrintStmt is a statement like print $1, $3. +type PrintStmt struct { + Args []Expr + Redirect Token + Dest Expr +} + +func (s *PrintStmt) String() string { + return printString("print", s.Args, s.Redirect, s.Dest) +} + +func printString(f string, args []Expr, redirect Token, dest Expr) string { + parts := make([]string, len(args)) + for i, a := range args { + parts[i] = a.String() + } + str := f + " " + strings.Join(parts, ", ") + if dest != nil { + str += " " + redirect.String() + dest.String() + } + return str +} + +// PrintfStmt is a statement like printf "%3d", 1234. +type PrintfStmt struct { + Args []Expr + Redirect Token + Dest Expr +} + +func (s *PrintfStmt) String() string { + return printString("printf", s.Args, s.Redirect, s.Dest) +} + +// ExprStmt is statement like a bare function call: my_func(x). +type ExprStmt struct { + Expr Expr +} + +func (s *ExprStmt) String() string { + return s.Expr.String() +} + +// IfStmt is an if or if-else statement. +type IfStmt struct { + Cond Expr + Body Stmts + Else Stmts +} + +func (s *IfStmt) String() string { + str := "if (" + trimParens(s.Cond.String()) + ") {\n" + s.Body.String() + "}" + if len(s.Else) > 0 { + str += " else {\n" + s.Else.String() + "}" + } + return str +} + +// ForStmt is a C-like for loop: for (i=0; i<10; i++) print i. +type ForStmt struct { + Pre Stmt + Cond Expr + Post Stmt + Body Stmts +} + +func (s *ForStmt) String() string { + preStr := "" + if s.Pre != nil { + preStr = s.Pre.String() + } + condStr := "" + if s.Cond != nil { + condStr = " " + trimParens(s.Cond.String()) + } + postStr := "" + if s.Post != nil { + postStr = " " + s.Post.String() + } + return "for (" + preStr + ";" + condStr + ";" + postStr + ") {\n" + s.Body.String() + "}" +} + +// ForInStmt is a for loop like for (k in a) print k, a[k]. +type ForInStmt struct { + Var *VarExpr + Array *ArrayExpr + Body Stmts +} + +func (s *ForInStmt) String() string { + return "for (" + s.Var.String() + " in " + s.Array.String() + ") {\n" + s.Body.String() + "}" +} + +// WhileStmt is a while loop. +type WhileStmt struct { + Cond Expr + Body Stmts +} + +func (s *WhileStmt) String() string { + return "while (" + trimParens(s.Cond.String()) + ") {\n" + s.Body.String() + "}" +} + +// DoWhileStmt is a do-while loop. +type DoWhileStmt struct { + Body Stmts + Cond Expr +} + +func (s *DoWhileStmt) String() string { + return "do {\n" + s.Body.String() + "} while (" + trimParens(s.Cond.String()) + ")" +} + +// BreakStmt is a break statement. +type BreakStmt struct{} + +func (s *BreakStmt) String() string { + return "break" +} + +// ContinueStmt is a continue statement. +type ContinueStmt struct{} + +func (s *ContinueStmt) String() string { + return "continue" +} + +// NextStmt is a next statement. +type NextStmt struct{} + +func (s *NextStmt) String() string { + return "next" +} + +// ExitStmt is an exit statement. +type ExitStmt struct { + Status Expr +} + +func (s *ExitStmt) String() string { + var statusStr string + if s.Status != nil { + statusStr = " " + s.Status.String() + } + return "exit" + statusStr +} + +// DeleteStmt is a statement like delete a[k]. +type DeleteStmt struct { + Array *ArrayExpr + Index []Expr +} + +func (s *DeleteStmt) String() string { + indices := make([]string, len(s.Index)) + for i, index := range s.Index { + indices[i] = index.String() + } + return "delete " + s.Array.String() + "[" + strings.Join(indices, ", ") + "]" +} + +// ReturnStmt is a return statement. +type ReturnStmt struct { + Value Expr +} + +func (s *ReturnStmt) String() string { + var valueStr string + if s.Value != nil { + valueStr = " " + s.Value.String() + } + return "return" + valueStr +} + +// BlockStmt is a stand-alone block like { print "x" }. +type BlockStmt struct { + Body Stmts +} + +func (s *BlockStmt) String() string { + return "{\n" + s.Body.String() + "}" +} + +// Function is the AST for a user-defined function. +type Function struct { + Name string + Params []string + Arrays []bool + Body Stmts +} + +func (f *Function) String() string { + return "function " + f.Name + "(" + strings.Join(f.Params, ", ") + ") {\n" + + f.Body.String() + "}" +} + +func trimParens(s string) string { + if strings.HasPrefix(s, "(") && strings.HasSuffix(s, ")") { + s = s[1 : len(s)-1] + } + return s +} diff --git a/src/tool/awk/internal/ast/specialvars.go b/src/tool/awk/internal/ast/specialvars.go new file mode 100644 index 0000000..c8207e4 --- /dev/null +++ b/src/tool/awk/internal/ast/specialvars.go @@ -0,0 +1,100 @@ +// Special variable constants + +package ast + +import ( + "fmt" +) + +const ( + V_ILLEGAL = iota + V_ARGC + V_CONVFMT + V_FILENAME + V_FNR + V_FS + V_INPUTMODE + V_NF + V_NR + V_OFMT + V_OFS + V_ORS + V_OUTPUTMODE + V_RLENGTH + V_RS + V_RSTART + V_RT + V_SUBSEP + + V_LAST = V_SUBSEP +) + +var specialVars = map[string]int{ + "ARGC": V_ARGC, + "CONVFMT": V_CONVFMT, + "FILENAME": V_FILENAME, + "FNR": V_FNR, + "FS": V_FS, + "INPUTMODE": V_INPUTMODE, + "NF": V_NF, + "NR": V_NR, + "OFMT": V_OFMT, + "OFS": V_OFS, + "ORS": V_ORS, + "OUTPUTMODE": V_OUTPUTMODE, + "RLENGTH": V_RLENGTH, + "RS": V_RS, + "RSTART": V_RSTART, + "RT": V_RT, + "SUBSEP": V_SUBSEP, +} + +// SpecialVarIndex returns the "index" of the special variable, or 0 +// if it's not a special variable. +func SpecialVarIndex(name string) int { + return specialVars[name] +} + +// SpecialVarName returns the name of the special variable by index. +func SpecialVarName(index int) string { + switch index { + case V_ILLEGAL: + return "ILLEGAL" + case V_ARGC: + return "ARGC" + case V_CONVFMT: + return "CONVFMT" + case V_FILENAME: + return "FILENAME" + case V_FNR: + return "FNR" + case V_FS: + return "FS" + case V_INPUTMODE: + return "INPUTMODE" + case V_NF: + return "NF" + case V_NR: + return "NR" + case V_OFMT: + return "OFMT" + case V_OFS: + return "OFS" + case V_ORS: + return "ORS" + case V_OUTPUTMODE: + return "OUTPUTMODE" + case V_RLENGTH: + return "RLENGTH" + case V_RS: + return "RS" + case V_RSTART: + return "RSTART" + case V_RT: + return "RT" + case V_SUBSEP: + return "SUBSEP" + default: + return fmt.Sprintf("", index) + } +} diff --git a/src/tool/awk/internal/ast/specialvars_test.go b/src/tool/awk/internal/ast/specialvars_test.go new file mode 100644 index 0000000..0bc2440 --- /dev/null +++ b/src/tool/awk/internal/ast/specialvars_test.go @@ -0,0 +1,46 @@ +package ast + +import ( + "testing" +) + +func TestNameIndex(t *testing.T) { + tests := []struct { + name string + index int + }{ + {"ILLEGAL", V_ILLEGAL}, + {"ARGC", V_ARGC}, + {"CONVFMT", V_CONVFMT}, + {"FILENAME", V_FILENAME}, + {"FNR", V_FNR}, + {"FS", V_FS}, + {"INPUTMODE", V_INPUTMODE}, + {"NF", V_NF}, + {"NR", V_NR}, + {"OFMT", V_OFMT}, + {"OFS", V_OFS}, + {"ORS", V_ORS}, + {"OUTPUTMODE", V_OUTPUTMODE}, + {"RLENGTH", V_RLENGTH}, + {"RS", V_RS}, + {"RSTART", V_RSTART}, + {"RT", V_RT}, + {"SUBSEP", V_SUBSEP}, + {"", 42}, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + name := SpecialVarName(test.index) + if name != test.name { + t.Errorf("got %q, want %q", name, test.name) + } + if test.index <= V_LAST { + index := SpecialVarIndex(test.name) + if index != test.index { + t.Errorf("got %d, want %d", index, test.index) + } + } + }) + } +} diff --git a/src/tool/awk/internal/compiler/compiler.go b/src/tool/awk/internal/compiler/compiler.go new file mode 100644 index 0000000..40b2f89 --- /dev/null +++ b/src/tool/awk/internal/compiler/compiler.go @@ -0,0 +1,1005 @@ +// Package compiler compiles an AST to virtual machine instructions. +package compiler + +import ( + "fmt" + "math" + "regexp" + + "github.com/benhoyt/goawk/internal/ast" + "github.com/benhoyt/goawk/lexer" +) + +// Program holds an entire compiled program. +type Program struct { + Begin []Opcode + Actions []Action + End []Opcode + Functions []Function + Nums []float64 + Strs []string + Regexes []*regexp.Regexp + + // For disassembly + scalarNames []string + arrayNames []string + nativeFuncNames []string +} + +// Action holds a compiled pattern-action block. +type Action struct { + Pattern [][]Opcode + Body []Opcode +} + +// Function holds a compiled function. +type Function struct { + Name string + Params []string + Arrays []bool + NumScalars int + NumArrays int + Body []Opcode +} + +// compileError is the internal error type raised in the rare cases when +// compilation can't succeed, such as program too large (jump offsets greater +// than 2GB). Most actual problems are caught as parse time. +type compileError struct { + message string +} + +func (e *compileError) Error() string { + return e.message +} + +// Compile compiles an AST (parsed program) into virtual machine instructions. +func Compile(prog *ast.Program) (compiledProg *Program, err error) { + defer func() { + // The compiler uses panic with a *compileError to signal compile + // errors internally, and they're caught here. This avoids the + // need to check errors everywhere. + if r := recover(); r != nil { + // Convert to compileError or re-panic + err = r.(*compileError) + } + }() + + p := &Program{} + + // Reuse identical constants across entire program. + indexes := constantIndexes{ + nums: make(map[float64]int), + strs: make(map[string]int), + regexes: make(map[string]int), + } + + // Compile functions. For functions called before they're defined or + // recursive functions, we have to set most p.Functions data first, then + // compile Body afterward. + p.Functions = make([]Function, len(prog.Functions)) + for i, astFunc := range prog.Functions { + numArrays := 0 + for _, a := range astFunc.Arrays { + if a { + numArrays++ + } + } + compiledFunc := Function{ + Name: astFunc.Name, + Params: astFunc.Params, + Arrays: astFunc.Arrays, + NumScalars: len(astFunc.Arrays) - numArrays, + NumArrays: numArrays, + } + p.Functions[i] = compiledFunc + } + for i, astFunc := range prog.Functions { + c := &compiler{program: p, indexes: indexes} + c.stmts(astFunc.Body) + p.Functions[i].Body = c.finish() + } + + // Compile BEGIN blocks. + for _, stmts := range prog.Begin { + c := &compiler{program: p, indexes: indexes} + c.stmts(stmts) + p.Begin = append(p.Begin, c.finish()...) + } + + // Compile pattern-action blocks. + for _, action := range prog.Actions { + var pattern [][]Opcode + switch len(action.Pattern) { + case 0: + // Always considered a match + case 1: + c := &compiler{program: p, indexes: indexes} + c.expr(action.Pattern[0]) + pattern = [][]Opcode{c.finish()} + case 2: + c := &compiler{program: p, indexes: indexes} + c.expr(action.Pattern[0]) + pattern = append(pattern, c.finish()) + c = &compiler{program: p, indexes: indexes} + c.expr(action.Pattern[1]) + pattern = append(pattern, c.finish()) + } + var body []Opcode + if len(action.Stmts) > 0 { + c := &compiler{program: p, indexes: indexes} + c.stmts(action.Stmts) + body = c.finish() + } + p.Actions = append(p.Actions, Action{ + Pattern: pattern, + Body: body, + }) + } + + // Compile END blocks. + for _, stmts := range prog.End { + c := &compiler{program: p, indexes: indexes} + c.stmts(stmts) + p.End = append(p.End, c.finish()...) + } + + // These are only used for disassembly, but set them up here. + p.scalarNames = make([]string, len(prog.Scalars)) + for name, index := range prog.Scalars { + p.scalarNames[index] = name + } + p.arrayNames = make([]string, len(prog.Arrays)) + for name, index := range prog.Arrays { + p.arrayNames[index] = name + } + + return p, nil +} + +// So we can look up the indexes of constants that have been used before. +type constantIndexes struct { + nums map[float64]int + strs map[string]int + regexes map[string]int +} + +// Holds the compilation state. +type compiler struct { + program *Program + indexes constantIndexes + code []Opcode + breaks [][]int + continues [][]int +} + +func (c *compiler) add(ops ...Opcode) { + c.code = append(c.code, ops...) +} + +func (c *compiler) finish() []Opcode { + return c.code +} + +func (c *compiler) stmts(stmts []ast.Stmt) { + for _, stmt := range stmts { + c.stmt(stmt) + } +} + +func (c *compiler) stmt(stmt ast.Stmt) { + switch s := stmt.(type) { + case *ast.ExprStmt: + // Optimize assignment expressions to avoid the extra Dupe and Drop + switch expr := s.Expr.(type) { + case *ast.AssignExpr: + c.expr(expr.Right) + c.assign(expr.Left) + return + + case *ast.IncrExpr: + // Pre or post doesn't matter for an assignment expression + switch target := expr.Expr.(type) { + case *ast.VarExpr: + switch target.Scope { + case ast.ScopeGlobal: + c.add(IncrGlobal, incrAmount(expr.Op), opcodeInt(target.Index)) + case ast.ScopeLocal: + c.add(IncrLocal, incrAmount(expr.Op), opcodeInt(target.Index)) + default: // ScopeSpecial + c.add(IncrSpecial, incrAmount(expr.Op), opcodeInt(target.Index)) + } + case *ast.FieldExpr: + c.expr(target.Index) + c.add(IncrField, incrAmount(expr.Op)) + case *ast.IndexExpr: + c.index(target.Index) + switch target.Array.Scope { + case ast.ScopeGlobal: + c.add(IncrArrayGlobal, incrAmount(expr.Op), opcodeInt(target.Array.Index)) + default: // ScopeLocal + c.add(IncrArrayLocal, incrAmount(expr.Op), opcodeInt(target.Array.Index)) + } + } + return + + case *ast.AugAssignExpr: + c.expr(expr.Right) + + var augOp AugOp + switch expr.Op { + case lexer.ADD: + augOp = AugOpAdd + case lexer.SUB: + augOp = AugOpSub + case lexer.MUL: + augOp = AugOpMul + case lexer.DIV: + augOp = AugOpDiv + case lexer.POW: + augOp = AugOpPow + default: // MOD + augOp = AugOpMod + } + + switch target := expr.Left.(type) { + case *ast.VarExpr: + switch target.Scope { + case ast.ScopeGlobal: + c.add(AugAssignGlobal, Opcode(augOp), opcodeInt(target.Index)) + case ast.ScopeLocal: + c.add(AugAssignLocal, Opcode(augOp), opcodeInt(target.Index)) + default: // ScopeSpecial + c.add(AugAssignSpecial, Opcode(augOp), opcodeInt(target.Index)) + } + case *ast.FieldExpr: + c.expr(target.Index) + c.add(AugAssignField, Opcode(augOp)) + case *ast.IndexExpr: + c.index(target.Index) + switch target.Array.Scope { + case ast.ScopeGlobal: + c.add(AugAssignArrayGlobal, Opcode(augOp), opcodeInt(target.Array.Index)) + default: // ScopeLocal + c.add(AugAssignArrayLocal, Opcode(augOp), opcodeInt(target.Array.Index)) + } + } + return + } + + // Non-optimized ExprStmt: push value and then drop it + c.expr(s.Expr) + c.add(Drop) + + case *ast.PrintStmt: + if s.Redirect != lexer.ILLEGAL { + c.expr(s.Dest) // redirect destination + } + for _, a := range s.Args { + c.expr(a) + } + c.add(Print, opcodeInt(len(s.Args)), Opcode(s.Redirect)) + + case *ast.PrintfStmt: + if s.Redirect != lexer.ILLEGAL { + c.expr(s.Dest) // redirect destination + } + for _, a := range s.Args { + c.expr(a) + } + c.add(Printf, opcodeInt(len(s.Args)), Opcode(s.Redirect)) + + case *ast.IfStmt: + if len(s.Else) == 0 { + jumpOp := c.condition(s.Cond, true) + ifMark := c.jumpForward(jumpOp) + c.stmts(s.Body) + c.patchForward(ifMark) + } else { + jumpOp := c.condition(s.Cond, true) + ifMark := c.jumpForward(jumpOp) + c.stmts(s.Body) + elseMark := c.jumpForward(Jump) + c.patchForward(ifMark) + c.stmts(s.Else) + c.patchForward(elseMark) + } + + case *ast.ForStmt: + if s.Pre != nil { + c.stmt(s.Pre) + } + c.breaks = append(c.breaks, []int{}) + c.continues = append(c.continues, []int{}) + + // Optimization: include condition once before loop and at the end. + // This avoids one jump (a conditional jump at the top and an + // unconditional one at the end). This idea was stolen from an + // optimization CPython did recently in its "while" loop. + var mark int + if s.Cond != nil { + jumpOp := c.condition(s.Cond, true) + mark = c.jumpForward(jumpOp) + } + + loopStart := c.labelBackward() + c.stmts(s.Body) + c.patchContinues() + if s.Post != nil { + c.stmt(s.Post) + } + + if s.Cond != nil { + jumpOp := c.condition(s.Cond, false) + c.jumpBackward(loopStart, jumpOp) + c.patchForward(mark) + } else { + c.jumpBackward(loopStart, Jump) + } + + c.patchBreaks() + + case *ast.ForInStmt: + // ForIn is handled a bit differently from the other loops, because we + // want to use Go's "for range" construct directly in the interpreter. + // Otherwise we'd need to build a slice of all keys rather than + // iterating, or write our own hash table that has a more flexible + // iterator. + mark := c.jumpForward(ForIn, opcodeInt(int(s.Var.Scope)), opcodeInt(s.Var.Index), + Opcode(s.Array.Scope), opcodeInt(s.Array.Index)) + + c.breaks = append(c.breaks, nil) // nil tells BreakStmt it's a for-in loop + c.continues = append(c.continues, []int{}) + + c.stmts(s.Body) + + c.patchForward(mark) + c.patchContinues() + c.breaks = c.breaks[:len(c.breaks)-1] + + case *ast.ReturnStmt: + if s.Value != nil { + c.expr(s.Value) + c.add(Return) + } else { + c.add(ReturnNull) + } + + case *ast.WhileStmt: + c.breaks = append(c.breaks, []int{}) + c.continues = append(c.continues, []int{}) + + // Optimization: include condition once before loop and at the end. + // See ForStmt for more details. + jumpOp := c.condition(s.Cond, true) + mark := c.jumpForward(jumpOp) + + loopStart := c.labelBackward() + c.stmts(s.Body) + c.patchContinues() + + jumpOp = c.condition(s.Cond, false) + c.jumpBackward(loopStart, jumpOp) + c.patchForward(mark) + + c.patchBreaks() + + case *ast.DoWhileStmt: + c.breaks = append(c.breaks, []int{}) + c.continues = append(c.continues, []int{}) + + loopStart := c.labelBackward() + c.stmts(s.Body) + c.patchContinues() + + jumpOp := c.condition(s.Cond, false) + c.jumpBackward(loopStart, jumpOp) + + c.patchBreaks() + + case *ast.BreakStmt: + i := len(c.breaks) - 1 + if c.breaks[i] == nil { + // Break in for-in loop is executed differently, use errBreak to exit + c.add(BreakForIn) + } else { + mark := c.jumpForward(Jump) + c.breaks[i] = append(c.breaks[i], mark) + } + + case *ast.ContinueStmt: + i := len(c.continues) - 1 + mark := c.jumpForward(Jump) + c.continues[i] = append(c.continues[i], mark) + + case *ast.NextStmt: + c.add(Next) + + case *ast.ExitStmt: + if s.Status != nil { + c.expr(s.Status) + } else { + c.expr(&ast.NumExpr{0}) + } + c.add(Exit) + + case *ast.DeleteStmt: + if len(s.Index) > 0 { + c.index(s.Index) + c.add(Delete, Opcode(s.Array.Scope), opcodeInt(s.Array.Index)) + } else { + c.add(DeleteAll, Opcode(s.Array.Scope), opcodeInt(s.Array.Index)) + } + + case *ast.BlockStmt: + c.stmts(s.Body) + + default: + // Should never happen + panic(fmt.Sprintf("unexpected stmt type: %T", stmt)) + } +} + +// Return the amount (+1 or -1) to add for an increment expression. +func incrAmount(op lexer.Token) Opcode { + if op == lexer.INCR { + return 1 + } else { + return -1 // DECR + } +} + +// Generate opcodes for an assignment. +func (c *compiler) assign(target ast.Expr) { + switch target := target.(type) { + case *ast.VarExpr: + switch target.Scope { + case ast.ScopeGlobal: + c.add(AssignGlobal, opcodeInt(target.Index)) + case ast.ScopeLocal: + c.add(AssignLocal, opcodeInt(target.Index)) + case ast.ScopeSpecial: + c.add(AssignSpecial, opcodeInt(target.Index)) + } + case *ast.FieldExpr: + c.expr(target.Index) + c.add(AssignField) + case *ast.IndexExpr: + c.index(target.Index) + switch target.Array.Scope { + case ast.ScopeGlobal: + c.add(AssignArrayGlobal, opcodeInt(target.Array.Index)) + case ast.ScopeLocal: + c.add(AssignArrayLocal, opcodeInt(target.Array.Index)) + } + } +} + +// Convert int to Opcode, raising a *compileError if it doesn't fit. +func opcodeInt(n int) Opcode { + if n > math.MaxInt32 || n < math.MinInt32 { + // Two billion should be enough for anybody. + panic(&compileError{message: fmt.Sprintf("program too large (constant index or jump offset %d doesn't fit in int32)", n)}) + } + return Opcode(n) +} + +// Patch jump addresses for break statements in a loop. +func (c *compiler) patchBreaks() { + breaks := c.breaks[len(c.breaks)-1] + for _, mark := range breaks { + c.patchForward(mark) + } + c.breaks = c.breaks[:len(c.breaks)-1] +} + +// Patch jump addresses for continue statements in a loop +func (c *compiler) patchContinues() { + continues := c.continues[len(c.continues)-1] + for _, mark := range continues { + c.patchForward(mark) + } + c.continues = c.continues[:len(c.continues)-1] +} + +// Generate a forward jump (patched later) and return a "mark". +func (c *compiler) jumpForward(jumpOp Opcode, args ...Opcode) int { + c.add(jumpOp) + c.add(args...) + c.add(0) + return len(c.code) +} + +// Patch a previously-generated forward jump. +func (c *compiler) patchForward(mark int) { + offset := len(c.code) - mark + c.code[mark-1] = opcodeInt(offset) +} + +// Return a "label" for a subsequent backward jump. +func (c *compiler) labelBackward() int { + return len(c.code) +} + +// Jump to a previously-created label. +func (c *compiler) jumpBackward(label int, jumpOp Opcode, args ...Opcode) { + offset := label - (len(c.code) + len(args) + 2) + c.add(jumpOp) + c.add(args...) + c.add(opcodeInt(offset)) +} + +// Generate opcodes for a boolean condition. +func (c *compiler) condition(expr ast.Expr, invert bool) Opcode { + jumpOp := func(normal, inverted Opcode) Opcode { + if invert { + return inverted + } + return normal + } + + switch cond := expr.(type) { + case *ast.BinaryExpr: + // Optimize binary comparison expressions like "x < 10" into just + // JumpLess instead of two instructions (Less and JumpTrue). + switch cond.Op { + case lexer.EQUALS: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpEquals, JumpNotEquals) + + case lexer.NOT_EQUALS: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpNotEquals, JumpEquals) + + case lexer.LESS: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpLess, JumpGreaterOrEqual) + + case lexer.LTE: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpLessOrEqual, JumpGreater) + + case lexer.GREATER: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpGreater, JumpLessOrEqual) + + case lexer.GTE: + c.expr(cond.Left) + c.expr(cond.Right) + return jumpOp(JumpGreaterOrEqual, JumpLess) + } + } + + // Fall back to evaluating the expression normally, followed by JumpTrue + // or JumpFalse. + c.expr(expr) + return jumpOp(JumpTrue, JumpFalse) +} + +func (c *compiler) expr(expr ast.Expr) { + switch e := expr.(type) { + case *ast.NumExpr: + c.add(Num, opcodeInt(c.numIndex(e.Value))) + + case *ast.StrExpr: + c.add(Str, opcodeInt(c.strIndex(e.Value))) + + case *ast.FieldExpr: + switch index := e.Index.(type) { + case *ast.NumExpr: + if index.Value == float64(Opcode(index.Value)) { + // Optimize $i to FieldInt opcode with integer argument + c.add(FieldInt, opcodeInt(int(index.Value))) + return + } + } + c.expr(e.Index) + c.add(Field) + + case *ast.NamedFieldExpr: + switch index := e.Field.(type) { + case *ast.StrExpr: + c.add(FieldByNameStr, opcodeInt(c.strIndex(index.Value))) + return + } + c.expr(e.Field) + c.add(FieldByName) + + case *ast.VarExpr: + switch e.Scope { + case ast.ScopeGlobal: + c.add(Global, opcodeInt(e.Index)) + case ast.ScopeLocal: + c.add(Local, opcodeInt(e.Index)) + case ast.ScopeSpecial: + c.add(Special, opcodeInt(e.Index)) + } + + case *ast.RegExpr: + c.add(Regex, opcodeInt(c.regexIndex(e.Regex))) + + case *ast.BinaryExpr: + // && and || are special cases as they're short-circuit operators. + switch e.Op { + case lexer.AND: + c.expr(e.Left) + c.add(Dupe) + mark := c.jumpForward(JumpFalse) + c.add(Drop) + c.expr(e.Right) + c.patchForward(mark) + c.add(Boolean) + case lexer.OR: + c.expr(e.Left) + c.add(Dupe) + mark := c.jumpForward(JumpTrue) + c.add(Drop) + c.expr(e.Right) + c.patchForward(mark) + c.add(Boolean) + case lexer.CONCAT: + c.concatOp(e) + default: + // All other binary expressions + c.expr(e.Left) + c.expr(e.Right) + c.binaryOp(e.Op) + } + + case *ast.IncrExpr: + // Most IncrExpr (standalone) will be handled by the ExprStmt special case + op := Add + if e.Op == lexer.DECR { + op = Subtract + } + if e.Pre { + c.expr(e.Expr) + c.expr(&ast.NumExpr{1}) + c.add(op) + c.add(Dupe) + } else { + c.expr(e.Expr) + c.expr(&ast.NumExpr{0}) + c.add(Add) + c.add(Dupe) + c.expr(&ast.NumExpr{1}) + c.add(op) + } + c.assign(e.Expr) + + case *ast.AssignExpr: + // Most AssignExpr (standalone) will be handled by the ExprStmt special case + c.expr(e.Right) + c.add(Dupe) + c.assign(e.Left) + + case *ast.AugAssignExpr: + // Most AugAssignExpr (standalone) will be handled by the ExprStmt special case + c.expr(e.Right) + c.expr(e.Left) + c.add(Swap) + c.binaryOp(e.Op) + c.add(Dupe) + c.assign(e.Left) + + case *ast.CondExpr: + jump := c.condition(e.Cond, true) + ifMark := c.jumpForward(jump) + c.expr(e.True) + elseMark := c.jumpForward(Jump) + c.patchForward(ifMark) + c.expr(e.False) + c.patchForward(elseMark) + + case *ast.IndexExpr: + c.index(e.Index) + switch e.Array.Scope { + case ast.ScopeGlobal: + c.add(ArrayGlobal, opcodeInt(e.Array.Index)) + case ast.ScopeLocal: + c.add(ArrayLocal, opcodeInt(e.Array.Index)) + } + + case *ast.CallExpr: + // split and sub/gsub require special cases as they have lvalue arguments + switch e.Func { + case lexer.F_SPLIT: + c.expr(e.Args[0]) + arrayExpr := e.Args[1].(*ast.ArrayExpr) + if len(e.Args) > 2 { + c.expr(e.Args[2]) + c.add(CallSplitSep, Opcode(arrayExpr.Scope), opcodeInt(arrayExpr.Index)) + } else { + c.add(CallSplit, Opcode(arrayExpr.Scope), opcodeInt(arrayExpr.Index)) + } + return + case lexer.F_SUB, lexer.F_GSUB: + op := BuiltinSub + if e.Func == lexer.F_GSUB { + op = BuiltinGsub + } + var target ast.Expr = &ast.FieldExpr{&ast.NumExpr{0}} // default value and target is $0 + if len(e.Args) == 3 { + target = e.Args[2] + } + c.expr(e.Args[0]) + c.expr(e.Args[1]) + c.expr(target) + c.add(CallBuiltin, Opcode(op)) + c.assign(target) + return + } + + for _, arg := range e.Args { + c.expr(arg) + } + switch e.Func { + case lexer.F_ATAN2: + c.add(CallBuiltin, Opcode(BuiltinAtan2)) + case lexer.F_CLOSE: + c.add(CallBuiltin, Opcode(BuiltinClose)) + case lexer.F_COS: + c.add(CallBuiltin, Opcode(BuiltinCos)) + case lexer.F_EXP: + c.add(CallBuiltin, Opcode(BuiltinExp)) + case lexer.F_FFLUSH: + if len(e.Args) > 0 { + c.add(CallBuiltin, Opcode(BuiltinFflush)) + } else { + c.add(CallBuiltin, Opcode(BuiltinFflushAll)) + } + case lexer.F_INDEX: + c.add(CallBuiltin, Opcode(BuiltinIndex)) + case lexer.F_INT: + c.add(CallBuiltin, Opcode(BuiltinInt)) + case lexer.F_LENGTH: + if len(e.Args) > 0 { + c.add(CallBuiltin, Opcode(BuiltinLengthArg)) + } else { + c.add(CallBuiltin, Opcode(BuiltinLength)) + } + case lexer.F_LOG: + c.add(CallBuiltin, Opcode(BuiltinLog)) + case lexer.F_MATCH: + c.add(CallBuiltin, Opcode(BuiltinMatch)) + case lexer.F_RAND: + c.add(CallBuiltin, Opcode(BuiltinRand)) + case lexer.F_SIN: + c.add(CallBuiltin, Opcode(BuiltinSin)) + case lexer.F_SPRINTF: + c.add(CallSprintf, opcodeInt(len(e.Args))) + case lexer.F_SQRT: + c.add(CallBuiltin, Opcode(BuiltinSqrt)) + case lexer.F_SRAND: + if len(e.Args) > 0 { + c.add(CallBuiltin, Opcode(BuiltinSrandSeed)) + } else { + c.add(CallBuiltin, Opcode(BuiltinSrand)) + } + case lexer.F_SUBSTR: + if len(e.Args) > 2 { + c.add(CallBuiltin, Opcode(BuiltinSubstrLength)) + } else { + c.add(CallBuiltin, Opcode(BuiltinSubstr)) + } + case lexer.F_SYSTEM: + c.add(CallBuiltin, Opcode(BuiltinSystem)) + case lexer.F_TOLOWER: + c.add(CallBuiltin, Opcode(BuiltinTolower)) + case lexer.F_TOUPPER: + c.add(CallBuiltin, Opcode(BuiltinToupper)) + default: + panic(fmt.Sprintf("unexpected function: %s", e.Func)) + } + + case *ast.UnaryExpr: + c.expr(e.Value) + switch e.Op { + case lexer.SUB: + c.add(UnaryMinus) + case lexer.NOT: + c.add(Not) + default: // ADD + c.add(UnaryPlus) + } + + case *ast.InExpr: + c.index(e.Index) + switch e.Array.Scope { + case ast.ScopeGlobal: + c.add(InGlobal, opcodeInt(e.Array.Index)) + default: // ScopeLocal + c.add(InLocal, opcodeInt(e.Array.Index)) + } + + case *ast.UserCallExpr: + if e.Native { + for _, arg := range e.Args { + c.expr(arg) + } + c.add(CallNative, opcodeInt(e.Index), opcodeInt(len(e.Args))) + for len(c.program.nativeFuncNames) <= e.Index { + c.program.nativeFuncNames = append(c.program.nativeFuncNames, "") + } + c.program.nativeFuncNames[e.Index] = e.Name + } else { + f := c.program.Functions[e.Index] + var arrayOpcodes []Opcode + numScalarArgs := 0 + for i, arg := range e.Args { + if f.Arrays[i] { + a := arg.(*ast.VarExpr) + arrayOpcodes = append(arrayOpcodes, Opcode(a.Scope), opcodeInt(a.Index)) + } else { + c.expr(arg) + numScalarArgs++ + } + } + if numScalarArgs < f.NumScalars { + c.add(Nulls, opcodeInt(f.NumScalars-numScalarArgs)) + } + c.add(CallUser, opcodeInt(e.Index), opcodeInt(len(arrayOpcodes)/2)) + c.add(arrayOpcodes...) + } + + case *ast.GetlineExpr: + redirect := func() Opcode { + switch { + case e.Command != nil: + c.expr(e.Command) + return Opcode(lexer.PIPE) + case e.File != nil: + c.expr(e.File) + return Opcode(lexer.LESS) + default: + return Opcode(lexer.ILLEGAL) + } + } + switch target := e.Target.(type) { + case *ast.VarExpr: + switch target.Scope { + case ast.ScopeGlobal: + c.add(GetlineGlobal, redirect(), opcodeInt(target.Index)) + case ast.ScopeLocal: + c.add(GetlineLocal, redirect(), opcodeInt(target.Index)) + case ast.ScopeSpecial: + c.add(GetlineSpecial, redirect(), opcodeInt(target.Index)) + } + case *ast.FieldExpr: + c.expr(target.Index) + c.add(GetlineField, redirect()) + case *ast.IndexExpr: + c.index(target.Index) + c.add(GetlineArray, redirect(), Opcode(target.Array.Scope), opcodeInt(target.Array.Index)) + default: + c.add(Getline, redirect()) + } + + default: + // Should never happen + panic(fmt.Sprintf("unexpected expr type: %T", expr)) + } +} + +// Generate a Concat opcode or, if possible, compact multiple Concats into one +// ConcatMulti opcode. +func (c *compiler) concatOp(expr *ast.BinaryExpr) { + var values []ast.Expr + for { + values = append(values, expr.Right) + left, isBinary := expr.Left.(*ast.BinaryExpr) + if !isBinary || left.Op != lexer.CONCAT { + break + } + expr = left + } + values = append(values, expr.Left) + + // values are appended right to left + // but need to pushed left to right + + if len(values) == 2 { + c.expr(values[1]) + c.expr(values[0]) + c.add(Concat) + return + } + + for i := len(values) - 1; i >= 0; i-- { + c.expr(values[i]) + } + + c.add(ConcatMulti, opcodeInt(len(values))) +} + +// Add (or reuse) a number constant and returns its index. +func (c *compiler) numIndex(n float64) int { + if index, ok := c.indexes.nums[n]; ok { + return index // reuse existing constant + } + index := len(c.program.Nums) + c.program.Nums = append(c.program.Nums, n) + c.indexes.nums[n] = index + return index +} + +// Add (or reuse) a string constant and returns its index. +func (c *compiler) strIndex(s string) int { + if index, ok := c.indexes.strs[s]; ok { + return index // reuse existing constant + } + index := len(c.program.Strs) + c.program.Strs = append(c.program.Strs, s) + c.indexes.strs[s] = index + return index +} + +// Add (or reuse) a regex constant and returns its index. +func (c *compiler) regexIndex(r string) int { + if index, ok := c.indexes.regexes[r]; ok { + return index // reuse existing constant + } + index := len(c.program.Regexes) + c.program.Regexes = append(c.program.Regexes, regexp.MustCompile(AddRegexFlags(r))) + c.indexes.regexes[r] = index + return index +} + +// AddRegexFlags add the necessary flags to regex to make it work like other +// AWKs (exported so we can also use this in the interpreter). +func AddRegexFlags(regex string) string { + // "s" flag lets . match \n (multi-line matching like other AWKs) + return "(?s:" + regex + ")" +} + +func (c *compiler) binaryOp(op lexer.Token) { + var opcode Opcode + switch op { + case lexer.ADD: + opcode = Add + case lexer.SUB: + opcode = Subtract + case lexer.EQUALS: + opcode = Equals + case lexer.LESS: + opcode = Less + case lexer.LTE: + opcode = LessOrEqual + case lexer.MUL: + opcode = Multiply + case lexer.DIV: + opcode = Divide + case lexer.GREATER: + opcode = Greater + case lexer.GTE: + opcode = GreaterOrEqual + case lexer.NOT_EQUALS: + opcode = NotEquals + case lexer.MATCH: + opcode = Match + case lexer.NOT_MATCH: + opcode = NotMatch + case lexer.POW: + opcode = Power + case lexer.MOD: + opcode = Modulo + default: + panic(fmt.Sprintf("unexpected binary operation: %s", op)) + } + c.add(opcode) +} + +// Generate an array index, handling multi-indexes properly. +func (c *compiler) index(index []ast.Expr) { + for _, expr := range index { + c.expr(expr) + } + if len(index) > 1 { + c.add(IndexMulti, opcodeInt(len(index))) + } +} diff --git a/src/tool/awk/internal/compiler/disassembler.go b/src/tool/awk/internal/compiler/disassembler.go new file mode 100644 index 0000000..d5dc959 --- /dev/null +++ b/src/tool/awk/internal/compiler/disassembler.go @@ -0,0 +1,495 @@ +// Disassembles compiled program to text assembly instructions + +package compiler + +import ( + "fmt" + "io" + "strings" + + "github.com/benhoyt/goawk/internal/ast" + "github.com/benhoyt/goawk/lexer" +) + +// Disassemble writes a human-readable form of the program's virtual machine +// instructions to writer. +func (p *Program) Disassemble(writer io.Writer) error { + if p.Begin != nil { + d := &disassembler{ + program: p, + writer: writer, + code: p.Begin, + nativeFuncNames: p.nativeFuncNames, + } + err := d.disassemble("BEGIN") + if err != nil { + return err + } + } + + for _, action := range p.Actions { + switch len(action.Pattern) { + case 0: + // Nothing to do here. + case 1: + d := &disassembler{ + program: p, + writer: writer, + code: action.Pattern[0], + nativeFuncNames: p.nativeFuncNames, + } + err := d.disassemble("pattern") + if err != nil { + return err + } + case 2: + d := &disassembler{ + program: p, + writer: writer, + code: action.Pattern[0], + nativeFuncNames: p.nativeFuncNames, + } + err := d.disassemble("start") + if err != nil { + return err + } + d = &disassembler{ + program: p, + writer: writer, + code: action.Pattern[1], + nativeFuncNames: p.nativeFuncNames, + } + err = d.disassemble("stop") + if err != nil { + return err + } + } + if len(action.Body) > 0 { + d := &disassembler{ + program: p, + writer: writer, + code: action.Body, + nativeFuncNames: p.nativeFuncNames, + } + err := d.disassemble("{ body }") + if err != nil { + return err + } + } + } + + if p.End != nil { + d := &disassembler{ + program: p, + writer: writer, + code: p.End, + nativeFuncNames: p.nativeFuncNames, + } + err := d.disassemble("END") + if err != nil { + return err + } + } + + for i, f := range p.Functions { + d := &disassembler{ + program: p, + writer: writer, + code: f.Body, + nativeFuncNames: p.nativeFuncNames, + funcIndex: i, + } + err := d.disassemble("function " + f.Name) + if err != nil { + return err + } + } + + return nil +} + +// Disassembles a single block of opcodes. +type disassembler struct { + program *Program + writer io.Writer + code []Opcode + nativeFuncNames []string + funcIndex int + ip int + opAddr int + err error +} + +func (d *disassembler) disassemble(prefix string) error { + if prefix != "" { + d.writef(" // %s\n", prefix) + } + + for d.ip < len(d.code) && d.err == nil { + d.opAddr = d.ip + op := d.fetch() + + switch op { + case Num: + index := d.fetch() + num := d.program.Nums[index] + if num == float64(int(num)) { + d.writeOpf("Num %d (%d)", int(num), index) + } else { + d.writeOpf("Num %.6g (%d)", num, index) + } + + case Str: + index := d.fetch() + d.writeOpf("Str %q (%d)", d.program.Strs[index], index) + + case FieldInt: + index := d.fetch() + d.writeOpf("FieldInt %d", index) + + case FieldByNameStr: + index := d.fetch() + d.writeOpf("FieldByNameStr %q (%d)", d.program.Strs[index], index) + + case Global: + index := d.fetch() + d.writeOpf("Global %s", d.program.scalarNames[index]) + + case Local: + index := int(d.fetch()) + d.writeOpf("Local %s", d.localName(index)) + + case Special: + index := d.fetch() + d.writeOpf("Special %s", ast.SpecialVarName(int(index))) + + case ArrayGlobal: + arrayIndex := d.fetch() + d.writeOpf("ArrayGlobal %s", d.program.arrayNames[arrayIndex]) + + case ArrayLocal: + arrayIndex := d.fetch() + d.writeOpf("ArrayLocal %s", d.localArrayName(int(arrayIndex))) + + case InGlobal: + arrayIndex := d.fetch() + d.writeOpf("InGlobal %s", d.program.arrayNames[arrayIndex]) + + case InLocal: + arrayIndex := int(d.fetch()) + d.writeOpf("InLocal %s", d.localArrayName(arrayIndex)) + + case AssignGlobal: + index := d.fetch() + d.writeOpf("AssignGlobal %s", d.program.scalarNames[index]) + + case AssignLocal: + index := int(d.fetch()) + d.writeOpf("AssignLocal %s", d.localName(index)) + + case AssignSpecial: + index := d.fetch() + d.writeOpf("AssignSpecial %s", ast.SpecialVarName(int(index))) + + case AssignArrayGlobal: + arrayIndex := d.fetch() + d.writeOpf("AssignArrayGlobal %s", d.program.arrayNames[arrayIndex]) + + case AssignArrayLocal: + arrayIndex := int(d.fetch()) + d.writeOpf("AssignArrayLocal %s", d.localArrayName(arrayIndex)) + + case Delete: + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("Delete %s", d.arrayName(arrayScope, arrayIndex)) + + case DeleteAll: + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("DeleteAll %s", d.arrayName(arrayScope, arrayIndex)) + + case IncrField: + amount := d.fetch() + d.writeOpf("IncrField %d", amount) + + case IncrGlobal: + amount := d.fetch() + index := d.fetch() + d.writeOpf("IncrGlobal %d %s", amount, d.program.scalarNames[index]) + + case IncrLocal: + amount := d.fetch() + index := int(d.fetch()) + d.writeOpf("IncrLocal %d %s", amount, d.localName(index)) + + case IncrSpecial: + amount := d.fetch() + index := d.fetch() + d.writeOpf("IncrSpecial %d %s", amount, ast.SpecialVarName(int(index))) + + case IncrArrayGlobal: + amount := d.fetch() + arrayIndex := d.fetch() + d.writeOpf("IncrArrayGlobal %d %s", amount, d.program.arrayNames[arrayIndex]) + + case IncrArrayLocal: + amount := d.fetch() + arrayIndex := int(d.fetch()) + d.writeOpf("IncrArrayLocal %d %s", amount, d.localArrayName(arrayIndex)) + + case AugAssignField: + operation := AugOp(d.fetch()) + d.writeOpf("AugAssignField %s", operation) + + case AugAssignGlobal: + operation := AugOp(d.fetch()) + index := d.fetch() + d.writeOpf("AugAssignGlobal %s %s", operation, d.program.scalarNames[index]) + + case AugAssignLocal: + operation := AugOp(d.fetch()) + index := int(d.fetch()) + d.writeOpf("AugAssignLocal %s %s", operation, d.localName(index)) + + case AugAssignSpecial: + operation := AugOp(d.fetch()) + index := d.fetch() + d.writeOpf("AugAssignSpecial %s %d", operation, ast.SpecialVarName(int(index))) + + case AugAssignArrayGlobal: + operation := AugOp(d.fetch()) + arrayIndex := d.fetch() + d.writeOpf("AugAssignArrayGlobal %s %s", operation, d.program.arrayNames[arrayIndex]) + + case AugAssignArrayLocal: + operation := AugOp(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("AugAssignArrayLocal %s %s", operation, d.localArrayName(arrayIndex)) + + case Regex: + regexIndex := d.fetch() + d.writeOpf("Regex %q (%d)", d.program.Regexes[regexIndex], regexIndex) + + case IndexMulti: + num := d.fetch() + d.writeOpf("IndexMulti %d", num) + + case ConcatMulti: + num := d.fetch() + d.writeOpf("ConcatMulti %d", num) + + case Jump: + offset := d.fetch() + d.writeOpf("Jump 0x%04x", d.ip+int(offset)) + + case JumpFalse: + offset := d.fetch() + d.writeOpf("JumpFalse 0x%04x", d.ip+int(offset)) + + case JumpTrue: + offset := d.fetch() + d.writeOpf("JumpTrue 0x%04x", d.ip+int(offset)) + + case JumpEquals: + offset := d.fetch() + d.writeOpf("JumpEquals 0x%04x", d.ip+int(offset)) + + case JumpNotEquals: + offset := d.fetch() + d.writeOpf("JumpNotEquals 0x%04x", d.ip+int(offset)) + + case JumpLess: + offset := d.fetch() + d.writeOpf("JumpLess 0x%04x", d.ip+int(offset)) + + case JumpGreater: + offset := d.fetch() + d.writeOpf("JumpGreater 0x%04x", d.ip+int(offset)) + + case JumpLessOrEqual: + offset := d.fetch() + d.writeOpf("JumpLessOrEqual 0x%04x", d.ip+int(offset)) + + case JumpGreaterOrEqual: + offset := d.fetch() + d.writeOpf("JumpGreaterOrEqual 0x%04x", d.ip+int(offset)) + + case ForIn: + varScope := ast.VarScope(d.fetch()) + varIndex := int(d.fetch()) + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + offset := d.fetch() + d.writeOpf("ForIn %s %s 0x%04x", d.varName(varScope, varIndex), d.arrayName(arrayScope, arrayIndex), d.ip+int(offset)) + + case CallBuiltin: + builtinOp := BuiltinOp(d.fetch()) + d.writeOpf("CallBuiltin %s", builtinOp) + + case CallSplit: + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("CallSplit %s", d.arrayName(arrayScope, arrayIndex)) + + case CallSplitSep: + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("CallSplitSep %s", d.arrayName(arrayScope, arrayIndex)) + + case CallSprintf: + numArgs := d.fetch() + d.writeOpf("CallSprintf %d", numArgs) + + case CallUser: + funcIndex := d.fetch() + numArrayArgs := int(d.fetch()) + var arrayArgs []string + for i := 0; i < numArrayArgs; i++ { + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + arrayArgs = append(arrayArgs, d.arrayName(arrayScope, arrayIndex)) + } + d.writeOpf("CallUser %s [%s]", d.program.Functions[funcIndex].Name, strings.Join(arrayArgs, ", ")) + + case CallNative: + funcIndex := d.fetch() + numArgs := d.fetch() + d.writeOpf("CallNative %s %d", d.nativeFuncNames[funcIndex], numArgs) + + case Nulls: + numNulls := d.fetch() + d.writeOpf("Nulls %d", numNulls) + + case Print: + numArgs := d.fetch() + redirect := lexer.Token(d.fetch()) + if redirect == lexer.ILLEGAL { + d.writeOpf("Print %d", numArgs) + } else { + d.writeOpf("Print %d %s", numArgs, redirect) + } + + case Printf: + numArgs := d.fetch() + redirect := lexer.Token(d.fetch()) + if redirect == lexer.ILLEGAL { + d.writeOpf("Printf %d", numArgs) + } else { + d.writeOpf("Printf %d %s", numArgs, redirect) + } + + case Getline: + redirect := lexer.Token(d.fetch()) + d.writeOpf("Getline %s", redirect) + + case GetlineField: + redirect := lexer.Token(d.fetch()) + d.writeOpf("GetlineField %s", redirect) + + case GetlineGlobal: + redirect := lexer.Token(d.fetch()) + index := d.fetch() + d.writeOpf("GetlineGlobal %s %s", redirect, d.program.scalarNames[index]) + + case GetlineLocal: + redirect := lexer.Token(d.fetch()) + index := int(d.fetch()) + d.writeOpf("GetlineLocal %s %s", redirect, d.localName(index)) + + case GetlineSpecial: + redirect := lexer.Token(d.fetch()) + index := d.fetch() + d.writeOpf("GetlineSpecial %s %s", redirect, ast.SpecialVarName(int(index))) + + case GetlineArray: + redirect := lexer.Token(d.fetch()) + arrayScope := ast.VarScope(d.fetch()) + arrayIndex := int(d.fetch()) + d.writeOpf("GetlineArray %s %s", redirect, d.arrayName(arrayScope, arrayIndex)) + + default: + // Handles all other opcodes with no arguments + d.writeOpf("%s", op) + } + } + + d.writef("\n") + return d.err +} + +// Fetch the next opcode and increment the "instruction pointer". +func (d *disassembler) fetch() Opcode { + op := d.code[d.ip] + d.ip++ + return op +} + +// Write formatted string to the disassembly output. +func (d *disassembler) writef(format string, args ...interface{}) { + if d.err != nil { + return + } + _, d.err = fmt.Fprintf(d.writer, format, args...) +} + +// Write formatted opcode (with address and newline) to disassembly output. +func (d *disassembler) writeOpf(format string, args ...interface{}) { + if d.err != nil { + return + } + addrStr := fmt.Sprintf("%04x", d.opAddr) + _, d.err = fmt.Fprintf(d.writer, addrStr+" "+format+"\n", args...) +} + +// Return the scalar variable name described by scope and index. +func (d *disassembler) varName(scope ast.VarScope, index int) string { + switch scope { + case ast.ScopeGlobal: + return d.program.scalarNames[index] + case ast.ScopeLocal: + return d.localName(index) + default: // ScopeSpecial + return ast.SpecialVarName(index) + } +} + +// Return the local variable name with the given index. +func (d *disassembler) localName(index int) string { + f := d.program.Functions[d.funcIndex] + n := 0 + for i, p := range f.Params { + if f.Arrays[i] { + continue + } + if n == index { + return p + } + n++ + } + panic(fmt.Sprintf("unexpected local variable index %d", index)) +} + +// Return the array variable name describes by scope and index. +func (d *disassembler) arrayName(scope ast.VarScope, index int) string { + if scope == ast.ScopeLocal { + return d.localArrayName(index) + } + return d.program.arrayNames[index] +} + +// Return the local array name with the given index. +func (d *disassembler) localArrayName(index int) string { + f := d.program.Functions[d.funcIndex] + n := 0 + for i, p := range f.Params { + if !f.Arrays[i] { + continue + } + if n == index { + return p + } + n++ + } + panic(fmt.Sprintf("unexpected local array index %d", index)) +} diff --git a/src/tool/awk/internal/compiler/disassembler_test.go b/src/tool/awk/internal/compiler/disassembler_test.go new file mode 100644 index 0000000..297224d --- /dev/null +++ b/src/tool/awk/internal/compiler/disassembler_test.go @@ -0,0 +1,51 @@ +package compiler + +import ( + "bytes" + "regexp" + "strings" + "testing" +) + +func TestDisassembler(t *testing.T) { + // Note: this doesn't really test the disassembly, just that each opcode + // disassembly includes the opcode name, to help catch silly typos. + for op := Nop; op < EndOpcode; op++ { + t.Run(op.String(), func(t *testing.T) { + p := Program{ + Begin: []Opcode{op, 0, 0, 0, 0, 0, 0, 0}, + Functions: []Function{ + { + Name: "f", + Params: []string{"a", "k"}, + Arrays: []bool{true, false}, + NumScalars: 1, + NumArrays: 1, + }, + }, + Nums: []float64{0}, + Strs: []string{""}, + Regexes: []*regexp.Regexp{regexp.MustCompile("")}, + scalarNames: []string{"s"}, + arrayNames: []string{"a"}, + nativeFuncNames: []string{"n"}, + } + var buf bytes.Buffer + err := p.Disassemble(&buf) + if err != nil { + t.Fatalf("error disassembling opcode %s: %v", op, err) + } + lines := strings.Split(buf.String(), "\n") + if strings.TrimSpace(lines[0]) != "// BEGIN" { + t.Fatalf("first line should be \"// BEGIN\", not %q", lines[0]) + } + fields := strings.Fields(lines[1]) + if fields[0] != "0000" { + t.Fatalf("address should be \"0000\", not %q", fields[0]) + } + if fields[1] != op.String() { + t.Fatalf("opcode name should be %q, not %q", op.String(), fields[1]) + } + }) + } +} diff --git a/src/tool/awk/internal/compiler/opcode_string.go b/src/tool/awk/internal/compiler/opcode_string.go new file mode 100644 index 0000000..bfa2f0c --- /dev/null +++ b/src/tool/awk/internal/compiler/opcode_string.go @@ -0,0 +1,174 @@ +// Code generated by "stringer -type=Opcode,AugOp,BuiltinOp"; DO NOT EDIT. + +package compiler + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[Nop-0] + _ = x[Num-1] + _ = x[Str-2] + _ = x[Dupe-3] + _ = x[Drop-4] + _ = x[Swap-5] + _ = x[Field-6] + _ = x[FieldInt-7] + _ = x[FieldByName-8] + _ = x[FieldByNameStr-9] + _ = x[Global-10] + _ = x[Local-11] + _ = x[Special-12] + _ = x[ArrayGlobal-13] + _ = x[ArrayLocal-14] + _ = x[InGlobal-15] + _ = x[InLocal-16] + _ = x[AssignField-17] + _ = x[AssignGlobal-18] + _ = x[AssignLocal-19] + _ = x[AssignSpecial-20] + _ = x[AssignArrayGlobal-21] + _ = x[AssignArrayLocal-22] + _ = x[Delete-23] + _ = x[DeleteAll-24] + _ = x[IncrField-25] + _ = x[IncrGlobal-26] + _ = x[IncrLocal-27] + _ = x[IncrSpecial-28] + _ = x[IncrArrayGlobal-29] + _ = x[IncrArrayLocal-30] + _ = x[AugAssignField-31] + _ = x[AugAssignGlobal-32] + _ = x[AugAssignLocal-33] + _ = x[AugAssignSpecial-34] + _ = x[AugAssignArrayGlobal-35] + _ = x[AugAssignArrayLocal-36] + _ = x[Regex-37] + _ = x[IndexMulti-38] + _ = x[ConcatMulti-39] + _ = x[Add-40] + _ = x[Subtract-41] + _ = x[Multiply-42] + _ = x[Divide-43] + _ = x[Power-44] + _ = x[Modulo-45] + _ = x[Equals-46] + _ = x[NotEquals-47] + _ = x[Less-48] + _ = x[Greater-49] + _ = x[LessOrEqual-50] + _ = x[GreaterOrEqual-51] + _ = x[Concat-52] + _ = x[Match-53] + _ = x[NotMatch-54] + _ = x[Not-55] + _ = x[UnaryMinus-56] + _ = x[UnaryPlus-57] + _ = x[Boolean-58] + _ = x[Jump-59] + _ = x[JumpFalse-60] + _ = x[JumpTrue-61] + _ = x[JumpEquals-62] + _ = x[JumpNotEquals-63] + _ = x[JumpLess-64] + _ = x[JumpGreater-65] + _ = x[JumpLessOrEqual-66] + _ = x[JumpGreaterOrEqual-67] + _ = x[Next-68] + _ = x[Exit-69] + _ = x[ForIn-70] + _ = x[BreakForIn-71] + _ = x[CallBuiltin-72] + _ = x[CallSplit-73] + _ = x[CallSplitSep-74] + _ = x[CallSprintf-75] + _ = x[CallUser-76] + _ = x[CallNative-77] + _ = x[Return-78] + _ = x[ReturnNull-79] + _ = x[Nulls-80] + _ = x[Print-81] + _ = x[Printf-82] + _ = x[Getline-83] + _ = x[GetlineField-84] + _ = x[GetlineGlobal-85] + _ = x[GetlineLocal-86] + _ = x[GetlineSpecial-87] + _ = x[GetlineArray-88] + _ = x[EndOpcode-89] +} + +const _Opcode_name = "NopNumStrDupeDropSwapFieldFieldIntFieldByNameFieldByNameStrGlobalLocalSpecialArrayGlobalArrayLocalInGlobalInLocalAssignFieldAssignGlobalAssignLocalAssignSpecialAssignArrayGlobalAssignArrayLocalDeleteDeleteAllIncrFieldIncrGlobalIncrLocalIncrSpecialIncrArrayGlobalIncrArrayLocalAugAssignFieldAugAssignGlobalAugAssignLocalAugAssignSpecialAugAssignArrayGlobalAugAssignArrayLocalRegexIndexMultiConcatMultiAddSubtractMultiplyDividePowerModuloEqualsNotEqualsLessGreaterLessOrEqualGreaterOrEqualConcatMatchNotMatchNotUnaryMinusUnaryPlusBooleanJumpJumpFalseJumpTrueJumpEqualsJumpNotEqualsJumpLessJumpGreaterJumpLessOrEqualJumpGreaterOrEqualNextExitForInBreakForInCallBuiltinCallSplitCallSplitSepCallSprintfCallUserCallNativeReturnReturnNullNullsPrintPrintfGetlineGetlineFieldGetlineGlobalGetlineLocalGetlineSpecialGetlineArrayEndOpcode" + +var _Opcode_index = [...]uint16{0, 3, 6, 9, 13, 17, 21, 26, 34, 45, 59, 65, 70, 77, 88, 98, 106, 113, 124, 136, 147, 160, 177, 193, 199, 208, 217, 227, 236, 247, 262, 276, 290, 305, 319, 335, 355, 374, 379, 389, 400, 403, 411, 419, 425, 430, 436, 442, 451, 455, 462, 473, 487, 493, 498, 506, 509, 519, 528, 535, 539, 548, 556, 566, 579, 587, 598, 613, 631, 635, 639, 644, 654, 665, 674, 686, 697, 705, 715, 721, 731, 736, 741, 747, 754, 766, 779, 791, 805, 817, 826} + +func (i Opcode) String() string { + if i < 0 || i >= Opcode(len(_Opcode_index)-1) { + return "Opcode(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _Opcode_name[_Opcode_index[i]:_Opcode_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[AugOpAdd-0] + _ = x[AugOpSub-1] + _ = x[AugOpMul-2] + _ = x[AugOpDiv-3] + _ = x[AugOpPow-4] + _ = x[AugOpMod-5] +} + +const _AugOp_name = "AugOpAddAugOpSubAugOpMulAugOpDivAugOpPowAugOpMod" + +var _AugOp_index = [...]uint8{0, 8, 16, 24, 32, 40, 48} + +func (i AugOp) String() string { + if i < 0 || i >= AugOp(len(_AugOp_index)-1) { + return "AugOp(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _AugOp_name[_AugOp_index[i]:_AugOp_index[i+1]] +} +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[BuiltinAtan2-0] + _ = x[BuiltinClose-1] + _ = x[BuiltinCos-2] + _ = x[BuiltinExp-3] + _ = x[BuiltinFflush-4] + _ = x[BuiltinFflushAll-5] + _ = x[BuiltinGsub-6] + _ = x[BuiltinIndex-7] + _ = x[BuiltinInt-8] + _ = x[BuiltinLength-9] + _ = x[BuiltinLengthArg-10] + _ = x[BuiltinLog-11] + _ = x[BuiltinMatch-12] + _ = x[BuiltinRand-13] + _ = x[BuiltinSin-14] + _ = x[BuiltinSqrt-15] + _ = x[BuiltinSrand-16] + _ = x[BuiltinSrandSeed-17] + _ = x[BuiltinSub-18] + _ = x[BuiltinSubstr-19] + _ = x[BuiltinSubstrLength-20] + _ = x[BuiltinSystem-21] + _ = x[BuiltinTolower-22] + _ = x[BuiltinToupper-23] +} + +const _BuiltinOp_name = "BuiltinAtan2BuiltinCloseBuiltinCosBuiltinExpBuiltinFflushBuiltinFflushAllBuiltinGsubBuiltinIndexBuiltinIntBuiltinLengthBuiltinLengthArgBuiltinLogBuiltinMatchBuiltinRandBuiltinSinBuiltinSqrtBuiltinSrandBuiltinSrandSeedBuiltinSubBuiltinSubstrBuiltinSubstrLengthBuiltinSystemBuiltinTolowerBuiltinToupper" + +var _BuiltinOp_index = [...]uint16{0, 12, 24, 34, 44, 57, 73, 84, 96, 106, 119, 135, 145, 157, 168, 178, 189, 201, 217, 227, 240, 259, 272, 286, 300} + +func (i BuiltinOp) String() string { + if i < 0 || i >= BuiltinOp(len(_BuiltinOp_index)-1) { + return "BuiltinOp(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _BuiltinOp_name[_BuiltinOp_index[i]:_BuiltinOp_index[i+1]] +} diff --git a/src/tool/awk/internal/compiler/opcodes.go b/src/tool/awk/internal/compiler/opcodes.go new file mode 100644 index 0000000..36c4c93 --- /dev/null +++ b/src/tool/awk/internal/compiler/opcodes.go @@ -0,0 +1,180 @@ +package compiler + +//go:generate go run golang.org/x/tools/cmd/stringer@v0.1.8 -type=Opcode,AugOp,BuiltinOp + +// Opcode represents a single virtual machine instruction (or argument). The +// comments beside each opcode show any arguments that instruction consumes. +// +// Normally this is called "bytecode", but I've avoided that term here as each +// opcode is a 32-bit word, not an 8-bit byte. +// +// I tested various bit widths, and I believe 32 bit was the fastest, but also +// means we don't have to worry about jump offsets overflowing. That's tested +// in the compiler, but who's going to have an AWK program bigger than 2GB? +type Opcode int32 + +const ( + Nop Opcode = iota + + // Stack operations + Num // numIndex + Str // strIndex + Dupe + Drop + Swap + + // Fetch a field, variable, or array item + Field + FieldInt // index + FieldByName + FieldByNameStr // strIndex + Global // index + Local // index + Special // index + ArrayGlobal // arrayIndex + ArrayLocal // arrayIndex + InGlobal // arrayIndex + InLocal // arrayIndex + + // Assign a field, variable, or array item + AssignField + AssignGlobal // index + AssignLocal // index + AssignSpecial // index + AssignArrayGlobal // arrayIndex + AssignArrayLocal // arrayIndex + + // Delete statement + Delete // arrayScope arrayIndex + DeleteAll // arrayScope arrayIndex + + // Post-increment and post-decrement + IncrField // amount + IncrGlobal // amount index + IncrLocal // amount index + IncrSpecial // amount index + IncrArrayGlobal // amount arrayIndex + IncrArrayLocal // amount arrayIndex + + // Augmented assignment (also used for pre-increment and pre-decrement) + AugAssignField // augOp + AugAssignGlobal // augOp index + AugAssignLocal // augOp index + AugAssignSpecial // augOp index + AugAssignArrayGlobal // augOp arrayIndex + AugAssignArrayLocal // augOp arrayIndex + + // Stand-alone regex expression /foo/ + Regex // regexIndex + + // Multi-index concatenation + IndexMulti // num + + // Multi-value concatenation + ConcatMulti // num + + // Binary operators + Add + Subtract + Multiply + Divide + Power + Modulo + Equals + NotEquals + Less + Greater + LessOrEqual + GreaterOrEqual + Concat + Match + NotMatch + + // Unary operators + Not + UnaryMinus + UnaryPlus + Boolean + + // Control flow + Jump // offset + JumpFalse // offset + JumpTrue // offset + JumpEquals // offset + JumpNotEquals // offset + JumpLess // offset + JumpGreater // offset + JumpLessOrEqual // offset + JumpGreaterOrEqual // offset + Next + Exit + ForIn // varScope varIndex arrayScope arrayIndex offset + BreakForIn + + // Builtin functions + CallBuiltin // builtinOp + CallSplit // arrayScope arrayIndex + CallSplitSep // arrayScope arrayIndex + CallSprintf // numArgs + + // User and native functions + CallUser // funcIndex numArrayArgs [arrayScope1 arrayIndex1 ...] + CallNative // funcIndex numArgs + Return + ReturnNull + Nulls // numNulls + + // Print, printf, and getline + Print // numArgs redirect + Printf // numArgs redirect + Getline // redirect + GetlineField // redirect + GetlineGlobal // redirect index + GetlineLocal // redirect index + GetlineSpecial // redirect index + GetlineArray // redirect arrayScope arrayIndex + + EndOpcode +) + +// AugOp represents an augmented assignment operation. +type AugOp Opcode + +const ( + AugOpAdd AugOp = iota + AugOpSub + AugOpMul + AugOpDiv + AugOpPow + AugOpMod +) + +// BuiltinOp represents a builtin function call. +type BuiltinOp Opcode + +const ( + BuiltinAtan2 BuiltinOp = iota + BuiltinClose + BuiltinCos + BuiltinExp + BuiltinFflush + BuiltinFflushAll + BuiltinGsub + BuiltinIndex + BuiltinInt + BuiltinLength + BuiltinLengthArg + BuiltinLog + BuiltinMatch + BuiltinRand + BuiltinSin + BuiltinSqrt + BuiltinSrand + BuiltinSrandSeed + BuiltinSub + BuiltinSubstr + BuiltinSubstrLength + BuiltinSystem + BuiltinTolower + BuiltinToupper +) diff --git a/src/tool/awk/interp/csvreader_test.go b/src/tool/awk/interp/csvreader_test.go new file mode 100644 index 0000000..cb76fc2 --- /dev/null +++ b/src/tool/awk/interp/csvreader_test.go @@ -0,0 +1,392 @@ +// Tests copied from encoding/csv to ensure we pass all the relevant cases. + +// These tests are a subset of those in encoding/csv used to test Reader. +// However, the §, ¶ and ∑ special characters (for error positions) have been +// removed, and some tests have been removed or tweaked slightly because we +// don't support all the encoding/csv features (FieldsPerRecord is not +// supported, LazyQuotes is always on, and TrimLeadingSpace is always off). + +package interp + +import ( + "bufio" + "encoding/csv" + "reflect" + "strings" + "testing" + "unicode/utf8" +) + +type readTest struct { + Name string + Input string + Output [][]string + Error string + + // These fields are copied into the CSVInputConfig + Comma rune + Comment rune +} + +var readTests = []readTest{{ + Name: "Simple", + Input: "a,b,c\n", + Output: [][]string{{"a", "b", "c"}}, +}, { + Name: "CRLF", + Input: "a,b\r\nc,d\r\n", + Output: [][]string{{"a", "b"}, {"c", "d"}}, +}, { + Name: "BareCR", + Input: "a,b\rc,d\r\n", + Output: [][]string{{"a", "b\rc", "d"}}, +}, { + Name: "RFC4180test", + Input: `#field1,field2,field3 +"aaa","bb +b","ccc" +"a,a","b""bb","ccc" +zzz,yyy,xxx +`, + Output: [][]string{ + {"#field1", "field2", "field3"}, + {"aaa", "bb\nb", "ccc"}, + {"a,a", `b"bb`, "ccc"}, + {"zzz", "yyy", "xxx"}, + }, +}, { + Name: "NoEOLTest", + Input: "a,b,c", + Output: [][]string{{"a", "b", "c"}}, +}, { + Name: "Semicolon", + Input: "a;b;c\n", + Output: [][]string{{"a", "b", "c"}}, + Comma: ';', +}, { + Name: "MultiLine", + Input: `"two +line","one line","three +line +field"`, + Output: [][]string{{"two\nline", "one line", "three\nline\nfield"}}, +}, { + Name: "BlankLine", + Input: "a,b,c\n\nd,e,f\n\n", + Output: [][]string{ + {"a", "b", "c"}, + {"d", "e", "f"}, + }, +}, { + Name: "BlankLineFieldCount", + Input: "a,b,c\n\nd,e,f\n\n", + Output: [][]string{ + {"a", "b", "c"}, + {"d", "e", "f"}, + }, +}, { + Name: "LeadingSpace", + Input: " a, b, c\n", + Output: [][]string{{" a", " b", " c"}}, +}, { + Name: "Comment", + Input: "#1,2,3\na,b,c\n#comment", + Output: [][]string{{"a", "b", "c"}}, + Comment: '#', +}, { + Name: "NoComment", + Input: "#1,2,3\na,b,c", + Output: [][]string{{"#1", "2", "3"}, {"a", "b", "c"}}, +}, { + Name: "LazyQuotes", + Input: `a "word","1"2",a","b`, + Output: [][]string{{`a "word"`, `1"2`, `a"`, `b`}}, +}, { + Name: "BareQuotes", + Input: `a "word","1"2",a"`, + Output: [][]string{{`a "word"`, `1"2`, `a"`}}, +}, { + Name: "BareDoubleQuotes", + Input: `a""b,c`, + Output: [][]string{{`a""b`, `c`}}, +}, { + Name: "TrimQuote", + Input: `"a"," b",c`, + Output: [][]string{{"a", " b", "c"}}, +}, { + Name: "FieldCount", + Input: "a,b,c\nd,e", + Output: [][]string{{"a", "b", "c"}, {"d", "e"}}, +}, { + Name: "TrailingCommaEOF", + Input: "a,b,c,", + Output: [][]string{{"a", "b", "c", ""}}, +}, { + Name: "TrailingCommaEOL", + Input: "a,b,c,\n", + Output: [][]string{{"a", "b", "c", ""}}, +}, { + Name: "TrailingCommaSpaceEOF", + Input: "a,b,c, ", + Output: [][]string{{"a", "b", "c", " "}}, +}, { + Name: "TrailingCommaSpaceEOL", + Input: "a,b,c, \n", + Output: [][]string{{"a", "b", "c", " "}}, +}, { + Name: "TrailingCommaLine3", + Input: "a,b,c\nd,e,f\ng,hi,", + Output: [][]string{{"a", "b", "c"}, {"d", "e", "f"}, {"g", "hi", ""}}, +}, { + Name: "NotTrailingComma3", + Input: "a,b,c, \n", + Output: [][]string{{"a", "b", "c", " "}}, +}, { + Name: "CommaFieldTest", + Input: `x,y,z,w +x,y,z, +x,y,, +x,,, +,,, +"x","y","z","w" +"x","y","z","" +"x","y","","" +"x","","","" +"","","","" +`, + Output: [][]string{ + {"x", "y", "z", "w"}, + {"x", "y", "z", ""}, + {"x", "y", "", ""}, + {"x", "", "", ""}, + {"", "", "", ""}, + {"x", "y", "z", "w"}, + {"x", "y", "z", ""}, + {"x", "y", "", ""}, + {"x", "", "", ""}, + {"", "", "", ""}, + }, +}, { + Name: "TrailingCommaIneffective1", + Input: "a,b,\nc,d,e", + Output: [][]string{ + {"a", "b", ""}, + {"c", "d", "e"}, + }, +}, { + Name: "ReadAllReuseRecord", + Input: "a,b\nc,d", + Output: [][]string{ + {"a", "b"}, + {"c", "d"}, + }, +}, { + Name: "CRLFInQuotedField", // Issue 21201 + Input: "A,\"Hello\r\nHi\",B\r\n", + Output: [][]string{ + {"A", "Hello\nHi", "B"}, + }, +}, { + Name: "BinaryBlobField", // Issue 19410 + Input: "x09\x41\xb4\x1c,aktau", + Output: [][]string{{"x09A\xb4\x1c", "aktau"}}, +}, { + Name: "TrailingCR", + Input: "field1,field2\r", + Output: [][]string{{"field1", "field2"}}, +}, { + Name: "QuotedTrailingCR", + Input: "\"field\"\r", + Output: [][]string{{"field"}}, +}, { + Name: "FieldCR", + Input: "field\rfield\r", + Output: [][]string{{"field\rfield"}}, +}, { + Name: "FieldCRCR", + Input: "field\r\rfield\r\r", + Output: [][]string{{"field\r\rfield\r"}}, +}, { + Name: "FieldCRCRLF", + Input: "field\r\r\nfield\r\r\n", + Output: [][]string{{"field\r"}, {"field\r"}}, +}, { + Name: "FieldCRCRLFCR", + Input: "field\r\r\n\rfield\r\r\n\r", + Output: [][]string{{"field\r"}, {"\rfield\r"}}, +}, { + Name: "FieldCRCRLFCRCR", + Input: "field\r\r\n\r\rfield\r\r\n\r\r", + Output: [][]string{{"field\r"}, {"\r\rfield\r"}, {"\r"}}, +}, { + Name: "MultiFieldCRCRLFCRCR", + Input: "field1,field2\r\r\n\r\rfield1,field2\r\r\n\r\r,", + Output: [][]string{ + {"field1", "field2\r"}, + {"\r\rfield1", "field2\r"}, + {"\r\r", ""}, + }, +}, { + Name: "NonASCIICommaAndComment", + Input: "a£b,c£ \td,e\n€ comment\n", + Output: [][]string{{"a", "b,c", " \td,e"}}, + Comma: '£', + Comment: '€', +}, { + Name: "NonASCIICommaAndCommentWithQuotes", + Input: "a€\" b,\"€ c\nλ comment\n", + Output: [][]string{{"a", " b,", " c"}}, + Comma: '€', + Comment: 'λ', +}, { + // λ and θ start with the same byte. + // This tests that the parser doesn't confuse such characters. + Name: "NonASCIICommaConfusion", + Input: "\"abθcd\"λefθgh", + Output: [][]string{{"abθcd", "efθgh"}}, + Comma: 'λ', + Comment: '€', +}, { + Name: "NonASCIICommentConfusion", + Input: "λ\nλ\nθ\nλ\n", + Output: [][]string{{"λ"}, {"λ"}, {"λ"}}, + Comment: 'θ', +}, { + Name: "QuotedFieldMultipleLF", + Input: "\"\n\n\n\n\"", + Output: [][]string{{"\n\n\n\n"}}, +}, { + Name: "MultipleCRLF", + Input: "\r\n\r\n\r\n\r\n", +}, { + // The implementation may read each line in several chunks if it doesn't fit entirely + // in the read buffer, so we should test the code to handle that condition. + Name: "HugeLines", + Input: strings.Repeat("#ignore\n", 10000) + "" + strings.Repeat("@", 5000) + "," + strings.Repeat("*", 5000), + Output: [][]string{{strings.Repeat("@", 5000), strings.Repeat("*", 5000)}}, + Comment: '#', +}, { + Name: "LazyQuoteWithTrailingCRLF", + Input: "\"foo\"bar\"\r\n", + Output: [][]string{{`foo"bar`}}, +}, { + Name: "DoubleQuoteWithTrailingCRLF", + Input: "\"foo\"\"bar\"\r\n", + Output: [][]string{{`foo"bar`}}, +}, { + Name: "EvenQuotes", + Input: `""""""""`, + Output: [][]string{{`"""`}}, +}, { + Name: "LazyOddQuotes", + Input: `"""""""`, + Output: [][]string{{`"""`}}, +}, { + Name: "BadComma1", + Comma: '\n', + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComma2", + Comma: '\r', + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComma3", + Comma: '"', + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComma4", + Comma: utf8.RuneError, + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComment1", + Comment: '\n', + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComment2", + Comment: '\r', + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadComment3", + Comment: utf8.RuneError, + Error: "invalid CSV field separator or comment delimiter", +}, { + Name: "BadCommaComment", + Comma: 'X', + Comment: 'X', + Error: "invalid CSV field separator or comment delimiter", +}} + +func TestCSVReader(t *testing.T) { + for _, tt := range readTests { + t.Run(tt.Name, func(t *testing.T) { + inputConfig := CSVInputConfig{ + Separator: tt.Comma, + Comment: tt.Comment, + } + if inputConfig.Separator == 0 { + inputConfig.Separator = ',' + } + + var out [][]string + err := validateCSVInputConfig(CSVMode, inputConfig) + if err == nil { + var fields []string + splitter := csvSplitter{ + separator: inputConfig.Separator, + sepLen: utf8.RuneLen(inputConfig.Separator), + comment: inputConfig.Comment, + fields: &fields, + } + scanner := bufio.NewScanner(strings.NewReader(tt.Input)) + scanner.Split(splitter.scan) + scanner.Buffer(make([]byte, inputBufSize), maxRecordLength) + + for scanner.Scan() { + row := make([]string, len(fields)) + copy(row, fields) + out = append(out, row) + + // We don't explicitly check the returned token, but at + // least check it parses to the same row. + if strings.ContainsRune(tt.Input, '\r') { + // But FieldCRCRLF and similar tests don't round-trip + continue + } + token := scanner.Text() + reader := csv.NewReader(strings.NewReader(token)) + reader.Comma = inputConfig.Separator + reader.Comment = inputConfig.Comment + reader.FieldsPerRecord = -1 + reader.LazyQuotes = true + tokenRow, err := reader.Read() + if err != nil { + t.Fatalf("error reparsing token: %v", err) + } + if !reflect.DeepEqual(tokenRow, row) { + t.Fatalf("token mismatch:\ngot %q\nwant %q", tokenRow, row) + } + } + err = scanner.Err() + } + + if tt.Error != "" { + if err == nil { + t.Fatalf("error mismatch:\ngot nil\nwant %q", tt.Error) + } + if err.Error() != tt.Error { + t.Fatalf("error mismatch:\ngot %q\nwant %q", err.Error(), tt.Error) + } + if out != nil { + t.Fatalf("output mismatch:\ngot %q\nwant nil", out) + } + } else { + if err != nil { + t.Fatalf("error mismatch:\ngot %q\nwant nil", err.Error()) + } + if !reflect.DeepEqual(out, tt.Output) { + t.Fatalf("output mismatch:\ngot %q\nwant %q", out, tt.Output) + } + } + }) + } +} diff --git a/src/tool/awk/interp/example_test.go b/src/tool/awk/interp/example_test.go new file mode 100644 index 0000000..7820318 --- /dev/null +++ b/src/tool/awk/interp/example_test.go @@ -0,0 +1,177 @@ +// Don't run these on Windows, because newline handling means they don't pass. + +//go:build !windows +// +build !windows + +package interp_test + +import ( + "fmt" + "strings" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/parser" +) + +func Example() { + input := strings.NewReader("foo bar\n\nbaz buz") + err := interp.Exec("$0 { print $1 }", " ", input, nil) + if err != nil { + fmt.Println(err) + return + } + // Output: + // foo + // baz +} + +func Example_fieldsep() { + // Use ',' as the field separator + input := strings.NewReader("1,2\n3,4") + err := interp.Exec("{ print $1, $2 }", ",", input, nil) + if err != nil { + fmt.Println(err) + return + } + // Output: + // 1 2 + // 3 4 +} + +func Example_program() { + src := "{ print NR, tolower($0) }" + input := "A\naB\nAbC" + + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + fmt.Println(err) + return + } + config := &interp.Config{ + Stdin: strings.NewReader(input), + Vars: []string{"OFS", ":"}, + } + _, err = interp.ExecProgram(prog, config) + if err != nil { + fmt.Println(err) + return + } + // Output: + // 1:a + // 2:ab + // 3:abc +} + +func Example_funcs() { + src := `BEGIN { print sum(), sum(1), sum(2, 3, 4), repeat("xyz", 3) }` + + parserConfig := &parser.ParserConfig{ + Funcs: map[string]interface{}{ + "sum": func(args ...float64) float64 { + sum := 0.0 + for _, a := range args { + sum += a + } + return sum + }, + "repeat": strings.Repeat, + }, + } + prog, err := parser.ParseProgram([]byte(src), parserConfig) + if err != nil { + fmt.Println(err) + return + } + interpConfig := &interp.Config{ + Funcs: parserConfig.Funcs, + } + _, err = interp.ExecProgram(prog, interpConfig) + if err != nil { + fmt.Println(err) + return + } + // Output: + // 0 1 9 xyzxyzxyz +} + +func Example_new() { + // We'll execute this program multiple times on different inputs. + src := `{ print $1, x, $3; x++ }` + + // Parse the program and set up the interpreter. + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + fmt.Println(err) + return + } + interpreter, err := interp.New(prog) + if err != nil { + fmt.Println(err) + return + } + + // Run it once on one input. + _, err = interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("one two three"), + Environ: []string{}, // avoid calling os.Environ each time + }) + if err != nil { + fmt.Println(err) + return + } + + // Reset variables and run it again efficiently on a different input (this + // could be from a completely different data source). + interpreter.ResetVars() + _, err = interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("a b c\nd e f\n"), + Environ: []string{}, + }) + if err != nil { + fmt.Println(err) + return + } + + // Run it on another input, this time without resetting variables. + _, err = interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("x y z"), + Environ: []string{}, + }) + if err != nil { + fmt.Println(err) + return + } + + // Output: + // one three + // a c + // d 1 f + // x 2 z +} + +func Example_csv() { + src := `{ total += @"amount" } END { print total }` + input := `# comment +name,amount +Bob,17.50 +Jill,20 +"Boba Fett",100.00 +` + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + fmt.Println(err) + return + } + config := &interp.Config{ + Stdin: strings.NewReader(input), + InputMode: interp.CSVMode, + CSVInput: interp.CSVInputConfig{Comment: '#', Header: true}, + } + _, err = interp.ExecProgram(prog, config) + if err != nil { + fmt.Println(err) + return + } + // Output: + // 137.5 +} diff --git a/src/tool/awk/interp/functions.go b/src/tool/awk/interp/functions.go new file mode 100644 index 0000000..4eff792 --- /dev/null +++ b/src/tool/awk/interp/functions.go @@ -0,0 +1,413 @@ +// Call native Go functions; helpers for some builtin function calls. + +package interp + +import ( + "bytes" + "errors" + "fmt" + "reflect" + "sort" + "strconv" + "strings" + "unicode/utf8" + + "github.com/benhoyt/goawk/internal/ast" + . "github.com/benhoyt/goawk/lexer" +) + +// Call native-defined function with given name and arguments, return +// its return value (or null value if it doesn't return anything). +func (p *interp) callNative(index int, args []value) (value, error) { + f := p.nativeFuncs[index] + minIn := len(f.in) // Minimum number of args we should pass + var variadicType reflect.Type + if f.isVariadic { + variadicType = f.in[len(f.in)-1].Elem() + minIn-- + } + + // Build list of args to pass to function + values := make([]reflect.Value, 0, 7) // up to 7 args won't require heap allocation + for i, a := range args { + var argType reflect.Type + if !f.isVariadic || i < len(f.in)-1 { + argType = f.in[i] + } else { + // Final arg(s) when calling a variadic are all of this type + argType = variadicType + } + values = append(values, p.toNative(a, argType)) + } + // Use zero value for any unspecified args + for i := len(args); i < minIn; i++ { + values = append(values, reflect.Zero(f.in[i])) + } + + // Call Go function, determine return value + outs := f.value.Call(values) + switch len(outs) { + case 0: + // No return value, return null value to AWK + return null(), nil + case 1: + // Single return value + return fromNative(outs[0]), nil + case 2: + // Two-valued return of (scalar, error) + if !outs[1].IsNil() { + return null(), outs[1].Interface().(error) + } + return fromNative(outs[0]), nil + default: + // Should never happen (checked at parse time) + panic(fmt.Sprintf("unexpected number of return values: %d", len(outs))) + } +} + +// Convert from an AWK value to a native Go value +func (p *interp) toNative(v value, typ reflect.Type) reflect.Value { + switch typ.Kind() { + case reflect.Bool: + return reflect.ValueOf(v.boolean()) + case reflect.Int: + return reflect.ValueOf(int(v.num())) + case reflect.Int8: + return reflect.ValueOf(int8(v.num())) + case reflect.Int16: + return reflect.ValueOf(int16(v.num())) + case reflect.Int32: + return reflect.ValueOf(int32(v.num())) + case reflect.Int64: + return reflect.ValueOf(int64(v.num())) + case reflect.Uint: + return reflect.ValueOf(uint(v.num())) + case reflect.Uint8: + return reflect.ValueOf(uint8(v.num())) + case reflect.Uint16: + return reflect.ValueOf(uint16(v.num())) + case reflect.Uint32: + return reflect.ValueOf(uint32(v.num())) + case reflect.Uint64: + return reflect.ValueOf(uint64(v.num())) + case reflect.Float32: + return reflect.ValueOf(float32(v.num())) + case reflect.Float64: + return reflect.ValueOf(v.num()) + case reflect.String: + return reflect.ValueOf(p.toString(v)) + case reflect.Slice: + if typ.Elem().Kind() != reflect.Uint8 { + // Shouldn't happen: prevented by checkNativeFunc + panic(fmt.Sprintf("unexpected argument slice: %s", typ.Elem().Kind())) + } + return reflect.ValueOf([]byte(p.toString(v))) + default: + // Shouldn't happen: prevented by checkNativeFunc + panic(fmt.Sprintf("unexpected argument type: %s", typ.Kind())) + } +} + +// Convert from a native Go value to an AWK value +func fromNative(v reflect.Value) value { + switch v.Kind() { + case reflect.Bool: + return boolean(v.Bool()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return num(float64(v.Int())) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return num(float64(v.Uint())) + case reflect.Float32, reflect.Float64: + return num(v.Float()) + case reflect.String: + return str(v.String()) + case reflect.Slice: + if b, ok := v.Interface().([]byte); ok { + return str(string(b)) + } + // Shouldn't happen: prevented by checkNativeFunc + panic(fmt.Sprintf("unexpected return slice: %s", v.Type().Elem().Kind())) + default: + // Shouldn't happen: prevented by checkNativeFunc + panic(fmt.Sprintf("unexpected return type: %s", v.Kind())) + } +} + +// Used for caching native function type information on init +type nativeFunc struct { + isVariadic bool + in []reflect.Type + value reflect.Value +} + +// Check and initialize native functions +func (p *interp) initNativeFuncs(funcs map[string]interface{}) error { + for name, f := range funcs { + err := checkNativeFunc(name, f) + if err != nil { + return err + } + } + + // Sort functions by name, then use those indexes to build slice + // (this has to match how the parser sets the indexes). + names := make([]string, 0, len(funcs)) + for name := range funcs { + names = append(names, name) + } + sort.Strings(names) + p.nativeFuncs = make([]nativeFunc, len(names)) + for i, name := range names { + f := funcs[name] + typ := reflect.TypeOf(f) + in := make([]reflect.Type, typ.NumIn()) + for j := 0; j < len(in); j++ { + in[j] = typ.In(j) + } + p.nativeFuncs[i] = nativeFunc{ + isVariadic: typ.IsVariadic(), + in: in, + value: reflect.ValueOf(f), + } + } + return nil +} + +// Got this trick from the Go stdlib text/template source +var errorType = reflect.TypeOf((*error)(nil)).Elem() + +// Check that native function with given name is okay to call from +// AWK, return an *interp.Error if not. This checks that f is actually +// a function, and that its parameter and return types are good. +func checkNativeFunc(name string, f interface{}) error { + if KeywordToken(name) != ILLEGAL { + return newError("can't use keyword %q as native function name", name) + } + + typ := reflect.TypeOf(f) + if typ.Kind() != reflect.Func { + return newError("native function %q is not a function", name) + } + for i := 0; i < typ.NumIn(); i++ { + param := typ.In(i) + if typ.IsVariadic() && i == typ.NumIn()-1 { + param = param.Elem() + } + if !validNativeType(param) { + return newError("native function %q param %d is not int or string", name, i) + } + } + + switch typ.NumOut() { + case 0: + // No return value is fine + case 1: + // Single scalar return value is fine + if !validNativeType(typ.Out(0)) { + return newError("native function %q return value is not int or string", name) + } + case 2: + // Returning (scalar, error) is handled too + if !validNativeType(typ.Out(0)) { + return newError("native function %q first return value is not int or string", name) + } + if typ.Out(1) != errorType { + return newError("native function %q second return value is not an error", name) + } + default: + return newError("native function %q returns more than two values", name) + } + return nil +} + +// Return true if typ is a valid parameter or return type. +func validNativeType(typ reflect.Type) bool { + switch typ.Kind() { + case reflect.Bool: + return true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return true + case reflect.Float32, reflect.Float64: + return true + case reflect.String: + return true + case reflect.Slice: + // Only allow []byte (convert to string in AWK) + return typ.Elem().Kind() == reflect.Uint8 + default: + return false + } +} + +// Guts of the split() function +func (p *interp) split(s string, scope ast.VarScope, index int, fs string) (int, error) { + var parts []string + if fs == " " { + parts = strings.Fields(s) + } else if s == "" { + // Leave parts 0 length on empty string + } else if utf8.RuneCountInString(fs) <= 1 { + parts = strings.Split(s, fs) + } else { + re, err := p.compileRegex(fs) + if err != nil { + return 0, err + } + parts = re.Split(s, -1) + } + array := make(map[string]value, len(parts)) + for i, part := range parts { + array[strconv.Itoa(i+1)] = numStr(part) + } + p.arrays[p.arrayIndex(scope, index)] = array + return len(array), nil +} + +// Guts of the sub() and gsub() functions +func (p *interp) sub(regex, repl, in string, global bool) (out string, num int, err error) { + re, err := p.compileRegex(regex) + if err != nil { + return "", 0, err + } + count := 0 + out = re.ReplaceAllStringFunc(in, func(s string) string { + // Only do the first replacement for sub(), or all for gsub() + if !global && count > 0 { + return s + } + count++ + // Handle & (ampersand) properly in replacement string + r := make([]byte, 0, 64) // Up to 64 byte replacement won't require heap allocation + for i := 0; i < len(repl); i++ { + switch repl[i] { + case '&': + r = append(r, s...) + case '\\': + i++ + if i < len(repl) { + switch repl[i] { + case '&': + r = append(r, '&') + case '\\': + r = append(r, '\\') + default: + r = append(r, '\\', repl[i]) + } + } else { + r = append(r, '\\') + } + default: + r = append(r, repl[i]) + } + } + return string(r) + }) + return out, count, nil +} + +type cachedFormat struct { + format string + types []byte +} + +// Parse given sprintf format string into Go format string, along with +// type conversion specifiers. Output is memoized in a simple cache +// for performance. +func (p *interp) parseFmtTypes(s string) (format string, types []byte, err error) { + if item, ok := p.formatCache[s]; ok { + return item.format, item.types, nil + } + + out := []byte(s) + for i := 0; i < len(s); i++ { + if s[i] == '%' { + i++ + if i >= len(s) { + return "", nil, errors.New("expected type specifier after %") + } + if s[i] == '%' { + continue + } + for i < len(s) && bytes.IndexByte([]byte(" .-+*#0123456789"), s[i]) >= 0 { + if s[i] == '*' { + types = append(types, 'd') + } + i++ + } + if i >= len(s) { + return "", nil, errors.New("expected type specifier after %") + } + var t byte + switch s[i] { + case 's': + t = 's' + case 'd', 'i', 'o', 'x', 'X': + t = 'd' + case 'f', 'e', 'E', 'g', 'G': + t = 'f' + case 'u': + t = 'u' + out[i] = 'd' + case 'c': + t = 'c' + out[i] = 's' + default: + return "", nil, fmt.Errorf("invalid format type %q", s[i]) + } + types = append(types, t) + } + } + + // Dumb, non-LRU cache: just cache the first N formats + format = string(out) + if len(p.formatCache) < maxCachedFormats { + p.formatCache[s] = cachedFormat{format, types} + } + return format, types, nil +} + +// Guts of sprintf() function (also used by "printf" statement) +func (p *interp) sprintf(format string, args []value) (string, error) { + format, types, err := p.parseFmtTypes(format) + if err != nil { + return "", newError("format error: %s", err) + } + if len(types) > len(args) { + return "", newError("format error: got %d args, expected %d", len(args), len(types)) + } + converted := make([]interface{}, 0, 7) // up to 7 args won't require heap allocation + for i, t := range types { + a := args[i] + var v interface{} + switch t { + case 's': + v = p.toString(a) + case 'd': + v = int(a.num()) + case 'f': + v = a.num() + case 'u': + v = uint(a.num()) + case 'c': + var c []byte + n, isStr := a.isTrueStr() + if isStr { + s := p.toString(a) + if len(s) > 0 { + c = []byte{s[0]} + } else { + c = []byte{0} + } + } else { + // Follow the behaviour of awk and mawk, where %c + // operates on bytes (0-255), not Unicode codepoints + c = []byte{byte(n)} + } + v = c + } + converted = append(converted, v) + } + return fmt.Sprintf(format, converted...), nil +} diff --git a/src/tool/awk/interp/fuzz_test.go b/src/tool/awk/interp/fuzz_test.go new file mode 100644 index 0000000..e402b38 --- /dev/null +++ b/src/tool/awk/interp/fuzz_test.go @@ -0,0 +1,107 @@ +// Fuzz tests for use with the Go 1.18 fuzzer. + +//go:build go1.18 +// +build go1.18 + +package interp_test + +import ( + "context" + "fmt" + "io/ioutil" + "strings" + "testing" + "time" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/parser" +) + +func isFuzzTest(test interpTest) bool { + return test.err == "" && test.awkErr == "" && !strings.Contains(test.src, "!fuzz") +} + +func FuzzSource(f *testing.F) { + for _, test := range interpTests { + if isFuzzTest(test) { + f.Add(test.src) + } + } + + f.Fuzz(func(t *testing.T, src string) { + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + return + } + interpreter, err := interp.New(prog) + if err != nil { + f.Fatalf("interp.New error: %v", err) + } + config := interp.Config{ + Stdin: strings.NewReader("foo bar\nbazz\n"), + Output: ioutil.Discard, + Error: ioutil.Discard, + NoExec: true, + NoFileWrites: true, + NoFileReads: true, + Environ: []string{}, + } + ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) + defer cancel() + _, _ = interpreter.ExecuteContext(ctx, &config) + }) +} + +func FuzzInput(f *testing.F) { + f.Add("") + added := make(map[string]bool) + for _, test := range interpTests { + if test.in != "" && !added[test.in] { + f.Add(test.in) + added[test.in] = true + } + } + + prog, err := parser.ParseProgram([]byte(`{ print $0, $3, $1, $10 }`), nil) + if err != nil { + f.Fatalf("parse error: %v", err) + } + + interpreter, err := interp.New(prog) + if err != nil { + f.Fatalf("interp.New error: %v", err) + } + + var vars = [][]string{ + {"FS", " ", "RS", "\n"}, + {"FS", ",", "RS", "\n"}, + {"FS", "\t", "RS", "\n"}, + {"FS", "@+", "RS", "\n"}, + {"FS", "\n", "RS", ""}, + {"FS", " ", "RS", "X+"}, + } + + f.Fuzz(func(t *testing.T, in string) { + for _, v := range vars { + t.Run(fmt.Sprintf("Vars=%q", v), func(t *testing.T) { + interpreter.ResetVars() + config := interp.Config{ + Stdin: strings.NewReader(in), + Output: ioutil.Discard, + Error: ioutil.Discard, + Vars: v, + NoExec: true, + NoFileWrites: true, + NoFileReads: true, + Environ: []string{}, + } + ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) + defer cancel() + _, err := interpreter.ExecuteContext(ctx, &config) + if err != nil { + t.Fatalf("execute error: %v", err) + } + }) + } + }) +} diff --git a/src/tool/awk/interp/fuzz_unexported_test.go b/src/tool/awk/interp/fuzz_unexported_test.go new file mode 100644 index 0000000..abd3a75 --- /dev/null +++ b/src/tool/awk/interp/fuzz_unexported_test.go @@ -0,0 +1,75 @@ +// Fuzz tests for unexported functions for use with the Go 1.18 fuzzer. + +//go:build go1.18 +// +build go1.18 + +package interp + +import ( + "math" + "strconv" + "strings" + "testing" +) + +func FuzzParseFloatPrefix(f *testing.F) { + f.Add("") + f.Add("foo") + f.Add("The quick.") + f.Add("0") + f.Add("9") + f.Add("1.3e4") + f.Add("1.3E0") + f.Add("1.3e+5") + f.Add("1.3e-5") + f.Add("1E1000") + f.Add(" 1234 ") + f.Add("1234xyz") + f.Add("-1234567890") + f.Add("0x0") + f.Add("0X10") + f.Add("0x1234567890") + f.Add("0xabcdef") + f.Add("0xABCDEF") + f.Add("-0xa") + f.Add("+0XA") + f.Add("0xf.f") + f.Add("0xf.fp10") + f.Add("0xf.fp-10") + f.Add("0x.f") + f.Add("0xf.") + f.Add("0x.") + f.Add("nan") + f.Add("+nan") + f.Add("-nan") + f.Add("NAN") + f.Add("inf") + f.Add("+inf") + f.Add("-inf") + f.Add("INF") + + f.Fuzz(func(t *testing.T, in string) { + nPrefix := parseFloatPrefix(in) + if nPrefix != 0 { + for i := 1; i <= len(in); i++ { + n, _ := parseFloatHelper(in[:i]) + if n == nPrefix || math.IsNaN(n) && math.IsNaN(nPrefix) { + return + } + } + t.Fatalf("no ParseFloat match: %q", in) + } + }) +} + +func parseFloatHelper(s string) (float64, error) { + s = strings.TrimSpace(s) + s = strings.ToLower(s) + if s == "+nan" || s == "-nan" { + return math.NaN(), nil + } + if strings.Contains(s, "0x") && strings.IndexAny(s, "pP") < 0 { + s += "p0" + } + return strconv.ParseFloat(s, 64) +} diff --git a/src/tool/awk/interp/interp.go b/src/tool/awk/interp/interp.go new file mode 100644 index 0000000..8a2324b --- /dev/null +++ b/src/tool/awk/interp/interp.go @@ -0,0 +1,1095 @@ +// Package interp is the GoAWK interpreter. +// +// For basic usage, use the Exec function. For more complicated use +// cases and configuration options, first use the parser package to +// parse the AWK source, and then use ExecProgram to execute it with +// a specific configuration. +// +// If you need to re-run the same parsed program repeatedly on different +// inputs or with different variables, use New to instantiate an Interpreter +// and then call the Interpreter.Execute method as many times as you need. +package interp + +import ( + "bufio" + "bytes" + "context" + "errors" + "fmt" + "io" + "io/ioutil" + "math" + "math/rand" + "os" + "os/exec" + "regexp" + "runtime" + "strconv" + "strings" + "unicode/utf8" + + "github.com/benhoyt/goawk/internal/ast" + "github.com/benhoyt/goawk/internal/compiler" + "github.com/benhoyt/goawk/parser" +) + +var ( + errExit = errors.New("exit") + errBreak = errors.New("break") + errNext = errors.New("next") + + errCSVSeparator = errors.New("invalid CSV field separator or comment delimiter") + + crlfNewline = runtime.GOOS == "windows" + varRegex = regexp.MustCompile(`^([_a-zA-Z][_a-zA-Z0-9]*)=(.*)`) + + defaultShellCommand = getDefaultShellCommand() +) + +// Error (actually *Error) is returned by Exec and Eval functions on +// interpreter error, for example FS being set to an invalid regex. +type Error struct { + message string +} + +func (e *Error) Error() string { + return e.message +} + +func newError(format string, args ...interface{}) error { + return &Error{fmt.Sprintf(format, args...)} +} + +type returnValue struct { + Value value +} + +func (r returnValue) Error() string { + return "" +} + +type interp struct { + // Input/output + output io.Writer + errorOutput io.Writer + scanner *bufio.Scanner + scanners map[string]*bufio.Scanner + stdin io.Reader + filenameIndex int + hadFiles bool + input io.Reader + inputBuffer []byte + inputStreams map[string]io.ReadCloser + outputStreams map[string]io.WriteCloser + commands map[string]*exec.Cmd + noExec bool + noFileWrites bool + noFileReads bool + shellCommand []string + csvOutput *bufio.Writer + + // Scalars, arrays, and function state + globals []value + stack []value + sp int + frame []value + arrays []map[string]value + localArrays [][]int + callDepth int + nativeFuncs []nativeFunc + + // File, line, and field handling + filename value + line string + lineIsTrueStr bool + lineNum int + fileLineNum int + fields []string + fieldsIsTrueStr []bool + numFields int + haveFields bool + fieldNames []string + fieldIndexes map[string]int + reparseCSV bool + + // Built-in variables + argc int + convertFormat string + outputFormat string + fieldSep string + fieldSepRegex *regexp.Regexp + recordSep string + recordSepRegex *regexp.Regexp + recordTerminator string + outputFieldSep string + outputRecordSep string + subscriptSep string + matchLength int + matchStart int + inputMode IOMode + csvInputConfig CSVInputConfig + outputMode IOMode + csvOutputConfig CSVOutputConfig + + // Parsed program, compiled functions and constants + program *parser.Program + functions []compiler.Function + nums []float64 + strs []string + regexes []*regexp.Regexp + + // Context support (for Interpreter.ExecuteContext) + checkCtx bool + ctx context.Context + ctxDone <-chan struct{} + ctxOps int + + // Misc pieces of state + random *rand.Rand + randSeed float64 + exitStatus int + regexCache map[string]*regexp.Regexp + formatCache map[string]cachedFormat + csvJoinFieldsBuf bytes.Buffer +} + +// Various const configuration. Could make these part of Config if +// we wanted to, but no need for now. +const ( + maxCachedRegexes = 100 + maxCachedFormats = 100 + maxRecordLength = 10 * 1024 * 1024 // 10MB seems like plenty + maxFieldIndex = 1000000 + maxCallDepth = 1000 + initialStackSize = 100 + outputBufSize = 64 * 1024 + inputBufSize = 64 * 1024 +) + +// Config defines the interpreter configuration for ExecProgram. +type Config struct { + // Standard input reader (defaults to os.Stdin) + Stdin io.Reader + + // Writer for normal output (defaults to a buffered version of os.Stdout). + // If you need to write to stdout but want control over the buffer size or + // allocation, wrap os.Stdout yourself and set Output to that. + Output io.Writer + + // Writer for non-fatal error messages (defaults to os.Stderr) + Error io.Writer + + // The name of the executable (accessible via ARGV[0]) + Argv0 string + + // Input arguments (usually filenames): empty slice means read + // only from Stdin, and a filename of "-" means read from Stdin + // instead of a real file. + Args []string + + // List of name-value pairs for variables to set before executing + // the program (useful for setting FS and other built-in + // variables, for example []string{"FS", ",", "OFS", ","}). + Vars []string + + // Map of named Go functions to allow calling from AWK. You need + // to pass this same map to the parser.ParseProgram config. + // + // Functions can have any number of parameters, and variadic + // functions are supported. Functions can have no return values, + // one return value, or two return values (result, error). In the + // two-value case, if the function returns a non-nil error, + // program execution will stop and ExecProgram will return that + // error. + // + // Apart from the error return value, the types supported are + // bool, integer and floating point types (excluding complex), + // and string types (string or []byte). + // + // It's not an error to call a Go function from AWK with fewer + // arguments than it has parameters in Go. In this case, the zero + // value will be used for any additional parameters. However, it + // is a parse error to call a non-variadic function from AWK with + // more arguments than it has parameters in Go. + // + // Functions defined with the "function" keyword in AWK code + // take precedence over functions in Funcs. + Funcs map[string]interface{} + + // Set one or more of these to true to prevent unsafe behaviours, + // useful when executing untrusted scripts: + // + // * NoExec prevents system calls via system() or pipe operator + // * NoFileWrites prevents writing to files via '>' or '>>' + // * NoFileReads prevents reading from files via getline or the + // filenames in Args + NoExec bool + NoFileWrites bool + NoFileReads bool + + // Exec args used to run system shell. Typically, this will + // be {"/bin/sh", "-c"} + ShellCommand []string + + // List of name-value pairs to be assigned to the ENVIRON special + // array, for example []string{"USER", "bob", "HOME", "/home/bob"}. + // If nil (the default), values from os.Environ() are used. + // + // If the script doesn't need environment variables, set Environ to a + // non-nil empty slice, []string{}. + Environ []string + + // Mode for parsing input fields and record: default is to use normal FS + // and RS behaviour. If set to CSVMode or TSVMode, FS and RS are ignored, + // and input records are parsed as comma-separated values or tab-separated + // values, respectively. Parsing is done as per RFC 4180 and the + // "encoding/csv" package, but FieldsPerRecord is not supported, + // LazyQuotes is always on, and TrimLeadingSpace is always off. + // + // You can also enable CSV or TSV input mode by setting INPUTMODE to "csv" + // or "tsv" in Vars or in the BEGIN block (those override this setting). + // + // For further documentation about GoAWK's CSV support, see the full docs: + // https://github.com/benhoyt/goawk/blob/master/csv.md + InputMode IOMode + + // Additional options if InputMode is CSVMode or TSVMode. The zero value + // is valid, specifying a separator of ',' in CSVMode and '\t' in TSVMode. + // + // You can also specify these options by setting INPUTMODE in the BEGIN + // block, for example, to use '|' as the field separator, '#' as the + // comment character, and enable header row parsing: + // + // BEGIN { INPUTMODE="csv separator=| comment=# header" } + CSVInput CSVInputConfig + + // Mode for print output: default is to use normal OFS and ORS + // behaviour. If set to CSVMode or TSVMode, the "print" statement with one + // or more arguments outputs fields using CSV or TSV formatting, + // respectively. Output is written as per RFC 4180 and the "encoding/csv" + // package. + // + // You can also enable CSV or TSV output mode by setting OUTPUTMODE to + // "csv" or "tsv" in Vars or in the BEGIN block (those override this + // setting). + OutputMode IOMode + + // Additional options if OutputMode is CSVMode or TSVMode. The zero value + // is valid, specifying a separator of ',' in CSVMode and '\t' in TSVMode. + // + // You can also specify these options by setting OUTPUTMODE in the BEGIN + // block, for example, to use '|' as the output field separator: + // + // BEGIN { OUTPUTMODE="csv separator=|" } + CSVOutput CSVOutputConfig +} + +// IOMode specifies the input parsing or print output mode. +type IOMode int + +const ( + // DefaultMode uses normal AWK field and record separators: FS and RS for + // input, OFS and ORS for print output. + DefaultMode IOMode = 0 + + // CSVMode uses comma-separated value mode for input or output. + CSVMode IOMode = 1 + + // TSVMode uses tab-separated value mode for input or output. + TSVMode IOMode = 2 +) + +// CSVInputConfig holds additional configuration for when InputMode is CSVMode +// or TSVMode. +type CSVInputConfig struct { + // Input field separator character. If this is zero, it defaults to ',' + // when InputMode is CSVMode and '\t' when InputMode is TSVMode. + Separator rune + + // If nonzero, specifies that lines beginning with this character (and no + // leading whitespace) should be ignored as comments. + Comment rune + + // If true, parse the first row in each input file as a header row (that + // is, a list of field names), and enable the @"field" syntax to get a + // field by name as well as the FIELDS special array. + Header bool +} + +// CSVOutputConfig holds additional configuration for when OutputMode is +// CSVMode or TSVMode. +type CSVOutputConfig struct { + // Output field separator character. If this is zero, it defaults to ',' + // when OutputMode is CSVMode and '\t' when OutputMode is TSVMode. + Separator rune +} + +// ExecProgram executes the parsed program using the given interpreter +// config, returning the exit status code of the program. Error is nil +// on successful execution of the program, even if the program returns +// a non-zero status code. +// +// As of GoAWK version v1.16.0, a nil config is valid and will use the +// defaults (zero values). However, it may be simpler to use Exec in that +// case. +func ExecProgram(program *parser.Program, config *Config) (int, error) { + p := newInterp(program) + err := p.setExecuteConfig(config) + if err != nil { + return 0, err + } + return p.executeAll() +} + +func newInterp(program *parser.Program) *interp { + p := &interp{ + program: program, + functions: program.Compiled.Functions, + nums: program.Compiled.Nums, + strs: program.Compiled.Strs, + regexes: program.Compiled.Regexes, + } + + // Allocate memory for variables and virtual machine stack + p.globals = make([]value, len(program.Scalars)) + p.stack = make([]value, initialStackSize) + p.arrays = make([]map[string]value, len(program.Arrays), len(program.Arrays)+initialStackSize) + for i := 0; i < len(program.Arrays); i++ { + p.arrays[i] = make(map[string]value) + } + + // Initialize defaults + p.regexCache = make(map[string]*regexp.Regexp, 10) + p.formatCache = make(map[string]cachedFormat, 10) + p.randSeed = 1.0 + seed := math.Float64bits(p.randSeed) + p.random = rand.New(rand.NewSource(int64(seed))) + p.convertFormat = "%.6g" + p.outputFormat = "%.6g" + p.fieldSep = " " + p.recordSep = "\n" + p.outputFieldSep = " " + p.outputRecordSep = "\n" + p.subscriptSep = "\x1c" + + p.inputStreams = make(map[string]io.ReadCloser) + p.outputStreams = make(map[string]io.WriteCloser) + p.commands = make(map[string]*exec.Cmd) + p.scanners = make(map[string]*bufio.Scanner) + + return p +} + +func (p *interp) setExecuteConfig(config *Config) error { + if config == nil { + config = &Config{} + } + if len(config.Vars)%2 != 0 { + return newError("length of config.Vars must be a multiple of 2, not %d", len(config.Vars)) + } + if len(config.Environ)%2 != 0 { + return newError("length of config.Environ must be a multiple of 2, not %d", len(config.Environ)) + } + + // Set up I/O mode config (Vars will override) + p.inputMode = config.InputMode + p.csvInputConfig = config.CSVInput + switch p.inputMode { + case CSVMode: + if p.csvInputConfig.Separator == 0 { + p.csvInputConfig.Separator = ',' + } + case TSVMode: + if p.csvInputConfig.Separator == 0 { + p.csvInputConfig.Separator = '\t' + } + case DefaultMode: + if p.csvInputConfig != (CSVInputConfig{}) { + return newError("input mode configuration not valid in default input mode") + } + } + p.outputMode = config.OutputMode + p.csvOutputConfig = config.CSVOutput + switch p.outputMode { + case CSVMode: + if p.csvOutputConfig.Separator == 0 { + p.csvOutputConfig.Separator = ',' + } + case TSVMode: + if p.csvOutputConfig.Separator == 0 { + p.csvOutputConfig.Separator = '\t' + } + case DefaultMode: + if p.csvOutputConfig != (CSVOutputConfig{}) { + return newError("output mode configuration not valid in default output mode") + } + } + + // Set up ARGV and other variables from config + argvIndex := p.program.Arrays["ARGV"] + p.setArrayValue(ast.ScopeGlobal, argvIndex, "0", str(config.Argv0)) + p.argc = len(config.Args) + 1 + for i, arg := range config.Args { + p.setArrayValue(ast.ScopeGlobal, argvIndex, strconv.Itoa(i+1), numStr(arg)) + } + p.filenameIndex = 1 + p.hadFiles = false + for i := 0; i < len(config.Vars); i += 2 { + err := p.setVarByName(config.Vars[i], config.Vars[i+1]) + if err != nil { + return err + } + } + + // After Vars has been handled, validate CSV configuration. + err := validateCSVInputConfig(p.inputMode, p.csvInputConfig) + if err != nil { + return err + } + err = validateCSVOutputConfig(p.outputMode, p.csvOutputConfig) + if err != nil { + return err + } + + // Set up ENVIRON from config or environment variables + environIndex := p.program.Arrays["ENVIRON"] + if config.Environ != nil { + for i := 0; i < len(config.Environ); i += 2 { + p.setArrayValue(ast.ScopeGlobal, environIndex, config.Environ[i], numStr(config.Environ[i+1])) + } + } else { + for _, kv := range os.Environ() { + eq := strings.IndexByte(kv, '=') + if eq >= 0 { + p.setArrayValue(ast.ScopeGlobal, environIndex, kv[:eq], numStr(kv[eq+1:])) + } + } + } + + // Set up system shell command + if len(config.ShellCommand) != 0 { + p.shellCommand = config.ShellCommand + } else { + p.shellCommand = defaultShellCommand + } + + // Set up I/O structures + p.noExec = config.NoExec + p.noFileWrites = config.NoFileWrites + p.noFileReads = config.NoFileReads + p.stdin = config.Stdin + if p.stdin == nil { + p.stdin = os.Stdin + } + p.output = config.Output + if p.output == nil { + p.output = bufio.NewWriterSize(os.Stdout, outputBufSize) + } + p.errorOutput = config.Error + if p.errorOutput == nil { + p.errorOutput = os.Stderr + } + + // Initialize native Go functions + if p.nativeFuncs == nil { + err := p.initNativeFuncs(config.Funcs) + if err != nil { + return err + } + } + + return nil +} + +func validateCSVInputConfig(mode IOMode, config CSVInputConfig) error { + if mode != CSVMode && mode != TSVMode { + return nil + } + if config.Separator == config.Comment || !validCSVSeparator(config.Separator) || + (config.Comment != 0 && !validCSVSeparator(config.Comment)) { + return errCSVSeparator + } + return nil +} + +func validateCSVOutputConfig(mode IOMode, config CSVOutputConfig) error { + if mode != CSVMode && mode != TSVMode { + return nil + } + if !validCSVSeparator(config.Separator) { + return errCSVSeparator + } + return nil +} + +func validCSVSeparator(r rune) bool { + return r != 0 && r != '"' && r != '\r' && r != '\n' && utf8.ValidRune(r) && r != utf8.RuneError +} + +func (p *interp) executeAll() (int, error) { + defer p.closeAll() + + // Execute the program: BEGIN, then pattern/actions, then END + err := p.execute(p.program.Compiled.Begin) + if err != nil && err != errExit { + if p.checkCtx { + ctxErr := p.checkContextNow() + if ctxErr != nil { + return 0, ctxErr + } + } + return 0, err + } + if p.program.Actions == nil && p.program.End == nil { + return p.exitStatus, nil // only BEGIN specified, don't process input + } + if err != errExit { + err = p.execActions(p.program.Compiled.Actions) + if err != nil && err != errExit { + if p.checkCtx { + ctxErr := p.checkContextNow() + if ctxErr != nil { + return 0, ctxErr + } + } + return 0, err + } + } + err = p.execute(p.program.Compiled.End) + if err != nil && err != errExit { + if p.checkCtx { + ctxErr := p.checkContextNow() + if ctxErr != nil { + return 0, ctxErr + } + } + return 0, err + } + return p.exitStatus, nil +} + +// Exec provides a simple way to parse and execute an AWK program +// with the given field separator. Exec reads input from the given +// reader (nil means use os.Stdin) and writes output to stdout (nil +// means use a buffered version of os.Stdout). +func Exec(source, fieldSep string, input io.Reader, output io.Writer) error { + prog, err := parser.ParseProgram([]byte(source), nil) + if err != nil { + return err + } + config := &Config{ + Stdin: input, + Output: output, + Error: ioutil.Discard, + Vars: []string{"FS", fieldSep}, + } + _, err = ExecProgram(prog, config) + return err +} + +// Execute pattern-action blocks (may be multiple) +func (p *interp) execActions(actions []compiler.Action) error { + var inRange []bool +lineLoop: + for { + // Read and setup next line of input + line, err := p.nextLine() + if err == io.EOF { + break + } + if err != nil { + return err + } + p.setLine(line, false) + p.reparseCSV = false + + // Execute all the pattern-action blocks for each line + for i, action := range actions { + // First determine whether the pattern matches + matched := false + switch len(action.Pattern) { + case 0: + // No pattern is equivalent to pattern evaluating to true + matched = true + case 1: + // Single boolean pattern + err := p.execute(action.Pattern[0]) + if err != nil { + return err + } + matched = p.pop().boolean() + case 2: + // Range pattern (matches between start and stop lines) + if inRange == nil { + inRange = make([]bool, len(actions)) + } + if !inRange[i] { + err := p.execute(action.Pattern[0]) + if err != nil { + return err + } + inRange[i] = p.pop().boolean() + } + matched = inRange[i] + if inRange[i] { + err := p.execute(action.Pattern[1]) + if err != nil { + return err + } + inRange[i] = !p.pop().boolean() + } + } + if !matched { + continue + } + + // No action is equivalent to { print $0 } + if len(action.Body) == 0 { + err := p.printLine(p.output, p.line) + if err != nil { + return err + } + continue + } + + // Execute the body statements + err := p.execute(action.Body) + if err == errNext { + // "next" statement skips straight to next line + continue lineLoop + } + if err != nil { + return err + } + } + } + return nil +} + +// Get a special variable by index +func (p *interp) getSpecial(index int) value { + switch index { + case ast.V_NF: + p.ensureFields() + return num(float64(p.numFields)) + case ast.V_NR: + return num(float64(p.lineNum)) + case ast.V_RLENGTH: + return num(float64(p.matchLength)) + case ast.V_RSTART: + return num(float64(p.matchStart)) + case ast.V_FNR: + return num(float64(p.fileLineNum)) + case ast.V_ARGC: + return num(float64(p.argc)) + case ast.V_CONVFMT: + return str(p.convertFormat) + case ast.V_FILENAME: + return p.filename + case ast.V_FS: + return str(p.fieldSep) + case ast.V_OFMT: + return str(p.outputFormat) + case ast.V_OFS: + return str(p.outputFieldSep) + case ast.V_ORS: + return str(p.outputRecordSep) + case ast.V_RS: + return str(p.recordSep) + case ast.V_RT: + return str(p.recordTerminator) + case ast.V_SUBSEP: + return str(p.subscriptSep) + case ast.V_INPUTMODE: + return str(inputModeString(p.inputMode, p.csvInputConfig)) + case ast.V_OUTPUTMODE: + return str(outputModeString(p.outputMode, p.csvOutputConfig)) + default: + panic(fmt.Sprintf("unexpected special variable index: %d", index)) + } +} + +// Set a variable by name (specials and globals only) +func (p *interp) setVarByName(name, value string) error { + index := ast.SpecialVarIndex(name) + if index > 0 { + return p.setSpecial(index, numStr(value)) + } + index, ok := p.program.Scalars[name] + if ok { + p.globals[index] = numStr(value) + return nil + } + // Ignore variables that aren't defined in program + return nil +} + +// Set special variable by index to given value +func (p *interp) setSpecial(index int, v value) error { + switch index { + case ast.V_NF: + numFields := int(v.num()) + if numFields < 0 { + return newError("NF set to negative value: %d", numFields) + } + if numFields > maxFieldIndex { + return newError("NF set too large: %d", numFields) + } + p.ensureFields() + p.numFields = numFields + if p.numFields < len(p.fields) { + p.fields = p.fields[:p.numFields] + p.fieldsIsTrueStr = p.fieldsIsTrueStr[:p.numFields] + } + for i := len(p.fields); i < p.numFields; i++ { + p.fields = append(p.fields, "") + p.fieldsIsTrueStr = append(p.fieldsIsTrueStr, false) + } + p.line = p.joinFields(p.fields) + p.lineIsTrueStr = true + case ast.V_NR: + p.lineNum = int(v.num()) + case ast.V_RLENGTH: + p.matchLength = int(v.num()) + case ast.V_RSTART: + p.matchStart = int(v.num()) + case ast.V_FNR: + p.fileLineNum = int(v.num()) + case ast.V_ARGC: + p.argc = int(v.num()) + case ast.V_CONVFMT: + p.convertFormat = p.toString(v) + case ast.V_FILENAME: + p.filename = v + case ast.V_FS: + p.fieldSep = p.toString(v) + if utf8.RuneCountInString(p.fieldSep) > 1 { // compare to interp.ensureFields + re, err := regexp.Compile(compiler.AddRegexFlags(p.fieldSep)) + if err != nil { + return newError("invalid regex %q: %s", p.fieldSep, err) + } + p.fieldSepRegex = re + } + case ast.V_OFMT: + p.outputFormat = p.toString(v) + case ast.V_OFS: + p.outputFieldSep = p.toString(v) + case ast.V_ORS: + p.outputRecordSep = p.toString(v) + case ast.V_RS: + p.recordSep = p.toString(v) + switch { // compare to interp.newScanner + case len(p.recordSep) <= 1: + // Simple cases use specialized splitters, not regex + case utf8.RuneCountInString(p.recordSep) == 1: + // Multi-byte unicode char falls back to regex splitter + sep := regexp.QuoteMeta(p.recordSep) // not strictly necessary as no multi-byte chars are regex meta chars + p.recordSepRegex = regexp.MustCompile(sep) + default: + re, err := regexp.Compile(compiler.AddRegexFlags(p.recordSep)) + if err != nil { + return newError("invalid regex %q: %s", p.recordSep, err) + } + p.recordSepRegex = re + } + case ast.V_RT: + p.recordTerminator = p.toString(v) + case ast.V_SUBSEP: + p.subscriptSep = p.toString(v) + case ast.V_INPUTMODE: + var err error + p.inputMode, p.csvInputConfig, err = parseInputMode(p.toString(v)) + if err != nil { + return err + } + err = validateCSVInputConfig(p.inputMode, p.csvInputConfig) + if err != nil { + return err + } + case ast.V_OUTPUTMODE: + var err error + p.outputMode, p.csvOutputConfig, err = parseOutputMode(p.toString(v)) + if err != nil { + return err + } + err = validateCSVOutputConfig(p.outputMode, p.csvOutputConfig) + if err != nil { + return err + } + default: + panic(fmt.Sprintf("unexpected special variable index: %d", index)) + } + return nil +} + +// Determine the index of given array into the p.arrays slice. Global +// arrays are just at p.arrays[index], local arrays have to be looked +// up indirectly. +func (p *interp) arrayIndex(scope ast.VarScope, index int) int { + if scope == ast.ScopeGlobal { + return index + } else { + return p.localArrays[len(p.localArrays)-1][index] + } +} + +// Return array with given scope and index. +func (p *interp) array(scope ast.VarScope, index int) map[string]value { + return p.arrays[p.arrayIndex(scope, index)] +} + +// Return local array with given index. +func (p *interp) localArray(index int) map[string]value { + return p.arrays[p.localArrays[len(p.localArrays)-1][index]] +} + +// Set a value in given array by key (index) +func (p *interp) setArrayValue(scope ast.VarScope, arrayIndex int, index string, v value) { + array := p.array(scope, arrayIndex) + array[index] = v +} + +// Get the value of given numbered field, equivalent to "$index" +func (p *interp) getField(index int) value { + if index == 0 { + if p.lineIsTrueStr { + return str(p.line) + } else { + return numStr(p.line) + } + } + p.ensureFields() + if index < 1 { + index = len(p.fields) + 1 + index + if index < 1 { + return str("") + } + } + if index > len(p.fields) { + return str("") + } + if p.fieldsIsTrueStr[index-1] { + return str(p.fields[index-1]) + } else { + return numStr(p.fields[index-1]) + } +} + +// Get the value of a field by name (for CSV/TSV mode), as in @"name". +func (p *interp) getFieldByName(name string) (value, error) { + if p.fieldIndexes == nil { + // Lazily create map of field names to indexes. + if p.fieldNames == nil { + return null(), newError(`@ only supported if header parsing enabled; use -H or add "header" to INPUTMODE`) + } + p.fieldIndexes = make(map[string]int, len(p.fieldNames)) + for i, n := range p.fieldNames { + p.fieldIndexes[n] = i + 1 + } + } + index := p.fieldIndexes[name] + if index == 0 { + return str(""), nil + } + return p.getField(index), nil +} + +// Sets a single field, equivalent to "$index = value" +func (p *interp) setField(index int, value string) error { + if index == 0 { + p.setLine(value, true) + return nil + } + if index > maxFieldIndex { + return newError("field index too large: %d", index) + } + // If there aren't enough fields, add empty string fields in between + p.ensureFields() + if index < 1 { + index = len(p.fields) + 1 + index + if index < 1 { + return nil + } + } + for i := len(p.fields); i < index; i++ { + p.fields = append(p.fields, "") + p.fieldsIsTrueStr = append(p.fieldsIsTrueStr, true) + } + p.fields[index-1] = value + p.fieldsIsTrueStr[index-1] = true + p.numFields = len(p.fields) + p.line = p.joinFields(p.fields) + p.lineIsTrueStr = true + return nil +} + +func (p *interp) joinFields(fields []string) string { + switch p.outputMode { + case CSVMode, TSVMode: + p.csvJoinFieldsBuf.Reset() + _ = p.writeCSV(&p.csvJoinFieldsBuf, fields) + line := p.csvJoinFieldsBuf.Bytes() + line = line[:len(line)-lenNewline(line)] + return string(line) + default: + return strings.Join(fields, p.outputFieldSep) + } +} + +// Convert value to string using current CONVFMT +func (p *interp) toString(v value) string { + return v.str(p.convertFormat) +} + +// Compile regex string (or fetch from regex cache) +func (p *interp) compileRegex(regex string) (*regexp.Regexp, error) { + if re, ok := p.regexCache[regex]; ok { + return re, nil + } + re, err := regexp.Compile(compiler.AddRegexFlags(regex)) + if err != nil { + return nil, newError("invalid regex %q: %s", regex, err) + } + // Dumb, non-LRU cache: just cache the first N regexes + if len(p.regexCache) < maxCachedRegexes { + p.regexCache[regex] = re + } + return re, nil +} + +func getDefaultShellCommand() []string { + executable := "/bin/sh" + if runtime.GOOS == "windows" { + executable = "sh" + } + return []string{executable, "-c"} +} + +func inputModeString(mode IOMode, csvConfig CSVInputConfig) string { + var s string + var defaultSep rune + switch mode { + case CSVMode: + s = "csv" + defaultSep = ',' + case TSVMode: + s = "tsv" + defaultSep = '\t' + case DefaultMode: + return "" + } + if csvConfig.Separator != defaultSep { + s += " separator=" + string([]rune{csvConfig.Separator}) + } + if csvConfig.Comment != 0 { + s += " comment=" + string([]rune{csvConfig.Comment}) + } + if csvConfig.Header { + s += " header" + } + return s +} + +func parseInputMode(s string) (mode IOMode, csvConfig CSVInputConfig, err error) { + fields := strings.Fields(s) + if len(fields) == 0 { + return DefaultMode, CSVInputConfig{}, nil + } + switch fields[0] { + case "csv": + mode = CSVMode + csvConfig.Separator = ',' + case "tsv": + mode = TSVMode + csvConfig.Separator = '\t' + default: + return DefaultMode, CSVInputConfig{}, newError("invalid input mode %q", fields[0]) + } + for _, field := range fields[1:] { + key := field + val := "" + equals := strings.IndexByte(field, '=') + if equals >= 0 { + key = field[:equals] + val = field[equals+1:] + } + switch key { + case "separator": + r, n := utf8.DecodeRuneInString(val) + if n == 0 || n < len(val) { + return DefaultMode, CSVInputConfig{}, newError("invalid CSV/TSV separator %q", val) + } + csvConfig.Separator = r + case "comment": + r, n := utf8.DecodeRuneInString(val) + if n == 0 || n < len(val) { + return DefaultMode, CSVInputConfig{}, newError("invalid CSV/TSV comment character %q", val) + } + csvConfig.Comment = r + case "header": + if val != "" && val != "true" && val != "false" { + return DefaultMode, CSVInputConfig{}, newError("invalid header value %q", val) + } + csvConfig.Header = val == "" || val == "true" + default: + return DefaultMode, CSVInputConfig{}, newError("invalid input mode key %q", key) + } + } + return mode, csvConfig, nil +} + +func outputModeString(mode IOMode, csvConfig CSVOutputConfig) string { + var s string + var defaultSep rune + switch mode { + case CSVMode: + s = "csv" + defaultSep = ',' + case TSVMode: + s = "tsv" + defaultSep = '\t' + case DefaultMode: + return "" + } + if csvConfig.Separator != defaultSep { + s += " separator=" + string([]rune{csvConfig.Separator}) + } + return s +} + +func parseOutputMode(s string) (mode IOMode, csvConfig CSVOutputConfig, err error) { + fields := strings.Fields(s) + if len(fields) == 0 { + return DefaultMode, CSVOutputConfig{}, nil + } + switch fields[0] { + case "csv": + mode = CSVMode + csvConfig.Separator = ',' + case "tsv": + mode = TSVMode + csvConfig.Separator = '\t' + default: + return DefaultMode, CSVOutputConfig{}, newError("invalid output mode %q", fields[0]) + } + for _, field := range fields[1:] { + key := field + val := "" + equals := strings.IndexByte(field, '=') + if equals >= 0 { + key = field[:equals] + val = field[equals+1:] + } + switch key { + case "separator": + r, n := utf8.DecodeRuneInString(val) + if n == 0 || n < len(val) { + return DefaultMode, CSVOutputConfig{}, newError("invalid CSV/TSV separator %q", val) + } + csvConfig.Separator = r + default: + return DefaultMode, CSVOutputConfig{}, newError("invalid output mode key %q", key) + } + } + return mode, csvConfig, nil +} diff --git a/src/tool/awk/interp/interp_test.go b/src/tool/awk/interp/interp_test.go new file mode 100644 index 0000000..f035de2 --- /dev/null +++ b/src/tool/awk/interp/interp_test.go @@ -0,0 +1,2609 @@ +// Tests for GoAWK interpreter. +package interp_test + +import ( + "bytes" + "encoding/csv" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "os/exec" + "reflect" + "runtime" + "strconv" + "strings" + "sync" + "testing" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/parser" +) + +var ( + awkExe string +) + +func TestMain(m *testing.M) { + flag.StringVar(&awkExe, "awk", "gawk", "awk executable name") + flag.Parse() + os.Exit(m.Run()) +} + +type interpTest struct { + src string // if this includes "!awk" or "!gawk" those interpreters won't be run + in string + out string + err string // error from GoAWK must equal this + awkErr string // error from awk/gawk must contain this +} + +// Note: a lot of these are really parser tests too. +var interpTests = []interpTest{ + // BEGIN and END work correctly + {`BEGIN { print "b" }`, "", "b\n", "", ""}, + {`BEGIN { print "b" }`, "foo", "b\n", "", ""}, + {`END { print "e" }`, "", "e\n", "", ""}, + {`END { print "e" }`, "foo", "e\n", "", ""}, + {`BEGIN { print "b"} END { print "e" }`, "", "b\ne\n", "", ""}, + {`BEGIN { print "b"} END { print "e" }`, "foo", "b\ne\n", "", ""}, + {`BEGIN { print "b"} $0 { print NR } END { print "e" }`, "foo", "b\n1\ne\n", "", ""}, + {`BEGIN { printf "x" }; BEGIN { printf "y" }`, "", "xy", "", ""}, + + // Patterns + {`$0`, "foo\n\nbar", "foo\nbar\n", "", ""}, + {`{ print $0 }`, "foo\n\nbar", "foo\n\nbar\n", "", ""}, + {`$1=="foo"`, "foo\n\nbar", "foo\n", "", ""}, + {`$1==42`, "foo\n42\nbar", "42\n", "", ""}, + {`$1=="42"`, "foo\n42\nbar", "42\n", "", ""}, + {`/foo/`, "foo\nx\nfood\nxfooz\nbar", "foo\nfood\nxfooz\n", "", ""}, + {`/foo/ { print NR } /foo/`, "foo\nx\nfood\n", "1\nfoo\n3\nfood\n", "", ""}, + {`NR==2, NR==4`, "1\n2\n3\n4\n5\n6\n", "2\n3\n4\n", "", ""}, + {` +NR==2, NR==4 { print $0 } +NR==3, NR==5 { print NR } +`, "a\nb\nc\nd\ne\nf\ng", "b\nc\n3\nd\n4\n5\n", "", ""}, + + // print and printf statements + {`BEGIN { print "x", "y" }`, "", "x y\n", "", ""}, + {`BEGIN { print OFS; OFS = ","; print "x", "y" }`, "", " \nx,y\n", "", ""}, + {`BEGIN { print ORS; ORS = "."; print "x", "y" }`, "", "\n\nx y.", "", ""}, + {`BEGIN { print ORS; ORS = ""; print "x", "y" }`, "", "\n\nx y", "", ""}, + {`{ print; print }`, "foo", "foo\nfoo\n", "", ""}, + {`BEGIN { print; print }`, "", "\n\n", "", ""}, + {`BEGIN { printf "%% %d %x %c %f %s", 42, 42, 42, 42, 42 }`, "", "% 42 2a * 42.000000 42", "", ""}, + {`BEGIN { printf "%3d", 42 }`, "", " 42", "", ""}, + {`BEGIN { printf "%3s", "x" }`, "", " x", "", ""}, + {`BEGIN { printf "%.1g", 42 } # !windows-gawk`, "", "4e+01", "", ""}, // for some reason gawk gives "4e+001" on Windows + {`BEGIN { printf "%d", 12, 34 }`, "", "12", "", ""}, + {`BEGIN { printf "%d" }`, "", "", "format error: got 0 args, expected 1", "not enough arg"}, + // Our %c handling is mostly like awk's, except for multiples + // 256, where awk is weird, and we're like mawk + {`BEGIN { printf "%c", 0 }`, "", "\x00", "", ""}, + {`BEGIN { printf "%c", 127 }`, "", "\x7f", "", ""}, + {`BEGIN { printf "%c", 128 } # !gawk`, "", "\x80", "", ""}, + {`BEGIN { printf "%c", 255 } # !gawk`, "", "\xff", "", ""}, + {`BEGIN { printf "%c", 256 } # !awk !gawk`, "", "\x00", "", ""}, + {`BEGIN { printf "%c", "xyz" }`, "", "x", "", ""}, + {`BEGIN { printf "%c", "" } # !awk`, "", "\x00", "", ""}, + {`BEGIN { printf } # !awk !posix - doesn't error on this`, "", "", "parse error at 1:16: expected printf args, got none", "printf: no arguments"}, + {`BEGIN { printf("%%%dd", 4) }`, "", "%4d", "", ""}, + + // if and loop statements + {`BEGIN { if (1) print "t"; }`, "", "t\n", "", ""}, + {`BEGIN { if (0) print "t"; }`, "", "", "", ""}, + {`BEGIN { if (1) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (0) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (1==1) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (1==2) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (1!=1) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (1!=2) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (1>2) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (2>1) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (1>2) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (2>1) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (1>=2) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (2>=1) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (1<2) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (2<1) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if (1<=2) print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if (2<=1) print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("a"=="a") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("a"=="b") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("a"!="a") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("a"!="b") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("a">"b") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("b">"a") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("a">"b") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("b">"a") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("a">="b") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("b">="a") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("a"<"b") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("b"<"a") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { if ("a"<="b") print "t"; else print "f" }`, "", "t\n", "", ""}, + {`BEGIN { if ("b"<="a") print "t"; else print "f" }`, "", "f\n", "", ""}, + {`BEGIN { for (;;) { print "x"; break } }`, "", "x\n", "", ""}, + {`BEGIN { for (;;) { printf "%d ", i; i++; if (i>2) break; } }`, "", "0 1 2 ", "", ""}, + {`BEGIN { for (i=5; ; ) { printf "%d ", i; i++; if (i>8) break; } }`, "", "5 6 7 8 ", "", ""}, + {`BEGIN { for (i=5; ; i++) { printf "%d ", i; if (i>8) break; } }`, "", "5 6 7 8 9 ", "", ""}, + {`BEGIN { for (i=5; i<8; i++) { printf "%d ", i } }`, "", "5 6 7 ", "", ""}, + {`BEGIN { for (i=3; i>0; i--) { printf "%d ", i } }`, "", "3 2 1 ", "", ""}, + {`BEGIN { for (i=3; i>=0; i--) { printf "%d ", i } }`, "", "3 2 1 0 ", "", ""}, + {`BEGIN { for (i=0; i<10; i++) { if (i < 5) continue; printf "%d ", i } }`, "", "5 6 7 8 9 ", "", ""}, + {`BEGIN { for (i=0; i<100; i++) s+=i; print s }`, "", "4950\n", "", ""}, + {`BEGIN { a[1]=1; a[2]=1; for (k in a) { s++; break } print s }`, "", "1\n", "", ""}, + {`BEGIN { a[1]=1; a[2]=1; a[3]=1; for (k in a) { if (k==2) continue; s++ } print s }`, "", "2\n", "", ""}, + {`function alen(a, k, n) { n=0; for (k in a) n++; return n } BEGIN { a[1]=1; a[2]=1; print alen(a) }`, "", "2\n", "", ""}, + {`BEGIN { a["x"]=1; for (SUBSEP in a) print SUBSEP, a[SUBSEP] }`, "", "x 1\n", "", ""}, + {`BEGIN { while (i<3) { i++; s++; break } print s }`, "", "1\n", "", ""}, + {`BEGIN { while (i<3) { i++; if (i==2) continue; s++ } print s }`, "", "2\n", "", ""}, + {`BEGIN { do { i++; s++; break } while (i<3); print s }`, "", "1\n", "", ""}, + {`BEGIN { do { i++; if (i==2) continue; s++ } while (i<3); print s }`, "", "2\n", "", ""}, + {`BEGIN { a["x"] = 3; a["y"] = 4; for (k in a) x += a[k]; print x }`, "", "7\n", "", ""}, + {`BEGIN { while (i < 5) { print i; i++ } }`, "", "\n1\n2\n3\n4\n", "", ""}, + {`BEGIN { do { print i; i++ } while (i < 5) }`, "", "\n1\n2\n3\n4\n", "", ""}, + {`BEGIN { for (i=0; i<10; i++); printf "x" }`, "", "x", "", ""}, + {`BEGIN { s="x"; while (s=="x") { print s; s="y" } }`, "", "x\n", "", ""}, + {`BEGIN { s="x"; while (s!="") { print s; s="" } }`, "", "x\n", "", ""}, + {`BEGIN { s="x"; while (s) { print s; s="" } }`, "", "x\n", "", ""}, + // regression tests for break and continue with nested loops + {` +BEGIN { + for (i = 0; i < 1; i++) { + for (j = 0; j < 1; j++) { + print i, j + } + break + } +} +`, "", "0 0\n", "", ""}, + {` +BEGIN { + for (i = 0; i < 1; i++) { + for (j = 0; j < 1; j++) { + print i, j + } + continue + } +} +`, "", "0 0\n", "", ""}, + + // next statement + {`{ if (NR==2) next; print }`, "a\nb\nc", "a\nc\n", "", ""}, + {`{ if (NR==2) f(); print } function f() { next }`, "a\nb\nc", "a\nc\n", "", ""}, + {`BEGIN { next }`, "", "", "parse error at 1:9: next can't be inside BEGIN or END", "BEGIN"}, + {`END { next }`, "", "", "parse error at 1:7: next can't be inside BEGIN or END", "END"}, + + // Arrays, "in", and delete + {`BEGIN { a["x"] = 3; print "x" in a, "y" in a }`, "", "1 0\n", "", ""}, + {`BEGIN { a["x"] = 3; a["y"] = 4; delete a["x"]; for (k in a) print k, a[k] }`, "", "y 4\n", "", ""}, + {`BEGIN { a["x"] = 3; a["y"] = 4; for (k in a) delete a[k]; for (k in a) print k, a[k] }`, "", "", "", ""}, + {`BEGIN { a["x"]; "y" in a; for (k in a) print k, a[k] }`, "", "x \n", "", ""}, + {`BEGIN { a[] }`, "", "", "parse error at 1:11: expected expression instead of ]", "syntax error"}, + {`BEGIN { delete a[] }`, "", "", "parse error at 1:18: expected expression instead of ]", "syntax error"}, + {`BEGIN { a["x"] = 3; a["y"] = 4; delete a; for (k in a) print k, a[k] }`, "", "", "", ""}, + {`function f(a) { print "x" in a, "y" in a } BEGIN { b["x"] = 3; f(b) }`, "", "1 0\n", "", ""}, + + // Unary expressions: ! + - + {`BEGIN { print !42, !1, !0, !!42, !!1, !!0 }`, "", "0 0 1 1 1 0\n", "", ""}, + {`BEGIN { print !42, !1, !0, !!42, !!1, !!0 }`, "", "0 0 1 1 1 0\n", "", ""}, + {`BEGIN { print +4, +"3", +0, +-3, -3, - -4, -"3" }`, "", "4 3 0 -3 -3 4 -3\n", "", ""}, + {`BEGIN { $0="0"; print !$0 }`, "", "0\n", "", ""}, + {`BEGIN { $0="1"; print !$0 }`, "", "0\n", "", ""}, + {`{ print !$0 }`, "0\n", "1\n", "", ""}, + {`{ print !$0 }`, "1\n", "0\n", "", ""}, + {`!seen[$0]++`, "1\n2\n3\n2\n3\n3\n", "1\n2\n3\n", "", ""}, + {`!seen[$0]--`, "1\n2\n3\n2\n3\n3\n", "1\n2\n3\n", "", ""}, + + // Comparison expressions: == != < <= > >= + {`BEGIN { print (1==1, 1==0, "1"==1, "1"==1.0) }`, "", "1 0 1 1\n", "", ""}, + {`{ print ($0=="1", $0==1) }`, "1\n1.0\n+1", "1 1\n0 1\n0 1\n", "", ""}, + {`{ print ($1=="1", $1==1) }`, "1\n1.0\n+1", "1 1\n0 1\n0 1\n", "", ""}, + {`BEGIN { print (1!=1, 1!=0, "1"!=1, "1"!=1.0) }`, "", "0 1 0 0\n", "", ""}, + {`{ print ($0!="1", $0!=1) }`, "1\n1.0\n+1", "0 0\n1 0\n1 0\n", "", ""}, + {`{ print ($1!="1", $1!=1) }`, "1\n1.0\n+1", "0 0\n1 0\n1 0\n", "", ""}, + {`BEGIN { print (0<1, 1<1, 2<1, "12"<"2") }`, "", "1 0 0 1\n", "", ""}, + {`{ print ($1<2) }`, "1\n1.0\n+1", "1\n1\n1\n", "", ""}, + {`BEGIN { print (0<=1, 1<=1, 2<=1, "12"<="2") }`, "", "1 1 0 1\n", "", ""}, + {`{ print ($1<=2) }`, "1\n1.0\n+1", "1\n1\n1\n", "", ""}, + {`BEGIN { print (0>1, 1>1, 2>1, "12">"2") }`, "", "0 0 1 0\n", "", ""}, + {`{ print ($1>2) }`, "1\n1.0\n+1", "0\n0\n0\n", "", ""}, + {`BEGIN { print (0>=1, 1>=1, 2>=1, "12">="2") }`, "", "0 1 1 0\n", "", ""}, + {`{ print ($1>=2) }`, "1\n1.0\n+1", "0\n0\n0\n", "", ""}, + {`{ print($0<2) }`, "10", "0\n", "", ""}, + {`{ print($1<2) }`, "10", "0\n", "", ""}, + {`{ print($1<2) }`, "10x", "1\n", "", ""}, + {`BEGIN { $0="10"; print($0<2) }`, "", "1\n", "", ""}, + {`BEGIN { $1="10"; print($1<2) }`, "", "1\n", "", ""}, + {`BEGIN { $1="10x"; print($1<2) }`, "", "1\n", "", ""}, + + // Short-circuit && and || operators + {` +function t() { print "t"; return 2 } +function f() { print "f"; return 0 } +BEGIN { + print f() && f() + print f() && t() + print t() && f() + print t() && t() +} +`, "", "f\n0\nf\n0\nt\nf\n0\nt\nt\n1\n", "", ""}, + {` +function t() { print "t"; return 2 } +function f() { print "f"; return 0 } +BEGIN { + print f() || f() + print f() || t() + print t() || f() + print t() || t() +} +`, "", "f\nf\n0\nf\nt\n1\nt\n1\nt\n1\n", "", ""}, + {`BEGIN { print 0&&0, 0&&2, 2&&0, 2&&2 }`, "", "0 0 0 1\n", "", ""}, + {`BEGIN { print 0||0, 0||2, 2||0, 2||2 }`, "", "0 1 1 1\n", "", ""}, + + // Other binary expressions: + - * ^ ** / % CONCAT ~ !~ + {`BEGIN { print 1+2, 1+2+3, 1+-2, -1+2, "1"+"2", 3+.14 }`, "", "3 6 -1 1 3 3.14\n", "", ""}, + {`BEGIN { print 1-2, 1-2-3, 1-+2, -1-2, "1"-"2", 3-.14 }`, "", "-1 -4 -1 -3 -1 2.86\n", "", ""}, + {`BEGIN { print 2*3, 2*3*4, 2*-3, -2*3, "2"*"3", 3*.14 }`, "", "6 24 -6 -6 6 0.42\n", "", ""}, + {`BEGIN { print 2/3, 2/3/4, 2/-3, -2/3, "2"/"3", 3/.14 }`, "", "0.666667 0.166667 -0.666667 -0.666667 0.666667 21.4286\n", "", ""}, + {`BEGIN { print 2%3, 2%3%4, 2%-3, -2%3, "2"%"3", 3%.14 }`, "", "2 2 2 -2 2 0.06\n", "", ""}, + {`BEGIN { print 2^3, 2^3^3, 2^-3, -2^3, "2"^"3", 3^.14 }`, "", "8 134217728 0.125 -8 8 1.16626\n", "", ""}, + {`BEGIN { print 2**3, 2**3**3, 2**-3, -2**3, "2"**"3", 3**.14 } # !posix`, "", "8 134217728 0.125 -8 8 1.16626\n", "", ""}, + {`BEGIN { print 1 2, "x" "yz", 1+2 3+4 }`, "", "12 xyz 37\n", "", ""}, + {`BEGIN { print "food"~/oo/, "food"~/[oO]+d/, "food"~"f", "food"~"F", "food"~0 }`, "", "1 1 1 0 0\n", "", ""}, + {`BEGIN { print "food"!~/oo/, "food"!~/[oO]+d/, "food"!~"f", "food"!~"F", "food"!~0 }`, "", "0 0 0 1 1\n", "", ""}, + {`BEGIN { print 1+2*3/4^5%6 7, (1+2)*3/4^5%6 "7" }`, "", "1.005867 0.008789067\n", "", ""}, + {`BEGIN { print 1/0 }`, "", "", "division by zero", "division by zero"}, + {`BEGIN { print 1%0 }`, "", "", "division by zero in mod", "division by zero"}, + {`BEGIN { x /= 0 }`, "", "", "division by zero", "division by zero"}, + {`BEGIN { x %= 0 }`, "", "", "division by zero in mod", "division by zero"}, + + // Number, string, and regex expressions + {`BEGIN { print 1, 1., .1, 1e0, -1, 1e }`, "", "1 1 0.1 1 -1 1\n", "", ""}, + {`BEGIN { print '\"' '\'' 'xy' "z" "'" '\"' }`, "", "\"'xyz'\"\n", "", "syntax error"}, // Check support for single-quoted strings + {`BEGIN { print "0\n1\t2\r3\a4\b5\f6\v7\x408\xf" } # !posix`, "", "0\n1\t2\r3\a4\b5\f6\v7@8\x0f\n", "", ""}, + {`{ print /foo/ }`, "food\nfoo\nxfooz\nbar\n", "1\n1\n1\n0\n", "", ""}, + {`/[a-/`, "foo", "", "parse error at 1:1: error parsing regexp: missing closing ]: `[a-`", "terminated"}, + {`/=foo/`, "=foo", "=foo\n", "", ""}, + {`BEGIN { RS="x" } /^a.*c$/`, "a\nb\nc", "a\nb\nc\n", "", ""}, + {`BEGIN { print "-12"+0, "+12"+0, " \t\r\n7foo"+0, ".5"+0, "5."+0, "+."+0 }`, "", "-12 12 7 0.5 5 0\n", "", ""}, + {`BEGIN { print "1e3"+0, "1.2e-1"+0, "1e+1"+0, "1e"+0, "1e+"+0 }`, "", "1000 0.12 10 1 1\n", "", ""}, + {`BEGIN { print -(11102200000000000000000000000000000000 1040000) } # !gawk - gawk supports big numbers`, + "", "-inf\n", "", ""}, + {`BEGIN { print atan2(0, 8020020000000e20G-0)}`, "", "0\n", "", ""}, + {`BEGIN { print 1e1000, -1e1000 } # !gawk`, "", "inf -inf\n", "", ""}, + {`BEGIN { printf "\x0.\x00.\x0A\x10\xff\xFF\x41" } # !awk !posix`, "", "\x00.\x00.\n\x10\xff\xffA", "", ""}, + {`BEGIN { printf "\x1.\x01.\x0A\x10\xff\xFF\x41" } # !posix`, "", "\x01.\x01.\n\x10\xff\xffA", "", ""}, + {`BEGIN { printf "\0\78\7\77\777\0 \141 " } # !awk`, "", "\x00\a8\a?\xff\x00 a ", "", ""}, + {`BEGIN { printf "\1\78\7\77\777\1 \141 " }`, "", "\x01\a8\a?\xff\x01 a ", "", ""}, + + // Unusual number/exponent handling + {`BEGIN { e="x"; E="X"; print 1e, 1E }`, "", "1x 1X\n", "", ""}, + {`BEGIN { e="x"; E="X"; print 1e1e, 1E1E }`, "", "10x 10X\n", "", ""}, + {`BEGIN { a=2; print 1e+a, 1E+a, 1e+1, 1E+1 }`, "", "12 12 10 10\n", "", ""}, + {`BEGIN { a=2; print 1e-a, 1E-a, 1e-1, 1E-1 }`, "", "1-2 1-2 0.1 0.1\n", "", ""}, + {`BEGIN { print 1e+ }`, "", "", "parse error at 1:19: expected expression instead of }", "syntax error"}, + {`BEGIN { print 1e- }`, "", "", "parse error at 1:19: expected expression instead of }", "syntax error"}, + + // Conditional ?: expression + {`{ print /x/?"t":"f" }`, "x\ny\nxx\nz\n", "t\nf\nt\nf\n", "", ""}, + {`BEGIN { print 1?2?3:4:5, 1?0?3:4:5, 0?2?3:4:5 }`, "", "3 4 5\n", "", ""}, + {`BEGIN { $0="0"; print ($0?1:0) }`, "", "1\n", "", ""}, + {`{ print $0?1:0 }`, "0\n", "0\n", "", ""}, + {`{ print $0?1:0 }`, "1\n", "1\n", "", ""}, + {`BEGIN { $0="1"; print ($0?1:0) }`, "", "1\n", "", ""}, + {`BEGIN { print 0?1:0, 1?1:0, ""?1:0, "0"?1:0, "1"?1:0, x?1:0 }`, "", "0 1 0 1 1 0\n", "", ""}, + + // Built-in variables + {`BEGIN { print ARGC; ARGC=42; print ARGC } # !gawk`, "", "1\n42\n", "", ""}, // ARGC is properly tested in goawk_test.go + {` +BEGIN { + print CONVFMT, 1.2345678 "" + CONVFMT = "%.3g" + print CONVFMT, 1.234567 "" +}`, "", "%.6g 1.23457\n%.3g 1.23\n", "", ""}, + {`BEGIN { FILENAME = "foo"; print FILENAME }`, "", "foo\n", "", ""}, + {`BEGIN { FILENAME = "123.0"; print (FILENAME==123) }`, "", "0\n", "", ""}, + // Other FILENAME behaviour is tested in goawk_test.go + {`BEGIN { FNR = 123; print FNR }`, "", "123\n", "", ""}, + {`{ print FNR, $0 }`, "a\nb\nc", "1 a\n2 b\n3 c\n", "", ""}, + {`{ print NR, FNR } END { print NR, FNR }`, "a\nb\nc\n", "1 1\n2 2\n3 3\n3 3\n", "", ""}, + // Other FNR behaviour is tested in goawk_test.go + {`BEGIN { print "|" FS "|"; FS="," } { print $1, $2 }`, "a b\na,b\nx,,y", "| |\na b \na b\nx \n", "", ""}, + {`BEGIN { print "|" FS "|"; FS="\\." } { print $1, $2 }`, "a b\na.b\nx..y", "| |\na b \na b\nx \n", "", ""}, + // ASCII unit and record separator + {`BEGIN { FS="\x1f"; RS="\x1e"; OFS="," } { print $1, $2, $3 } # !posix`, + "id\x1fname\x1fage\x1e1\x1fBob \"Billy\" Smith\x1f42\x1e2\x1fJane\nBrown\x1f37", + "id,name,age\n1,Bob \"Billy\" Smith,42\n2,Jane\nBrown,37\n", "", ""}, + // Unicode unit and record separator (skip on Windows under gawk due to Unicode command line issues) + {`BEGIN { FS="âŸ"; RS="âž"; OFS="," } { print $1, $2, $3 } # !windows-gawk !posix`, + "idâŸnameâŸageâž1âŸBob \"Billy\" SmithâŸ42âž2âŸJane\nBrownâŸ37", + "id,name,age\n1,Bob \"Billy\" Smith,42\n2,Jane\nBrown,37\n", "", ""}, + {`BEGIN { FS="\\" } { print $1, $2 }`, "a\\b", "a b\n", "", ""}, + {`BEGIN { RS="x"; FS=",.*," } { for (i=1; i<=NF; i++) print $i }`, "one,\n,two", "one\ntwo\n", "", ""}, + {`BEGIN { FS="x"; RS=",.*," } { print } # !posix`, "one,\n,two", "one\ntwo\n", "", ""}, + {`{ print NF }`, "\na\nc d\ne f g", "0\n1\n2\n3\n", "", ""}, + {`BEGIN { NR = 123; print NR }`, "", "123\n", "", ""}, + {`{ print NR, $0 }`, "a\nb\nc", "1 a\n2 b\n3 c\n", "", ""}, + {` +BEGIN { + print OFMT, 1.2345678 + OFMT = "%.3g" + print OFMT, 1.234567 +}`, "", "%.6g 1.23457\n%.3g 1.23\n", "", ""}, + // OFS and ORS are tested above + {`BEGIN { print RSTART, RLENGTH; RSTART=5; RLENGTH=42; print RSTART, RLENGTH; } `, "", + "0 0\n5 42\n", "", ""}, + {`BEGIN { print RS }`, "", "\n\n", "", ""}, + {`BEGIN { print RS; RS="|"; print RS } { print }`, "a b|c d|", "\n\n|\na b\nc d\n", "", ""}, + {`BEGIN { RS=""; FS="\n" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) print $i }`, + "a\n\nb\nc", + "1 (1):\na\n2 (2):\nb\nc\n", "", ""}, + {`BEGIN { RS=""; FS="\n" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) print $i }`, + "1\n2\n\na\nb", + "1 (2):\n1\n2\n2 (2):\na\nb\n", "", ""}, + {`BEGIN { RS=""; FS="\n" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) print $i }`, + "a b\nc d\n\ne f\n\n\n \n\n\ng h\n\n\n", + "1 (2):\na b\nc d\n2 (1):\ne f\n3 (1):\n \n4 (1):\ng h\n", "", ""}, + {`BEGIN { RS=""; FS="\n" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) print $i }`, + "\n\na b\n\nc d\n", + "1 (1):\na b\n2 (1):\nc d\n", "", ""}, + {`BEGIN { RS=""; FS="\n" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) print $i } # !awk !gawk - they don't handle CR LF with RS==""`, + "\r\n\r\na b\r\n\r\nc d\r\n", + "1 (1):\na b\n2 (1):\nc d\n", "", ""}, + {`BEGIN { RS=""; FS="X" } { printf "%d (%d):\n", NR, NF; for (i=1; i<=NF; i++) printf "%s|", $i }`, + "aXb\ncXd\n\neXf\n\n\n \n\n\ngXh\n\n\n", + "1 (4):\na|b|c|d|2 (2):\ne|f|3 (1):\n |4 (2):\ng|h|", "", ""}, + {`BEGIN { RS = "" } { print "got", $0 }`, + "\n\n\n\n", "", "", ""}, + {`BEGIN { RS="\n" } { print }`, "a\n\nb\nc", "a\n\nb\nc\n", "", ""}, + {`BEGIN { RS="ö" } { print } # !windows-gawk`, "1ötwoöthree", "1\ntwo\nthree\n", "", ""}, + {`BEGIN { RS="\\.+" } { print } # !posix`, "1.two..three...4.", "1\ntwo\nthree\n4\n", "", ""}, + {`BEGIN { RS = "\n|( *[[:upper:]]+ *)" } { print "Record =", $0,"and RT = [" RT "]" } # !posix`, // from https://www.gnu.org/software/gawk/manual/html_node/gawk-split-records.html + "record 1 AAAA record 2 BBBB record 3\n", + `Record = record 1 and RT = [ AAAA ] +Record = record 2 and RT = [ BBBB ] +Record = record 3 and RT = [ +] +`, "", ""}, + {`BEGIN { RS = "\n|( *[[:upper:]]+ *)" } { print "Record =", $0,"and RT = [" RT "]" } # !posix`, + "record 1 AAAA record 2 BBBB record 3", + `Record = record 1 and RT = [ AAAA ] +Record = record 2 and RT = [ BBBB ] +Record = record 3 and RT = [] +`, "", ""}, + {`BEGIN { RS=".." } { print $0 RT } # !posix`, "foo bar bazz", "fo\no \nba\nr \nba\nzz\n", "", ""}, + {`BEGIN { RT="foo"; print RT }`, "", "foo\n", "", ""}, + {` +BEGIN { + print SUBSEP + a[1, 2] = "onetwo" + print a[1, 2] + for (k in a) { + print k, a[k] + } + delete a[1, 2] + SUBSEP = "|" + print SUBSEP + a[1, 2] = "onetwo" + print a[1, 2] + for (k in a) { + print k, a[k] + } +}`, "", "\x1c\nonetwo\n1\x1c2 onetwo\n|\nonetwo\n1|2 onetwo\n", "", ""}, + + // Field expressions and assignment (and interaction with NF) + {`{ print NF; NF=1; $2="two"; print $0, NF }`, "\n", "0\n two 2\n", "", ""}, + {`{ print NF; NF=2; $2="two"; print $0, NF}`, "\n", "0\n two 2\n", "", ""}, + {`{ print NF; NF=3; $2="two"; print $0, NF}`, "a b c\n", "3\na two c 3\n", "", ""}, + {`{ print; print $1, $3, $NF }`, "a b c d e", "a b c d e\na c e\n", "", ""}, + {`{ print $1,$3; $2="x"; print; print $2 }`, "a b c", "a c\na x c\nx\n", "", ""}, + {`{ print; $0="x y z"; print; print $1, $3 }`, "a b c", "a b c\nx y z\nx z\n", "", ""}, + {`{ print $1^2 }`, "10", "100\n", "", ""}, + {`{ print $-1 }`, "a\nb c\nd e f\n", "a\nc\nf\n", "", "field -1"}, + {`{ print $-2 }`, "a\nb c\nd e f\n", "\nb\ne\n", "", "field -2"}, + {`{ print $-3 }`, "a\nb c\nd e f\n", "\n\nd\n", "", "field -3"}, + {`{ $-1="x"; print }`, "a\nb c\nd e f\n", "x\nb x\nd e x\n", "", "field -1"}, + {`{ $-2="y"; print }`, "a\nb c\nd e f\n", "a\ny c\nd y f\n", "", "field -2"}, + {`{ $-3="z"; print }`, "a\nb c\nd e f\n", "a\nb c\nz e f\n", "", "field -3"}, + {`{ NF=-1; } # !awk - awk allows setting negative NF`, + "x", "", "NF set to negative value: -1", "negative value"}, + {`{ NF=1234567; }`, "x", "", "NF set too large: 1234567", ""}, + {`BEGIN { $1234567=1 }`, "", "", "field index too large: 1234567", ""}, + {`0 in FS # !awk - doesn't flag this as an error`, "x", "", + `parse error at 1:6: can't use scalar "FS" as array`, "array"}, + // TODO: I think this is happening because we parse this as ($($0))++ rather than ($($0++)) + // {`{ $$0++; print $0 }`, "2 3 4", "3\n", "", ""}, + // {`BEGIN { $0="3 4 5 6 7 8 9"; a=3; print $$a++++; print }`, "", "7\n3 4 6 6 8 8 9\n", "", ""}, + + // Lots of NF tests with different combinations of NF, $, and number + // of input fields. Some of these cause segmentation faults on awk + // (but work fine on gawk and mawk). + {`{ NF=1; $1="x"; print $0; print NF }`, "a", "x\n1\n", "", ""}, + {`{ NF=1; $1="x"; print $0; print NF }`, "a b", "x\n1\n", "", ""}, + {`{ NF=1; $1="x"; print $0; print NF }`, "a b c", "x\n1\n", "", ""}, + {`{ NF=1; $2="x"; print $0; print NF }`, "a", "a x\n2\n", "", ""}, + {`{ NF=1; $2="x"; print $0; print NF }`, "a b", "a x\n2\n", "", ""}, + {`{ NF=1; $2="x"; print $0; print NF }`, "a b c", "a x\n2\n", "", ""}, + {`{ NF=1; $3="x"; print $0; print NF }`, "a", "a x\n3\n", "", ""}, + {`{ NF=1; $3="x"; print $0; print NF } # !awk - awk differs from gawk (but gawk seems right)`, + "a b", "a x\n3\n", "", ""}, + {`{ NF=1; $3="x"; print $0; print NF } # !awk - awk differs from gawk (but gawk seems right)`, + "a b c", "a x\n3\n", "", ""}, + {`{ NF=2; $1="x"; print $0; print NF }`, "a", "x \n2\n", "", ""}, + {`{ NF=2; $1="x"; print $0; print NF }`, "a b", "x b\n2\n", "", ""}, + {`{ NF=2; $1="x"; print $0; print NF }`, "a b c", "x b\n2\n", "", ""}, + {`{ NF=2; $2="x"; print $0; print NF }`, "a", "a x\n2\n", "", ""}, + {`{ NF=2; $2="x"; print $0; print NF }`, "a b", "a x\n2\n", "", ""}, + {`{ NF=2; $2="x"; print $0; print NF }`, "a b c", "a x\n2\n", "", ""}, + {`{ NF=2; $3="x"; print $0; print NF }`, "a", "a x\n3\n", "", ""}, + {`{ NF=2; $3="x"; print $0; print NF }`, "a b", "a b x\n3\n", "", ""}, + {`{ NF=2; $3="x"; print $0; print NF }`, "a b c", "a b x\n3\n", "", ""}, + {`{ NF=3; $1="x"; print $0; print NF } # !awk - segmentation fault`, + "a", "x \n3\n", "", ""}, + {`{ NF=3; $1="x"; print $0; print NF } # !awk - segmentation fault`, + "a b", "x b \n3\n", "", ""}, + {`{ NF=3; $1="x"; print $0; print NF }`, "a b c", "x b c\n3\n", "", ""}, + {`{ NF=3; $2="x"; print $0; print NF } # !awk - segmentation fault`, + "a", "a x \n3\n", "", ""}, + {`{ NF=3; $2="x"; print $0; print NF } # !awk - segmentation fault`, + "a b", "a x \n3\n", "", ""}, + {`{ NF=3; $2="x"; print $0; print NF }`, "a b c", "a x c\n3\n", "", ""}, + {`{ NF=3; $3="x"; print $0; print NF }`, "a", "a x\n3\n", "", ""}, + {`{ NF=3; $3="x"; print $0; print NF }`, "a b", "a b x\n3\n", "", ""}, + {`{ NF=3; $3="x"; print $0; print NF }`, "a b c", "a b x\n3\n", "", ""}, + + // Assignment expressions and vars + {`BEGIN { print x; x = 4; print x; }`, "", "\n4\n", "", ""}, + {`BEGIN { a["foo"]=1; b[2]="x"; k="foo"; print a[k], b["2"] }`, "", "1 x\n", "", ""}, + {`BEGIN { s+=5; print s; s-=2; print s; s-=s; print s }`, "", "5\n3\n0\n", "", ""}, + {`BEGIN { x=2; x*=x; print x; x*=3; print x }`, "", "4\n12\n", "", ""}, + {`BEGIN { x=6; x/=3; print x; x/=x; print x; x/=.6; print x }`, "", "2\n1\n1.66667\n", "", ""}, + {`BEGIN { x=12; x%=5; print x }`, "", "2\n", "", ""}, + {`BEGIN { x=2; x^=5; print x; x^=0.5; print x }`, "", "32\n5.65685\n", "", ""}, + {`BEGIN { x=2; x**=5; print x; x**=0.5; print x } # !posix`, "", "32\n5.65685\n", "", ""}, + {`{ $2+=10; print; $3/=2; print }`, "1 2 3", "1 12 3\n1 12 1.5\n", "", ""}, + {`BEGIN { a[2] += 1; a["2"] *= 3; print a[2] }`, "", "3\n", "", ""}, + {`function inc(x, n) { x += n; return x } BEGIN { print inc(3, 2) }`, "", "5\n", "", ""}, + {`function inca(a, k, n) { a[k] += n } BEGIN { b["x"]=7; inca(b, "x", 2); print b["x"] }`, "", "9\n", "", ""}, + {`BEGIN { NF += 3; print NF }`, "", "3\n", "", ""}, + {`BEGIN { x=1; x += x+=3; print x }`, "", "8\n", "", ""}, + + // Incr/decr expressions + {`BEGIN { print x++; print x }`, "", "0\n1\n", "", ""}, + {`BEGIN { print x; print x++; print ++x; print x }`, "", "\n0\n2\n2\n", "", ""}, + {`BEGIN { print x; print x--; print --x; print x }`, "", "\n0\n-2\n-2\n", "", ""}, + {`BEGIN { s++; s++; print s }`, "", "2\n", "", ""}, + {`BEGIN { y=" "; --x[y = y y]; print length(y) }`, "", "2\n", "", ""}, + {`BEGIN { x[y++]++; print y }`, "", "1\n", "", ""}, + {`BEGIN { x[y++] += 3; print y }`, "", "1\n", "", ""}, + {`BEGIN { $(y++)++; print y }`, "", "1\n", "", ""}, + {`BEGIN { print "s" ++n; print "s" --n }`, "", "s1\ns0\n", "", ""}, + {`function inc(x) { x++; return x } BEGIN { print inc(3) }`, "", "4\n", "", ""}, + {`function inca(a, k) { a[k]++ } BEGIN { b["x"]=7; inca(b, "x"); print b["x"] }`, "", "8\n", "", ""}, + {`BEGIN { NF++; print NF }`, "", "1\n", "", ""}, + + // Builtin functions + {`BEGIN { print sin(0), sin(0.5), sin(1), sin(-1) }`, "", "0 0.479426 0.841471 -0.841471\n", "", ""}, + {`BEGIN { print cos(0), cos(0.5), cos(1), cos(-1) }`, "", "1 0.877583 0.540302 0.540302\n", "", ""}, + {`BEGIN { print exp(0), exp(0.5), exp(1), exp(-1) }`, "", "1 1.64872 2.71828 0.367879\n", "", ""}, + {`BEGIN { print log(0), log(0.5), log(1) }`, "", "-inf -0.693147 0\n", "", ""}, + {`BEGIN { print log(-1) } # !gawk - gawk prints warning for this as well`, + "", "nan\n", "", ""}, + {`BEGIN { print sqrt(0), sqrt(2), sqrt(4) }`, "", "0 1.41421 2\n", "", ""}, + {`BEGIN { print int(3.5), int("1.9"), int(4), int(-3.6), int("x"), int("") }`, "", "3 1 4 -3 0 0\n", "", ""}, + {`BEGIN { print match("food", "foo"), RSTART, RLENGTH }`, "", "1 1 3\n", "", ""}, + {`BEGIN { print match("x food y", "fo"), RSTART, RLENGTH }`, "", "3 3 2\n", "", ""}, + {`BEGIN { print match("x food y", "fox"), RSTART, RLENGTH }`, "", "0 0 -1\n", "", ""}, + {`BEGIN { print match("x food y", /[fod]+/), RSTART, RLENGTH }`, "", "3 3 4\n", "", ""}, + {`BEGIN { print match("a\nb\nc", /^a.*c$/), RSTART, RLENGTH }`, "", "1 1 5\n", "", ""}, + {`{ print length, length(), length("buzz"), length("") }`, "foo bar", "7 7 4 0\n", "", ""}, + {`BEGIN { print index("foo", "f"), index("foo0", 0), index("foo", "o"), index("foo", "x") }`, "", "1 4 2 0\n", "", ""}, + {`BEGIN { print atan2(1, 0.5), atan2(-1, 0) }`, "", "1.10715 -1.5708\n", "", ""}, + {`BEGIN { print sprintf("%3d", 42) }`, "", " 42\n", "", ""}, + {`BEGIN { print sprintf("%d", 12, 34) }`, "", "12\n", "", ""}, + {`BEGIN { print sprintf("%d") }`, "", "", "format error: got 0 args, expected 1", "not enough arg"}, + {`BEGIN { print sprintf("%d", 12, 34) }`, "", "12\n", "", ""}, + {`BEGIN { print sprintf("% 5d", 42) }`, "", " 42\n", "", ""}, + {`BEGIN { print sprintf("%*s %.*s", 5, "abc", 5, "abcdefghi") }`, "", " abc abcde\n", "", ""}, + {`BEGIN { print substr("food", 1) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", 1, 2) }`, "", "fo\n", "", ""}, + {`BEGIN { print substr("food", 1, 4) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", 1, 8) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", 2) }`, "", "ood\n", "", ""}, + {`BEGIN { print substr("food", 2, 2) }`, "", "oo\n", "", ""}, + {`BEGIN { print substr("food", 2, 3) }`, "", "ood\n", "", ""}, + {`BEGIN { print substr("food", 2, 8) }`, "", "ood\n", "", ""}, + {`BEGIN { print substr("food", 0, 8) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", -1, 8) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", 5) }`, "", "\n", "", ""}, + {`BEGIN { print substr("food", -1) }`, "", "food\n", "", ""}, + {`BEGIN { print substr("food", 5, 8) }`, "", "\n", "", ""}, + {`BEGIN { print substr("food", 2, -3), substr("fööd", 2, -3) }`, "", " \n", "", ""}, + {`BEGIN { n = split("", a); for (i=1; i<=n; i++) print a[i] }`, "", "", "", ""}, + {`BEGIN { n = split("", a, "."); for (i=1; i<=n; i++) print a[i] }`, "", "", "", ""}, + {`BEGIN { n = split("ab c d ", a); for (i=1; i<=n; i++) print a[i] }`, "", "ab\nc\nd\n", "", ""}, + {`BEGIN { n = split("ab,c,d,", a, ","); for (i=1; i<=n; i++) print a[i] }`, "", "ab\nc\nd\n\n", "", ""}, + {`BEGIN { n = split("ab,c.d,", a, /[,.]/); for (i=1; i<=n; i++) print a[i] }`, "", "ab\nc\nd\n\n", "", ""}, + {`BEGIN { n = split("1 2", a); print (n, a[1], a[2], a[1]==1, a[2]==2) }`, "", "2 1 2 1 1\n", "", ""}, + {`BEGIN { x = "1.2.3"; print sub(/\./, ",", x); print x }`, "", "1\n1,2.3\n", "", ""}, + {`BEGIN { x = "1.2.3"; print sub(/\./, ",\\", x); print x }`, "", "1\n1,\\2.3\n", "", ""}, + {`{ print sub(/\./, ","); print $0 }`, "1.2.3", "1\n1,2.3\n", "", ""}, + {`BEGIN { x = "1.2.3"; print gsub(/\./, ",", x); print x }`, "", "2\n1,2,3\n", "", ""}, + {`{ print gsub(/\./, ","); print $0 }`, "1.2.3", "2\n1,2,3\n", "", ""}, + {`{ print gsub(/[0-9]/, "(&)"); print $0 }`, "0123x. 42y", "6\n(0)(1)(2)(3)x. (4)(2)y\n", "", ""}, + {`{ print gsub(/[0-9]+/, "(&)"); print $0 }`, "0123x. 42y", "2\n(0123)x. (42)y\n", "", ""}, + {`{ print gsub(/[0-9]/, "\\&"); print $0 }`, "0123x. 42y", "6\n&&&&x. &&y\n", "", ""}, + {`{ print gsub(/[0-9]/, "\\z"); print $0 }`, "0123x. 42y", "6\n\\z\\z\\z\\zx. \\z\\zy\n", "", ""}, + {`{ print gsub("0", "x\\\\y"); print $0 } # !awk !gawk -- our behaviour is per POSIX spec (gawk -P and mawk)`, + "0", "1\nx\\y\n", "", ""}, + {`sub("", "\\e", FS) # !awk !gawk`, "foo bar\nbaz buz\n", "", + "invalid regex \"\\\\e \": error parsing regexp: invalid escape sequence: `\\e`", ""}, + {`BEGIN { print tolower("Foo BaR") }`, "", "foo bar\n", "", ""}, + {`BEGIN { print toupper("Foo BaR") }`, "", "FOO BAR\n", "", ""}, + {` +BEGIN { + srand() + srand(1) + a = rand(); b = rand(); c = rand() + srand(1) + x = rand(); y = rand(); z = rand() + print (a==b, b==c, x==y, y==z) + print (a==x, b==y, c==z) +} +`, "", "0 0 0 0\n1 1 1\n", "", ""}, + {` +BEGIN { + for (i = 0; i < 1000; i++) { + if (rand() < 0.5) n++ + } + print (n>400) +} +`, "", "1\n", "", ""}, + {`BEGIN { print system("echo foo"); print system("echo bar") } # !fuzz`, + "", "foo\n0\nbar\n0\n", "", ""}, + {`BEGIN { print system(">&2 echo error") } # !fuzz`, + "", "error\n0\n", "", ""}, + {`BEGIN { print system("exit 42") } # !fuzz !posix`, "", "42\n", "", ""}, + {`BEGIN { system("cat") }`, "foo\nbar", "foo\nbar", "", ""}, + + // Test bytes/unicode handling (GoAWK currently has char==byte, unlike Gawk). + {`BEGIN { print match("food", "foo"), RSTART, RLENGTH } !gawk`, "", "1 1 3\n", "", ""}, + {`BEGIN { print match("x food y", "fo"), RSTART, RLENGTH } !gawk`, "", "3 3 2\n", "", ""}, + {`BEGIN { print match("x food y", "fox"), RSTART, RLENGTH } !gawk`, "", "0 0 -1\n", "", ""}, + {`BEGIN { print match("x food y", /[fod]+/), RSTART, RLENGTH } !gawk`, "", "3 3 4\n", "", ""}, + {`BEGIN { print match("çµµ fööd y", /[föd]+/), RSTART, RLENGTH } !gawk`, "", "5 5 6\n", "", ""}, + {`{ print length, length(), length("buzz"), length("") } # !gawk`, "foo bar", "7 7 4 0\n", "", ""}, + {`BEGIN { print length("a"), length("çµµ") } # !gawk`, "", "1 3\n", "", ""}, + {`BEGIN { print index("foo", "f"), index("foo0", 0), index("foo", "o"), index("foo", "x") } # !gawk`, "", "1 4 2 0\n", "", ""}, + {`BEGIN { print index("föö", "f"), index("föö0", 0), index("föö", "ö"), index("föö", "x") } # !gawk`, "", "1 6 2 0\n", "", ""}, + {`BEGIN { print substr("food", 1), substr("fööd", 1) } # !gawk`, "", "food fööd\n", "", ""}, + {`BEGIN { print substr("food", 1, 2), substr("fööd", 1, 2) } # !gawk`, "", "fo f\xc3\n", "", ""}, + {`BEGIN { print substr("food", 1, 4), substr("fööd", 1, 4) } # !gawk`, "", "food fö\xc3\n", "", ""}, + {`BEGIN { print substr("food", 1, 8), substr("fööd", 1, 8) } # !gawk`, "", "food fööd\n", "", ""}, + {`BEGIN { print substr("food", 2), substr("fööd", 2) } # !gawk`, "", "ood ööd\n", "", ""}, + {`BEGIN { print substr("food", 2, 2), substr("fööd", 2, 2) } # !gawk`, "", "oo ö\n", "", ""}, + {`BEGIN { print substr("food", 2, 3), substr("fööd", 2, 3) } # !gawk`, "", "ood ö\xc3\n", "", ""}, + {`BEGIN { print substr("food", 2, 8), substr("fööd", 2, 8) } # !gawk`, "", "ood ööd\n", "", ""}, + {`BEGIN { print substr("food", 0, 8), substr("fööd", 0, 8) } # !gawk`, "", "food fööd\n", "", ""}, + {`BEGIN { print substr("food", -1, 8), substr("fööd", -1, 8) } # !gawk`, "", "food fööd\n", "", ""}, + {`BEGIN { print substr("food", 5, 8), substr("fööd", 5, 8) } # !gawk`, "", " \xb6d\n", "", ""}, + {`BEGIN { print substr("food", 2, -3), substr("fööd", 2, -3) } # !gawk`, "", " \n", "", ""}, + + // Conditional expressions parse and work correctly + {`BEGIN { print 0?"t":"f" }`, "", "f\n", "", ""}, + {`BEGIN { print 1?"t":"f" }`, "", "t\n", "", ""}, + {`BEGIN { print (1+2)?"t":"f" }`, "", "t\n", "", ""}, + {`BEGIN { print (1+2?"t":"f") }`, "", "t\n", "", ""}, + {`BEGIN { print(1 ? x="t" : "f"); print x; }`, "", "t\nt\n", "", ""}, + + // Locals vs globals, array params, and recursion + {` +function f(loc) { + glob += 1 + loc += 1 + loc = loc * 2 + print glob, loc +} +BEGIN { + glob = 1 + loc = 42 + f(3) + print loc + f(4) + print loc +} +`, "", "2 8\n42\n3 10\n42\n", "", ""}, + {` +function set(a, x, v) { a[x] = v } +function get(a, x) { return a[x] } +function get2(x, a) { return a[x] } +function get3(x, a, b) { b[0]; return a[x] } +BEGIN { + a["x"] = 1 + set(b, "y", 2) + for (k in a) print k, a[k] + print "---" + for (k in b) print k, b[k] + print "---" + print get(a, "x"), get(b, "y") + print get2("x", a), get2("y", b) + print get3("x", a), get2("y", b) +} +`, "", "x 1\n---\ny 2\n---\n1 2\n1 2\n1 2\n", "", ""}, + {` +function fib(n) { + return n < 3 ? 1 : fib(n-2) + fib(n-1) +} +BEGIN { + for (i = 1; i <= 7; i++) { + printf "%d ", fib(i) + } +} +`, "", "1 1 2 3 5 8 13 ", "", ""}, + {` +function f(a, x) { return a[x] } +function g(b, y) { f(b, y) } +BEGIN { c[1]=2; print f(c, 1); print g(c, 1) } +`, "", "2\n\n", "", ""}, + {` +function g(b, y) { return f(b, y) } +function f(a, x) { return a[x] } +BEGIN { c[1]=2; print f(c, 1); print g(c, 1) } +`, "", "2\n2\n", "", ""}, + {` +function h(b, y) { g(b, y) } +function g(b, y) { f(b, y) } +function f(a, x) { return a[x] } +BEGIN { c[1]=2; print f(c, 1); print g(c, 1) } +`, "", "2\n\n", "", ""}, + {` +function h(b, y) { return g(b, y) } +function g(b, y) { return f(b, y) } +function f(a, x) { return a[x] } +BEGIN { c[1]=2; print f(c, 1); print g(c, 1); print h(c, 1) } +`, "", "2\n2\n2\n", "", ""}, + {` +function get(a, x) { return a[x] } +BEGIN { a[1]=2; print get(a, x); print get(1, 2); } +# !awk - awk doesn't detect this +`, "", "", `parse error at 3:40: can't pass scalar 1 as array param`, "attempt to use scalar"}, + {` +function early() { + print "x" + return + print "y" +} +BEGIN { early() } +`, "", "x\n", "", ""}, + {`BEGIN { return }`, "", "", "parse error at 1:9: return must be inside a function", "return"}, + {`function f() { printf "x" }; BEGIN { f() } `, "", "x", "", ""}, + {`BEGIN { arr[0]; f(arr) } function f(a) { printf "x" }`, "", "x", "", ""}, + {`function f(x) { 0 in _; f(_) } BEGIN { f() } # !awk !gawk`, "", "", `calling "f" exceeded maximum call depth of 1000`, ""}, + {`BEGIN { for (i=0; i<1001; i++) f(); print x } function f() { x++ }`, "", "1001\n", "", ""}, + {` +function bar(y) { return y[1] } +function foo() { return bar(x) } +BEGIN { x[1] = 42; print foo() } +`, "", "42\n", "", ""}, + {` +function f1(x) { } +function f2(x, y) { return x[y] } +BEGIN { a[1]=2; f1(a); print f2(a, 1) } +`, "", "2\n", "", ""}, + {`BEGIN { arr[0]; f(arr) } function f(a) { print "x" }`, "", "x\n", "", ""}, + {`function add(a, b) { return a+b } BEGIN { print add(1, 2), add(1), add() }`, "", "3 1 0\n", "", ""}, + + // Type checking / resolver tests + {`BEGIN { a[x]; a=42 }`, "", "", `parse error at 1:15: can't use array "a" as scalar`, "array"}, + {`BEGIN { s=42; s[x] }`, "", "", `parse error at 1:15: can't use scalar "s" as array`, "array"}, + {`function get(a, k) { return a[k] } BEGIN { a = 42; print get(a, 1); } # !awk - doesn't error in awk`, + "", "", `parse error at 1:59: can't pass scalar "a" as array param`, "attempt to use scalar parameter `a' as an array"}, + {`function get(a, k) { return a+k } BEGIN { a[42]; print get(a, 1); }`, + "", "", `parse error at 1:56: can't pass array "a" as scalar param`, "array"}, + {`{ f(z) } function f(x) { print NR }`, "abc", "1\n", "", ""}, + {`function f() { f() } BEGIN { f() } # !awk !gawk`, "", "", `calling "f" exceeded maximum call depth of 1000`, ""}, + {`function f(x) { 0 in x } BEGIN { f(FS) } # !awk`, "", "", `parse error at 1:35: can't pass scalar "FS" as array param`, "attempt to use scalar parameter `x' as an array"}, + {` +function foo(x) { print "foo", x } +function bar(foo) { print "bar", foo } +BEGIN { foo(5); bar(10) } +# !posix +`, "", "foo 5\nbar 10\n", "", ""}, + {` +function foo(foo) { print "foo", foo } +function bar(foo) { print "bar", foo } +BEGIN { foo(5); bar(10) } +`, "", "", `parse error at 2:14: can't use function name as parameter name`, "function name"}, + {`function foo() { print foo } BEGIN { foo() }`, + "", "", `parse error at 1:46: global var "foo" can't also be a function`, "function"}, + {`function f(x) { print x, x(); } BEGIN { f() }`, "", "", `parse error at 1:27: can't call local variable "x" as function`, "function"}, + + // Redirected I/O + {`BEGIN { getline x; print x }`, "foo", "foo\n", "", ""}, + {`function f(x) { getline x; print x } BEGIN { f(); print x }`, "foo", "foo\n\n", "", ""}, + {`BEGIN { getline SUBSEP; print SUBSEP }`, "foo", "foo\n", "", ""}, + {`BEGIN { getline a[1]; print a[1] }`, "foo", "foo\n", "", ""}, + {`BEGIN { getline $1; print $1 }`, "foo", "foo\n", "", ""}, + {`BEGIN { "echo foo" | getline a[1]; print a[1] }`, "", "foo\n", "", ""}, + {`BEGIN { "echo foo" | getline $1; print $1 }`, "", "foo\n", "", ""}, + {`BEGIN { print "foo" |"sort"; print "bar" |"sort" } # !fuzz`, "", "bar\nfoo\n", "", ""}, + {`BEGIN { print "foo" |">&2 echo error" } # !gawk !fuzz`, "", "error\n", "", ""}, + {`BEGIN { "cat" | getline; print } # !fuzz`, "bar", "bar\n", "", ""}, + {`BEGIN { print getline x < "/no/such/file" } # !fuzz`, "", "-1\n", "", ""}, + {`BEGIN { print getline "z"; print $0 }`, "foo", "1z\nfoo\n", "", ""}, + {`BEGIN { print getline x+1; print x }`, "foo", "2\nfoo\n", "", ""}, + {`BEGIN { print getline (x+1); print $0 }`, "foo", "11\nfoo\n", "", ""}, + {`BEGIN { print getline foo(); print $0 } function foo() { print "z" }`, "foo", "z\n1\nfoo\n", "", ""}, + // TODO: these forms don't yet work under GoAWK + //{`BEGIN { print("echo foo" | getline x+1); print x }`, "", "2\nfoo\n", "", ""}, + //{`BEGIN { print("echo foo" | getline $0+1); print }`, "", "2\nfoo\n", "", ""}, + //{`BEGIN { print("echo foo" | getline ($0+1)); print }`, "", "11\nfoo\n", "", ""}, + //{`BEGIN { print("echo foo" | getline foo()); print } function foo() { print "z" }`, "", "z\n1\nfoo\n", "", ""}, + {`BEGIN { + print "foo" >"out" + print close("out") + print "bar" >"out" + print close("out") + getline <"out" + print $0 + print close("out") + print close("out") +}`, "", "0\n0\nbar\n0\n-1\n", "", ""}, + {`BEGIN { + print "foo" >"out" + print "bar" >"out" + print close("out") + getline <"out" + print $0 + print close("out") + getline <"out" + print $0 + print close("out") + print close("out") +}`, "", "0\nfoo\n0\nfoo\n0\n-1\n", "", ""}, + {`BEGIN { print close("nothing") }`, "", "-1\n", "", ""}, + {`BEGIN { + print "foo">"out" + close("out") + print "bar">>"out" + close("out") + getline <"out" + print $0 + getline <"out" + print $0 +}`, "", "foo\nbar\n", "", ""}, + + // Ensure data returned by getline (in various forms) is treated as numeric string + {`BEGIN { getline; print($0==0) }`, "0.0", "1\n", "", ""}, + {`BEGIN { getline x; print(x==0) }`, "0.0", "1\n", "", ""}, + {`BEGIN { "echo 0.0" | getline; print($0==0) }`, "", "1\n", "", ""}, + {`BEGIN { "echo 0.0" | getline x; print(x==0) }`, "", "1\n", "", ""}, + + // Redirected I/O errors (we give explicit errors, awk and gawk don't) + {`BEGIN { print >"out"; getline <"out" } # !awk !gawk`, "", "", "can't read from writer stream", ""}, + {`BEGIN { print |"out"; getline <"out" } # !awk !gawk`, "", "", "can't read from writer stream", ""}, + {`BEGIN { print >"out"; close("out"); getline <"out"; print >"out" } # !awk !gawk`, "", "", "can't write to reader stream", ""}, + {`BEGIN { print >"out"; close("out"); getline <"out"; print |"out" } # !awk !gawk`, "", "", "can't write to reader stream", ""}, + + // Redirecting to or from a filename of "-" means write to stdout or read from stdin + {`BEGIN { print getline x < "-"; print x }`, "a\nb\n", "1\na\n", "", ""}, + {`{ print $0; print getline x <"-"; print x }`, "one\ntwo\n", "one\n0\n\ntwo\n0\n\n", "", ""}, + {`BEGIN { print "x" >"-"; print "y" >"-" }`, "", "x\ny\n", "", ""}, + + // fflush() function - tests parsing and some edge cases, but not + // actual flushing behavior (that's partially tested in TestFlushes). + {`BEGIN { print fflush(); print fflush("") }`, "", "0\n0\n", "", ""}, + {`BEGIN { print "x"; print fflush(); print "y"; print fflush("") }`, "", "x\n0\ny\n0\n", "", ""}, + {`BEGIN { print "x" >"out"; print fflush("out"); print "y"; print fflush("") } # !fuzz`, "", "0\ny\n0\n", "", ""}, + {`BEGIN { print fflush("x") } # !gawk`, "", "error flushing \"x\": not an output file or pipe\n-1\n", "", ""}, + {`BEGIN { "cat" | getline; print fflush("cat") } # !gawk !fuzz`, "", "error flushing \"cat\": not an output file or pipe\n-1\n", "", ""}, + + // Greater than operator requires parentheses in print statement, + // otherwise it's a redirection directive + {`BEGIN { print "x" > "out" } # !fuzz`, "", "", "", ""}, + {`BEGIN { printf "x" > "out" } # !fuzz`, "", "", "", ""}, + {`BEGIN { print("x" > "out") }`, "", "1\n", "", ""}, + {`BEGIN { printf("x" > "out") }`, "", "1", "", ""}, + + // Grammar should allow blocks wherever statements are allowed + {`BEGIN { if (1) printf "x"; else printf "y" }`, "", "x", "", ""}, + {`BEGIN { printf "x"; { printf "y"; printf "z" } }`, "", "xyz", "", ""}, + + // Backslash line continuation + {"BEGIN { print 1,\\\n 2 }", "", "1 2\n", "", ""}, + {"BEGIN { print 1,\\\r\n 2 }", "", "1 2\n", "", ""}, + + // Ensure syntax errors result in errors + {`{ $1 = substr($1, 1, 3) print $1 }`, "", "", "parse error at 1:25: expected ; or newline between statements", "syntax error"}, + {`BEGIN { f() }`, "", "", `parse error at 1:9: undefined function "f"`, "defined"}, + {`function f() {} function f() {} BEGIN { }`, "", "", `parse error at 1:26: function "f" already defined`, "define"}, + {`BEGIN { print (1,2),(3,4) }`, "", "", "parse error at 1:15: unexpected comma-separated expression", "syntax"}, + {`BEGIN { print (1,2,(3,4),(5,6)) }`, "", "", "parse error at 1:20: unexpected comma-separated expression", "syntax"}, + {"BEGIN { print 1,\\2 }", "", "1 2\n", `parse error at 1:18: expected \n after \ line continuation`, "backslash not last character on line"}, + {`BEGIN { print . }`, "", "", "parse error at 1:16: expected digits", "syntax"}, + {`BEGIN { print "foo }`, "", "", "parse error at 1:21: didn't find end quote in string", "unterminated string"}, + {"BEGIN { print \"foo\n\"}", "", "", "parse error at 1:19: can't have newline in string", "unterminated string"}, + {`/foo`, "", "", "parse error at 1:5: didn't find end slash in regex", "unterminated regexp"}, + {"/foo\n", "", "", "parse error at 1:5: can't have newline in regex", "unterminated regexp"}, + {`BEGIN { print "\x" } # !gawk`, "", "", "parse error at 1:18: 1 or 2 hex digits expected", ""}, + {`BEGIN { print 1&*2 }`, "", "", "parse error at 1:17: unexpected char after '&'", "syntax"}, + {"BEGIN { ` }", "", "", "parse error at 1:9: unexpected char", "syntax"}, + + // Hex floating point and other number conversions + {`{ print $1+0 } # +posix`, ` +0x0 +0X10 +0x1234567890 +0xabcdef +0xABCDEF +-0xa ++0XA +0xf.f +0xf.fp10 +0xf.fp-10 +0x.f +0xf. +0x. +`[1:], ` +0 +16 +78187493520 +11259375 +11259375 +-10 +10 +15.9375 +16320 +0.015564 +0.9375 +15 +0 +`[1:], "", ""}, + {`BEGIN { print int("0x22"), int("-0xa"), int("0xffz"), int("022"), int("-022") } # +posix`, "", + "34 -10 255 22 -22\n", "", ""}, + {`{ print $1, $2+0 } # !gawk`, ` +1 nan +2 NAN +3 nanny +4 +nan +5 -nan +6 na +7 +na +8 inf +9 INF +10 infamous +11 infinity +12 +inf +13 -inf +14 in +15 +in +`[1:], ` +1 nan +2 nan +3 nan +4 nan +5 nan +6 0 +7 0 +8 inf +9 inf +10 inf +11 inf +12 inf +13 -inf +14 0 +15 0 +`[1:], "", ""}, + {`{ printf "%s < %s == %d\n", $1, $2, $1<$2 } # +posix`, ` +10 2 +0x10 0x2 ++nan +nan +-0x10 +0x2 +-0x10.0p0 +0x2.0p0 +`[1:], ` +10 < 2 == 0 +0x10 < 0x2 == 0 ++nan < +nan == 0 +-0x10 < +0x2 == 1 +-0x10.0p0 < +0x2.0p0 == 1 +`[1:], "", ""}, + {`{ print !$1 } # +posix`, "0x0\n0x0.0p0\n0x1\n0x0.01\n", "1\n1\n0\n0\n", "", ""}, + {`{ print $1<$2 }`, "1_0 2", "1\n", "", ""}, +} + +func TestInterp(t *testing.T) { + // Ensure very long lines work (> 64KB) + longLine := strings.Repeat("x", 70000) + tests := append(interpTests, + interpTest{`{ print length() }`, longLine, fmt.Sprintf("%d\n", len(longLine)), "", ""}, + ) + + for _, test := range tests { + testName := test.src + if len(testName) > 70 { + testName = testName[:70] + } + + // Run it through external awk program first + if awkExe != "" { + runAWK := func(t *testing.T, posix bool) { + if strings.Contains(test.src, "!"+awkExe) { + t.Skipf("skipping under %s", awkExe) + } + if strings.Contains(test.src, "!"+runtime.GOOS+"-"+awkExe) { + t.Skipf("skipping on %s under %s", runtime.GOOS, awkExe) + } + if posix && strings.Contains(test.src, "!posix") { + t.Skipf("skipping in --posix mode") + } + if !posix && strings.Contains(test.src, "+posix") { + t.Skip("skipping in non-posix mode") + } + + var args []string + if posix { + args = append(args, "--posix") + } + args = append(args, test.src, "-") + cmd := exec.Command(awkExe, args...) + if test.in != "" { + cmd.Stdin = strings.NewReader(test.in) + } + out, err := cmd.CombinedOutput() + if err != nil { + if test.awkErr != "" { + if strings.Contains(string(out), test.awkErr) { + return + } + t.Fatalf("expected error %q, got:\n%s", test.awkErr, out) + } else { + t.Fatalf("error running %s: %v:\n%s", awkExe, err, out) + } + } + if test.awkErr != "" { + t.Fatalf(`expected error %q, got ""`, test.awkErr) + } + normalized := normalizeNewlines(string(out)) + if normalized != test.out { + t.Fatalf("expected/got:\n%q\n%q", test.out, normalized) + } + } + t.Run("awk_"+testName, func(t *testing.T) { + runAWK(t, false) + }) + if strings.Contains(awkExe, "gawk") { + t.Run("awkposix_"+testName, func(t *testing.T) { + runAWK(t, true) + }) + } + } + + // Then test it in GoAWK + t.Run(testName, func(t *testing.T) { + testGoAWK(t, test.src, test.in, test.out, test.err, nil, nil) + }) + } + _ = os.Remove("out") +} + +// Version of bytes.Buffer that's safe for concurrent writes. This +// makes certain tests that write to Output and Error at once (due +// to os/exec) work correctly. +type concurrentBuffer struct { + buffer bytes.Buffer + mutex sync.Mutex +} + +func (b *concurrentBuffer) Write(data []byte) (int, error) { + b.mutex.Lock() + defer b.mutex.Unlock() + return b.buffer.Write(data) +} + +func (b *concurrentBuffer) String() string { + b.mutex.Lock() + defer b.mutex.Unlock() + return b.buffer.String() +} + +func testGoAWK( + t *testing.T, src, in, out, errStr string, + funcs map[string]interface{}, configure func(config *interp.Config), +) { + parserConfig := &parser.ParserConfig{ + Funcs: funcs, + } + prog, err := parser.ParseProgram([]byte(src), parserConfig) + if err != nil { + if errStr != "" { + if err.Error() == errStr { + return + } + t.Fatalf("expected error %q, got %q", errStr, err.Error()) + } + t.Fatal(err) + } + + // Test that disassembler at least doesn't panic or return an error. + err = prog.Disassemble(ioutil.Discard) + if err != nil { + t.Fatalf("disassembler returned an error: %v", err) + } + + outBuf := &concurrentBuffer{} + config := &interp.Config{ + Stdin: strings.NewReader(in), + Output: outBuf, + Error: outBuf, + Vars: []string{"_var", "42"}, + Funcs: funcs, + } + if configure != nil { + configure(config) + } + status, err := interp.ExecProgram(prog, config) + if err != nil { + if errStr != "" { + if err.Error() == errStr { + return + } + t.Fatalf("expected error %q, got %q", errStr, err.Error()) + } + t.Fatal(err) + } + if errStr != "" { + t.Fatalf(`expected error %q, got ""`, errStr) + } + normalized := normalizeNewlines(outBuf.String()) + if normalized != out { + t.Fatalf("expected/got:\n%q\n%q", out, normalized) + } + if status != 0 { + t.Fatalf("expected status 0, got %d", status) + } +} + +func TestNative(t *testing.T) { + tests := []struct { + src string + in string + out string + err string + funcs map[string]interface{} + }{ + {`BEGIN { print foo() }`, "", "", `parse error at 1:15: undefined function "foo"`, + nil}, + {`BEGIN { print foo() }`, "", "\n", "", + map[string]interface{}{ + "foo": func() {}, + }}, + {`BEGIN { print foo() }`, "", "FOO\n", "", + map[string]interface{}{ + "foo": func() string { return "FOO" }, + }}, + {`BEGIN { print foo() }`, "", "BYTES\n", "", + map[string]interface{}{ + "foo": func() []byte { return []byte("BYTES") }, + }}, + {`BEGIN { print repeat("xy", 5) }`, "", "xyxyxyxyxy\n", "", + map[string]interface{}{ + "repeat": strings.Repeat, + }}, + {`BEGIN { print repeat("xy", 5) }`, "", "xyxyxyxyxy\n", "", + map[string]interface{}{ + "repeat": strings.Repeat, + }}, + {` +BEGIN { + print r0() + print r1(), r1(5) + print r2(), r2(5) +}`, "", "\n0 25\n0 25\n", "", + map[string]interface{}{ + "r0": func() {}, + "r1": func(n int) int { return n * n }, + "r2": func(n int) (int, error) { + return n * n, nil + }, + }}, + {` +BEGIN { + print r2() +}`, "", "", "NATIVE ERROR", + map[string]interface{}{ + "r2": func(n int) (int, error) { + return n * n, fmt.Errorf("NATIVE ERROR") + }, + }}, + {` +BEGIN { + print + print bool(), bool(0), bool(1), bool(""), bool("0"), bool("x") + print i(), i(42), i(-5), i(3.75), i(-3.75) + print i8(), i8(42), i8(-5.6), i8(127), i8(-128) + print i16(), i16(42), i16(-5.6), i16(32767), i16(-32768) + print i32(), i32(42), i32(-5.6), i32(2147483647), i32(-2147483648) + print i64(), i64(42), i64(-5.6), i64(2147483647000), i64(-2147483647000) + print u(), u(42), u(0), u(1) + print u8(), u8(42), u8(-5.6), u8(127), u8(128), u8(255) + print u16(), u16(42), u16(-1), u16(65535) + print u32(), u32(42), u32(-1), u32(4294967295) + print u64(), u64(42), u64(1), u64(4294967296), u64(2147483647000) + print s() "." s("") "." s("Foo bar") "." s(1234) + print b() "." b("") "." b("Foo bar") "." b(1234) +}`, "", ` +0 0 1 0 1 1 +0 42 -5 3 -3 +0 42 -5 127 -128 +0 42 -5 32767 -32768 +0 42 -5 2147483647 -2147483648 +0 42 -5 2147483647000 -2147483647000 +0 42 0 1 +0 42 251 127 128 255 +0 42 65535 65535 +0 42 4294967295 4294967295 +0 42 1 4294967296 2147483647000 +..Foo bar.1234 +..Foo bar.1234 +`, "", + map[string]interface{}{ + "bool": func(b bool) bool { return b }, + "i": func(n int) int { return n }, + "i8": func(n int8) int8 { return n }, + "i16": func(n int16) int16 { return n }, + "i32": func(n int32) int32 { return n }, + "i64": func(n int64) int64 { return n }, + "u": func(n uint) uint { return n }, + "u8": func(n uint8) uint8 { return n }, + "u16": func(n uint16) uint16 { return n }, + "u32": func(n uint32) uint32 { return n }, + "u64": func(n uint64) uint64 { return n }, + "b": func(b []byte) []byte { return b }, + "s": func(s string) string { return s }, + }}, + {` +BEGIN { + print + print sum(), sum(1), sum(2, 3), sum(4, 5, 6, 7, 8) + print fmt_ints() + print fmt_ints("%5d") + print fmt_ints("%5d", 123) + print fmt_ints("%d %d", 123, 456) + print fmt_ints("%d %d %d", 123, 456, 789) +}`, "", ` +0 1 5 30 + +%!d(MISSING) + 123 +123 456 +123 456 789 +`, "", + map[string]interface{}{ + "sum": func(args ...int) int { + sum := 0 + for _, a := range args { + sum += a + } + return sum + }, + "fmt_ints": func(s string, args ...int) string { + fmtArgs := make([]interface{}, len(args)) + for i, a := range args { + fmtArgs[i] = a + } + return fmt.Sprintf(s, fmtArgs...) + }, + }}, + {`BEGIN { 0 }`, "", "", `native function "f" is not a function`, + map[string]interface{}{ + "f": 0, + }}, + {`BEGIN { 1 }`, "", "", `native function "g" param 0 is not int or string`, + map[string]interface{}{ + "g": func(s complex64) {}, + }}, + {`BEGIN { 2 }`, "", "", `native function "g" param 2 is not int or string`, + map[string]interface{}{ + "g": func(x, y int, s []int, t string) {}, + }}, + {`BEGIN { 3 }`, "", "", `native function "h" param 0 is not int or string`, + map[string]interface{}{ + "h": func(a ...map[string]int) {}, + }}, + {`BEGIN { 4 }`, "", "", `native function "h" param 1 is not int or string`, + map[string]interface{}{ + "h": func(x int, a ...complex64) {}, + }}, + {`BEGIN { 5 }`, "", "", `native function "r" return value is not int or string`, + map[string]interface{}{ + "r": func() map[string]int { return nil }, + }}, + {`BEGIN { 6 }`, "", "", `native function "r" first return value is not int or string`, + map[string]interface{}{ + "r": func() (map[string]int, error) { return nil, nil }, + }}, + {`BEGIN { 7 }`, "", "", `native function "r" second return value is not an error`, + map[string]interface{}{ + "r": func() (int, int) { return 0, 0 }, + }}, + {`BEGIN { 8 }`, "", "", `native function "r" returns more than two values`, + map[string]interface{}{ + "r": func() (int, error, int) { return 0, nil, 0 }, + }}, + {`BEGIN { print f(), f(1, 2) }`, "", "", `parse error at 1:20: "f" called with more arguments than declared`, + map[string]interface{}{ + "f": func(n int) {}, + }}, + {`BEGIN { print split("x y", a) }`, "", "", `can't use keyword "split" as native function name`, + map[string]interface{}{ + "split": func() {}, + }}, + {` +function foo(n) { return n * 2 } +BEGIN { print foo(42) } +`, "", "84\n", "", map[string]interface{}{ + "foo": func(n int) int { return n / 2 }, + }}, + {`BEGIN { x=3; print foo(x) }`, "", "9\n", ``, + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {` +function bar(n) { return foo(n) } +BEGIN { x=4; y=5; print foo(x), bar(y) } +`, "", "16 25\n", ``, + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {`BEGIN { a["x"]=1; print foo(a) }`, "", "", + `parse error at 1:25: can't pass array "a" to native function`, + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {`BEGIN { x["x"]=1; print f(x) } function f(a) { return foo(a) }`, "", "", + `parse error at 1:56: can't pass array "a" to native function`, + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {`function f(a) { return foo(a) } BEGIN { x["x"]=1; print f(x) }`, "", "", + `parse error at 1:24: can't pass array "a" to native function`, + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {`BEGIN { x["x"]=1; print f(x["x"]) } function f(a) { return foo(a) }`, "", "1\n", "", + map[string]interface{}{ + "foo": func(n int) int { return n * n }, + }}, + {`BEGIN { print add(1, add(2, 3)) }`, "", "6\n", "", + map[string]interface{}{ + "add": func(a, b float64) float64 { return a + b }, + }}, + {`BEGIN { print add(1, add(2, 3)) }`, "", "6\n", "", + map[string]interface{}{ + "add": func(a, b float32) float32 { return a + b }, + }}, + {`BEGIN { print foo(x) }`, "", "0\n", "", + map[string]interface{}{ + "foo": func(i int) int { return i }, + }}, + {`BEGIN { print foo(_var) }`, "", "42\n", "", + map[string]interface{}{ + "foo": func(i int) int { return i }, + }}, + {`function foo(y) { return y/2 } BEGIN { print foo(_var) }`, "", "21\n", "", + map[string]interface{}{ + "foo": func(i int) int { return i }, + }}, + } + for _, test := range tests { + testName := test.src + if len(testName) > 70 { + testName = testName[:70] + } + t.Run(testName, func(t *testing.T) { + testGoAWK(t, test.src, test.in, test.out, test.err, test.funcs, nil) + }) + } +} + +func TestSafeMode(t *testing.T) { + tests := []struct { + src string + in string + out string + err string + args []string + }{ + {`BEGIN { print "hi" >"out" }`, "", "", "can't write to file due to NoFileWrites", nil}, + {`BEGIN { print "hi" >>"out" }`, "", "", "can't write to file due to NoFileWrites", nil}, + {`BEGIN { print "hi" |"sort" }`, "", "", "can't write to pipe due to NoExec", nil}, + {`BEGIN { getline <"in" }`, "", "", "can't read from file due to NoFileReads", nil}, + {`$0 # no files`, "1\n2\n", "1\n2\n", "", nil}, + {`$0 # files`, "1\n2\n", "1\n2\n", "can't read from file due to NoFileReads", []string{"f1"}}, + {`BEGIN { "echo foo" |getline }`, "", "", "can't read from pipe due to NoExec", nil}, + {`BEGIN { system("echo foo") }`, "", "", "can't call system() due to NoExec", nil}, + } + for _, test := range tests { + testName := test.src + if len(testName) > 70 { + testName = testName[:70] + } + t.Run(testName, func(t *testing.T) { + testGoAWK(t, test.src, test.in, test.out, test.err, nil, func(config *interp.Config) { + config.Args = test.args + config.NoExec = true + config.NoFileWrites = true + config.NoFileReads = true + }) + }) + } +} + +func TestConfigVarsCorrect(t *testing.T) { + prog, err := parser.ParseProgram([]byte(`BEGIN { print x }`), nil) + if err != nil { + t.Fatalf("error parsing: %v", err) + } + config := &interp.Config{ + Stdin: strings.NewReader(""), + Output: &bytes.Buffer{}, + Error: ioutil.Discard, + Vars: []string{"FS"}, + } + _, err = interp.ExecProgram(prog, config) + expected := "length of config.Vars must be a multiple of 2, not 1" + if err == nil || err.Error() != expected { + t.Fatalf("expected error %q, got: %v", expected, err) + } +} + +func TestShellCommand(t *testing.T) { + testGoAWK(t, `BEGIN { system("echo hello world") }`, "", "hello world\n", "", nil, nil) + + if runtime.GOOS == "windows" { + testGoAWK(t, `BEGIN { system("echo hello world") }`, "", "hello world\n", "", nil, + func(config *interp.Config) { + config.ShellCommand = []string{"cmd.exe", "/c"} + }) + } else { + testGoAWK(t, `BEGIN { system("world") }`, "", "hello world\n", "", nil, + func(config *interp.Config) { + config.ShellCommand = []string{"/bin/echo", "hello"} + }) + testGoAWK(t, `BEGIN { "world" | getline; print }`, "", "hello world\n", "", nil, + func(config *interp.Config) { + config.ShellCommand = []string{"/bin/echo", "hello"} + }) + testGoAWK(t, `BEGIN { print "hello world" | "-" }`, "", "hello world\n", "", nil, + func(config *interp.Config) { + config.ShellCommand = []string{"/bin/cat"} + }) + testGoAWK(t, `BEGIN { print system("echo hi") }`, "", "exec: \"foobar3982\": executable file not found in $PATH\n-1\n", "", nil, + func(config *interp.Config) { + config.ShellCommand = []string{"foobar3982"} + }) + } +} + +func TestSystemCommandNotFound(t *testing.T) { + prog, err := parser.ParseProgram([]byte(`BEGIN { print system("foobar3982") }`), nil) + if err != nil { + t.Fatalf("error parsing: %v", err) + } + outBuf := &concurrentBuffer{} + config := &interp.Config{ + Output: outBuf, + Error: outBuf, + } + _, err = interp.ExecProgram(prog, config) + if err != nil { + t.Fatalf("expected no error, got %v", err) + } + got := outBuf.buffer.String() + if !strings.Contains(got, "foobar3982") || !strings.Contains(got, "not found") { + t.Fatalf(`expected output to contain "foobar3982" and "not found", got %q`, got) + } +} + +type mockFlusher struct { + bytes.Buffer + flushes []string +} + +func (f *mockFlusher) Flush() error { + f.flushes = append(f.flushes, normalizeNewlines(f.String())) + return nil +} + +func TestFlushes(t *testing.T) { + src := ` +BEGIN { + print fflush() + print "x" + print "y" + print fflush() + print "z" + print fflush("") +}` + f := &mockFlusher{} + testGoAWK(t, src, "", "", "", nil, func(config *interp.Config) { + config.Output = f + }) + // The last one is from GoAWK itself flushing output after finishing + expected := []string{"", "0\nx\ny\n", "0\nx\ny\n0\nz\n", "0\nx\ny\n0\nz\n0\n"} + if !reflect.DeepEqual(f.flushes, expected) { + t.Fatalf("expected flushes %q, got %q", expected, f.flushes) + } + + // Ensure output is flushed before getline reads from stdin + src = ` +BEGIN { + printf "Prompt: " + getline x + print x +}` + f = &mockFlusher{} + testGoAWK(t, src, "42\n", "", "", nil, func(config *interp.Config) { + config.Output = f + }) + expected = []string{"Prompt: ", "Prompt: 42\n"} + if !reflect.DeepEqual(f.flushes, expected) { + t.Fatalf("expected flushes %q, got %q", expected, f.flushes) + } + + // Ensure output is flushed before system() + src = ` +BEGIN { + print "one" + system("echo .") + print "two" +}` + f = &mockFlusher{} + testGoAWK(t, src, "", "", "", nil, func(config *interp.Config) { + config.Output = f + }) + expected = []string{"one\n", "one\n.\ntwo\n"} + if !reflect.DeepEqual(f.flushes, expected) { + t.Fatalf("expected flushes %q, got %q", expected, f.flushes) + } +} + +type errorFlusher struct { + bytes.Buffer +} + +func (f *errorFlusher) Flush() error { + return errors.New("that's not good, hackers") +} + +func TestFlushError(t *testing.T) { + f := &errorFlusher{} + testGoAWK(t, `BEGIN { fflush() }`, "", "", "", nil, func(config *interp.Config) { + config.Output = f + config.Error = f + }) + expected := "error flushing \"stdout\": that's not good, hackers\n" + if f.String() != expected { + t.Fatalf("expected/got:\n%q\n%q", expected, f.String()) + } +} + +func TestEnviron(t *testing.T) { + os.Setenv("GOAWK_TEN", "10") // to test that ENVIRON[x] is numeric string + src := ` +BEGIN { + n = 0 + for (k in ENVIRON) + n++ + print(n, ENVIRON["USER"], ENVIRON["GOAWK_TEN"] < 2) +}` + expected := fmt.Sprintf("%d %s 0\n", len(os.Environ()), os.Getenv("USER")) + testGoAWK(t, src, "", expected, "", nil, nil) + + expected = "2 bob 0\n" + testGoAWK(t, src, "", expected, "", nil, func(config *interp.Config) { + config.Environ = []string{"USER", "bob", "GOAWK_TEN", "10"} + }) + + expected = "0 1\n" + testGoAWK(t, src, "", expected, "", nil, func(config *interp.Config) { + config.Environ = []string{} + }) + + testGoAWK(t, src, "", "", "length of config.Environ must be a multiple of 2, not 3", nil, func(config *interp.Config) { + config.Environ = []string{"b", "a", "d"} + }) +} + +func TestExit(t *testing.T) { + tests := []struct { + src string + out string + status int + }{ + {`BEGIN { print "x"; exit; print "y" } { print "a" } END { print "z" }`, "x\nz\n", 0}, + {`BEGIN { print "x"; exit 1+2; print "y" } { print "a" } END { print "z" }`, "x\nz\n", 3}, + {`{ print "x"; exit; print "y" } END { print "z" }`, "x\nz\n", 0}, + {`{ print "x"; exit 1+2; print "y" } END { print "z" }`, "x\nz\n", 3}, + {`END { print "x"; exit; print "y" }`, "x\n", 0}, + {`END { print "x"; exit 1+2; print "y" }`, "x\n", 3}, + } + for _, test := range tests { + t.Run(test.src, func(t *testing.T) { + prog, err := parser.ParseProgram([]byte(test.src), nil) + if err != nil { + t.Fatalf("error parsing: %v", err) + } + outBuf := &bytes.Buffer{} + config := &interp.Config{ + Stdin: strings.NewReader("line\n"), + Output: outBuf, + } + status, err := interp.ExecProgram(prog, config) + if err != nil { + t.Fatalf("error interpreting: %v", err) + } + normalized := normalizeNewlines(outBuf.String()) + if normalized != test.out { + t.Fatalf("expected/got:\n%q\n%q", test.out, normalized) + } + if status != test.status { + t.Fatalf("expected status %d, got %d", test.status, status) + } + }) + } +} + +type csvTest struct { + src string + in string + out string + err string + configure func(config *interp.Config) +} + +var csvTests = []csvTest{ + // INPUTMODE combinations + {`BEGIN { INPUTMODE="" } { print $1, $3 }`, "name,email\nBob C. Smith,bob@smith.com\nJane X. Brown,jane@brown.com", "name,email \nBob Smith,bob@smith.com\nJane Brown,jane@brown.com\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } { print $1, $3 }`, "name,email,age\nBob\tSmith,bob@smith.com,42\n\nJane,jane@brown.com,37\n# not a comment", "Bob\tSmith 42\nJane 37\n# not a comment \n", "", nil}, + {`BEGIN { INPUTMODE="csv separator=|" } { print $1, $3 }`, "Bob,Smith|bob@smith.com|42\nJane|jane@brown.com|37", "Bob,Smith 42\nJane 37\n", "", nil}, + {`BEGIN { INPUTMODE="csv comment=#" } { print $1, $3 }`, "# this is a comment\nBob\tSmith,bob@smith.com,42\nJane,jane@brown.com,37", "Bob\tSmith 42\nJane 37\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { print $1, $3 }`, "name,email,age\nBob,bob@smith.com,42\nJane,jane@brown.com,37", "name age\nBob 42\nJane 37\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } { print @"age", @"name" }`, "name,email,age\nBob,bob@smith.com,42\nJane,jane@brown.com,37", "42 Bob\n37 Jane\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } { x="name"; print @"age", @x }`, "name,age\nBob,42", "42 Bob\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { print @"age", @"name" }`, "name,email,age\nBob,bob@smith.com,42\nJane,jane@brown.com,37", "", `@ only supported if header parsing enabled; use -H or add "header" to INPUTMODE`, nil}, + {`BEGIN { INPUTMODE="tsv header" } { print $1, $3 }`, "name\temail\tage\nBob,Smith\tbob@smith.com\t42\nJane\tjane@brown.com\t37", "Bob,Smith 42\nJane 37\n", "", nil}, + + // OUTPUTMODE combinations + {`BEGIN { OUTPUTMODE="csv" } { print $2, $1 }`, "a\"b c\nd e", "c,\"a\"\"b\"\ne,d\n", "", nil}, + {`BEGIN { OUTPUTMODE="tsv" } { print $2, $1 }`, "a\"b c\nd e", "c\t\"a\"\"b\"\ne\td\n", "", nil}, + {`BEGIN { OUTPUTMODE="csv separator=|" } { print $2, $1 }`, "a\"b c\nd e", "c|\"a\"\"b\"\ne|d\n", "", nil}, + + // Both input and output in CSV (or TSV) mode + {`BEGIN { INPUTMODE="csv header"; OUTPUTMODE="csv"; print "age", "name" } { print $2, $1 }`, "name,age\nBob,42\n\"J B\",37\n\"A\"\"B\",7", "age,name\n42,Bob\n37,J B\n7,\"A\"\"B\"\n", "", nil}, + {`BEGIN { INPUTMODE="csv"; OUTPUTMODE="tsv"; } { $1=$1; print }`, "name,age\nBob,42\n\"J B\",37\n\"A\"\"B\",7", "name\tage\nBob\t42\nJ B\t37\n\"A\"\"B\"\t7\n", "", nil}, + + // Configure via interp.Config struct + {`{ print $2, $1 }`, "name,age\nBob,42", "age name\n42 Bob\n", "", func(config *interp.Config) { + config.InputMode = interp.CSVMode + }}, + {`{ print $2, $1 }`, "name\tage\nBob\t42", "age name\n42 Bob\n", "", func(config *interp.Config) { + config.InputMode = interp.TSVMode + }}, + {`{ print $2, $1 }`, "# comment\nBob;42", "42 Bob\n", "", func(config *interp.Config) { + config.InputMode = interp.CSVMode + config.CSVInput.Separator = ';' + config.CSVInput.Comment = '#' + }}, + {`{ print $1, $2 }`, "", "", "input mode configuration not valid in default input mode", func(config *interp.Config) { + config.CSVInput.Separator = ';' + }}, + {`{ print $2, $1 }`, "Bob,42\nJane,37", "42\tBob\n37\tJane\n", "", func(config *interp.Config) { + config.InputMode = interp.CSVMode + config.OutputMode = interp.TSVMode + }}, + {`BEGIN { INPUTMODE="tsv header"; OUTPUTMODE="csv" } { print @"age", @"name" }`, "name\tage\nBob\t42", "42,Bob\n", "", func(config *interp.Config) { + config.InputMode = interp.CSVMode // will be overridden by BEGIN + config.OutputMode = interp.TSVMode + }}, + {`{ print @"age", @"name" }`, "name\tage\nBob\t42", "42,Bob\n", "", func(config *interp.Config) { + config.InputMode = interp.CSVMode // will be overridden by Vars + config.OutputMode = interp.TSVMode + config.Vars = []string{"INPUTMODE", "tsv header", "OUTPUTMODE", "csv"} + }}, + {`{ print $2, $1 }`, "Bob 42", "42,Bob\n", "", func(config *interp.Config) { + config.OutputMode = interp.CSVMode + }}, + {`{ print $2, $1 }`, "Bob 42", "42\tBob\n", "", func(config *interp.Config) { + config.OutputMode = interp.TSVMode + }}, + {`{ print $2, $1 }`, "Bob 42", "42;Bob\n", "", func(config *interp.Config) { + config.OutputMode = interp.CSVMode + config.CSVOutput.Separator = ';' + }}, + {`{ print $1, $2 }`, "", "", "output mode configuration not valid in default output mode", func(config *interp.Config) { + config.CSVOutput.Separator = ';' + }}, + + // $0 still works as expected in CSV mode + {`BEGIN { INPUTMODE="csv header" } { print }`, "name,age\nBob,42\nJane,37", "Bob,42\nJane,37\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } { print $0 }`, "name,age\nBob,42\nJane,37", "Bob,42\nJane,37\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } { print $0; $0=NR; print $0 }`, "name,age\nBob,42\nJane,37", "Bob,42\n1\nJane,37\n2\n", "", nil}, + {`BEGIN { INPUTMODE="csv header comment=#" } { print $0 } END { for (i=1; i in FIELDS; i++) print i, FIELDS[i] }`, + "# comment\n\nname,age\n# comment\n\nBob,42\n# comment\nJane,37\n\nFoo,5", + "Bob,42\nJane,37\nFoo,5\n1 name\n2 age\n", "", nil}, + + // CSV filters + {`BEGIN { INPUTMODE="csv header" } /foo/ { print $2 }`, "id,type\n1,food\n2,bar\n3,foo\n", "food\nfoo\n", "", nil}, + {`BEGIN { INPUTMODE="csv header" } $1==2 { print $2 }`, "id,type\n1,food\n2,bar\n3,foo\n", "bar\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { s += $-1 } END { print s }`, "a,1\nb,2\nc,3\n", "6\n", "", nil}, + + // Updating fields + {`BEGIN { INPUTMODE="csv" } { $1 = $1 $1; print $1, $2 }`, "a,1\nb,2", "aa 1\nbb 2\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { $1 = $1 $1; print }`, "a,1\nb,2", "aa 1\nbb 2\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { $0 = "X,3"; print $1, $2 }`, "a,1\nb,2", "X 3\nX 3\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } { $0 = "X,3"; print }`, "a,1\nb,2", "X,3\nX,3\n", "", nil}, + {`BEGIN { INPUTMODE=OUTPUTMODE="csv" } { $1 = $1 $1; print $1, $2 }`, "a,1\nb,2", "aa,1\nbb,2\n", "", nil}, + {`BEGIN { INPUTMODE=OUTPUTMODE="csv" } { $1 = $1 $1; print }`, "a,1\nb,2", "aa,1\nbb,2\n", "", nil}, + {`BEGIN { INPUTMODE=OUTPUTMODE="csv" } { $0 = "X,3"; print $1, $2 }`, "a,1\nb,2", "X,3\nX,3\n", "", nil}, + {`BEGIN { INPUTMODE=OUTPUTMODE="csv" } { $0 = "X,3"; print }`, "a,1\nb,2", "X,3\nX,3\n", "", nil}, + {`BEGIN { OUTPUTMODE="csv"; $0 = "a b c"; printf "%s|%s %s %s\n", $0, $1, $2, $3; NF=2; printf "%s|%s %s\n", $0, $1, $2 }`, "", "a b c|a b c\na,b|a b\n", "", nil}, + {`BEGIN { OUTPUTMODE="csv"; $0 = "a b c"; printf "%s|%s %s %s\n", $0, $1, $2, $3; NF=4; printf "%s|%s %s %s %s\n", $0, $1, $2, $3, $4 }`, "", "a b c|a b c\na,b,c,|a b c \n", "", nil}, + + // FIELDS array + {`BEGIN { INPUTMODE="csv header" } NR==1 { for (i=1; i in FIELDS; i++) print i, FIELDS[i] }`, "name,email,age\na,b,c", "1 name\n2 email\n3 age\n", "", nil}, + {`BEGIN { INPUTMODE="csv" } NR==1 { for (i=1; i in FIELDS; i++) print FIELDS[i] }`, "name,email,age\na,b,c", "", "", nil}, + + // Parsing and formatting of INPUTMODE and OUTPUTMODE special variables + {`BEGIN { INPUTMODE="csv separator=,"; print INPUTMODE }`, "", "csv\n", "", nil}, + {`BEGIN { INPUTMODE="csv header=true comment=# separator=|"; print INPUTMODE }`, "", "csv separator=| comment=# header\n", "", nil}, + {`BEGIN { OUTPUTMODE="csv separator=,"; printf "%s", OUTPUTMODE }`, "", "csv", "", nil}, + {`BEGIN { OUTPUTMODE="csv separator=|"; printf "%s", OUTPUTMODE }`, "", "csv separator=|", "", nil}, + + // Ignores UTF-8 byte order mark (BOM) at start of CSV file + {`BEGIN { INPUTMODE="csv" } { print $1=="foo" }`, "\ufefffoo,bar\n\ufefffoo,bar", "1\n0\n", "", nil}, + + // Error handling when parsing INPUTMODE and OUTPUTMODE + {`BEGIN { INPUTMODE="xyz" }`, "", "", `invalid input mode "xyz"`, nil}, + {`BEGIN { INPUTMODE="csv separator=foo" }`, "", "", `invalid CSV/TSV separator "foo"`, nil}, + {`BEGIN { INPUTMODE="csv comment=bar" }`, "", "", `invalid CSV/TSV comment character "bar"`, nil}, + {`BEGIN { INPUTMODE="csv header=x" }`, "", "", `invalid header value "x"`, nil}, + {`BEGIN { INPUTMODE="csv foo=bar" }`, "", "", `invalid input mode key "foo"`, nil}, + {`BEGIN { OUTPUTMODE="xyz" }`, "", "", `invalid output mode "xyz"`, nil}, + {`BEGIN { OUTPUTMODE="csv separator=foo" }`, "", "", `invalid CSV/TSV separator "foo"`, nil}, + {`BEGIN { OUTPUTMODE="csv foo=bar" }`, "", "", `invalid output mode key "foo"`, nil}, + + // Other errors + {`BEGIN { @"x" = "y" }`, "", "", "parse error at 1:14: assigning @ expression not supported", nil}, + {`BEGIN { x="a"; @x = "y" }`, "", "", "parse error at 1:19: assigning @ expression not supported", nil}, + {`BEGIN { @"x" += "y" }`, "", "", "parse error at 1:14: assigning @ expression not supported", nil}, + {`BEGIN { x="a"; @x += "y" }`, "", "", "parse error at 1:19: assigning @ expression not supported", nil}, +} + +func TestCSV(t *testing.T) { + for _, test := range csvTests { + testName := test.src + if len(testName) > 70 { + testName = testName[:70] + } + t.Run(testName, func(t *testing.T) { + testGoAWK(t, test.src, test.in, test.out, test.err, nil, test.configure) + }) + } +} + +func TestCSVMultiRead(t *testing.T) { + tests := []struct { + name string + src string + reads []string + out string + }{{ + name: "UnquotedHeader", + src: `BEGIN { INPUTMODE="csv header"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"name,age\n", "Bob", ",42\n", "", "Jill,", "37", ""}, + out: "Bob,42|Bob|42\nJill,37|Jill|37\n", + }, { + name: "QuotedHeader", + src: `BEGIN { INPUTMODE="csv header"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"name,age\n", "\"Bo", "b\"", ",42\n", "\"Ji\n", "ll\",", "37"}, + out: "\"Bob\",42|Bob|42\n\"Ji\nll\",37|Ji\nll|37\n", + }, { + name: "UnquotedNewline", + src: `BEGIN { INPUTMODE="csv header"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"name,age\n", "Bob", ",42\n", "Jill,", "37", "\n"}, + out: "Bob,42|Bob|42\nJill,37|Jill|37\n", + }, { + name: "QuotedNewline", + src: `BEGIN { INPUTMODE="csv header"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"name,age\n", "\"Bo", "b\"", ",42\n", "\"Ji\n", "ll\",", "37\n"}, + out: "\"Bob\",42|Bob|42\n\"Ji\nll\",37|Ji\nll|37\n", + }, { + name: "UnquotedNoHeader", + src: `BEGIN { INPUTMODE="csv"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"Bob", ",42\n", "", "Jill,", "37", ""}, + out: "Bob,42|Bob|42\nJill,37|Jill|37\n", + }, { + name: "QuotedNoHeader", + src: `BEGIN { INPUTMODE="csv"; OFS="|" } { print $0, $1, $2 }`, + reads: []string{"\"Bo", "b\"", ",42\n", "\"Ji\n", "ll\",", "37\n"}, + out: "\"Bob\",42|Bob|42\n\"Ji\nll\",37|Ji\nll|37\n", + }, { + name: "QuotedCRLF", + src: `BEGIN { INPUTMODE="csv" } { printf "%s|%s|%s", $0, $1, $2 }`, + reads: []string{"\"Ji\r\n", "ll\",", "37"}, + out: "\"Ji\nll\",37|Ji\nll|37", + }} + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + prog, err := parser.ParseProgram([]byte(test.src), nil) + if err != nil { + t.Fatalf("error parsing program: %v", err) + } + outBuf := &concurrentBuffer{} + config := &interp.Config{ + Stdin: &sliceReader{reads: test.reads}, + Output: outBuf, + Error: outBuf, + } + status, err := interp.ExecProgram(prog, config) + if err != nil { + t.Fatalf("error executing program: %v", err) + } + out := outBuf.String() + if runtime.GOOS == "windows" { + out = normalizeNewlines(out) + } + if out != test.out { + t.Fatalf("expected/got:\n%q\n%q", test.out, out) + } + if status != 0 { + t.Fatalf("expected status 0, got %d", status) + } + }) + } +} + +type sliceReader struct { + reads []string +} + +func (r *sliceReader) Read(buf []byte) (int, error) { + if len(r.reads) == 0 { + return 0, io.EOF + } + n := copy(buf, r.reads[0]) + if n < len(r.reads[0]) { + r.reads[0] = r.reads[0][:len(buf)] + } else { + r.reads = r.reads[1:] + } + return n, nil +} + +func benchmarkProgram(b *testing.B, funcs map[string]interface{}, + input, expected, srcFormat string, args ...interface{}, +) { + b.StopTimer() + src := fmt.Sprintf(srcFormat, args...) + parserConfig := &parser.ParserConfig{ + Funcs: funcs, + } + prog, err := parser.ParseProgram([]byte(src), parserConfig) + if err != nil { + b.Fatalf("error parsing %s: %v", b.Name(), err) + } + outBuf := &bytes.Buffer{} + config := &interp.Config{ + Stdin: strings.NewReader(input), + Output: outBuf, + Error: ioutil.Discard, + Funcs: funcs, + } + b.StartTimer() + _, err = interp.ExecProgram(prog, config) + b.StopTimer() + if err != nil { + b.Fatalf("error interpreting %s: %v", b.Name(), err) + } + if expected != "" { + expected += "\n" + } + outStr := strings.Replace(outBuf.String(), "\r\n", "\n", -1) + if outStr != expected { + b.Fatalf("expected/got:\n%q\n%q", expected, outStr) + } +} + +func BenchmarkGlobalVars(b *testing.B) { + benchmarkProgram(b, nil, "", "a 1", ` +BEGIN { + for (i = 0; i < %d; i++) { + x = 1; y = "a"; t = x; x = y; y = t + x = 1; y = "a"; t = x; x = y; y = t + x = 1; y = "a"; t = x; x = y; y = t + x = 1; y = "a"; t = x; x = y; y = t + x = 1; y = "a"; t = x; x = y; y = t + } + print x, y +} +`, b.N) +} + +func BenchmarkLocalVars(b *testing.B) { + benchmarkProgram(b, nil, "", "b 2", ` +function f(i, x, y, t) { + for (i = 0; i < %d; i++) { + x = 2; y = "b"; t = x; x = y; y = t + x = 2; y = "b"; t = x; x = y; y = t + x = 2; y = "b"; t = x; x = y; y = t + x = 2; y = "b"; t = x; x = y; y = t + x = 2; y = "b"; t = x; x = y; y = t + } + print x, y +} + +BEGIN { + f() +} +`, b.N) +} + +func BenchmarkIncrDecr(b *testing.B) { + benchmarkProgram(b, nil, "", "0 10", ` +BEGIN { + for (i = 0; i < %d; i++) { + x++; x++; x++; x++; x++; x++; x++; x++; x++; x++ + y = x + x--; x--; x--; x--; x--; x--; x--; x--; x--; x-- + } + print x, y +} +`, b.N) +} + +func BenchmarkSimpleBuiltins(b *testing.B) { + benchmarkProgram(b, nil, "", "", ` +BEGIN { + for (i = 0; i < %d; i++) { + sin(0); cos(0); exp(0); log(1); sqrt(2); int("x"); + sin(0); cos(0); exp(0); log(1); sqrt(2); int("x"); + sin(0); cos(0); exp(0); log(1); sqrt(2); int("x"); + sin(0); cos(0); exp(0); log(1); sqrt(2); int("x"); + sin(0); cos(0); exp(0); log(1); sqrt(2); int("x"); + } +} +`, b.N) +} + +func BenchmarkBuiltinMatch(b *testing.B) { + benchmarkProgram(b, nil, "", "21", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog" + for (i = 0; i < %d; i++) { + match(s, /j[a-z]+p/); match(s, /j[a-z]+p/) + match(s, /j[a-z]+p/); match(s, /j[a-z]+p/) + match(s, /j[a-z]+p/); match(s, /j[a-z]+p/) + match(s, /j[a-z]+p/); match(s, /j[a-z]+p/) + match(s, /j[a-z]+p/); x = match(s, /j[a-z]+p/) + } + print x +} +`, b.N) +} + +func BenchmarkBuiltinLength(b *testing.B) { + benchmarkProgram(b, nil, "", "134", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog." + for (i = 0; i < %d; i++) { + length(s); length(s); length(s); length(s); length(s); + length(s); length(s); length(s); length(s); length(s); + length(s); length(s); length(s); length(s); length(s); + length(s); length(s); length(s); length(s); length(s); + length(s); length(s); length(s); length(s); x = length(s); + } + print x +} +`, b.N) +} + +func BenchmarkBuiltinIndex(b *testing.B) { + benchmarkProgram(b, nil, "", "134", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog!?!" + for (i = 0; i < %d; i++) { + index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!") + index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!") + index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!") + index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!") + index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); index(s, "!?!"); x = index(s, "!?!") + } + print x +} +`, b.N) +} + +func BenchmarkBuiltinSubstr(b *testing.B) { + benchmarkProgram(b, nil, "", " brown fox", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog!?!" + for (i = 0; i < %d; i++) { + substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10) + substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10) + substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10) + substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10) + substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); substr(s, 100, 10); x = substr(s, 100, 10) + } + print x +} +`, b.N) +} + +func BenchmarkBuiltinSplitSpace(b *testing.B) { + benchmarkProgram(b, nil, "", "27", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog!?!" + for (i = 0; i < %d; i++) { + split(s, a, " "); split(s, a, " "); split(s, a, " ") + split(s, a, " "); split(s, a, " "); split(s, a, " ") + split(s, a, " "); split(s, a, " "); split(s, a, " ") + split(s, a, " "); split(s, a, " "); split(s, a, " ") + split(s, a, " "); split(s, a, " "); split(s, a, " ") + } + for (k in a) n++ + print n +} +`, b.N) +} + +func BenchmarkBuiltinSplitRegex(b *testing.B) { + benchmarkProgram(b, nil, "", "22", ` +BEGIN { + s = "a fox ab fax abc fix a fox ab fax abc fix a fox ab fax abc fix a fox ab fax abc fix a fox ab fax abc fix a fox ab fax abc fix a fox ab fax abc fix" + for (i = 0; i < %d; i++) { + split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x") + split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x") + split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x") + split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x") + split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x"); split(s, a, "f[a-z]x") + } + for (k in a) n++ + print n +} +`, b.N) +} + +func BenchmarkBuiltinSub(b *testing.B) { + benchmarkProgram(b, nil, "", "1 164", ` +BEGIN { + for (i = 0; i < %d; i++) { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog." + sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s) + sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s) + sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s) + sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s) + sub(/f[a-z]x/, "foxes", s); sub(/f[a-z]x/, "foxes", s); x = sub(/f[a-z]x/, "foxes", s) + } + print x, length(s) +} +`, b.N) +} + +func BenchmarkBuiltinSubAmpersand(b *testing.B) { + benchmarkProgram(b, nil, "", "1 164", ` +BEGIN { + for (i = 0; i < %d; i++) { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog." + sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s) + sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s) + sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s) + sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s) + sub(/f[a-z]x/, "&es", s); sub(/f[a-z]x/, "&es", s); x = sub(/f[a-z]x/, "&es", s) + } + print x, length(s) +} +`, b.N) +} + +func BenchmarkBuiltinGsub(b *testing.B) { + benchmarkProgram(b, nil, "", "3 224", ` +BEGIN { + for (i = 0; i < %d; i++) { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog." + gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s) + gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s) + gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s) + gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s) + gsub(/f[a-z]x/, "foxes", s); gsub(/f[a-z]x/, "foxes", s); x = gsub(/f[a-z]x/, "foxes", s) + } + print x, length(s) +} +`, b.N) +} + +func BenchmarkBuiltinGsubAmpersand(b *testing.B) { + benchmarkProgram(b, nil, "", "3 224", ` +BEGIN { + for (i = 0; i < %d; i++) { + s = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog." + gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s) + gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s) + gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s) + gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s) + gsub(/f[a-z]x/, "&es", s); gsub(/f[a-z]x/, "&es", s); x = gsub(/f[a-z]x/, "&es", s) + } + print x, length(s) +} +`, b.N) +} + +func BenchmarkBuiltinSprintf(b *testing.B) { + benchmarkProgram(b, nil, "", "A 123 foo 3.14", ` +BEGIN { + x = "foo" + y = 3.14159 + for (i = 0; i < %d; i++) { + sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y) + sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y) + sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y) + sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y) + sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y); s = sprintf("%%c %%d %%5s %%.3g", 65, 123, x, y) + } + print s +} +`, b.N) +} + +func BenchmarkRecursiveFunc(b *testing.B) { + benchmarkProgram(b, nil, "", "55", ` +function fib(n) { + if (n <= 2) { + return 1 + } + return fib(n-1) + fib(n-2) +} + +BEGIN { + for (i = 0; i < %d; i++) { + res = fib(10) + } + print res +} +`, b.N) +} + +func BenchmarkFuncCall(b *testing.B) { + benchmarkProgram(b, nil, "", "75", ` +function add(a, b) { + return a + b +} + +BEGIN { + for (i = 0; i < %d; i++) { + sum = add(0, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + } + print sum +} +`, b.N) +} + +func BenchmarkNativeFunc(b *testing.B) { + funcs := map[string]interface{}{ + "add": func(a, b float64) float64 { return a + b }, + } + benchmarkProgram(b, funcs, "", "75", ` +BEGIN { + for (i = 0; i < %d; i++) { + sum = add(0, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + sum = add(sum, add(1, add(2, add(3, add(4, 5))))) + } + print sum +} +`, b.N) +} + +func BenchmarkForLoop(b *testing.B) { + benchmarkProgram(b, nil, "", "", ` +BEGIN { + for (i = 0; i < %d; i++) { + for (j = 0; j < 100; j++); + } +} +`, b.N) +} + +func BenchmarkForInLoop(b *testing.B) { + benchmarkProgram(b, nil, "", "", ` +BEGIN { + for (j = 0; j < 100; j++) { + a[j] = j + } + for (i = 0; i < %d; i++) { + for (k in a); + } +} +`, b.N) +} + +func BenchmarkIfStatement(b *testing.B) { + benchmarkProgram(b, nil, "", "0", ` +BEGIN { + c = 1 + d = 0 + for (i = 0; i < %d; i++) { + if (c) { x = 1 } else { x = 0 } + if (c) { x = 1 } else { x = 0 } + if (c) { x = 1 } else { x = 0 } + if (d) { x = 1 } else { x = 0 } + if (d) { x = 1 } else { x = 0 } + if (d) { x = 1 } else { x = 0 } + } + print x +} +`, b.N) +} + +func BenchmarkCondExpr(b *testing.B) { + benchmarkProgram(b, nil, "", "0", ` +BEGIN { + c = 1 + d = 0 + for (i = 0; i < %d; i++) { + x = c ? 1 : 0 + x = c ? 1 : 0 + x = c ? 1 : 0 + x = d ? 1 : 0 + x = d ? 1 : 0 + x = d ? 1 : 0 + } + print x +} +`, b.N) +} + +func BenchmarkSimplePattern(b *testing.B) { + b.StopTimer() + inputLines := []string{} + expectedLines := []string{} + for i := 0; i < b.N; i++ { + if i != 0 && i%2 == 0 { + line := fmt.Sprintf("%d", i) + inputLines = append(inputLines, line) + expectedLines = append(expectedLines, line) + } else { + inputLines = append(inputLines, "") + } + } + input := strings.Join(inputLines, "\n") + expected := strings.Join(expectedLines, "\n") + benchmarkProgram(b, nil, input, expected, "$0") +} + +func BenchmarkGetField(b *testing.B) { + b.StopTimer() + inputLines := []string{} + expectedLines := []string{} + for i := 1; i < b.N+1; i++ { + inputLines = append(inputLines, fmt.Sprintf("%d %d %d", i, i*2, i*3)) + expectedLines = append(expectedLines, fmt.Sprintf("%d %d", i, i*3)) + } + input := strings.Join(inputLines, "\n") + expected := strings.Join(expectedLines, "\n") + benchmarkProgram(b, nil, input, expected, "{ print $1, $3 }") +} + +func BenchmarkSetField(b *testing.B) { + benchmarkProgram(b, nil, "1 2 3", "one 2 three", ` +{ + for (i = 0; i < %d; i++) { + $1 = "one"; $3 = "three" + $1 = "one"; $3 = "three" + $1 = "one"; $3 = "three" + $1 = "one"; $3 = "three" + $1 = "one"; $3 = "three" + } +} +END { + print $0 +} +`, b.N) +} + +func BenchmarkRegexMatch(b *testing.B) { + benchmarkProgram(b, nil, "", "1", ` +BEGIN { + s = "The quick brown fox jumps over the lazy dog" + for (i = 0; i < %d; i++) { + x = s ~ /j[a-z]+p/ + x = s ~ /j[a-z]+p/ + x = s ~ /j[a-z]+p/ + x = s ~ /j[a-z]+p/ + x = s ~ /j[a-z]+p/ + } + print x +} +`, b.N) +} + +func BenchmarkBinaryOperators(b *testing.B) { + benchmarkProgram(b, nil, "", "5.0293", ` +BEGIN { + for (i = 0; i < %d; i++) { + res = (1+2*3/4^5) + (1+2*3/4^5) + (1+2*3/4^5) + (1+2*3/4^5) + (1+2*3/4^5) + } + print res +} +`, b.N) +} + +func BenchmarkConcatTwo(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "20", ` +BEGIN { + x = "0123456789" + for (i = 0; i < %d; i++) { + y = x x + } + print length(y) +} +`, b.N) +} + +func BenchmarkConcatSmall(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "100", ` +BEGIN { + x = "0123456789" + for (i = 0; i < %d; i++) { + y = x x x x x x x x x x + } + print length(y) +} +`, b.N) +} + +func BenchmarkConcatLarge(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "1000000", ` +BEGIN { + x = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + for (i = 0; i < %d; i++) { + y = x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x \ + x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + z = y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y \ + y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y + } + print length(z) +} +`, b.N) +} + +func BenchmarkComparisons(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "1", ` +BEGIN { + for (i = 0; i < %d; i++) { + x = ((((((1 < 2) <= 3) > 4) >= 5) == 6) != 7) + x = ((((((1 < 2) <= 3) > 4) >= 5) == 6) != 7) + x = ((((((1 < 2) <= 3) > 4) >= 5) == 6) != 7) + } + print x +} +`, b.N) +} + +func BenchmarkArrayOperations(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "243", ` +BEGIN { + for (i = 0; i < %d; i++) { + a[0] = 1 + a[0] = a[0] + a[0] + a[0] + a[0] = a[0] + a[0] + a[0] + a[0] = a[0] + a[0] + a[0] + a[0] = a[0] + a[0] + a[0] + a[0] = a[0] + a[0] + a[0] + } + print a[0] +} +`, b.N) +} + +func BenchmarkAssign(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "0 1 2 3 4", ` +BEGIN { + for (i = 0; i < %d; i++) { + v=0; w=1; x=2; y=3; z=4 + v=0; w=1; x=2; y=3; z=4 + v=0; w=1; x=2; y=3; z=4 + v=0; w=1; x=2; y=3; z=4 + v=0; w=1; x=2; y=3; z=4 + } + print v, w, x, y, z +} +`, b.N) +} + +func BenchmarkAugAssign(b *testing.B) { + b.StopTimer() + benchmarkProgram(b, nil, "", "5 -9 729 32 3.0536 2", ` +BEGIN { + for (i = 0; i < %d; i++) { + a = 0; b = 1; c = 3; d = 1024; e = 2; f = 14 + a += 1; b -= 2; c *= 3; d /= 2; e ^= 1.1; f %%= 6 + a += 1; b -= 2; c *= 3; d /= 2; e ^= 1.1; f %%= 6 + a += 1; b -= 2; c *= 3; d /= 2; e ^= 1.1; f %%= 6 + a += 1; b -= 2; c *= 3; d /= 2; e ^= 1.1; f %%= 6 + a += 1; b -= 2; c *= 3; d /= 2; e ^= 1.1; f %%= 6 + } + print a, b, c, d, e, f +} +`, b.N) +} + +func BenchmarkPrint(b *testing.B) { + b.StopTimer() + src := fmt.Sprintf(` +BEGIN { + for (i = 0; i < %d; i++) { + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + print i, "foo", i, "bar" + } +} +`, b.N) + + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + b.StartTimer() + _, err = interp.ExecProgram(prog, &interp.Config{ + Output: ioutil.Discard, + Environ: []string{}, + }) + b.StopTimer() + if err != nil { + b.Fatalf("execute error: %v", err) + } +} + +func BenchmarkPrintf(b *testing.B) { + b.StopTimer() + src := fmt.Sprintf(` +BEGIN { + for (i = 0; i < %d; i++) { + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + printf "%%d %%s %%d %%s\n", i, "foo", i, "bar" + } +} +`, b.N) + + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + b.StartTimer() + _, err = interp.ExecProgram(prog, &interp.Config{ + Output: ioutil.Discard, + Environ: []string{}, + }) + b.StopTimer() + if err != nil { + b.Fatalf("execute error: %v", err) + } +} + +func BenchmarkRepeatExecProgram(b *testing.B) { + prog, err := parser.ParseProgram([]byte(`BEGIN {}`), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + config := interp.Config{ + Output: ioutil.Discard, + Environ: []string{}, + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := interp.ExecProgram(prog, &config) + if err != nil { + b.Fatalf("execute error: %v", err) + } + } +} + +func BenchmarkRepeatNew(b *testing.B) { + prog, err := parser.ParseProgram([]byte(`BEGIN {}`), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + p, err := interp.New(prog) + if err != nil { + b.Fatalf("interp.New error: %v", err) + } + config := interp.Config{ + Output: ioutil.Discard, + Environ: []string{}, + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := p.Execute(&config) + if err != nil { + b.Fatalf("execute error: %v", err) + } + } +} + +func BenchmarkRepeatIOExecProgram(b *testing.B) { + prog, err := parser.ParseProgram([]byte(`{ for (i=1; i<=NF; i++) print $i }`), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + inputStr := "foo bar\nbazz\n" + input := strings.NewReader(inputStr) + var output bytes.Buffer + config := interp.Config{ + Stdin: input, + Output: &output, + Environ: []string{}, + } + expected := "foo\nbar\nbazz\n" + b.ResetTimer() + for i := 0; i < b.N; i++ { + input.Reset(inputStr) + output.Reset() + _, err := interp.ExecProgram(prog, &config) + if err != nil { + b.Fatalf("execute error: %v", err) + } + if output.String() != expected { + b.Fatalf("expected/got:\n%q\n%q", expected, output.String()) + } + } +} + +func BenchmarkRepeatIONew(b *testing.B) { + prog, err := parser.ParseProgram([]byte(`{ for (i=1; i<=NF; i++) print $i }`), nil) + if err != nil { + b.Fatalf("parse error: %v", err) + } + p, err := interp.New(prog) + if err != nil { + b.Fatalf("interp.New error: %v", err) + } + inputStr := "foo bar\nbazz\n" + input := strings.NewReader(inputStr) + var output bytes.Buffer + config := interp.Config{ + Stdin: input, + Output: &output, + Environ: []string{}, + } + expected := "foo\nbar\nbazz\n" + b.ResetTimer() + for i := 0; i < b.N; i++ { + input.Reset(inputStr) + output.Reset() + _, err := p.Execute(&config) + if err != nil { + b.Fatalf("execute error: %v", err) + } + if output.String() != expected { + b.Fatalf("expected/got:\n%q\n%q", expected, output.String()) + } + } +} + +func BenchmarkCSVInputGoAWK(b *testing.B) { + b.StopTimer() + s := 0 + var inputLines []string + for i := 0; i < b.N; i++ { + s += i + inputLines = append(inputLines, fmt.Sprintf(`%d,foo,Bob Smith,"foo,bar,baz",email@example.com`, i)) + } + input := strings.Join(inputLines, "\n") + expected := fmt.Sprintf("%d", s) + src := `BEGIN { INPUTMODE="csv" } { s += $1 } END { print s }` + benchmarkProgram(b, nil, input, expected, src) +} + +func BenchmarkCSVInputReader(b *testing.B) { + b.StopTimer() + s := 0 + var inputLines []string + for i := 0; i < b.N; i++ { + s += i + inputLines = append(inputLines, fmt.Sprintf(`%d,foo,Bob Smith,"foo,bar,baz",email@example.com`, i)) + } + input := strings.Join(inputLines, "\n") + reader := csv.NewReader(strings.NewReader(input)) + total := 0 + b.StartTimer() + for { + record, err := reader.Read() + if err == io.EOF { + break + } + if err != nil { + b.Fatalf("read error: %v", err) + } + v, _ := strconv.Atoi(record[0]) + total += v + } + if s != total { + b.Fatalf("expected %d, got %d", s, total) + } +} + +func BenchmarkCSVOutputGoAWK(b *testing.B) { + b.StopTimer() + var expectedLines []string + for i := 0; i < b.N; i++ { + expectedLines = append(expectedLines, fmt.Sprintf(`%d,foo,Bob Smith,"foo,bar,baz",email@example.com`, i)) + } + expected := strings.Join(expectedLines, "\n") + benchmarkProgram(b, nil, "", expected, ` +BEGIN { + OUTPUTMODE = "csv"; + for (i=0; i<%d; i++) + print i, "foo", "Bob Smith", "foo,bar,baz", "email@example.com" +} +`, b.N) +} + +func BenchmarkCSVOutputWriter(b *testing.B) { + b.StopTimer() + var expectedLines []string + for i := 0; i < b.N; i++ { + expectedLines = append(expectedLines, fmt.Sprintf(`%d,foo,Bob Smith,"foo,bar,baz",email@example.com`, i)) + } + expected := strings.Join(expectedLines, "\n") + "\n" + var buf bytes.Buffer + writer := csv.NewWriter(&buf) + b.StartTimer() + for i := 0; i < b.N; i++ { + err := writer.Write([]string{strconv.Itoa(i), "foo", "Bob Smith", "foo,bar,baz", "email@example.com"}) + if err != nil { + b.Fatalf("write error: %v", err) + } + } + writer.Flush() + b.StopTimer() + output := buf.String() + if output != expected { + b.Fatalf("expected/got:\n%q\n%q\n", expected, output) + } +} + +func normalizeNewlines(s string) string { + return strings.Replace(s, "\r\n", "\n", -1) +} diff --git a/src/tool/awk/interp/io.go b/src/tool/awk/interp/io.go new file mode 100644 index 0000000..e8deecd --- /dev/null +++ b/src/tool/awk/interp/io.go @@ -0,0 +1,899 @@ +// Input/output handling for GoAWK interpreter + +package interp + +import ( + "bufio" + "bytes" + "encoding/csv" + "fmt" + "io" + "io/ioutil" + "os" + "os/exec" + "regexp" + "runtime" + "strconv" + "strings" + "unicode/utf8" + + "github.com/benhoyt/goawk/internal/ast" + . "github.com/benhoyt/goawk/lexer" +) + +// Print a line of output followed by a newline +func (p *interp) printLine(writer io.Writer, line string) error { + err := writeOutput(writer, line) + if err != nil { + return err + } + return writeOutput(writer, p.outputRecordSep) +} + +// Print given arguments followed by a newline (for "print" statement). +func (p *interp) printArgs(writer io.Writer, args []value) error { + switch p.outputMode { + case CSVMode, TSVMode: + fields := make([]string, 0, 7) // up to 7 args won't require a heap allocation + for _, arg := range args { + fields = append(fields, arg.str(p.outputFormat)) + } + err := p.writeCSV(writer, fields) + if err != nil { + return err + } + default: + // Print OFS-separated args followed by ORS (usually newline). + for i, arg := range args { + if i > 0 { + err := writeOutput(writer, p.outputFieldSep) + if err != nil { + return err + } + } + err := writeOutput(writer, arg.str(p.outputFormat)) + if err != nil { + return err + } + } + err := writeOutput(writer, p.outputRecordSep) + if err != nil { + return err + } + } + return nil +} + +func (p *interp) writeCSV(output io.Writer, fields []string) error { + // If output is already a *bufio.Writer (the common case), csv.NewWriter + // will use it directly. This is not explicitly documented, but + // csv.NewWriter calls bufio.NewWriter which calls bufio.NewWriterSize + // with a 4KB buffer, and bufio.NewWriterSize is documented as returning + // the underlying bufio.Writer if it's passed a large enough one. + var flush func() error + _, isBuffered := output.(*bufio.Writer) + if !isBuffered { + // Otherwise create a new buffered writer and flush after writing. + if p.csvOutput == nil { + p.csvOutput = bufio.NewWriterSize(output, 4096) + } else { + p.csvOutput.Reset(output) + } + output = p.csvOutput + flush = p.csvOutput.Flush + } + + // Given the above, creating a new one of these is cheap. + writer := csv.NewWriter(output) + writer.Comma = p.csvOutputConfig.Separator + writer.UseCRLF = runtime.GOOS == "windows" + err := writer.Write(fields) + if err != nil { + return err + } + if flush != nil { + return flush() + } + return nil +} + +// Implement a buffered version of WriteCloser so output is buffered +// when redirecting to a file (eg: print >"out") +type bufferedWriteCloser struct { + *bufio.Writer + io.Closer +} + +func newBufferedWriteCloser(w io.WriteCloser) *bufferedWriteCloser { + writer := bufio.NewWriterSize(w, outputBufSize) + return &bufferedWriteCloser{writer, w} +} + +func (wc *bufferedWriteCloser) Close() error { + err := wc.Writer.Flush() + if err != nil { + return err + } + return wc.Closer.Close() +} + +// Determine the output stream for given redirect token and +// destination (file or pipe name) +func (p *interp) getOutputStream(redirect Token, destValue value) (io.Writer, error) { + name := p.toString(destValue) + if _, ok := p.inputStreams[name]; ok { + return nil, newError("can't write to reader stream") + } + if w, ok := p.outputStreams[name]; ok { + return w, nil + } + + switch redirect { + case GREATER, APPEND: + if name == "-" { + // filename of "-" means write to stdout, eg: print "x" >"-" + return p.output, nil + } + // Write or append to file + if p.noFileWrites { + return nil, newError("can't write to file due to NoFileWrites") + } + p.flushOutputAndError() // ensure synchronization + flags := os.O_CREATE | os.O_WRONLY + if redirect == GREATER { + flags |= os.O_TRUNC + } else { + flags |= os.O_APPEND + } + w, err := os.OpenFile(name, flags, 0644) + if err != nil { + return nil, newError("output redirection error: %s", err) + } + buffered := newBufferedWriteCloser(w) + p.outputStreams[name] = buffered + return buffered, nil + + case PIPE: + // Pipe to command + if p.noExec { + return nil, newError("can't write to pipe due to NoExec") + } + cmd := p.execShell(name) + w, err := cmd.StdinPipe() + if err != nil { + return nil, newError("error connecting to stdin pipe: %v", err) + } + cmd.Stdout = p.output + cmd.Stderr = p.errorOutput + p.flushOutputAndError() // ensure synchronization + err = cmd.Start() + if err != nil { + p.printErrorf("%s\n", err) + return ioutil.Discard, nil + } + p.commands[name] = cmd + buffered := newBufferedWriteCloser(w) + p.outputStreams[name] = buffered + return buffered, nil + + default: + // Should never happen + panic(fmt.Sprintf("unexpected redirect type %s", redirect)) + } +} + +// Executes code using configured system shell +func (p *interp) execShell(code string) *exec.Cmd { + executable := p.shellCommand[0] + args := p.shellCommand[1:] + args = append(args, code) + if p.checkCtx { + return exec.CommandContext(p.ctx, executable, args...) + } else { + return exec.Command(executable, args...) + } +} + +// Get input Scanner to use for "getline" based on file name +func (p *interp) getInputScannerFile(name string) (*bufio.Scanner, error) { + if _, ok := p.outputStreams[name]; ok { + return nil, newError("can't read from writer stream") + } + if _, ok := p.inputStreams[name]; ok { + return p.scanners[name], nil + } + if name == "-" { + // filename of "-" means read from stdin, eg: getline <"-" + if scanner, ok := p.scanners["-"]; ok { + return scanner, nil + } + scanner := p.newScanner(p.stdin, make([]byte, inputBufSize)) + p.scanners[name] = scanner + return scanner, nil + } + if p.noFileReads { + return nil, newError("can't read from file due to NoFileReads") + } + r, err := os.Open(name) + if err != nil { + return nil, err // *os.PathError is handled by caller (getline returns -1) + } + scanner := p.newScanner(r, make([]byte, inputBufSize)) + p.scanners[name] = scanner + p.inputStreams[name] = r + return scanner, nil +} + +// Get input Scanner to use for "getline" based on pipe name +func (p *interp) getInputScannerPipe(name string) (*bufio.Scanner, error) { + if _, ok := p.outputStreams[name]; ok { + return nil, newError("can't read from writer stream") + } + if _, ok := p.inputStreams[name]; ok { + return p.scanners[name], nil + } + if p.noExec { + return nil, newError("can't read from pipe due to NoExec") + } + cmd := p.execShell(name) + cmd.Stdin = p.stdin + cmd.Stderr = p.errorOutput + r, err := cmd.StdoutPipe() + if err != nil { + return nil, newError("error connecting to stdout pipe: %v", err) + } + p.flushOutputAndError() // ensure synchronization + err = cmd.Start() + if err != nil { + p.printErrorf("%s\n", err) + return bufio.NewScanner(strings.NewReader("")), nil + } + scanner := p.newScanner(r, make([]byte, inputBufSize)) + p.commands[name] = cmd + p.inputStreams[name] = r + p.scanners[name] = scanner + return scanner, nil +} + +// Create a new buffered Scanner for reading input records +func (p *interp) newScanner(input io.Reader, buffer []byte) *bufio.Scanner { + scanner := bufio.NewScanner(input) + switch { + case p.inputMode == CSVMode || p.inputMode == TSVMode: + splitter := csvSplitter{ + separator: p.csvInputConfig.Separator, + sepLen: utf8.RuneLen(p.csvInputConfig.Separator), + comment: p.csvInputConfig.Comment, + header: p.csvInputConfig.Header, + fields: &p.fields, + setFieldNames: p.setFieldNames, + } + scanner.Split(splitter.scan) + case p.recordSep == "\n": + // Scanner default is to split on newlines + case p.recordSep == "": + // Empty string for RS means split on \n\n (blank lines) + splitter := blankLineSplitter{terminator: &p.recordTerminator} + scanner.Split(splitter.scan) + case len(p.recordSep) == 1: + splitter := byteSplitter{sep: p.recordSep[0]} + scanner.Split(splitter.scan) + case utf8.RuneCountInString(p.recordSep) >= 1: + // Multi-byte and single char but multi-byte RS use regex + splitter := regexSplitter{re: p.recordSepRegex, terminator: &p.recordTerminator} + scanner.Split(splitter.scan) + } + scanner.Buffer(buffer, maxRecordLength) + return scanner +} + +// setFieldNames is called by csvSplitter.scan on the first row (if the +// "header" option is specified). +func (p *interp) setFieldNames(names []string) { + p.fieldNames = names + p.fieldIndexes = nil // clear name-to-index cache + + // Populate FIELDS array (mapping of field indexes to field names). + fieldsArray := p.array(ast.ScopeGlobal, p.program.Arrays["FIELDS"]) + for k := range fieldsArray { + delete(fieldsArray, k) + } + for i, name := range names { + fieldsArray[strconv.Itoa(i+1)] = str(name) + } +} + +// Copied from bufio/scan.go in the stdlib: I guess it's a bit more +// efficient than bytes.TrimSuffix(data, []byte("\r")) +func dropCR(data []byte) []byte { + if len(data) > 0 && data[len(data)-1] == '\r' { + return data[:len(data)-1] + } + return data +} + +func dropLF(data []byte) []byte { + if len(data) > 0 && data[len(data)-1] == '\n' { + return data[:len(data)-1] + } + return data +} + +type blankLineSplitter struct { + terminator *string +} + +func (s blankLineSplitter) scan(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + + // Skip newlines at beginning of data + i := 0 + for i < len(data) && (data[i] == '\n' || data[i] == '\r') { + i++ + } + if i >= len(data) { + // At end of data after newlines, skip entire data block + return i, nil, nil + } + start := i + + // Try to find two consecutive newlines (or \n\r\n for Windows) + for ; i < len(data); i++ { + if data[i] != '\n' { + continue + } + end := i + if i+1 < len(data) && data[i+1] == '\n' { + i += 2 + for i < len(data) && (data[i] == '\n' || data[i] == '\r') { + i++ // Skip newlines at end of record + } + *s.terminator = string(data[end:i]) + return i, dropCR(data[start:end]), nil + } + if i+2 < len(data) && data[i+1] == '\r' && data[i+2] == '\n' { + i += 3 + for i < len(data) && (data[i] == '\n' || data[i] == '\r') { + i++ // Skip newlines at end of record + } + *s.terminator = string(data[end:i]) + return i, dropCR(data[start:end]), nil + } + } + + // If we're at EOF, we have one final record; return it + if atEOF { + token = dropCR(dropLF(data[start:])) + *s.terminator = string(data[len(token):]) + return len(data), token, nil + } + + // Request more data + return 0, nil, nil +} + +// Splitter that splits records on the given separator byte +type byteSplitter struct { + sep byte +} + +func (s byteSplitter) scan(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + if i := bytes.IndexByte(data, s.sep); i >= 0 { + // We have a full sep-terminated record + return i + 1, data[:i], nil + } + // If at EOF, we have a final, non-terminated record; return it + if atEOF { + return len(data), data, nil + } + // Request more data + return 0, nil, nil +} + +// Splitter that splits records on the given regular expression +type regexSplitter struct { + re *regexp.Regexp + terminator *string +} + +func (s regexSplitter) scan(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + loc := s.re.FindIndex(data) + // Note: for a regex such as "()", loc[0]==loc[1]. Gawk behavior for this + // case is to match the entire input. + if loc != nil && loc[0] != loc[1] { + *s.terminator = string(data[loc[0]:loc[1]]) // set RT special variable + return loc[1], data[:loc[0]], nil + } + // If at EOF, we have a final, non-terminated record; return it + if atEOF { + *s.terminator = "" + return len(data), data, nil + } + // Request more data + return 0, nil, nil +} + +// Splitter that splits records in CSV or TSV format. +type csvSplitter struct { + separator rune + sepLen int + comment rune + header bool + + recordBuffer []byte + fieldIndexes []int + noBOMCheck bool + + fields *[]string + setFieldNames func(names []string) + rowNum int +} + +// The structure of this code is taken from the stdlib encoding/csv Reader +// code, which is licensed under a compatible BSD-style license. +// +// We don't support all encoding/csv features: FieldsPerRecord is not +// supported, LazyQuotes is always on, and TrimLeadingSpace is always off. +func (s *csvSplitter) scan(data []byte, atEOF bool) (advance int, token []byte, err error) { + // Some CSV files are saved with a UTF-8 BOM at the start; skip it. + if !s.noBOMCheck && len(data) >= 3 && data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF { + data = data[3:] + advance = 3 + s.noBOMCheck = true + } + + origData := data + if atEOF && len(data) == 0 { + // No more data, tell Scanner to stop. + return 0, nil, nil + } + + readLine := func() []byte { + newline := bytes.IndexByte(data, '\n') + var line []byte + switch { + case newline >= 0: + // Process a single line (including newline). + line = data[:newline+1] + data = data[newline+1:] + case atEOF: + // If at EOF, we have a final record without a newline. + line = data + data = data[len(data):] + default: + // Need more data + return nil + } + + // For backwards compatibility, drop trailing \r before EOF. + if len(line) > 0 && atEOF && line[len(line)-1] == '\r' { + line = line[:len(line)-1] + advance++ + } + + return line + } + + // Read line (automatically skipping past empty lines and any comments). + skip := 0 + var line []byte + for { + line = readLine() + if len(line) == 0 { + return 0, nil, nil // Request more data + } + if s.comment != 0 && nextRune(line) == s.comment { + advance += len(line) + skip += len(line) + continue // Skip comment lines + } + if len(line) == lenNewline(line) { + advance += len(line) + skip += len(line) + continue // Skip empty lines + } + break + } + + // Parse each field in the record. + const quoteLen = len(`"`) + tokenHasCR := false + s.recordBuffer = s.recordBuffer[:0] + s.fieldIndexes = s.fieldIndexes[:0] +parseField: + for { + if len(line) == 0 || line[0] != '"' { + // Non-quoted string field + i := bytes.IndexRune(line, s.separator) + field := line + if i >= 0 { + advance += i + s.sepLen + field = field[:i] + } else { + advance += len(field) + field = field[:len(field)-lenNewline(field)] + } + s.recordBuffer = append(s.recordBuffer, field...) + s.fieldIndexes = append(s.fieldIndexes, len(s.recordBuffer)) + if i >= 0 { + line = line[i+s.sepLen:] + continue parseField + } + break parseField + } else { + // Quoted string field + line = line[quoteLen:] + advance += quoteLen + for { + i := bytes.IndexByte(line, '"') + if i >= 0 { + // Hit next quote. + s.recordBuffer = append(s.recordBuffer, line[:i]...) + line = line[i+quoteLen:] + advance += i + quoteLen + switch rn := nextRune(line); { + case rn == '"': + // `""` sequence (append quote). + s.recordBuffer = append(s.recordBuffer, '"') + line = line[quoteLen:] + advance += quoteLen + case rn == s.separator: + // `",` sequence (end of field). + line = line[s.sepLen:] + s.fieldIndexes = append(s.fieldIndexes, len(s.recordBuffer)) + advance += s.sepLen + continue parseField + case lenNewline(line) == len(line): + // `"\n` sequence (end of line). + s.fieldIndexes = append(s.fieldIndexes, len(s.recordBuffer)) + advance += len(line) + break parseField + default: + // `"` sequence (bare quote). + s.recordBuffer = append(s.recordBuffer, '"') + } + } else if len(line) > 0 { + // Hit end of line (copy all data so far). + advance += len(line) + newlineLen := lenNewline(line) + if newlineLen == 2 { + tokenHasCR = true + s.recordBuffer = append(s.recordBuffer, line[:len(line)-2]...) + s.recordBuffer = append(s.recordBuffer, '\n') + } else { + s.recordBuffer = append(s.recordBuffer, line...) + } + line = readLine() + if line == nil { + return 0, nil, nil // Request more data + } + } else { + // Abrupt end of file. + s.fieldIndexes = append(s.fieldIndexes, len(s.recordBuffer)) + advance += len(line) + break parseField + } + } + } + } + + // Create a single string and create slices out of it. + // This pins the memory of the fields together, but allocates once. + strBuf := string(s.recordBuffer) // Convert to string once to batch allocations + fields := make([]string, len(s.fieldIndexes)) + preIdx := 0 + for i, idx := range s.fieldIndexes { + fields[i] = strBuf[preIdx:idx] + preIdx = idx + } + + s.noBOMCheck = true + + if s.rowNum == 0 && s.header { + // Set header field names and advance, but don't return a line (token). + s.rowNum++ + s.setFieldNames(fields) + return advance, nil, nil + } + + // Normal row, set fields and return a line (token). + s.rowNum++ + *s.fields = fields + token = origData[skip:advance] + token = token[:len(token)-lenNewline(token)] + if tokenHasCR { + token = bytes.ReplaceAll(token, []byte{'\r'}, nil) + } + return advance, token, nil +} + +// lenNewline reports the number of bytes for the trailing \n. +func lenNewline(b []byte) int { + if len(b) > 0 && b[len(b)-1] == '\n' { + if len(b) > 1 && b[len(b)-2] == '\r' { + return 2 + } + return 1 + } + return 0 +} + +// nextRune returns the next rune in b or utf8.RuneError. +func nextRune(b []byte) rune { + r, _ := utf8.DecodeRune(b) + return r +} + +// Setup for a new input file with given name (empty string if stdin) +func (p *interp) setFile(filename string) { + p.filename = numStr(filename) + p.fileLineNum = 0 + p.hadFiles = true +} + +// Setup for a new input line (but don't parse it into fields till we +// need to) +func (p *interp) setLine(line string, isTrueStr bool) { + p.line = line + p.lineIsTrueStr = isTrueStr + p.haveFields = false + p.reparseCSV = true +} + +// Ensure that the current line is parsed into fields, splitting it +// into fields if it hasn't been already +func (p *interp) ensureFields() { + if p.haveFields { + return + } + p.haveFields = true + + switch { + case p.inputMode == CSVMode || p.inputMode == TSVMode: + if p.reparseCSV { + scanner := bufio.NewScanner(strings.NewReader(p.line)) + scanner.Buffer(nil, maxRecordLength) + splitter := csvSplitter{ + separator: p.csvInputConfig.Separator, + sepLen: utf8.RuneLen(p.csvInputConfig.Separator), + comment: p.csvInputConfig.Comment, + fields: &p.fields, + } + scanner.Split(splitter.scan) + if !scanner.Scan() { + p.fields = nil + } + } else { + // Normally fields have already been parsed by csvSplitter + } + case p.fieldSep == " ": + // FS space (default) means split fields on any whitespace + p.fields = strings.Fields(p.line) + case p.line == "": + p.fields = nil + case utf8.RuneCountInString(p.fieldSep) <= 1: + // 1-char FS is handled as plain split (not regex) + p.fields = strings.Split(p.line, p.fieldSep) + default: + // Split on FS as a regex + p.fields = p.fieldSepRegex.Split(p.line, -1) + } + + // Special case for when RS=="" and FS is single character, + // split on newline in addition to FS. See more here: + // https://www.gnu.org/software/gawk/manual/html_node/Multiple-Line.html + if p.inputMode == DefaultMode && p.recordSep == "" && utf8.RuneCountInString(p.fieldSep) == 1 { + fields := make([]string, 0, len(p.fields)) + for _, field := range p.fields { + lines := strings.Split(field, "\n") + for _, line := range lines { + trimmed := strings.TrimSuffix(line, "\r") + fields = append(fields, trimmed) + } + } + p.fields = fields + } + + p.fieldsIsTrueStr = p.fieldsIsTrueStr[:0] // avoid allocation most of the time + for range p.fields { + p.fieldsIsTrueStr = append(p.fieldsIsTrueStr, false) + } + p.numFields = len(p.fields) +} + +// Fetch next line (record) of input from current input file, opening +// next input file if done with previous one +func (p *interp) nextLine() (string, error) { + for { + if p.scanner == nil { + if prevInput, ok := p.input.(io.Closer); ok && p.input != p.stdin { + // Previous input is file, close it + _ = prevInput.Close() + } + if p.filenameIndex >= p.argc && !p.hadFiles { + // Moved past number of ARGV args and haven't seen + // any files yet, use stdin + p.input = p.stdin + p.setFile("-") + } else { + if p.filenameIndex >= p.argc { + // Done with ARGV args, all done with input + return "", io.EOF + } + // Fetch next filename from ARGV. Can't use + // getArrayValue() here as it would set the value if + // not present + index := strconv.Itoa(p.filenameIndex) + argvIndex := p.program.Arrays["ARGV"] + argvArray := p.array(ast.ScopeGlobal, argvIndex) + filename := p.toString(argvArray[index]) + p.filenameIndex++ + + // Is it actually a var=value assignment? + matches := varRegex.FindStringSubmatch(filename) + if len(matches) >= 3 { + // Yep, set variable to value and keep going + name, val := matches[1], matches[2] + // Oddly, var=value args must interpret escapes (issue #129) + unescaped, err := Unescape(val) + if err == nil { + val = unescaped + } + err = p.setVarByName(name, val) + if err != nil { + return "", err + } + continue + } else if filename == "" { + // ARGV arg is empty string, skip + p.input = nil + continue + } else if filename == "-" { + // ARGV arg is "-" meaning stdin + p.input = p.stdin + p.setFile("-") + } else { + // A regular file name, open it + if p.noFileReads { + return "", newError("can't read from file due to NoFileReads") + } + input, err := os.Open(filename) + if err != nil { + return "", err + } + p.input = input + p.setFile(filename) + } + } + if p.inputBuffer == nil { // reuse buffer from last input file + p.inputBuffer = make([]byte, inputBufSize) + } + p.scanner = p.newScanner(p.input, p.inputBuffer) + } + p.recordTerminator = p.recordSep // will be overridden if RS is "" or multiple chars + if p.scanner.Scan() { + // We scanned some input, break and return it + break + } + err := p.scanner.Err() + if err != nil { + return "", fmt.Errorf("error reading from input: %s", err) + } + // Signal loop to move onto next file + p.scanner = nil + } + + // Got a line (record) of input, return it + p.lineNum++ + p.fileLineNum++ + return p.scanner.Text(), nil +} + +// Write output string to given writer, producing correct line endings +// on Windows (CR LF). +func writeOutput(w io.Writer, s string) error { + if crlfNewline { + // First normalize to \n, then convert all newlines to \r\n + // (on Windows). NOTE: creating two new strings is almost + // certainly slow; would be better to create a custom Writer. + s = strings.Replace(s, "\r\n", "\n", -1) + s = strings.Replace(s, "\n", "\r\n", -1) + } + _, err := io.WriteString(w, s) + return err +} + +// Close all streams, commands, and so on (after program execution). +func (p *interp) closeAll() { + if prevInput, ok := p.input.(io.Closer); ok { + _ = prevInput.Close() + } + for _, r := range p.inputStreams { + _ = r.Close() + } + for _, w := range p.outputStreams { + _ = w.Close() + } + for _, cmd := range p.commands { + _ = cmd.Wait() + } + if f, ok := p.output.(flusher); ok { + _ = f.Flush() + } + if f, ok := p.errorOutput.(flusher); ok { + _ = f.Flush() + } +} + +// Flush all output streams as well as standard output. Report whether all +// streams were flushed successfully (logging error(s) if not). +func (p *interp) flushAll() bool { + allGood := true + for name, writer := range p.outputStreams { + allGood = allGood && p.flushWriter(name, writer) + } + if _, ok := p.output.(flusher); ok { + // User-provided output may or may not be flushable + allGood = allGood && p.flushWriter("stdout", p.output) + } + return allGood +} + +// Flush a single, named output stream, and report whether it was flushed +// successfully (logging an error if not). +func (p *interp) flushStream(name string) bool { + writer := p.outputStreams[name] + if writer == nil { + p.printErrorf("error flushing %q: not an output file or pipe\n", name) + return false + } + return p.flushWriter(name, writer) +} + +type flusher interface { + Flush() error +} + +// Flush given output writer, and report whether it was flushed successfully +// (logging an error if not). +func (p *interp) flushWriter(name string, writer io.Writer) bool { + flusher, ok := writer.(flusher) + if !ok { + return true // not a flusher, don't error + } + err := flusher.Flush() + if err != nil { + p.printErrorf("error flushing %q: %v\n", name, err) + return false + } + return true +} + +// Flush output and error streams. +func (p *interp) flushOutputAndError() { + if flusher, ok := p.output.(flusher); ok { + _ = flusher.Flush() + } + if flusher, ok := p.errorOutput.(flusher); ok { + _ = flusher.Flush() + } +} + +// Print a message to the error output stream, flushing as necessary. +func (p *interp) printErrorf(format string, args ...interface{}) { + if flusher, ok := p.output.(flusher); ok { + _ = flusher.Flush() // ensure synchronization + } + fmt.Fprintf(p.errorOutput, format, args...) + if flusher, ok := p.errorOutput.(flusher); ok { + _ = flusher.Flush() + } +} diff --git a/src/tool/awk/interp/newexecute.go b/src/tool/awk/interp/newexecute.go new file mode 100644 index 0000000..438fe6d --- /dev/null +++ b/src/tool/awk/interp/newexecute.go @@ -0,0 +1,176 @@ +// The New...Execute API (allows you to efficiently execute the same program repeatedly). + +package interp + +import ( + "context" + "math" + + "github.com/benhoyt/goawk/parser" +) + +const checkContextOps = 1000 // for efficiency, only check context every N instructions + +// Interpreter is an interpreter for a specific program, allowing you to +// efficiently execute the same program over and over with different inputs. +// Use New to create an Interpreter. +// +// Most programs won't need reusable execution, and should use the simpler +// Exec or ExecProgram functions instead. +type Interpreter struct { + interp *interp +} + +// New creates a reusable interpreter for the given program. +// +// Most programs won't need reusable execution, and should use the simpler +// Exec or ExecProgram functions instead. +func New(program *parser.Program) (*Interpreter, error) { + p := newInterp(program) + return &Interpreter{interp: p}, nil +} + +// Execute runs this program with the given execution configuration (input, +// output, and variables) and returns the exit status code of the program. A +// nil config is valid and will use the defaults (zero values). +// +// Internal memory allocations are reused, so calling Execute on the same +// Interpreter instance is significantly more efficient than calling +// ExecProgram multiple times. +// +// I/O state is reset between each run, but variables and the random number +// generator seed are not; use ResetVars and ResetRand to reset those. +// +// It's best to set config.Environ to a non-nil slice, otherwise Execute will +// call the relatively inefficient os.Environ each time. Set config.Environ to +// []string{} if the script doesn't need environment variables, or call +// os.Environ once and set config.Environ to that value each execution. +// +// Note that config.Funcs must be the same value provided to +// parser.ParseProgram, and must not change between calls to Execute. +func (p *Interpreter) Execute(config *Config) (int, error) { + p.interp.resetCore() + p.interp.checkCtx = false + + err := p.interp.setExecuteConfig(config) + if err != nil { + return 0, err + } + + return p.interp.executeAll() +} + +func (p *interp) resetCore() { + p.scanner = nil + for k := range p.scanners { + delete(p.scanners, k) + } + p.input = nil + for k := range p.inputStreams { + delete(p.inputStreams, k) + } + for k := range p.outputStreams { + delete(p.outputStreams, k) + } + for k := range p.commands { + delete(p.commands, k) + } + + p.sp = 0 + p.localArrays = p.localArrays[:0] + p.callDepth = 0 + + p.filename = null() + p.line = "" + p.lineIsTrueStr = false + p.lineNum = 0 + p.fileLineNum = 0 + p.fields = nil + p.fieldsIsTrueStr = nil + p.numFields = 0 + p.haveFields = false + + p.exitStatus = 0 +} + +func (p *interp) resetVars() { + // Reset global scalars + for i := range p.globals { + p.globals[i] = null() + } + + // Reset global arrays + for _, array := range p.arrays { + for k := range array { + delete(array, k) + } + } + + // Reset special variables + p.convertFormat = "%.6g" + p.outputFormat = "%.6g" + p.fieldSep = " " + p.fieldSepRegex = nil + p.recordSep = "\n" + p.recordSepRegex = nil + p.recordTerminator = "" + p.outputFieldSep = " " + p.outputRecordSep = "\n" + p.subscriptSep = "\x1c" + p.matchLength = 0 + p.matchStart = 0 +} + +// ResetVars resets this interpreter's variables, setting scalar variables to +// null, clearing arrays, and resetting special variables such as FS and RS to +// their defaults. +func (p *Interpreter) ResetVars() { + p.interp.resetVars() +} + +// ResetRand resets this interpreter's random number generator seed, so that +// rand() produces the same sequence it would have after calling New. This is +// a relatively CPU-intensive operation. +func (p *Interpreter) ResetRand() { + p.interp.randSeed = 1.0 + p.interp.random.Seed(int64(math.Float64bits(p.interp.randSeed))) +} + +// ExecuteContext is like Execute, but takes a context to allow the caller to +// set an execution timeout or cancel the execution. For efficiency, the +// context is only tested every 1000 virtual machine instructions. +// +// Context handling is not preemptive: currently long-running operations like +// system() won't be interrupted. +func (p *Interpreter) ExecuteContext(ctx context.Context, config *Config) (int, error) { + p.interp.resetCore() + p.interp.checkCtx = ctx != context.Background() && ctx != context.TODO() + p.interp.ctx = ctx + p.interp.ctxDone = ctx.Done() + p.interp.ctxOps = 0 + + err := p.interp.setExecuteConfig(config) + if err != nil { + return 0, err + } + + return p.interp.executeAll() +} + +func (p *interp) checkContext() error { + p.ctxOps++ + if p.ctxOps < checkContextOps { + return nil + } + p.ctxOps = 0 + return p.checkContextNow() +} + +func (p *interp) checkContextNow() error { + select { + case <-p.ctxDone: + return p.ctx.Err() + default: + return nil + } +} diff --git a/src/tool/awk/interp/newexecute_test.go b/src/tool/awk/interp/newexecute_test.go new file mode 100644 index 0000000..32d9f0c --- /dev/null +++ b/src/tool/awk/interp/newexecute_test.go @@ -0,0 +1,163 @@ +// Tests for the New...Execute API. + +package interp_test + +import ( + "bytes" + "context" + "errors" + "strings" + "testing" + "time" + + "github.com/benhoyt/goawk/interp" + "github.com/benhoyt/goawk/parser" +) + +// This definitely doesn't test that everything was reset, but it's a good start. +func TestNewExecute(t *testing.T) { + source := `{ print NR, OFMT, x, y, a["k"], $1, $3; OFMT="%g"; x++; y++; a["k"]++ }` + interpreter := newInterp(t, source) + + // First execution. + var output bytes.Buffer + status, err := interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("one two three\nfour five six\n"), + Output: &output, + }) + if err != nil { + t.Fatalf("error executing: %v", err) + } + if status != 0 { + t.Fatalf("expected status 0, got %d", status) + } + normalized := normalizeNewlines(output.String()) + expected := "1 %.6g one three\n2 %g 1 1 1 four six\n" + if normalized != expected { + t.Fatalf("expected %q, got %q", expected, normalized) + } + + // Second execution, with ResetVars. + output.Reset() + interpreter.ResetVars() + status, err = interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("ONE TWO THREE\nFOUR FIVE SIX\n"), + Output: &output, + Vars: []string{"x", "10"}, + }) + if err != nil { + t.Fatalf("error executing: %v", err) + } + if status != 0 { + t.Fatalf("expected status 0, got %d", status) + } + normalized = normalizeNewlines(output.String()) + expected = "1 %.6g 10 ONE THREE\n2 %g 11 1 1 FOUR SIX\n" + if normalized != expected { + t.Fatalf("expected %q, got %q", expected, normalized) + } + + // Third execution, without ResetVars. + output.Reset() + status, err = interpreter.Execute(&interp.Config{ + Stdin: strings.NewReader("1 2 3\n4 5 6\n"), + Output: &output, + Vars: []string{"x", "100"}, + }) + if err != nil { + t.Fatalf("error executing: %v", err) + } + if status != 0 { + t.Fatalf("expected status 0, got %d", status) + } + normalized = normalizeNewlines(output.String()) + expected = "1 %g 100 2 2 1 3\n2 %g 101 3 3 4 6\n" + if normalized != expected { + t.Fatalf("expected %q, got %q", expected, normalized) + } +} + +func TestResetRand(t *testing.T) { + source := `BEGIN { print rand(), rand(), rand() }` + interpreter := newInterp(t, source) + var output bytes.Buffer + + _, err := interpreter.Execute(&interp.Config{Output: &output}) + if err != nil { + t.Fatalf("error executing: %v", err) + } + original := output.String() + + output.Reset() + _, err = interpreter.Execute(&interp.Config{Output: &output}) + if err != nil { + t.Fatalf("error executing: %v", err) + } + noResetRand := output.String() + if original == noResetRand { + t.Fatalf("expected different random numbers, got %q both times", original) + } + + output.Reset() + interpreter.ResetRand() + _, err = interpreter.Execute(&interp.Config{Output: &output}) + if err != nil { + t.Fatalf("error executing: %v", err) + } + withResetRand := output.String() + if original != withResetRand { + t.Fatalf("expected same random numbers (%q) as original (%q)", withResetRand, original) + } +} + +func TestExecuteContextNoError(t *testing.T) { + interpreter := newInterp(t, `BEGIN {}`) + _, err := interpreter.ExecuteContext(context.Background(), nil) + if err != nil { + t.Fatalf("execute error: %v", err) + } +} + +func TestExecuteContextTimeout(t *testing.T) { + interpreter := newInterp(t, `BEGIN { for (i=0; i<100000000; i++) s+=i }`) // would take about 4s + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Millisecond) + defer cancel() + _, err := interpreter.ExecuteContext(ctx, nil) + if !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("expected DeadlineExceeded error, got: %v", err) + } +} + +func TestExecuteContextCancel(t *testing.T) { + interpreter := newInterp(t, `BEGIN { for (i=0; i<100000000; i++) s+=i }`) // would take about 4s + ctx, cancel := context.WithCancel(context.Background()) + cancel() // cancel it right away + _, err := interpreter.ExecuteContext(ctx, nil) + if !errors.Is(err, context.Canceled) { + t.Fatalf("expected Canceled error, got: %v", err) + } +} + +func TestExecuteContextSystemTimeout(t *testing.T) { + t.Skip("TODO: skipping for now due to #122") + interpreter := newInterp(t, `BEGIN { print system("sleep 4") }`) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Millisecond) + defer cancel() + _, err := interpreter.ExecuteContext(ctx, nil) + if !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("expected DeadlineExceeded error, got: %v", err) + } +} + +func newInterp(t *testing.T, src string) *interp.Interpreter { + t.Helper() + prog, err := parser.ParseProgram([]byte(src), nil) + if err != nil { + t.Fatalf("parse error: %v", err) + } + interpreter, err := interp.New(prog) + if err != nil { + t.Fatalf("interp.New error: %v", err) + } + return interpreter +} diff --git a/src/tool/awk/interp/value.go b/src/tool/awk/interp/value.go new file mode 100644 index 0000000..7ae95d6 --- /dev/null +++ b/src/tool/awk/interp/value.go @@ -0,0 +1,294 @@ +// GoAWK interpreter value type (not exported). + +package interp + +import ( + "fmt" + "math" + "strconv" + "strings" +) + +type valueType uint8 + +const ( + typeNull valueType = iota + typeStr + typeNum + typeNumStr +) + +// An AWK value (these are passed around by value) +type value struct { + typ valueType // Type of value + s string // String value (for typeStr and typeNumStr) + n float64 // Numeric value (for typeNum) +} + +// Create a new null value +func null() value { + return value{} +} + +// Create a new number value +func num(n float64) value { + return value{typ: typeNum, n: n} +} + +// Create a new string value +func str(s string) value { + return value{typ: typeStr, s: s} +} + +// Create a new value to represent a "numeric string" from an input field +func numStr(s string) value { + return value{typ: typeNumStr, s: s} +} + +// Create a numeric value from a Go bool +func boolean(b bool) value { + if b { + return num(1) + } + return num(0) +} + +// String returns a string representation of v for debugging. +func (v value) String() string { + switch v.typ { + case typeStr: + return fmt.Sprintf("str(%q)", v.s) + case typeNum: + return fmt.Sprintf("num(%s)", v.str("%.6g")) + case typeNumStr: + return fmt.Sprintf("numStr(%q)", v.s) + default: + return "null()" + } +} + +// Return true if value is a "true string" (a string or a "numeric string" +// from an input field that can't be converted to a number). If false, +// also return the (possibly converted) number. +func (v value) isTrueStr() (float64, bool) { + switch v.typ { + case typeStr: + return 0, true + case typeNumStr: + f, err := parseFloat(v.s) + if err != nil { + return 0, true + } + return f, false + default: // typeNum, typeNull + return v.n, false + } +} + +// Return Go bool value of AWK value. For numbers or numeric strings, +// zero is false and everything else is true. For strings, empty +// string is false and everything else is true. +func (v value) boolean() bool { + switch v.typ { + case typeStr: + return v.s != "" + case typeNumStr: + f, err := parseFloat(v.s) + if err != nil { + return v.s != "" + } + return f != 0 + default: // typeNum, typeNull + return v.n != 0 + } +} + +// Like strconv.ParseFloat, but allow hex floating point without exponent, and +// allow "+nan" and "-nan" (though they both return math.NaN()). Also disallow +// underscore digit separators. +func parseFloat(s string) (float64, error) { + s = strings.TrimSpace(s) + if len(s) > 1 && (s[0] == '+' || s[0] == '-') { + if len(s) == 4 && hasNaNPrefix(s[1:]) { + // ParseFloat doesn't handle "nan" with sign prefix, so handle it here. + return math.NaN(), nil + } + if len(s) > 3 && hasHexPrefix(s[1:]) && strings.IndexByte(s, 'p') < 0 { + s += "p0" + } + } else if len(s) > 2 && hasHexPrefix(s) && strings.IndexByte(s, 'p') < 0 { + s += "p0" + } + n, err := strconv.ParseFloat(s, 64) + if err == nil && strings.IndexByte(s, '_') >= 0 { + // Underscore separators aren't supported by AWK. + return 0, strconv.ErrSyntax + } + return n, err +} + +// Return value's string value, or convert to a string using given +// format if a number value. Integers are a special case and don't +// use floatFormat. +func (v value) str(floatFormat string) string { + if v.typ == typeNum { + switch { + case math.IsNaN(v.n): + return "nan" + case math.IsInf(v.n, 0): + if v.n < 0 { + return "-inf" + } else { + return "inf" + } + case v.n == float64(int(v.n)): + return strconv.Itoa(int(v.n)) + default: + if floatFormat == "%.6g" { + return strconv.FormatFloat(v.n, 'g', 6, 64) + } + return fmt.Sprintf(floatFormat, v.n) + } + } + // For typeStr and typeNumStr we already have the string, for + // typeNull v.s == "". + return v.s +} + +// Return value's number value, converting from string if necessary +func (v value) num() float64 { + switch v.typ { + case typeStr, typeNumStr: + // Ensure string starts with a float and convert it + return parseFloatPrefix(v.s) + default: // typeNum, typeNull + return v.n + } +} + +var asciiSpace = [256]uint8{'\t': 1, '\n': 1, '\v': 1, '\f': 1, '\r': 1, ' ': 1} + +// Like strconv.ParseFloat, but parses at the start of string and +// allows things like "1.5foo" +func parseFloatPrefix(s string) float64 { + // Skip whitespace at start + i := 0 + for i < len(s) && asciiSpace[s[i]] != 0 { + i++ + } + start := i + + // Parse optional sign and check for NaN and Inf. + if i < len(s) && (s[i] == '+' || s[i] == '-') { + i++ + } + if i+3 <= len(s) { + if hasNaNPrefix(s[i:]) { + return math.NaN() + } + if hasInfPrefix(s[i:]) { + if s[start] == '-' { + return math.Inf(-1) + } + return math.Inf(1) + } + } + + // Parse mantissa: initial digit(s), optional '.', then more digits + if i+2 < len(s) && hasHexPrefix(s[i:]) { + return parseHexFloatPrefix(s, start, i+2) + } + gotDigit := false + for i < len(s) && isDigit(s[i]) { + gotDigit = true + i++ + } + if i < len(s) && s[i] == '.' { + i++ + } + for i < len(s) && isDigit(s[i]) { + gotDigit = true + i++ + } + if !gotDigit { + return 0 + } + + // Parse exponent ("1e" and similar are allowed, but ParseFloat + // rejects them) + end := i + if i < len(s) && (s[i] == 'e' || s[i] == 'E') { + i++ + if i < len(s) && (s[i] == '+' || s[i] == '-') { + i++ + } + for i < len(s) && isDigit(s[i]) { + i++ + end = i + } + } + + floatStr := s[start:end] + f, _ := strconv.ParseFloat(floatStr, 64) + return f // Returns infinity in case of "value out of range" error +} + +func hasHexPrefix(s string) bool { + return s[0] == '0' && (s[1] == 'x' || s[1] == 'X') +} + +func hasNaNPrefix(s string) bool { + return (s[0] == 'n' || s[0] == 'N') && (s[1] == 'a' || s[1] == 'A') && (s[2] == 'n' || s[2] == 'N') +} + +func hasInfPrefix(s string) bool { + return (s[0] == 'i' || s[0] == 'I') && (s[1] == 'n' || s[1] == 'N') && (s[2] == 'f' || s[2] == 'F') +} + +// Helper used by parseFloatPrefix to handle hexadecimal floating point. +func parseHexFloatPrefix(s string, start, i int) float64 { + gotDigit := false + for i < len(s) && isHexDigit(s[i]) { + gotDigit = true + i++ + } + if i < len(s) && s[i] == '.' { + i++ + } + for i < len(s) && isHexDigit(s[i]) { + gotDigit = true + i++ + } + if !gotDigit { + return 0 + } + + gotExponent := false + end := i + if i < len(s) && (s[i] == 'p' || s[i] == 'P') { + i++ + if i < len(s) && (s[i] == '+' || s[i] == '-') { + i++ + } + for i < len(s) && isDigit(s[i]) { + gotExponent = true + i++ + end = i + } + } + + floatStr := s[start:end] + if !gotExponent { + floatStr += "p0" // AWK allows "0x12", ParseFloat requires "0x12p0" + } + f, _ := strconv.ParseFloat(floatStr, 64) + return f // Returns infinity in case of "value out of range" error +} + +func isDigit(c byte) bool { + return c >= '0' && c <= '9' +} + +func isHexDigit(c byte) bool { + return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' +} diff --git a/src/tool/awk/interp/vm.go b/src/tool/awk/interp/vm.go new file mode 100644 index 0000000..49b07f5 --- /dev/null +++ b/src/tool/awk/interp/vm.go @@ -0,0 +1,1259 @@ +// Virtual machine: interpret GoAWK compiled opcodes + +package interp + +import ( + "io" + "math" + "os" + "os/exec" + "strings" + "time" + + "github.com/benhoyt/goawk/internal/ast" + "github.com/benhoyt/goawk/internal/compiler" + "github.com/benhoyt/goawk/lexer" +) + +// Execute a block of virtual machine instructions. +// +// A big switch seems to be the best way of doing this for now. I also tried +// an array of functions (https://github.com/benhoyt/goawk/commit/8e04b069b621ff9b9456de57a35ff2fe335cf201) +// and it was ever so slightly faster, but the code was harder to work with +// and it won't be improved when Go gets faster switches via jump tables +// (https://go-review.googlesource.com/c/go/+/357330/). +// +// Additionally, I've made this version faster since the above test by +// reducing the number of opcodes (replacing a couple dozen Call* opcodes with +// a single CallBuiltin -- that probably pushed it below a switch binary tree +// branch threshold). +func (p *interp) execute(code []compiler.Opcode) error { + for ip := 0; ip < len(code); { + op := code[ip] + ip++ + + if p.checkCtx { + err := p.checkContext() + if err != nil { + return err + } + } + + switch op { + case compiler.Num: + index := code[ip] + ip++ + p.push(num(p.nums[index])) + + case compiler.Str: + index := code[ip] + ip++ + p.push(str(p.strs[index])) + + case compiler.Dupe: + v := p.peekTop() + p.push(v) + + case compiler.Drop: + p.pop() + + case compiler.Swap: + l, r := p.peekTwo() + p.replaceTwo(r, l) + + case compiler.Field: + index := p.peekTop() + v := p.getField(int(index.num())) + p.replaceTop(v) + + case compiler.FieldInt: + index := code[ip] + ip++ + v := p.getField(int(index)) + p.push(v) + + case compiler.FieldByName: + fieldName := p.peekTop() + field, err := p.getFieldByName(p.toString(fieldName)) + if err != nil { + return err + } + p.replaceTop(field) + + case compiler.FieldByNameStr: + index := code[ip] + fieldName := p.strs[index] + ip++ + field, err := p.getFieldByName(fieldName) + if err != nil { + return err + } + p.push(field) + + case compiler.Global: + index := code[ip] + ip++ + p.push(p.globals[index]) + + case compiler.Local: + index := code[ip] + ip++ + p.push(p.frame[index]) + + case compiler.Special: + index := code[ip] + ip++ + p.push(p.getSpecial(int(index))) + + case compiler.ArrayGlobal: + arrayIndex := code[ip] + ip++ + array := p.arrays[arrayIndex] + index := p.toString(p.peekTop()) + v := arrayGet(array, index) + p.replaceTop(v) + + case compiler.ArrayLocal: + arrayIndex := code[ip] + ip++ + array := p.localArray(int(arrayIndex)) + index := p.toString(p.peekTop()) + v := arrayGet(array, index) + p.replaceTop(v) + + case compiler.InGlobal: + arrayIndex := code[ip] + ip++ + array := p.arrays[arrayIndex] + index := p.toString(p.peekTop()) + _, ok := array[index] + p.replaceTop(boolean(ok)) + + case compiler.InLocal: + arrayIndex := code[ip] + ip++ + array := p.localArray(int(arrayIndex)) + index := p.toString(p.peekTop()) + _, ok := array[index] + p.replaceTop(boolean(ok)) + + case compiler.AssignField: + right, index := p.popTwo() + err := p.setField(int(index.num()), p.toString(right)) + if err != nil { + return err + } + + case compiler.AssignGlobal: + index := code[ip] + ip++ + p.globals[index] = p.pop() + + case compiler.AssignLocal: + index := code[ip] + ip++ + p.frame[index] = p.pop() + + case compiler.AssignSpecial: + index := code[ip] + ip++ + err := p.setSpecial(int(index), p.pop()) + if err != nil { + return err + } + + case compiler.AssignArrayGlobal: + arrayIndex := code[ip] + ip++ + array := p.arrays[arrayIndex] + v, index := p.popTwo() + array[p.toString(index)] = v + + case compiler.AssignArrayLocal: + arrayIndex := code[ip] + ip++ + array := p.localArray(int(arrayIndex)) + v, index := p.popTwo() + array[p.toString(index)] = v + + case compiler.Delete: + arrayScope := code[ip] + arrayIndex := code[ip+1] + ip += 2 + array := p.array(ast.VarScope(arrayScope), int(arrayIndex)) + index := p.toString(p.pop()) + delete(array, index) + + case compiler.DeleteAll: + arrayScope := code[ip] + arrayIndex := code[ip+1] + ip += 2 + array := p.array(ast.VarScope(arrayScope), int(arrayIndex)) + for k := range array { + delete(array, k) + } + + case compiler.IncrField: + amount := code[ip] + ip++ + index := int(p.pop().num()) + v := p.getField(index) + err := p.setField(index, p.toString(num(v.num()+float64(amount)))) + if err != nil { + return err + } + + case compiler.IncrGlobal: + amount := code[ip] + index := code[ip+1] + ip += 2 + p.globals[index] = num(p.globals[index].num() + float64(amount)) + + case compiler.IncrLocal: + amount := code[ip] + index := code[ip+1] + ip += 2 + p.frame[index] = num(p.frame[index].num() + float64(amount)) + + case compiler.IncrSpecial: + amount := code[ip] + index := int(code[ip+1]) + ip += 2 + v := p.getSpecial(index) + err := p.setSpecial(index, num(v.num()+float64(amount))) + if err != nil { + return err + } + + case compiler.IncrArrayGlobal: + amount := code[ip] + arrayIndex := code[ip+1] + ip += 2 + array := p.arrays[arrayIndex] + index := p.toString(p.pop()) + array[index] = num(array[index].num() + float64(amount)) + + case compiler.IncrArrayLocal: + amount := code[ip] + arrayIndex := code[ip+1] + ip += 2 + array := p.localArray(int(arrayIndex)) + index := p.toString(p.pop()) + array[index] = num(array[index].num() + float64(amount)) + + case compiler.AugAssignField: + operation := compiler.AugOp(code[ip]) + ip++ + right, indexVal := p.popTwo() + index := int(indexVal.num()) + field := p.getField(index) + v, err := p.augAssignOp(operation, field, right) + if err != nil { + return err + } + err = p.setField(index, p.toString(v)) + if err != nil { + return err + } + + case compiler.AugAssignGlobal: + operation := compiler.AugOp(code[ip]) + index := code[ip+1] + ip += 2 + v, err := p.augAssignOp(operation, p.globals[index], p.pop()) + if err != nil { + return err + } + p.globals[index] = v + + case compiler.AugAssignLocal: + operation := compiler.AugOp(code[ip]) + index := code[ip+1] + ip += 2 + v, err := p.augAssignOp(operation, p.frame[index], p.pop()) + if err != nil { + return err + } + p.frame[index] = v + + case compiler.AugAssignSpecial: + operation := compiler.AugOp(code[ip]) + index := int(code[ip+1]) + ip += 2 + v, err := p.augAssignOp(operation, p.getSpecial(index), p.pop()) + if err != nil { + return err + } + err = p.setSpecial(index, v) + if err != nil { + return err + } + + case compiler.AugAssignArrayGlobal: + operation := compiler.AugOp(code[ip]) + arrayIndex := code[ip+1] + ip += 2 + array := p.arrays[arrayIndex] + index := p.toString(p.pop()) + v, err := p.augAssignOp(operation, array[index], p.pop()) + if err != nil { + return err + } + array[index] = v + + case compiler.AugAssignArrayLocal: + operation := compiler.AugOp(code[ip]) + arrayIndex := code[ip+1] + ip += 2 + array := p.localArray(int(arrayIndex)) + right, indexVal := p.popTwo() + index := p.toString(indexVal) + v, err := p.augAssignOp(operation, array[index], right) + if err != nil { + return err + } + array[index] = v + + case compiler.Regex: + // Stand-alone /regex/ is equivalent to: $0 ~ /regex/ + index := code[ip] + ip++ + re := p.regexes[index] + p.push(boolean(re.MatchString(p.line))) + + case compiler.IndexMulti: + numValues := int(code[ip]) + ip++ + values := p.popSlice(numValues) + indices := make([]string, 0, 3) // up to 3-dimensional indices won't require heap allocation + for _, v := range values { + indices = append(indices, p.toString(v)) + } + p.push(str(strings.Join(indices, p.subscriptSep))) + + case compiler.Add: + l, r := p.peekPop() + p.replaceTop(num(l.num() + r.num())) + + case compiler.Subtract: + l, r := p.peekPop() + p.replaceTop(num(l.num() - r.num())) + + case compiler.Multiply: + l, r := p.peekPop() + p.replaceTop(num(l.num() * r.num())) + + case compiler.Divide: + l, r := p.peekPop() + rf := r.num() + if rf == 0.0 { + return newError("division by zero") + } + p.replaceTop(num(l.num() / rf)) + + case compiler.Power: + l, r := p.peekPop() + p.replaceTop(num(math.Pow(l.num(), r.num()))) + + case compiler.Modulo: + l, r := p.peekPop() + rf := r.num() + if rf == 0.0 { + return newError("division by zero in mod") + } + p.replaceTop(num(math.Mod(l.num(), rf))) + + case compiler.Equals: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) == p.toString(r))) + } else { + p.replaceTop(boolean(ln == rn)) + } + + case compiler.NotEquals: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) != p.toString(r))) + } else { + p.replaceTop(boolean(ln != rn)) + } + + case compiler.Less: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) < p.toString(r))) + } else { + p.replaceTop(boolean(ln < rn)) + } + + case compiler.Greater: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) > p.toString(r))) + } else { + p.replaceTop(boolean(ln > rn)) + } + + case compiler.LessOrEqual: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) <= p.toString(r))) + } else { + p.replaceTop(boolean(ln <= rn)) + } + + case compiler.GreaterOrEqual: + l, r := p.peekPop() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + if lIsStr || rIsStr { + p.replaceTop(boolean(p.toString(l) >= p.toString(r))) + } else { + p.replaceTop(boolean(ln >= rn)) + } + + case compiler.Concat: + l, r := p.peekPop() + p.replaceTop(str(p.toString(l) + p.toString(r))) + + case compiler.ConcatMulti: + numValues := int(code[ip]) + ip++ + values := p.popSlice(numValues) + var sb strings.Builder + + for _, v := range values { + sb.WriteString(p.toString(v)) + } + p.push(str(sb.String())) + + case compiler.Match: + l, r := p.peekPop() + re, err := p.compileRegex(p.toString(r)) + if err != nil { + return err + } + matched := re.MatchString(p.toString(l)) + p.replaceTop(boolean(matched)) + + case compiler.NotMatch: + l, r := p.peekPop() + re, err := p.compileRegex(p.toString(r)) + if err != nil { + return err + } + matched := re.MatchString(p.toString(l)) + p.replaceTop(boolean(!matched)) + + case compiler.Not: + p.replaceTop(boolean(!p.peekTop().boolean())) + + case compiler.UnaryMinus: + p.replaceTop(num(-p.peekTop().num())) + + case compiler.UnaryPlus: + p.replaceTop(num(p.peekTop().num())) + + case compiler.Boolean: + p.replaceTop(boolean(p.peekTop().boolean())) + + case compiler.Jump: + offset := code[ip] + ip += 1 + int(offset) + + case compiler.JumpFalse: + offset := code[ip] + ip++ + v := p.pop() + if !v.boolean() { + ip += int(offset) + } + + case compiler.JumpTrue: + offset := code[ip] + ip++ + v := p.pop() + if v.boolean() { + ip += int(offset) + } + + case compiler.JumpEquals: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) == p.toString(r) + } else { + b = ln == rn + } + if b { + ip += int(offset) + } + + case compiler.JumpNotEquals: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) != p.toString(r) + } else { + b = ln != rn + } + if b { + ip += int(offset) + } + + case compiler.JumpLess: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) < p.toString(r) + } else { + b = ln < rn + } + if b { + ip += int(offset) + } + + case compiler.JumpGreater: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) > p.toString(r) + } else { + b = ln > rn + } + if b { + ip += int(offset) + } + + case compiler.JumpLessOrEqual: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) <= p.toString(r) + } else { + b = ln <= rn + } + if b { + ip += int(offset) + } + + case compiler.JumpGreaterOrEqual: + offset := code[ip] + ip++ + l, r := p.popTwo() + ln, lIsStr := l.isTrueStr() + rn, rIsStr := r.isTrueStr() + var b bool + if lIsStr || rIsStr { + b = p.toString(l) >= p.toString(r) + } else { + b = ln >= rn + } + if b { + ip += int(offset) + } + + case compiler.Next: + return errNext + + case compiler.Exit: + p.exitStatus = int(p.pop().num()) + // Return special errExit value "caught" by top-level executor + return errExit + + case compiler.ForIn: + varScope := code[ip] + varIndex := code[ip+1] + arrayScope := code[ip+2] + arrayIndex := code[ip+3] + offset := code[ip+4] + ip += 5 + array := p.array(ast.VarScope(arrayScope), int(arrayIndex)) + loopCode := code[ip : ip+int(offset)] + for index := range array { + switch ast.VarScope(varScope) { + case ast.ScopeGlobal: + p.globals[varIndex] = str(index) + case ast.ScopeLocal: + p.frame[varIndex] = str(index) + default: // ScopeSpecial + err := p.setSpecial(int(varIndex), str(index)) + if err != nil { + return err + } + } + err := p.execute(loopCode) + if err == errBreak { + break + } + if err != nil { + return err + } + } + ip += int(offset) + + case compiler.BreakForIn: + return errBreak + + case compiler.CallBuiltin: + builtinOp := compiler.BuiltinOp(code[ip]) + ip++ + err := p.callBuiltin(builtinOp) + if err != nil { + return err + } + + case compiler.CallSplit: + arrayScope := code[ip] + arrayIndex := code[ip+1] + ip += 2 + s := p.toString(p.peekTop()) + n, err := p.split(s, ast.VarScope(arrayScope), int(arrayIndex), p.fieldSep) + if err != nil { + return err + } + p.replaceTop(num(float64(n))) + + case compiler.CallSplitSep: + arrayScope := code[ip] + arrayIndex := code[ip+1] + ip += 2 + s, fieldSep := p.peekPop() + n, err := p.split(p.toString(s), ast.VarScope(arrayScope), int(arrayIndex), p.toString(fieldSep)) + if err != nil { + return err + } + p.replaceTop(num(float64(n))) + + case compiler.CallSprintf: + numArgs := code[ip] + ip++ + args := p.popSlice(int(numArgs)) + s, err := p.sprintf(p.toString(args[0]), args[1:]) + if err != nil { + return err + } + p.push(str(s)) + + case compiler.CallUser: + funcIndex := code[ip] + numArrayArgs := int(code[ip+1]) + ip += 2 + + f := p.program.Compiled.Functions[funcIndex] + if p.callDepth >= maxCallDepth { + return newError("calling %q exceeded maximum call depth of %d", f.Name, maxCallDepth) + } + + // Set up frame for scalar arguments + oldFrame := p.frame + p.frame = p.peekSlice(f.NumScalars) + + // Handle array arguments + var arrays []int + for j := 0; j < numArrayArgs; j++ { + arrayScope := ast.VarScope(code[ip]) + arrayIndex := int(code[ip+1]) + ip += 2 + arrays = append(arrays, p.arrayIndex(arrayScope, arrayIndex)) + } + oldArraysLen := len(p.arrays) + for j := numArrayArgs; j < f.NumArrays; j++ { + arrays = append(arrays, len(p.arrays)) + p.arrays = append(p.arrays, make(map[string]value)) + } + p.localArrays = append(p.localArrays, arrays) + + // Execute the function! + p.callDepth++ + err := p.execute(f.Body) + p.callDepth-- + + // Pop the locals off the stack + p.popSlice(f.NumScalars) + p.frame = oldFrame + p.localArrays = p.localArrays[:len(p.localArrays)-1] + p.arrays = p.arrays[:oldArraysLen] + + if r, ok := err.(returnValue); ok { + p.push(r.Value) + } else if err != nil { + return err + } else { + p.push(null()) + } + + case compiler.CallNative: + funcIndex := int(code[ip]) + numArgs := int(code[ip+1]) + ip += 2 + + args := p.popSlice(numArgs) + r, err := p.callNative(funcIndex, args) + if err != nil { + return err + } + p.push(r) + + case compiler.Return: + v := p.pop() + return returnValue{v} + + case compiler.ReturnNull: + return returnValue{null()} + + case compiler.Nulls: + numNulls := int(code[ip]) + ip++ + p.pushNulls(numNulls) + + case compiler.Print: + numArgs := code[ip] + redirect := lexer.Token(code[ip+1]) + ip += 2 + + args := p.popSlice(int(numArgs)) + + // Determine what output stream to write to. + output := p.output + if redirect != lexer.ILLEGAL { + var err error + dest := p.pop() + output, err = p.getOutputStream(redirect, dest) + if err != nil { + return err + } + } + + if numArgs > 0 { + err := p.printArgs(output, args) + if err != nil { + return err + } + } else { + // "print" with no arguments prints the raw value of $0, + // regardless of output mode. + err := p.printLine(output, p.line) + if err != nil { + return err + } + } + + case compiler.Printf: + numArgs := code[ip] + redirect := lexer.Token(code[ip+1]) + ip += 2 + + args := p.popSlice(int(numArgs)) + s, err := p.sprintf(p.toString(args[0]), args[1:]) + if err != nil { + return err + } + + output := p.output + if redirect != lexer.ILLEGAL { + dest := p.pop() + output, err = p.getOutputStream(redirect, dest) + if err != nil { + return err + } + } + err = writeOutput(output, s) + if err != nil { + return err + } + + case compiler.Getline: + redirect := lexer.Token(code[ip]) + ip++ + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + if ret == 1 { + p.setLine(line, false) + } + p.push(num(ret)) + + case compiler.GetlineField: + redirect := lexer.Token(code[ip]) + ip++ + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + if ret == 1 { + err := p.setField(0, line) + if err != nil { + return err + } + } + p.push(num(ret)) + + case compiler.GetlineGlobal: + redirect := lexer.Token(code[ip]) + index := code[ip+1] + ip += 2 + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + if ret == 1 { + p.globals[index] = numStr(line) + } + p.push(num(ret)) + + case compiler.GetlineLocal: + redirect := lexer.Token(code[ip]) + index := code[ip+1] + ip += 2 + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + if ret == 1 { + p.frame[index] = numStr(line) + } + p.push(num(ret)) + + case compiler.GetlineSpecial: + redirect := lexer.Token(code[ip]) + index := code[ip+1] + ip += 2 + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + if ret == 1 { + err := p.setSpecial(int(index), numStr(line)) + if err != nil { + return err + } + } + p.push(num(ret)) + + case compiler.GetlineArray: + redirect := lexer.Token(code[ip]) + arrayScope := code[ip+1] + arrayIndex := code[ip+2] + ip += 3 + + ret, line, err := p.getline(redirect) + if err != nil { + return err + } + index := p.toString(p.peekTop()) + if ret == 1 { + array := p.array(ast.VarScope(arrayScope), int(arrayIndex)) + array[index] = numStr(line) + } + p.replaceTop(num(ret)) + } + } + + return nil +} + +func (p *interp) callBuiltin(builtinOp compiler.BuiltinOp) error { + switch builtinOp { + case compiler.BuiltinAtan2: + y, x := p.peekPop() + p.replaceTop(num(math.Atan2(y.num(), x.num()))) + + case compiler.BuiltinClose: + name := p.toString(p.peekTop()) + var c io.Closer = p.inputStreams[name] + if c != nil { + // Close input stream + delete(p.inputStreams, name) + err := c.Close() + if err != nil { + p.replaceTop(num(-1)) + } else { + p.replaceTop(num(0)) + } + } else { + c = p.outputStreams[name] + if c != nil { + // Close output stream + delete(p.outputStreams, name) + err := c.Close() + if err != nil { + p.replaceTop(num(-1)) + } else { + p.replaceTop(num(0)) + } + } else { + // Nothing to close + p.replaceTop(num(-1)) + } + } + + case compiler.BuiltinCos: + p.replaceTop(num(math.Cos(p.peekTop().num()))) + + case compiler.BuiltinExp: + p.replaceTop(num(math.Exp(p.peekTop().num()))) + + case compiler.BuiltinFflush: + name := p.toString(p.peekTop()) + var ok bool + if name != "" { + // Flush a single, named output stream + ok = p.flushStream(name) + } else { + // fflush() or fflush("") flushes all output streams + ok = p.flushAll() + } + if !ok { + p.replaceTop(num(-1)) + } else { + p.replaceTop(num(0)) + } + + case compiler.BuiltinFflushAll: + ok := p.flushAll() + if !ok { + p.push(num(-1)) + } else { + p.push(num(0)) + } + + case compiler.BuiltinGsub: + regex, repl, in := p.peekPeekPop() + out, n, err := p.sub(p.toString(regex), p.toString(repl), p.toString(in), true) + if err != nil { + return err + } + p.replaceTwo(num(float64(n)), str(out)) + + case compiler.BuiltinIndex: + sValue, substr := p.peekPop() + s := p.toString(sValue) + index := strings.Index(s, p.toString(substr)) + p.replaceTop(num(float64(index + 1))) + + case compiler.BuiltinInt: + p.replaceTop(num(float64(int(p.peekTop().num())))) + + case compiler.BuiltinLength: + p.push(num(float64(len(p.line)))) + + case compiler.BuiltinLengthArg: + s := p.toString(p.peekTop()) + p.replaceTop(num(float64(len(s)))) + + case compiler.BuiltinLog: + p.replaceTop(num(math.Log(p.peekTop().num()))) + + case compiler.BuiltinMatch: + sValue, regex := p.peekPop() + s := p.toString(sValue) + re, err := p.compileRegex(p.toString(regex)) + if err != nil { + return err + } + loc := re.FindStringIndex(s) + if loc == nil { + p.matchStart = 0 + p.matchLength = -1 + p.replaceTop(num(0)) + } else { + p.matchStart = loc[0] + 1 + p.matchLength = loc[1] - loc[0] + p.replaceTop(num(float64(p.matchStart))) + } + + case compiler.BuiltinRand: + p.push(num(p.random.Float64())) + + case compiler.BuiltinSin: + p.replaceTop(num(math.Sin(p.peekTop().num()))) + + case compiler.BuiltinSqrt: + p.replaceTop(num(math.Sqrt(p.peekTop().num()))) + + case compiler.BuiltinSrand: + prevSeed := p.randSeed + p.random.Seed(time.Now().UnixNano()) + p.push(num(prevSeed)) + + case compiler.BuiltinSrandSeed: + prevSeed := p.randSeed + p.randSeed = p.peekTop().num() + p.random.Seed(int64(math.Float64bits(p.randSeed))) + p.replaceTop(num(prevSeed)) + + case compiler.BuiltinSub: + regex, repl, in := p.peekPeekPop() + out, n, err := p.sub(p.toString(regex), p.toString(repl), p.toString(in), false) + if err != nil { + return err + } + p.replaceTwo(num(float64(n)), str(out)) + + case compiler.BuiltinSubstr: + sValue, posValue := p.peekPop() + pos := int(posValue.num()) + s := p.toString(sValue) + if pos > len(s) { + pos = len(s) + 1 + } + if pos < 1 { + pos = 1 + } + length := len(s) - pos + 1 + p.replaceTop(str(s[pos-1 : pos-1+length])) + + case compiler.BuiltinSubstrLength: + posValue, lengthValue := p.popTwo() + length := int(lengthValue.num()) + pos := int(posValue.num()) + s := p.toString(p.peekTop()) + if pos > len(s) { + pos = len(s) + 1 + } + if pos < 1 { + pos = 1 + } + maxLength := len(s) - pos + 1 + if length < 0 { + length = 0 + } + if length > maxLength { + length = maxLength + } + p.replaceTop(str(s[pos-1 : pos-1+length])) + + case compiler.BuiltinSystem: + if p.noExec { + return newError("can't call system() due to NoExec") + } + cmdline := p.toString(p.peekTop()) + cmd := p.execShell(cmdline) + cmd.Stdin = p.stdin + cmd.Stdout = p.output + cmd.Stderr = p.errorOutput + _ = p.flushAll() // ensure synchronization + err := cmd.Run() + ret := 0.0 + if err != nil { + if p.checkCtx && p.ctx.Err() != nil { + return p.ctx.Err() + } + if exitErr, ok := err.(*exec.ExitError); ok { + ret = float64(exitErr.ProcessState.ExitCode()) + } else { + p.printErrorf("%v\n", err) + ret = -1 + } + } + p.replaceTop(num(ret)) + + case compiler.BuiltinTolower: + p.replaceTop(str(strings.ToLower(p.toString(p.peekTop())))) + + case compiler.BuiltinToupper: + p.replaceTop(str(strings.ToUpper(p.toString(p.peekTop())))) + } + + return nil +} + +// Fetch the value at the given index from array. This handles the strange +// POSIX behavior of creating a null entry for non-existent array elements. +// Per the POSIX spec, "Any other reference to a nonexistent array element +// [apart from "in" expressions] shall automatically create it." +func arrayGet(array map[string]value, index string) value { + v, ok := array[index] + if !ok { + array[index] = v + } + return v +} + +// Stack operations follow. These should be inlined. Instead of just push and +// pop, for efficiency we have custom operations for when we're replacing the +// top of stack without changing the stack pointer. Primarily this avoids the +// check for append in push. +func (p *interp) push(v value) { + sp := p.sp + if sp >= len(p.stack) { + p.stack = append(p.stack, null()) + } + p.stack[sp] = v + sp++ + p.sp = sp +} + +func (p *interp) pushNulls(num int) { + sp := p.sp + for p.sp+num-1 >= len(p.stack) { + p.stack = append(p.stack, null()) + } + for i := 0; i < num; i++ { + p.stack[sp] = null() + sp++ + } + p.sp = sp +} + +func (p *interp) pop() value { + p.sp-- + return p.stack[p.sp] +} + +func (p *interp) popTwo() (value, value) { + p.sp -= 2 + return p.stack[p.sp], p.stack[p.sp+1] +} + +func (p *interp) peekTop() value { + return p.stack[p.sp-1] +} + +func (p *interp) peekTwo() (value, value) { + return p.stack[p.sp-2], p.stack[p.sp-1] +} + +func (p *interp) peekPop() (value, value) { + p.sp-- + return p.stack[p.sp-1], p.stack[p.sp] +} + +func (p *interp) peekPeekPop() (value, value, value) { + p.sp-- + return p.stack[p.sp-2], p.stack[p.sp-1], p.stack[p.sp] +} + +func (p *interp) replaceTop(v value) { + p.stack[p.sp-1] = v +} + +func (p *interp) replaceTwo(l, r value) { + p.stack[p.sp-2] = l + p.stack[p.sp-1] = r +} + +func (p *interp) popSlice(n int) []value { + p.sp -= n + return p.stack[p.sp : p.sp+n] +} + +func (p *interp) peekSlice(n int) []value { + return p.stack[p.sp-n:] +} + +// Helper for getline operations. This performs the (possibly redirected) read +// of a line, and returns the result. If the result is 1 (success in AWK), the +// caller will set the target to the returned string. +func (p *interp) getline(redirect lexer.Token) (float64, string, error) { + switch redirect { + case lexer.PIPE: // redirect from command + name := p.toString(p.pop()) + scanner, err := p.getInputScannerPipe(name) + if err != nil { + return 0, "", err + } + if !scanner.Scan() { + if err := scanner.Err(); err != nil { + return -1, "", nil + } + return 0, "", nil + } + return 1, scanner.Text(), nil + + case lexer.LESS: // redirect from file + name := p.toString(p.pop()) + scanner, err := p.getInputScannerFile(name) + if err != nil { + if _, ok := err.(*os.PathError); ok { + // File not found is not a hard error, getline just returns -1. + // See: https://github.com/benhoyt/goawk/issues/41 + return -1, "", nil + } + return 0, "", err + } + if !scanner.Scan() { + if err := scanner.Err(); err != nil { + return -1, "", nil + } + return 0, "", nil + } + return 1, scanner.Text(), nil + + default: // no redirect + p.flushOutputAndError() // Flush output in case they've written a prompt + var err error + line, err := p.nextLine() + if err == io.EOF { + return 0, "", nil + } + if err != nil { + return -1, "", nil + } + return 1, line, nil + } +} + +// Perform augmented assignment operation. +func (p *interp) augAssignOp(op compiler.AugOp, l, r value) (value, error) { + switch op { + case compiler.AugOpAdd: + return num(l.num() + r.num()), nil + case compiler.AugOpSub: + return num(l.num() - r.num()), nil + case compiler.AugOpMul: + return num(l.num() * r.num()), nil + case compiler.AugOpDiv: + rf := r.num() + if rf == 0.0 { + return null(), newError("division by zero") + } + return num(l.num() / rf), nil + case compiler.AugOpPow: + return num(math.Pow(l.num(), r.num())), nil + default: // AugOpMod + rf := r.num() + if rf == 0.0 { + return null(), newError("division by zero in mod") + } + return num(math.Mod(l.num(), rf)), nil + } +} diff --git a/src/tool/awk/lexer/lexer.go b/src/tool/awk/lexer/lexer.go new file mode 100644 index 0000000..05cf33f --- /dev/null +++ b/src/tool/awk/lexer/lexer.go @@ -0,0 +1,499 @@ +// Package lexer is an AWK lexer (tokenizer). +// +// The lexer turns a string of AWK source code into a stream of +// tokens for parsing. +// +// To tokenize some source, create a new lexer with NewLexer(src) and +// then call Scan() until the token type is EOF or ILLEGAL. +package lexer + +import ( + "errors" +) + +// Lexer tokenizes a byte string of AWK source code. Use NewLexer to +// actually create a lexer, and Scan() or ScanRegex() to get tokens. +type Lexer struct { + src []byte + offset int + ch byte + pos Position + nextPos Position + hadSpace bool + lastTok Token +} + +// Position stores the source line and column where a token starts. +type Position struct { + // Line number of the token (starts at 1). + Line int + // Column on the line (starts at 1). Note that this is the byte + // offset into the line, not rune offset. + Column int +} + +// NewLexer creates a new lexer that will tokenize the given source +// code. See the module-level example for a working example. +func NewLexer(src []byte) *Lexer { + l := &Lexer{src: src} + l.nextPos.Line = 1 + l.nextPos.Column = 1 + l.next() + return l +} + +// HadSpace returns true if the previously-scanned token had +// whitespace before it. Used by the parser because when calling a +// user-defined function the grammar doesn't allow a space between +// the function name and the left parenthesis. +func (l *Lexer) HadSpace() bool { + return l.hadSpace +} + +// Scan scans the next token and returns its position (line/column), +// token value (one of the uppercase token constants), and the +// string value of the token. For most tokens, the token value is +// empty. For NAME, NUMBER, STRING, and REGEX tokens, it's the +// token's value. For an ILLEGAL token, it's the error message. +func (l *Lexer) Scan() (Position, Token, string) { + pos, tok, val := l.scan() + l.lastTok = tok + return pos, tok, val +} + +// Does the real work of scanning. Scan() wraps this to more easily +// set lastTok. +func (l *Lexer) scan() (Position, Token, string) { + // Skip whitespace (except newline, which is a token) + l.hadSpace = false + for l.ch == ' ' || l.ch == '\t' || l.ch == '\r' || l.ch == '\\' { + l.hadSpace = true + if l.ch == '\\' { + l.next() + if l.ch == '\r' { + l.next() + } + if l.ch != '\n' { + return l.pos, ILLEGAL, "expected \\n after \\ line continuation" + } + } + l.next() + } + if l.ch == '#' { + // Skip comment till end of line + l.next() + for l.ch != '\n' && l.ch != 0 { + l.next() + } + } + if l.ch == 0 { + // l.next() reached end of input + return l.pos, EOF, "" + } + + pos := l.pos + tok := ILLEGAL + val := "" + + ch := l.ch + l.next() + + // Names: keywords and functions + if isNameStart(ch) { + start := l.offset - 2 + for isNameStart(l.ch) || isDigit(l.ch) { + l.next() + } + name := string(l.src[start : l.offset-1]) + tok := KeywordToken(name) + if tok == ILLEGAL { + tok = NAME + val = name + } + return pos, tok, val + } + + // These are ordered by my guess at frequency of use. Should run + // through a corpus of real AWK programs to determine actual + // frequency. + switch ch { + case '$': + tok = DOLLAR + case '@': + tok = AT + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.': + // Avoid make/append and use l.offset directly for performance + start := l.offset - 2 + gotDigit := false + if ch != '.' { + gotDigit = true + for isDigit(l.ch) { + l.next() + } + if l.ch == '.' { + l.next() + } + } + for isDigit(l.ch) { + gotDigit = true + l.next() + } + if !gotDigit { + return l.pos, ILLEGAL, "expected digits" + } + if l.ch == 'e' || l.ch == 'E' { + l.next() + gotSign := false + if l.ch == '+' || l.ch == '-' { + gotSign = true + l.next() + } + gotDigit = false + for isDigit(l.ch) { + l.next() + gotDigit = true + } + // Per awk/gawk, "1e" is allowed and parsed as "1 e" (with "e" + // considered a variable). "1e+" is parsed as "1e + ...". + if !gotDigit { + if gotSign { + l.unread() // unread the '+' or '-' + } + l.unread() // unread the 'e' or 'E' + } + } + tok = NUMBER + val = string(l.src[start : l.offset-1]) + case '{': + tok = LBRACE + case '}': + tok = RBRACE + case '=': + tok = l.choice('=', ASSIGN, EQUALS) + case '<': + tok = l.choice('=', LESS, LTE) + case '>': + switch l.ch { + case '=': + l.next() + tok = GTE + case '>': + l.next() + tok = APPEND + default: + tok = GREATER + } + case '"', '\'': + // Note: POSIX awk spec doesn't allow single-quoted strings, + // but this helps with quoting, especially on Windows + // where the shell quote character is " (double quote). + s, err := parseString(ch, func() byte { return l.ch }, l.next) + if err != nil { + return l.pos, ILLEGAL, err.Error() + } + if l.ch != ch { + return l.pos, ILLEGAL, "didn't find end quote in string" + } + l.next() + tok = STRING + val = s + case '(': + tok = LPAREN + case ')': + tok = RPAREN + case ',': + tok = COMMA + case ';': + tok = SEMICOLON + case '+': + switch l.ch { + case '+': + l.next() + tok = INCR + case '=': + l.next() + tok = ADD_ASSIGN + default: + tok = ADD + } + case '-': + switch l.ch { + case '-': + l.next() + tok = DECR + case '=': + l.next() + tok = SUB_ASSIGN + default: + tok = SUB + } + case '*': + switch l.ch { + case '*': + l.next() + tok = l.choice('=', POW, POW_ASSIGN) + case '=': + l.next() + tok = MUL_ASSIGN + default: + tok = MUL + } + case '/': + tok = l.choice('=', DIV, DIV_ASSIGN) + case '%': + tok = l.choice('=', MOD, MOD_ASSIGN) + case '[': + tok = LBRACKET + case ']': + tok = RBRACKET + case '\n': + tok = NEWLINE + case '^': + tok = l.choice('=', POW, POW_ASSIGN) + case '!': + switch l.ch { + case '=': + l.next() + tok = NOT_EQUALS + case '~': + l.next() + tok = NOT_MATCH + default: + tok = NOT + } + case '~': + tok = MATCH + case '?': + tok = QUESTION + case ':': + tok = COLON + case '&': + tok = l.choice('&', ILLEGAL, AND) + if tok == ILLEGAL { + return l.pos, ILLEGAL, "unexpected char after '&'" + } + case '|': + tok = l.choice('|', PIPE, OR) + default: + tok = ILLEGAL + val = "unexpected char" + } + return pos, tok, val +} + +// ScanRegex parses an AWK regular expression in /slash/ syntax. The +// AWK grammar has somewhat special handling of regex tokens, so the +// parser can only call this after a DIV or DIV_ASSIGN token has just +// been scanned. +func (l *Lexer) ScanRegex() (Position, Token, string) { + pos, tok, val := l.scanRegex() + l.lastTok = tok + return pos, tok, val +} + +// Does the real work of scanning a regex. ScanRegex() wraps this to +// more easily set lastTok. +func (l *Lexer) scanRegex() (Position, Token, string) { + pos := l.pos + chars := make([]byte, 0, 32) // most won't require heap allocation + switch l.lastTok { + case DIV: + // Regex after '/' (the usual case) + pos.Column -= 1 + case DIV_ASSIGN: + // Regex after '/=' (happens when regex starts with '=') + pos.Column -= 2 + chars = append(chars, '=') + default: + panic("ScanRegex should only be called after DIV or DIV_ASSIGN token") + } + for l.ch != '/' { + c := l.ch + if c == 0 { + return l.pos, ILLEGAL, "didn't find end slash in regex" + } + if c == '\r' || c == '\n' { + return l.pos, ILLEGAL, "can't have newline in regex" + } + if c == '\\' { + l.next() + if l.ch != '/' { + chars = append(chars, '\\') + } + c = l.ch + } + chars = append(chars, c) + l.next() + } + l.next() + return pos, REGEX, string(chars) +} + +// Load the next character into l.ch (or 0 on end of input) and update +// line and column position. +func (l *Lexer) next() { + l.pos = l.nextPos + if l.offset >= len(l.src) { + // For last character, move offset 1 past the end as it + // simplifies offset calculations in NAME and NUMBER + if l.ch != 0 { + l.ch = 0 + l.offset++ + l.nextPos.Column++ + } + return + } + ch := l.src[l.offset] + if ch == '\n' { + l.nextPos.Line++ + l.nextPos.Column = 1 + } else if ch != '\r' { + l.nextPos.Column++ + } + l.ch = ch + l.offset++ +} + +// Un-read the character just scanned (doesn't handle line boundaries). +func (l *Lexer) unread() { + l.offset-- + l.pos.Column-- + l.nextPos.Column-- + l.ch = l.src[l.offset-1] +} + +func isNameStart(ch byte) bool { + return ch == '_' || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') +} + +func isDigit(ch byte) bool { + return ch >= '0' && ch <= '9' +} + +// Return the hex digit 0-15 corresponding to the given ASCII byte, +// or -1 if it's not a valid hex digit. +func hexDigit(ch byte) int { + switch { + case isDigit(ch): + return int(ch - '0') + case ch >= 'a' && ch <= 'f': + return int(ch - 'a' + 10) + case ch >= 'A' && ch <= 'F': + return int(ch - 'A' + 10) + default: + return -1 + } +} + +func (l *Lexer) choice(ch byte, one, two Token) Token { + if l.ch == ch { + l.next() + return two + } + return one +} + +// PeekByte returns the next unscanned byte; used when parsing +// "getline lvalue" expressions. Returns 0 at end of input. +func (l *Lexer) PeekByte() byte { + return l.ch +} + +// Unescape unescapes the backslash escapes in s (which shouldn't include the +// surrounding quotes) and returns the unquoted string. It's intended for use +// when unescaping command line var=value assignments, as required by the +// POSIX AWK spec. +func Unescape(s string) (string, error) { + i := 0 + ch := func() byte { + if i >= len(s) { + return 0 + } + return s[i] + } + next := func() { + i++ + } + return parseString(0, ch, next) +} + +// Parses a string ending with given quote character (not parsed). The ch +// function returns the current character (or 0 at the end); the next function +// moves forward one character. +func parseString(quote byte, ch func() byte, next func()) (string, error) { + chars := make([]byte, 0, 32) // most strings won't require heap allocation + for { + c := ch() + if c == quote || c == 0 { + break + } + if c == '\r' || c == '\n' { + return "", errors.New("can't have newline in string") + } + if c != '\\' { + // Normal, non-escaped character + chars = append(chars, c) + next() + continue + } + // Escape sequence, skip over \ and process + next() + switch ch() { + case 'n': + c = '\n' + next() + case 't': + c = '\t' + next() + case 'r': + c = '\r' + next() + case 'a': + c = '\a' + next() + case 'b': + c = '\b' + next() + case 'f': + c = '\f' + next() + case 'v': + c = '\v' + next() + case 'x': + // Hex byte of one of two hex digits + next() + digit := hexDigit(ch()) + if digit < 0 { + return "", errors.New("1 or 2 hex digits expected") + } + c = byte(digit) + next() + digit = hexDigit(ch()) + if digit >= 0 { + c = c*16 + byte(digit) + next() + } + case '0', '1', '2', '3', '4', '5', '6', '7': + // Octal byte of 1-3 octal digits + c = ch() - '0' + next() + for i := 0; i < 2 && ch() >= '0' && ch() <= '7'; i++ { + c = c*8 + ch() - '0' + next() + } + default: + // Any other escape character is just the char + // itself, eg: "\z" is just "z". + c = ch() + if c == 0 { + // Expect backslash right at the end of the string, which is + // interpreted as a literal backslash (only for Unescape). + c = '\\' + } + next() + } + chars = append(chars, c) + } + return string(chars), nil +} diff --git a/src/tool/awk/lexer/lexer_test.go b/src/tool/awk/lexer/lexer_test.go new file mode 100644 index 0000000..8e0b85c --- /dev/null +++ b/src/tool/awk/lexer/lexer_test.go @@ -0,0 +1,393 @@ +// Test GoAWK Lexer + +package lexer_test + +import ( + "fmt" + "strconv" + "strings" + "testing" + + . "github.com/benhoyt/goawk/lexer" +) + +func TestLexer(t *testing.T) { + tests := []struct { + input string + output string + }{ + // Comments, whitespace, line continuations + {"+# foo \n- #foo", `1:1 + "", 1:8 "", 2:1 - ""`}, + {"+\\\n-", `1:1 + "", 2:1 - ""`}, + {"+\\\r\n-", `1:1 + "", 2:1 - ""`}, + {"+\\-", `1:1 + "", 1:3 "expected \\n after \\ line continuation", 1:3 - ""`}, + + // Names and keywords + {"x", `1:1 name "x"`}, + {"x y0", `1:1 name "x", 1:3 name "y0"`}, + {"x 0y", `1:1 name "x", 1:3 number "0", 1:4 name "y"`}, + {"sub SUB", `1:1 sub "", 1:5 name "SUB"`}, + + // String tokens + {`"foo"`, `1:1 string "foo"`}, + {`"a\t\r\n\z\'\"\a\b\f\vb"`, `1:1 string "a\t\r\nz'\"\a\b\f\vb"`}, + {`"x`, `1:3 "didn't find end quote in string"`}, + {`"foo\"`, `1:7 "didn't find end quote in string"`}, + {"\"x\n\"", `1:3 "can't have newline in string", 1:3 "", 2:2 "didn't find end quote in string"`}, + {`'foo'`, `1:1 string "foo"`}, + {`'a\t\r\n\z\'\"b'`, `1:1 string "a\t\r\nz'\"b"`}, + {`'x`, `1:3 "didn't find end quote in string"`}, + {"'x\n'", `1:3 "can't have newline in string", 1:3 "", 2:2 "didn't find end quote in string"`}, + {`"\x0.\x00.\x0A\x10\xff\xFF\x41"`, `1:1 string "\x00.\x00.\n\x10\xff\xffA"`}, + {`"\xg"`, `1:4 "1 or 2 hex digits expected", 1:4 name "g", 1:6 "didn't find end quote in string"`}, + {`"\0\78\7\77\777\0 \141 "`, `1:1 string "\x00\a8\a?\xff\x00 a "`}, + + // Number tokens + {"0", `1:1 number "0"`}, + {"9", `1:1 number "9"`}, + {" 0 ", `1:2 number "0"`}, + {"\n 1", `1:1 "", 2:3 number "1"`}, + {"1234", `1:1 number "1234"`}, + {".5", `1:1 number ".5"`}, + {".5e1", `1:1 number ".5e1"`}, + {"5e+1", `1:1 number "5e+1"`}, + {"5e-1", `1:1 number "5e-1"`}, + {"0.", `1:1 number "0."`}, + {"42e", `1:1 number "42", 1:3 name "e"`}, + {"4.2e", `1:1 number "4.2", 1:4 name "e"`}, + {"1.e3", `1:1 number "1.e3"`}, + {"1.e3", `1:1 number "1.e3"`}, + {"1e3foo", `1:1 number "1e3", 1:4 name "foo"`}, + {"1e3+", `1:1 number "1e3", 1:4 + ""`}, + {"1e3.4", `1:1 number "1e3", 1:4 number ".4"`}, + {"1e-", `1:1 number "1", 1:2 name "e", 1:3 - ""`}, + {"1e+", `1:1 number "1", 1:2 name "e", 1:3 + ""`}, + {"42`", `1:1 number "42", 1:3 "unexpected char"`}, + {"0..", `1:1 number "0.", 1:4 "expected digits"`}, + {".", `1:2 "expected digits"`}, + + // Misc errors + {"&=", `1:2 "unexpected char after '&'", 1:2 = ""`}, + } + for _, test := range tests { + t.Run(test.input, func(t *testing.T) { + l := NewLexer([]byte(test.input)) + strs := []string{} + for { + pos, tok, val := l.Scan() + if tok == EOF { + break + } + if tok == NUMBER { + // Ensure ParseFloat() works, as that's what our + // parser uses to convert + trimmed := strings.TrimRight(val, "eE") + _, err := strconv.ParseFloat(trimmed, 64) + if err != nil { + t.Fatalf("couldn't parse float: %q", val) + } + } + strs = append(strs, fmt.Sprintf("%d:%d %s %q", pos.Line, pos.Column, tok, val)) + } + output := strings.Join(strs, ", ") + if output != test.output { + t.Errorf("expected %q, got %q", test.output, output) + } + }) + } +} + +func TestRegex(t *testing.T) { + tests := []struct { + input string + output string + }{ + {`/foo/`, `1:1 regex "foo"`}, + {`/=foo/`, `1:1 regex "=foo"`}, + {`/a\/b/`, `1:1 regex "a/b"`}, + {`/a\/\zb/`, `1:1 regex "a/\\zb"`}, + {`/a`, `1:3 "didn't find end slash in regex"`}, + {"/a\n", `1:3 "can't have newline in regex"`}, + } + for _, test := range tests { + t.Run(test.input, func(t *testing.T) { + l := NewLexer([]byte(test.input)) + l.Scan() // Scan first token (probably DIV) + pos, tok, val := l.ScanRegex() + output := fmt.Sprintf("%d:%d %s %q", pos.Line, pos.Column, tok, val) + if output != test.output { + t.Errorf("expected %q, got %q", test.output, output) + } + }) + } +} + +func TestScanRegexInvalid(t *testing.T) { + defer func() { + r := recover() + if message, ok := r.(string); ok { + expected := "ScanRegex should only be called after DIV or DIV_ASSIGN token" + if message != expected { + t.Fatalf("expected %q, got %q", expected, message) + } + } else { + t.Fatalf("expected panic of string type") + } + }() + l := NewLexer([]byte("foo/")) + l.Scan() // Scan first token (NAME foo) + l.ScanRegex() +} + +func TestHadSpace(t *testing.T) { + tests := []struct { + input string + tokens []Token + spaces []bool + }{ + {`foo(x)`, []Token{NAME, LPAREN, NAME, RPAREN}, []bool{false, false, false, false}}, + {`foo (x) `, []Token{NAME, LPAREN, NAME, RPAREN}, []bool{false, true, false, false}}, + {` foo ( x ) `, []Token{NAME, LPAREN, NAME, RPAREN}, []bool{true, true, true, true}}, + } + for _, test := range tests { + t.Run(test.input, func(t *testing.T) { + l := NewLexer([]byte(test.input)) + for i := 0; ; i++ { + _, tok, _ := l.Scan() + if tok == EOF { + break + } + if tok != test.tokens[i] { + t.Errorf("expected %s for token %d, got %s", test.tokens[i], i, tok) + } + if l.HadSpace() != test.spaces[i] { + t.Errorf("expected %v for space %d, got %v", test.spaces[i], i, l.HadSpace()) + } + } + }) + } +} + +func TestPeekByte(t *testing.T) { + l := NewLexer([]byte("foo()")) + b := l.PeekByte() + if b != 'f' { + t.Errorf("expected 'f', got %q", b) + } + _, tok, _ := l.Scan() + if tok != NAME { + t.Errorf("expected name, got %s", tok) + } + b = l.PeekByte() + if b != '(' { + t.Errorf("expected '(', got %q", b) + } + _, tok, _ = l.Scan() + if tok != LPAREN { + t.Errorf("expected (, got %s", tok) + } + _, tok, _ = l.Scan() + if tok != RPAREN { + t.Errorf("expected ), got %s", tok) + } + b = l.PeekByte() + if b != 0 { + t.Errorf("expected 0, got %q", b) + } +} + +func TestKeywordToken(t *testing.T) { + tests := []struct { + name string + tok Token + }{ + {"print", PRINT}, + {"split", F_SPLIT}, + {"BEGIN", BEGIN}, + {"foo", ILLEGAL}, + {"GoAWK", ILLEGAL}, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + tok := KeywordToken(test.name) + if tok != test.tok { + t.Errorf("expected %v, got %v", test.tok, tok) + } + }) + } +} + +func TestAllTokens(t *testing.T) { + input := "# comment line\n" + + "+ += && = : , -- /\n/= $ @ == >= > >> ++ { [ < ( #\n" + + "<= ~ % %= * *= !~ ! != | || ^ ^= ** **= ? } ] ) ; - -= " + + "BEGIN break continue delete do else END exit " + + "for function getline if in next print printf return while " + + "atan2 close cos exp fflush gsub index int length log match rand " + + "sin split sprintf sqrt srand sub substr system tolower toupper " + + "x \"str\\n\" 1234\n" + + "` ." + + strs := make([]string, 0, LAST+1) + seen := make([]bool, LAST+1) + l := NewLexer([]byte(input)) + for { + _, tok, _ := l.Scan() + strs = append(strs, tok.String()) + seen[int(tok)] = true + if tok == EOF { + break + } + } + output := strings.Join(strs, " ") + + expected := " " + + "+ += && = : , -- / /= $ @ == >= > >> ++ { [ < ( " + + "<= ~ % %= * *= !~ ! != | || ^ ^= ^ ^= ? } ] ) ; - -= " + + "BEGIN break continue delete do else END exit " + + "for function getline if in next print printf return while " + + "atan2 close cos exp fflush gsub index int length log match rand " + + "sin split sprintf sqrt srand sub substr system tolower toupper " + + "name string number " + + " EOF" + if output != expected { + t.Errorf("expected %q, got %q", expected, output) + } + + for i, s := range seen { + if !s && Token(i) != CONCAT && Token(i) != REGEX { + t.Errorf("token %s (%d) not seen", Token(i), i) + } + } + + l = NewLexer([]byte(`/foo/`)) + _, tok1, _ := l.Scan() + _, tok2, val := l.ScanRegex() + if tok1 != DIV || tok2 != REGEX || val != "foo" { + t.Errorf(`expected / regex "foo", got %s %s %q`, tok1, tok2, val) + } + + l = NewLexer([]byte(`/=foo/`)) + _, tok1, _ = l.Scan() + _, tok2, val = l.ScanRegex() + if tok1 != DIV_ASSIGN || tok2 != REGEX || val != "=foo" { + t.Errorf(`expected /= regex "=foo", got %s %s %q`, tok1, tok2, val) + } +} + +func TestUnescape(t *testing.T) { + tests := []struct { + input string + output string + error string + }{ + {``, "", ""}, + {`foo bar`, "foo bar", ""}, + {`foo\tbar`, "foo\tbar", ""}, + {"foo\nbar", "", "can't have newline in string"}, + {`foo"`, "foo\"", ""}, + {`O'Connor`, "O'Connor", ""}, + {`foo\`, "foo\\", ""}, + // Other cases tested in TestLexer string handling. + } + for _, test := range tests { + t.Run(test.input, func(t *testing.T) { + got, err := Unescape(test.input) + if err != nil { + if err.Error() != test.error { + t.Fatalf("expected error %q, got %q", test.error, err) + } + } else { + if test.error != "" { + t.Fatalf("expected error %q, got %q", test.error, "") + } + if got != test.output { + t.Fatalf("expected %q, got %q", test.output, got) + } + } + }) + } +} + +func benchmarkLexer(b *testing.B, repeat int, source string) { + fullSource := []byte(strings.Repeat(source+"\n", repeat)) + b.ResetTimer() + for i := 0; i < b.N; i++ { + l := NewLexer(fullSource) + for { + _, tok, _ := l.Scan() + if tok == EOF || tok == ILLEGAL { + break + } + } + } +} + +func BenchmarkProgram(b *testing.B) { + benchmarkLexer(b, 5, `{ print $1, ($3+$4)*$5 }`) +} + +func BenchmarkNames(b *testing.B) { + benchmarkLexer(b, 5, `x y i foobar abcdefghij0123456789 _`) +} + +func BenchmarkKeywords(b *testing.B) { + benchmarkLexer(b, 5, `BEGIN END print sub if length`) +} + +func BenchmarkSimpleTokens(b *testing.B) { + benchmarkLexer(b, 5, "\n : , { [ ( } ] ) ~ ? ; $") +} + +func BenchmarkChoiceTokens(b *testing.B) { + benchmarkLexer(b, 5, `/ /= % %= + ++ += * ** **= *= = == ^ ^= ! != !~ < <= > >= >> && | ||`) +} + +func BenchmarkNumbers(b *testing.B) { + benchmarkLexer(b, 5, `0 1 .5 1234 1234567890 1234.56789e-50`) +} + +func BenchmarkStrings(b *testing.B) { + benchmarkLexer(b, 5, `"x" "y" "xyz" "foo" "foo bar baz" "foo\tbar\rbaz\n"`) +} + +func BenchmarkRegex(b *testing.B) { + source := `/x/ /./ /foo/ /bar/ /=equals=/ /\/\/\/\//` + fullSource := []byte(strings.Repeat(source+" ", 5)) + b.ResetTimer() + for i := 0; i < b.N; i++ { + l := NewLexer(fullSource) + for { + _, tok, _ := l.Scan() + if tok == EOF { + break + } + if tok != DIV && tok != DIV_ASSIGN { + b.Fatalf("expected / or /=, got %s", tok) + } + _, tok, _ = l.ScanRegex() + if tok != REGEX { + b.Fatalf("expected regex, got %s", tok) + } + } + } +} + +func Example() { + lexer := NewLexer([]byte(`$0 { print $1 }`)) + for { + pos, tok, val := lexer.Scan() + if tok == EOF { + break + } + fmt.Printf("%d:%d %s %q\n", pos.Line, pos.Column, tok, val) + } + // Output: + // 1:1 $ "" + // 1:2 number "0" + // 1:4 { "" + // 1:6 print "" + // 1:12 $ "" + // 1:13 number "1" + // 1:15 } "" +} diff --git a/src/tool/awk/lexer/token.go b/src/tool/awk/lexer/token.go new file mode 100644 index 0000000..b3be569 --- /dev/null +++ b/src/tool/awk/lexer/token.go @@ -0,0 +1,263 @@ +// Lexer tokens + +package lexer + +// Token is the type of a single token. +type Token int + +const ( + ILLEGAL Token = iota + EOF + NEWLINE + CONCAT // Not really a token, but used as an operator + + // Symbols + + ADD + ADD_ASSIGN + AND + APPEND + ASSIGN + AT + COLON + COMMA + DECR + DIV + DIV_ASSIGN + DOLLAR + EQUALS + GTE + GREATER + INCR + LBRACE + LBRACKET + LESS + LPAREN + LTE + MATCH + MOD + MOD_ASSIGN + MUL + MUL_ASSIGN + NOT_MATCH + NOT + NOT_EQUALS + OR + PIPE + POW + POW_ASSIGN + QUESTION + RBRACE + RBRACKET + RPAREN + SEMICOLON + SUB + SUB_ASSIGN + + // Keywords + + BEGIN + BREAK + CONTINUE + DELETE + DO + ELSE + END + EXIT + FOR + FUNCTION + GETLINE + IF + IN + NEXT + PRINT + PRINTF + RETURN + WHILE + + // Built-in functions + + F_ATAN2 + F_CLOSE + F_COS + F_EXP + F_FFLUSH + F_GSUB + F_INDEX + F_INT + F_LENGTH + F_LOG + F_MATCH + F_RAND + F_SIN + F_SPLIT + F_SPRINTF + F_SQRT + F_SRAND + F_SUB + F_SUBSTR + F_SYSTEM + F_TOLOWER + F_TOUPPER + + // Literals and names (variables and arrays) + + NAME + NUMBER + STRING + REGEX + + LAST = REGEX + FIRST_FUNC = F_ATAN2 + LAST_FUNC = F_TOUPPER +) + +var keywordTokens = map[string]Token{ + "BEGIN": BEGIN, + "break": BREAK, + "continue": CONTINUE, + "delete": DELETE, + "do": DO, + "else": ELSE, + "END": END, + "exit": EXIT, + "for": FOR, + "function": FUNCTION, + "getline": GETLINE, + "if": IF, + "in": IN, + "next": NEXT, + "print": PRINT, + "printf": PRINTF, + "return": RETURN, + "while": WHILE, + + "atan2": F_ATAN2, + "close": F_CLOSE, + "cos": F_COS, + "exp": F_EXP, + "fflush": F_FFLUSH, + "gsub": F_GSUB, + "index": F_INDEX, + "int": F_INT, + "length": F_LENGTH, + "log": F_LOG, + "match": F_MATCH, + "rand": F_RAND, + "sin": F_SIN, + "split": F_SPLIT, + "sprintf": F_SPRINTF, + "sqrt": F_SQRT, + "srand": F_SRAND, + "sub": F_SUB, + "substr": F_SUBSTR, + "system": F_SYSTEM, + "tolower": F_TOLOWER, + "toupper": F_TOUPPER, +} + +// KeywordToken returns the token associated with the given keyword +// string, or ILLEGAL if given name is not a keyword. +func KeywordToken(name string) Token { + return keywordTokens[name] +} + +var tokenNames = map[Token]string{ + ILLEGAL: "", + EOF: "EOF", + NEWLINE: "", + CONCAT: "", + + ADD: "+", + ADD_ASSIGN: "+=", + AND: "&&", + APPEND: ">>", + ASSIGN: "=", + AT: "@", + COLON: ":", + COMMA: ",", + DECR: "--", + DIV: "/", + DIV_ASSIGN: "/=", + DOLLAR: "$", + EQUALS: "==", + GTE: ">=", + GREATER: ">", + INCR: "++", + LBRACE: "{", + LBRACKET: "[", + LESS: "<", + LPAREN: "(", + LTE: "<=", + MATCH: "~", + MOD: "%", + MOD_ASSIGN: "%=", + MUL: "*", + MUL_ASSIGN: "*=", + NOT_MATCH: "!~", + NOT: "!", + NOT_EQUALS: "!=", + OR: "||", + PIPE: "|", + POW: "^", + POW_ASSIGN: "^=", + QUESTION: "?", + RBRACE: "}", + RBRACKET: "]", + RPAREN: ")", + SEMICOLON: ";", + SUB: "-", + SUB_ASSIGN: "-=", + + BEGIN: "BEGIN", + BREAK: "break", + CONTINUE: "continue", + DELETE: "delete", + DO: "do", + ELSE: "else", + END: "END", + EXIT: "exit", + FOR: "for", + FUNCTION: "function", + GETLINE: "getline", + IF: "if", + IN: "in", + NEXT: "next", + PRINT: "print", + PRINTF: "printf", + RETURN: "return", + WHILE: "while", + + F_ATAN2: "atan2", + F_CLOSE: "close", + F_COS: "cos", + F_EXP: "exp", + F_FFLUSH: "fflush", + F_GSUB: "gsub", + F_INDEX: "index", + F_INT: "int", + F_LENGTH: "length", + F_LOG: "log", + F_MATCH: "match", + F_RAND: "rand", + F_SIN: "sin", + F_SPLIT: "split", + F_SPRINTF: "sprintf", + F_SQRT: "sqrt", + F_SRAND: "srand", + F_SUB: "sub", + F_SUBSTR: "substr", + F_SYSTEM: "system", + F_TOLOWER: "tolower", + F_TOUPPER: "toupper", + + NAME: "name", + NUMBER: "number", + STRING: "string", + REGEX: "regex", +} + +// String returns the string name of this token. +func (t Token) String() string { + return tokenNames[t] +} diff --git a/src/tool/awk/license.txt b/src/tool/awk/license.txt new file mode 100644 index 0000000..e39bc70 --- /dev/null +++ b/src/tool/awk/license.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Ben Hoyt + +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 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/tool/awk/parser/parser.go b/src/tool/awk/parser/parser.go new file mode 100644 index 0000000..c71bd18 --- /dev/null +++ b/src/tool/awk/parser/parser.go @@ -0,0 +1,1048 @@ +// Package parser is an AWK parser and abstract syntax tree. +// +// Use the ParseProgram function to parse an AWK program, and then give the +// result to interp.Exec, interp.ExecProgram, or interp.New to execute it. +package parser + +import ( + "fmt" + "io" + "regexp" + "strconv" + "strings" + + "github.com/benhoyt/goawk/internal/ast" + "github.com/benhoyt/goawk/internal/compiler" + . "github.com/benhoyt/goawk/lexer" +) + +// ParseError (actually *ParseError) is the type of error returned by +// ParseProgram. +type ParseError struct { + // Source line/column position where the error occurred. + Position Position + // Error message. + Message string +} + +// Error returns a formatted version of the error, including the line +// and column numbers. +func (e *ParseError) Error() string { + return fmt.Sprintf("parse error at %d:%d: %s", e.Position.Line, e.Position.Column, e.Message) +} + +// ParserConfig lets you specify configuration for the parsing +// process (for example printing type information for debugging). +type ParserConfig struct { + // Enable printing of type information + DebugTypes bool + + // io.Writer to print type information on (for example, os.Stderr) + DebugWriter io.Writer + + // Map of named Go functions to allow calling from AWK. See docs + // on interp.Config.Funcs for details. + Funcs map[string]interface{} +} + +// ParseProgram parses an entire AWK program, returning the *Program +// abstract syntax tree or a *ParseError on error. "config" describes +// the parser configuration (and is allowed to be nil). +func ParseProgram(src []byte, config *ParserConfig) (prog *Program, err error) { + defer func() { + // The parser uses panic with a *ParseError to signal parsing + // errors internally, and they're caught here. This + // significantly simplifies the recursive descent calls as + // we don't have to check errors everywhere. + if r := recover(); r != nil { + // Convert to ParseError or re-panic + err = r.(*ParseError) + } + }() + lexer := NewLexer(src) + p := parser{lexer: lexer} + if config != nil { + p.debugTypes = config.DebugTypes + p.debugWriter = config.DebugWriter + p.nativeFuncs = config.Funcs + } + p.initResolve() + p.next() // initialize p.tok + + // Parse into abstract syntax tree + prog = p.program() + + // Compile to virtual machine code + prog.Compiled, err = compiler.Compile(prog.toAST()) + return prog, err +} + +// Program is the parsed and compiled representation of an entire AWK program. +type Program struct { + // These fields aren't intended to be used or modified directly, + // but are exported for the interpreter (Program itself needs to + // be exported in package "parser", otherwise these could live in + // "internal/ast".) + Begin []ast.Stmts + Actions []ast.Action + End []ast.Stmts + Functions []ast.Function + Scalars map[string]int + Arrays map[string]int + Compiled *compiler.Program +} + +// String returns an indented, pretty-printed version of the parsed +// program. +func (p *Program) String() string { + return p.toAST().String() +} + +// Disassemble writes a human-readable form of the program's virtual machine +// instructions to writer. +func (p *Program) Disassemble(writer io.Writer) error { + return p.Compiled.Disassemble(writer) +} + +// toAST converts the *Program to an *ast.Program. +func (p *Program) toAST() *ast.Program { + return &ast.Program{ + Begin: p.Begin, + Actions: p.Actions, + End: p.End, + Functions: p.Functions, + Scalars: p.Scalars, + Arrays: p.Arrays, + } +} + +// Parser state +type parser struct { + // Lexer instance and current token values + lexer *Lexer + pos Position // position of last token (tok) + tok Token // last lexed token + prevTok Token // previously lexed token + val string // string value of last token (or "") + + // Parsing state + inAction bool // true if parsing an action (false in BEGIN or END) + funcName string // function name if parsing a func, else "" + loopDepth int // current loop depth (0 if not in any loops) + + // Variable tracking and resolving + locals map[string]bool // current function's locals (for determining scope) + varTypes map[string]map[string]typeInfo // map of func name to var name to type + varRefs []varRef // all variable references (usually scalars) + arrayRefs []arrayRef // all array references + multiExprs map[*ast.MultiExpr]Position // tracks comma-separated expressions + + // Function tracking + functions map[string]int // map of function name to index + userCalls []userCall // record calls so we can resolve them later + nativeFuncs map[string]interface{} + + // Configuration and debugging + debugTypes bool // show variable types for debugging + debugWriter io.Writer // where the debug output goes +} + +// Parse an entire AWK program. +func (p *parser) program() *Program { + prog := &Program{} + p.optionalNewlines() + for p.tok != EOF { + switch p.tok { + case BEGIN: + p.next() + prog.Begin = append(prog.Begin, p.stmtsBrace()) + case END: + p.next() + prog.End = append(prog.End, p.stmtsBrace()) + case FUNCTION: + function := p.function() + p.addFunction(function.Name, len(prog.Functions)) + prog.Functions = append(prog.Functions, function) + default: + p.inAction = true + // Allow empty pattern, normal pattern, or range pattern + pattern := []ast.Expr{} + if !p.matches(LBRACE, EOF) { + pattern = append(pattern, p.expr()) + } + if !p.matches(LBRACE, EOF, NEWLINE) { + p.commaNewlines() + pattern = append(pattern, p.expr()) + } + // Or an empty action (equivalent to { print $0 }) + action := ast.Action{pattern, nil} + if p.tok == LBRACE { + action.Stmts = p.stmtsBrace() + } + prog.Actions = append(prog.Actions, action) + p.inAction = false + } + p.optionalNewlines() + } + + p.resolveUserCalls(prog) + p.resolveVars(prog) + p.checkMultiExprs() + + return prog +} + +// Parse a list of statements. +func (p *parser) stmts() ast.Stmts { + switch p.tok { + case SEMICOLON: + // This is so things like this parse correctly: + // BEGIN { for (i=0; i<10; i++); print "x" } + p.next() + return nil + case LBRACE: + return p.stmtsBrace() + default: + return []ast.Stmt{p.stmt()} + } +} + +// Parse a list of statements surrounded in {...} braces. +func (p *parser) stmtsBrace() ast.Stmts { + p.expect(LBRACE) + p.optionalNewlines() + ss := []ast.Stmt{} + for p.tok != RBRACE && p.tok != EOF { + ss = append(ss, p.stmt()) + } + p.expect(RBRACE) + if p.tok == SEMICOLON { + p.next() + } + return ss +} + +// Parse a "simple" statement (eg: allowed in a for loop init clause). +func (p *parser) simpleStmt() ast.Stmt { + switch p.tok { + case PRINT, PRINTF: + op := p.tok + p.next() + args := p.exprList(p.printExpr) + if len(args) == 1 { + // This allows parens around all the print args + if m, ok := args[0].(*ast.MultiExpr); ok { + args = m.Exprs + p.useMultiExpr(m) + } + } + redirect := ILLEGAL + var dest ast.Expr + if p.matches(GREATER, APPEND, PIPE) { + redirect = p.tok + p.next() + dest = p.expr() + } + if op == PRINT { + return &ast.PrintStmt{args, redirect, dest} + } else { + if len(args) == 0 { + panic(p.errorf("expected printf args, got none")) + } + return &ast.PrintfStmt{args, redirect, dest} + } + case DELETE: + p.next() + ref := p.arrayRef(p.val, p.pos) + p.expect(NAME) + var index []ast.Expr + if p.tok == LBRACKET { + p.next() + index = p.exprList(p.expr) + if len(index) == 0 { + panic(p.errorf("expected expression instead of ]")) + } + p.expect(RBRACKET) + } + return &ast.DeleteStmt{ref, index} + case IF, FOR, WHILE, DO, BREAK, CONTINUE, NEXT, EXIT, RETURN: + panic(p.errorf("expected print/printf, delete, or expression")) + default: + return &ast.ExprStmt{p.expr()} + } +} + +// Parse any top-level statement. +func (p *parser) stmt() ast.Stmt { + for p.matches(SEMICOLON, NEWLINE) { + p.next() + } + var s ast.Stmt + switch p.tok { + case IF: + p.next() + p.expect(LPAREN) + cond := p.expr() + p.expect(RPAREN) + p.optionalNewlines() + body := p.stmts() + p.optionalNewlines() + var elseBody ast.Stmts + if p.tok == ELSE { + p.next() + p.optionalNewlines() + elseBody = p.stmts() + } + s = &ast.IfStmt{cond, body, elseBody} + case FOR: + // Parse for statement, either "for in" or C-like for loop. + // + // FOR LPAREN NAME IN NAME RPAREN NEWLINE* stmts | + // FOR LPAREN [simpleStmt] SEMICOLON NEWLINE* + // [expr] SEMICOLON NEWLINE* + // [simpleStmt] RPAREN NEWLINE* stmts + // + p.next() + p.expect(LPAREN) + var pre ast.Stmt + if p.tok != SEMICOLON { + pre = p.simpleStmt() + } + if pre != nil && p.tok == RPAREN { + // Match: for (var in array) body + p.next() + p.optionalNewlines() + exprStmt, ok := pre.(*ast.ExprStmt) + if !ok { + panic(p.errorf("expected 'for (var in array) ...'")) + } + inExpr, ok := (exprStmt.Expr).(*ast.InExpr) + if !ok { + panic(p.errorf("expected 'for (var in array) ...'")) + } + if len(inExpr.Index) != 1 { + panic(p.errorf("expected 'for (var in array) ...'")) + } + varExpr, ok := (inExpr.Index[0]).(*ast.VarExpr) + if !ok { + panic(p.errorf("expected 'for (var in array) ...'")) + } + body := p.loopStmts() + s = &ast.ForInStmt{varExpr, inExpr.Array, body} + } else { + // Match: for ([pre]; [cond]; [post]) body + p.expect(SEMICOLON) + p.optionalNewlines() + var cond ast.Expr + if p.tok != SEMICOLON { + cond = p.expr() + } + p.expect(SEMICOLON) + p.optionalNewlines() + var post ast.Stmt + if p.tok != RPAREN { + post = p.simpleStmt() + } + p.expect(RPAREN) + p.optionalNewlines() + body := p.loopStmts() + s = &ast.ForStmt{pre, cond, post, body} + } + case WHILE: + p.next() + p.expect(LPAREN) + cond := p.expr() + p.expect(RPAREN) + p.optionalNewlines() + body := p.loopStmts() + s = &ast.WhileStmt{cond, body} + case DO: + p.next() + p.optionalNewlines() + body := p.loopStmts() + p.expect(WHILE) + p.expect(LPAREN) + cond := p.expr() + p.expect(RPAREN) + s = &ast.DoWhileStmt{body, cond} + case BREAK: + if p.loopDepth == 0 { + panic(p.errorf("break must be inside a loop body")) + } + p.next() + s = &ast.BreakStmt{} + case CONTINUE: + if p.loopDepth == 0 { + panic(p.errorf("continue must be inside a loop body")) + } + p.next() + s = &ast.ContinueStmt{} + case NEXT: + if !p.inAction && p.funcName == "" { + panic(p.errorf("next can't be inside BEGIN or END")) + } + p.next() + s = &ast.NextStmt{} + case EXIT: + p.next() + var status ast.Expr + if !p.matches(NEWLINE, SEMICOLON, RBRACE) { + status = p.expr() + } + s = &ast.ExitStmt{status} + case RETURN: + if p.funcName == "" { + panic(p.errorf("return must be inside a function")) + } + p.next() + var value ast.Expr + if !p.matches(NEWLINE, SEMICOLON, RBRACE) { + value = p.expr() + } + s = &ast.ReturnStmt{value} + case LBRACE: + body := p.stmtsBrace() + s = &ast.BlockStmt{body} + default: + s = p.simpleStmt() + } + + // Ensure statements are separated by ; or newline + if !p.matches(NEWLINE, SEMICOLON, RBRACE) && p.prevTok != NEWLINE && p.prevTok != SEMICOLON && p.prevTok != RBRACE { + panic(p.errorf("expected ; or newline between statements")) + } + for p.matches(NEWLINE, SEMICOLON) { + p.next() + } + return s +} + +// Same as stmts(), but tracks that we're in a loop (as break and +// continue can only occur inside a loop). +func (p *parser) loopStmts() ast.Stmts { + p.loopDepth++ + ss := p.stmts() + p.loopDepth-- + return ss +} + +// Parse a function definition and body. As it goes, this resolves +// the local variable indexes and tracks which parameters are array +// parameters. +func (p *parser) function() ast.Function { + if p.funcName != "" { + // Should never actually get here (FUNCTION token is only + // handled at the top level), but just in case. + panic(p.errorf("can't nest functions")) + } + p.next() + name := p.val + if _, ok := p.functions[name]; ok { + panic(p.errorf("function %q already defined", name)) + } + p.expect(NAME) + p.expect(LPAREN) + first := true + params := make([]string, 0, 7) // pre-allocate some to reduce allocations + p.locals = make(map[string]bool, 7) + for p.tok != RPAREN { + if !first { + p.commaNewlines() + } + first = false + param := p.val + if param == name { + panic(p.errorf("can't use function name as parameter name")) + } + if p.locals[param] { + panic(p.errorf("duplicate parameter name %q", param)) + } + p.expect(NAME) + params = append(params, param) + p.locals[param] = true + } + p.expect(RPAREN) + p.optionalNewlines() + + // Parse the body + p.startFunction(name, params) + body := p.stmtsBrace() + p.stopFunction() + p.locals = nil + + return ast.Function{name, params, nil, body} +} + +// Parse expressions separated by commas: args to print[f] or user +// function call, or multi-dimensional index. +func (p *parser) exprList(parse func() ast.Expr) []ast.Expr { + exprs := []ast.Expr{} + first := true + for !p.matches(NEWLINE, SEMICOLON, RBRACE, RBRACKET, RPAREN, GREATER, PIPE, APPEND) { + if !first { + p.commaNewlines() + } + first = false + exprs = append(exprs, parse()) + } + return exprs +} + +// Here's where things get slightly interesting: only certain +// expression types are allowed in print/printf statements, +// presumably so `print a, b > "file"` is a file redirect instead of +// a greater-than comparison. So we kind of have two ways to recurse +// down here: expr(), which parses all expressions, and printExpr(), +// which skips PIPE GETLINE and GREATER expressions. + +// Parse a single expression. +func (p *parser) expr() ast.Expr { return p.getLine() } +func (p *parser) printExpr() ast.Expr { return p._assign(p.printCond) } + +// Parse an "expr | getline [lvalue]" expression: +// +// assign [PIPE GETLINE [lvalue]] +func (p *parser) getLine() ast.Expr { + expr := p._assign(p.cond) + if p.tok == PIPE { + p.next() + p.expect(GETLINE) + target := p.optionalLValue() + return &ast.GetlineExpr{expr, target, nil} + } + return expr +} + +// Parse an = assignment expression: +// +// lvalue [assign_op assign] +// +// An lvalue is a variable name, an array[expr] index expression, or +// an $expr field expression. +func (p *parser) _assign(higher func() ast.Expr) ast.Expr { + expr := higher() + _, isNamedField := expr.(*ast.NamedFieldExpr) + if (isNamedField || ast.IsLValue(expr)) && p.matches(ASSIGN, ADD_ASSIGN, DIV_ASSIGN, + MOD_ASSIGN, MUL_ASSIGN, POW_ASSIGN, SUB_ASSIGN) { + if isNamedField { + panic(p.errorf("assigning @ expression not supported")) + } + op := p.tok + p.next() + right := p._assign(higher) + switch op { + case ASSIGN: + return &ast.AssignExpr{expr, right} + case ADD_ASSIGN: + op = ADD + case DIV_ASSIGN: + op = DIV + case MOD_ASSIGN: + op = MOD + case MUL_ASSIGN: + op = MUL + case POW_ASSIGN: + op = POW + case SUB_ASSIGN: + op = SUB + } + return &ast.AugAssignExpr{expr, op, right} + } + return expr +} + +// Parse a ?: conditional expression: +// +// or [QUESTION NEWLINE* cond COLON NEWLINE* cond] +func (p *parser) cond() ast.Expr { return p._cond(p.or) } +func (p *parser) printCond() ast.Expr { return p._cond(p.printOr) } + +func (p *parser) _cond(higher func() ast.Expr) ast.Expr { + expr := higher() + if p.tok == QUESTION { + p.next() + p.optionalNewlines() + t := p.expr() + p.expect(COLON) + p.optionalNewlines() + f := p.expr() + return &ast.CondExpr{expr, t, f} + } + return expr +} + +// Parse an || or expression: +// +// and [OR NEWLINE* and] [OR NEWLINE* and] ... +func (p *parser) or() ast.Expr { return p.binaryLeft(p.and, true, OR) } +func (p *parser) printOr() ast.Expr { return p.binaryLeft(p.printAnd, true, OR) } + +// Parse an && and expression: +// +// in [AND NEWLINE* in] [AND NEWLINE* in] ... +func (p *parser) and() ast.Expr { return p.binaryLeft(p.in, true, AND) } +func (p *parser) printAnd() ast.Expr { return p.binaryLeft(p.printIn, true, AND) } + +// Parse an "in" expression: +// +// match [IN NAME] [IN NAME] ... +func (p *parser) in() ast.Expr { return p._in(p.match) } +func (p *parser) printIn() ast.Expr { return p._in(p.printMatch) } + +func (p *parser) _in(higher func() ast.Expr) ast.Expr { + expr := higher() + for p.tok == IN { + p.next() + ref := p.arrayRef(p.val, p.pos) + p.expect(NAME) + expr = &ast.InExpr{[]ast.Expr{expr}, ref} + } + return expr +} + +// Parse a ~ match expression: +// +// compare [MATCH|NOT_MATCH compare] +func (p *parser) match() ast.Expr { return p._match(p.compare) } +func (p *parser) printMatch() ast.Expr { return p._match(p.printCompare) } + +func (p *parser) _match(higher func() ast.Expr) ast.Expr { + expr := higher() + if p.matches(MATCH, NOT_MATCH) { + op := p.tok + p.next() + right := p.regexStr(higher) // Not match() as these aren't associative + return &ast.BinaryExpr{expr, op, right} + } + return expr +} + +// Parse a comparison expression: +// +// concat [EQUALS|NOT_EQUALS|LESS|LTE|GREATER|GTE concat] +func (p *parser) compare() ast.Expr { return p._compare(EQUALS, NOT_EQUALS, LESS, LTE, GTE, GREATER) } +func (p *parser) printCompare() ast.Expr { return p._compare(EQUALS, NOT_EQUALS, LESS, LTE, GTE) } + +func (p *parser) _compare(ops ...Token) ast.Expr { + expr := p.concat() + if p.matches(ops...) { + op := p.tok + p.next() + right := p.concat() // Not compare() as these aren't associative + return &ast.BinaryExpr{expr, op, right} + } + return expr +} + +func (p *parser) concat() ast.Expr { + expr := p.add() + for p.matches(DOLLAR, AT, NOT, NAME, NUMBER, STRING, LPAREN, INCR, DECR) || + (p.tok >= FIRST_FUNC && p.tok <= LAST_FUNC) { + right := p.add() + expr = &ast.BinaryExpr{expr, CONCAT, right} + } + return expr +} + +func (p *parser) add() ast.Expr { + return p.binaryLeft(p.mul, false, ADD, SUB) +} + +func (p *parser) mul() ast.Expr { + return p.binaryLeft(p.pow, false, MUL, DIV, MOD) +} + +func (p *parser) pow() ast.Expr { + // Note that pow (expr ^ expr) is right-associative + expr := p.preIncr() + if p.tok == POW { + p.next() + right := p.pow() + return &ast.BinaryExpr{expr, POW, right} + } + return expr +} + +func (p *parser) preIncr() ast.Expr { + if p.tok == INCR || p.tok == DECR { + op := p.tok + p.next() + exprPos := p.pos + expr := p.preIncr() + if !ast.IsLValue(expr) { + panic(p.posErrorf(exprPos, "expected lvalue after ++ or --")) + } + return &ast.IncrExpr{expr, op, true} + } + return p.postIncr() +} + +func (p *parser) postIncr() ast.Expr { + expr := p.primary() + if (p.tok == INCR || p.tok == DECR) && ast.IsLValue(expr) { + op := p.tok + p.next() + return &ast.IncrExpr{expr, op, false} + } + return expr +} + +func (p *parser) primary() ast.Expr { + switch p.tok { + case NUMBER: + // AWK allows forms like "1.5e", but ParseFloat doesn't + s := strings.TrimRight(p.val, "eE") + n, _ := strconv.ParseFloat(s, 64) + p.next() + return &ast.NumExpr{n} + case STRING: + s := p.val + p.next() + return &ast.StrExpr{s} + case DIV, DIV_ASSIGN: + // If we get to DIV or DIV_ASSIGN as a primary expression, + // it's actually a regex. + regex := p.nextRegex() + return &ast.RegExpr{regex} + case DOLLAR: + p.next() + return &ast.FieldExpr{p.primary()} + case AT: + p.next() + return &ast.NamedFieldExpr{p.primary()} + case NOT, ADD, SUB: + op := p.tok + p.next() + return &ast.UnaryExpr{op, p.pow()} + case NAME: + name := p.val + namePos := p.pos + p.next() + if p.tok == LBRACKET { + // a[x] or a[x, y] array index expression + p.next() + index := p.exprList(p.expr) + if len(index) == 0 { + panic(p.errorf("expected expression instead of ]")) + } + p.expect(RBRACKET) + return &ast.IndexExpr{p.arrayRef(name, namePos), index} + } else if p.tok == LPAREN && !p.lexer.HadSpace() { + if p.locals[name] { + panic(p.errorf("can't call local variable %q as function", name)) + } + // Grammar requires no space between function name and + // left paren for user function calls, hence the funky + // lexer.HadSpace() method. + return p.userCall(name, namePos) + } + return p.varRef(name, namePos) + case LPAREN: + parenPos := p.pos + p.next() + exprs := p.exprList(p.expr) + switch len(exprs) { + case 0: + panic(p.errorf("expected expression, not %s", p.tok)) + case 1: + p.expect(RPAREN) + return exprs[0] + default: + // Multi-dimensional array "in" requires parens around index + p.expect(RPAREN) + if p.tok == IN { + p.next() + ref := p.arrayRef(p.val, p.pos) + p.expect(NAME) + return &ast.InExpr{exprs, ref} + } + // MultiExpr is used as a pseudo-expression for print[f] parsing. + return p.multiExpr(exprs, parenPos) + } + case GETLINE: + p.next() + target := p.optionalLValue() + var file ast.Expr + if p.tok == LESS { + p.next() + file = p.primary() + } + return &ast.GetlineExpr{nil, target, file} + // Below is the parsing of all the builtin function calls. We + // could unify these but several of them have special handling + // (array/lvalue/regex params, optional arguments, and so on). + // Doing it this way means we can check more at parse time. + case F_SUB, F_GSUB: + op := p.tok + p.next() + p.expect(LPAREN) + regex := p.regexStr(p.expr) + p.commaNewlines() + repl := p.expr() + args := []ast.Expr{regex, repl} + if p.tok == COMMA { + p.commaNewlines() + inPos := p.pos + in := p.expr() + if !ast.IsLValue(in) { + panic(p.posErrorf(inPos, "3rd arg to sub/gsub must be lvalue")) + } + args = append(args, in) + } + p.expect(RPAREN) + return &ast.CallExpr{op, args} + case F_SPLIT: + p.next() + p.expect(LPAREN) + str := p.expr() + p.commaNewlines() + ref := p.arrayRef(p.val, p.pos) + p.expect(NAME) + args := []ast.Expr{str, ref} + if p.tok == COMMA { + p.commaNewlines() + args = append(args, p.regexStr(p.expr)) + } + p.expect(RPAREN) + return &ast.CallExpr{F_SPLIT, args} + case F_MATCH: + p.next() + p.expect(LPAREN) + str := p.expr() + p.commaNewlines() + regex := p.regexStr(p.expr) + p.expect(RPAREN) + return &ast.CallExpr{F_MATCH, []ast.Expr{str, regex}} + case F_RAND: + p.next() + p.expect(LPAREN) + p.expect(RPAREN) + return &ast.CallExpr{F_RAND, nil} + case F_SRAND: + p.next() + p.expect(LPAREN) + var args []ast.Expr + if p.tok != RPAREN { + args = append(args, p.expr()) + } + p.expect(RPAREN) + return &ast.CallExpr{F_SRAND, args} + case F_LENGTH: + p.next() + var args []ast.Expr + // AWK quirk: "length" is allowed to be called without parens + if p.tok == LPAREN { + p.next() + if p.tok != RPAREN { + args = append(args, p.expr()) + } + p.expect(RPAREN) + } + return &ast.CallExpr{F_LENGTH, args} + case F_SUBSTR: + p.next() + p.expect(LPAREN) + str := p.expr() + p.commaNewlines() + start := p.expr() + args := []ast.Expr{str, start} + if p.tok == COMMA { + p.commaNewlines() + args = append(args, p.expr()) + } + p.expect(RPAREN) + return &ast.CallExpr{F_SUBSTR, args} + case F_SPRINTF: + p.next() + p.expect(LPAREN) + args := []ast.Expr{p.expr()} + for p.tok == COMMA { + p.commaNewlines() + args = append(args, p.expr()) + } + p.expect(RPAREN) + return &ast.CallExpr{F_SPRINTF, args} + case F_FFLUSH: + p.next() + p.expect(LPAREN) + var args []ast.Expr + if p.tok != RPAREN { + args = append(args, p.expr()) + } + p.expect(RPAREN) + return &ast.CallExpr{F_FFLUSH, args} + case F_COS, F_SIN, F_EXP, F_LOG, F_SQRT, F_INT, F_TOLOWER, F_TOUPPER, F_SYSTEM, F_CLOSE: + // Simple 1-argument functions + op := p.tok + p.next() + p.expect(LPAREN) + arg := p.expr() + p.expect(RPAREN) + return &ast.CallExpr{op, []ast.Expr{arg}} + case F_ATAN2, F_INDEX: + // Simple 2-argument functions + op := p.tok + p.next() + p.expect(LPAREN) + arg1 := p.expr() + p.commaNewlines() + arg2 := p.expr() + p.expect(RPAREN) + return &ast.CallExpr{op, []ast.Expr{arg1, arg2}} + default: + panic(p.errorf("expected expression instead of %s", p.tok)) + } +} + +// Parse an optional lvalue +func (p *parser) optionalLValue() ast.Expr { + switch p.tok { + case NAME: + if p.lexer.PeekByte() == '(' { + // User function call, e.g., foo() not lvalue. + return nil + } + name := p.val + namePos := p.pos + p.next() + if p.tok == LBRACKET { + // a[x] or a[x, y] array index expression + p.next() + index := p.exprList(p.expr) + if len(index) == 0 { + panic(p.errorf("expected expression instead of ]")) + } + p.expect(RBRACKET) + return &ast.IndexExpr{p.arrayRef(name, namePos), index} + } + return p.varRef(name, namePos) + case DOLLAR: + p.next() + return &ast.FieldExpr{p.primary()} + default: + return nil + } +} + +// Parse /.../ regex or generic expression: +// +// REGEX | expr +func (p *parser) regexStr(parse func() ast.Expr) ast.Expr { + if p.matches(DIV, DIV_ASSIGN) { + regex := p.nextRegex() + return &ast.StrExpr{regex} + } + return parse() +} + +// Parse left-associative binary operator. Allow newlines after +// operator if allowNewline is true. +// +// parse [op parse] [op parse] ... +func (p *parser) binaryLeft(higher func() ast.Expr, allowNewline bool, ops ...Token) ast.Expr { + expr := higher() + for p.matches(ops...) { + op := p.tok + p.next() + if allowNewline { + p.optionalNewlines() + } + right := higher() + expr = &ast.BinaryExpr{expr, op, right} + } + return expr +} + +// Parse comma followed by optional newlines: +// +// COMMA NEWLINE* +func (p *parser) commaNewlines() { + p.expect(COMMA) + p.optionalNewlines() +} + +// Parse zero or more optional newlines: +// +// [NEWLINE] [NEWLINE] ... +func (p *parser) optionalNewlines() { + for p.tok == NEWLINE { + p.next() + } +} + +// Parse next token into p.tok (and set p.pos and p.val). +func (p *parser) next() { + p.prevTok = p.tok + p.pos, p.tok, p.val = p.lexer.Scan() + if p.tok == ILLEGAL { + panic(p.errorf("%s", p.val)) + } +} + +// Parse next regex and return it (must only be called after DIV or +// DIV_ASSIGN token). +func (p *parser) nextRegex() string { + p.pos, p.tok, p.val = p.lexer.ScanRegex() + if p.tok == ILLEGAL { + panic(p.errorf("%s", p.val)) + } + regex := p.val + _, err := regexp.Compile(regex) + if err != nil { + panic(p.errorf("%v", err)) + } + p.next() + return regex +} + +// Ensure current token is tok, and parse next token into p.tok. +func (p *parser) expect(tok Token) { + if p.tok != tok { + panic(p.errorf("expected %s instead of %s", tok, p.tok)) + } + p.next() +} + +// Return true iff current token matches one of the given operators, +// but don't parse next token. +func (p *parser) matches(operators ...Token) bool { + for _, operator := range operators { + if p.tok == operator { + return true + } + } + return false +} + +// Format given string and args with Sprintf and return *ParseError +// with that message and the current position. +func (p *parser) errorf(format string, args ...interface{}) error { + return p.posErrorf(p.pos, format, args...) +} + +// Like errorf, but with an explicit position. +func (p *parser) posErrorf(pos Position, format string, args ...interface{}) error { + message := fmt.Sprintf(format, args...) + return &ParseError{pos, message} +} + +// Parse call to a user-defined function (and record call site for +// resolving later). +func (p *parser) userCall(name string, pos Position) *ast.UserCallExpr { + p.expect(LPAREN) + args := []ast.Expr{} + i := 0 + for !p.matches(NEWLINE, RPAREN) { + if i > 0 { + p.commaNewlines() + } + arg := p.expr() + p.processUserCallArg(name, arg, i) + args = append(args, arg) + i++ + } + p.expect(RPAREN) + call := &ast.UserCallExpr{false, -1, name, args} // index is resolved later + p.recordUserCall(call, pos) + return call +} diff --git a/src/tool/awk/parser/parser_test.go b/src/tool/awk/parser/parser_test.go new file mode 100644 index 0000000..ee442d4 --- /dev/null +++ b/src/tool/awk/parser/parser_test.go @@ -0,0 +1,242 @@ +// Test parser package + +package parser_test + +import ( + "bytes" + "fmt" + "strings" + "testing" + + "github.com/benhoyt/goawk/parser" +) + +// NOTE: apart from TestParseAndString, the parser doesn't have +// extensive tests of its own; the idea is to test the parser in the +// interp tests. + +func TestParseAndString(t *testing.T) { + // This program should have one of every AST element to ensure + // we can parse and String()ify each. + source := strings.TrimSpace(` +BEGIN { + print "begin one" +} + +BEGIN { + print "begin two" +} + +{ + print "empty pattern" +} + +$0 { + print "normal pattern" + print 1, 2, 3 + printf "%.3f", 3.14159 + print "x" >"file" + print "x" >>"append" + print "y" |"prog" + delete a[k] + if (c) { + get(a, k) + } + if (1 + 2) { + get(a, k) + } else { + set(a, k, v) + } + for (i = 0; i < 10; i++) { + print i + continue + } + for (k in a) { + break + } + while (0) { + print "x" + } + do { + print "y" + exit status + } while (x) + next + "cmd" |getline + "cmd" |getline x + "cmd" |getline a[1] + "cmd" |getline $1 + getline + getline x + (getline x + 1) + getline $1 + getline a[1] + getline <"file" + getline x <"file" + (getline x <"file" "x") + getline $1 <"file" + getline a[1] <"file" + x = 0 + y = z = 0 + b += 1 + c -= 2 + d *= 3 + e /= 4 + g ^= 5 + h %= 6 + (x ? "t" : "f") + ((b && c) || d) + (k in a) + ((x, y, z) in a) + (s ~ "foo") + (b < 1) + (c <= 2) + (d > 3) + (e >= 4) + (g == 5) + (h != 6) + ((x y) z) + ((b + c) + d) + ((b * c) * d) + ((b - c) - d) + ((b / c) / d) + (b ^ (c ^ d)) + x++ + x-- + ++y + --y + 1234 + 1.5 + "This is a string" + if (/a.b/) { + print "match" + } + $1 + $(1 + 2) + !x + +x + -x + var + a[key] + a[x, y, z] + f() + set(a, k, v) + sub(regex, repl) + sub(regex, repl, s) + gsub(regex, repl) + gsub(regex, repl, s) + split(s, a) + split(s, a, regex) + match(s, regex) + rand() + srand() + srand(1) + length() + length($1) + sprintf("") + sprintf("%.3f", 3.14159) + sprintf("%.3f %d", 3.14159, 42) + cos(1) + sin(1) + exp(1) + log(1) + sqrt(1) + int("42") + tolower("FOO") + toupper("foo") + system("ls") + close("file") + atan2(x, y) + index(haystack, needle) + { + print "block statement" + f() + } +} + +(NR == 1), (NR == 2) { + print "range pattern" +} + +($1 == "foo") + +END { + print "end one" +} + +END { + print "end two" +} + +function f() { +} + +function get(a, k) { + return a[k] +} + +function set(a, k, v) { + a[k] = v + return +} +`) + prog, err := parser.ParseProgram([]byte(source), nil) + if err != nil { + t.Fatalf("error parsing program: %v", err) + } + progStr := prog.String() + if progStr != source { + t.Fatalf("expected first, got second:\n%s\n----------\n%s", source, progStr) + } +} + +func TestResolveLargeCallGraph(t *testing.T) { + const numCalls = 10000 + + var buf bytes.Buffer + var i int + for i = 0; i < numCalls; i++ { + fmt.Fprintf(&buf, "function f%d(a) { return f%d(a) }\n", i, i+1) + } + fmt.Fprintf(&buf, "function f%d(a) { return a }\n", i) + fmt.Fprint(&buf, "BEGIN { printf f0(42) }\n") + _, err := parser.ParseProgram(buf.Bytes(), nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + buf.Reset() + fmt.Fprint(&buf, "BEGIN { printf f0(42) }\n") + fmt.Fprintf(&buf, "function f%d(a) { return a }\n", numCalls) + for i = numCalls - 1; i >= 0; i-- { + fmt.Fprintf(&buf, "function f%d(a) { return f%d(a) }\n", i, i+1) + } + _, err = parser.ParseProgram(buf.Bytes(), nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } +} + +func Example_valid() { + prog, err := parser.ParseProgram([]byte("$0 { print $1 }"), nil) + if err != nil { + fmt.Println(err) + } else { + fmt.Println(prog) + } + // Output: + // $0 { + // print $1 + // } +} + +func Example_error() { + prog, err := parser.ParseProgram([]byte("{ for if }"), nil) + if err != nil { + fmt.Println(err) + } else { + fmt.Println(prog) + } + // Output: + // parse error at 1:7: expected ( instead of if +} diff --git a/src/tool/awk/parser/resolve.go b/src/tool/awk/parser/resolve.go new file mode 100644 index 0000000..6d1d0ca --- /dev/null +++ b/src/tool/awk/parser/resolve.go @@ -0,0 +1,462 @@ +// Resolve function calls and variable types + +package parser + +import ( + "fmt" + "reflect" + "sort" + + "github.com/benhoyt/goawk/internal/ast" + . "github.com/benhoyt/goawk/lexer" +) + +type varType int + +const ( + typeUnknown varType = iota + typeScalar + typeArray +) + +func (t varType) String() string { + switch t { + case typeScalar: + return "Scalar" + case typeArray: + return "Array" + default: + return "Unknown" + } +} + +// typeInfo records type information for a single variable +type typeInfo struct { + typ varType + ref *ast.VarExpr + scope ast.VarScope + index int + callName string + argIndex int +} + +// Used by printVarTypes when debugTypes is turned on +func (t typeInfo) String() string { + var scope string + switch t.scope { + case ast.ScopeGlobal: + scope = "Global" + case ast.ScopeLocal: + scope = "Local" + default: + scope = "Special" + } + return fmt.Sprintf("typ=%s ref=%p scope=%s index=%d callName=%q argIndex=%d", + t.typ, t.ref, scope, t.index, t.callName, t.argIndex) +} + +// A single variable reference (normally scalar) +type varRef struct { + funcName string + ref *ast.VarExpr + isArg bool + pos Position +} + +// A single array reference +type arrayRef struct { + funcName string + ref *ast.ArrayExpr + pos Position +} + +// Initialize the resolver +func (p *parser) initResolve() { + p.varTypes = make(map[string]map[string]typeInfo) + p.varTypes[""] = make(map[string]typeInfo) // globals + p.functions = make(map[string]int) + p.arrayRef("ARGV", Position{1, 1}) // interpreter relies on ARGV being present + p.arrayRef("ENVIRON", Position{1, 1}) // and other built-in arrays + p.arrayRef("FIELDS", Position{1, 1}) + p.multiExprs = make(map[*ast.MultiExpr]Position, 3) +} + +// Signal the start of a function +func (p *parser) startFunction(name string, params []string) { + p.funcName = name + p.varTypes[name] = make(map[string]typeInfo) +} + +// Signal the end of a function +func (p *parser) stopFunction() { + p.funcName = "" +} + +// Add function by name with given index +func (p *parser) addFunction(name string, index int) { + p.functions[name] = index +} + +// Records a call to a user function (for resolving indexes later) +type userCall struct { + call *ast.UserCallExpr + pos Position + inFunc string +} + +// Record a user call site +func (p *parser) recordUserCall(call *ast.UserCallExpr, pos Position) { + p.userCalls = append(p.userCalls, userCall{call, pos, p.funcName}) +} + +// After parsing, resolve all user calls to their indexes. Also +// ensures functions called have actually been defined, and that +// they're not being called with too many arguments. +func (p *parser) resolveUserCalls(prog *Program) { + // Number the native funcs (order by name to get consistent order) + nativeNames := make([]string, 0, len(p.nativeFuncs)) + for name := range p.nativeFuncs { + nativeNames = append(nativeNames, name) + } + sort.Strings(nativeNames) + nativeIndexes := make(map[string]int, len(nativeNames)) + for i, name := range nativeNames { + nativeIndexes[name] = i + } + + for _, c := range p.userCalls { + // AWK-defined functions take precedence over native Go funcs + index, ok := p.functions[c.call.Name] + if !ok { + f, haveNative := p.nativeFuncs[c.call.Name] + if !haveNative { + panic(p.posErrorf(c.pos, "undefined function %q", c.call.Name)) + } + typ := reflect.TypeOf(f) + if !typ.IsVariadic() && len(c.call.Args) > typ.NumIn() { + panic(p.posErrorf(c.pos, "%q called with more arguments than declared", c.call.Name)) + } + c.call.Native = true + c.call.Index = nativeIndexes[c.call.Name] + continue + } + function := prog.Functions[index] + if len(c.call.Args) > len(function.Params) { + panic(p.posErrorf(c.pos, "%q called with more arguments than declared", c.call.Name)) + } + c.call.Index = index + } +} + +// For arguments that are variable references, we don't know the +// type based on context, so mark the types for these as unknown. +func (p *parser) processUserCallArg(funcName string, arg ast.Expr, index int) { + if varExpr, ok := arg.(*ast.VarExpr); ok { + scope, varFuncName := p.getScope(varExpr.Name) + ref := p.varTypes[varFuncName][varExpr.Name].ref + if ref == varExpr { + // Only applies if this is the first reference to this + // variable (otherwise we know the type already) + p.varTypes[varFuncName][varExpr.Name] = typeInfo{typeUnknown, ref, scope, 0, funcName, index} + } + // Mark the last related varRef (the most recent one) as a + // call argument for later error handling + p.varRefs[len(p.varRefs)-1].isArg = true + } +} + +// Determine scope of given variable reference (and funcName if it's +// a local, otherwise empty string) +func (p *parser) getScope(name string) (ast.VarScope, string) { + switch { + case p.locals[name]: + return ast.ScopeLocal, p.funcName + case ast.SpecialVarIndex(name) > 0: + return ast.ScopeSpecial, "" + default: + return ast.ScopeGlobal, "" + } +} + +// Record a variable (scalar) reference and return the *VarExpr (but +// VarExpr.Index won't be set till later) +func (p *parser) varRef(name string, pos Position) *ast.VarExpr { + scope, funcName := p.getScope(name) + expr := &ast.VarExpr{scope, 0, name} + p.varRefs = append(p.varRefs, varRef{funcName, expr, false, pos}) + info := p.varTypes[funcName][name] + if info.typ == typeUnknown { + p.varTypes[funcName][name] = typeInfo{typeScalar, expr, scope, 0, info.callName, 0} + } + return expr +} + +// Record an array reference and return the *ArrayExpr (but +// ArrayExpr.Index won't be set till later) +func (p *parser) arrayRef(name string, pos Position) *ast.ArrayExpr { + scope, funcName := p.getScope(name) + if scope == ast.ScopeSpecial { + panic(p.errorf("can't use scalar %q as array", name)) + } + expr := &ast.ArrayExpr{scope, 0, name} + p.arrayRefs = append(p.arrayRefs, arrayRef{funcName, expr, pos}) + info := p.varTypes[funcName][name] + if info.typ == typeUnknown { + p.varTypes[funcName][name] = typeInfo{typeArray, nil, scope, 0, info.callName, 0} + } + return expr +} + +// Print variable type information (for debugging) on p.debugWriter +func (p *parser) printVarTypes(prog *Program) { + fmt.Fprintf(p.debugWriter, "scalars: %v\n", prog.Scalars) + fmt.Fprintf(p.debugWriter, "arrays: %v\n", prog.Arrays) + funcNames := []string{} + for funcName := range p.varTypes { + funcNames = append(funcNames, funcName) + } + sort.Strings(funcNames) + for _, funcName := range funcNames { + if funcName != "" { + fmt.Fprintf(p.debugWriter, "function %s\n", funcName) + } else { + fmt.Fprintf(p.debugWriter, "globals\n") + } + varNames := []string{} + for name := range p.varTypes[funcName] { + varNames = append(varNames, name) + } + sort.Strings(varNames) + for _, name := range varNames { + info := p.varTypes[funcName][name] + fmt.Fprintf(p.debugWriter, " %s: %s\n", name, info) + } + } +} + +// Resolve unknown variables types and generate variable indexes and +// name-to-index mappings for interpreter +func (p *parser) resolveVars(prog *Program) { + // First go through all unknown types and try to determine the + // type from the parameter type in that function definition. + // Iterate through functions in topological order, for example + // if f() calls g(), process g first, then f. + callGraph := make(map[string]map[string]struct{}) + for _, call := range p.userCalls { + if _, ok := callGraph[call.inFunc]; !ok { + callGraph[call.inFunc] = make(map[string]struct{}) + } + callGraph[call.inFunc][call.call.Name] = struct{}{} + } + sortedFuncs := topoSort(callGraph) + for _, funcName := range sortedFuncs { + infos := p.varTypes[funcName] + for name, info := range infos { + if info.scope == ast.ScopeSpecial || info.typ != typeUnknown { + // It's a special var or type is already known + continue + } + funcIndex, ok := p.functions[info.callName] + if !ok { + // Function being called is a native function + continue + } + // Determine var type based on type of this parameter + // in the called function (if we know that) + paramName := prog.Functions[funcIndex].Params[info.argIndex] + typ := p.varTypes[info.callName][paramName].typ + if typ != typeUnknown { + if p.debugTypes { + fmt.Fprintf(p.debugWriter, "resolving %s:%s to %s\n", + funcName, name, typ) + } + info.typ = typ + p.varTypes[funcName][name] = info + } + } + } + + // Resolve global variables (iteration order is undefined, so + // assign indexes basically randomly) + prog.Scalars = make(map[string]int) + prog.Arrays = make(map[string]int) + for name, info := range p.varTypes[""] { + _, isFunc := p.functions[name] + if isFunc { + // Global var can't also be the name of a function + panic(p.errorf("global var %q can't also be a function", name)) + } + var index int + if info.scope == ast.ScopeSpecial { + index = ast.SpecialVarIndex(name) + } else if info.typ == typeArray { + index = len(prog.Arrays) + prog.Arrays[name] = index + } else { + index = len(prog.Scalars) + prog.Scalars[name] = index + } + info.index = index + p.varTypes[""][name] = info + } + + // Fill in unknown parameter types that are being called with arrays, + // for example, as in the following code: + // + // BEGIN { arr[0]; f(arr) } + // function f(a) { } + for _, c := range p.userCalls { + if c.call.Native { + continue + } + function := prog.Functions[c.call.Index] + for i, arg := range c.call.Args { + varExpr, ok := arg.(*ast.VarExpr) + if !ok { + continue + } + funcName := p.getVarFuncName(prog, varExpr.Name, c.inFunc) + argType := p.varTypes[funcName][varExpr.Name] + paramType := p.varTypes[function.Name][function.Params[i]] + if argType.typ == typeArray && paramType.typ == typeUnknown { + paramType.typ = argType.typ + p.varTypes[function.Name][function.Params[i]] = paramType + } + } + } + + // Resolve local variables (assign indexes in order of params). + // Also patch up Function.Arrays (tells interpreter which args + // are arrays). + for funcName, infos := range p.varTypes { + if funcName == "" { + continue + } + scalarIndex := 0 + arrayIndex := 0 + functionIndex := p.functions[funcName] + function := prog.Functions[functionIndex] + arrays := make([]bool, len(function.Params)) + for i, name := range function.Params { + info := infos[name] + var index int + if info.typ == typeArray { + index = arrayIndex + arrayIndex++ + arrays[i] = true + } else { + // typeScalar or typeUnknown: variables may still be + // of unknown type if they've never been referenced -- + // default to scalar in that case + index = scalarIndex + scalarIndex++ + } + info.index = index + p.varTypes[funcName][name] = info + } + prog.Functions[functionIndex].Arrays = arrays + } + + // Check that variables passed to functions are the correct type + for _, c := range p.userCalls { + // Check native function calls + if c.call.Native { + for _, arg := range c.call.Args { + varExpr, ok := arg.(*ast.VarExpr) + if !ok { + // Non-variable expression, must be scalar + continue + } + funcName := p.getVarFuncName(prog, varExpr.Name, c.inFunc) + info := p.varTypes[funcName][varExpr.Name] + if info.typ == typeArray { + panic(p.posErrorf(c.pos, "can't pass array %q to native function", varExpr.Name)) + } + } + continue + } + + // Check AWK function calls + function := prog.Functions[c.call.Index] + for i, arg := range c.call.Args { + varExpr, ok := arg.(*ast.VarExpr) + if !ok { + if function.Arrays[i] { + panic(p.posErrorf(c.pos, "can't pass scalar %s as array param", arg)) + } + continue + } + funcName := p.getVarFuncName(prog, varExpr.Name, c.inFunc) + info := p.varTypes[funcName][varExpr.Name] + if info.typ == typeArray && !function.Arrays[i] { + panic(p.posErrorf(c.pos, "can't pass array %q as scalar param", varExpr.Name)) + } + if info.typ != typeArray && function.Arrays[i] { + panic(p.posErrorf(c.pos, "can't pass scalar %q as array param", varExpr.Name)) + } + } + } + + if p.debugTypes { + p.printVarTypes(prog) + } + + // Patch up variable indexes (interpreter uses an index instead + // of name for more efficient lookups) + for _, varRef := range p.varRefs { + info := p.varTypes[varRef.funcName][varRef.ref.Name] + if info.typ == typeArray && !varRef.isArg { + panic(p.posErrorf(varRef.pos, "can't use array %q as scalar", varRef.ref.Name)) + } + varRef.ref.Index = info.index + } + for _, arrayRef := range p.arrayRefs { + info := p.varTypes[arrayRef.funcName][arrayRef.ref.Name] + if info.typ == typeScalar { + panic(p.posErrorf(arrayRef.pos, "can't use scalar %q as array", arrayRef.ref.Name)) + } + arrayRef.ref.Index = info.index + } +} + +// If name refers to a local (in function inFunc), return that +// function's name, otherwise return "" (meaning global). +func (p *parser) getVarFuncName(prog *Program, name, inFunc string) string { + if inFunc == "" { + return "" + } + for _, param := range prog.Functions[p.functions[inFunc]].Params { + if name == param { + return inFunc + } + } + return "" +} + +// Record a "multi expression" (comma-separated pseudo-expression +// used to allow commas around print/printf arguments). +func (p *parser) multiExpr(exprs []ast.Expr, pos Position) ast.Expr { + expr := &ast.MultiExpr{exprs} + p.multiExprs[expr] = pos + return expr +} + +// Mark the multi expression as used (by a print/printf statement). +func (p *parser) useMultiExpr(expr *ast.MultiExpr) { + delete(p.multiExprs, expr) +} + +// Check that there are no unused multi expressions (syntax error). +func (p *parser) checkMultiExprs() { + if len(p.multiExprs) == 0 { + return + } + // Show error on first comma-separated expression + min := Position{1000000000, 1000000000} + for _, pos := range p.multiExprs { + if pos.Line < min.Line || (pos.Line == min.Line && pos.Column < min.Column) { + min = pos + } + } + panic(p.posErrorf(min, "unexpected comma-separated expression")) +} diff --git a/src/tool/awk/parser/toposort.go b/src/tool/awk/parser/toposort.go new file mode 100644 index 0000000..90b71fa --- /dev/null +++ b/src/tool/awk/parser/toposort.go @@ -0,0 +1,72 @@ +// Topological sorting + +package parser + +/* +This algorithm is taken from: +https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search + +L ↠Empty list that will contain the sorted nodes +while exists nodes without a permanent mark do + select an unmarked node n + visit(n) + +function visit(node n) + if n has a permanent mark then + return + if n has a temporary mark then + stop (not a DAG) + + mark n with a temporary mark + + for each node m with an edge from n to m do + visit(m) + + remove temporary mark from n + mark n with a permanent mark + add n to head of L +*/ + +// Perform a topological sort on the given graph. +func topoSort(graph map[string]map[string]struct{}) []string { + if len(graph) == 0 { + return nil + } + + unmarked := make(map[string]struct{}) + for node := range graph { + unmarked[node] = struct{}{} + } + permMarks := make(map[string]struct{}) + tempMarks := make(map[string]struct{}) + var sorted []string + + var visit func(string) + visit = func(n string) { + if _, ok := permMarks[n]; ok { + return + } + if _, ok := tempMarks[n]; ok { + return + } + tempMarks[n] = struct{}{} + for m := range graph[n] { + visit(m) + } + delete(tempMarks, n) + permMarks[n] = struct{}{} + delete(unmarked, n) + sorted = append(sorted, n) + return + } + + for len(unmarked) > 0 { + var n string + for n = range unmarked { + break + } + visit(n) + } + + return sorted +} diff --git a/src/tool/awk/parser/toposort_test.go b/src/tool/awk/parser/toposort_test.go new file mode 100644 index 0000000..d8d4c4c --- /dev/null +++ b/src/tool/awk/parser/toposort_test.go @@ -0,0 +1,100 @@ +package parser + +import ( + "strconv" + "testing" +) + +func TestTopoSortEmpty(t *testing.T) { + sorted := topoSort(nil) + if len(sorted) != 0 { + t.Fatalf("expected empty slice, got %v", sorted) + } +} + +func TestTopoSortSimple(t *testing.T) { + sorted := topoSort(map[string]map[string]struct{}{ + "a": {"b": struct{}{}}, + "b": {"c": struct{}{}}, + }) + if len(sorted) != 3 { + t.Fatalf("expected 3 items, got %d", len(sorted)) + } + assertBefore(t, sorted, "c", "b") + assertBefore(t, sorted, "b", "a") +} + +func TestTopoSortComplex(t *testing.T) { + sorted := topoSort(map[string]map[string]struct{}{ + "a": {"b": struct{}{}, "c": struct{}{}}, + "c": {"d": struct{}{}}, + "f": {"g": struct{}{}, "h": struct{}{}}, + "g": {}, + "h": {}, + }) + if len(sorted) != 7 { + t.Fatalf("expected 7 items, got %d", len(sorted)) + } + assertBefore(t, sorted, "g", "f") + assertBefore(t, sorted, "h", "f") + assertBefore(t, sorted, "d", "c") + assertBefore(t, sorted, "c", "a") + assertBefore(t, sorted, "b", "a") +} + +func assertBefore(t *testing.T, sorted []string, x, y string) { + xi := strIndex(sorted, x) + if xi < 0 { + t.Fatalf("expected %q to be in result", x) + } + yi := strIndex(sorted, y) + if yi < 0 { + t.Fatalf("expected %q to be in result", y) + } + if xi >= yi { + t.Fatalf("expected %q to come before %q, got indexes %d and %d", x, y, xi, yi) + } +} + +func strIndex(slice []string, s string) int { + for i, item := range slice { + if s == item { + return i + } + } + return -1 +} + +func TestTopoSortCycle(t *testing.T) { + sorted := topoSort(map[string]map[string]struct{}{ + "a": {"b": struct{}{}, "c": struct{}{}}, + "c": {"a": struct{}{}}, + }) + if len(sorted) != 3 { + t.Fatalf("expected 3 items, got %d", len(sorted)) + } + assertBefore(t, sorted, "b", "a") + c := strIndex(sorted, "a") + if c < 0 { + t.Fatalf("expected %q to be in result", c) + } +} + +func TestTopoSortLarge(t *testing.T) { + const num = 1000 + graph := make(map[string]map[string]struct{}) + for i := 0; i < num; i++ { + graph[strconv.Itoa(i)] = map[string]struct{}{strconv.Itoa(i + 1): {}} + } + graph[strconv.Itoa(num)] = map[string]struct{}{} + sorted := topoSort(graph) + if len(sorted) != num+1 { + t.Fatalf("expected %d items, got %d", num+1, len(sorted)) + } + for i := 0; i < num+1; i++ { + expected := num - i + if sorted[i] != strconv.Itoa(expected) { + t.Fatalf("expected %d to be at index %d, got %s", num-1, i, sorted[i]) + } + } +} diff --git a/src/tool/awk/readme.md b/src/tool/awk/readme.md new file mode 100644 index 0000000..ab6f25b --- /dev/null +++ b/src/tool/awk/readme.md @@ -0,0 +1,125 @@ + +# GoAWK: an AWK interpreter with CSV support + +[![Documentation](https://pkg.go.dev/badge/github.com/benhoyt/goawk)](https://pkg.go.dev/github.com/benhoyt/goawk) +[![GitHub Actions Build](https://github.com/benhoyt/goawk/workflows/Go/badge.svg)](https://github.com/benhoyt/goawk/actions?query=workflow%3AGo) + + +AWK is a fascinating text-processing language, and somehow after reading the delightfully-terse [*The AWK Programming Language*](https://ia802309.us.archive.org/25/items/pdfy-MgN0H1joIoDVoIC7/The_AWK_Programming_Language.pdf) I was inspired to write an interpreter for it in Go. So here it is, feature-complete and tested against "the one true AWK" and GNU AWK test suites. + +GoAWK is a POSIX-compatible version of AWK, and additionally has a CSV mode for reading and writing CSV and TSV files. This feature was sponsored by the [library of the University of Antwerp](https://www.uantwerpen.be/en/library/). Read the [CSV documentation](https://github.com/benhoyt/goawk/blob/master/csv.md). + +You can also read one of the articles I've written about GoAWK: + +* The original article about [how GoAWK works and performs](https://benhoyt.com/writings/goawk/) +* How I converted the tree-walking interpreter to a [bytecode compiler and virtual machine](https://benhoyt.com/writings/goawk-compiler-vm/) +* A description of why and how I added [CSV support](https://benhoyt.com/writings/goawk-csv/) + + +## Basic usage + +To use the command-line version, simply use `go install` to install it, and then run it using `goawk` (assuming `~/go/bin` is in your `PATH`): + +```shell +$ go install github.com/benhoyt/goawk@latest + +$ goawk 'BEGIN { print "foo", 42 }' +foo 42 + +$ echo 1 2 3 | goawk '{ print $1 + $3 }' +4 + +# Or use GoAWK's CSV and @"named-field" support: +$ echo -e 'name,amount\nBob,17.50\nJill,20\n"Boba Fett",100.00' | \ + goawk -i csv -H '{ total += @"amount" } END { print total }' +137.5 +``` + +On Windows, `"` is the shell quoting character, so use `"` around the entire AWK program on the command line, and use `'` around AWK strings -- this is a non-POSIX extension to make GoAWK easier to use on Windows: + +```powershell +C:\> goawk "BEGIN { print 'foo', 42 }" +foo 42 +``` + +To use it in your Go programs, you can call `interp.Exec()` directly for simple needs: + +```go +input := strings.NewReader("foo bar\n\nbaz buz") +err := interp.Exec("$0 { print $1 }", " ", input, nil) +if err != nil { + fmt.Println(err) + return +} +// Output: +// foo +// baz +``` + +Or you can use the `parser` module and then `interp.ExecProgram()` to control execution, set variables, and so on: + +```go +src := "{ print NR, tolower($0) }" +input := "A\naB\nAbC" + +prog, err := parser.ParseProgram([]byte(src), nil) +if err != nil { + fmt.Println(err) + return +} +config := &interp.Config{ + Stdin: strings.NewReader(input), + Vars: []string{"OFS", ":"}, +} +_, err = interp.ExecProgram(prog, config) +if err != nil { + fmt.Println(err) + return +} +// Output: +// 1:a +// 2:ab +// 3:abc +``` + +If you need to repeat execution of the same program on different inputs, you can call [`interp.New`](https://pkg.go.dev/github.com/benhoyt/goawk/interp#New) once, and then call the returned object's `Execute` method as many times as you need. + +Read the [package documentation](https://pkg.go.dev/github.com/benhoyt/goawk) for more details. + + +## Differences from AWK + +The intention is for GoAWK to conform to `awk`'s behavior and to the [POSIX AWK spec](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html), but this section describes some areas where it's different. + +Additional features GoAWK has over AWK: + +* It has proper support for CSV and TSV files ([read the documentation](https://github.com/benhoyt/goawk/blob/master/csv.md)). +* It supports negative field indexes to access fields from the right, for example, `$-1` refers to the last field. +* It's embeddable in your Go programs! You can even call custom Go functions from your AWK scripts. +* Most AWK scripts are faster than `awk` and on a par with `gawk`, though usually slower than `mawk`. (See [recent benchmarks](https://benhoyt.com/writings/goawk-compiler-vm/#virtual-machine-results).) +* The parser supports `'single-quoted strings'` in addition to `"double-quoted strings"`, primarily to make Windows one-liners easier (the Windows `cmd.exe` shell uses `"` as the quote character). + +Things AWK has over GoAWK: + +* Scripts that use regular expressions are slower than other implementations (unfortunately Go's `regexp` package is relatively slow). +* AWK is written by Alfred Aho, Peter Weinberger, and Brian Kernighan. + + +## Stability + +This project has a good suite of tests, which include my own intepreter tests, the original AWK test suite, and the relevant tests from the Gawk test suite. I've used it a bunch personally, and it's used in the [Benthos](https://github.com/benthosdev/benthos) stream processor as well as by the software team at the library of the University of Antwerp. However, to `err == human`, so please use GoAWK at your own risk. I intend not to change the Go API in a breaking way in any v1.x.y version. + + +## AWKGo + +The GoAWK repository also includes the creatively-named AWKGo, an AWK-to-Go compiler. This is experimental and is not subject to the stability requirements of GoAWK itself. You can [read more about AWKGo](https://benhoyt.com/writings/awkgo/) or browse the code on the [`awkgo` branch](https://github.com/benhoyt/goawk/tree/awkgo/awkgo). + + +## License + +GoAWK is licensed under an open source [MIT license](https://github.com/benhoyt/goawk/blob/master/LICENSE.txt). + + +## The end + +Have fun, and please [contact me](https://benhoyt.com/) if you're using GoAWK or have any feedback! diff --git a/src/tool/awk/scripts/benchmark.sh b/src/tool/awk/scripts/benchmark.sh new file mode 100755 index 0000000..2a87014 --- /dev/null +++ b/src/tool/awk/scripts/benchmark.sh @@ -0,0 +1,2 @@ +#!/bin/sh +go test ./interp -bench=. -count=5 > benchmarks_new.txt diff --git a/src/tool/awk/scripts/benchmark_awks.py b/src/tool/awk/scripts/benchmark_awks.py new file mode 100755 index 0000000..7fbd919 --- /dev/null +++ b/src/tool/awk/scripts/benchmark_awks.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +# Benchmark GoAWK against other AWK versions + +from __future__ import print_function + +import glob +import os.path +import shutil +import subprocess +import sys +import time + +AWKS = [ + './goawk', + './orig', # GoAWK without perf improvements + 'original-awk', + 'gawk', + 'mawk', +] +NORM_INDEX = AWKS.index('original-awk') +TESTS_TO_MEAN = None # By default, calculate the mean of all tests +if False: + # Only get the mean of these tests because these are the only ones + # we show in the GoAWK article. + TESTS_TO_MEAN = [ + 'tt.01_print', + 'tt.02_print_NR_NF', + 'tt.02a_print_length', + 'tt.03_sum_length', + 'tt.03a_sum_field', + 'tt.04_printf_fields', + 'tt.05_concat_fields', + 'tt.06_count_lengths', + 'tt.07_even_fields', + 'tt.big_complex_program', + 'tt.x1_mandelbrot', + 'tt.x2_sum_loop', + ] +NUM_RUNS = 6 +MIN_TIME = 0.5 +PROGRAM_GLOB = 'testdata/tt.*' + +if len(sys.argv) > 1: + PROGRAM_GLOB = 'testdata/' + sys.argv[1] + + +def repeat_file(input_file, repeated_file, n): + with open(input_file, 'rb') as fin, open(repeated_file, 'wb') as fout: + for i in range(n): + fin.seek(0) + shutil.copyfileobj(fin, fout) + + +print('Test ', end='') +for awk in AWKS: + display_awk = os.path.basename(awk) + display_awk = display_awk.replace('original-awk', 'awk') + print('| {:>8} '.format(display_awk), end='') +print() +print('-'*28 + ' | --------'*len(AWKS)) + +repeats_created = [] +products = [1] * len(AWKS) +num_products = 0 +programs = sorted(glob.glob(PROGRAM_GLOB)) +for program in programs: + # First do a test run with GoAWK to see roughly how long it takes + cmdline = '{} -f {} testdata/foo.td >tt.out'.format(AWKS[0], program) + start = time.time() + status = subprocess.call(cmdline, shell=True) + elapsed = time.time() - start + + # If test run took less than MIN_TIME seconds, scale/repeat input + # file accordingly + input_file = 'testdata/foo.td' + if elapsed < MIN_TIME: + multiplier = int(round(MIN_TIME / elapsed)) + repeated_file = '{}.{}'.format(input_file, multiplier) + if not os.path.exists(repeated_file): + repeat_file(input_file, repeated_file, multiplier) + repeats_created.append(repeated_file) + input_file = repeated_file + + # Record time taken to run this test, running each NUM_RUMS times + # and taking the minimum elapsed time + awk_times = [] + for awk in AWKS: + cmdline = '{} -f {} {} >tt.out'.format(awk, program, input_file) + times = [] + for i in range(NUM_RUNS): + start = time.time() + status = subprocess.call(cmdline, shell=True) + elapsed = time.time() - start + times.append(elapsed) + if status != 0: + print('ERROR status {} from cmd: {}'.format(status, cmdline), file=sys.stderr) + min_time = min(sorted(times)[1:]) + awk_times.append(min_time) + + # Normalize to One True AWK time = 1.0 + norm_time = awk_times[NORM_INDEX] + speeds = [norm_time/t for t in awk_times] + test_name = program.split('/')[1] + if TESTS_TO_MEAN is None or test_name in TESTS_TO_MEAN: + num_products += 1 + for i in range(len(AWKS)): + products[i] *= speeds[i] + + display_name = test_name.split('_')[0] + ' (' + ' '.join(test_name.split('_')[1:]) + ')' + print('{:28}'.format(display_name), end='') + for i, awk in enumerate(AWKS): + print(' | {:8.2f}'.format(speeds[i]), end='') + print() + +print('-'*28 + ' | --------'*len(AWKS)) +print('**Geo mean** ', end='') +for i, awk in enumerate(AWKS): + print(' | **{:.2f}**'.format(products[i] ** (1.0/num_products)), end='') +print() + +# Delete temporary files created +os.remove('tt.out') +for repeated_file in repeats_created: + os.remove(repeated_file) diff --git a/src/tool/awk/scripts/benchstat.sh b/src/tool/awk/scripts/benchstat.sh new file mode 100755 index 0000000..9b76b78 --- /dev/null +++ b/src/tool/awk/scripts/benchstat.sh @@ -0,0 +1,2 @@ +#!/bin/sh +~/go/bin/benchstat -sort=delta -geomean benchmarks_old.txt benchmarks_new.txt diff --git a/src/tool/awk/scripts/csvbench/count.py b/src/tool/awk/scripts/csvbench/count.py new file mode 100644 index 0000000..bfc43c8 --- /dev/null +++ b/src/tool/awk/scripts/csvbench/count.py @@ -0,0 +1,9 @@ +import csv +import sys + +lines, fields = 0, 0 +for row in csv.reader(sys.stdin): + lines += 1 + fields += len(row) + +print(lines, fields) diff --git a/src/tool/awk/scripts/csvbench/count/main.go b/src/tool/awk/scripts/csvbench/count/main.go new file mode 100644 index 0000000..ba859c9 --- /dev/null +++ b/src/tool/awk/scripts/csvbench/count/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "bufio" + "encoding/csv" + "fmt" + "io" + "log" + "os" +) + +func main() { + reader := csv.NewReader(bufio.NewReader(os.Stdin)) + lines, fields := 0, 0 + for { + row, err := reader.Read() + if err == io.EOF { + break + } + if err != nil { + log.Fatal(err) + } + lines++ + fields += len(row) + } + fmt.Println(lines, fields) +} diff --git a/src/tool/awk/scripts/csvbench/csvbench.sh b/src/tool/awk/scripts/csvbench/csvbench.sh new file mode 100755 index 0000000..1c5a02b --- /dev/null +++ b/src/tool/awk/scripts/csvbench/csvbench.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +set -e + +echo ===== Writing 1GB - goawk +time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null +time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null +time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null + +echo ===== Writing 1GB - frawk +time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null +time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null +time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null + +echo ===== Writing 1GB - Python +time python3 write.py >/dev/null +time python3 write.py >/dev/null +time python3 write.py >/dev/null + +echo ===== Writing 1GB - Go +go build -o bin/write ./write +time ./bin/write >/dev/null +time ./bin/write >/dev/null +time ./bin/write >/dev/null + + +./bin/write >count.csv + +echo ===== Reading 1GB - goawk +time goawk -i csv '{ w+=NF } END { print NR, w }' ej7$t6trA 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") +} + + +function html_end_pages() +{ + return ((HTML && (BIBFILEURL != "")) ? "" : "") +} + + +function html_end_pre() +{ + if (In_PRE) + { + print_line("") + In_PRE = 0 + } +} + + +function html_end_title() +{ + return ((HTML && (Url != "")) ? "" : "") +} + + +function html_end_toc() +{ + html_end_pre() +} + + +function html_fonts(s, arg,control_word,k,level,n,open_brace) +{ + open_brace = index(s,"{") + if (open_brace > 0) # important optimization + { + level = 1 + for (k = open_brace + 1; (level != 0) && (k <= length(s)); ++k) + { + if (substr(s,k,1) == "{") + level++ + else if (substr(s,k,1) == "}") + level-- + } + + # {...} is now found at open_brace ... (k-1) + for (control_word in Font_decl_map) # look for {\xxx ...} + { + if (substr(s,open_brace+1,length(control_word)+1) ~ \ + ("\\" control_word "[^A-Za-z]")) + { + n = open_brace + 1 + length(control_word) + arg = trim(substr(s,n,k - n)) + if (Font_decl_map[control_word] == "toupper") # arg -> ARG + arg = toupper(arg) + else if (Font_decl_map[control_word] != "") # arg -> arg + arg = "<" Font_decl_map[control_word] ">" arg "" + return (substr(s,1,open_brace-1) arg html_fonts(substr(s,k))) + } + } + for (control_word in Font_cmd_map) # look for \xxx{...} + { + if (substr(s,open_brace - length(control_word),length(control_word)) ~ \ + ("\\" control_word)) + { + n = open_brace + 1 + arg = trim(substr(s,n,k - n)) + if (Font_cmd_map[control_word] == "toupper") # arg -> ARG + arg = toupper(arg) + else if (Font_cmd_map[control_word] != "") # arg -> arg + arg = "<" Font_cmd_map[control_word] ">" arg "" + n = open_brace - length(control_word) - 1 + return (substr(s,1,n) arg html_fonts(substr(s,k))) + } + } + } + return (s) +} + + +function html_header() +{ + USER = ENVIRON["USER"] + if (USER == "") + USER = ENVIRON["LOGNAME"] + if (USER == "") + USER = "????" + "hostname" | getline HOSTNAME + "date" | getline DATE + ("ypcat passwd | grep '^" USER ":' | awk -F: '{print $5}'") | getline PERSONAL_NAME + if (PERSONAL_NAME == "") + ("grep '^" USER ":' /etc/passwd | awk -F: '{print $5}'") | getline PERSONAL_NAME + + + print "" + print "" + print "" + print "" + print "" + print "" + print "" + print "" + print "" + print prefix(1) "" + print prefix(2) "" + print prefix(3) Journal + print prefix(2) "" + print prefix(2) "" + print prefix(1) "" + print "" + print prefix(1) "" +} + + +function html_label( label) +{ + label = Volume "(" Number "):" Month ":" Year + # gsub(/[^A-Za-z0-9():,;.\/\-]/,"",label) + gsub(/[^[:alnum:]():,;.\/\-]/,"",label) + return (label) +} + + +function html_length(s) +{ # Return visible length of s, ignoring any HTML markup + if (HTML) + { + gsub(/<\/?[^>]*>/,"",s) # remove SGML tags + # gsub(/&[A-Za-z0-9]+;/,"",s) # remove SGML entities + gsub(/&[[:alnum:]]+;/,"",s) # remove SGML entities + } + return (length(s)) +} + + +function html_toc() +{ + print prefix(2) "

" + print prefix(3) "Table of contents for issues of " Journal + print prefix(2) "

" + print HTML_TOC +} + + +function html_toc_entry() +{ + HTML_TOC = HTML_TOC " " + HTML_TOC = HTML_TOC vol_no_month_year() + HTML_TOC = HTML_TOC "
" "\n" +} + + +function html_trailer() +{ + html_end_pre() + print prefix(1) "" + print "" +} + + +function initialize() +{ + # NB: Update these when the program changes + VERSION_DATE = "[09-Oct-1996]" + VERSION_NUMBER = "1.00" + + HTML = (HTML == "") ? 0 : (0 + HTML) + + if (INDENT == "") + INDENT = 4 + + if (HTML == 0) + INDENT = 0 # indentation suppressed in ASCII mode + + LEADERS = " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ." + + MAX_TITLE_CHARS = 36 # 36 produces a 79-char output line when there is + # just an initial page number. If this is + # increased, the LEADERS string may need to be + # lengthened. + + MIN_LEADERS = 4 # Minimum number of characters from LEADERS + # required when leaders are used. The total + # number of characters that can appear in a + # title line is MAX_TITLE_CHARS + MIN_LEADERS. + # Leaders are omitted when the title length is + # between MAX_TITLE_CHARS and this sum. + + MIN_LEADERS_SPACE = " " # must be at least MIN_LEADERS characters long + + Month_expansion["jan"] = "January" + Month_expansion["feb"] = "February" + Month_expansion["mar"] = "March" + Month_expansion["apr"] = "April" + Month_expansion["may"] = "May" + Month_expansion["jun"] = "June" + Month_expansion["jul"] = "July" + Month_expansion["aug"] = "August" + Month_expansion["sep"] = "September" + Month_expansion["oct"] = "October" + Month_expansion["nov"] = "November" + Month_expansion["dec"] = "December" + + Font_cmd_map["\\emph"] = "EM" + Font_cmd_map["\\textbf"] = "B" + Font_cmd_map["\\textit"] = "I" + Font_cmd_map["\\textmd"] = "" + Font_cmd_map["\\textrm"] = "" + Font_cmd_map["\\textsc"] = "toupper" + Font_cmd_map["\\textsl"] = "I" + Font_cmd_map["\\texttt"] = "t" + Font_cmd_map["\\textup"] = "" + + Font_decl_map["\\bf"] = "B" + Font_decl_map["\\em"] = "EM" + Font_decl_map["\\it"] = "I" + Font_decl_map["\\rm"] = "" + Font_decl_map["\\sc"] = "toupper" + Font_decl_map["\\sf"] = "" + Font_decl_map["\\tt"] = "TT" + Font_decl_map["\\itshape"] = "I" + Font_decl_map["\\upshape"] = "" + Font_decl_map["\\slshape"] = "I" + Font_decl_map["\\scshape"] = "toupper" + Font_decl_map["\\mdseries"] = "" + Font_decl_map["\\bfseries"] = "B" + Font_decl_map["\\rmfamily"] = "" + Font_decl_map["\\sffamily"] = "" + Font_decl_map["\\ttfamily"] = "TT" +} + +function min(a,b) +{ + return (a < b) ? a : b +} + + +function prefix(level) +{ + # Return a prefix of up to 60 blanks + + if (In_PRE) + return ("") + else + return (substr(" ", \ + 1, INDENT * level)) +} + + +function print_line(line) +{ + if (HTML) # must buffer in memory so that we can accumulate TOC + Body[++BodyLines] = line + else + print line +} + + +function print_toc_line(author,title,pages, extra,leaders,n,t) +{ + # When we have a multiline title, the hypertext link goes only + # on the first line. A multiline hypertext link looks awful + # because of long underlines under the leading indentation. + + if (pages == "") # then no leaders needed in title lines other than last one + t = sprintf("%31s %s%s%s", author, Title_prefix, title, Title_suffix) + else # last title line, with page number + { + n = html_length(title) # potentially expensive + extra = n % 2 # extra space for aligned leader dots + if (n <= MAX_TITLE_CHARS) # then need leaders + leaders = substr(LEADERS, 1, MAX_TITLE_CHARS + MIN_LEADERS - extra - \ + min(MAX_TITLE_CHARS,n)) + else # title (almost) fills line, so no leaders + leaders = substr(MIN_LEADERS_SPACE,1, \ + (MAX_TITLE_CHARS + MIN_LEADERS - extra - n)) + t = sprintf("%31s %s%s%s%s%s %4s", \ + author, Title_prefix, title, Title_suffix, \ + (extra ? " " : ""), leaders, pages) + } + + Title_prefix = "" # forget any hypertext + Title_suffix = "" # link material + + # Efficency note: an earlier version accumulated the body in a + # single scalar like this: "Body = Body t". Profiling revealed + # this statement as the major hot spot, and the change to array + # storage made the program more than twice as fast. This + # suggests that awk might benefit from an optimization of + # "s = s t" that uses realloc() instead of malloc(). + if (HTML) + Body[++BodyLines] = t + else + print t +} + + +function protect_SGML_characters(s) +{ + gsub(/&/,"\\&",s) # NB: this one MUST be first + gsub(//,"\\>",s) + gsub(/\"/,"\\"",s) + return (s) +} + + +function strip_braces(s, k) +{ # strip non-backslashed braces from s and return the result + + return (strip_char(strip_char(s,"{"),"}")) +} + + +function strip_char(s,c, k) +{ # strip non-backslashed instances of c from s, and return the result + k = index(s,c) + if (k > 0) # then found the character + { + if (substr(s,k-1,1) != "\\") # then not backslashed char + s = substr(s,1,k-1) strip_char(substr(s,k+1),c) # so remove it (recursively) + else # preserve backslashed char + s = substr(s,1,k) strip_char(s,k+1,c) + } + return (s) +} + + +function strip_html(s) +{ + gsub(/<\/?[^>]*>/,"",s) + return (s) +} + + +function terminate() +{ + if (HTML) + { + html_end_pre() + + HTML = 0 # NB: stop line buffering + html_header() + html_toc() + html_body() + html_trailer() + } +} + + +function TeX_to_HTML(s, k,n,parts) +{ + # First convert the four SGML reserved characters to SGML entities + if (HTML) + { + gsub(/>/, "\\>", s) + gsub(/ 1) ? "$" : "") \ + ((k % 2) ? strip_braces(TeX_to_HTML_nonmath(parts[k])) : \ + TeX_to_HTML_math(parts[k])) + + gsub(/[$][$][$]/,"$$",s) # restore display math + + return (s) +} + + +function TeX_to_HTML_math(s) +{ + # Mostly a dummy for now, but HTML 3 could support some math translation + + gsub(/\\&/,"\\&",s) # reduce TeX ampersands to SGML entities + + return (s) +} + + +function TeX_to_HTML_nonmath(s) +{ + if (index(s,"\\") > 0) # important optimization + { + gsub(/\\slash +/,"/",s) # replace TeX slashes with conventional ones + gsub(/ *\\emdash +/," --- ",s) # replace BibNet emdashes with conventional ones + gsub(/\\%/,"%",s) # reduce TeX percents to conventional ones + gsub(/\\[$]/,"$",s) # reduce TeX dollars to conventional ones + gsub(/\\#/,"#",s) # reduce TeX sharps to conventional ones + + if (HTML) # translate TeX markup to HTML + { + gsub(/\\&/,"\\&",s) # reduce TeX ampersands to SGML entities + s = html_accents(s) + s = html_fonts(s) + } + else # plain ASCII text output: discard all TeX markup + { + gsub(/\\\&/, "\\&", s) # reduce TeX ampersands to conventional ones + + #gsub(/\\[a-z][a-z] +/,"",s) # remove TeX font changes + gsub(/\\[[:lower:]][[:lower:]] +/,"",s) # remove TeX font changes + #gsub(/\\[^A-Za-z]/,"",s) # remove remaining TeX control symbols + gsub(/\\[^[:alpha:]]/,"",s) # remove remaining TeX control symbols + } + } + return (s) +} + + +function trim(s) +{ + gsub(/^[ \t]+/,"",s) + gsub(/[ \t]+$/,"",s) + return (s) +} + + +function vol_no_month_year() +{ + return ("Volume " wrap(Volume) ", Number " wrap(Number) ", " wrap(Month) ", " wrap(Year)) +} + + +function wrap(value) +{ + return (HTML ? ("" value "") : value) +} diff --git a/src/tool/awk/testdata/gawk/funstack.in b/src/tool/awk/testdata/gawk/funstack.in new file mode 100644 index 0000000..7a29a25 --- /dev/null +++ b/src/tool/awk/testdata/gawk/funstack.in @@ -0,0 +1,206 @@ +%%% ==================================================================== +%%% BibTeX-file{ +%%% author = "Nelson H. F. Beebe", +%%% version = "2.09", +%%% date = "26 March 1997", +%%% time = "08:21:19 MST", +%%% filename = "cacm1970.bib", +%%% address = "Center for Scientific Computing +%%% Department of Mathematics +%%% University of Utah +%%% Salt Lake City, UT 84112 +%%% USA", +%%% telephone = "+1 801 581 5254", +%%% FAX = "+1 801 581 4148", +%%% checksum = "50673 40670 196033 1787829", +%%% email = "beebe at math.utah.edu (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "bibliography, CACM, Communications of the +%%% ACM", +%%% supported = "yes", +%%% docstring = "This is a bibliography of the journal +%%% Communications of the ACM, covering +%%% (incompletely) 1970 -- 1979. +%%% +%%% At version 2.09, the year coverage looked +%%% like this: +%%% +%%% 1961 ( 1) 1972 (168) 1983 ( 0) +%%% 1962 ( 1) 1973 (158) 1984 ( 0) +%%% 1963 ( 2) 1974 (127) 1985 ( 2) +%%% 1964 ( 2) 1975 (107) 1986 ( 0) +%%% 1965 ( 1) 1976 ( 97) 1987 ( 0) +%%% 1966 ( 2) 1977 (117) 1988 ( 0) +%%% 1967 ( 1) 1978 (118) 1989 ( 0) +%%% 1968 ( 1) 1979 ( 78) 1990 ( 2) +%%% 1969 ( 3) 1980 ( 1) 1991 ( 4) +%%% 1970 (157) 1981 ( 2) 1992 ( 1) +%%% 1971 (104) 1982 ( 1) +%%% +%%% Article: 1252 +%%% Book: 2 +%%% InProceedings: 1 +%%% Manual: 1 +%%% MastersThesis: 1 +%%% PhdThesis: 1 +%%% +%%% Total entries: 1258 +%%% +%%% The size of the original cacm.bib file +%%% covering 1958--1996 became too large (about +%%% 4000 entries) for BibTeX and TeX to handle, +%%% so at version 1.44, it was split into +%%% cacm1950.bib, cacm1960.bib, cacm1970.bib, +%%% cacm1980.bib, and cacm1990.bib, each covering +%%% the decade starting with the year embedded in +%%% the filename. Version numbers for these +%%% files begin at 2.00. +%%% +%%% Volumes from the 1990s average more than 200 +%%% articles yearly, so a complete bibliography +%%% for this journal could contain more than 6000 +%%% entries from 1958 to 2000. +%%% +%%% These bibliographies also include ACM +%%% Algorithms 1--492. For Algorithms 493--686, +%%% including Algorithm 568, published in ACM +%%% Transactions on Programming Languages and +%%% Systems (TOPLAS), see the companion +%%% bibliographies, toms.bib and toplas.bib. +%%% +%%% All published Remarks and Corrigenda are +%%% cross-referenced in both directions, so +%%% that citing a paper will automatically +%%% generate citations for those Remarks and +%%% Corrigenda. Cross-referenced entries are +%%% duplicated in cacm19*.bib and toms.bib, so +%%% that each is completely self-contained. +%%% +%%% Source code for ACM Algorithms from 380 +%%% onwards, with some omissions, is available +%%% via the Netlib service at +%%% http://netlib.ornl.gov/, and +%%% ftp://netlib.bell-labs.com/netlib/toms. +%%% +%%% There is a World Wide Web search facility +%%% for articles published in this journal from +%%% 1959 to 1979 at +%%% http://ciir.cs.umass.edu/cgi-bin/web_query_form/public/cacm2.1. +%%% +%%% The initial draft of entries for 1981 -- +%%% 1990 was extracted from the ACM Computing +%%% Archive CD ROM for the 1980s, with manual +%%% corrections and additions. Additions were +%%% then made from all of the bibliographies in +%%% the TeX User Group collection, from +%%% bibliographies in the author's personal +%%% files, from the Compendex database +%%% (1970--1979), from the IEEE INSPEC database +%%% (1970--1979), from tables of contents +%%% information at http://www.acm.org/pubs/cacm/, +%%% from Zentralblatt fur Mathematik Mathematics +%%% Abstracts at +%%% http://www.emis.de/cgi-bin/MATH/, from +%%% bibliographies at Internet host +%%% netlib.bell-labs.com, and from the computer +%%% science bibliography collection on +%%% ftp.ira.uka.de in /pub/bibliography to which +%%% many people of have contributed. The +%%% snapshot of this collection was taken on +%%% 5-May-1994, and it consists of 441 BibTeX +%%% files, 2,672,675 lines, 205,289 entries, and +%%% 6,375 String{} abbreviations, occupying +%%% 94.8MB of disk space. +%%% +%%% Numerous errors in the sources noted above +%%% have been corrected. Spelling has been +%%% verified with the UNIX spell and GNU ispell +%%% programs using the exception dictionary +%%% stored in the companion file with extension +%%% .sok. +%%% +%%% BibTeX citation tags are uniformly chosen +%%% as name:year:abbrev, where name is the +%%% family name of the first author or editor, +%%% year is a 4-digit number, and abbrev is a +%%% 3-letter condensation of important title +%%% words. Citation tags were automatically +%%% generated by software developed for the +%%% BibNet Project. +%%% +%%% In this bibliography, entries are sorted in +%%% publication order within each journal, +%%% using bibsort -byvolume. +%%% +%%% The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== + +@Preamble{"\input bibnames.sty " # "\input path.sty " # "\def \TM {${}^{\sc TM}$} " # "\hyphenation{ al-pha-mer-ic Balz-er Blom-quist Bo-ta-fo-go Bran-din Brans-comb Bu-tera Chris-tina Christ-o-fi-des Col-lins Cor-dell data-base econ-omies Fletch-er + flow-chart flow-charts Fry-styk ge-dank-en Gar-fink-el Ge-ha-ni Glush-ko Goud-reau Gua-dan-go Hari-di Haw-thorn Hem-men-ding-er Hor-o-witz Hour-vitz Hirsch-berg Ike-da Ka-chi-tvi-chyan-u-kul Kat-ze-nel-son Kitz-miller Ko-ba-yashi Le-Me-tay-er Ken-ne-dy + Law-rence Mac-kay Mai-net-ti Mar-sa-glia Max-well Mer-ner Mo-ran-di Na-ray-an New-ell Nich-ols para-digm pat-ent-ed Phi-lo-kyp-rou Prep-a-ra-ta pseu-do-chain-ing QUIK-SCRIPT Rad-e-mach-er re-eval-u-a-tion re-wind Ros-witha Scheu-er-mann Schwach-heim + Schob-bens Schon-berg Sho-sha-ni Si-tha-ra-ma Skwa-rec-ki Streck-er Strin-gi-ni Tes-ler Te-zu-ka Teu-ho-la Till-quist Town-send Tsi-chri-tzis Tur-ski Vuille-min Wald-ing-er Za-bo-row-ski Za-mora }"} + +%======================================================================= +% Acknowledgement abbreviations: + +@String{ack-nhfb = "Nelson H. F. Beebe, Center for Scientific Computing, Department of Mathematics, University of Utah, Salt Lake City, UT 84112, USA, Tel: +1 801 581 5254, FAX: +1 801 581 4148, e-mail: \path|beebe@math.utah.edu|"} + +@String{ack-nj = "Norbert Juffa, 2445 Mission College Blvd. Santa Clara, CA 95054 USA email: \path=norbert@iit.com="} + +%======================================================================= +% Journal abbreviations: + +@String{j-CACM = "Communications of the ACM"} + +@String{j-COMP-SURV = "Computing Surveys"} + +@String{j-J-ACM = "Journal of the ACM"} + +@String{j-MANAGEMENT-SCIENCE = "Management Science"} + +@String{j-SIAM-J-COMPUT = "SIAM Journal of Computing"} + +@String{j-SPE = "Software --- Practice and Experience"} + +@String{j-TOMS = "ACM Transactions on Mathematical Software"} + +%======================================================================= +% Publisher abbreviations: + +@String{pub-ANSI = "American National Standards Institute"} + +@String{pub-ANSI:adr = "1430 Broadway, New York, NY 10018, USA"} + +@String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} + +@String{pub-AW:adr = "Reading, MA, USA"} + +@String{pub-SUCSLI = "Stanford University Center for the Study of Language and Information"} + +@String{pub-SUCSLI:adr = "Stanford, CA, USA"} + +@String{pub-SV = "Spring{\-}er-Ver{\-}lag"} + +@String{pub-SV:adr = "Berlin, Germany~/ Heidelberg, Germany~/ London, UK~/ etc."} +@MastersThesis{Dittmer:1976:IEP, + author = "Ingo Dittmer", + title = "{Implementation eines Einschrittcompilers f{\"u}r die Progammiersprache PASCAL auf der Rechenanlage IBM\slash 360 der Universit{\"a}t M{\"u}nster}. ({English} title: Implementation of a One-Step Compiler for the Programming Language + {PASCAL} on the {IBM}\slash 360 of the {University of Muenster})", + type = "Diplomearbeit", + school = "Universit{\"a}t M{\"u}nster", + address = "M{\"u}nster, Germany", + pages = "??", + month = "??", + year = "1976", + bibdate = "Sat Feb 17 13:24:29 1996", + note = "Diplomearbeit M{\"u}nster 1976 und doert angegebene Literatur (English: Muenster diploma work 1976 and the literature cited therein). The hashing method was rediscovered fourteen years later by Pearson \cite{Pearson:1990:FHV}, and then + commented on by several authors \cite{Dittmer:1991:NFH,Savoy:1991:NFH,Litsios:1991:NFH,Pearson:1991:NFH}.", + acknowledgement = ack-nhfb, + xxnote = "Cannot find in Dissertation Abstracts, European.", +} diff --git a/src/tool/awk/testdata/gawk/funstack.ok b/src/tool/awk/testdata/gawk/funstack.ok new file mode 100644 index 0000000..6f66608 --- /dev/null +++ b/src/tool/awk/testdata/gawk/funstack.ok @@ -0,0 +1 @@ +parse error at 381:8: error parsing regexp: invalid escape sequence: `\e` \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/getline.awk b/src/tool/awk/testdata/gawk/getline.awk new file mode 100644 index 0000000..4601ca1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline.awk @@ -0,0 +1,33 @@ +BEGIN { + x = y = "s" + a = (getline x y) + print a, x + a = (getline x + 1) + print a, x + a = (getline x - 2) + print a, x + + cmd = "echo A" + a = (cmd | getline x y) + close(cmd) + print a, x + + cmd = "echo B" + a = (cmd | getline x + 1) + close(cmd) + print a, x + + cmd = "echo C" + a = (cmd | getline x - 2) + close(cmd) + print a, x + + cmd = "echo D" + a = cmd | getline x + close(cmd) + print a, x + + # Concatenation has higher precedence than IO. + "echo " "date" | getline + print +} diff --git a/src/tool/awk/testdata/gawk/getline.in b/src/tool/awk/testdata/gawk/getline.in new file mode 100644 index 0000000..b1e6722 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline.in @@ -0,0 +1,3 @@ +A +B +C diff --git a/src/tool/awk/testdata/gawk/getline.ok b/src/tool/awk/testdata/gawk/getline.ok new file mode 100644 index 0000000..a033cb6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline.ok @@ -0,0 +1,8 @@ +1s A +2 B +-1 C +1s A +2 B +-1 C +1 D +date diff --git a/src/tool/awk/testdata/gawk/getline2.awk b/src/tool/awk/testdata/gawk/getline2.awk new file mode 100644 index 0000000..f4e413f --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline2.awk @@ -0,0 +1 @@ +BEGIN { while( getline > 0) { print } } diff --git a/src/tool/awk/testdata/gawk/getline2.in b/src/tool/awk/testdata/gawk/getline2.in new file mode 100644 index 0000000..9b7f2b9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline2.in @@ -0,0 +1,2 @@ +BEGIN { while( getline > 0) { print } } +BEGIN { while( getline > 0) { print } } diff --git a/src/tool/awk/testdata/gawk/getline2.ok b/src/tool/awk/testdata/gawk/getline2.ok new file mode 100644 index 0000000..9b7f2b9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline2.ok @@ -0,0 +1,2 @@ +BEGIN { while( getline > 0) { print } } +BEGIN { while( getline > 0) { print } } diff --git a/src/tool/awk/testdata/gawk/getline3.awk b/src/tool/awk/testdata/gawk/getline3.awk new file mode 100644 index 0000000..03e1239 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline3.awk @@ -0,0 +1,7 @@ +BEGIN { + cmd = "echo 3" + y = 7 + cmd | getline x y + close(cmd) + print (cmd | getline x y) +} diff --git a/src/tool/awk/testdata/gawk/getline3.ok b/src/tool/awk/testdata/gawk/getline3.ok new file mode 100644 index 0000000..98d9bcb --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline3.ok @@ -0,0 +1 @@ +17 diff --git a/src/tool/awk/testdata/gawk/getline4.awk b/src/tool/awk/testdata/gawk/getline4.awk new file mode 100644 index 0000000..275faaa --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline4.awk @@ -0,0 +1 @@ +END { getline $2; print} diff --git a/src/tool/awk/testdata/gawk/getline4.in b/src/tool/awk/testdata/gawk/getline4.in new file mode 100644 index 0000000..42771a3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline4.in @@ -0,0 +1 @@ + aaa bbb diff --git a/src/tool/awk/testdata/gawk/getline4.ok b/src/tool/awk/testdata/gawk/getline4.ok new file mode 100644 index 0000000..42771a3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline4.ok @@ -0,0 +1 @@ + aaa bbb diff --git a/src/tool/awk/testdata/gawk/getline5.awk b/src/tool/awk/testdata/gawk/getline5.awk new file mode 100644 index 0000000..4757bcf --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline5.awk @@ -0,0 +1,35 @@ +# Message-ID: <4F7832BD.9030709@gmx.com> +# Date: Sun, 01 Apr 2012 11:49:33 +0100 +# From: Duncan Moore +# To: "bug-gawk@gnu.org" +# Subject: [bug-gawk] getline difference from gawk versions >=4.0.0 +# +# Hi +# +# b.awk: +# +# BEGIN { +# system("echo 1 > f") +# while ((getline a[++c] < "f") > 0) {} +# print c +# } +# +# gawk -f b.awk +# +# Prior to gawk 4.0.0 this outputs: +# +# 1 +# +# For 4.0.0 and 4.0.1 it outputs: +# +# 2 +# +# Regards +# Duncan Moore + +BEGIN { + system("echo 1 > f") + while ((getline a[++c] < "f") > 0) {} + print c + system("rm -f f") +} diff --git a/src/tool/awk/testdata/gawk/getline5.ok b/src/tool/awk/testdata/gawk/getline5.ok new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getline5.ok @@ -0,0 +1 @@ +2 diff --git a/src/tool/awk/testdata/gawk/getlnbuf.awk b/src/tool/awk/testdata/gawk/getlnbuf.awk new file mode 100644 index 0000000..8a4483e --- /dev/null +++ b/src/tool/awk/testdata/gawk/getlnbuf.awk @@ -0,0 +1,18 @@ +#Date: Tue, 21 Dec 1999 16:11:07 +0100 +#From: Daniel Schnell +#To: bug-gnu-utils@gnu.org +#CC: arnold@gnu.org +#Subject: BUG in gawk (version 3.0.4 linux, windows): Text mangeling in between + +# search for "@K@CODE" segment + +$0 ~ /@K@CODE/ { + # get next record + getline temp + printf ("@K@CODE\n") + printf ("%s\n",temp) + } + +$0 !~ /@K@CODE/ { + printf ("%s\n", $0) + } diff --git a/src/tool/awk/testdata/gawk/getlnbuf.in b/src/tool/awk/testdata/gawk/getlnbuf.in new file mode 100644 index 0000000..062b377 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getlnbuf.in @@ -0,0 +1,1708 @@ +EXTRA_INFO.TYP3.EC := EC; +EXTRA_INFO.TYP3.TEXT:= 'CONNECT_SERVICE TO OAM FAILED'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C003', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_SWERR, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +917596041 +@K@NAME +T_ERR4_1 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +MP/NSEI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSEI-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903219 +@K@NAME +T_ERR4_2 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +MP/NSVCI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSVCI-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903222 +@K@NAME +T_ERR4_3 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +NSEI/NSVCI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: NSEI/NSVC-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903226 +@K@NAME +TR_RESET +@K@INSCRIPT +RESTART_ +TNS_RESET_ +TIMER +@K@CODE +/* TIMER EVENT DESCRIPTOR STILL THERE */ + +/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR STILL VALID */ +NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_RESET_MAP; + +/* START TIMER */ +G9PX508_START_TIMER_P +( +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +@K@FREEZE +924684867 +@K@NAME +TX_AUDIT +@K@INSCRIPT +FOR +AUDIT + +@K@NAME +M_BLKOACKM +@K@INSCRIPT +NS_ +BLOCK_ACK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; + +IF +/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL +THEN +/* USE THIS 'OTHER' FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +/* NSEI TO BE USED FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +/* NSVCI TO BE USED FOR TRANSPORT */ +ELSE +/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +FI; + + +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D3); + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938805885 +@K@NAME +T_RCTRUE +@K@INSCRIPT +RC += +TRUE +@K@CODE +RC:= TRUE; + +@K@FREEZE +922176328 +@K@NAME +M_AC_SBVCN +@K@INSCRIPT +G9IBME0_ +ACT_ +SIGN_BVC_C +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME0_ACT_SIGN_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0); +TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938788211 +@K@NAME +T_RC_EOD +@K@INSCRIPT +RC += +END OF DATA + +@K@CODE +RC:= G9IBSM4_RC_END_OF_DATA; + +@K@FREEZE +921083785 +@K@NAME +T_RC_EMP +@K@INSCRIPT +RC += +EMPTY + +@K@CODE +RC:= G9IBSM4_RC_EMPTY; + +@K@FREEZE +921083757 +@K@NAME +T_RC_ERR +@K@INSCRIPT +RC += +ERROR + +@K@CODE +RC:= G9IBSM4_RC_ERROR; + +@K@FREEZE +921083731 +@K@NAME +S_UNUSED +@K@INSCRIPT +G9IBSM0_ +UNUSED +@K@CODE + + +@K@FREEZE +919416670 +@K@NAME +TA_UNBLOCK +@K@INSCRIPT +START_ +TNS_UNBLOCK_ +TIMER +@K@CODE +/* GET TIMER-EVENT DESCRIPTOR */ +G9PB513_GET_TIMER_EV_DESCR_P +( +SID_GBNSVC, +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR */ +NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_CMD:= G9IBSE4_TO_TNS_C; +NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_DESTINATION:= GBNSVC_HANDLE; +NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_UNBLOCK_MAP; + +/* START TIMER */ +G9PX508_START_TIMER_P +( +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +@K@FREEZE +924686210 +@K@NAME +M_BLK_ACKM +@K@INSCRIPT +NS_ +BLOCK_ACK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D3); + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +926348442 +@K@NAME +TA_NXTALIV +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +ALIVE' +@K@CODE +IF +/* ALIVE NSVC TO THE NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL + +THEN +/* TAKE NEXT ELEMENT IN THE LINKED LIST AS THE NEXT ALIVE NSVC */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR:= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.NEXT_ALV_NSVCI_CON_PTR; + +FI; + +@K@FREEZE +938801086 +@K@NAME +M_DE_CBVCN +@K@INSCRIPT +G9IBME2_ +DEACT_ +CELL_BVC_C + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME2_DEACT_CELL_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +TX_EVD_PTR->.KEYS.INT_ARR(1):= EVD_PTR->.ADD_DATA(3); + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +933318270 +@K@NAME +TA_NXTRESP +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +RESPONSIBLE' +@K@CODE +NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR:= + NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR->.NEXT_LSP_NSVCI_CON_PTR; + + +@K@FREEZE +938005006 +@K@NAME +TA_NXTSUBS +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +SUBSTITUTE' +@K@CODE +NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR:= + NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR->.NEXT_UBL_NSVCI_CON_PTR; + +@K@NAME +M_BLK_O__M +@K@INSCRIPT +NS_ +BLOCK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; + +IF +/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL +THEN +/* USE THIS 'OTHER' FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +/* NSEI TO BE USED FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +/* NSVCI TO BE USED FOR TRANSPORT */ +ELSE +/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +FI; + + +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D2); + + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:= + G9IBBA2_NS_TRANSIT_NETWORK_FAILURE; /* CAUSE FOR BLOCK */ +NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +GSM 8.16 CHAP. 7.2: +THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE +(BLOCKED OR UNBLOCKED) NS-VC... +@K@FREEZE +938803215 +@K@NAME +M_DE_SBVCN +@K@INSCRIPT +G9IBME1_ +DEACT_ +SIGN_BVC_C +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME1_DEACT_SIGN_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0); +TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938788201 +@K@NAME +M_OAME401M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE; +OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /* +USED NSEI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* AFFECTED NSVCI (FROM PDU) */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935766108 +@K@NAME +M_OAME402M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935766407 +@K@NAME +M_OAME411M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_ACK_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE; +OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /* +USED NSEI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935767332 +@K@NAME +M_OAME412M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_ACK_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935767189 +@K@NAME +C_CON +@K@INSCRIPT +RC_DB +@K@CODE +RC_DB + +@K@FREEZE +922176673 +@K@NAME +M_BLK____M +@K@INSCRIPT +NS_ +BLOCK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D2); + + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:= + G9IBBA2_NS_OAM_INTERVENTION; /* CAUSE FOR BLOCK */ +NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +GSM 8.16 CHAP. 7.2: +THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE +(BLOCKED OR UNBLOCKED) NS-VC... +@K@FREEZE +926348613 +@K@NAME +S_BLOCKED +@K@INSCRIPT +G9IBSM0_ +BLOCKED +@K@CODE + + +@K@FREEZE +922176496 +@K@NAME +D_CON +@K@INSCRIPT +CONTEXT +GOT +@K@CODE +RC_DB = G9IBSR0_RC_OK + +@K@FREEZE +921772339 +@K@NAME +M_OAME901M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +UBL->BLK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_ENABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970975 +@K@NAME +M_OAME902M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +UBL->BLK + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_DISABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970987 +@K@NAME +M_OAME10SM +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@NAME +M_OAME911M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +BLK->UBL +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_ENABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970996 +@K@NAME +M_OAME20SM +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@NAME +M_OAME10_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443813 +@K@NAME +D_SEM +@K@INSCRIPT +CALL_SEM += +TRUE +@K@CODE +CALL_SEM = TRUE + +@K@FREEZE +922176624 +@K@NAME +D_N_0 +@K@INSCRIPT +N = 0 + +@K@CODE +NSVCI_CON_PTR->.N = 0 + +@K@FREEZE +921511000 +@K@NAME +M_OAME12_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443829 +@K@NAME +M_OAME21_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + FALSE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443856 +@K@NAME +M_OAME13_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443838 +@K@NAME +M_OAME22_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443864 +@K@NAME +M_OAME30_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FORM_BSS +RESET_PROCEDURE + + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_RESET_PROCEDURE; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175973 +@K@NAME +M_OAME31_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FROM_BSS +BLOCK_PROCEDURE + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_BLOCK_PROCEDURE; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175976 +@K@NAME +M_OAME32_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FROM_BSS +UNBLOCK_PROCEDURE + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_UNBLOCK_PROCEDURE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175980 +@K@NAME +M_OAME42_M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +BLOCK_PDU +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_BLOCK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */ + + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +934296141 +@K@NAME +M_OAME50_M +@K@INSCRIPT +ERROR_MESSAGE: +STATUS_PDU_CONTAINS_ERROR_INFO +RECEIVED +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR-CAUSE = STATUS_PDU_CONTAINS_ERROR_INFO */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_STATUS_PDU_CONTAINS_ERROR_INFO; +/* ADDITIONAL_STATUS_PDU_INFO */ +INT_CAUSE_PTR.INT_PTR:= ADDR(EVD_PTR->.ADD_DATA(2)); +OAM_MSG_PTR->.ADDITIONAL_STATUS_PDU_INFO:= + INT_CAUSE_PTR.CAUSE_PTR->; /* CAUSE */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +NICHT OK + +@K@FREEZE +934298924 +@K@NAME +M_OAME43_M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +BLOCK_ACK_PDU +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_BLOCK_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +934297710 diff --git a/src/tool/awk/testdata/gawk/getlnbuf.ok b/src/tool/awk/testdata/gawk/getlnbuf.ok new file mode 100644 index 0000000..062b377 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getlnbuf.ok @@ -0,0 +1,1708 @@ +EXTRA_INFO.TYP3.EC := EC; +EXTRA_INFO.TYP3.TEXT:= 'CONNECT_SERVICE TO OAM FAILED'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C003', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_SWERR, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +917596041 +@K@NAME +T_ERR4_1 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +MP/NSEI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSEI-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903219 +@K@NAME +T_ERR4_2 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +MP/NSVCI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSVCI-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903222 +@K@NAME +T_ERR4_3 +@K@INSCRIPT +ERROR_HANDLING: +DB_OVERFLOW +NSEI/NSVCI +@K@CODE +/***@@@ ERROR ***/ +/*@@ERRORTEXT +*@ DB-OVERFLOW +*@ +*@ +*@@DESCRIPTION +*@ THE INSTANCE-CREATION WAS NOT POSSIBLE +*@ BECAUSE THE DATABASE WOULD OVERFLOW +*@ +*@@EXTRA INFO +*@ (EXTRA_INFO_4_STRUCT) +*@ NSEI +*@ NSVCI +*@ TEXT +*@ +*/ + +EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0); +EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1); +EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: NSEI/NSVC-OVERFLOW'; + +G9PXYA1S!G9TE500_EHP_P( +'G9IBSA1C004', /*@@ID*/ +G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/ +ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */ +G9PXYA1S!G9TE100_GB_LM, /* USER-ID */ +NULL /* OPTIONAL-SWET-INFO ADDR */ +); +/***@@@ END OF ERROR ***/ + +@K@FREEZE +920903226 +@K@NAME +TR_RESET +@K@INSCRIPT +RESTART_ +TNS_RESET_ +TIMER +@K@CODE +/* TIMER EVENT DESCRIPTOR STILL THERE */ + +/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR STILL VALID */ +NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_RESET_MAP; + +/* START TIMER */ +G9PX508_START_TIMER_P +( +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +@K@FREEZE +924684867 +@K@NAME +TX_AUDIT +@K@INSCRIPT +FOR +AUDIT + +@K@NAME +M_BLKOACKM +@K@INSCRIPT +NS_ +BLOCK_ACK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; + +IF +/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL +THEN +/* USE THIS 'OTHER' FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +/* NSEI TO BE USED FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +/* NSVCI TO BE USED FOR TRANSPORT */ +ELSE +/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +FI; + + +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D3); + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938805885 +@K@NAME +T_RCTRUE +@K@INSCRIPT +RC += +TRUE +@K@CODE +RC:= TRUE; + +@K@FREEZE +922176328 +@K@NAME +M_AC_SBVCN +@K@INSCRIPT +G9IBME0_ +ACT_ +SIGN_BVC_C +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME0_ACT_SIGN_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0); +TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938788211 +@K@NAME +T_RC_EOD +@K@INSCRIPT +RC += +END OF DATA + +@K@CODE +RC:= G9IBSM4_RC_END_OF_DATA; + +@K@FREEZE +921083785 +@K@NAME +T_RC_EMP +@K@INSCRIPT +RC += +EMPTY + +@K@CODE +RC:= G9IBSM4_RC_EMPTY; + +@K@FREEZE +921083757 +@K@NAME +T_RC_ERR +@K@INSCRIPT +RC += +ERROR + +@K@CODE +RC:= G9IBSM4_RC_ERROR; + +@K@FREEZE +921083731 +@K@NAME +S_UNUSED +@K@INSCRIPT +G9IBSM0_ +UNUSED +@K@CODE + + +@K@FREEZE +919416670 +@K@NAME +TA_UNBLOCK +@K@INSCRIPT +START_ +TNS_UNBLOCK_ +TIMER +@K@CODE +/* GET TIMER-EVENT DESCRIPTOR */ +G9PB513_GET_TIMER_EV_DESCR_P +( +SID_GBNSVC, +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR */ +NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_CMD:= G9IBSE4_TO_TNS_C; +NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_DESTINATION:= GBNSVC_HANDLE; +NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_UNBLOCK_MAP; + +/* START TIMER */ +G9PX508_START_TIMER_P +( +NSVCI_CON_PTR->.TIM_EVD_PTR +); + +@K@FREEZE +924686210 +@K@NAME +M_BLK_ACKM +@K@INSCRIPT +NS_ +BLOCK_ACK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D3); + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +926348442 +@K@NAME +TA_NXTALIV +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +ALIVE' +@K@CODE +IF +/* ALIVE NSVC TO THE NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL + +THEN +/* TAKE NEXT ELEMENT IN THE LINKED LIST AS THE NEXT ALIVE NSVC */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR:= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.NEXT_ALV_NSVCI_CON_PTR; + +FI; + +@K@FREEZE +938801086 +@K@NAME +M_DE_CBVCN +@K@INSCRIPT +G9IBME2_ +DEACT_ +CELL_BVC_C + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME2_DEACT_CELL_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +TX_EVD_PTR->.KEYS.INT_ARR(1):= EVD_PTR->.ADD_DATA(3); + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +933318270 +@K@NAME +TA_NXTRESP +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +RESPONSIBLE' +@K@CODE +NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR:= + NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR->.NEXT_LSP_NSVCI_CON_PTR; + + +@K@FREEZE +938005006 +@K@NAME +TA_NXTSUBS +@K@INSCRIPT +DEFINE +NEW 'NEXT_ +SUBSTITUTE' +@K@CODE +NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR:= + NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR->.NEXT_UBL_NSVCI_CON_PTR; + +@K@NAME +M_BLK_O__M +@K@INSCRIPT +NS_ +BLOCK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; + +IF +/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */ +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL +THEN +/* USE THIS 'OTHER' FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; +/* NSEI TO BE USED FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + +NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; +/* NSVCI TO BE USED FOR TRANSPORT */ +ELSE +/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(0):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +FI; + + +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D2); + + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:= + G9IBBA2_NS_TRANSIT_NETWORK_FAILURE; /* CAUSE FOR BLOCK */ +NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +GSM 8.16 CHAP. 7.2: +THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE +(BLOCKED OR UNBLOCKED) NS-VC... +@K@FREEZE +938803215 +@K@NAME +M_DE_SBVCN +@K@INSCRIPT +G9IBME1_ +DEACT_ +SIGN_BVC_C +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB512_GET_MSG_LESS_EV_DESCR_P +( +SID_GBNSVC, +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +TX_EVD_PTR->.EVENT_CMD:= G9IBME1_DEACT_SIGN_BVC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0); +TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +938788201 +@K@NAME +M_OAME401M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE; +OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /* +USED NSEI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* AFFECTED NSVCI (FROM PDU) */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935766108 +@K@NAME +M_OAME402M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935766407 +@K@NAME +M_OAME411M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_ACK_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE; +OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /* +USED NSEI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935767332 +@K@NAME +M_OAME412M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +RESET_ACK_PDU + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_RESET_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */ + + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +935767189 +@K@NAME +C_CON +@K@INSCRIPT +RC_DB +@K@CODE +RC_DB + +@K@FREEZE +922176673 +@K@NAME +M_BLK____M +@K@INSCRIPT +NS_ +BLOCK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C), +TX_EVD_PTR +); + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C; +TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE; +TX_EVD_PTR->.KEYS.INT_ARR(0):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR +TRANSPORT */ +TX_EVD_PTR->.KEYS.INT_ARR(1):= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR +TRANSPORT */ +/* POINTER TO PDU IN POOL-ELEMENT */ +NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT) + + G9IBD44_NS_PDU_DATA_OFFSET_C); +/* OFFSET OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C; +/* LENGTH OF THE PDU IN POOL-ELEMENT */ +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) + +SIZE(NS_PDU_PTR->.D2); + + +/* NOW THE POOL-ELEMENT */ +NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */ + +NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:= + G9IBBA2_NS_OAM_INTERVENTION; /* CAUSE FOR BLOCK */ +NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL := + NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */ + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +GSM 8.16 CHAP. 7.2: +THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE +(BLOCKED OR UNBLOCKED) NS-VC... +@K@FREEZE +926348613 +@K@NAME +S_BLOCKED +@K@INSCRIPT +G9IBSM0_ +BLOCKED +@K@CODE + + +@K@FREEZE +922176496 +@K@NAME +D_CON +@K@INSCRIPT +CONTEXT +GOT +@K@CODE +RC_DB = G9IBSR0_RC_OK + +@K@FREEZE +921772339 +@K@NAME +M_OAME901M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +UBL->BLK +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_ENABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970975 +@K@NAME +M_OAME902M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +UBL->BLK + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_DISABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970987 +@K@NAME +M_OAME10SM +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@NAME +M_OAME911M +@K@INSCRIPT +ERROR_MESSAGE: +OPERATIONAL_STATE_CHANGE +BLK->UBL +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE; +/* ADDITIONAL_OPERATIONAL_STATE_INFO */ +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:= + G9OC102_ENABLED; +OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:= + G9OC102_ENABLED; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +925970996 +@K@NAME +M_OAME20SM +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@NAME +M_OAME10_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443813 +@K@NAME +D_SEM +@K@INSCRIPT +CALL_SEM += +TRUE +@K@CODE +CALL_SEM = TRUE + +@K@FREEZE +922176624 +@K@NAME +D_N_0 +@K@INSCRIPT +N = 0 + +@K@CODE +NSVCI_CON_PTR->.N = 0 + +@K@FREEZE +921511000 +@K@NAME +M_OAME12_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443829 +@K@NAME +M_OAME21_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + TRUE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + FALSE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443856 +@K@NAME +M_OAME13_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_BEGIN_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_UNBLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443838 +@K@NAME +M_OAME22_M +@K@INSCRIPT +ERROR_MESSAGE: +ALARM_END_NS_ALIVE_TEST +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST; +/* ADDITIONAL_ALARM_INFO */ +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:= + FALSE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:= + G9OC101_BLOCKED; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:= + G9OC103_DEAD; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:= + G9OC103_ALIVE; +OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:= + TRUE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922443864 +@K@NAME +M_OAME30_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FORM_BSS +RESET_PROCEDURE + + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_RESET_PROCEDURE; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175973 +@K@NAME +M_OAME31_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FROM_BSS +BLOCK_PROCEDURE + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_BLOCK_PROCEDURE; + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175976 +@K@NAME +M_OAME32_M +@K@INSCRIPT +ERROR_MESSAGE: +NO_ANSWER_FROM_BSS +UNBLOCK_PROCEDURE + +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS; +/* INITIATED_PROCEDURE */ +OAM_MSG_PTR->.INITIATED_PROCEDURE:= + G9OC123_UNBLOCK_PROCEDURE; + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +922175980 +@K@NAME +M_OAME42_M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +BLOCK_PDU +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_BLOCK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */ + + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +934296141 +@K@NAME +M_OAME50_M +@K@INSCRIPT +ERROR_MESSAGE: +STATUS_PDU_CONTAINS_ERROR_INFO +RECEIVED +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= +NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; + +/* ERROR-CAUSE = STATUS_PDU_CONTAINS_ERROR_INFO */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_STATUS_PDU_CONTAINS_ERROR_INFO; +/* ADDITIONAL_STATUS_PDU_INFO */ +INT_CAUSE_PTR.INT_PTR:= ADDR(EVD_PTR->.ADD_DATA(2)); +OAM_MSG_PTR->.ADDITIONAL_STATUS_PDU_INFO:= + INT_CAUSE_PTR.CAUSE_PTR->; /* CAUSE */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@TEXT +NICHT OK + +@K@FREEZE +934298924 +@K@NAME +M_OAME43_M +@K@INSCRIPT +ERROR_MESSAGE: +ERRONOUS_PDU +BLOCK_ACK_PDU +@K@CODE +/* GETTING THE EVENT DESCRIPTOR */ +G9PB511_GET_MSG_BOUND_EV_DESCR_P +( +SID_GBNSVC, +(SIZE(G9OC109_REPORTED_EVENT_STR_M)), +TX_EVD_PTR +); + + +/* COMPOSING THE EVENT */ +/* FIRST THE DESCRIPTOR */ +TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C; +TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE; +TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX; +TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0; +TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M); + +/* NOW THE POOL-ELEMENT */ +/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */ +OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT); + +/* COMPOSING THE MESSAGE */ +/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */ +OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC; +OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /* +USED NSVCI (FROM ECI) */ + +/* ERROR-CAUSE = ERRONEOUS_PDU */ +OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU; +/* ADDITIONAL_PDU_INFO */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:= + G9OC124_BLOCK_ACK_PDU; +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:= + EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */ +OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:= + EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */ + + + +/* SENDING */ +G9PX503_POST_EVENT_P(TX_EVD_PTR); + +@K@FREEZE +934297710 diff --git a/src/tool/awk/testdata/gawk/getnr2tb.awk b/src/tool/awk/testdata/gawk/getnr2tb.awk new file mode 100644 index 0000000..204acf4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tb.awk @@ -0,0 +1,111 @@ +#From vp@dmat.uevora.pt Thu Jun 18 09:10 EDT 1998 +#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id JAA23649 for ; Thu, 18 Jun 1998 09:10:54 -0400 (EDT) +#Received: from khromeleque.dmat.uevora.pt by mescaline.gnu.org (8.8.5/8.6.12GNU) with ESMTP id JAA21732 for ; Thu, 18 Jun 1998 09:11:19 -0400 +#Received: from khromeleque.dmat.uevora.pt (vp@localhost [127.0.0.1]) +# by khromeleque.dmat.uevora.pt (8.8.8/8.8.8/Debian/GNU) with ESMTP id OAA11817 +# for ; Thu, 18 Jun 1998 14:13:57 +0100 +#Message-Id: <199806181313.OAA11817@khromeleque.dmat.uevora.pt> +#To: arnold@gnu.org +#Subject: concatenation bug in gawk 3.0.3 +#Date: Thu, 18 Jun 1998 14:13:57 +0200 +#From: Vasco Pedro +#Content-Type: text +#Content-Length: 2285 +#Status: RO +# +#Hi, +# +#The gawk program '{print NR " " 10/NR}' will print: +# +#1 10 +#5 5 +#3 3.33333 +#2 2.5 +#2 2 +#1 1.66667 +# +#instead of the correct: +# +#1 10 +#2 5 +#3 3.33333 +#4 2.5 +#5 2 +#6 1.66667 +# +#You'll notice, on the incorrect output, that the first column is +#the first digit of the second. +# +#I think the problem comes from the way builtin variables are handled. +#Since the items to be concatenated are processed in reverse order and +#the return value of tree_eval(``NR'') is a pointer to the value part +#of `NR_node', the `unref()' of `NR_node' due to its second occurrence +#will leave a dangling pointer in `strlist'. The reason that it doesn't +#reuse the freed space with objects of the same type. (Using Electric +#Fence with EF_PROTECT_FREE set confirms that freed space is being +#accessed.) +# +#The enclosed patch (hack would be a better word to describe it) is +#all I could come up with. With it installed, things seem to work ok, +#but I doubt this is the correct way to do it. (If I treated the +#case for `Node_field_spec' as the I did others, `make check' would +#fail in several places.) +# +#Regards, +#vasco +# +#*** eval.c~ Tue May 6 21:39:55 1997 +#--- eval.c Thu Jun 18 13:39:25 1998 +#*************** +#*** 685,697 **** +# return func_call(tree->rnode, tree->lnode); +# +# /* unary operations */ +# case Node_NR: +# case Node_FNR: +# case Node_NF: +# case Node_FIELDWIDTHS: +# case Node_FS: +# case Node_RS: +#- case Node_field_spec: +# case Node_subscript: +# case Node_IGNORECASE: +# case Node_OFS: +#--- 685,700 ---- +# return func_call(tree->rnode, tree->lnode); +# +# /* unary operations */ +#+ case Node_field_spec: +#+ lhs = get_lhs(tree, (Func_ptr *) NULL); +#+ return *lhs; +#+ +# case Node_NR: +# case Node_FNR: +# case Node_NF: +# case Node_FIELDWIDTHS: +# case Node_FS: +# case Node_RS: +# case Node_subscript: +# case Node_IGNORECASE: +# case Node_OFS: +#*************** +#*** 699,705 **** +# case Node_OFMT: +# case Node_CONVFMT: +# lhs = get_lhs(tree, (Func_ptr *) NULL); +#! return *lhs; +# +# case Node_var_array: +# fatal("attempt to use array `%s' in a scalar context", +#--- 702,710 ---- +# case Node_OFMT: +# case Node_CONVFMT: +# lhs = get_lhs(tree, (Func_ptr *) NULL); +#! r = dupnode(*lhs); +#! r->flags |= TEMP; +#! return r; +# +# case Node_var_array: +# fatal("attempt to use array `%s' in a scalar context", +# +{ print NR " " 10/NR } diff --git a/src/tool/awk/testdata/gawk/getnr2tb.in b/src/tool/awk/testdata/gawk/getnr2tb.in new file mode 100644 index 0000000..f985857 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tb.in @@ -0,0 +1,6 @@ +line 1 +line 2 +line 3 +line 4 +line 5 +line 6 diff --git a/src/tool/awk/testdata/gawk/getnr2tb.ok b/src/tool/awk/testdata/gawk/getnr2tb.ok new file mode 100644 index 0000000..7b40e8d --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tb.ok @@ -0,0 +1,6 @@ +1 10 +2 5 +3 3.33333 +4 2.5 +5 2 +6 1.66667 diff --git a/src/tool/awk/testdata/gawk/getnr2tm.awk b/src/tool/awk/testdata/gawk/getnr2tm.awk new file mode 100644 index 0000000..dfe377a --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tm.awk @@ -0,0 +1,75 @@ +#From dhw@gamgee.acad.emich.edu Sat Oct 31 22:54:07 1998 +#Return-Path: +#Received: from cssun.mathcs.emory.edu (cssun.mathcs.emory.edu [170.140.150.1]) +# by amx.netvision.net.il (8.9.0.Beta5/8.8.6) with ESMTP id HAA08891 +# for ; Sat, 31 Oct 1998 07:14:07 +0200 (IST) +#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id AAA14947 for ; Sat, 31 Oct 1998 00:14:32 -0500 (EST) +#Received: from gamgee.acad.emich.edu (gamgee.acad.emich.edu [164.76.102.76]) +# by mescaline.gnu.org (8.9.1a/8.9.1) with SMTP id AAA20645 +# for ; Sat, 31 Oct 1998 00:17:54 -0500 +#Received: by gamgee.acad.emich.edu (Smail3.1.29.1 #57) +# id m0zZUKY-000IDSC; Sat, 31 Oct 98 00:16 CST +#Message-Id: +#Date: Sat, 31 Oct 98 00:16 CST +#From: dhw@gamgee.acad.emich.edu (David H. West) +#To: bug-gnu-utils@gnu.org +#Subject: gawk 3.0.3 bug report +#Cc: arnold@gnu.org +#X-UIDL: 7474b825cff989adf38f13883d84fdd7 +#Status: RO +# +#gawk version: 3.03 +#System used: Linux, kernel 2.0.28, libc 5.4.33, AMD K5PR133 (i586 clone) +#Remark: There seems to be at least one bug shown by the demo below. +# There may also be a Dark Corner involving the value of NR in an +# END block, a topic on which the info file is silent. In gawk +# 3.0.3, NR often seems to have the least-surprise value in an +# END block, but sometimes it doesn't - see example below. +#Problem descr: the log below shows a case where: +# a) (this may be a red herring) the output of the gawk script +# is different depending on whether its input file is named on +# the command line or catted to stdin, without any use of the +# legitimate means which could produce this effect. +# b) NR is clearly getting clobbered; I have tried to simplify +# the 19-line script "awkerr1" below, but seemingly unrelated +# changes, like shortening constant strings which appear only in +# print statements, or removing unexecuted or irrelevant code, +# cause the clobbering to go away. Some previous (larger) +# versions of this code would clobber NR also when reading from +# stdin, but I thought you'd prefer a shorter example :-). +#Reproduce-By: using the gawk script "awkerr1", the contents of +# which appear in the transcript below as the output of the +# command "cat awkerr1". Comments following # were added +# to the transcript later as explanation. +#---------------------------------------------- Script started on Fri +#Oct 30 20:04:16 1998 chipmunk:/ram0# ls -l a1 awkerr1 -rw-r--r-- 1 +#root root 2 Oct 30 18:42 a1 -rwxr-xr-x 1 root root +#389 Oct 30 19:54 awkerr1 chipmunk:/ram0# cat a1 #a1 contains +#one printable char and a newline a chipmunk:/ram0# od -c xc a1 +#0000000 0a61 +# a \n +#0000002 chipmunk:/ram0# cat a1 | awkerr1 #no surprises here +#1 lines in 1 sec: 1 lines/sec; nlines=1 chipmunk:/ram0# awkerr1 a1 È +#lines in 1 sec: 1 lines/sec; nlines=1 #?! first char is an uppercase +#E-grave chipmunk:/ram0# awkerr1 a1 | od -N1 -xc 0000000 00c8 +# 310 \0 +#0000001 chipmunk:/ram0# cat awkerr1 #the apparent ^M's are not +#actually in the file +#!/usr/bin/awk -f +function process(w) { + if(w in ws) { + printf " : found\n"; lc[p " " w]++; rc[w " " n]++; } + } +BEGIN {IGNORECASE=1; + } +/^/ {if(NR % 10 ==0)print "processing line " NR; + process($1); nlines++; + } +END {p=w; w=n; n=""; + if(w)process(w); t=1; print NR " lines in " t " sec: " NR+0 " lines/sec; nlines=" nlines; + } +#chipmunk:/ram0# exit Script done on Fri Oct 30 20:07:31 1998 +#--------------------------------------------- +# +#-David West dhw@gamgee.acad.emich.edu +# diff --git a/src/tool/awk/testdata/gawk/getnr2tm.in b/src/tool/awk/testdata/gawk/getnr2tm.in new file mode 100644 index 0000000..7898192 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tm.in @@ -0,0 +1 @@ +a diff --git a/src/tool/awk/testdata/gawk/getnr2tm.ok b/src/tool/awk/testdata/gawk/getnr2tm.ok new file mode 100644 index 0000000..d63fca0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/getnr2tm.ok @@ -0,0 +1 @@ +1 lines in 1 sec: 1 lines/sec; nlines=1 diff --git a/src/tool/awk/testdata/gawk/gsubasgn.awk b/src/tool/awk/testdata/gawk/gsubasgn.awk new file mode 100644 index 0000000..11e4882 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubasgn.awk @@ -0,0 +1,5 @@ +# tests for assigning to a function within that function + +#1 - should be bad +function test1 (r) { gsub(r, "x", test1) } +BEGIN { test1("") } diff --git a/src/tool/awk/testdata/gawk/gsubasgn.ok b/src/tool/awk/testdata/gawk/gsubasgn.ok new file mode 100644 index 0000000..99be4d8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubasgn.ok @@ -0,0 +1 @@ +parse error at 6:1: global var "test1" can't also be a function \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/gsubtest.awk b/src/tool/awk/testdata/gawk/gsubtest.awk new file mode 100644 index 0000000..1d6fd1c --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtest.awk @@ -0,0 +1,9 @@ +BEGIN { + str = "abc"; print gsub("b+", "FOO", str), str + str = "abc"; print gsub("x*", "X", str), str + str = "abc"; print gsub("b*", "X", str), str + str = "abc"; print gsub("c", "X", str), str + str = "abc"; print gsub("c+", "X", str), str + str = "abc"; print gsub("x*$", "X", str), str + str = "abc"; print gsub("b|$", "X", str), str +} diff --git a/src/tool/awk/testdata/gawk/gsubtest.ok b/src/tool/awk/testdata/gawk/gsubtest.ok new file mode 100644 index 0000000..f909d0d --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtest.ok @@ -0,0 +1,7 @@ +1 aFOOc +4 XaXbXcX +3 XaXcX +1 abX +1 abX +1 abcX +2 aXcX diff --git a/src/tool/awk/testdata/gawk/gsubtst2.awk b/src/tool/awk/testdata/gawk/gsubtst2.awk new file mode 100644 index 0000000..fafbf96 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst2.awk @@ -0,0 +1,241 @@ +#From arnold Thu May 9 17:27:03 2002 +#Return-Path: +#Received: (from arnold@localhost) +# by skeeve.com (8.11.6/8.11.6) id g49ER3K27925 +# for arnold; Thu, 9 May 2002 17:27:03 +0300 +#Date: Thu, 9 May 2002 17:27:03 +0300 +#From: Aharon Robbins +#Message-Id: <200205091427.g49ER3K27925@skeeve.com> +#To: arnold@skeeve.com +#Subject: fixme +#X-SpamBouncer: 1.4 (10/07/01) +#X-SBRule: Pattern Match (Other Patterns) (Score: 4850) +#X-SBRule: Pattern Match (Spam Phone #) (Score: 0) +#X-SBClass: Blocked +#Status: O +# +#Path: ord-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!fu-berlin.de!uni-berlin.de!host213-120-137-48.in-addr.btopenworld.COM!not-for-mail +#From: laura@madonnaweb.com (laura fairhead) +#Newsgroups: comp.lang.awk +#Subject: bug in gawk3.1.0 regex code +#Date: Wed, 08 May 2002 23:31:40 GMT +#Organization: that'll be the daewooo :) +#Lines: 211 +#Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE> +#Reply-To: laura@madonnaweb.com +#NNTP-Posting-Host: host213-120-137-48.in-addr.btopenworld.com (213.120.137.48) +#X-Trace: fu-berlin.de 1020900891 18168286 213.120.137.48 (16 [53286]) +#X-Newsreader: Forte Free Agent 1.21/32.243 +#Xref: dfw-artgen comp.lang.awk:13059 +# +# +#I believe I've just found a bug in gawk3.1.0 implementation of +#extended regular expressions. It seems to be down to the alternation +#operator; when using an end anchor '$' as a subexpression in an +#alternation and the entire matched RE is a nul-string it fails +#to match the end of string, for example; +# +#gsub(/$|2/,"x") +#print +# +#input = 12345 +#expected output = 1x345x +#actual output = 1x345 +# +#The start anchor '^' always works as expected; +# +#gsub(/^|2/,"x") +#print +# +#input = 12345 +#expected output = x1x345 +#actual output = x1x345 +# +#This was with POSIX compliance enabled althought that doesn't +#effect the result. +# +#I checked on gawk3.0.6 and got exactly the same results however +#gawk2.15.6 gives the expected results. +# +#I'm about to post a bug report about this into gnu.utils.bug +#but I thought I'd post it here first in case anyone has +#any input/comments/whatever .... +# +#Complete test results were as follows; +# +#input 12345 +#output gsub(/regex/,"x",input) +# +#regex output +#(^) x12345 +#($) 12345x +#(^)|($) x12345x +#($)|(^) x12345x +#(2) 1x345 +#(^)|2 x1x345 +#2|(^) x1x345 +#($)|2 1x345 +#2|($) 1x345 +#(2)|(^) x1x345 +#(^)|(2) x1x345 +#(2)|($) 1x345 +#($)|(2) 1x345 +#.((2)|(^)) x345 +#.((^)|(2)) x345 +#.((2)|($)) x34x +#.(($)|(2)) x34x +#x{0}((2)|(^)) x1x345 +#x{0}((^)|(2)) x1x345 +#x{0}((2)|($)) 1x345 +#x{0}(($)|(2)) 1x345 +#x*((2)|(^)) x1x345 +#x*((^)|(2)) x1x345 +#x*((2)|($)) 1x345 +#x*(($)|(2)) 1x345 +# +#Here's the test program I used, a few of the cases use ERE {n[,[m]]} +#operators so that will have to be commented out or have a check +#added or something (should have put a conditional in I know... ;-) +# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +BEGIN{ + +TESTSTR="12345" + +print "input "TESTSTR +print "output gsub(/regex/,\"x\",input)" +print "" + +print "regex output" +$0=TESTSTR +gsub(/(^)/,"x") +print "(^) "$0 + +$0=TESTSTR +gsub(/($)/,"x") +print "($) "$0 + +$0=TESTSTR +gsub(/(^)|($)/,"x") +print "(^)|($) "$0 + +$0=TESTSTR +gsub(/($)|(^)/,"x") +print "($)|(^) "$0 + +$0=TESTSTR +gsub(/2/,"x") +print "(2) "$0 + +$0=TESTSTR +gsub(/(^)|2/,"x") +print "(^)|2 "$0 + +$0=TESTSTR +gsub(/2|(^)/,"x") +print "2|(^) "$0 + +$0=TESTSTR +gsub(/($)|2/,"x") +print "($)|2 "$0 + +$0=TESTSTR +gsub(/2|($)/,"x") +print "2|($) "$0 + +$0=TESTSTR +gsub(/(2)|(^)/,"x") +print "(2)|(^) "$0 + +$0=TESTSTR +gsub(/(^)|(2)/,"x") +print "(^)|(2) "$0 + +$0=TESTSTR +gsub(/(2)|($)/,"x") +print "(2)|($) "$0 + +$0=TESTSTR +gsub(/($)|(2)/,"x") +print "($)|(2) "$0 + +$0=TESTSTR +gsub(/.((2)|(^))/,"x") +print ".((2)|(^)) "$0 + +$0=TESTSTR +gsub(/.((^)|(2))/,"x") +print ".((^)|(2)) "$0 + +$0=TESTSTR +gsub(/.((2)|($))/,"x") +print ".((2)|($)) "$0 + +$0=TESTSTR +gsub(/.(($)|(2))/,"x") +print ".(($)|(2)) "$0 + +# $0=TESTSTR +# gsub(/x{0}((2)|(^))/,"x") +# print "x{0}((2)|(^)) "$0 +# +# $0=TESTSTR +# gsub(/x{0}((^)|(2))/,"x") +# print "x{0}((^)|(2)) "$0 +# +# $0=TESTSTR +# gsub(/x{0}((2)|($))/,"x") +# print "x{0}((2)|($)) "$0 +# +# $0=TESTSTR +# gsub(/x{0}(($)|(2))/,"x") +# print "x{0}(($)|(2)) "$0 + +$0=TESTSTR +gsub(/x*((2)|(^))/,"x") +print "x*((2)|(^)) "$0 + +$0=TESTSTR +gsub(/x*((^)|(2))/,"x") +print "x*((^)|(2)) "$0 + +$0=TESTSTR +gsub(/x*((2)|($))/,"x") +print "x*((2)|($)) "$0 + +$0=TESTSTR +gsub(/x*(($)|(2))/,"x") +print "x*(($)|(2)) "$0 + +# $0=TESTSTR +# gsub(/x{0}^/,"x") +# print "x{0}^ "$0 +# +# $0=TESTSTR +# gsub(/x{0}$/,"x") +# print "x{0}$ "$0 +# +# $0=TESTSTR +# gsub(/(x{0}^)|2/,"x") +# print "(x{0}^)|2 "$0 +# +# $0=TESTSTR +# gsub(/(x{0}$)|2/,"x") +# print "(x{0}$)|2 "$0 + + +} +# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +#byefrom +# +#-- +#laura fairhead # laura@madonnaweb.com http://lf.8k.com +# # if you are bored crack my sig. +#1F8B0808CABB793C0000666667002D8E410E83300C04EF91F2877D00CA138A7A +#EAA98F30C494480157B623C4EF1B508FDED1CEFA9152A23DE35D661593C5318E +#630C313CD701BE92E390563326EE17A3CA818F5266E4C2461547F1F5267659CA +#8EE2092F76C329ED02CA430C5373CC62FF94BAC6210B36D9F9BC4AB53378D978 +#80F2978A1A6E5D6F5133B67B6113178DC1059526698AFE5C17A5187E7D930492 diff --git a/src/tool/awk/testdata/gawk/gsubtst2.ok b/src/tool/awk/testdata/gawk/gsubtst2.ok new file mode 100644 index 0000000..a038528 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst2.ok @@ -0,0 +1,25 @@ +input 12345 +output gsub(/regex/,"x",input) + +regex output +(^) x12345 +($) 12345x +(^)|($) x12345x +($)|(^) x12345x +(2) 1x345 +(^)|2 x1x345 +2|(^) x1x345 +($)|2 1x345x +2|($) 1x345x +(2)|(^) x1x345 +(^)|(2) x1x345 +(2)|($) 1x345x +($)|(2) 1x345x +.((2)|(^)) x345 +.((^)|(2)) x345 +.((2)|($)) x34x +.(($)|(2)) x34x +x*((2)|(^)) x1x345 +x*((^)|(2)) x1x345 +x*((2)|($)) 1x345x +x*(($)|(2)) 1x345x diff --git a/src/tool/awk/testdata/gawk/gsubtst3.awk b/src/tool/awk/testdata/gawk/gsubtst3.awk new file mode 100644 index 0000000..6c51896 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst3.awk @@ -0,0 +1,291 @@ +# From laura_fairhead@talk21.com Fri May 10 11:24:41 2002 +# Return-Path: +# Received: from localhost (aahz [127.0.0.1]) +# by skeeve.com (8.11.2/8.11.2) with ESMTP id g4A8OdU01822 +# for ; Fri, 10 May 2002 11:24:40 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.7.4) +# for arnold@localhost (single-drop); Fri, 10 May 2002 11:24:40 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Fri May 10 11:30:42 2002) +# X-From_: laura_fairhead@talk21.com Fri May 10 05:39:57 2002 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id g4A2dpw26380 for ; +# Fri, 10 May 2002 05:39:52 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g4A2dxl10851 +# for ; Fri, 10 May 2002 05:39:59 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.6/8.11.6) with ESMTP id g4A2dwN11097 +# for ; Thu, 9 May 2002 22:39:58 -0400 +# Received: from [194.73.242.6] (helo=wmpmta04-app.mail-store.com) +# by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian)) +# id 1760K4-0001QX-00 +# for ; Thu, 09 May 2002 22:39:56 -0400 +# Received: from wmpmtavirtual ([10.216.84.15]) +# by wmpmta04-app.mail-store.com +# (InterMail vM.5.01.02.00 201-253-122-103-101-20001108) with SMTP +# id <20020510023921.EEW24107.wmpmta04-app.mail-store.com@wmpmtavirtual> +# for ; Fri, 10 May 2002 03:39:21 +0100 +# Received: from 213.1.102.243 by t21web05-lrs ([10.216.84.15]); Fri, 10 May 02 03:38:42 GMT+01:00 +# X-Mailer: talk21 v1.24 - http://talk21.btopenworld.com +# From: laura_fairhead@talk21.com +# To: bug-gawk@gnu.org +# X-Talk21Ref: none +# Date: Fri, 10 May 2002 03:38:42 GMT+01:00 +# Subject: bug in gawk 3.1.0 regex code +# Mime-Version: 1.0 +# Content-type: multipart/mixed; boundary="--GgOuLpDpIyE--1020998322088--" +# Message-Id: <20020510023921.EEW24107.wmpmta04-app.mail-store.com@wmpmtavirtual> +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# Multipart Message Boundary - attachment/bodypart follows: +# +# +# ----GgOuLpDpIyE--1020998322088-- +# Content-Type: text/plain +# Content-Transfer-Encoding: 7bit +# +# +# I believe I've just found a bug in gawk3.1.0 implementation of +# extended regular expressions. It seems to be down to the alternation +# operator; when using an end anchor '$' as a subexpression in an +# alternation and the entire matched RE is a nul-string it fails +# to match the end of string, for example; +# +# gsub(/$|2/,"x") +# print +# +# input = 12345 +# expected output = 1x345x +# actual output = 1x345 +# +# The start anchor '^' always works as expected; +# +# gsub(/^|2/,"x") +# print +# +# input = 12345 +# expected output = x1x345 +# actual output = x1x345 +# +# This was with POSIX compliance enabled althought that doesn't +# effect the result. +# +# I checked on gawk3.0.6 and got exactly the same results however +# gawk2.15.6 gives the expected results. +# +# All the follow platforms produced the same results; +# +# gawk3.0.6 / Win98 / i386 +# gawk3.1.0 / Win98 / i386 +# gawk3.0.5 / Linux2.2.16 / i386 +# +# Complete test results were as follows; +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# regex input expected actual bug? +# ------------------------------------------------------------- +# (^) 12345 x12345 x12345 +# ($) 12345 12345x 12345x +# (^)|($) 12345 x12345x x12345x +# ($)|(^) 12345 x12345x x12345x +# 2 12345 1x345 1x345 +# (^)|2 12345 x1x345 x1x345 +# 2|(^) 12345 x1x345 x1x345 +# ($)|2 12345 1x345x 1x345 **BUG** +# 2|($) 12345 1x345x 1x345 **BUG** +# (2)|(^) 12345 x1x345 x1x345 +# (^)|(2) 12345 x1x345 x1x345 +# (2)|($) 12345 1x345x 1x345 **BUG** +# ($)|(2) 12345 1x345x 1x345 **BUG** +# ((2)|(^)). 12345 xx45 xx45 +# ((^)|(2)). 12345 xx45 xx45 +# .((2)|($)) 12345 x34x x34x +# .(($)|(2)) 12345 x34x x34x +# (^)|6 12345 x12345 x12345 +# 6|(^) 12345 x12345 x12345 +# ($)|6 12345 12345x 12345x +# 6|($) 12345 12345x 12345x +# 2|6|(^) 12345 x1x345 x1x345 +# 2|(^)|6 12345 x1x345 x1x345 +# 6|2|(^) 12345 x1x345 x1x345 +# 6|(^)|2 12345 x1x345 x1x345 +# (^)|6|2 12345 x1x345 x1x345 +# (^)|2|6 12345 x1x345 x1x345 +# 2|6|($) 12345 1x345x 1x345 **BUG** +# 2|($)|6 12345 1x345x 1x345 **BUG** +# 6|2|($) 12345 1x345x 1x345 **BUG** +# 6|($)|2 12345 1x345x 1x345 **BUG** +# ($)|6|2 12345 1x345x 1x345 **BUG** +# ($)|2|6 12345 1x345x 1x345 **BUG** +# 2|4|(^) 12345 x1x3x5 x1x3x5 +# 2|(^)|4 12345 x1x3x5 x1x3x5 +# 4|2|(^) 12345 x1x3x5 x1x3x5 +# 4|(^)|2 12345 x1x3x5 x1x3x5 +# (^)|4|2 12345 x1x3x5 x1x3x5 +# (^)|2|4 12345 x1x3x5 x1x3x5 +# 2|4|($) 12345 1x3x5x 1x3x5 **BUG** +# 2|($)|4 12345 1x3x5x 1x3x5 **BUG** +# 4|2|($) 12345 1x3x5x 1x3x5 **BUG** +# 4|($)|2 12345 1x3x5x 1x3x5 **BUG** +# ($)|4|2 12345 1x3x5x 1x3x5 **BUG** +# ($)|2|4 12345 1x3x5x 1x3x5 **BUG** +# x{0}((2)|(^)) 12345 x1x345 x1x345 +# x{0}((^)|(2)) 12345 x1x345 x1x345 +# x{0}((2)|($)) 12345 1x345x 1x345 **BUG** +# x{0}(($)|(2)) 12345 1x345x 1x345 **BUG** +# x*((2)|(^)) 12345 x1x345 x1x345 +# x*((^)|(2)) 12345 x1x345 x1x345 +# x*((2)|($)) 12345 1x345x 1x345 **BUG** +# x*(($)|(2)) 12345 1x345x 1x345 **BUG** +# x{0}^ 12345 x12345 x12345 +# x{0}$ 12345 12345x 12345x +# (x{0}^)|2 12345 x1x345 x1x345 +# (x{0}$)|2 12345 1x345x 1x345 **BUG** +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# +# Here's the test program I used, a few of the cases use ERE {n[,[m]]} +# operators so need '-W posix', (although the same results minus +# those tests came out without POSIX compliance enabled) +# +# [ Invocation was 'gawk -W posix -f tregex.awk' ] +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# tregex.awk +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +BEGIN{ +print _=sprintf("%-20s%-10s%-10s%-10s%-10s\n","regex","input","expected","actual","bug?") +OFS="-" +$(length(_)+1)="" +print $0 + +#while(getline +# +# +# byefrom +# +# Laura Fairhead +# +# +# +# +# -------------------- +# talk21 your FREE portable and private address on the net at http://www.talk21.com +# ----GgOuLpDpIyE--1020998322088-- +# Content-Type: : application/zip;; Name="COPY.ZIP" +# Content-Transfer-Encoding: base64 +# Content-Disposition: attachment; filename="COPY.ZIP" +# +# UEsDBBQAAAAIALoaqiyj8d/bjwMAAKsaAAADAAAARklMrVjfa+JAEH4P5H8ISwrRU9EYfbheKBR6 +# xRcLvevbYbFtzsqJlBrpQr3722+zMWZ31pk1MaG0Q/m+nR87O9kvruM6/5p4XOc9WSTc05/l +# +m2bSivhb8lzmrx43vw53c5X2f+etourHOc63XMe1wlmLQ8+g3AYjaTFD2ZplY9g+xRbWly3 +# NPastYMrQN9cs4DvHYz+dHbomY8SOTctGDlcQfXND1Uz6cK3EXcVdpY37ltSuB55u339cNtu +# F76NPTudHYR0zS2RZ/sd1maHVLdYI/cp31b2PvFW72jkvIi2tLTI94nXY/eCfeZK8Ap7GO1b +# u7QAO8+8FjsLfFx7OowtfW6dLYRv22wZ031uYYc7M/aK5xvEfjp7vDPnQxW2OZuqndDxWeyw +# dt6y5rXPt5xrqG8bW9a8tm8ZN1q1UyYTXvNT2HjN7VWLLL3GR7pl9nlUkx1Z+5xm2/qcYsu4 +# z2KHtfOWNad6jR92jGN9jvm2sSNbn1vYlj4n2TLus9h4zW1s/tn/e3iHV55MOXumvUarsvVX +# +OknNGfrr/AK7DbMulLkbZh1VTa8uFSLHF5cqlVt5tW9eWRsH2VbVY10rp+TCu9Q6Rxj2/Ju +# SJE2KG5TqW57848/jS15fXM7mX66ztv7cp16j/FGGr8DdtEN+5uL7sD49WvNOkwGIv5KaS3+ +# FsJamLmyFkYmrFnLde6+/4hZl7mOH6yS9SJ9DR5bXwatmLHCrd/PivTxulwlwSJJV8t14n1j +# abIRCfde5mm2iojx/ib2B5eTaeyHl3cPP2N/KNbsx5Op6yw226fg/qbDeIbNc/DoHAR6Mu2I +# dTp+X/zEsTCvGPvK9j0govsrfxqqdJN9cKhMY0vilwdPOebmRwqIy4+x+Tni+Hrc/PKAAnGZ +# 7pXH2fyaYK6X4+B9CcPBt/RRt9z8FoDhoOpH/QJ9j+KAkkf9As2O4oA6N/xy6RWo8OMoqLYN +# 1DDipqo+joIqEGtQqDWJRibXK9oO6igMB1Uu2XeKZwwHlSuO0zue6idVGVE4VQPheeiVIc8F +# sV6Bg6oRx+knkup3Kl8VR+Vb5qGru2N14SNTx2E4qNhwnH1/+chUYRROvfvjeejK6khdeLm/ +# +HoFDqolHGfdX17sG5WviqPyLXBQ1WB9D/ULjSvHH9ZXUJOgOKA+UL9AZ1A4dThTftXxTOWh +# qgRs7kI9gF4gwM0fnVfgjo/F19A96T9QSwECFAAUAAAACAC6Gqoso/Hf248DAACrGgAAAwAA +# AAAAAAABACAAAAAAAAAARklMUEsFBgAAAAABAAEAMQAAALADAAAAAA== +# ----GgOuLpDpIyE--1020998322088---- +# +# +# diff --git a/src/tool/awk/testdata/gawk/gsubtst3.in b/src/tool/awk/testdata/gawk/gsubtst3.in new file mode 100644 index 0000000..2dcf75a --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst3.in @@ -0,0 +1,57 @@ +(^) 12345 x12345 +($) 12345 12345x +(^)|($) 12345 x12345x +($)|(^) 12345 x12345x +2 12345 1x345 +(^)|2 12345 x1x345 +2|(^) 12345 x1x345 +($)|2 12345 1x345x +2|($) 12345 1x345x +(2)|(^) 12345 x1x345 +(^)|(2) 12345 x1x345 +(2)|($) 12345 1x345x +($)|(2) 12345 1x345x +((2)|(^)). 12345 xx45 +((^)|(2)). 12345 xx45 +.((2)|($)) 12345 x34x +.(($)|(2)) 12345 x34x +(^)|6 12345 x12345 +6|(^) 12345 x12345 +($)|6 12345 12345x +6|($) 12345 12345x +2|6|(^) 12345 x1x345 +2|(^)|6 12345 x1x345 +6|2|(^) 12345 x1x345 +6|(^)|2 12345 x1x345 +(^)|6|2 12345 x1x345 +(^)|2|6 12345 x1x345 +2|6|($) 12345 1x345x +2|($)|6 12345 1x345x +6|2|($) 12345 1x345x +6|($)|2 12345 1x345x +($)|6|2 12345 1x345x +($)|2|6 12345 1x345x +2|4|(^) 12345 x1x3x5 +2|(^)|4 12345 x1x3x5 +4|2|(^) 12345 x1x3x5 +4|(^)|2 12345 x1x3x5 +(^)|4|2 12345 x1x3x5 +(^)|2|4 12345 x1x3x5 +2|4|($) 12345 1x3x5x +2|($)|4 12345 1x3x5x +4|2|($) 12345 1x3x5x +4|($)|2 12345 1x3x5x +($)|4|2 12345 1x3x5x +($)|2|4 12345 1x3x5x +x{0}((2)|(^)) 12345 x1x345 +x{0}((^)|(2)) 12345 x1x345 +x{0}((2)|($)) 12345 1x345x +x{0}(($)|(2)) 12345 1x345x +x*((2)|(^)) 12345 x1x345 +x*((^)|(2)) 12345 x1x345 +x*((2)|($)) 12345 1x345x +x*(($)|(2)) 12345 1x345x +x{0}^ 12345 x12345 +x{0}$ 12345 12345x +(x{0}^)|2 12345 x1x345 +(x{0}$)|2 12345 1x345x diff --git a/src/tool/awk/testdata/gawk/gsubtst3.ok b/src/tool/awk/testdata/gawk/gsubtst3.ok new file mode 100644 index 0000000..190a20a --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst3.ok @@ -0,0 +1,60 @@ +regex input expected actual bug? + +------------------------------------------------------------- +(^) 12345 x12345 x12345 +($) 12345 12345x 12345x +(^)|($) 12345 x12345x x12345x +($)|(^) 12345 x12345x x12345x +2 12345 1x345 1x345 +(^)|2 12345 x1x345 x1x345 +2|(^) 12345 x1x345 x1x345 +($)|2 12345 1x345x 1x345x +2|($) 12345 1x345x 1x345x +(2)|(^) 12345 x1x345 x1x345 +(^)|(2) 12345 x1x345 x1x345 +(2)|($) 12345 1x345x 1x345x +($)|(2) 12345 1x345x 1x345x +((2)|(^)). 12345 xx45 xx45 +((^)|(2)). 12345 xx45 xx45 +.((2)|($)) 12345 x34x x34x +.(($)|(2)) 12345 x34x x34x +(^)|6 12345 x12345 x12345 +6|(^) 12345 x12345 x12345 +($)|6 12345 12345x 12345x +6|($) 12345 12345x 12345x +2|6|(^) 12345 x1x345 x1x345 +2|(^)|6 12345 x1x345 x1x345 +6|2|(^) 12345 x1x345 x1x345 +6|(^)|2 12345 x1x345 x1x345 +(^)|6|2 12345 x1x345 x1x345 +(^)|2|6 12345 x1x345 x1x345 +2|6|($) 12345 1x345x 1x345x +2|($)|6 12345 1x345x 1x345x +6|2|($) 12345 1x345x 1x345x +6|($)|2 12345 1x345x 1x345x +($)|6|2 12345 1x345x 1x345x +($)|2|6 12345 1x345x 1x345x +2|4|(^) 12345 x1x3x5 x1x3x5 +2|(^)|4 12345 x1x3x5 x1x3x5 +4|2|(^) 12345 x1x3x5 x1x3x5 +4|(^)|2 12345 x1x3x5 x1x3x5 +(^)|4|2 12345 x1x3x5 x1x3x5 +(^)|2|4 12345 x1x3x5 x1x3x5 +2|4|($) 12345 1x3x5x 1x3x5x +2|($)|4 12345 1x3x5x 1x3x5x +4|2|($) 12345 1x3x5x 1x3x5x +4|($)|2 12345 1x3x5x 1x3x5x +($)|4|2 12345 1x3x5x 1x3x5x +($)|2|4 12345 1x3x5x 1x3x5x +x{0}((2)|(^)) 12345 x1x345 x1x345 +x{0}((^)|(2)) 12345 x1x345 x1x345 +x{0}((2)|($)) 12345 1x345x 1x345x +x{0}(($)|(2)) 12345 1x345x 1x345x +x*((2)|(^)) 12345 x1x345 x1x345 +x*((^)|(2)) 12345 x1x345 x1x345 +x*((2)|($)) 12345 1x345x 1x345x +x*(($)|(2)) 12345 1x345x 1x345x +x{0}^ 12345 x12345 x12345 +x{0}$ 12345 12345x 12345x +(x{0}^)|2 12345 x1x345 x1x345 +(x{0}$)|2 12345 1x345x 1x345x diff --git a/src/tool/awk/testdata/gawk/gsubtst4.awk b/src/tool/awk/testdata/gawk/gsubtst4.awk new file mode 100644 index 0000000..48b8413 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst4.awk @@ -0,0 +1,242 @@ +# From arnold Thu May 9 17:27:03 2002 +# Return-Path: +# Received: (from arnold@localhost) +# by skeeve.com (8.11.6/8.11.6) id g49ER3K27925 +# for arnold; Thu, 9 May 2002 17:27:03 +0300 +# Date: Thu, 9 May 2002 17:27:03 +0300 +# From: Aharon Robbins +# Message-Id: <200205091427.g49ER3K27925@skeeve.com> +# To: arnold@skeeve.com +# Subject: fixme +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBRule: Pattern Match (Other Patterns) (Score: 4850) +# X-SBRule: Pattern Match (Spam Phone #) (Score: 0) +# X-SBClass: Blocked +# Status: RO +# +# Path: ord-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!fu-berlin.de!uni-berlin.de!host213-120-137-48.in-addr.btopenworld.COM!not-for-mail +# From: laura@madonnaweb.com (laura fairhead) +# Newsgroups: comp.lang.awk +# Subject: bug in gawk3.1.0 regex code +# Date: Wed, 08 May 2002 23:31:40 GMT +# Organization: that'll be the daewooo :) +# Lines: 211 +# Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE> +# Reply-To: laura@madonnaweb.com +# NNTP-Posting-Host: host213-120-137-48.in-addr.btopenworld.com (213.120.137.48) +# X-Trace: fu-berlin.de 1020900891 18168286 213.120.137.48 (16 [53286]) +# X-Newsreader: Forte Free Agent 1.21/32.243 +# Xref: dfw-artgen comp.lang.awk:13059 +# +# +# I believe I've just found a bug in gawk3.1.0 implementation of +# extended regular expressions. It seems to be down to the alternation +# operator; when using an end anchor '$' as a subexpression in an +# alternation and the entire matched RE is a nul-string it fails +# to match the end of string, for example; +# +# gsub(/$|2/,"x") +# print +# +# input = 12345 +# expected output = 1x345x +# actual output = 1x345 +# +# The start anchor '^' always works as expected; +# +# gsub(/^|2/,"x") +# print +# +# input = 12345 +# expected output = x1x345 +# actual output = x1x345 +# +# This was with POSIX compliance enabled althought that doesn't +# effect the result. +# +# I checked on gawk3.0.6 and got exactly the same results however +# gawk2.15.6 gives the expected results. +# +# I'm about to post a bug report about this into gnu.utils.bug +# but I thought I'd post it here first in case anyone has +# any input/comments/whatever .... +# +# Complete test results were as follows; +# +# input 12345 +# output gsub(/regex/,"x",input) +# +# regex output +# (^) x12345 +# ($) 12345x +# (^)|($) x12345x +# ($)|(^) x12345x +# (2) 1x345 +# (^)|2 x1x345 +# 2|(^) x1x345 +# ($)|2 1x345 +# 2|($) 1x345 +# (2)|(^) x1x345 +# (^)|(2) x1x345 +# (2)|($) 1x345 +# ($)|(2) 1x345 +# .((2)|(^)) x345 +# .((^)|(2)) x345 +# .((2)|($)) x34x +# .(($)|(2)) x34x +# x{0}((2)|(^)) x1x345 +# x{0}((^)|(2)) x1x345 +# x{0}((2)|($)) 1x345 +# x{0}(($)|(2)) 1x345 +# x*((2)|(^)) x1x345 +# x*((^)|(2)) x1x345 +# x*((2)|($)) 1x345 +# x*(($)|(2)) 1x345 +# +# Here's the test program I used, a few of the cases use ERE {n[,[m]]} +# operators so that will have to be commented out or have a check +# added or something (should have put a conditional in I know... ;-) +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +BEGIN{ + +TESTSTR="12345" + +print "input "TESTSTR +print "output gsub(/regex/,\"x\",input)" +print "" + +print "regex output" +$0=TESTSTR +gsub(/(^)/,"x") +print "(^) "$0 + +$0=TESTSTR +gsub(/($)/,"x") +print "($) "$0 + +$0=TESTSTR +gsub(/(^)|($)/,"x") +print "(^)|($) "$0 + +$0=TESTSTR +gsub(/($)|(^)/,"x") +print "($)|(^) "$0 + +$0=TESTSTR +gsub(/2/,"x") +print "(2) "$0 + +$0=TESTSTR +gsub(/(^)|2/,"x") +print "(^)|2 "$0 + +$0=TESTSTR +gsub(/2|(^)/,"x") +print "2|(^) "$0 + +$0=TESTSTR +gsub(/($)|2/,"x") +print "($)|2 "$0 + +$0=TESTSTR +gsub(/2|($)/,"x") +print "2|($) "$0 + +$0=TESTSTR +gsub(/(2)|(^)/,"x") +print "(2)|(^) "$0 + +$0=TESTSTR +gsub(/(^)|(2)/,"x") +print "(^)|(2) "$0 + +$0=TESTSTR +gsub(/(2)|($)/,"x") +print "(2)|($) "$0 + +$0=TESTSTR +gsub(/($)|(2)/,"x") +print "($)|(2) "$0 + +$0=TESTSTR +gsub(/.((2)|(^))/,"x") +print ".((2)|(^)) "$0 + +$0=TESTSTR +gsub(/.((^)|(2))/,"x") +print ".((^)|(2)) "$0 + +$0=TESTSTR +gsub(/.((2)|($))/,"x") +print ".((2)|($)) "$0 + +$0=TESTSTR +gsub(/.(($)|(2))/,"x") +print ".(($)|(2)) "$0 + +$0=TESTSTR +gsub(/x{0}((2)|(^))/,"x") +print "x{0}((2)|(^)) "$0 + +$0=TESTSTR +gsub(/x{0}((^)|(2))/,"x") +print "x{0}((^)|(2)) "$0 + +$0=TESTSTR +gsub(/x{0}((2)|($))/,"x") +print "x{0}((2)|($)) "$0 + +$0=TESTSTR +gsub(/x{0}(($)|(2))/,"x") +print "x{0}(($)|(2)) "$0 + +$0=TESTSTR +gsub(/x*((2)|(^))/,"x") +print "x*((2)|(^)) "$0 + +$0=TESTSTR +gsub(/x*((^)|(2))/,"x") +print "x*((^)|(2)) "$0 + +$0=TESTSTR +gsub(/x*((2)|($))/,"x") +print "x*((2)|($)) "$0 + +$0=TESTSTR +gsub(/x*(($)|(2))/,"x") +print "x*(($)|(2)) "$0 + +$0=TESTSTR +gsub(/x{0}^/,"x") +print "x{0}^ "$0 + +$0=TESTSTR +gsub(/x{0}$/,"x") +print "x{0}$ "$0 + +$0=TESTSTR +gsub(/(x{0}^)|2/,"x") +print "(x{0}^)|2 "$0 + +$0=TESTSTR +gsub(/(x{0}$)|2/,"x") +print "(x{0}$)|2 "$0 + + +} +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# byefrom +# +# -- +# laura fairhead # laura@madonnaweb.com http://lf.8k.com +# # if you are bored crack my sig. +# 1F8B0808CABB793C0000666667002D8E410E83300C04EF91F2877D00CA138A7A +# EAA98F30C494480157B623C4EF1B508FDED1CEFA9152A23DE35D661593C5318E +# 630C313CD701BE92E390563326EE17A3CA818F5266E4C2461547F1F5267659CA +# 8EE2092F76C329ED02CA430C5373CC62FF94BAC6210B36D9F9BC4AB53378D978 +# 80F2978A1A6E5D6F5133B67B6113178DC1059526698AFE5C17A5187E7D930492 +# diff --git a/src/tool/awk/testdata/gawk/gsubtst4.ok b/src/tool/awk/testdata/gawk/gsubtst4.ok new file mode 100644 index 0000000..71bf8dc --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst4.ok @@ -0,0 +1,33 @@ +input 12345 +output gsub(/regex/,"x",input) + +regex output +(^) x12345 +($) 12345x +(^)|($) x12345x +($)|(^) x12345x +(2) 1x345 +(^)|2 x1x345 +2|(^) x1x345 +($)|2 1x345x +2|($) 1x345x +(2)|(^) x1x345 +(^)|(2) x1x345 +(2)|($) 1x345x +($)|(2) 1x345x +.((2)|(^)) x345 +.((^)|(2)) x345 +.((2)|($)) x34x +.(($)|(2)) x34x +x{0}((2)|(^)) x1x345 +x{0}((^)|(2)) x1x345 +x{0}((2)|($)) 1x345x +x{0}(($)|(2)) 1x345x +x*((2)|(^)) x1x345 +x*((^)|(2)) x1x345 +x*((2)|($)) 1x345x +x*(($)|(2)) 1x345x +x{0}^ x12345 +x{0}$ 12345x +(x{0}^)|2 x1x345 +(x{0}$)|2 1x345x diff --git a/src/tool/awk/testdata/gawk/gsubtst5.awk b/src/tool/awk/testdata/gawk/gsubtst5.awk new file mode 100644 index 0000000..4bef854 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst5.awk @@ -0,0 +1,97 @@ +# From jose@monkey.org Thu Jun 5 11:48:35 2003 +# Return-Path: +# Received: from localhost (skeeve [127.0.0.1]) +# by skeeve.com (8.12.5/8.12.5) with ESMTP id h558eVvA012655 +# for ; Thu, 5 Jun 2003 11:48:35 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Thu, 05 Jun 2003 11:48:35 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Jun 5 11:47:59 2003) +# X-From_: jose@monkey.org Thu Jun 5 07:14:45 2003 +# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id h554EdY08108 for ; +# Thu, 5 Jun 2003 07:14:41 +0300 (EET DST) +# (rfc931-sender: smtp.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h554G3To008304 +# for ; Thu, 5 Jun 2003 07:16:05 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.7/8.11.6) with ESMTP id h554Ean08172 +# for ; Thu, 5 Jun 2003 00:14:36 -0400 +# Received: from monty-python.gnu.org ([199.232.76.173]) +# by fencepost.gnu.org with esmtp (Exim 4.20) +# id 19Nm96-0001xE-1i +# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:36 -0400 +# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20) +# id 19Nm8x-0005ge-Dz +# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:28 -0400 +# Received: from naughty.monkey.org ([66.93.9.164]) +# by monty-python.gnu.org with esmtp (Exim 4.20) +# id 19Nm8w-0005VM-Ko +# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:26 -0400 +# Received: by naughty.monkey.org (Postfix, from userid 1203) +# id C15511BA97B; Thu, 5 Jun 2003 00:14:19 -0400 (EDT) +# Received: from localhost (localhost [127.0.0.1]) +# by naughty.monkey.org (Postfix) with ESMTP +# id BF9821BA969; Thu, 5 Jun 2003 00:14:19 -0400 (EDT) +# Date: Thu, 5 Jun 2003 00:14:19 -0400 (EDT) +# From: Jose Nazario +# To: bug-gnu-utils@prep.ai.mit.edu, arnold@gnu.ai.mit.edu, +# netbsd-bugs@netbsd.org +# Subject: bug in gawk/gsub() (not present in nawk) +# Message-ID: +# MIME-Version: 1.0 +# Content-Type: TEXT/PLAIN; charset=US-ASCII +# X-Spam-Status: No, hits=-1.2 required=5.0 +# tests=SPAM_PHRASE_00_01,USER_AGENT_PINE +# version=2.41 +# X-Spam-Level: +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: R +# +# while playing with some tools in data massaging, i had to migrate from an +# openbsd/nawk system to a netbsd/gawk system. i found the folllowing +# behavior, which seems to be a bug. +# +# the following gsub() pattern has a strange effect under gawk which is not +# visible in nawk (at least as compiled on openbsd). the intention is to +# take a string like "This Is a Title: My Title?" and turn it into a +# normalized string: "ThisIsaTitleMyTitle". to do this, i wrote the +# following gross gsub line in an awk script: +# +# gsub(/[\ \"-\/\\:;\[\]\@\?\.\,\$]/, "", $2) +# print $2 +# +# in gawk, as found in netbsd-macppc/1.5.2, this will drop the first letter +# of every word. the resulting string will be "hissitleyitle", while in nawk +# as built on openbsd-3.3 this will get it correct. +# +# any insights? the inconsistency with this relatively naive pattern seems a +# bit odd. (i would up installing nawk built from openbsd sources.) +# +# thanks. sorry i didn't send a better bug report, netbsd folks, i'm not +# much of a netbsd user, and i dont have send-pr set up. yes, this is a +# slightly older version of netbsd and gawk: +# +# $ uname -a +# NetBSD entropy 1.5.2 NetBSD 1.5.2 (GENERIC) #0: Sun Feb 10 02:00:04 EST +# 2002 jose@entropy:/usr/src/sys/arch/macppc/compile/GENERIC macppc +# $ awk --version +# GNU Awk 3.0.3 +# Copyright (C) 1989, 1991-1997 Free Software Foundation. +# +# +# +# thanks. +# +# ___________________________ +# jose nazario, ph.d. jose@monkey.org +# http://monkey.org/~jose/ +# +# +{ + gsub(/[\ \"-\/\\:;\[\]\@\?\.\,\$]/, "") + print +} diff --git a/src/tool/awk/testdata/gawk/gsubtst5.in b/src/tool/awk/testdata/gawk/gsubtst5.in new file mode 100644 index 0000000..5d1f1a9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst5.in @@ -0,0 +1 @@ +This Is a Title: My Title? diff --git a/src/tool/awk/testdata/gawk/gsubtst5.ok b/src/tool/awk/testdata/gawk/gsubtst5.ok new file mode 100644 index 0000000..b038c8a --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst5.ok @@ -0,0 +1 @@ +ThisIsaTitleMyTitle diff --git a/src/tool/awk/testdata/gawk/gsubtst6.awk b/src/tool/awk/testdata/gawk/gsubtst6.awk new file mode 100644 index 0000000..2b1df51 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst6.awk @@ -0,0 +1,24 @@ +# From: "T. X. G." +# Subject: Bug in regular expression \B using DFA +# Date: Wed, 16 Jul 2008 05:23:09 -0700 (PDT) +# To: bug-gawk@gnu.org +# +# ~ gawk --version +# GNU Awk 3.1.6 +# Copyright (C) 1989, 1991-2007 Free Software Foundation. +# +# ...... +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~ LC_ALL=C gawk 'BEGIN{x="abcd";gsub(/\B/,":",x);print x}' +# a:b:cd +# +# ~ LC_ALL=en_US.UTF-8 gawk 'BEGIN{x="abcd";gsub(/\B/,":",x);print x}' +# a:b:c:d +# +# ~ GAWK_NO_DFA=1 gawk 'BEGIN{x="abcd";gsub(/\B/,":",x);print x}' +# a:b:c:d + +BEGIN { x = "abcd"; gsub(/\B/,":",x); print x } diff --git a/src/tool/awk/testdata/gawk/gsubtst6.ok b/src/tool/awk/testdata/gawk/gsubtst6.ok new file mode 100644 index 0000000..5b6bb79 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst6.ok @@ -0,0 +1 @@ +a:b:c:d diff --git a/src/tool/awk/testdata/gawk/gsubtst7.awk b/src/tool/awk/testdata/gawk/gsubtst7.awk new file mode 100644 index 0000000..e649f46 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst7.awk @@ -0,0 +1,92 @@ +# From bug-gawk-bounces+arnold=skeeve.com@gnu.org Tue Jul 12 08:18:24 2011 +# Return-Path: +# Received: from localhost (localhost [127.0.0.1]) +# by skeeve.com (8.14.3/8.14.3) with ESMTP id p6C5HArm002260 +# for ; Tue, 12 Jul 2011 08:18:23 +0300 +# X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sls-af11p1 +# X-Spam-Level: +# X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DNS_FROM_OPENWHOIS, +# RCVD_IN_DNSWL_MED autolearn=ham version=3.2.5 +# X-Envelope-From: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Received: from server1.f7.net [66.148.120.132] +# by localhost with IMAP (fetchmail-6.3.11) +# for (single-drop); Tue, 12 Jul 2011 08:18:23 +0300 (IDT) +# Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) +# by freefriends.org (8.14.4/8.14.4) with ESMTP id p6BIYi4t032040; +# Mon, 11 Jul 2011 14:34:48 -0400 +# Received: from localhost ([::1]:38787 helo=lists.gnu.org) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) +# id 1QgLJb-0004tM-Eg +# for arnold@skeeve.com; Mon, 11 Jul 2011 14:34:43 -0400 +# Received: from eggs.gnu.org ([140.186.70.92]:54022) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) id 1QgD0R-0004Vi-HZ +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:24 -0400 +# Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) +# (envelope-from ) id 1QgD0Q-0000SE-8u +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:23 -0400 +# Received: from moat.camk.edu.pl ([148.81.175.50]:34696) +# by eggs.gnu.org with esmtp (Exim 4.71) +# (envelope-from ) id 1QgD0P-0000Px-V3 +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:22 -0400 +# Received: from localhost (localhost.localdomain [127.0.0.1]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 72C1D5F004C +# for ; Mon, 11 Jul 2011 11:42:13 +0200 (CEST) +# X-Virus-Scanned: amavisd-new at camk.edu.pl +# Received: from moat.camk.edu.pl ([127.0.0.1]) +# by localhost (liam.camk.edu.pl [127.0.0.1]) (amavisd-new, port 10024) +# with LMTP id oh+-Yw+zHhK6 for ; +# Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: from gatekeeper.camk.edu.pl (gatekeeper.camk.edu.pl [192.168.1.23]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 89AA55F0046 +# for ; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: by gatekeeper.camk.edu.pl (Postfix, from userid 1293) +# id 796C8809FB; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Date: Mon, 11 Jul 2011 11:42:07 +0200 +# From: Kacper Kornet +# To: bug-gawk@gnu.org +# Message-ID: <20110711094207.GA2616@camk.edu.pl> +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=iso-8859-2 +# Content-Disposition: inline +# User-Agent: Mutt/1.5.20 (2009-06-14) +# X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) +# X-Received-From: 148.81.175.50 +# X-Mailman-Approved-At: Mon, 11 Jul 2011 14:34:26 -0400 +# Subject: [bug-gawk] Change in behavior of gsub inside loop +# X-BeenThere: bug-gawk@gnu.org +# X-Mailman-Version: 2.1.14 +# Precedence: list +# List-Id: "Bug reports and all discussion about gawk." +# List-Unsubscribe: , +# +# List-Archive: +# List-Post: +# List-Help: +# List-Subscribe: , +# +# Errors-To: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Sender: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Status: R +# +# Hi, +# +# I have observed the following changed behavior between gawk-3.8.1 and +# gakw-4.0.0. While in the former +# +# echo -ne ' aaa' | gawk '{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}}' +# +# prints: +# +# aaa +# +# the gawk-4.0.0 does not preserve the leading spaces and prints: +# +# aaa +# +# Best regards, +# -- +# Kacper +# +{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}} diff --git a/src/tool/awk/testdata/gawk/gsubtst7.in b/src/tool/awk/testdata/gawk/gsubtst7.in new file mode 100644 index 0000000..88069bf --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst7.in @@ -0,0 +1 @@ + aaa \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/gsubtst7.ok b/src/tool/awk/testdata/gawk/gsubtst7.ok new file mode 100644 index 0000000..88f42c8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst7.ok @@ -0,0 +1 @@ + aaa diff --git a/src/tool/awk/testdata/gawk/gsubtst8.awk b/src/tool/awk/testdata/gawk/gsubtst8.awk new file mode 100644 index 0000000..818b0ea --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst8.awk @@ -0,0 +1,5 @@ +{ + OFS = " " $2 " " + gsub("foo", "_", OFS) + print $1, $2 +} diff --git a/src/tool/awk/testdata/gawk/gsubtst8.in b/src/tool/awk/testdata/gawk/gsubtst8.in new file mode 100644 index 0000000..f2b45c7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst8.in @@ -0,0 +1,2 @@ +a bar b +c foo d diff --git a/src/tool/awk/testdata/gawk/gsubtst8.ok b/src/tool/awk/testdata/gawk/gsubtst8.ok new file mode 100644 index 0000000..d3b28cc --- /dev/null +++ b/src/tool/awk/testdata/gawk/gsubtst8.ok @@ -0,0 +1,2 @@ +a bar bar +c _ foo diff --git a/src/tool/awk/testdata/gawk/hex.awk b/src/tool/awk/testdata/gawk/hex.awk new file mode 100644 index 0000000..009ccef --- /dev/null +++ b/src/tool/awk/testdata/gawk/hex.awk @@ -0,0 +1,22 @@ +# Test program from Paul Eggert, eggert@cs.ucla.edu, Jan. 14, 2005 + +BEGIN { + e = "1(e)" + ex = "3e2(ex)" + x = "6e5(x)" + + print e+0, x+0 + print 0x +# print 0e+x # GoAWK behaviour is different (saner!) here +# print 0ex # GoAWK behaviour is different (saner!) here + print 010e2 + print 0e9.3 +} + +# Expected results: +# 1 600000 +# 06e5(x) +# 0600001 +# 03e2(ex) +# 1000 +# 00.3 diff --git a/src/tool/awk/testdata/gawk/hex.ok b/src/tool/awk/testdata/gawk/hex.ok new file mode 100644 index 0000000..20bf37f --- /dev/null +++ b/src/tool/awk/testdata/gawk/hex.ok @@ -0,0 +1,4 @@ +1 600000 +06e5(x) +1000 +00.3 diff --git a/src/tool/awk/testdata/gawk/hex2.awk b/src/tool/awk/testdata/gawk/hex2.awk new file mode 100644 index 0000000..49c6203 --- /dev/null +++ b/src/tool/awk/testdata/gawk/hex2.awk @@ -0,0 +1 @@ +{ print $1 + 7} diff --git a/src/tool/awk/testdata/gawk/hex2.in b/src/tool/awk/testdata/gawk/hex2.in new file mode 100644 index 0000000..60f06f0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/hex2.in @@ -0,0 +1,2 @@ +0x4 +-0x4 diff --git a/src/tool/awk/testdata/gawk/hex2.ok b/src/tool/awk/testdata/gawk/hex2.ok new file mode 100644 index 0000000..49019db --- /dev/null +++ b/src/tool/awk/testdata/gawk/hex2.ok @@ -0,0 +1,2 @@ +7 +7 diff --git a/src/tool/awk/testdata/gawk/hsprint.awk b/src/tool/awk/testdata/gawk/hsprint.awk new file mode 100644 index 0000000..facc109 --- /dev/null +++ b/src/tool/awk/testdata/gawk/hsprint.awk @@ -0,0 +1,71 @@ +# Test which attempts to repeat examples of formatted output +# from "C a reference manual" by Harbison and Steele. +# +# In the second series of outputs formats of a type "%5%" are skipped +# since my old copy of H&S explicitely requires padding ("...%05% will +# print 0000%..."), whereas Standard says "...the complete conversion +# specification shall be %%". +# +# Michal Jaegermann - michal@phys.ualberta.ca + + +BEGIN { + zero = "0"; + alt = "#"; + spc = " "; + plus = "+"; + just = "-"; + value[0] = 45; + value[1] = 45; + value[2] = 45; + value[3] = 12.678; + value[4] = 12.678; + value[5] = 12.678; + value[6] = "zap"; + value[7] = "*"; + value[8] = -3.4567; + value[9] = -3.4567; + value[10]= -3.4567; + value[11]= -3.4567; + oper[0] = "5d"; + oper[1] = "5o"; + oper[2] = "5x"; + oper[3] = "7.2f"; + oper[4] = "10.2e"; + oper[5] = "10.4g"; + oper[6] = "5s"; + oper[7] = "5c"; + oper[8] = "7.1G"; + oper[9] = "7.2f"; + oper[10] = "10.2e"; + oper[11] = "10.4g"; + + + for (r = 0; r < 12; r += 6) { + for (j = 2; j > 0; --j) { + for (p = 2; p > 0; --p) { + for (s = 2; s > 0; --s) { + for (a = 2; a > 0; --a) { + for (z = 2; z > 0; --z) { + fmt = "%" substr(just,j,1) substr(plus,p,1) \ + substr(spc,s,1) substr(alt,a,1) substr(zero,z,1); + fstr = sprintf(\ + "%6s|%s%s|%s%s|%s%s|%s%s|%s%s|%s%s|\n", + "%" fmt, + fmt, oper[r], + fmt, oper[r+1], + fmt, oper[r+2], + fmt, oper[r+3], + fmt, oper[r+4], + fmt, oper[r+5]); + printf(fstr, value[r], value[r+1], + value[r+2], value[r+3], + value[r+4], value[r+5]); + } + } + } + } + } + print ""; + } +} diff --git a/src/tool/awk/testdata/gawk/hsprint.ok b/src/tool/awk/testdata/gawk/hsprint.ok new file mode 100644 index 0000000..c66e72c --- /dev/null +++ b/src/tool/awk/testdata/gawk/hsprint.ok @@ -0,0 +1,66 @@ + %| 45| 55| 2d| 12.68| 1.27e+01| 12.68| + %0|00045|00055|0002d|0012.68|001.27e+01|0000012.68| + %#| 45| 055| 0x2d| 12.68| 1.27e+01| 12.68| + %#0|00045|00055|0x0002d|0012.68|001.27e+01|0000012.68| + % | 45| 55| 2d| 12.68| 1.27e+01| 12.68| + % 0| 0045| 0055| 002d| 012.68| 01.27e+01| 000012.68| + % #| 45| 055| 0x2d| 12.68| 1.27e+01| 12.68| + % #0| 0045| 0055| 0x002d| 012.68| 01.27e+01| 000012.68| + %+| +45| +55| +2d| +12.68| +1.27e+01| +12.68| + %+0|+0045|+0055|+002d|+012.68|+01.27e+01|+000012.68| + %+#| +45| +055|+0x2d| +12.68| +1.27e+01| +12.68| + %+#0|+0045|+0055|+0x002d|+012.68|+01.27e+01|+000012.68| + %+ | +45| +55| +2d| +12.68| +1.27e+01| +12.68| + %+ 0|+0045|+0055|+002d|+012.68|+01.27e+01|+000012.68| + %+ #| +45| +055|+0x2d| +12.68| +1.27e+01| +12.68| +%+ #0|+0045|+0055|+0x002d|+012.68|+01.27e+01|+000012.68| + %-|45 |55 |2d |12.68 |1.27e+01 |12.68 | + %-0|45 |55 |2d |12.68 |1.27e+01 |12.68 | + %-#|45 |055 |0x2d |12.68 |1.27e+01 |12.68 | + %-#0|45 |055 |0x2d |12.68 |1.27e+01 |12.68 | + %- | 45 | 55 | 2d | 12.68 | 1.27e+01 | 12.68 | + %- 0| 45 | 55 | 2d | 12.68 | 1.27e+01 | 12.68 | + %- #| 45 | 055 | 0x2d| 12.68 | 1.27e+01 | 12.68 | +%- #0| 45 | 055 | 0x2d| 12.68 | 1.27e+01 | 12.68 | + %-+|+45 |+55 |+2d |+12.68 |+1.27e+01 |+12.68 | + %-+0|+45 |+55 |+2d |+12.68 |+1.27e+01 |+12.68 | + %-+#|+45 |+055 |+0x2d|+12.68 |+1.27e+01 |+12.68 | +%-+#0|+45 |+055 |+0x2d|+12.68 |+1.27e+01 |+12.68 | + %-+ |+45 |+55 |+2d |+12.68 |+1.27e+01 |+12.68 | +%-+ 0|+45 |+55 |+2d |+12.68 |+1.27e+01 |+12.68 | +%-+ #|+45 |+055 |+0x2d|+12.68 |+1.27e+01 |+12.68 | +%-+ #0|+45 |+055 |+0x2d|+12.68 |+1.27e+01 |+12.68 | + + %| zap| *| -3| -3.46| -3.46e+00| -3.457| + %0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457| + %#| zap| *| -3.| -3.46| -3.46e+00| -3.457| + %#0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457| + % | zap| *| -3| -3.46| -3.46e+00| -3.457| + % 0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457| + % #| zap| *| -3.| -3.46| -3.46e+00| -3.457| + % #0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457| + %+| zap| *| -3| -3.46| -3.46e+00| -3.457| + %+0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457| + %+#| zap| *| -3.| -3.46| -3.46e+00| -3.457| + %+#0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457| + %+ | zap| *| -3| -3.46| -3.46e+00| -3.457| + %+ 0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457| + %+ #| zap| *| -3.| -3.46| -3.46e+00| -3.457| +%+ #0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457| + %-|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %-0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %-#|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | + %-#0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | + %- |zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %- 0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %- #|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | +%- #0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | + %-+|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %-+0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | + %-+#|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | +%-+#0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | + %-+ |zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | +%-+ 0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 | +%-+ #|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | +%-+ #0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 | + diff --git a/src/tool/awk/testdata/gawk/inpref.awk b/src/tool/awk/testdata/gawk/inpref.awk new file mode 100644 index 0000000..d64ffe7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/inpref.awk @@ -0,0 +1,9 @@ +function test(x) { + print x + getline + print x +} + +{ + test($0) +} diff --git a/src/tool/awk/testdata/gawk/inpref.in b/src/tool/awk/testdata/gawk/inpref.in new file mode 100644 index 0000000..a32119c --- /dev/null +++ b/src/tool/awk/testdata/gawk/inpref.in @@ -0,0 +1,2 @@ +hello +goodbye diff --git a/src/tool/awk/testdata/gawk/inpref.ok b/src/tool/awk/testdata/gawk/inpref.ok new file mode 100644 index 0000000..317e967 --- /dev/null +++ b/src/tool/awk/testdata/gawk/inpref.ok @@ -0,0 +1,2 @@ +hello +hello diff --git a/src/tool/awk/testdata/gawk/inputred.awk b/src/tool/awk/testdata/gawk/inputred.awk new file mode 100644 index 0000000..6524df6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/inputred.awk @@ -0,0 +1 @@ +BEGIN { print getline < "file" ".txt" } diff --git a/src/tool/awk/testdata/gawk/inputred.ok b/src/tool/awk/testdata/gawk/inputred.ok new file mode 100644 index 0000000..7de4d5d --- /dev/null +++ b/src/tool/awk/testdata/gawk/inputred.ok @@ -0,0 +1 @@ +-1.txt diff --git a/src/tool/awk/testdata/gawk/intest.awk b/src/tool/awk/testdata/gawk/intest.awk new file mode 100644 index 0000000..f030d07 --- /dev/null +++ b/src/tool/awk/testdata/gawk/intest.awk @@ -0,0 +1,4 @@ +BEGIN { + bool = ((b = 1) in c); + print bool, b # gawk-3.0.1 prints "0 "; should print "0 1" +} diff --git a/src/tool/awk/testdata/gawk/intest.ok b/src/tool/awk/testdata/gawk/intest.ok new file mode 100644 index 0000000..6e8183b --- /dev/null +++ b/src/tool/awk/testdata/gawk/intest.ok @@ -0,0 +1 @@ +0 1 diff --git a/src/tool/awk/testdata/gawk/intprec.awk b/src/tool/awk/testdata/gawk/intprec.awk new file mode 100644 index 0000000..978e9ea --- /dev/null +++ b/src/tool/awk/testdata/gawk/intprec.awk @@ -0,0 +1 @@ +BEGIN { printf "%.10d:%.10x\n", 5, 14 } diff --git a/src/tool/awk/testdata/gawk/intprec.ok b/src/tool/awk/testdata/gawk/intprec.ok new file mode 100644 index 0000000..8783fac --- /dev/null +++ b/src/tool/awk/testdata/gawk/intprec.ok @@ -0,0 +1 @@ +0000000005:000000000e diff --git a/src/tool/awk/testdata/gawk/iobug1.awk b/src/tool/awk/testdata/gawk/iobug1.awk new file mode 100644 index 0000000..5606d02 --- /dev/null +++ b/src/tool/awk/testdata/gawk/iobug1.awk @@ -0,0 +1,53 @@ +# From arnold@f7.net Fri Nov 26 11:53:12 2004 +# X-Envelope-From: james@nocrew.org +# X-Envelope-To: +# To: bug-gawk@gnu.org +# Subject: gawk 3.1.4: reproducible hang, regression from 3.1.3 +# From: James Troup +# Date: Fri, 26 Nov 2004 03:14:05 +0000 +# Message-ID: <877jo9qp36.fsf@shiri.gloaming.local> +# User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# +# +# Hi, +# +# A Debian user reported[0] gawk 3.1.4 broke a (relatively) complex +# program that makes extensive use of awk, called 'apt-move'. I finally +# managed to reduced the problem down to a 3 line test case, enclosed +# below[1]. +# +# I believe the problem comes from the following code, introduced in +# 3.1.4: +# +# [io.c, line 560] +# | for (rp = red_head; rp != NULL; rp = rp->next) { +# | if ((rp->flag & RED_EOF) && tree->type == Node_redirect_pipein) { +# | if (rp->pid != -1) +# | wait_any(0); +# | } +# +# The problem is that, if we have an existing redirect which is a simple +# file redirect[b] and it's hit EOF and we try to create a new '|' +# redirect[c], this new code will try to wait(2) and if there are any +# other redirects which _did_ spawn a child (like [a]) the wait() will +# hang indefinitely waiting for it to exit. +# +# Hope that makes sense :) +# +# -- +# James +# +# [0] http://bugs.debian.org/263964 +# +# [1] +# ================================================================================ +#!/usr/bin/gawk -f + +BEGIN { + printf "" | "cat" # [a] + getline line < "/dev/null" # [b] + "true" | getline line # [c] +} +# ================================================================================ diff --git a/src/tool/awk/testdata/gawk/iobug1.ok b/src/tool/awk/testdata/gawk/iobug1.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/leaddig.awk b/src/tool/awk/testdata/gawk/leaddig.awk new file mode 100644 index 0000000..1e6ca51 --- /dev/null +++ b/src/tool/awk/testdata/gawk/leaddig.awk @@ -0,0 +1,12 @@ +# check that values with leading digits get converted the +# right way, based on a note in comp.lang.awk. +# +# run with gawk -v x=2E -f leaddig.awk + +BEGIN { + # 4/2018: Put it into the program to make generation of the + # recipe automatable + x = "2E" + + print "x =", x, (x == 2), (x == 2E0), (x == 2E), (x == 2D) +} diff --git a/src/tool/awk/testdata/gawk/leaddig.ok b/src/tool/awk/testdata/gawk/leaddig.ok new file mode 100644 index 0000000..7a9d866 --- /dev/null +++ b/src/tool/awk/testdata/gawk/leaddig.ok @@ -0,0 +1 @@ +x = 2E 0 0 0 0 diff --git a/src/tool/awk/testdata/gawk/leadnl.awk b/src/tool/awk/testdata/gawk/leadnl.awk new file mode 100644 index 0000000..0b7d0a9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/leadnl.awk @@ -0,0 +1,10 @@ +BEGIN { + RS = ""; FS = "\n" +} + +{ + print "Name is: ", $1 + print "Address is: ", $2 + print "City and State are: ", $3 + print "" +} diff --git a/src/tool/awk/testdata/gawk/leadnl.in b/src/tool/awk/testdata/gawk/leadnl.in new file mode 100644 index 0000000..67c0239 --- /dev/null +++ b/src/tool/awk/testdata/gawk/leadnl.in @@ -0,0 +1,9 @@ + +Jane Doe +123 Main Street +Anywhere, SE 12345-6789 + +John Smith +456 Tree-lined Avenue +Smallville, MW 98765-4321 + diff --git a/src/tool/awk/testdata/gawk/leadnl.ok b/src/tool/awk/testdata/gawk/leadnl.ok new file mode 100644 index 0000000..19cb299 --- /dev/null +++ b/src/tool/awk/testdata/gawk/leadnl.ok @@ -0,0 +1,8 @@ +Name is: Jane Doe +Address is: 123 Main Street +City and State are: Anywhere, SE 12345-6789 + +Name is: John Smith +Address is: 456 Tree-lined Avenue +City and State are: Smallville, MW 98765-4321 + diff --git a/src/tool/awk/testdata/gawk/litoct.awk b/src/tool/awk/testdata/gawk/litoct.awk new file mode 100644 index 0000000..5cfc128 --- /dev/null +++ b/src/tool/awk/testdata/gawk/litoct.awk @@ -0,0 +1 @@ +{ if (/a\52b/) print "match" ; else print "no match" } diff --git a/src/tool/awk/testdata/gawk/litoct.in b/src/tool/awk/testdata/gawk/litoct.in new file mode 100644 index 0000000..81bf396 --- /dev/null +++ b/src/tool/awk/testdata/gawk/litoct.in @@ -0,0 +1 @@ +ab diff --git a/src/tool/awk/testdata/gawk/litoct.ok b/src/tool/awk/testdata/gawk/litoct.ok new file mode 100644 index 0000000..4c0be97 --- /dev/null +++ b/src/tool/awk/testdata/gawk/litoct.ok @@ -0,0 +1 @@ +no match diff --git a/src/tool/awk/testdata/gawk/longsub.awk b/src/tool/awk/testdata/gawk/longsub.awk new file mode 100644 index 0000000..07a4a85 --- /dev/null +++ b/src/tool/awk/testdata/gawk/longsub.awk @@ -0,0 +1 @@ +{sub( "^.*AA", "BB"); print} diff --git a/src/tool/awk/testdata/gawk/longsub.in b/src/tool/awk/testdata/gawk/longsub.in new file mode 100644 index 0000000..ab95ee1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/longsub.in @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/src/tool/awk/testdata/gawk/longsub.ok b/src/tool/awk/testdata/gawk/longsub.ok new file mode 100644 index 0000000..a85633e --- /dev/null +++ b/src/tool/awk/testdata/gawk/longsub.ok @@ -0,0 +1 @@ +BB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/src/tool/awk/testdata/gawk/longwrds.awk b/src/tool/awk/testdata/gawk/longwrds.awk new file mode 100644 index 0000000..77654bb --- /dev/null +++ b/src/tool/awk/testdata/gawk/longwrds.awk @@ -0,0 +1,27 @@ +# From Gawk Manual modified by bug fix and removal of punctuation + +# Invoker can customize sort command if necessary. +BEGIN { + if (!SORT) SORT = "LC_ALL=C sort" +} + +# Record every word which is used at least once +{ + for (i = 1; i <= NF; i++) { + tmp = tolower($i) + if (0 != (pos = match(tmp, /([[:lower:]]|-)+/))) + used[substr(tmp, pos, RLENGTH)] = 1 + } +} + +#Find a number of distinct words longer than 10 characters +END { + num_long_words = 0 + for (x in used) + if (length(x) > 10) { + ++num_long_words + print x | SORT + } + print(num_long_words, "long words") | SORT + close(SORT) +} diff --git a/src/tool/awk/testdata/gawk/longwrds.in b/src/tool/awk/testdata/gawk/longwrds.in new file mode 100644 index 0000000..09c3948 --- /dev/null +++ b/src/tool/awk/testdata/gawk/longwrds.in @@ -0,0 +1,200 @@ +.ds PX \s-1POSIX\s+1 +.ds UX \s-1UNIX\s+1 +.ds AN \s-1ANSI\s+1 +.TH GAWK 1 "May 28 1991" "Free Software Foundation" "Utility Commands" +.SH NAME +gawk \- pattern scanning and processing language +.SH SYNOPSIS +.B gawk +[ +.B \-W +.I gawk-options +] [ +.BI \-F\^ fs +] [ +.B \-v +.IR var = val +] +.B \-f +.I program-file +[ +.B \-\^\- +] file .\^.\^. +.br +.B gawk +[ +.B \-W +.I gawk-options +] [ +.BI \-F\^ fs +] [ +.B \-v +.IR var = val +] [ +.B \-\^\- +] +.I program-text +file .\^.\^. +.SH DESCRIPTION +.I Gawk +is the GNU Project's implementation of the AWK programming language. +It conforms to the definition of the language in +the \*(PX 1003.2 Command Language And Utilities Standard +(draft 11). +This version in turn is based on the description in +.IR "The AWK Programming Language" , +by Aho, Kernighan, and Weinberger, +with the additional features defined in the System V Release 4 version +of \*(UX +.IR awk . +.I Gawk +also provides some GNU-specific extensions. +.PP +The command line consists of options to +.I gawk +itself, the AWK program text (if not supplied via the +.B \-f +option), and values to be made +available in the +.B ARGC +and +.B ARGV +pre-defined AWK variables. +.SH OPTIONS +.PP +.I Gawk +accepts the following options, which should be available on any implementation +of the AWK language. +.TP +.BI \-F fs +Use +.I fs +for the input field separator (the value of the +.B FS +predefined +variable). +.TP +\fB\-v\fI var\fR\^=\^\fIval\fR +Assign the value +.IR val , +to the variable +.IR var , +before execution of the program begins. +Such variable values are available to the +.B BEGIN +block of an AWK program. +.TP +.BI \-f " program-file" +Read the AWK program source from the file +.IR program-file , +instead of from the first command line argument. +Multiple +.B \-f +options may be used. +.TP +.B \-\^\- +Signal the end of options. This is useful to allow further arguments to the +AWK program itself to start with a ``\-''. +This is mainly for consistency with the argument parsing convention used +by most other \*(PX programs. +.PP +Following the \*(PX standard, +.IR gawk -specific +options are supplied via arguments to the +.B \-W +option. Multiple +.B \-W +options may be supplied, or multiple arguments may be supplied together +if they are separated by commas, or enclosed in quotes and separated +by white space. +Case is ignored in arguments to the +.B \-W +option. +.PP +The +.B \-W +option accepts the following arguments: +.TP \w'\fBcopyright\fR'u+1n +.B compat +Run in +.I compatibility +mode. In compatibility mode, +.I gawk +behaves identically to \*(UX +.IR awk ; +none of the GNU-specific extensions are recognized. +.TP +.PD 0 +.B copyleft +.TP +.PD +.B copyright +Print the short version of the GNU copyright information message on +the error output. +.TP +.B lint +Provide warnings about constructs that are +dubious or non-portable to other AWK implementations. +.TP +.B posix +This turns on +.I compatibility +mode, with the following additional restrictions: +.RS +.TP \w'\(bu'u+1n +\(bu +.B \ex +escape sequences are not recognized. +.TP +\(bu +The synonym +.B func +for the keyword +.B function +is not recognized. +.TP +\(bu +The operators +.B ** +and +.B **= +cannot be used in place of +.B ^ +and +.BR ^= . +.RE +.TP +.B version +Print version information for this particular copy of +.I gawk +on the error output. +This is useful mainly for knowing if the current copy of +.I gawk +on your system +is up to date with respect to whatever the Free Software Foundation +is distributing. +.PP +Any other options are flagged as illegal, but are otherwise ignored. +.SH AWK PROGRAM EXECUTION +.PP +An AWK program consists of a sequence of pattern-action statements +and optional function definitions. +.RS +.PP +\fIpattern\fB { \fIaction statements\fB }\fR +.br +\fBfunction \fIname\fB(\fIparameter list\fB) { \fIstatements\fB }\fR +.RE +.PP +.I Gawk +first reads the program source from the +.IR program-file (s) +if specified, or from the first non-option argument on the command line. +The +.B \-f +option may be used multiple times on the command line. +.I Gawk +will read the program text as if all the +.IR program-file s +had been concatenated together. This is useful for building libraries +of AWK functions, without having to include them in each new AWK diff --git a/src/tool/awk/testdata/gawk/longwrds.ok b/src/tool/awk/testdata/gawk/longwrds.ok new file mode 100644 index 0000000..01faa84 --- /dev/null +++ b/src/tool/awk/testdata/gawk/longwrds.ok @@ -0,0 +1,21 @@ +20 long words +compatibility +concatenated +consistency +definitions +description +distributing +fistatements +gawk-options +gnu-specific +identically +implementation +implementations +information +non-portable +pattern-action +pre-defined +program-file +program-text +programming +restrictions diff --git a/src/tool/awk/testdata/gawk/manglprm.awk b/src/tool/awk/testdata/gawk/manglprm.awk new file mode 100644 index 0000000..3a4306c --- /dev/null +++ b/src/tool/awk/testdata/gawk/manglprm.awk @@ -0,0 +1,41 @@ +# From beebe@sunshine.math.utah.edu Thu Jul 10 00:36:16 2003 +# Date: Wed, 9 Jul 2003 06:42:54 -0600 (MDT) +# From: "Nelson H. F. Beebe" +# To: "Arnold Robbins" +# Cc: beebe@math.utah.edu +# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 110 +# LCB, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT +# 84112-0090, USA" +# X-Telephone: +1 801 581 5254 +# X-FAX: +1 801 585 1640, +1 801 581 4148 +# X-URL: http://www.math.utah.edu/~beebe +# Subject: gawk-3.1.3 (and earlier): reproducible core dump +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# +# I have a reproducible core dump in gawk-3.1.3, and recent gawk +# versions. +# +# Consider the following test program, reduced from a much larger one: +# +# % cat gawk-dump.awk + + { process($0) } + + function out_debug(s) + { + print s + } + + function process(s, n,parts) + { + out_debug("Buffer = [" protect(Buffer) "]") + Buffer = Buffer s + n = split(Buffer,parts,"\n") + } + + function protect(s) + { + gsub("\n", "\\n", s) + return (s) + } diff --git a/src/tool/awk/testdata/gawk/manglprm.in b/src/tool/awk/testdata/gawk/manglprm.in new file mode 100644 index 0000000..73709ba --- /dev/null +++ b/src/tool/awk/testdata/gawk/manglprm.in @@ -0,0 +1 @@ +Testing diff --git a/src/tool/awk/testdata/gawk/manglprm.ok b/src/tool/awk/testdata/gawk/manglprm.ok new file mode 100644 index 0000000..b13c456 --- /dev/null +++ b/src/tool/awk/testdata/gawk/manglprm.ok @@ -0,0 +1 @@ +Buffer = [] diff --git a/src/tool/awk/testdata/gawk/math.awk b/src/tool/awk/testdata/gawk/math.awk new file mode 100644 index 0000000..90a01dd --- /dev/null +++ b/src/tool/awk/testdata/gawk/math.awk @@ -0,0 +1,10 @@ +BEGIN { + pi = 3.1415927 + printf "cos(%f) = %f\n", pi/4, cos(pi/4) + printf "sin(%f) = %f\n", pi/4, sin(pi/4) + e = exp(1) + printf "e = %f\n", e + printf "log(e) = %f\n", log(e) + printf "sqrt(pi ^ 2) = %f\n", sqrt(pi ^ 2) + printf "atan2(1, 1) = %f\n", atan2(1, 1) +} diff --git a/src/tool/awk/testdata/gawk/math.ok b/src/tool/awk/testdata/gawk/math.ok new file mode 100644 index 0000000..a396a5b --- /dev/null +++ b/src/tool/awk/testdata/gawk/math.ok @@ -0,0 +1,6 @@ +cos(0.785398) = 0.707107 +sin(0.785398) = 0.707107 +e = 2.718282 +log(e) = 1.000000 +sqrt(pi ^ 2) = 3.141593 +atan2(1, 1) = 0.785398 diff --git a/src/tool/awk/testdata/gawk/minusstr.awk b/src/tool/awk/testdata/gawk/minusstr.awk new file mode 100644 index 0000000..d427719 --- /dev/null +++ b/src/tool/awk/testdata/gawk/minusstr.awk @@ -0,0 +1 @@ +BEGIN { print-"6" } diff --git a/src/tool/awk/testdata/gawk/minusstr.ok b/src/tool/awk/testdata/gawk/minusstr.ok new file mode 100644 index 0000000..3cfb5ef --- /dev/null +++ b/src/tool/awk/testdata/gawk/minusstr.ok @@ -0,0 +1 @@ +-6 diff --git a/src/tool/awk/testdata/gawk/mmap8k.awk b/src/tool/awk/testdata/gawk/mmap8k.awk new file mode 100644 index 0000000..1751e36 --- /dev/null +++ b/src/tool/awk/testdata/gawk/mmap8k.awk @@ -0,0 +1 @@ +{ print } diff --git a/src/tool/awk/testdata/gawk/mmap8k.in b/src/tool/awk/testdata/gawk/mmap8k.in new file mode 100644 index 0000000..0500ddf --- /dev/null +++ b/src/tool/awk/testdata/gawk/mmap8k.in @@ -0,0 +1,143 @@ +XXXXXXXX.com ALTERNET 9305 930528 1500.00 startup +XXXXXXXX.com ALTERNET 9305 930624 94.38 Line-9305 +XXXXXXXX.com ALTERNET 9306 930624 104.49 Line-9306 +XXXXXXXX.com ALTERNET 9306 930624 649.16 Line-install +XXXXXXXX.com ALTERNET 9306 930624 166.67 TCP-slip +XXXXXXXX.com ALTERNET 9307 930624 104.49 Line-9307 +XXXXXXXX.com ALTERNET 9307 930624 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9308 930701 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9308 930701 104.49 line-9308 +XXXXXXXX.com PAYMENT 9307 930731 1500.00 1870 +XXXXXXXX.com ALTERNET 9309 930801 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9309 930801 104.49 line-9309 +XXXXXXXX.com INTEREST 9307 930801 22.50 +XXXXXXXX.com CREDADJ 9308 930805 22.50 waive interest +XXXXXXXX.com PAYMENT 9308 930820 1723.68 1982 +XXXXXXXX.com ALTERNET 9310 930901 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9310 930901 104.49 line-9310 +XXXXXXXX.com PAYMENT 9310 931001 708.98 2313 +XXXXXXXX.com ALTERNET 9311 931001 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9311 931001 104.49 line-9311 +XXXXXXXX.com INTEREST 9309 931001 5.32 +XXXXXXXX.com CREDADJ 9310 931007 5.32 waive int-9309 +XXXXXXXX.com ALTERNET 9312 931101 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9312 931101 104.49 line-9312 +XXXXXXXX.com PAYMENT 9311 931120 354.49 002701 +XXXXXXXX.com ALTERNET 9401 931201 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9401 931201 104.49 line-9401 +XXXXXXXX.com PAYMENT 9312 931218 354.49 2884 +XXXXXXXX.com ALTERNET 9402 940101 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9402 940101 104.49 line-9402 +XXXXXXXX.com INTEREST 9312 940101 5.32 +XXXXXXXX.com PAYMENT 9401 940122 354.49 3084 +XXXXXXXX.com ALTERNET 9403 940201 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9403 940201 104.49 line-9403 +XXXXXXXX.com INTEREST 9401 940201 5.40 +XXXXXXXX.com PAYMENT 9402 940207 354.49 3140 +XXXXXXXX.com CREDADJ 9402 940211 5.32 interest-9402 +XXXXXXXX.com CREDADJ 9402 940211 5.40 interest-9403 +XXXXXXXX.com ALTERNET 9404 940301 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9404 940301 104.49 line-9404 +XXXXXXXX.com INTEREST 9402 940301 5.32 +XXXXXXXX.com PAYMENT 9403 940310 354.49 003307 +XXXXXXXX.com PAYMENT 9403 940324 354.49 3446 +XXXXXXXX.com ALTERNET 9405 940401 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9405 940401 104.49 line-9405 +XXXXXXXX.com ALTERNET 9406 940501 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9406 940501 104.49 line-9406 +XXXXXXXX.com INTEREST 9404 940501 5.40 +XXXXXXXX.com PAYMENT 9405 940509 359.81 003819 +XXXXXXXX.com ALTERNET 9407 940601 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9407 940601 104.49 line-9407 +XXXXXXXX.com INTEREST 9405 940601 5.40 +XXXXXXXX.com PAYMENT 9406 940603 354.49 004025 +XXXXXXXX.com ALTERNET 9408 940701 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9408 940701 104.49 line-9408 +XXXXXXXX.com INTEREST 9406 940701 5.48 +XXXXXXXX.com PAYMENT 9407 940725 354.49 004350 +XXXXXXXX.com ALTERNET 9409 940801 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9409 940801 104.49 line-9409 +XXXXXXXX.com INTEREST 9407 940801 5.56 +XXXXXXXX.com PAYMENT 9408 940808 354.49 004454 +XXXXXXXX.com ALTERNET 9409 940811 0.00 startup +XXXXXXXX.com EQUIPMENT 9408 940831 399.00 ATL6402-1 +XXXXXXXX.com EQUIPMENT 9408 940831 2295.00 NBClassicPac-1 +XXXXXXXX.com EQUIPMENT 9408 940831 1060.00 Syn35-1+ship +XXXXXXXX.com ALTERNET 9410 940901 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9410 940901 104.49 line-9410 +XXXXXXXX.com INTEREST 9408 940901 5.64 +XXXXXXXX.com PAYMENT 9409 940906 354.49 004677 +XXXXXXXX.com CREDADJ 9409 940921 124.95 TCP-slip-9409 +XXXXXXXX.com CREDADJ 9409 940921 52.20 line-9409 +XXXXXXXX.com CREDADJ 9410 940921 250.00 TCP-slip-9410 +XXXXXXXX.com CREDADJ 9410 940921 104.49 line-9410 +XXXXXXXX.com ALTERNET 9409 940921 397.50 TCP-56k-local recon +XXXXXXXX.com ALTERNET 9409 940921 87.45 line-9409 recon +XXXXXXXX.com ALTERNET 9410 940921 795.00 TCP-56k-local recon +XXXXXXXX.com ALTERNET 9410 940921 174.90 line-9410 recon +XXXXXXXX.com ALTERNET 9411 941001 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9411 941001 174.90 line-9411 +XXXXXXXX.com INTEREST 9409 941001 54.06 +XXXXXXXX.com PAYMENT 9410 941017 354.49 5026 +XXXXXXXX.com ALTERNET 9412 941101 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9412 941101 174.90 line-9412 +XXXXXXXX.com INTEREST 9410 941101 85.93 +XXXXXXXX.com PAYMENT 9411 941114 969.90 005274 +XXXXXXXX.com ALTERNET 9501 941201 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9501 941201 174.90 line-9501 +XXXXXXXX.com INTEREST 9411 941201 87.22 +XXXXXXXX.com PAYMENT 9412 941219 4723.90 5590 +XXXXXXXX.com ALTERNET 9502 950101 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9502 950101 174.90 line-9502 +XXXXXXXX.com INTEREST 9412 950101 32.22 +XXXXXXXX.com PAYMENT 9501 950103 1893.11 5766 +XXXXXXXX.com ALTERNET 9503 950201 795.00 TCP-56k-local-old +XXXXXXXX.com ALTERNET 9503 950201 174.90 line-9503 +XXXXXXXX.com INTEREST 9501 950201 18.85 +XXXXXXXX.com PAYMENT 9502 950207 969.90 6044 +XXXXXXXX.com ALTERNET 9504 950301 795.00 TCP-56k-local-old +XXXXXXXX.com ALTERNET 9504 950301 174.90 line-9504 +XXXXXXXX.com INTEREST 9502 950301 19.13 +XXXXXXXX.com PAYMENT 9503 950307 969.90 6408 +XXXXXXXX.com ALTERNET 9504 950316 3000.00 startup TCP-bt1-128k%5 +XXXXXXXX.com PAYMENT 9503 950327 969.90 6594 +XXXXXXXX.com ALTERNET 9505 950401 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9505 950401 556.60 line-9505 +XXXXXXXX.com EQUIPMENT 9504 950410 1595.00 cisco2501-1 +XXXXXXXX.com CREDADJ 9504 950417 503.50 TCP-56k-local +XXXXXXXX.com CREDADJ 9504 950417 116.60 line-9504 +XXXXXXXX.com ALTERNET 9504 950417 448.80 line-install +XXXXXXXX.com ALTERNET 9504 950417 752.02 TCP-bt1-128k%5 recon +XXXXXXXX.com ALTERNET 9504 950417 371.00 line-9504 recon +XXXXXXXX.com PAYMENT 9504 950424 3000.00 6841 +XXXXXXXX.com ALTERNET 9506 950501 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9506 950501 556.60 line-9506 +XXXXXXXX.com PAYMENT 9505 950505 2049.86 6985 +XXXXXXXX.com PAYMENT 9505 950531 3924.22 7179 +XXXXXXXX.com ALTERNET 9507 950601 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9507 950601 556.60 line-9507 +XXXXXXXX.com PAYMENT 9506 950607 1744.10 7232 +XXXXXXXX.com ALTERNET 9508 950701 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9508 950701 556.60 line-9508 +XXXXXXXX.com PAYMENT 9507 950705 1744.10 7641 +XXXXXXXX.com ALTERNET 9509 950801 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9509 950801 556.60 line-9509 +XXXXXXXX.com PAYMENT 9508 950803 1744.10 7914 +XXXXXXXX.com ALTERNET 9510 950901 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9510 950901 556.60 line-9510 +XXXXXXXX.com PAYMENT 9509 950905 1744.10 8203 +XXXXXXXX.com ALTERNET 9511 951001 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9511 951001 556.60 line-9511 +XXXXXXXX.com PAYMENT 9510 951003 1744.10 8508 +XXXXXXXX.com ALTERNET 9512 951101 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9512 951101 556.60 line-9512 +XXXXXXXX.com PAYMENT 9511 951103 2129.83 8837 +XXXXXXXX.com ALTERNET 9601 951201 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9601 951201 556.60 line-9601 +XXXXXXXX.com PAYMENT 9512 951204 2129.83 9131 +XXXXXXXX.com ALTERNET 9602 960101 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9602 960101 556.60 line-9602 +XXXXXXXX.com PAYMENT 9601 960103 1744.10 9456 +XXXXXXXX.com ALTERNET 9603 960201 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9603 960201 556.60 line-9603 +XXXXXXXX.com PAYMENT 9602 960205 1358.37 9834 diff --git a/src/tool/awk/testdata/gawk/mmap8k.ok b/src/tool/awk/testdata/gawk/mmap8k.ok new file mode 100644 index 0000000..0500ddf --- /dev/null +++ b/src/tool/awk/testdata/gawk/mmap8k.ok @@ -0,0 +1,143 @@ +XXXXXXXX.com ALTERNET 9305 930528 1500.00 startup +XXXXXXXX.com ALTERNET 9305 930624 94.38 Line-9305 +XXXXXXXX.com ALTERNET 9306 930624 104.49 Line-9306 +XXXXXXXX.com ALTERNET 9306 930624 649.16 Line-install +XXXXXXXX.com ALTERNET 9306 930624 166.67 TCP-slip +XXXXXXXX.com ALTERNET 9307 930624 104.49 Line-9307 +XXXXXXXX.com ALTERNET 9307 930624 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9308 930701 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9308 930701 104.49 line-9308 +XXXXXXXX.com PAYMENT 9307 930731 1500.00 1870 +XXXXXXXX.com ALTERNET 9309 930801 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9309 930801 104.49 line-9309 +XXXXXXXX.com INTEREST 9307 930801 22.50 +XXXXXXXX.com CREDADJ 9308 930805 22.50 waive interest +XXXXXXXX.com PAYMENT 9308 930820 1723.68 1982 +XXXXXXXX.com ALTERNET 9310 930901 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9310 930901 104.49 line-9310 +XXXXXXXX.com PAYMENT 9310 931001 708.98 2313 +XXXXXXXX.com ALTERNET 9311 931001 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9311 931001 104.49 line-9311 +XXXXXXXX.com INTEREST 9309 931001 5.32 +XXXXXXXX.com CREDADJ 9310 931007 5.32 waive int-9309 +XXXXXXXX.com ALTERNET 9312 931101 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9312 931101 104.49 line-9312 +XXXXXXXX.com PAYMENT 9311 931120 354.49 002701 +XXXXXXXX.com ALTERNET 9401 931201 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9401 931201 104.49 line-9401 +XXXXXXXX.com PAYMENT 9312 931218 354.49 2884 +XXXXXXXX.com ALTERNET 9402 940101 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9402 940101 104.49 line-9402 +XXXXXXXX.com INTEREST 9312 940101 5.32 +XXXXXXXX.com PAYMENT 9401 940122 354.49 3084 +XXXXXXXX.com ALTERNET 9403 940201 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9403 940201 104.49 line-9403 +XXXXXXXX.com INTEREST 9401 940201 5.40 +XXXXXXXX.com PAYMENT 9402 940207 354.49 3140 +XXXXXXXX.com CREDADJ 9402 940211 5.32 interest-9402 +XXXXXXXX.com CREDADJ 9402 940211 5.40 interest-9403 +XXXXXXXX.com ALTERNET 9404 940301 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9404 940301 104.49 line-9404 +XXXXXXXX.com INTEREST 9402 940301 5.32 +XXXXXXXX.com PAYMENT 9403 940310 354.49 003307 +XXXXXXXX.com PAYMENT 9403 940324 354.49 3446 +XXXXXXXX.com ALTERNET 9405 940401 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9405 940401 104.49 line-9405 +XXXXXXXX.com ALTERNET 9406 940501 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9406 940501 104.49 line-9406 +XXXXXXXX.com INTEREST 9404 940501 5.40 +XXXXXXXX.com PAYMENT 9405 940509 359.81 003819 +XXXXXXXX.com ALTERNET 9407 940601 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9407 940601 104.49 line-9407 +XXXXXXXX.com INTEREST 9405 940601 5.40 +XXXXXXXX.com PAYMENT 9406 940603 354.49 004025 +XXXXXXXX.com ALTERNET 9408 940701 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9408 940701 104.49 line-9408 +XXXXXXXX.com INTEREST 9406 940701 5.48 +XXXXXXXX.com PAYMENT 9407 940725 354.49 004350 +XXXXXXXX.com ALTERNET 9409 940801 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9409 940801 104.49 line-9409 +XXXXXXXX.com INTEREST 9407 940801 5.56 +XXXXXXXX.com PAYMENT 9408 940808 354.49 004454 +XXXXXXXX.com ALTERNET 9409 940811 0.00 startup +XXXXXXXX.com EQUIPMENT 9408 940831 399.00 ATL6402-1 +XXXXXXXX.com EQUIPMENT 9408 940831 2295.00 NBClassicPac-1 +XXXXXXXX.com EQUIPMENT 9408 940831 1060.00 Syn35-1+ship +XXXXXXXX.com ALTERNET 9410 940901 250.00 TCP-slip +XXXXXXXX.com ALTERNET 9410 940901 104.49 line-9410 +XXXXXXXX.com INTEREST 9408 940901 5.64 +XXXXXXXX.com PAYMENT 9409 940906 354.49 004677 +XXXXXXXX.com CREDADJ 9409 940921 124.95 TCP-slip-9409 +XXXXXXXX.com CREDADJ 9409 940921 52.20 line-9409 +XXXXXXXX.com CREDADJ 9410 940921 250.00 TCP-slip-9410 +XXXXXXXX.com CREDADJ 9410 940921 104.49 line-9410 +XXXXXXXX.com ALTERNET 9409 940921 397.50 TCP-56k-local recon +XXXXXXXX.com ALTERNET 9409 940921 87.45 line-9409 recon +XXXXXXXX.com ALTERNET 9410 940921 795.00 TCP-56k-local recon +XXXXXXXX.com ALTERNET 9410 940921 174.90 line-9410 recon +XXXXXXXX.com ALTERNET 9411 941001 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9411 941001 174.90 line-9411 +XXXXXXXX.com INTEREST 9409 941001 54.06 +XXXXXXXX.com PAYMENT 9410 941017 354.49 5026 +XXXXXXXX.com ALTERNET 9412 941101 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9412 941101 174.90 line-9412 +XXXXXXXX.com INTEREST 9410 941101 85.93 +XXXXXXXX.com PAYMENT 9411 941114 969.90 005274 +XXXXXXXX.com ALTERNET 9501 941201 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9501 941201 174.90 line-9501 +XXXXXXXX.com INTEREST 9411 941201 87.22 +XXXXXXXX.com PAYMENT 9412 941219 4723.90 5590 +XXXXXXXX.com ALTERNET 9502 950101 795.00 TCP-56k-local +XXXXXXXX.com ALTERNET 9502 950101 174.90 line-9502 +XXXXXXXX.com INTEREST 9412 950101 32.22 +XXXXXXXX.com PAYMENT 9501 950103 1893.11 5766 +XXXXXXXX.com ALTERNET 9503 950201 795.00 TCP-56k-local-old +XXXXXXXX.com ALTERNET 9503 950201 174.90 line-9503 +XXXXXXXX.com INTEREST 9501 950201 18.85 +XXXXXXXX.com PAYMENT 9502 950207 969.90 6044 +XXXXXXXX.com ALTERNET 9504 950301 795.00 TCP-56k-local-old +XXXXXXXX.com ALTERNET 9504 950301 174.90 line-9504 +XXXXXXXX.com INTEREST 9502 950301 19.13 +XXXXXXXX.com PAYMENT 9503 950307 969.90 6408 +XXXXXXXX.com ALTERNET 9504 950316 3000.00 startup TCP-bt1-128k%5 +XXXXXXXX.com PAYMENT 9503 950327 969.90 6594 +XXXXXXXX.com ALTERNET 9505 950401 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9505 950401 556.60 line-9505 +XXXXXXXX.com EQUIPMENT 9504 950410 1595.00 cisco2501-1 +XXXXXXXX.com CREDADJ 9504 950417 503.50 TCP-56k-local +XXXXXXXX.com CREDADJ 9504 950417 116.60 line-9504 +XXXXXXXX.com ALTERNET 9504 950417 448.80 line-install +XXXXXXXX.com ALTERNET 9504 950417 752.02 TCP-bt1-128k%5 recon +XXXXXXXX.com ALTERNET 9504 950417 371.00 line-9504 recon +XXXXXXXX.com PAYMENT 9504 950424 3000.00 6841 +XXXXXXXX.com ALTERNET 9506 950501 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9506 950501 556.60 line-9506 +XXXXXXXX.com PAYMENT 9505 950505 2049.86 6985 +XXXXXXXX.com PAYMENT 9505 950531 3924.22 7179 +XXXXXXXX.com ALTERNET 9507 950601 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9507 950601 556.60 line-9507 +XXXXXXXX.com PAYMENT 9506 950607 1744.10 7232 +XXXXXXXX.com ALTERNET 9508 950701 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9508 950701 556.60 line-9508 +XXXXXXXX.com PAYMENT 9507 950705 1744.10 7641 +XXXXXXXX.com ALTERNET 9509 950801 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9509 950801 556.60 line-9509 +XXXXXXXX.com PAYMENT 9508 950803 1744.10 7914 +XXXXXXXX.com ALTERNET 9510 950901 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9510 950901 556.60 line-9510 +XXXXXXXX.com PAYMENT 9509 950905 1744.10 8203 +XXXXXXXX.com ALTERNET 9511 951001 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9511 951001 556.60 line-9511 +XXXXXXXX.com PAYMENT 9510 951003 1744.10 8508 +XXXXXXXX.com ALTERNET 9512 951101 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9512 951101 556.60 line-9512 +XXXXXXXX.com PAYMENT 9511 951103 2129.83 8837 +XXXXXXXX.com ALTERNET 9601 951201 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9601 951201 556.60 line-9601 +XXXXXXXX.com PAYMENT 9512 951204 2129.83 9131 +XXXXXXXX.com ALTERNET 9602 960101 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9602 960101 556.60 line-9602 +XXXXXXXX.com PAYMENT 9601 960103 1744.10 9456 +XXXXXXXX.com ALTERNET 9603 960201 1187.50 TCP-bt1-128k%5.00 +XXXXXXXX.com ALTERNET 9603 960201 556.60 line-9603 +XXXXXXXX.com PAYMENT 9602 960205 1358.37 9834 diff --git a/src/tool/awk/testdata/gawk/nasty.awk b/src/tool/awk/testdata/gawk/nasty.awk new file mode 100644 index 0000000..b9c20c8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nasty.awk @@ -0,0 +1,92 @@ +#From hankedr@manatee.dms.auburn.edu Tue Oct 13 22:15:59 1998 +#Return-Path: +#Received: from cssun.mathcs.emory.edu (cssun.mathcs.emory.edu [170.140.150.1]) +# by dmx.netvision.net.il (8.9.0.Beta5/8.8.6) with ESMTP id PAA03924 +# for ; Tue, 13 Oct 1998 15:32:13 +0200 (IST) +#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id KAA11644 for ; Tue, 13 Oct 1998 10:22:32 -0400 (EDT) +#Received: from manatee.dms.auburn.edu (manatee.dms.auburn.edu [131.204.53.104]) +# by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id KAA03250 +# for ; Tue, 13 Oct 1998 10:25:32 -0400 +#Received: (from hankedr@localhost) +# by manatee.dms.auburn.edu (8.9.1a/8.9.1) id JAA13348; +# Tue, 13 Oct 1998 09:22:29 -0500 (CDT) +#Date: Tue, 13 Oct 1998 09:22:29 -0500 (CDT) +#Message-Id: <199810131422.JAA13348@manatee.dms.auburn.edu> +#From: Darrel Hankerson +#To: arnold@gnu.org +#In-reply-to: <199810131313.QAA31784@alpha.netvision.net.il> (message from +# Aharon Robbins on Tue, 13 Oct 1998 16:10:36 +0200) +#Subject: Re: full text of bug report? +#Mime-Version: 1.0 +#Content-Type: text/plain; charset=US-ASCII +#X-UIDL: bf3fce492dad4ab030c561e7b2f27d0a +#Status: RO +# +# Do you have the full text of the a = a "\n" f() bug report? +# I can't find it.... I'm not sure there really is a bug. +# +#Yes, see below. +# +#His example has unnecessary fragments (in particular, the use of +#gensub is irrelevant). As I wrote to you earlier, the interesting +#question for me is: +# +# Is the concatenation result undefined? If the result is defined or +# implementation-dependent, then gawk has a bug. +# +# +#=== Original report ===================================================== +#From: Attila Torcsvari +#To: "'bug-gnu-utils@prep.ai.mit.edu'" +#Subject: gawk 3.0.3 bug +#Date: Thu, 17 Sep 1998 18:12:13 +0200 +#MIME-Version: 1.0 +#Content-Transfer-Encoding: 7bit +#Resent-From: bug-gnu-utils@gnu.org +#X-Mailing-List: archive/latest/3396 +#X-Loop: bug-gnu-utils@gnu.org +#Precedence: list +#Resent-Sender: bug-gnu-utils-request@gnu.org +#Content-Transfer-Encoding: 7bit +#Content-Type: text/plain; charset="us-ascii" +#Content-Length: 618 +# +#Bug-gnuers, +#please pass it to the responsible. +# +#The following generates something interesting: +# +BEGIN{ +a="aaaaa" +a=a a #10 +a=a a #20 +a=a a #40 +a=a a #80 +a=a a #160 +a=a a # i.e. a is long enough + +a=a"\n"f() # this causes the trouble +print a # guess the result +} + +function f() +{ +#print "a before: ", a +#a=gensub("a","123,","g",a) # 'a' will be just a bit longer (4 times, but still should fit: 4*160=640) +gsub(/a/, "123", a) +#print "a after: ", a +return "X" +} +# +#Possible reason: +#during f the a is modified, +#it can be even freed, because gensub modifies its size +#the printout contains trash. +# +#Used version: VC compiled WinNT 32 bit Intel. +# +#Regards, +# +#Attila Torcsvari +#Arcanum Development +# diff --git a/src/tool/awk/testdata/gawk/nasty.ok b/src/tool/awk/testdata/gawk/nasty.ok new file mode 100644 index 0000000..0ee1a73 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nasty.ok @@ -0,0 +1,2 @@ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +X diff --git a/src/tool/awk/testdata/gawk/nasty2.awk b/src/tool/awk/testdata/gawk/nasty2.awk new file mode 100644 index 0000000..cb0bd6d --- /dev/null +++ b/src/tool/awk/testdata/gawk/nasty2.awk @@ -0,0 +1,20 @@ +# Based on nasty.awk, test same thing for printf +# +BEGIN { +a="aaaaa" +a=a a #10 +a=a a #20 +a=a a #40 +a=a a #80 +a=a a #160 +a=a a # i.e. a is long enough + +printf("a = %s, f() = %s\n", a, f()) +print a +} + +function f() +{ +gsub(/a/, "123", a) +return "X" +} diff --git a/src/tool/awk/testdata/gawk/nasty2.ok b/src/tool/awk/testdata/gawk/nasty2.ok new file mode 100644 index 0000000..9b62bf0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nasty2.ok @@ -0,0 +1,2 @@ +a = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, f() = X +123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123 diff --git a/src/tool/awk/testdata/gawk/negexp.awk b/src/tool/awk/testdata/gawk/negexp.awk new file mode 100644 index 0000000..3b3a3c0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/negexp.awk @@ -0,0 +1 @@ +BEGIN { a = -2; print 10^a } diff --git a/src/tool/awk/testdata/gawk/negexp.ok b/src/tool/awk/testdata/gawk/negexp.ok new file mode 100644 index 0000000..6e6566c --- /dev/null +++ b/src/tool/awk/testdata/gawk/negexp.ok @@ -0,0 +1 @@ +0.01 diff --git a/src/tool/awk/testdata/gawk/negrange.awk b/src/tool/awk/testdata/gawk/negrange.awk new file mode 100644 index 0000000..a905b7f --- /dev/null +++ b/src/tool/awk/testdata/gawk/negrange.awk @@ -0,0 +1,7 @@ +BEGIN { + s = "Volume 8, Numbers 1-2 / January 1971" + n = split(s, parts, "[^-A-Za-z0-9]+") + print "n =", n + for (i = 1; i <= n; i++) + printf("s[%d] = \"%s\"\n", i, parts[i]) +} diff --git a/src/tool/awk/testdata/gawk/negrange.ok b/src/tool/awk/testdata/gawk/negrange.ok new file mode 100644 index 0000000..57f4c8e --- /dev/null +++ b/src/tool/awk/testdata/gawk/negrange.ok @@ -0,0 +1,7 @@ +n = 6 +s[1] = "Volume" +s[2] = "8" +s[3] = "Numbers" +s[4] = "1-2" +s[5] = "January" +s[6] = "1971" diff --git a/src/tool/awk/testdata/gawk/nested.awk b/src/tool/awk/testdata/gawk/nested.awk new file mode 100644 index 0000000..5284b55 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nested.awk @@ -0,0 +1,123 @@ +# From james@ruari-quinn.demon.co.uk Thu Jun 5 11:43:58 2003 +# Return-Path: +# Received: from localhost (skeeve [127.0.0.1]) +# by skeeve.com (8.12.5/8.12.5) with ESMTP id h558eVui012655 +# for ; Thu, 5 Jun 2003 11:43:58 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Thu, 05 Jun 2003 11:43:58 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Jun 5 11:43:29 2003) +# X-From_: james@ruari-quinn.demon.co.uk Wed Jun 4 20:09:54 2003 +# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id h54H9oY05088 for ; +# Wed, 4 Jun 2003 20:09:52 +0300 (EET DST) +# (rfc931-sender: smtp.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h54HB8To002721 +# for ; Wed, 4 Jun 2003 20:11:09 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.7/8.11.6) with ESMTP id h54H9li15411 +# for ; Wed, 4 Jun 2003 13:09:47 -0400 +# Received: from monty-python.gnu.org ([199.232.76.173]) +# by fencepost.gnu.org with esmtp (Exim 4.20) +# id 19Nbli-0001kD-BL +# for bug-gawk@gnu.org; Wed, 04 Jun 2003 13:09:46 -0400 +# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20) +# id 19NbZ5-0004V2-71 +# for bug-gawk@gnu.org; Wed, 04 Jun 2003 12:56:43 -0400 +# Received: from cicero.e-mis.co.uk ([212.240.194.162]) +# by monty-python.gnu.org with esmtp (Exim 4.20) +# id 19NbYK-0003c7-AP +# for bug-gawk@gnu.org; Wed, 04 Jun 2003 12:55:56 -0400 +# Received: from [10.139.58.254] (helo=tacitus) +# by cicero.e-mis.co.uk with esmtp (Exim 3.35 #1 (Debian)) +# id 19NbWO-0007Qv-00 +# for ; Wed, 04 Jun 2003 17:53:56 +0100 +# Received: from james by tacitus with local (Exim 3.36 #1 (Debian)) +# id 19NbWO-0000cK-00 +# for ; Wed, 04 Jun 2003 17:53:56 +0100 +# To: bug-gawk@gnu.org +# Subject: 3.1.0 regression +# Mail-Copies-To: never +# From: James Troup +# User-Agent: Gnus/5.090017 (Oort Gnus v0.17) Emacs/20.7 (gnu/linux) +# Date: Wed, 04 Jun 2003 17:53:56 +0100 +# Message-ID: <874r35wzq3.fsf@nocrew.org> +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# Sender: James Troup +# X-Spam-Status: No, hits=-3.9 required=5.0 +# tests=EMAIL_ATTRIBUTION,SIGNATURE_SHORT_DENSE,SPAM_PHRASE_00_01, +# USER_AGENT +# version=2.41 +# X-Spam-Level: +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: R +# +# Hi Aharon, +# +# This bug report comes from the Debian bug tracking system. You can +# view the full log at: +# +# http://bugs.debian.org/188345 +# +# Like my other bug, this is a regression from 3.1.0 and I've reproduced +# this problem with 3.1.2d. +# +# "Nikita V. Youshchenko" writes: +# +# | Package: gawk +# | Version: 1:3.1.2-2 +# | Severity: normal +# | Tags: sid +# | +# | After upgrading gawk from woody to sid, I found one of my scripts not +# | working. I explored this a little and found minimal script to reproduce +# | the problem. +# | +# | File bug.awk is the following: +# | +BEGIN { + WI_total = 0 +} +{ + WI_total++ + { + split ( $1, sws, "_" ) + a = sws[1] + } + print(sws[1]) + print(a) +} +# | +# | The second print should output the same what first print poutputs, but +# | with gawk 3.1.2-2 it outputs nothing: +# | > echo a_b | gawk -f bug.awk +# | a +# | +# | > +# | +# | With gawk from stable I get what expexted: +# | > echo a_b | gawk -f bug.awk +# | a +# | a +# | > +# | +# | If I remove "WI_total++" line, bug disapperas +# | +# | -- System Information: +# | Debian Release: 3.0 +# | Architecture: i386 +# | Kernel: Linux zigzag 2.4.19 16:49:13 MSK 2003 i686 +# | Locale: LANG=ru_RU.KOI8-R, LC_CTYPE=ru_RU.KOI8-R +# | +# | Versions of packages gawk depends on: +# | ii libc6 2.3.1-16 GNU C Library: Shared libraries an +# | +# | -- no debconf information +# +# -- +# James +# diff --git a/src/tool/awk/testdata/gawk/nested.in b/src/tool/awk/testdata/gawk/nested.in new file mode 100644 index 0000000..31b658b --- /dev/null +++ b/src/tool/awk/testdata/gawk/nested.in @@ -0,0 +1 @@ +a_b diff --git a/src/tool/awk/testdata/gawk/nested.ok b/src/tool/awk/testdata/gawk/nested.ok new file mode 100644 index 0000000..7e8a165 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nested.ok @@ -0,0 +1,2 @@ +a +a diff --git a/src/tool/awk/testdata/gawk/nfldstr.awk b/src/tool/awk/testdata/gawk/nfldstr.awk new file mode 100644 index 0000000..09b4a2b --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfldstr.awk @@ -0,0 +1,13 @@ +$1 == 0 { + print "bug" +} +{ + $0 = "0" + if (!$0) + print "another bug" + $0 = a = "0" + if (!$0) + print "yet another bug" + if ($1) + print "a buggie" +} diff --git a/src/tool/awk/testdata/gawk/nfldstr.in b/src/tool/awk/testdata/gawk/nfldstr.in new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfldstr.in @@ -0,0 +1 @@ + diff --git a/src/tool/awk/testdata/gawk/nfldstr.ok b/src/tool/awk/testdata/gawk/nfldstr.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/nfloop.awk b/src/tool/awk/testdata/gawk/nfloop.awk new file mode 100644 index 0000000..c37700a --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfloop.awk @@ -0,0 +1,8 @@ +BEGIN { + $0 = "aaa" + NF = 10 + for (j = 2; j <= NF; ++j) { + $j = "_" + } + print +} diff --git a/src/tool/awk/testdata/gawk/nfloop.ok b/src/tool/awk/testdata/gawk/nfloop.ok new file mode 100644 index 0000000..cc683ea --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfloop.ok @@ -0,0 +1 @@ +aaa _ _ _ _ _ _ _ _ _ diff --git a/src/tool/awk/testdata/gawk/nfneg.awk b/src/tool/awk/testdata/gawk/nfneg.awk new file mode 100644 index 0000000..6d54ee0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfneg.awk @@ -0,0 +1 @@ +BEGIN { NF -= 2 ; print } diff --git a/src/tool/awk/testdata/gawk/nfneg.ok b/src/tool/awk/testdata/gawk/nfneg.ok new file mode 100644 index 0000000..52da932 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfneg.ok @@ -0,0 +1 @@ +NF set to negative value: -2 \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/nfset.awk b/src/tool/awk/testdata/gawk/nfset.awk new file mode 100644 index 0000000..09ebd08 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfset.awk @@ -0,0 +1 @@ +{ NF = 5 ; print } diff --git a/src/tool/awk/testdata/gawk/nfset.in b/src/tool/awk/testdata/gawk/nfset.in new file mode 100644 index 0000000..43329b5 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfset.in @@ -0,0 +1,5 @@ +1 2 +1 2 3 4 +1 2 3 4 5 +1 2 3 4 5 6 7 8 +1 diff --git a/src/tool/awk/testdata/gawk/nfset.ok b/src/tool/awk/testdata/gawk/nfset.ok new file mode 100644 index 0000000..3ba48ae --- /dev/null +++ b/src/tool/awk/testdata/gawk/nfset.ok @@ -0,0 +1,5 @@ +1 2 +1 2 3 4 +1 2 3 4 5 +1 2 3 4 5 +1 diff --git a/src/tool/awk/testdata/gawk/nlfldsep.awk b/src/tool/awk/testdata/gawk/nlfldsep.awk new file mode 100644 index 0000000..4fac81d --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlfldsep.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "A" } +{print NF; for (i = 1; i <= NF; i++) print $i ; print ""} diff --git a/src/tool/awk/testdata/gawk/nlfldsep.in b/src/tool/awk/testdata/gawk/nlfldsep.in new file mode 100644 index 0000000..7b2317f --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlfldsep.in @@ -0,0 +1,5 @@ +some stuff +more stuffA +junk +stuffA +final diff --git a/src/tool/awk/testdata/gawk/nlfldsep.ok b/src/tool/awk/testdata/gawk/nlfldsep.ok new file mode 100644 index 0000000..6684916 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlfldsep.ok @@ -0,0 +1,13 @@ +4 +some +stuff +more +stuff + +2 +junk +stuff + +1 +final + diff --git a/src/tool/awk/testdata/gawk/nlinstr.awk b/src/tool/awk/testdata/gawk/nlinstr.awk new file mode 100644 index 0000000..f403715 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlinstr.awk @@ -0,0 +1,8 @@ +BEGIN { RS = "" } + +{ + if (/^@/) + print "not ok" + else + print "ok" +} diff --git a/src/tool/awk/testdata/gawk/nlinstr.in b/src/tool/awk/testdata/gawk/nlinstr.in new file mode 100644 index 0000000..65aaaf9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlinstr.in @@ -0,0 +1,2 @@ +line 1 +@line 2 diff --git a/src/tool/awk/testdata/gawk/nlinstr.ok b/src/tool/awk/testdata/gawk/nlinstr.ok new file mode 100644 index 0000000..9766475 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlinstr.ok @@ -0,0 +1 @@ +ok diff --git a/src/tool/awk/testdata/gawk/nlstrina.awk b/src/tool/awk/testdata/gawk/nlstrina.awk new file mode 100644 index 0000000..41dbd5f --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlstrina.awk @@ -0,0 +1,77 @@ +# From E.Ab@chem.rug.nl Wed Aug 2 13:16:53 2000 +# Received: from mail.actcom.co.il +# by localhost with POP3 (fetchmail-5.1.2) +# for arnold@localhost (single-drop); Wed, 02 Aug 2000 13:16:53 -0400 (EDT) +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.9.1a/actcom-0.2) id MAA21699 for ; +# Wed, 2 Aug 2000 12:20:38 +0300 (EET DST) +# (rfc931-sender: lmail.actcom.co.il [192.114.47.13]) +# Received: from freefriends.org (freefriends.org [63.85.55.109]) +# by lmail.actcom.co.il (8.9.3/8.9.1) with ESMTP id LAA22723 +# for ; Wed, 2 Aug 2000 11:23:22 +0300 +# Received: from mescaline.gnu.org (mescaline.gnu.org [158.121.106.21]) +# by freefriends.org (8.9.3/8.9.3) with ESMTP id FAA23582 +# for ; Wed, 2 Aug 2000 05:18:59 -0400 +# Received: from dep.chem.rug.nl (dep.chem.rug.nl [129.125.7.81]) +# by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id FAA30670; +# Wed, 2 Aug 2000 05:20:24 -0400 +# Received: from rugmd34.chem.rug.nl (rugmd34.chem.rug.nl [129.125.42.34]) +# by dep.chem.rug.nl (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id LAA17089; +# Wed, 2 Aug 2000 11:20:23 +0200 +# Received: from chem.rug.nl (localhost [127.0.0.1]) by rugmd34.chem.rug.nl (980427.SGI.8.8.8/980728.SGI.AUTOCF) via ESMTP id LAA25392; Wed, 2 Aug 2000 11:20:22 +0200 (MDT) +# Sender: E.Ab@chem.rug.nl +# Message-ID: <3987E7D5.2BDC5FD3@chem.rug.nl> +# Date: Wed, 02 Aug 2000 11:20:21 +0200 +# From: Eiso AB +# X-Mailer: Mozilla 4.72C-SGI [en] (X11; I; IRIX 6.5 IP32) +# X-Accept-Language: en +# MIME-Version: 1.0 +# To: bug-gnu-utils@gnu.org, arnold@gnu.org +# Subject: bug? [GNU Awk 3.0.5] +# +# Content-Type: text/plain; charset=us-ascii +# Content-Transfer-Encoding: 7bit +# X-UIDL: \f8"!(8G!!ZL$#!h>X!! +# Status: R +# +# hi Arnold, +# +# +# Please try the script beneath... +# I'm not sure if this is a bug or not, but I would expect +# the empty string as an array index just to be treated +# like any other string +# +# so if ("" in ta) would be true, and for ( i in ta ) should loop only once. +# +BEGIN { + v="" + ta[v]++ + if ( v in ta) print "a",v,++ta[v],ta[v] + print "b",v,++ta[v],ta[v] + for( i in ta) print "c",++c,i,ta[i] +} +# +# goodluck, Eiso +# +# -- +# _________ +# _______________________________/ Eiso AB \_________________________ +# +# o +# +# o Dept. of Biochemistry +# University of Groningen +# The Netherlands +# o +# . . +# o ^ mailto:eiso@chem.rug.nl +# | - _ mailto:eiso@dds.nl +# \__|__/ http://md.chem.rug.nl/~eiso +# | tel 4326 +# | +# / \ +# / \ +# | | +# ________ ._| |_. ________________________________________________ +# diff --git a/src/tool/awk/testdata/gawk/nlstrina.ok b/src/tool/awk/testdata/gawk/nlstrina.ok new file mode 100644 index 0000000..690f1a2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nlstrina.ok @@ -0,0 +1,3 @@ +a 2 2 +b 3 3 +c 1 3 diff --git a/src/tool/awk/testdata/gawk/noeffect.awk b/src/tool/awk/testdata/gawk/noeffect.awk new file mode 100644 index 0000000..4be76b1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noeffect.awk @@ -0,0 +1,10 @@ +BEGIN { + s == "hello, world"; + s + 1 + ;; + "s" 1 + "a" + 42 + q = 42 + q +} diff --git a/src/tool/awk/testdata/gawk/noeffect.ok b/src/tool/awk/testdata/gawk/noeffect.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/nofmtch.awk b/src/tool/awk/testdata/gawk/nofmtch.awk new file mode 100644 index 0000000..2ea2249 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nofmtch.awk @@ -0,0 +1 @@ +BEGIN { printf "%3\n" } diff --git a/src/tool/awk/testdata/gawk/nofmtch.ok b/src/tool/awk/testdata/gawk/nofmtch.ok new file mode 100644 index 0000000..d4d50b1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nofmtch.ok @@ -0,0 +1 @@ +format error: invalid format type '\n' \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/noloop1.awk b/src/tool/awk/testdata/gawk/noloop1.awk new file mode 100644 index 0000000..ae461e3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noloop1.awk @@ -0,0 +1,70 @@ +# From jhart@avcnet.bates.edu Sun Oct 6 16:05:21 2002 +# Return-Path: +# Received: from localhost (skeeve [127.0.0.1]) +# by skeeve.com (8.11.6/8.11.6) with ESMTP id g96D5Jf28053 +# for ; Sun, 6 Oct 2002 16:05:21 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Sun, 06 Oct 2002 16:05:21 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Oct 6 16:06:39 2002) +# X-From_: jhart@avcnet.bates.edu Sun Oct 6 15:31:59 2002 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id g96CVrS27315 for ; +# Sun, 6 Oct 2002 15:31:54 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g96CVqY01629 +# for ; Sun, 6 Oct 2002 15:31:52 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.6/8.11.6) with ESMTP id g96CVp418974 +# for ; Sun, 6 Oct 2002 08:31:51 -0400 +# Received: from monty-python.gnu.org ([199.232.76.173]) +# by fencepost.gnu.org with esmtp (Exim 4.10) +# id 17yAZa-00055o-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:50 -0400 +# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) +# id 17yAZE-0007eB-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:29 -0400 +# Received: from avcnet.bates.edu ([134.181.128.62]) +# by monty-python.gnu.org with esmtp (Exim 4.10) +# id 17yAZ9-0007X3-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:23 -0400 +# Received: from a5514a.bates.edu (www.bates.edu [134.181.128.62]) +# by avcnet.bates.edu (8.9.3/8.9.3) with ESMTP id IAA05400 +# for ; Sun, 6 Oct 2002 08:31:20 -0400 +# Date: Sun, 6 Oct 2002 08:36:54 -0400 +# Mime-Version: 1.0 (Apple Message framework v482) +# Content-Type: text/plain; charset=US-ASCII; format=flowed +# Subject: Infinite loop in sub/gsub +# From: jhart@avcnet.bates.edu +# To: bug-gawk@gnu.org +# Content-Transfer-Encoding: 7bit +# Message-Id: <4BC4A4F0-D928-11D6-8E78-00039384A9CC@mail.avcnet.org> +# X-Mailer: Apple Mail (2.482) +# X-Spam-Status: No, hits=0.3 required=5.0 +# tests=NO_REAL_NAME,SPAM_PHRASE_00_01,USER_AGENT_APPLEMAIL +# version=2.41 +# X-Spam-Level: +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# This command line: +# +# echo "''Italics with an apostrophe'' embedded''"|gawk -f test.awk +# +# where test.awk contains this instruction: +# +/''/ { sub(/''(.?[^']+)*''/, "&"); } +# +# puts gawk 3.11 into an infinite loop. Whereas, this command works: +# +# echo "''Italics with an apostrophe' embedded''"|gawk -f test.awk +# +# +# +# Platform: Mac OS X 10.1.5/Darwin Kernel Version 5.5: Thu May 30 14:51:26 +# PDT 2002; root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC +# +# diff --git a/src/tool/awk/testdata/gawk/noloop1.in b/src/tool/awk/testdata/gawk/noloop1.in new file mode 100644 index 0000000..da2c2f2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noloop1.in @@ -0,0 +1 @@ +''Italics with an apostrophe'' embedded'' diff --git a/src/tool/awk/testdata/gawk/noloop1.ok b/src/tool/awk/testdata/gawk/noloop1.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/noloop2.awk b/src/tool/awk/testdata/gawk/noloop2.awk new file mode 100644 index 0000000..ae461e3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noloop2.awk @@ -0,0 +1,70 @@ +# From jhart@avcnet.bates.edu Sun Oct 6 16:05:21 2002 +# Return-Path: +# Received: from localhost (skeeve [127.0.0.1]) +# by skeeve.com (8.11.6/8.11.6) with ESMTP id g96D5Jf28053 +# for ; Sun, 6 Oct 2002 16:05:21 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Sun, 06 Oct 2002 16:05:21 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Oct 6 16:06:39 2002) +# X-From_: jhart@avcnet.bates.edu Sun Oct 6 15:31:59 2002 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id g96CVrS27315 for ; +# Sun, 6 Oct 2002 15:31:54 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g96CVqY01629 +# for ; Sun, 6 Oct 2002 15:31:52 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.6/8.11.6) with ESMTP id g96CVp418974 +# for ; Sun, 6 Oct 2002 08:31:51 -0400 +# Received: from monty-python.gnu.org ([199.232.76.173]) +# by fencepost.gnu.org with esmtp (Exim 4.10) +# id 17yAZa-00055o-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:50 -0400 +# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) +# id 17yAZE-0007eB-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:29 -0400 +# Received: from avcnet.bates.edu ([134.181.128.62]) +# by monty-python.gnu.org with esmtp (Exim 4.10) +# id 17yAZ9-0007X3-00 +# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:23 -0400 +# Received: from a5514a.bates.edu (www.bates.edu [134.181.128.62]) +# by avcnet.bates.edu (8.9.3/8.9.3) with ESMTP id IAA05400 +# for ; Sun, 6 Oct 2002 08:31:20 -0400 +# Date: Sun, 6 Oct 2002 08:36:54 -0400 +# Mime-Version: 1.0 (Apple Message framework v482) +# Content-Type: text/plain; charset=US-ASCII; format=flowed +# Subject: Infinite loop in sub/gsub +# From: jhart@avcnet.bates.edu +# To: bug-gawk@gnu.org +# Content-Transfer-Encoding: 7bit +# Message-Id: <4BC4A4F0-D928-11D6-8E78-00039384A9CC@mail.avcnet.org> +# X-Mailer: Apple Mail (2.482) +# X-Spam-Status: No, hits=0.3 required=5.0 +# tests=NO_REAL_NAME,SPAM_PHRASE_00_01,USER_AGENT_APPLEMAIL +# version=2.41 +# X-Spam-Level: +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# This command line: +# +# echo "''Italics with an apostrophe'' embedded''"|gawk -f test.awk +# +# where test.awk contains this instruction: +# +/''/ { sub(/''(.?[^']+)*''/, "&"); } +# +# puts gawk 3.11 into an infinite loop. Whereas, this command works: +# +# echo "''Italics with an apostrophe' embedded''"|gawk -f test.awk +# +# +# +# Platform: Mac OS X 10.1.5/Darwin Kernel Version 5.5: Thu May 30 14:51:26 +# PDT 2002; root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC +# +# diff --git a/src/tool/awk/testdata/gawk/noloop2.in b/src/tool/awk/testdata/gawk/noloop2.in new file mode 100644 index 0000000..b5cb226 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noloop2.in @@ -0,0 +1 @@ +''Italics with an apostrophe' embedded'' diff --git a/src/tool/awk/testdata/gawk/noloop2.ok b/src/tool/awk/testdata/gawk/noloop2.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/nonl.awk b/src/tool/awk/testdata/gawk/nonl.awk new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nonl.awk @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/nonl.in b/src/tool/awk/testdata/gawk/nonl.in new file mode 100644 index 0000000..91195ee --- /dev/null +++ b/src/tool/awk/testdata/gawk/nonl.in @@ -0,0 +1 @@ +junk \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/nonl.ok b/src/tool/awk/testdata/gawk/nonl.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/noparms.awk b/src/tool/awk/testdata/gawk/noparms.awk new file mode 100644 index 0000000..2c7ccc7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noparms.awk @@ -0,0 +1 @@ +function x(a, b, c , ,) {} diff --git a/src/tool/awk/testdata/gawk/noparms.ok b/src/tool/awk/testdata/gawk/noparms.ok new file mode 100644 index 0000000..2d65e24 --- /dev/null +++ b/src/tool/awk/testdata/gawk/noparms.ok @@ -0,0 +1 @@ +parse error at 1:22: expected name instead of , \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/nulinsrc.awk b/src/tool/awk/testdata/gawk/nulinsrc.awk new file mode 100644 index 0000000000000000000000000000000000000000..aecda8620b6939f3c50e928faf34060173be2f34 GIT binary patch literal 3 KcmdOoVE_ODNC1og literal 0 HcmV?d00001 diff --git a/src/tool/awk/testdata/gawk/nulinsrc.ok b/src/tool/awk/testdata/gawk/nulinsrc.ok new file mode 100644 index 0000000..351d789 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nulinsrc.ok @@ -0,0 +1 @@ +parse error at 1:4: didn't find end slash in regex \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/nulrsend.awk b/src/tool/awk/testdata/gawk/nulrsend.awk new file mode 100644 index 0000000..6b8cb8c --- /dev/null +++ b/src/tool/awk/testdata/gawk/nulrsend.awk @@ -0,0 +1,112 @@ +# From murata@nips.ac.jp Tue Aug 6 08:02:14 2002 +# Return-Path: +# Received: from localhost (aahz [127.0.0.1]) +# by skeeve.com (8.11.2/8.11.2) with ESMTP id g7652Ej01784 +# for ; Tue, 6 Aug 2002 08:02:14 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.7.4) +# for arnold@localhost (single-drop); Mon, 05 Aug 2002 22:02:14 -0700 (PDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue Aug 6 08:13:06 2002) +# X-From_: murata@nips.ac.jp Tue Aug 6 07:26:32 2002 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id g764QTu27770 for ; +# Tue, 6 Aug 2002 07:26:30 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g764QRi04673 +# for ; Tue, 6 Aug 2002 07:26:28 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.6/8.11.6) with ESMTP id g764QQ920486 +# for ; Tue, 6 Aug 2002 00:26:26 -0400 +# Received: from ccms.nips.ac.jp ([133.48.72.2]) +# by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) +# id 17bvvL-00011b-00 +# for ; Tue, 06 Aug 2002 00:26:23 -0400 +# Received: (from murata@localhost) +# by ccms.nips.ac.jp (8.9.3+3.2W/3.7W) id NAA01026; +# Tue, 6 Aug 2002 13:26:21 +0900 +# Date: Tue, 6 Aug 2002 13:26:21 +0900 +# Message-Id: <200208060426.NAA01026@ccms.nips.ac.jp> +# To: bug-gawk@gnu.org +# Cc: murata@nips.ac.jp +# Subject: Bug Report (gawk) +# From: murata@nips.ac.jp (MURATA Yasuhisa) +# Mime-Version: 1.0 +# Content-Type: text/plain; charset=US-ASCII +# X-Mailer: mnews [version 1.21PL5] 1999-04/04(Sun) +# +# Hello, I report a bug. +# +# +# == PROGRAM (filename: atest.awk) == +BEGIN { + RS="" +} + +NR==1 { + print 1 + RS="\n" + next +} + +NR==2 { + print 2 + RS="" + next +} + +NR==3 { + print 3 + RS="\n" + next +} +# ==== +# +# == DATA (filename: atest.txt) == +# 1111 +# +# 2222 +# +# ==== +# note: last line is "\n". +# +# +# == RUN (gawk) == +# > gawk -f atest.awk atest.txt +# 1 +# 2 +# (no stop!) +# ==== +# +# == RUN (nawk) == +# > nawk -f atest.awk atest.txt +# 1 +# 2 +# 3 +# ==== +# +# == VERSION == +# > gawk --version +# GNU Awk 3.1.1 +# Copyright (C) 1989, 1991-2002 Free Software Foundation. +# +# 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 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# == +# +# -- +# MURATA Yasuhisa, Technical Staff +# National Institute for Physiological Sciences +# E-mail: murata@nips.ac.jp diff --git a/src/tool/awk/testdata/gawk/nulrsend.in b/src/tool/awk/testdata/gawk/nulrsend.in new file mode 100644 index 0000000..af3eba1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nulrsend.in @@ -0,0 +1,4 @@ +1111 + +2222 + diff --git a/src/tool/awk/testdata/gawk/nulrsend.ok b/src/tool/awk/testdata/gawk/nulrsend.ok new file mode 100644 index 0000000..1191247 --- /dev/null +++ b/src/tool/awk/testdata/gawk/nulrsend.ok @@ -0,0 +1,2 @@ +1 +2 diff --git a/src/tool/awk/testdata/gawk/numindex.awk b/src/tool/awk/testdata/gawk/numindex.awk new file mode 100644 index 0000000..1762e45 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numindex.awk @@ -0,0 +1,55 @@ +#To: bug-gnu-utils@gnu.org +#cc: arnold@gnu.org +#Subject: Possible bug in GNU Awk 3.0.4 +#Date: Wed, 24 Nov 1999 21:47:24 +0000 +#From: Daniel Elphick +#Message-Id: +# +#This is a multipart MIME message. +# +#--==_Exmh_-11192982200 +#Content-Type: text/plain; charset=us-ascii +# +# +#When I use the attached awk script unique on the attached data file, it +#reports that all 4 lines of the data are the same. Using mawk it correctly +#reports that there are no repeats. +# +#I don't know if there are limits on the size of associative array keys for the +#purposes of reliable indexing but if there is then it is not (obviously) +#documented. +# +# +#--==_Exmh_-11192982200 +#Content-Type: text/plain ; name="data"; charset=us-ascii +#Content-Description: data +#Content-Disposition: attachment; filename="data" +# +#322322111111112232231111 +#322322111111112213223111 +#322322111111112211132231 +#322322111111112211113223 +# +#--==_Exmh_-11192982200 +#Content-Type: text/plain ; name="unique"; charset=us-ascii +#Content-Description: unique +#Content-Disposition: attachment; filename="unique" +# +{ + if($0 in a) + { + printf("line %d has been seen before at line %d\n", NR, a[$0]) + repeat_count += 1 + } + else + { + a[$0] = NR + } + count += 1 +} +END { +# printf("%d %f%%\n", repeat_count, (float)repeat_count / count * 100) + printf("%d %f%%\n", repeat_count, repeat_count / count * 100) +} +# +#--==_Exmh_-11192982200-- diff --git a/src/tool/awk/testdata/gawk/numindex.in b/src/tool/awk/testdata/gawk/numindex.in new file mode 100644 index 0000000..3852058 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numindex.in @@ -0,0 +1,4 @@ +322322111111112232231111 +322322111111112213223111 +322322111111112211132231 +322322111111112211113223 diff --git a/src/tool/awk/testdata/gawk/numindex.ok b/src/tool/awk/testdata/gawk/numindex.ok new file mode 100644 index 0000000..8e086f6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numindex.ok @@ -0,0 +1 @@ +0 0.000000% diff --git a/src/tool/awk/testdata/gawk/numrange.awk b/src/tool/awk/testdata/gawk/numrange.awk new file mode 100644 index 0000000..3ad2cab --- /dev/null +++ b/src/tool/awk/testdata/gawk/numrange.awk @@ -0,0 +1,5 @@ +BEGIN { + n = split("-1.2e+931 1.2e+931", a) + for (i=1; i<=n; ++i) + print a[i], +a[i] +} diff --git a/src/tool/awk/testdata/gawk/numrange.ok b/src/tool/awk/testdata/gawk/numrange.ok new file mode 100644 index 0000000..006da13 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numrange.ok @@ -0,0 +1,2 @@ +-1.2e+931 -inf +1.2e+931 inf diff --git a/src/tool/awk/testdata/gawk/numstr1.awk b/src/tool/awk/testdata/gawk/numstr1.awk new file mode 100644 index 0000000..e58404f --- /dev/null +++ b/src/tool/awk/testdata/gawk/numstr1.awk @@ -0,0 +1,7 @@ +BEGIN { + split("1.234", f) + OFMT = "%.1f" + print f[1] + x = f[1]+0 + print f[1] +} diff --git a/src/tool/awk/testdata/gawk/numstr1.ok b/src/tool/awk/testdata/gawk/numstr1.ok new file mode 100644 index 0000000..434a231 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numstr1.ok @@ -0,0 +1,2 @@ +1.234 +1.234 diff --git a/src/tool/awk/testdata/gawk/numsubstr.awk b/src/tool/awk/testdata/gawk/numsubstr.awk new file mode 100644 index 0000000..7a30993 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numsubstr.awk @@ -0,0 +1 @@ +{ print substr(1000+$1, 2) } diff --git a/src/tool/awk/testdata/gawk/numsubstr.in b/src/tool/awk/testdata/gawk/numsubstr.in new file mode 100644 index 0000000..ac65c36 --- /dev/null +++ b/src/tool/awk/testdata/gawk/numsubstr.in @@ -0,0 +1,3 @@ +5000 +10000 +5000 diff --git a/src/tool/awk/testdata/gawk/numsubstr.ok b/src/tool/awk/testdata/gawk/numsubstr.ok new file mode 100644 index 0000000..86ec13c --- /dev/null +++ b/src/tool/awk/testdata/gawk/numsubstr.ok @@ -0,0 +1,3 @@ +000 +1000 +000 diff --git a/src/tool/awk/testdata/gawk/octsub.awk b/src/tool/awk/testdata/gawk/octsub.awk new file mode 100644 index 0000000..65e9689 --- /dev/null +++ b/src/tool/awk/testdata/gawk/octsub.awk @@ -0,0 +1 @@ +BEGIN{ ++x[03]; print "/" x[0] "/" x[3] "/"} diff --git a/src/tool/awk/testdata/gawk/octsub.ok b/src/tool/awk/testdata/gawk/octsub.ok new file mode 100644 index 0000000..95cbdc7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/octsub.ok @@ -0,0 +1 @@ +//1/ diff --git a/src/tool/awk/testdata/gawk/ofmt.awk b/src/tool/awk/testdata/gawk/ofmt.awk new file mode 100644 index 0000000..a7b63d6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmt.awk @@ -0,0 +1,53 @@ +# From dragon!knorke.saar.de!florian Wed Jul 16 10:47:27 1997 +# Return-Path: +# Message-ID: <19970716164451.63610@knorke.saar.de> +# Date: Wed, 16 Jul 1997 16:44:51 +0200 +# From: Florian La Roche +# To: bug-gnu-utils@prep.ai.mit.edu +# CC: arnold@gnu.ai.mit.edu +# Subject: bug in gawk 3.0.3 +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# X-Mailer: Mutt 0.76 +# Status: R +# Content-Length: 1725 +# X-Lines: 177 +# X-Display-Position: 0 +# +# I have a problem with gawk 3.0.3 on linux with libc 5.4.33. +# The memory is corrupted, if I use OFMT = "%.12g". +# With OFMT = "%.6g" evrything works fine, but I don't have enough +# digits for the computation. +# +# Thanks a lot, +# Florian La Roche +# +# Here is the sample awk-Script together with sample data: +# +BEGIN { + OFMT = "%.12g" + big = 99999999999 + lowest = big + small = 0 + highest = small + dir = "" + } +$0 ~ /^[0-9]+$/ { + # some old awks do not think $0 is numeric, so use $1 + if ($1 < lowest) + lowest = $1 + if ($1 > highest) + highest = $1 + next +} +$0 ~ /\/\.:$/ { + if (dir != "") { + if (highest != small) + print dir, highest, lowest + else + print dir, "-", "-" + } + dir = substr($0, 1, length($0)-3) # trim off /.: + lowest = big + highest = small +} diff --git a/src/tool/awk/testdata/gawk/ofmt.in b/src/tool/awk/testdata/gawk/ofmt.in new file mode 100644 index 0000000..6fffdfe --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmt.in @@ -0,0 +1,136 @@ +alt/binaries/warez/crypto/.: +.. +... + +alt/fan/douglas-adams/.: +.. +... +7478 +7479 +7480 +7481 +7482 +7483 +7484 +7485 +7486 +7490 +7488 +7489 +7491 +7407 +7408 +7409 +7410 +7411 +7412 +7413 +7414 +7415 +7416 +7417 +7418 +7419 +7420 +7421 +7422 +7423 +7424 +7425 +7426 +7427 +7428 +7429 +7430 +7431 +7432 +7433 +7434 +7435 +7436 +7437 +7438 +7439 +7440 +7441 +7442 +7443 +7444 +7445 +7446 +7447 +7455 +7449 +7450 +7451 +7452 +7453 +7454 +7456 +7457 +7458 +7459 +7460 +7461 +7462 +7463 +7464 +7465 +7466 +7467 +7468 +7469 +7470 +7471 +7472 +7473 +7475 +7477 + +alt/os/linux/.: +.. +... + + +alt/security/.: +.. +... +pgp +ripem +keydist +index +9617 +9618 +9619 +9620 +9625 +9621 +9626 +9622 +9623 +9624 +9627 +9628 +9629 +9630 +9631 +9632 +9633 +9634 +9636 +9637 +9638 +9639 +9640 +9641 + +alt/security/index/.: +.. +... + +alt/security/keydist/.: +.. +... +253 + +/.: diff --git a/src/tool/awk/testdata/gawk/ofmt.ok b/src/tool/awk/testdata/gawk/ofmt.ok new file mode 100644 index 0000000..389c1ef --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmt.ok @@ -0,0 +1,6 @@ +alt/binaries/warez/crypto - - +alt/fan/douglas-adams 7491 7407 +alt/os/linux - - +alt/security 9641 9617 +alt/security/index - - +alt/security/keydist 253 253 diff --git a/src/tool/awk/testdata/gawk/ofmta.awk b/src/tool/awk/testdata/gawk/ofmta.awk new file mode 100644 index 0000000..8f3bc6e --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmta.awk @@ -0,0 +1,30 @@ +# Date: Thu, 14 Apr 2011 08:18:55 -0500 +# From: j.eh@mchsi.com +# To: arnold@skeeve.com +# Subject: CONVFMT test for the test suite +# Message-ID: <20110414131855.GA1801@apollo> +# +# Hi, +# +# Please consider adding this to the test suite. 3.1.8 segfaults +# with this. +# +# Thanks, +# +# John +# +# +BEGIN { + i=1.2345 + i=3+i + a[i]="hi" + OFMT="%.1f" + print i + for (x in a) print x, a[x] + print a[i] + print "--------" + CONVFMT=OFMT="%.3f" + print i + for (x in a) print x, a[x] + print a[i] +} diff --git a/src/tool/awk/testdata/gawk/ofmta.ok b/src/tool/awk/testdata/gawk/ofmta.ok new file mode 100644 index 0000000..f050dc0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmta.ok @@ -0,0 +1,7 @@ +4.2 +4.2345 hi +hi +-------- +4.234 +4.2345 hi + diff --git a/src/tool/awk/testdata/gawk/ofmtbig.awk b/src/tool/awk/testdata/gawk/ofmtbig.awk new file mode 100644 index 0000000..df4f9bb --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtbig.awk @@ -0,0 +1,126 @@ +# +# [USEMAP] +# +# Problem Report gnu/7821 +# +# awk in free(): warning: chunk is already free. +# +# Confidential +# no +# +# Severity +# serious +# +# Priority +# medium +# +# Responsible +# freebsd-bugs@freebsd.org +# +# State +# suspended +# +# Class +# sw-bug +# +# Submitter-Id +# current-users +# +# Arrival-Date +# Thu Sep 3 10:30:00 PDT 1998 +# +# Last-Modified +# Thu Sep 17 02:04:26 PDT 1998 +# +# Originator +# Alexander Litvin archer@lucky.net +# +# Organization +# +# +#Lucky Net ltd. +# +# Release +# FreeBSD 3.0-CURRENT i386 +# +# Environment +# +# +#FreeBSD grape.carrier.kiev.ua 3.0-CURRENT FreeBSD 3.0-CURRENT #121: Thu Sep 3 +#1 +#1:21:44 EEST 1998 archer@grape.carrier.kiev.ua:/usr/src/sys/compile/GRAPE +#i +#386 +# +# Description +# +# +#The problem first appeared when GNU awk in 3.0-CURRENT was apgraded to +#3.0.3. I run C-News, which uses awk extensively. After awk apgrade C-News +#expire stopped to work. It appeared that some GNU awk 3.0.3 programms when +#given absolutely legitimate input fail, giving out a number of messages: +# +#awk in free(): warning: chunk is already free. +# +# How-To-Repeat +# +# +#Run the following awk program (it is cut out of C-News expire scripts). +#I was not able to cut it down more -- omitting some portions of the +#code (e.g. OFMT line), make error go away in this case, though it +#certainly does not fix awk. +# +#----------------cut-here---------------- +#!/usr/bin/awk -f +BEGIN { + OFMT = "%.12g" + big = 99999999999 + lowest = big + small = 0 + highest = small +} + +$0 ~ /^[0-9]+$/ { + if ($1 < lowest) + lowest = $1 + if ($1 > highest) + highest = $1 + next +} + +# $0 ~ /^[a-z]+/ { +$0 ~ /^[[:lower:]]+/ { + print dir, highest, lowest + dir = $0 + lowest = big + highest = small +} +#----------------cut-here---------------- +# +#To get the error, just give this script the following input: +#----------------cut-here---------------- +#a +#1 +#b +#----------------cut-here---------------- +# +# Fix +# +# +#I was not able to track the error in awk sources. As a workaround, +#I just reverted to GNU awk 2.15.5. +# +# Audit-Trail +# +# +#State-Changed-From-To: open-suspended +#State-Changed-By: phk +#State-Changed-When: Thu Sep 17 02:04:08 PDT 1998 +#State-Changed-Why: +#reported to GNU maintainer. +# +# Submit Followup +# _________________________________________________________________ +# +# +# www@freebsd.org diff --git a/src/tool/awk/testdata/gawk/ofmtbig.in b/src/tool/awk/testdata/gawk/ofmtbig.in new file mode 100644 index 0000000..f1e80ce --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtbig.in @@ -0,0 +1,3 @@ +a +1 +b diff --git a/src/tool/awk/testdata/gawk/ofmtbig.ok b/src/tool/awk/testdata/gawk/ofmtbig.ok new file mode 100644 index 0000000..0fe9251 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtbig.ok @@ -0,0 +1,2 @@ + 0 99999999999 +a 1 1 diff --git a/src/tool/awk/testdata/gawk/ofmtfidl.awk b/src/tool/awk/testdata/gawk/ofmtfidl.awk new file mode 100644 index 0000000..181e071 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtfidl.awk @@ -0,0 +1,85 @@ +# From djones@zoonami.com Wed Jun 13 17:46:27 2001 +# Received: from mail.actcom.co.il [192.114.47.13] +# by localhost with POP3 (fetchmail-5.5.0) +# for arnold@localhost (single-drop); Wed, 13 Jun 2001 17:46:27 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Wed Jun 13 17:47:09 2001) +# X-From_: djones@zoonami.com Wed Jun 13 17:45:40 2001 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.9.1a/actcom-0.2) id RAA07057 for ; +# Wed, 13 Jun 2001 17:45:34 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from billohost.com (www.billohost.com [209.196.35.10]) +# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f5DEjSO24028 +# for ; Wed, 13 Jun 2001 17:45:33 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by billohost.com (8.9.3/8.9.3) with ESMTP id KAA24625 +# for ; Wed, 13 Jun 2001 10:44:43 -0400 +# Received: from topcat.zoonami.com ([193.112.141.198]) +# by fencepost.gnu.org with esmtp (Exim 3.16 #1 (Debian)) +# id 15ABtZ-0000FQ-00 +# for ; Wed, 13 Jun 2001 10:45:21 -0400 +# Received: from topcat.zoonami.com (localhost [127.0.0.1]) +# by topcat.zoonami.com (8.9.3/8.9.3) with ESMTP id OAA28329; +# Wed, 13 Jun 2001 14:45:54 GMT +# (envelope-from djones@topcat.zoonami.com) +# Message-Id: <200106131445.OAA28329@topcat.zoonami.com> +# To: bug-gawk@gnu.org +# cc: David Jones +# Subject: 3.1.0 core dumps. Fiddling with OFMT? +# Date: Wed, 13 Jun 2001 14:45:54 +0000 +# From: David Jones +# Status: R +# +# The following program causes gawk to dump core: +# +# jot 10|./gawk '{OFMT="%."NR"f";print NR}' +# +# 'jot 10', if you didn't know, produces the numbers 1 to 10 each on its +# own line (ie it's like awk 'BEGIN{for(i=1;i<=10;++i)print i}') +# +# Here's an example run: +# +# -- run being +# 1 +# 2 +# 3 +# 4 +# gawk: cmd. line:1: (FILENAME=- FNR=5) fatal error: internal error +# Abort trap - core dumped +# -- run end +# +# Ah. print NR appears to be not interesting. The following program also +# has the same problem: +# +# jot 10|./gawk '{OFMT="%."NR"f"}' +# +# Cheers, +# djones +# (version info follows) +# +# I'm running on FreeBSD 4.1, here's the output of uname -a +# +# FreeBSD topcat.zoonami.com 4.1-RELEASE FreeBSD 4.1-RELEASE #0: Fri Jul 28 14:30:31 GMT 2000 jkh@ref4.freebsd.org:/usr/src/sys/compile/GENERIC i386 +# +# And ./gnu --version +# +# GNU Awk 3.1.0 +# Copyright (C) 1989, 1991-2001 Free Software Foundation. +# +# 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 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# +{ OFMT="%."NR"f"; print NR } diff --git a/src/tool/awk/testdata/gawk/ofmtfidl.in b/src/tool/awk/testdata/gawk/ofmtfidl.in new file mode 100644 index 0000000..f00c965 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtfidl.in @@ -0,0 +1,10 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 diff --git a/src/tool/awk/testdata/gawk/ofmtfidl.ok b/src/tool/awk/testdata/gawk/ofmtfidl.ok new file mode 100644 index 0000000..f00c965 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtfidl.ok @@ -0,0 +1,10 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 diff --git a/src/tool/awk/testdata/gawk/ofmts.awk b/src/tool/awk/testdata/gawk/ofmts.awk new file mode 100644 index 0000000..6ee3705 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmts.awk @@ -0,0 +1,2 @@ +BEGIN { OFMT= "%s" } +{ $1 + $2; print $1, $2 } diff --git a/src/tool/awk/testdata/gawk/ofmts.in b/src/tool/awk/testdata/gawk/ofmts.in new file mode 100644 index 0000000..50c37ec --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmts.in @@ -0,0 +1 @@ +1.2 2.2 diff --git a/src/tool/awk/testdata/gawk/ofmts.ok b/src/tool/awk/testdata/gawk/ofmts.ok new file mode 100644 index 0000000..50c37ec --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmts.ok @@ -0,0 +1 @@ +1.2 2.2 diff --git a/src/tool/awk/testdata/gawk/ofmtstrnum.awk b/src/tool/awk/testdata/gawk/ofmtstrnum.awk new file mode 100644 index 0000000..ad838b6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtstrnum.awk @@ -0,0 +1,7 @@ +BEGIN { + split(" 1", f, "x") + OFMT = "%.1f" + print f[1] + x = f[1] + 0 + print f[1] +} diff --git a/src/tool/awk/testdata/gawk/ofmtstrnum.ok b/src/tool/awk/testdata/gawk/ofmtstrnum.ok new file mode 100644 index 0000000..ae95586 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofmtstrnum.ok @@ -0,0 +1,2 @@ + 1 + 1 diff --git a/src/tool/awk/testdata/gawk/ofs1.awk b/src/tool/awk/testdata/gawk/ofs1.awk new file mode 100644 index 0000000..83b3c2a --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofs1.awk @@ -0,0 +1,23 @@ +# Translate this shell script into gawk: +# +#! /bin/sh - +# +# awktest() +# { +# echo a:b:c | $AWK -F":" '{$2="x"; OFS=FS; print}' +# echo a:b:c | $AWK -F":" '{$2="x"; print; OFS=FS; print}' +# echo a:b:c | $AWK -F":" '{$2="x"; print $1; OFS=FS; print}' +# echo a:b:c | $AWK -F":" '{$2="x"; print; $2=$2; OFS=FS; print}' +# } +# +# AWK=./gawk +# awktest > foo.gawk + +BEGIN { FS = ":" } + +# Have to reset OFS at end since not running separate invocations + +FNR == 1 { $2 = "x"; OFS = FS; print ; OFS = " "} +FNR == 2 { $2 = "x"; print; OFS = FS; print ; OFS = " "} +FNR == 3 { $2 = "x"; print $1; OFS = FS; print ; OFS = " "} +FNR == 4 { $2 = "x"; print; $2 = $2; OFS = FS; print } diff --git a/src/tool/awk/testdata/gawk/ofs1.in b/src/tool/awk/testdata/gawk/ofs1.in new file mode 100644 index 0000000..0582b9b --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofs1.in @@ -0,0 +1,4 @@ +a:b:c +a:b:c +a:b:c +a:b:c diff --git a/src/tool/awk/testdata/gawk/ofs1.ok b/src/tool/awk/testdata/gawk/ofs1.ok new file mode 100644 index 0000000..d01fa16 --- /dev/null +++ b/src/tool/awk/testdata/gawk/ofs1.ok @@ -0,0 +1,7 @@ +a x c +a x c +a x c +a +a x c +a x c +a x c diff --git a/src/tool/awk/testdata/gawk/onlynl.awk b/src/tool/awk/testdata/gawk/onlynl.awk new file mode 100644 index 0000000..97a8d94 --- /dev/null +++ b/src/tool/awk/testdata/gawk/onlynl.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "" } +{ print "got", $0 } diff --git a/src/tool/awk/testdata/gawk/onlynl.in b/src/tool/awk/testdata/gawk/onlynl.in new file mode 100644 index 0000000..fd40910 --- /dev/null +++ b/src/tool/awk/testdata/gawk/onlynl.in @@ -0,0 +1,4 @@ + + + + diff --git a/src/tool/awk/testdata/gawk/onlynl.ok b/src/tool/awk/testdata/gawk/onlynl.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/opasnidx.awk b/src/tool/awk/testdata/gawk/opasnidx.awk new file mode 100644 index 0000000..e398860 --- /dev/null +++ b/src/tool/awk/testdata/gawk/opasnidx.awk @@ -0,0 +1 @@ +BEGIN { b = 1; a[b] = 2; a[b++] += 1; print b,a[1] } diff --git a/src/tool/awk/testdata/gawk/opasnidx.ok b/src/tool/awk/testdata/gawk/opasnidx.ok new file mode 100644 index 0000000..654d526 --- /dev/null +++ b/src/tool/awk/testdata/gawk/opasnidx.ok @@ -0,0 +1 @@ +2 3 diff --git a/src/tool/awk/testdata/gawk/opasnslf.awk b/src/tool/awk/testdata/gawk/opasnslf.awk new file mode 100644 index 0000000..46cd2b8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/opasnslf.awk @@ -0,0 +1,6 @@ +BEGIN { + print b += b += 1 + b = 6 + print b += b++ + print b +} diff --git a/src/tool/awk/testdata/gawk/opasnslf.ok b/src/tool/awk/testdata/gawk/opasnslf.ok new file mode 100644 index 0000000..2fa9fd5 --- /dev/null +++ b/src/tool/awk/testdata/gawk/opasnslf.ok @@ -0,0 +1,3 @@ +2 +13 +13 diff --git a/src/tool/awk/testdata/gawk/paramasfunc1.awk b/src/tool/awk/testdata/gawk/paramasfunc1.awk new file mode 100644 index 0000000..b0d0684 --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramasfunc1.awk @@ -0,0 +1,9 @@ +BEGIN{ X() } + +function X( abc) +{ + abc = "stamp out " + print abc abc() +} + +function abc() { return "dark corners" } diff --git a/src/tool/awk/testdata/gawk/paramasfunc1.ok b/src/tool/awk/testdata/gawk/paramasfunc1.ok new file mode 100644 index 0000000..c88f020 --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramasfunc1.ok @@ -0,0 +1 @@ +parse error at 6:15: can't call local variable "abc" as function \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/paramasfunc2.awk b/src/tool/awk/testdata/gawk/paramasfunc2.awk new file mode 100644 index 0000000..849b3d1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramasfunc2.awk @@ -0,0 +1,10 @@ +BEGIN{ X() } + +function abc() { return "dark corners" } + +function X( abc) +{ + abc = "stamp out " + print abc abc() +} + diff --git a/src/tool/awk/testdata/gawk/paramasfunc2.ok b/src/tool/awk/testdata/gawk/paramasfunc2.ok new file mode 100644 index 0000000..543388c --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramasfunc2.ok @@ -0,0 +1 @@ +parse error at 8:15: can't call local variable "abc" as function \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/paramdup.awk b/src/tool/awk/testdata/gawk/paramdup.awk new file mode 100644 index 0000000..1f1cc7a --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramdup.awk @@ -0,0 +1,8 @@ +BEGIN { foo(0, 1, 2) } + +function foo(a, b, c, b, a) +{ + print "a =", a + print "b =", b + print "c =", c +} diff --git a/src/tool/awk/testdata/gawk/paramdup.ok b/src/tool/awk/testdata/gawk/paramdup.ok new file mode 100644 index 0000000..1e0a469 --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramdup.ok @@ -0,0 +1 @@ +parse error at 3:23: duplicate parameter name "b" \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/paramtyp.awk b/src/tool/awk/testdata/gawk/paramtyp.awk new file mode 100644 index 0000000..58848bb --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramtyp.awk @@ -0,0 +1,20 @@ +# Sun Apr 25 13:28:58 IDT 1999 +# from Juegen Khars. This program should not core dump. + function ReadPGM(f, d) { +print "ReadPGM" + d[1] = 1 + } + + function WritePGM(f, d) { +print "WritePGM" + d[1] = 0 + } + + BEGIN { +print "before ReadPGM" + ReadPGM("", d) +print "after ReadPGM" +print "before WritePGM" + WritePGM("", d) +print "after WritePGM" + } diff --git a/src/tool/awk/testdata/gawk/paramtyp.ok b/src/tool/awk/testdata/gawk/paramtyp.ok new file mode 100644 index 0000000..793f857 --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramtyp.ok @@ -0,0 +1,6 @@ +before ReadPGM +ReadPGM +after ReadPGM +before WritePGM +WritePGM +after WritePGM diff --git a/src/tool/awk/testdata/gawk/paramuninitglobal.awk b/src/tool/awk/testdata/gawk/paramuninitglobal.awk new file mode 100644 index 0000000..0d7989d --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramuninitglobal.awk @@ -0,0 +1,15 @@ +function f(x) +{ + a = 10 + x = 90 + print x + print a + a++ + x++ + print x +} + +BEGIN { + f(a) + print a +} diff --git a/src/tool/awk/testdata/gawk/paramuninitglobal.ok b/src/tool/awk/testdata/gawk/paramuninitglobal.ok new file mode 100644 index 0000000..ce1879d --- /dev/null +++ b/src/tool/awk/testdata/gawk/paramuninitglobal.ok @@ -0,0 +1,4 @@ +90 +10 +91 +11 diff --git a/src/tool/awk/testdata/gawk/parse1.awk b/src/tool/awk/testdata/gawk/parse1.awk new file mode 100644 index 0000000..84906c4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parse1.awk @@ -0,0 +1,35 @@ +# Date: Fri, 06 Jan 2006 14:02:17 -0800 +# From: Paul Eggert +# Subject: gawk misparses $expr++ if expr ends in ++ +# To: bug-gawk@gnu.org +# Message-id: <87irsxypzq.fsf@penguin.cs.ucla.edu> +# +# Here's an example of the problem: +# +# $ gawk 'BEGIN{a=3}{print $$a++++}' +# gawk: {print $$a++++} +# gawk: ^ syntax error +# +# But it's not a syntax error, as the expression conforms to the POSIX +# spec: it should be treated like '$($a++)++'. +# +# Mawk, Solaris awk (old awk), and Solaris nawk all accept the +# expression. For example: +# +# $ echo '3 4 5 6 7 8 9' | nawk 'BEGIN{a=3}{print $$a++++}' +# 7 +# +# This is with gawk 3.1.5 on Solaris 8 (sparc). +# +# +# ##################################################################################### +# This Mail Was Scanned by 012.net AntiVirus Service1- Powered by TrendMicro Interscan +# +BEGIN { a = 3 } + +{ + print "in:", $0 + print "a =", a + print $$a++++ + print "out:", $0 +} diff --git a/src/tool/awk/testdata/gawk/parse1.in b/src/tool/awk/testdata/gawk/parse1.in new file mode 100644 index 0000000..4a001d7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parse1.in @@ -0,0 +1 @@ +3 4 5 6 7 8 9 diff --git a/src/tool/awk/testdata/gawk/parse1.ok b/src/tool/awk/testdata/gawk/parse1.ok new file mode 100644 index 0000000..a452e60 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parse1.ok @@ -0,0 +1,4 @@ +in: 3 4 5 6 7 8 9 +a = 3 +7 +out: 3 4 6 6 8 8 9 diff --git a/src/tool/awk/testdata/gawk/parsefld.awk b/src/tool/awk/testdata/gawk/parsefld.awk new file mode 100644 index 0000000..e9cf01c --- /dev/null +++ b/src/tool/awk/testdata/gawk/parsefld.awk @@ -0,0 +1 @@ +{ print /a/ + /b/ + !/c/} diff --git a/src/tool/awk/testdata/gawk/parsefld.in b/src/tool/awk/testdata/gawk/parsefld.in new file mode 100644 index 0000000..959d682 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parsefld.in @@ -0,0 +1 @@ +a = b diff --git a/src/tool/awk/testdata/gawk/parsefld.ok b/src/tool/awk/testdata/gawk/parsefld.ok new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/src/tool/awk/testdata/gawk/parsefld.ok @@ -0,0 +1 @@ +3 diff --git a/src/tool/awk/testdata/gawk/parseme.awk b/src/tool/awk/testdata/gawk/parseme.awk new file mode 100644 index 0000000..4d6ba94 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parseme.awk @@ -0,0 +1 @@ +BEGIN { toupper(substr*line,1,12)) } diff --git a/src/tool/awk/testdata/gawk/parseme.ok b/src/tool/awk/testdata/gawk/parseme.ok new file mode 100644 index 0000000..5d67619 --- /dev/null +++ b/src/tool/awk/testdata/gawk/parseme.ok @@ -0,0 +1 @@ +parse error at 1:23: expected ( instead of * \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/pcntplus.awk b/src/tool/awk/testdata/gawk/pcntplus.awk new file mode 100644 index 0000000..13999ac --- /dev/null +++ b/src/tool/awk/testdata/gawk/pcntplus.awk @@ -0,0 +1 @@ +BEGIN { printf "%+d %d\n", 3, 4 } diff --git a/src/tool/awk/testdata/gawk/pcntplus.ok b/src/tool/awk/testdata/gawk/pcntplus.ok new file mode 100644 index 0000000..b790269 --- /dev/null +++ b/src/tool/awk/testdata/gawk/pcntplus.ok @@ -0,0 +1 @@ ++3 4 diff --git a/src/tool/awk/testdata/gawk/posix2008sub.awk b/src/tool/awk/testdata/gawk/posix2008sub.awk new file mode 100644 index 0000000..3c7c9b7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/posix2008sub.awk @@ -0,0 +1,7 @@ +BEGIN { + text = "here is some text" + repl = "" + printf "orig = \"%s\", repl = \"%s\"\n", text, repl + sub(/some/, repl, text) + printf "result is \"%s\"\n", text +} diff --git a/src/tool/awk/testdata/gawk/posix2008sub.ok b/src/tool/awk/testdata/gawk/posix2008sub.ok new file mode 100644 index 0000000..4d4406a --- /dev/null +++ b/src/tool/awk/testdata/gawk/posix2008sub.ok @@ -0,0 +1,2 @@ +orig = "here is some text", repl = "" +result is "here is text" diff --git a/src/tool/awk/testdata/gawk/prdupval.awk b/src/tool/awk/testdata/gawk/prdupval.awk new file mode 100644 index 0000000..32c67dc --- /dev/null +++ b/src/tool/awk/testdata/gawk/prdupval.awk @@ -0,0 +1 @@ +{ print NF, $NF, "abc" $NF } diff --git a/src/tool/awk/testdata/gawk/prdupval.in b/src/tool/awk/testdata/gawk/prdupval.in new file mode 100644 index 0000000..5626abf --- /dev/null +++ b/src/tool/awk/testdata/gawk/prdupval.in @@ -0,0 +1 @@ +one diff --git a/src/tool/awk/testdata/gawk/prdupval.ok b/src/tool/awk/testdata/gawk/prdupval.ok new file mode 100644 index 0000000..6253616 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prdupval.ok @@ -0,0 +1 @@ +1 one abcone diff --git a/src/tool/awk/testdata/gawk/prec.awk b/src/tool/awk/testdata/gawk/prec.awk new file mode 100644 index 0000000..8b37734 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prec.awk @@ -0,0 +1,7 @@ +# check the precedence of operators: +BEGIN { + $1 = i = 1 + $+i++ + $- -i++ + print +} diff --git a/src/tool/awk/testdata/gawk/prec.ok b/src/tool/awk/testdata/gawk/prec.ok new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/src/tool/awk/testdata/gawk/prec.ok @@ -0,0 +1 @@ +1 diff --git a/src/tool/awk/testdata/gawk/printf1.awk b/src/tool/awk/testdata/gawk/printf1.awk new file mode 100644 index 0000000..1cd7b99 --- /dev/null +++ b/src/tool/awk/testdata/gawk/printf1.awk @@ -0,0 +1,19 @@ +# Tue May 25 16:36:16 IDT 1999 +# +# Test cases based on email from Andreas Schwab, schwab@gnu.org + +BEGIN { + fmt[1] = "%8.5d"; data[1] = 100 + fmt[2] = "%#o"; data[2] = 0 + fmt[3] = "%#.1o"; data[3] = 0 + fmt[4] = "%#.0o"; data[4] = 0 + fmt[5] = "%#x"; data[5] = 0 + fmt[6] = "%.0d"; data[6] = 0 + fmt[7] = "%5.0d"; data[7] = 0 + + for (i = 1; i <= 7; i++) { + format = "%s, %d --- |" fmt[i] "|\n" + printf(format, fmt[i], data[i], data[i]) + } + +} diff --git a/src/tool/awk/testdata/gawk/printf1.ok b/src/tool/awk/testdata/gawk/printf1.ok new file mode 100644 index 0000000..62b3744 --- /dev/null +++ b/src/tool/awk/testdata/gawk/printf1.ok @@ -0,0 +1,7 @@ +%8.5d, 100 --- | 00100| +%#o, 0 --- |0| +%#.1o, 0 --- |0| +%#.0o, 0 --- || +%#x, 0 --- |0x0| +%.0d, 0 --- || +%5.0d, 0 --- | | diff --git a/src/tool/awk/testdata/gawk/printfchar.awk b/src/tool/awk/testdata/gawk/printfchar.awk new file mode 100644 index 0000000..a9a284b --- /dev/null +++ b/src/tool/awk/testdata/gawk/printfchar.awk @@ -0,0 +1,7 @@ +BEGIN { + x[65] = 1; + for (i in x) { + # i should be a string + printf "%c\n", i # should print 1st char of string + } +} diff --git a/src/tool/awk/testdata/gawk/printfchar.ok b/src/tool/awk/testdata/gawk/printfchar.ok new file mode 100644 index 0000000..1e8b314 --- /dev/null +++ b/src/tool/awk/testdata/gawk/printfchar.ok @@ -0,0 +1 @@ +6 diff --git a/src/tool/awk/testdata/gawk/prmarscl.awk b/src/tool/awk/testdata/gawk/prmarscl.awk new file mode 100644 index 0000000..3caf3d9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prmarscl.awk @@ -0,0 +1,6 @@ +function test(a) +{ + print a[1] +} + +BEGIN { j = 4; test(j) } diff --git a/src/tool/awk/testdata/gawk/prmarscl.ok b/src/tool/awk/testdata/gawk/prmarscl.ok new file mode 100644 index 0000000..f7451c7 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prmarscl.ok @@ -0,0 +1 @@ +parse error at 6:16: can't pass scalar "j" as array param \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/prmreuse.awk b/src/tool/awk/testdata/gawk/prmreuse.awk new file mode 100644 index 0000000..c1ffa17 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prmreuse.awk @@ -0,0 +1,14 @@ +# from Pat Rankin, rankin@eql.caltech.edu, now rankin@pactechdata.com + +BEGIN { dummy(1); legit(); exit } + +function dummy(arg) +{ + return arg +} + +function legit( scratch) +{ + split("1 2 3", scratch) + return "" +} diff --git a/src/tool/awk/testdata/gawk/prmreuse.ok b/src/tool/awk/testdata/gawk/prmreuse.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/prt1eval.awk b/src/tool/awk/testdata/gawk/prt1eval.awk new file mode 100644 index 0000000..4ecd368 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prt1eval.awk @@ -0,0 +1,6 @@ +function tst () { + sum += 1 + return sum +} + +BEGIN { OFMT = "%.0f" ; print tst() } diff --git a/src/tool/awk/testdata/gawk/prt1eval.ok b/src/tool/awk/testdata/gawk/prt1eval.ok new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/src/tool/awk/testdata/gawk/prt1eval.ok @@ -0,0 +1 @@ +1 diff --git a/src/tool/awk/testdata/gawk/prtoeval.awk b/src/tool/awk/testdata/gawk/prtoeval.awk new file mode 100644 index 0000000..77880d8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/prtoeval.awk @@ -0,0 +1,4 @@ +function returns_a_str() { print "" ; return "'A STRING'" } +BEGIN { + print "partial line:", returns_a_str() +} diff --git a/src/tool/awk/testdata/gawk/prtoeval.ok b/src/tool/awk/testdata/gawk/prtoeval.ok new file mode 100644 index 0000000..13e122b --- /dev/null +++ b/src/tool/awk/testdata/gawk/prtoeval.ok @@ -0,0 +1,2 @@ + +partial line: 'A STRING' diff --git a/src/tool/awk/testdata/gawk/rand.awk b/src/tool/awk/testdata/gawk/rand.awk new file mode 100644 index 0000000..6378f3d --- /dev/null +++ b/src/tool/awk/testdata/gawk/rand.awk @@ -0,0 +1,6 @@ +BEGIN { + srand(2) + for (i = 0; i < 19; i++) + printf "%3d ", (1 + int(100 * rand())) + print "" +} diff --git a/src/tool/awk/testdata/gawk/rand.ok b/src/tool/awk/testdata/gawk/rand.ok new file mode 100644 index 0000000..5295bab --- /dev/null +++ b/src/tool/awk/testdata/gawk/rand.ok @@ -0,0 +1 @@ + 61 95 67 44 43 69 7 16 10 31 52 82 22 39 32 47 29 30 68 diff --git a/src/tool/awk/testdata/gawk/range1.awk b/src/tool/awk/testdata/gawk/range1.awk new file mode 100644 index 0000000..aca5db5 --- /dev/null +++ b/src/tool/awk/testdata/gawk/range1.awk @@ -0,0 +1 @@ +/foo/,/bar/ { print } diff --git a/src/tool/awk/testdata/gawk/range1.in b/src/tool/awk/testdata/gawk/range1.in new file mode 100644 index 0000000..c496019 --- /dev/null +++ b/src/tool/awk/testdata/gawk/range1.in @@ -0,0 +1,2 @@ +foobar +junk diff --git a/src/tool/awk/testdata/gawk/range1.ok b/src/tool/awk/testdata/gawk/range1.ok new file mode 100644 index 0000000..323fae0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/range1.ok @@ -0,0 +1 @@ +foobar diff --git a/src/tool/awk/testdata/gawk/readbuf.awk b/src/tool/awk/testdata/gawk/readbuf.awk new file mode 100644 index 0000000..b7512db --- /dev/null +++ b/src/tool/awk/testdata/gawk/readbuf.awk @@ -0,0 +1,2 @@ + +{ diff --git a/src/tool/awk/testdata/gawk/readbuf.ok b/src/tool/awk/testdata/gawk/readbuf.ok new file mode 100644 index 0000000..ebd3f17 --- /dev/null +++ b/src/tool/awk/testdata/gawk/readbuf.ok @@ -0,0 +1 @@ +parse error at 3:1: expected } instead of EOF \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/rebuild.awk b/src/tool/awk/testdata/gawk/rebuild.awk new file mode 100644 index 0000000..e3d748e --- /dev/null +++ b/src/tool/awk/testdata/gawk/rebuild.awk @@ -0,0 +1,4 @@ +{ + $1 = "test" + print $0 +} diff --git a/src/tool/awk/testdata/gawk/rebuild.in b/src/tool/awk/testdata/gawk/rebuild.in new file mode 100644 index 0000000..2f16a82 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rebuild.in @@ -0,0 +1 @@ +a 6.3 diff --git a/src/tool/awk/testdata/gawk/rebuild.ok b/src/tool/awk/testdata/gawk/rebuild.ok new file mode 100644 index 0000000..1ca8eef --- /dev/null +++ b/src/tool/awk/testdata/gawk/rebuild.ok @@ -0,0 +1 @@ +test 6.3 diff --git a/src/tool/awk/testdata/gawk/redfilnm.awk b/src/tool/awk/testdata/gawk/redfilnm.awk new file mode 100644 index 0000000..83cb6aa --- /dev/null +++ b/src/tool/awk/testdata/gawk/redfilnm.awk @@ -0,0 +1,98 @@ +#Date: Tue, 18 May 1999 12:48:07 -0500 (CDT) +#From: Darrel Hankerson +#To: arnold@gnu.org +#Subject: [christopher.procter@bt.com: RE: Getline bug in Gawk 3.0.3] +# +#Here's a reply that came directly to me. --darrel +# +# +#From: christopher.procter@bt.com +#To: hankedr@dms.auburn.edu +#Subject: RE: Getline bug in Gawk 3.0.3 +#Date: Tue, 18 May 1999 18:42:28 +0100 +# +#Sorry that was me getting carried away and cut and pasting the wrong thing +#into my email +# +#The real problem seems to be that : +#BEGIN { +#for (i=1;i<10;i++){ +# while((getline < "hello.txt")>0){ +# print $0 +# } +# close("hello.txt") +# } +#} +#works (printing the contents of hello.txt 9 times), where as:- +# +#END{ +#for (i=1;i<10;i++){ +# while((getline < "hello.txt")>0){ +# print $0 +# } +# close("hello.txt") +# } +#} +# +#doesn't, (it prints out hello.txt once followed by the iteration numbers +#from 1 to 9). +#The only difference is that one is in the BEGIN block and one in the END +#block. +# +#Sorry about the first post, I'm not a bad awk programmer, just a tired one +#:) +# +#chris +# +#> -----Original Message----- +#> From: Darrel Hankerson [SMTP:hankedr@dms.auburn.edu] +#> Sent: 18 May 1999 18:28 +#> To: christopher.procter@bt.com +#> Subject: Re: Getline bug in Gawk 3.0.3 +#> +#> Could you clarify? Your first script uses an apparently undefined +#> variable f. +#> +#> +#> christopher.procter@bt.com writes: +#> +#> BEGIN { +#> for (i=1;i<10;i++){ +#> while((getline < "hello.txt")>0){ +#> print $0 +#> } +#> close(f) +#> } +#> } +#> +#> refuses to close the file and so prints the contents of hello.txt just +#> once. +#> However:- +#> +#> BEGIN { +#> f="hello.txt" +#> for (i=1;i<10;i++){ +#> while((getline < f)>0){ +#> print $0 +#> } +#> close(f) +#> } +#> } +#> +#> works as advertised (printing the contents of hello.txt 9 times) +#> It seems like a bug in the close statement. +#> +#> -- +#> --Darrel Hankerson hankedr@mail.auburn.edu +# + +# srcdir is assigned on command line --- ADR +END { + f = srcdir "/redfilnm.in" + for (i = 1; i < 10; i++){ + while((getline < f) > 0){ + print $0 + } + close(f) + } +} diff --git a/src/tool/awk/testdata/gawk/redfilnm.in b/src/tool/awk/testdata/gawk/redfilnm.in new file mode 100644 index 0000000..4b5fa63 --- /dev/null +++ b/src/tool/awk/testdata/gawk/redfilnm.in @@ -0,0 +1 @@ +hello, world diff --git a/src/tool/awk/testdata/gawk/redfilnm.ok b/src/tool/awk/testdata/gawk/redfilnm.ok new file mode 100644 index 0000000..f9e095a --- /dev/null +++ b/src/tool/awk/testdata/gawk/redfilnm.ok @@ -0,0 +1,9 @@ +hello, world +hello, world +hello, world +hello, world +hello, world +hello, world +hello, world +hello, world +hello, world diff --git a/src/tool/awk/testdata/gawk/regeq.awk b/src/tool/awk/testdata/gawk/regeq.awk new file mode 100644 index 0000000..0208eb2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regeq.awk @@ -0,0 +1,29 @@ +#Date: Sat, 8 May 1999 17:42:20 +0200 +#From: Iva Cabric +#To: bug-gnu-utils@gnu.org +#Cc: arnold@gnu.org +#Subject: Problem in gawk with match +# +#Hello, +# +#gawk reports fatal error in match when first character in regexp is "=" : +# +#$ gawk '{ where = match($0, /=a/); print where}' +#gawk: cmd. line:1: { where = match($0, /=a/); print where} +#gawk: cmd. line:1: ^ parse error +#gawk: cmd. line:1: fatal: match() cannot have 0 arguments +# +#Using "\=" instead "=" works without problems : +# +#$ gawk '{ where = match($0, /\=a/); print where}' +#sdgfa +#0 +#asdfds=a +#7 +# +#Other versions of awk have no problems with "/=/" (except oawk on SunOS). +# +#-- +# @ +# +{ where = match($0, /=a/); print where} diff --git a/src/tool/awk/testdata/gawk/regeq.in b/src/tool/awk/testdata/gawk/regeq.in new file mode 100644 index 0000000..2428df3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regeq.in @@ -0,0 +1,2 @@ +sdgfa +asdfds=a diff --git a/src/tool/awk/testdata/gawk/regeq.ok b/src/tool/awk/testdata/gawk/regeq.ok new file mode 100644 index 0000000..4596f88 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regeq.ok @@ -0,0 +1,2 @@ +0 +7 diff --git a/src/tool/awk/testdata/gawk/regexpbrack.awk b/src/tool/awk/testdata/gawk/regexpbrack.awk new file mode 100644 index 0000000..136cd19 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexpbrack.awk @@ -0,0 +1,2 @@ +/[]+()0-9.,$%/'"-]*$/ +/^[]+()0-9.,$%/'"-]*$/ diff --git a/src/tool/awk/testdata/gawk/regexpbrack.in b/src/tool/awk/testdata/gawk/regexpbrack.in new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/regexpbrack.ok b/src/tool/awk/testdata/gawk/regexpbrack.ok new file mode 100644 index 0000000..eb99815 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexpbrack.ok @@ -0,0 +1 @@ +parse error at 1:1: error parsing regexp: missing closing ]: `[]+()0-9.,$%` \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/regexpbrack2.awk b/src/tool/awk/testdata/gawk/regexpbrack2.awk new file mode 100644 index 0000000..8142484 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexpbrack2.awk @@ -0,0 +1,2 @@ +NR == 1 { gsub(/\\\\[;?!,()<>|+@%\]\[]/, " ") ; print "\"" $0 "\"" } +NR == 2 { gsub(/\\\\[;?!,()<>|+@%\]\[^]/, " ") ; print "\"" $0 "\"" } diff --git a/src/tool/awk/testdata/gawk/regexpbrack2.in b/src/tool/awk/testdata/gawk/regexpbrack2.in new file mode 100644 index 0000000..42888dd --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexpbrack2.in @@ -0,0 +1,2 @@ +test: \\; \\? \\! +test: \\; \\? \\! diff --git a/src/tool/awk/testdata/gawk/regexpbrack2.ok b/src/tool/awk/testdata/gawk/regexpbrack2.ok new file mode 100644 index 0000000..9c2a292 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexpbrack2.ok @@ -0,0 +1,2 @@ +"test: " +"test: " diff --git a/src/tool/awk/testdata/gawk/regexprange.awk b/src/tool/awk/testdata/gawk/regexprange.awk new file mode 100644 index 0000000..861e5ee --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexprange.awk @@ -0,0 +1,14 @@ +BEGIN { + range = "[a-dx-z]" + + split("ABCDEFGHIJKLMNOPQRSTUVWXYZ", upper, "") + split("abcdefghijklmnopqrstuvwxyz", lower, "") + + for (i = 1; i in upper; i++) + printf("%s ~ %s ---> %s\n", + upper[i], range, (upper[i] ~ range) ? "true" : "false") + + for (i = 1; i in lower; i++) + printf("%s ~ %s ---> %s\n", + lower[i], range, (lower[i] ~ range) ? "true" : "false") +} diff --git a/src/tool/awk/testdata/gawk/regexprange.ok b/src/tool/awk/testdata/gawk/regexprange.ok new file mode 100644 index 0000000..dbf5d35 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regexprange.ok @@ -0,0 +1,52 @@ +A ~ [a-dx-z] ---> false +B ~ [a-dx-z] ---> false +C ~ [a-dx-z] ---> false +D ~ [a-dx-z] ---> false +E ~ [a-dx-z] ---> false +F ~ [a-dx-z] ---> false +G ~ [a-dx-z] ---> false +H ~ [a-dx-z] ---> false +I ~ [a-dx-z] ---> false +J ~ [a-dx-z] ---> false +K ~ [a-dx-z] ---> false +L ~ [a-dx-z] ---> false +M ~ [a-dx-z] ---> false +N ~ [a-dx-z] ---> false +O ~ [a-dx-z] ---> false +P ~ [a-dx-z] ---> false +Q ~ [a-dx-z] ---> false +R ~ [a-dx-z] ---> false +S ~ [a-dx-z] ---> false +T ~ [a-dx-z] ---> false +U ~ [a-dx-z] ---> false +V ~ [a-dx-z] ---> false +W ~ [a-dx-z] ---> false +X ~ [a-dx-z] ---> false +Y ~ [a-dx-z] ---> false +Z ~ [a-dx-z] ---> false +a ~ [a-dx-z] ---> true +b ~ [a-dx-z] ---> true +c ~ [a-dx-z] ---> true +d ~ [a-dx-z] ---> true +e ~ [a-dx-z] ---> false +f ~ [a-dx-z] ---> false +g ~ [a-dx-z] ---> false +h ~ [a-dx-z] ---> false +i ~ [a-dx-z] ---> false +j ~ [a-dx-z] ---> false +k ~ [a-dx-z] ---> false +l ~ [a-dx-z] ---> false +m ~ [a-dx-z] ---> false +n ~ [a-dx-z] ---> false +o ~ [a-dx-z] ---> false +p ~ [a-dx-z] ---> false +q ~ [a-dx-z] ---> false +r ~ [a-dx-z] ---> false +s ~ [a-dx-z] ---> false +t ~ [a-dx-z] ---> false +u ~ [a-dx-z] ---> false +v ~ [a-dx-z] ---> false +w ~ [a-dx-z] ---> false +x ~ [a-dx-z] ---> true +y ~ [a-dx-z] ---> true +z ~ [a-dx-z] ---> true diff --git a/src/tool/awk/testdata/gawk/regrange.awk b/src/tool/awk/testdata/gawk/regrange.awk new file mode 100644 index 0000000..7187931 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regrange.awk @@ -0,0 +1,30 @@ +# Tests due to John Haque, May 2011 +# +# The following should be fatal; can't catch them inside awk, though +# $> echo 'a' | ./gawk '/[z-a]/ { print }' +# $> echo 'A' | ./gawk '/[+-[:digit:]]/' + +BEGIN { + char[1] = "." + pat[1] = "[--\\/]" + + char[2] = "a" + pat[2] = "[]-c]" + + char[3] = "c" + pat[3] = "[[a-d]" + + char[4] = "\\" + pat[4] = "[\\[-\\]]" + + char[5] = "[.c.]" + pat[5] = "[a-[.e.]]" + + char[6] = "[.d.]" + pat[6] = "[[.c.]-[.z.]]" + + for (i = 1; i in char; i++) { + printf("\"%s\" ~ /%s/ --> %d\n", char[i], pat[i], + char[i] ~ pat[i]) + } +} diff --git a/src/tool/awk/testdata/gawk/regrange.ok b/src/tool/awk/testdata/gawk/regrange.ok new file mode 100644 index 0000000..baa3c85 --- /dev/null +++ b/src/tool/awk/testdata/gawk/regrange.ok @@ -0,0 +1,5 @@ +"." ~ /[--\/]/ --> 1 +"a" ~ /[]-c]/ --> 1 +"c" ~ /[[a-d]/ --> 1 +"\" ~ /[\[-\]]/ --> 1 +invalid regex "[a-[.e.]]": error parsing regexp: invalid character class range: `a-[` \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/reparse.awk b/src/tool/awk/testdata/gawk/reparse.awk new file mode 100644 index 0000000..433ecbb --- /dev/null +++ b/src/tool/awk/testdata/gawk/reparse.awk @@ -0,0 +1,7 @@ +{ + gsub(/x/, " ") + $0 = $0 + print $1 + print $0 + print $1, $2, $3 +} diff --git a/src/tool/awk/testdata/gawk/reparse.in b/src/tool/awk/testdata/gawk/reparse.in new file mode 100644 index 0000000..6f31cde --- /dev/null +++ b/src/tool/awk/testdata/gawk/reparse.in @@ -0,0 +1 @@ +1 axbxc 2 diff --git a/src/tool/awk/testdata/gawk/reparse.ok b/src/tool/awk/testdata/gawk/reparse.ok new file mode 100644 index 0000000..6bdfacf --- /dev/null +++ b/src/tool/awk/testdata/gawk/reparse.ok @@ -0,0 +1,3 @@ +1 +1 a b c 2 +1 a b diff --git a/src/tool/awk/testdata/gawk/resplit.awk b/src/tool/awk/testdata/gawk/resplit.awk new file mode 100644 index 0000000..f75fe39 --- /dev/null +++ b/src/tool/awk/testdata/gawk/resplit.awk @@ -0,0 +1 @@ +{ FS = ":"; $0 = $0; print $2 } diff --git a/src/tool/awk/testdata/gawk/resplit.in b/src/tool/awk/testdata/gawk/resplit.in new file mode 100644 index 0000000..5f06f10 --- /dev/null +++ b/src/tool/awk/testdata/gawk/resplit.in @@ -0,0 +1 @@ +a:b:c d:e:f diff --git a/src/tool/awk/testdata/gawk/resplit.ok b/src/tool/awk/testdata/gawk/resplit.ok new file mode 100644 index 0000000..6178079 --- /dev/null +++ b/src/tool/awk/testdata/gawk/resplit.ok @@ -0,0 +1 @@ +b diff --git a/src/tool/awk/testdata/gawk/rri1.awk b/src/tool/awk/testdata/gawk/rri1.awk new file mode 100644 index 0000000..889dbdc --- /dev/null +++ b/src/tool/awk/testdata/gawk/rri1.awk @@ -0,0 +1 @@ +/[d-f]/ diff --git a/src/tool/awk/testdata/gawk/rri1.in b/src/tool/awk/testdata/gawk/rri1.in new file mode 100644 index 0000000..28b6b40 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rri1.in @@ -0,0 +1 @@ +no match: è diff --git a/src/tool/awk/testdata/gawk/rri1.ok b/src/tool/awk/testdata/gawk/rri1.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/rs.awk b/src/tool/awk/testdata/gawk/rs.awk new file mode 100644 index 0000000..d3a3cf0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rs.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "" } +{ print $1, $2 } diff --git a/src/tool/awk/testdata/gawk/rs.in b/src/tool/awk/testdata/gawk/rs.in new file mode 100644 index 0000000..edef835 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rs.in @@ -0,0 +1,15 @@ + + +a +b + + +c d + + + +e + + + + diff --git a/src/tool/awk/testdata/gawk/rs.ok b/src/tool/awk/testdata/gawk/rs.ok new file mode 100644 index 0000000..9dd6bd3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rs.ok @@ -0,0 +1,3 @@ +a b +c d +e diff --git a/src/tool/awk/testdata/gawk/rscompat.awk b/src/tool/awk/testdata/gawk/rscompat.awk new file mode 100644 index 0000000..9415c70 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rscompat.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "bar" } +{ print $1, $2 } diff --git a/src/tool/awk/testdata/gawk/rscompat.in b/src/tool/awk/testdata/gawk/rscompat.in new file mode 100644 index 0000000..eb337e5 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rscompat.in @@ -0,0 +1,2 @@ +0foobar0faz +1foobar1faz diff --git a/src/tool/awk/testdata/gawk/rscompat.ok b/src/tool/awk/testdata/gawk/rscompat.ok new file mode 100644 index 0000000..19cd9fb --- /dev/null +++ b/src/tool/awk/testdata/gawk/rscompat.ok @@ -0,0 +1,3 @@ +0foo +ar0faz 1foo +ar1faz diff --git a/src/tool/awk/testdata/gawk/rsgetline.awk b/src/tool/awk/testdata/gawk/rsgetline.awk new file mode 100644 index 0000000..fa327fc --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsgetline.awk @@ -0,0 +1,23 @@ +# Date: Sun, 4 May 2014 18:09:01 +0200 +# From: Davide Brini +# To: bug-gawk@gnu.org +# Subject: Re: [bug-gawk] Computed regex and getline bug / issue +# +# I have been able to reduce the behavior to these simple test cases, which +# (unless I'm missing something obvious) should behave identically but don't: +# +# $ printf '1,2,' | gawk 'BEGIN{RS="[,]+"}{print; a = getline; print "-"a"-"; print}' +# 1 +# -0- +# 1 + +BEGIN { + RS = "[,]+" +} + +{ + printf "[%s] [%s]\n", $0, RT + a = getline + print "-"a"-" + printf "[%s] [%s]\n", $0, RT +} diff --git a/src/tool/awk/testdata/gawk/rsgetline.in b/src/tool/awk/testdata/gawk/rsgetline.in new file mode 100644 index 0000000..f178234 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsgetline.in @@ -0,0 +1 @@ +1,2, \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/rsgetline.ok b/src/tool/awk/testdata/gawk/rsgetline.ok new file mode 100644 index 0000000..1388369 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsgetline.ok @@ -0,0 +1,3 @@ +[1] [,] +-1- +[2] [,] diff --git a/src/tool/awk/testdata/gawk/rsnul1nl.awk b/src/tool/awk/testdata/gawk/rsnul1nl.awk new file mode 100644 index 0000000..d8da7a6 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnul1nl.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "" } +{ print } diff --git a/src/tool/awk/testdata/gawk/rsnul1nl.in b/src/tool/awk/testdata/gawk/rsnul1nl.in new file mode 100644 index 0000000..76de96f --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnul1nl.in @@ -0,0 +1,3 @@ + +This is... +the first record. diff --git a/src/tool/awk/testdata/gawk/rsnul1nl.ok b/src/tool/awk/testdata/gawk/rsnul1nl.ok new file mode 100644 index 0000000..7ce0957 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnul1nl.ok @@ -0,0 +1,2 @@ +This is... +the first record. diff --git a/src/tool/awk/testdata/gawk/rsnullre.awk b/src/tool/awk/testdata/gawk/rsnullre.awk new file mode 100644 index 0000000..72b156f --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnullre.awk @@ -0,0 +1,5 @@ +BEGIN { + RS = "()" +} + +{ printf("<<%s>>\n", $0) ; printf("<%s>\n", RT) } diff --git a/src/tool/awk/testdata/gawk/rsnullre.in b/src/tool/awk/testdata/gawk/rsnullre.in new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnullre.in @@ -0,0 +1 @@ +foo diff --git a/src/tool/awk/testdata/gawk/rsnullre.ok b/src/tool/awk/testdata/gawk/rsnullre.ok new file mode 100644 index 0000000..e8f3494 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnullre.ok @@ -0,0 +1,3 @@ +<> +<> diff --git a/src/tool/awk/testdata/gawk/rsnulw.awk b/src/tool/awk/testdata/gawk/rsnulw.awk new file mode 100644 index 0000000..c17780a --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnulw.awk @@ -0,0 +1,7 @@ +BEGIN { RS = "" } + +{ + print NF, "<" $0 ":" RT ">" + for (i = 1; i <= NF; i++) + print i, "[" $i "]" +} diff --git a/src/tool/awk/testdata/gawk/rsnulw.in b/src/tool/awk/testdata/gawk/rsnulw.in new file mode 100644 index 0000000..8b85492 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnulw.in @@ -0,0 +1 @@ + a b c diff --git a/src/tool/awk/testdata/gawk/rsnulw.ok b/src/tool/awk/testdata/gawk/rsnulw.ok new file mode 100644 index 0000000..692f16e --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsnulw.ok @@ -0,0 +1,5 @@ +3 < a b c : +> +1 [a] +2 [b] +3 [c] diff --git a/src/tool/awk/testdata/gawk/rsstart1.awk b/src/tool/awk/testdata/gawk/rsstart1.awk new file mode 100644 index 0000000..53e5b42 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart1.awk @@ -0,0 +1,32 @@ +# From arnold@f7.net Wed Dec 15 11:32:46 2004 +# Date: Tue, 14 Dec 2004 14:48:58 +0100 +# From: Stepan Kasal +# Subject: gawk bug with RS="^..." +# To: bug-gawk@gnu.org +# Message-id: <20041214134858.GA15490@matsrv.math.cas.cz> +# +# Hello, +# I've noticed a problem with "^" in RS in gawk. In most cases, it seems +# to match only the beginning of the file. But in fact it matches the +# beginning of gawk's internal buffer. +# +# Observe the following example: +# +# $ gawk 'BEGIN{for(i=1;i<=100;i++) print "Axxxxxx"}' >file +# $ gawk 'BEGIN{RS="^A"} END{print NR}' file +# 2 +# $ gawk 'BEGIN{RS="^Ax*\n"} END{print NR}' file +# 100 +# $ head file | gawk 'BEGIN{RS="^Ax*\n"} END{print NR}' +# 10 +# $ +# +# I think this calls for some clarification/fix. But I don't have any +# fixed opinion how the solution should look like. +# +# Have a nice day, +# Stepan Kasal +# +# PS: See also the discussion of the issue in the comp.lang.awk newsgroup. +BEGIN { RS = "^A" } +END { print NR } diff --git a/src/tool/awk/testdata/gawk/rsstart1.in b/src/tool/awk/testdata/gawk/rsstart1.in new file mode 100644 index 0000000..aabdf02 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart1.in @@ -0,0 +1,10000 @@ +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx diff --git a/src/tool/awk/testdata/gawk/rsstart1.ok b/src/tool/awk/testdata/gawk/rsstart1.ok new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart1.ok @@ -0,0 +1 @@ +2 diff --git a/src/tool/awk/testdata/gawk/rsstart2.awk b/src/tool/awk/testdata/gawk/rsstart2.awk new file mode 100644 index 0000000..14c1415 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart2.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "^Ax*\n" } +END { print NR } diff --git a/src/tool/awk/testdata/gawk/rsstart2.in b/src/tool/awk/testdata/gawk/rsstart2.in new file mode 100644 index 0000000..aabdf02 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart2.in @@ -0,0 +1,10000 @@ +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx +Axxxxxx diff --git a/src/tool/awk/testdata/gawk/rsstart2.ok b/src/tool/awk/testdata/gawk/rsstart2.ok new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rsstart2.ok @@ -0,0 +1 @@ +2 diff --git a/src/tool/awk/testdata/gawk/rstest1.awk b/src/tool/awk/testdata/gawk/rstest1.awk new file mode 100644 index 0000000..3eb8836 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest1.awk @@ -0,0 +1,7 @@ +BEGIN { + RS = "" + FS = ":" + s = "a:b\nc:d" + print split(s,a) + print length(a[2]) +} diff --git a/src/tool/awk/testdata/gawk/rstest1.ok b/src/tool/awk/testdata/gawk/rstest1.ok new file mode 100644 index 0000000..a5c8806 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest1.ok @@ -0,0 +1,2 @@ +3 +3 diff --git a/src/tool/awk/testdata/gawk/rstest2.awk b/src/tool/awk/testdata/gawk/rstest2.awk new file mode 100644 index 0000000..5ed4701 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest2.awk @@ -0,0 +1,6 @@ +BEGIN { + RS = "" + FS = "\\" + $0 = "a\\b" + print $1 +} diff --git a/src/tool/awk/testdata/gawk/rstest2.ok b/src/tool/awk/testdata/gawk/rstest2.ok new file mode 100644 index 0000000..7898192 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest2.ok @@ -0,0 +1 @@ +a diff --git a/src/tool/awk/testdata/gawk/rstest3.awk b/src/tool/awk/testdata/gawk/rstest3.awk new file mode 100644 index 0000000..3238ffa --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest3.awk @@ -0,0 +1,73 @@ +# From spcecdt@armory.com Tue Apr 15 17:35:01 2003 +# Return-Path: +# Received: from localhost (aahz [127.0.0.1]) +# by skeeve.com (8.12.5/8.12.5) with ESMTP id h3FEYA6o001541 +# for ; Tue, 15 Apr 2003 17:35:01 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Tue, 15 Apr 2003 17:35:01 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue Apr 15 17:38:46 2003) +# X-From_: spcecdt@armory.com Tue Apr 15 11:09:12 2003 +# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id h3F88uC19825 for ; +# Tue, 15 Apr 2003 11:09:04 +0300 (EET DST) +# (rfc931-sender: smtp.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h3F8CgQ7019081 +# for ; Tue, 15 Apr 2003 11:12:47 +0300 +# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) +# by f7.net (8.11.7/8.11.6) with ESMTP id h3F88oW23381 +# for ; Tue, 15 Apr 2003 04:08:50 -0400 +# Received: from monty-python.gnu.org ([199.232.76.173]) +# by fencepost.gnu.org with esmtp (Exim 4.10) +# id 195LUo-0001cv-00 +# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:50 -0400 +# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13) +# id 195LUh-0006n0-00 +# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:44 -0400 +# Received: from deepthought.armory.com ([192.122.209.42] helo=armory.com) +# by monty-python.gnu.org with smtp (Exim 4.10.13) +# id 195LUC-0006JM-00 +# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:13 -0400 +# Date: Tue, 15 Apr 2003 01:08:11 -0700 +# From: "John H. DuBois III" +# To: bug-gawk@gnu.org +# Subject: gawk 3.1.2 fatal bug +# Message-ID: <20030415080811.GA14963@armory.com> +# Mime-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# Content-Disposition: inline +# User-Agent: Mutt/1.3.28i +# X-Www: http://www.armory.com./~spcecdt/ +# Sender: spcecdt@armory.com +# X-Spam-Status: No, hits=-7.9 required=5.0 +# tests=SIGNATURE_SHORT_DENSE,SPAM_PHRASE_01_02,USER_AGENT, +# USER_AGENT_MUTT +# version=2.41 +# X-Spam-Level: +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# This program: +# +# BEGIN { RS = ""; "/bin/echo -n x" | getline } +# +# fails in exactly the same way under SCO OpenServer 5.0.6a using gawk 3.1.2 +# built with gcc 2.95.3 and linux using gawk 3.1.2 built with gcc 3.2.2: +# +# gawk: gawktest:1: fatal error: internal error +# Abort +# +# The same program does not fail with gawk 3.1.1. +# +# John +# -- +# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/ +# +# +BEGIN { + RS = "" + "echo x | tr -d '\\12'" | getline +} diff --git a/src/tool/awk/testdata/gawk/rstest3.ok b/src/tool/awk/testdata/gawk/rstest3.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/rstest4.awk b/src/tool/awk/testdata/gawk/rstest4.awk new file mode 100644 index 0000000..ddf0691 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest4.awk @@ -0,0 +1,67 @@ +# From spcecdt@armory.com Mon May 5 14:37:09 2003 +# Return-Path: +# Received: from localhost (skeeve [127.0.0.1]) +# by skeeve.com (8.12.5/8.12.5) with ESMTP id h45B1GvT031993 +# for ; Mon, 5 May 2003 14:37:09 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Mon, 05 May 2003 14:37:09 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Mon May 5 14:35:11 2003) +# X-From_: spcecdt@armory.com Mon May 5 12:20:20 2003 +# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id h459KC529186 for ; +# Mon, 5 May 2003 12:20:15 +0300 (EET DST) +# (rfc931-sender: smtp.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h459LMfl025854 +# for ; Mon, 5 May 2003 12:21:24 +0300 +# Received: from armory.com (deepthought.armory.com [192.122.209.42]) +# by f7.net (8.11.7/8.11.6) with SMTP id h459K9I26841 +# for ; Mon, 5 May 2003 05:20:09 -0400 +# Date: Mon, 5 May 2003 02:20:08 -0700 +# From: "John H. DuBois III" +# To: Aharon Robbins +# Subject: Re: gawk 3.1.2b now available +# Message-ID: <20030505092008.GA15970@armory.com> +# References: <200305041149.h44BnLcm005484@localhost.localdomain> +# Mime-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# Content-Disposition: inline +# In-Reply-To: <200305041149.h44BnLcm005484@localhost.localdomain> +# User-Agent: Mutt/1.3.28i +# X-Www: http://www.armory.com./~spcecdt/ +# Sender: spcecdt@armory.com +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# This is a curious one: +# +# gawk-3.1.2b 'BEGIN { +# while (("echo" | getline) == 1) +# ; +# RS = "" +# "echo \"a\n\nb\"" | getline y +# print x +# }' | hd +# +# The output is: +# +# 0000 00 13 0a ... +# 0003 +# +# (the uninitialized variable 'x' is somehow getting the value ) +# +# John +# -- +# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/ +# +BEGIN { + while (("echo" | getline) == 1) + ; + RS = "" + "echo \"a\n\nb\"" | getline y + printf "y = <%s>\n", y # ADR + printf "x = <%s>\n", x # ADR +} diff --git a/src/tool/awk/testdata/gawk/rstest4.ok b/src/tool/awk/testdata/gawk/rstest4.ok new file mode 100644 index 0000000..430442f --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest4.ok @@ -0,0 +1,2 @@ +y = +x = <> diff --git a/src/tool/awk/testdata/gawk/rstest5.awk b/src/tool/awk/testdata/gawk/rstest5.awk new file mode 100644 index 0000000..09abb4a --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest5.awk @@ -0,0 +1,60 @@ +# From spcecdt@armory.com Tue May 6 13:42:34 2003 +# Return-Path: +# Received: from localhost (aahz [127.0.0.1]) +# by skeeve.com (8.12.5/8.12.5) with ESMTP id h46AgG53003519 +# for ; Tue, 6 May 2003 13:42:34 +0300 +# Received: from actcom.co.il [192.114.47.1] +# by localhost with POP3 (fetchmail-5.9.0) +# for arnold@localhost (single-drop); Tue, 06 May 2003 13:42:34 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue May 6 13:48:46 2003) +# X-From_: spcecdt@armory.com Tue May 6 13:26:09 2003 +# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP +# (8.11.6/actcom-0.2) id h46AQ6520133 for ; +# Tue, 6 May 2003 13:26:07 +0300 (EET DST) +# (rfc931-sender: lmail.actcom.co.il [192.114.47.13]) +# Received: from f7.net (consort.superb.net [209.61.216.22]) +# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h46ARSfl010998 +# for ; Tue, 6 May 2003 13:27:31 +0300 +# Received: from armory.com (deepthought.armory.com [192.122.209.42]) +# by f7.net (8.11.7/8.11.6) with SMTP id h46AQ1I18183 +# for ; Tue, 6 May 2003 06:26:01 -0400 +# Date: Tue, 6 May 2003 03:25:59 -0700 +# From: "John H. DuBois III" +# To: Aharon Robbins +# Subject: Re: gawk 3.1.2b now available +# Message-ID: <20030506102559.GA16105@armory.com> +# References: <200305051157.h45Bv4XO003106@localhost.localdomain> +# Mime-Version: 1.0 +# Content-Type: text/plain; charset=us-ascii +# Content-Disposition: inline +# In-Reply-To: <200305051157.h45Bv4XO003106@localhost.localdomain> +# User-Agent: Mutt/1.3.28i +# X-Www: http://www.armory.com./~spcecdt/ +# Sender: spcecdt@armory.com +# X-SpamBouncer: 1.4 (10/07/01) +# X-SBClass: OK +# Status: RO +# +# The patch fixed the previous case, but here's another one - this prints +# : +# +# BEGIN { +# RS = "" +# "echo 'foo\n\nbaz'" | getline +# "echo 'foo\n\nbaz'" | getline +# "echo 'bar\n\nbaz'" | getline +# print x +# } +# +# John +# -- +# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/ +# +BEGIN { + RS = "" + "echo 'foo\n\nbaz'" | getline ; print + "echo 'foo\n\nbaz'" | getline ; print + "echo 'bar\n\nbaz'" | getline ; print + printf "x = <%s>\n", x +} diff --git a/src/tool/awk/testdata/gawk/rstest5.ok b/src/tool/awk/testdata/gawk/rstest5.ok new file mode 100644 index 0000000..bf45151 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest5.ok @@ -0,0 +1,4 @@ +foo +baz +bar +x = <> diff --git a/src/tool/awk/testdata/gawk/rstest6.awk b/src/tool/awk/testdata/gawk/rstest6.awk new file mode 100644 index 0000000..3481c0a --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest6.awk @@ -0,0 +1,6 @@ +# Wed Jul 14 16:02:45 IDT 2004 +# Test case from John Haque mary1john8@earthlink.net + +BEGIN { RS = "XYZ" } + +{ print } diff --git a/src/tool/awk/testdata/gawk/rstest6.in b/src/tool/awk/testdata/gawk/rstest6.in new file mode 100644 index 0000000..a6bddc4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest6.in @@ -0,0 +1 @@ +ABCD \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/rstest6.ok b/src/tool/awk/testdata/gawk/rstest6.ok new file mode 100644 index 0000000..9ed4614 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rstest6.ok @@ -0,0 +1 @@ +ABCD diff --git a/src/tool/awk/testdata/gawk/rswhite.awk b/src/tool/awk/testdata/gawk/rswhite.awk new file mode 100644 index 0000000..0048765 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rswhite.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "" } +{ printf("<%s>\n", $0) } diff --git a/src/tool/awk/testdata/gawk/rswhite.in b/src/tool/awk/testdata/gawk/rswhite.in new file mode 100644 index 0000000..39f7756 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rswhite.in @@ -0,0 +1,2 @@ + a b +c d diff --git a/src/tool/awk/testdata/gawk/rswhite.ok b/src/tool/awk/testdata/gawk/rswhite.ok new file mode 100644 index 0000000..a029e47 --- /dev/null +++ b/src/tool/awk/testdata/gawk/rswhite.ok @@ -0,0 +1,2 @@ +< a b +c d> diff --git a/src/tool/awk/testdata/gawk/scalar.awk b/src/tool/awk/testdata/gawk/scalar.awk new file mode 100644 index 0000000..9027389 --- /dev/null +++ b/src/tool/awk/testdata/gawk/scalar.awk @@ -0,0 +1,4 @@ +BEGIN{ + sub(/x/,"",a) + a[1] +} diff --git a/src/tool/awk/testdata/gawk/scalar.ok b/src/tool/awk/testdata/gawk/scalar.ok new file mode 100644 index 0000000..a5d009f --- /dev/null +++ b/src/tool/awk/testdata/gawk/scalar.ok @@ -0,0 +1 @@ +parse error at 3:2: can't use scalar "a" as array \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/sclforin.awk b/src/tool/awk/testdata/gawk/sclforin.awk new file mode 100644 index 0000000..335e854 --- /dev/null +++ b/src/tool/awk/testdata/gawk/sclforin.awk @@ -0,0 +1 @@ +BEGIN { j = 4; for (i in j) print j[i] } diff --git a/src/tool/awk/testdata/gawk/sclforin.ok b/src/tool/awk/testdata/gawk/sclforin.ok new file mode 100644 index 0000000..6ecfd55 --- /dev/null +++ b/src/tool/awk/testdata/gawk/sclforin.ok @@ -0,0 +1 @@ +parse error at 1:26: can't use scalar "j" as array \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/sclifin.awk b/src/tool/awk/testdata/gawk/sclifin.awk new file mode 100644 index 0000000..64f5d0d --- /dev/null +++ b/src/tool/awk/testdata/gawk/sclifin.awk @@ -0,0 +1,7 @@ +BEGIN { + j = 4 + if ("foo" in j) + print "ouch" + else + print "ok" +} diff --git a/src/tool/awk/testdata/gawk/sclifin.ok b/src/tool/awk/testdata/gawk/sclifin.ok new file mode 100644 index 0000000..75b312a --- /dev/null +++ b/src/tool/awk/testdata/gawk/sclifin.ok @@ -0,0 +1 @@ +parse error at 3:15: can't use scalar "j" as array \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/setrec0.awk b/src/tool/awk/testdata/gawk/setrec0.awk new file mode 100644 index 0000000..8d978aa --- /dev/null +++ b/src/tool/awk/testdata/gawk/setrec0.awk @@ -0,0 +1,8 @@ +function reassign(x, y) { + $0 = x + print y +} + +{ + reassign("larry", $1) +} diff --git a/src/tool/awk/testdata/gawk/setrec0.in b/src/tool/awk/testdata/gawk/setrec0.in new file mode 100644 index 0000000..ce01362 --- /dev/null +++ b/src/tool/awk/testdata/gawk/setrec0.in @@ -0,0 +1 @@ +hello diff --git a/src/tool/awk/testdata/gawk/setrec0.ok b/src/tool/awk/testdata/gawk/setrec0.ok new file mode 100644 index 0000000..ce01362 --- /dev/null +++ b/src/tool/awk/testdata/gawk/setrec0.ok @@ -0,0 +1 @@ +hello diff --git a/src/tool/awk/testdata/gawk/setrec1.awk b/src/tool/awk/testdata/gawk/setrec1.awk new file mode 100644 index 0000000..3da1aa1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/setrec1.awk @@ -0,0 +1,9 @@ +function reassign(x, y) { + $0 = x + print y +} + +BEGIN { + $0 = substr("geronimo", 5, 3) + reassign(" 52", $1) +} diff --git a/src/tool/awk/testdata/gawk/setrec1.ok b/src/tool/awk/testdata/gawk/setrec1.ok new file mode 100644 index 0000000..6bb3f86 --- /dev/null +++ b/src/tool/awk/testdata/gawk/setrec1.ok @@ -0,0 +1 @@ +nim diff --git a/src/tool/awk/testdata/gawk/sigpipe1.awk b/src/tool/awk/testdata/gawk/sigpipe1.awk new file mode 100644 index 0000000..9b23f39 --- /dev/null +++ b/src/tool/awk/testdata/gawk/sigpipe1.awk @@ -0,0 +1,13 @@ +BEGIN { + print "system" + command = "yes | true" + system(command) + + print "pipe to command" + print "hi" | command + close(command) + + print "pipe from command" + command | getline x + close(command) +} diff --git a/src/tool/awk/testdata/gawk/sigpipe1.ok b/src/tool/awk/testdata/gawk/sigpipe1.ok new file mode 100644 index 0000000..6596f07 --- /dev/null +++ b/src/tool/awk/testdata/gawk/sigpipe1.ok @@ -0,0 +1,3 @@ +system +pipe to command +pipe from command diff --git a/src/tool/awk/testdata/gawk/spacere.awk b/src/tool/awk/testdata/gawk/spacere.awk new file mode 100644 index 0000000..6aa87d2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/spacere.awk @@ -0,0 +1,22 @@ +BEGIN { + c[" "] = "\" \"" + c["\a"] = "\\a" + c["\b"] = "\\b" + c["\f"] = "\\f" + c["\n"] = "\\n" + c["\r"] = "\\r" + c["\t"] = "\\t" + c["\v"] = "\\v" + + sort = "LC_ALL=C sort" + + for (i in c) + printf("%s %s [[:space:]]\n", c[i], + i ~ /[[:space:]]/ ? "~" : "!~") | sort + + for (i in c) + printf("%s %s [[:blank:]]\n", c[i], + i ~ /[[:blank:]]/ ? "~" : "!~") | sort + + close(sort) +} diff --git a/src/tool/awk/testdata/gawk/spacere.ok b/src/tool/awk/testdata/gawk/spacere.ok new file mode 100644 index 0000000..4278c5c --- /dev/null +++ b/src/tool/awk/testdata/gawk/spacere.ok @@ -0,0 +1,16 @@ +" " ~ [[:blank:]] +" " ~ [[:space:]] +\a !~ [[:blank:]] +\a !~ [[:space:]] +\b !~ [[:blank:]] +\b !~ [[:space:]] +\f !~ [[:blank:]] +\f ~ [[:space:]] +\n !~ [[:blank:]] +\n ~ [[:space:]] +\r !~ [[:blank:]] +\r ~ [[:space:]] +\t ~ [[:blank:]] +\t ~ [[:space:]] +\v !~ [[:blank:]] +\v ~ [[:space:]] diff --git a/src/tool/awk/testdata/gawk/splitargv.awk b/src/tool/awk/testdata/gawk/splitargv.awk new file mode 100644 index 0000000..10886ef --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitargv.awk @@ -0,0 +1,7 @@ +BEGIN { + for (idx = 1; idx < ARGC; idx++) + split(ARGV[idx], temp, "."); + } + { + print $0; + } diff --git a/src/tool/awk/testdata/gawk/splitargv.in b/src/tool/awk/testdata/gawk/splitargv.in new file mode 100644 index 0000000..10886ef --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitargv.in @@ -0,0 +1,7 @@ +BEGIN { + for (idx = 1; idx < ARGC; idx++) + split(ARGV[idx], temp, "."); + } + { + print $0; + } diff --git a/src/tool/awk/testdata/gawk/splitargv.ok b/src/tool/awk/testdata/gawk/splitargv.ok new file mode 100644 index 0000000..10886ef --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitargv.ok @@ -0,0 +1,7 @@ +BEGIN { + for (idx = 1; idx < ARGC; idx++) + split(ARGV[idx], temp, "."); + } + { + print $0; + } diff --git a/src/tool/awk/testdata/gawk/splitarr.awk b/src/tool/awk/testdata/gawk/splitarr.awk new file mode 100644 index 0000000..c1185a4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitarr.awk @@ -0,0 +1,5 @@ +BEGIN { + a[1] = "elephantie" + a[2] = "e" + print split(a[1],a,a[2]), a[2], a[3], split(a[2],a,a[2]) +} diff --git a/src/tool/awk/testdata/gawk/splitarr.ok b/src/tool/awk/testdata/gawk/splitarr.ok new file mode 100644 index 0000000..9402b94 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitarr.ok @@ -0,0 +1 @@ +4 l phanti 2 diff --git a/src/tool/awk/testdata/gawk/splitdef.awk b/src/tool/awk/testdata/gawk/splitdef.awk new file mode 100644 index 0000000..694db80 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitdef.awk @@ -0,0 +1,7 @@ +BEGIN { + data = "abc:easy:as:one:two:three" + FS = ":" + FIELDWIDTHS = "3 1 4 1 2 1 3 1 3 1 5" + n = split(data, a) + printf "n = %d, a[3] = %s\n", n, a[3] +} diff --git a/src/tool/awk/testdata/gawk/splitdef.ok b/src/tool/awk/testdata/gawk/splitdef.ok new file mode 100644 index 0000000..5f13505 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitdef.ok @@ -0,0 +1 @@ +n = 6, a[3] = as diff --git a/src/tool/awk/testdata/gawk/splitvar.awk b/src/tool/awk/testdata/gawk/splitvar.awk new file mode 100644 index 0000000..9e1ac79 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitvar.awk @@ -0,0 +1,5 @@ +{ + sep = "=+" + n = split($0, a, sep) + print n +} diff --git a/src/tool/awk/testdata/gawk/splitvar.in b/src/tool/awk/testdata/gawk/splitvar.in new file mode 100644 index 0000000..85be8ee --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitvar.in @@ -0,0 +1 @@ +Here===Is=Some=====Data diff --git a/src/tool/awk/testdata/gawk/splitvar.ok b/src/tool/awk/testdata/gawk/splitvar.ok new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitvar.ok @@ -0,0 +1 @@ +4 diff --git a/src/tool/awk/testdata/gawk/splitwht.awk b/src/tool/awk/testdata/gawk/splitwht.awk new file mode 100644 index 0000000..6163d72 --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitwht.awk @@ -0,0 +1,7 @@ +BEGIN { + str = "a b\t\tc d" + n = split(str, a, " ") + print n + m = split(str, b, / /) + print m +} diff --git a/src/tool/awk/testdata/gawk/splitwht.ok b/src/tool/awk/testdata/gawk/splitwht.ok new file mode 100644 index 0000000..61c83cb --- /dev/null +++ b/src/tool/awk/testdata/gawk/splitwht.ok @@ -0,0 +1,2 @@ +4 +5 diff --git a/src/tool/awk/testdata/gawk/status-close.awk b/src/tool/awk/testdata/gawk/status-close.awk new file mode 100644 index 0000000..345bea4 --- /dev/null +++ b/src/tool/awk/testdata/gawk/status-close.awk @@ -0,0 +1,14 @@ +BEGIN { + cat = "cat ; exit 3" + print system("echo xxx | (cat ; exit 4)") + + print "YYY" | cat + + print close(cat) + + echo = "echo boo ; exit 5" + echo | getline boo + print "got", boo + + print close(echo) +} diff --git a/src/tool/awk/testdata/gawk/status-close.ok b/src/tool/awk/testdata/gawk/status-close.ok new file mode 100644 index 0000000..ad3c0ce --- /dev/null +++ b/src/tool/awk/testdata/gawk/status-close.ok @@ -0,0 +1,6 @@ +xxx +4 +YYY +3 +got boo +5 diff --git a/src/tool/awk/testdata/gawk/strcat1.awk b/src/tool/awk/testdata/gawk/strcat1.awk new file mode 100644 index 0000000..0d28017 --- /dev/null +++ b/src/tool/awk/testdata/gawk/strcat1.awk @@ -0,0 +1,6 @@ + +function f1(b) { b = b "c"; print f(b); } + +function f(a) { a = a "b"; return a; } + +BEGIN { A = "a"; f1(A); } diff --git a/src/tool/awk/testdata/gawk/strcat1.ok b/src/tool/awk/testdata/gawk/strcat1.ok new file mode 100644 index 0000000..66a2f4b --- /dev/null +++ b/src/tool/awk/testdata/gawk/strcat1.ok @@ -0,0 +1 @@ +acb diff --git a/src/tool/awk/testdata/gawk/strnum1.awk b/src/tool/awk/testdata/gawk/strnum1.awk new file mode 100644 index 0000000..e9cbdaf --- /dev/null +++ b/src/tool/awk/testdata/gawk/strnum1.awk @@ -0,0 +1,35 @@ +# Date: Tue, 04 Jul 2006 21:06:14 +0200 (MEST) +# From: Heiner Marxen +# Subject: conversion error +# To: bug-gawk@gnu.org +# Message-id: <200607041906.k64J6Eqa019360@drb9.drb.insel.de> +# +# Hello, +# +# The following awk script fails for gawk 3.1.4 and 3.1.5. +# Older versions did not do this, but I cannot say, how old they were. +# +BEGIN { + if( 0 ) { #ok + t = "8" + }else { #fails + t = "" + t = t "8" + } + printf("8 = %d\n", 0+t) # ok without this line + t = t "8" # does not invalidate numeric interpretation + printf("88 = %s\n", 0+t) + ## The above prints "88 = 8" with gawk 3.1.4 and 3.1.5 +} +# +# +# The following one-liner already exhibits the bug: +# +# gawk 'BEGIN{t=""; t=t "8";printf("8=%d\n", 0+t);t=t "8";printf("88=%s\n", 0+t)}' +# +# +# Preliminary observation: under somewhat strange conditions a variable +# does retain its numeric interpretation although something is appended to it. +# -- +# Heiner Marxen http://www.drb.insel.de/~heiner/ +# diff --git a/src/tool/awk/testdata/gawk/strnum1.ok b/src/tool/awk/testdata/gawk/strnum1.ok new file mode 100644 index 0000000..804bcfd --- /dev/null +++ b/src/tool/awk/testdata/gawk/strnum1.ok @@ -0,0 +1,2 @@ +8 = 8 +88 = 88 diff --git a/src/tool/awk/testdata/gawk/strnum2.awk b/src/tool/awk/testdata/gawk/strnum2.awk new file mode 100644 index 0000000..d6829f2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/strnum2.awk @@ -0,0 +1,18 @@ +BEGIN { + split(" 1.234 ", f, "x") # create a numeric string (strnum) value + OFMT = "%.1f" + CONVFMT = "%.2f" + + # Check whether a strnum is displayed the same way before and + # after force_number is called. Also, should numeric strings + # be formatted with OFMT and CONVFMT or show the original string value? + + print f[1] # OFMT + print (f[1] "") # CONVFMT + + # force conversion to NUMBER if it has not happened already + x = f[1]+0 + + print f[1] # OFMT + print (f[1] "") # CONVFMT +} diff --git a/src/tool/awk/testdata/gawk/strnum2.ok b/src/tool/awk/testdata/gawk/strnum2.ok new file mode 100644 index 0000000..63898bd --- /dev/null +++ b/src/tool/awk/testdata/gawk/strnum2.ok @@ -0,0 +1,4 @@ + 1.234 + 1.234 + 1.234 + 1.234 diff --git a/src/tool/awk/testdata/gawk/strtod.awk b/src/tool/awk/testdata/gawk/strtod.awk new file mode 100644 index 0000000..3326478 --- /dev/null +++ b/src/tool/awk/testdata/gawk/strtod.awk @@ -0,0 +1,5 @@ +{ + x = "0x" $1 ; print x, x + 0 + for (i=1; i<=NF; i++) + if ($i) print $i, "is not zero" +} diff --git a/src/tool/awk/testdata/gawk/strtod.in b/src/tool/awk/testdata/gawk/strtod.in new file mode 100644 index 0000000..d7f71aa --- /dev/null +++ b/src/tool/awk/testdata/gawk/strtod.in @@ -0,0 +1 @@ +345 0 00 0e0 0E1 00E0 000e-5 .0e+0 diff --git a/src/tool/awk/testdata/gawk/strtod.ok b/src/tool/awk/testdata/gawk/strtod.ok new file mode 100644 index 0000000..a47a9b1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/strtod.ok @@ -0,0 +1,2 @@ +0x345 0 +345 is not zero diff --git a/src/tool/awk/testdata/gawk/subamp.awk b/src/tool/awk/testdata/gawk/subamp.awk new file mode 100644 index 0000000..731726c --- /dev/null +++ b/src/tool/awk/testdata/gawk/subamp.awk @@ -0,0 +1 @@ +{ sub(/[[:lower:]]/, "&") ; print } diff --git a/src/tool/awk/testdata/gawk/subamp.in b/src/tool/awk/testdata/gawk/subamp.in new file mode 100644 index 0000000..72943a1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subamp.in @@ -0,0 +1 @@ +aaa diff --git a/src/tool/awk/testdata/gawk/subamp.ok b/src/tool/awk/testdata/gawk/subamp.ok new file mode 100644 index 0000000..72943a1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subamp.ok @@ -0,0 +1 @@ +aaa diff --git a/src/tool/awk/testdata/gawk/subback.awk b/src/tool/awk/testdata/gawk/subback.awk new file mode 100644 index 0000000..377ed35 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subback.awk @@ -0,0 +1,15 @@ +BEGIN { + A[0] = "&" + for(i=1;i<=11;i++) { + A[i] = "\\" A[i-1] + } +## A[] holds & \& \\& \\\& \\\\& ... +} + +{ + for(i=0; i <= 11 ; i++) { + x = $0 + sub(/B/, A[i], x) + print i, x + } +} diff --git a/src/tool/awk/testdata/gawk/subback.in b/src/tool/awk/testdata/gawk/subback.in new file mode 100644 index 0000000..223b783 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subback.in @@ -0,0 +1 @@ +B diff --git a/src/tool/awk/testdata/gawk/subback.ok b/src/tool/awk/testdata/gawk/subback.ok new file mode 100644 index 0000000..001ac6a --- /dev/null +++ b/src/tool/awk/testdata/gawk/subback.ok @@ -0,0 +1,12 @@ +0 B +1 & +2 \B +3 \& +4 \\B +5 \\& +6 \\\B +7 \\\& +8 \\\\B +9 \\\\& +10 \\\\\B +11 \\\\\& diff --git a/src/tool/awk/testdata/gawk/subi18n.awk b/src/tool/awk/testdata/gawk/subi18n.awk new file mode 100644 index 0000000..69bfca2 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subi18n.awk @@ -0,0 +1,68 @@ +# Date: Mon, 27 Feb 2006 12:35:30 +0900 +# From: KIMURA Koichi +# Subject: gawk: sub_common has multi-byte aware bug +# To: bug-gawk@gnu.org +# Message-id: <20060227121045.2198.KIMURA.KOICHI@canon.co.jp> +# +# Hi, +# +# A certain user faced bug of sub builtin function and report to me. +# Then I investigated the bug. +# +# reproduce script is here. + +BEGIN { + str = "type=\"directory\" version=\"1.0\"" + #print "BEGIN:", str + + while (str) { + sub(/^[^=]*/, "", str); + s = substr(str, 2) + print s + sub(/^="[^"]*"/, "", str) + sub(/^[ \t]*/, "", str) + } +} + +# and sample result is here (on GNU/Linux Fedora core 3) +# +# [kbk@skuld gawk-3.1.5]$ LC_ALL=C ./gawk -f subbug.awk +# "directory" version="1.0" +# "1.0" +# [kbk@skuld gawk-3.1.5]$ LC_ALL=en_US.UTF-8 ./gawk -f subbug.awk +# "directory" version="1.0" +# "dire +# [kbk@skuld gawk-3.1.5]$ +# +# In my investigation, this bug is cause by don't release wide-string when +# sub is executed. +# +# patch is here. +# +# --- builtin.c.orig 2005-07-27 03:07:43.000000000 +0900 +# +++ builtin.c 2006-02-26 02:07:52.000000000 +0900 +# @@ -2463,6 +2468,15 @@ sub_common(NODE *tree, long how_many, in +# t->stptr = buf; +# t->stlen = textlen; +# +# +#ifdef MBS_SUPPORT +# + if (t->flags & WSTRCUR) { +# + if (t->wstptr != NULL) +# + free(t->wstptr); +# + t->wstptr = NULL; +# + t->wstlen = 0; +# + t->flags &= ~WSTRCUR; +# + } +# +#endif +# free_temp(s); +# if (matches > 0 && lhs) { +# if (priv) { +# +# +# -- +# KIMURA Koichi +# +# +# ##################################################################################### +# This Mail Was Scanned by 012.net AntiVirus Service1- Powered by TrendMicro Interscan +# diff --git a/src/tool/awk/testdata/gawk/subi18n.ok b/src/tool/awk/testdata/gawk/subi18n.ok new file mode 100644 index 0000000..54842cd --- /dev/null +++ b/src/tool/awk/testdata/gawk/subi18n.ok @@ -0,0 +1,2 @@ +"directory" version="1.0" +"1.0" diff --git a/src/tool/awk/testdata/gawk/subsepnm.awk b/src/tool/awk/testdata/gawk/subsepnm.awk new file mode 100644 index 0000000..976eef9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subsepnm.awk @@ -0,0 +1 @@ +BEGIN { SUBSEP = 10; a[1, 1] = 100 ; print a[1 SUBSEP 1] } diff --git a/src/tool/awk/testdata/gawk/subsepnm.ok b/src/tool/awk/testdata/gawk/subsepnm.ok new file mode 100644 index 0000000..29d6383 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subsepnm.ok @@ -0,0 +1 @@ +100 diff --git a/src/tool/awk/testdata/gawk/subslash.awk b/src/tool/awk/testdata/gawk/subslash.awk new file mode 100644 index 0000000..87ab029 --- /dev/null +++ b/src/tool/awk/testdata/gawk/subslash.awk @@ -0,0 +1,6 @@ +BEGIN { + i = 2 + a[i] = 5 + a[i] /= 2 + printf "a[%s] = %f\n", i, a[i] +} diff --git a/src/tool/awk/testdata/gawk/subslash.ok b/src/tool/awk/testdata/gawk/subslash.ok new file mode 100644 index 0000000..4f3beff --- /dev/null +++ b/src/tool/awk/testdata/gawk/subslash.ok @@ -0,0 +1 @@ +a[2] = 2.500000 diff --git a/src/tool/awk/testdata/gawk/substr.awk b/src/tool/awk/testdata/gawk/substr.awk new file mode 100644 index 0000000..6016369 --- /dev/null +++ b/src/tool/awk/testdata/gawk/substr.awk @@ -0,0 +1,14 @@ +BEGIN { + x = "A" + printf("%-39s\n", substr(x,1,39)) + print substr("abcdef", 0, 2) + print substr("abcdef", 2.3, 2) + print substr("abcdef", -1, 2) + print substr("abcdef", 1, 0) + print substr("abcdef", 1, -3) + print substr("abcdef", 1, 2.3) + print substr("", 1, 2) + print substr("abcdef", 5, 5) + print substr("abcdef", 7, 2) + exit (0) +} diff --git a/src/tool/awk/testdata/gawk/substr.ok b/src/tool/awk/testdata/gawk/substr.ok new file mode 100644 index 0000000..be6889d --- /dev/null +++ b/src/tool/awk/testdata/gawk/substr.ok @@ -0,0 +1,10 @@ +A +ab +bc +ab + + +ab + +ef + diff --git a/src/tool/awk/testdata/gawk/swaplns.awk b/src/tool/awk/testdata/gawk/swaplns.awk new file mode 100644 index 0000000..6bf2240 --- /dev/null +++ b/src/tool/awk/testdata/gawk/swaplns.awk @@ -0,0 +1,7 @@ +{ + if ((getline tmp) > 0) { + print tmp + print + } else + print +} diff --git a/src/tool/awk/testdata/gawk/swaplns.in b/src/tool/awk/testdata/gawk/swaplns.in new file mode 100644 index 0000000..71fb162 --- /dev/null +++ b/src/tool/awk/testdata/gawk/swaplns.in @@ -0,0 +1,9 @@ +This directory contains some examples/test-cases for different +features of gawk - mostly not present in an old awk. Some are from +"The GAWK Manual", some are original, and some are mixture of the two. +Read header comments before attempting to use. Have fun and remember +that program which consists only of BEGIN block does not need an input +file. + + --mj + diff --git a/src/tool/awk/testdata/gawk/swaplns.ok b/src/tool/awk/testdata/gawk/swaplns.ok new file mode 100644 index 0000000..d38b7ca --- /dev/null +++ b/src/tool/awk/testdata/gawk/swaplns.ok @@ -0,0 +1,9 @@ +features of gawk - mostly not present in an old awk. Some are from +This directory contains some examples/test-cases for different +Read header comments before attempting to use. Have fun and remember +"The GAWK Manual", some are original, and some are mixture of the two. +file. +that program which consists only of BEGIN block does not need an input + --mj + + diff --git a/src/tool/awk/testdata/gawk/synerr1.awk b/src/tool/awk/testdata/gawk/synerr1.awk new file mode 100644 index 0000000..131708d --- /dev/null +++ b/src/tool/awk/testdata/gawk/synerr1.awk @@ -0,0 +1,4 @@ +# program to make sure we don't infinite +# syntax errors + +print "hi" diff --git a/src/tool/awk/testdata/gawk/synerr1.ok b/src/tool/awk/testdata/gawk/synerr1.ok new file mode 100644 index 0000000..fa56f48 --- /dev/null +++ b/src/tool/awk/testdata/gawk/synerr1.ok @@ -0,0 +1 @@ +parse error at 4:1: expected expression instead of print \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/synerr2.awk b/src/tool/awk/testdata/gawk/synerr2.awk new file mode 100644 index 0000000..9860f24 --- /dev/null +++ b/src/tool/awk/testdata/gawk/synerr2.awk @@ -0,0 +1,47 @@ +# From: =?ISO-8859-1?Q?J=FCrgen_Kahrs?= +# Newsgroups: gnu.utils.bug +# Subject: Re: gawk-3.1.5: syntax error, core dump +# Date: Fri, 23 Jun 2006 18:12:07 +0200 +# Lines: 12 +# Approved: bug-gnu-utils@gnu.org +# Message-ID: +# References: +# Reply-To: Juergen.KahrsDELETETHIS@vr-web.de +# NNTP-Posting-Host: lists.gnu.org +# Mime-Version: 1.0 +# Content-Type: text/plain; charset=ISO-8859-1 +# Content-Transfer-Encoding: 7bit +# X-Trace: news.Stanford.EDU 1151079136 27033 199.232.76.165 (23 Jun 2006 16:12:16 GMT) +# X-Complaints-To: news@news.stanford.edu +# To: gnu-utils-bug@moderators.isc.org +# Envelope-to: bug-gnu-utils@gnu.org +# X-Orig-X-Trace: individual.net +# vYX9N7nUUtqHxPyspweN0gZ4Blkl17z/xU01EwbykxB178O8M= +# User-Agent: Thunderbird 1.5 (X11/20060317) +# In-Reply-To: +# X-BeenThere: bug-gnu-utils@gnu.org +# X-Mailman-Version: 2.1.5 +# Precedence: list +# List-Id: Bug reports for the GNU utilities +# List-Unsubscribe: , +# +# List-Archive: +# List-Post: +# List-Help: +# List-Subscribe: , +# +# Path: news.012.net.il!seanews2.seabone.net!newsfeed.albacom.net!news.mailgate.org!newsfeed.stueberl.de!newsfeed.news2me.com!headwall.stanford.edu!newsfeed.stanford.edu!shelby.stanford.edu!individual.net!not-for-mail +# Xref: news.012.net.il gnu.utils.bug:813 +# +# Karel Zak wrote: +# +# > it seems that gawk has problem with "syntax error" reporting: +# > +# > ./gawk '/^include / { system(sprintf("cd /etc; cat %s", [$]2)); skip +# > = 1; } { if (!skip) print $0; skipQuit; }' < /etc/ld.so.conf +# +# This test case can be boiled down to +# +# gawk 'BEGIN {sprintf("%s", $)}' +# +BEGIN { sprintf("%s", $) } diff --git a/src/tool/awk/testdata/gawk/synerr2.ok b/src/tool/awk/testdata/gawk/synerr2.ok new file mode 100644 index 0000000..0413508 --- /dev/null +++ b/src/tool/awk/testdata/gawk/synerr2.ok @@ -0,0 +1 @@ +parse error at 47:24: expected expression instead of ) \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/tailrecurse.awk b/src/tool/awk/testdata/gawk/tailrecurse.awk new file mode 100644 index 0000000..c4d0f4f --- /dev/null +++ b/src/tool/awk/testdata/gawk/tailrecurse.awk @@ -0,0 +1,22 @@ +BEGIN { + abc(2) +} + + +function array_length(a, k, n) { + n = 0 + for (k in a) n++ + return n +} + +function abc(c, A, B) +{ + print "abc(" c ", " array_length(A) ")" + if (!c) { + return + } + c-- + B[""] = 1 + print array_length(B) + return abc(c, B) +} diff --git a/src/tool/awk/testdata/gawk/tailrecurse.ok b/src/tool/awk/testdata/gawk/tailrecurse.ok new file mode 100644 index 0000000..73ce1ed --- /dev/null +++ b/src/tool/awk/testdata/gawk/tailrecurse.ok @@ -0,0 +1,5 @@ +abc(2, 0) +1 +abc(1, 1) +1 +abc(0, 1) diff --git a/src/tool/awk/testdata/gawk/tradanch.awk b/src/tool/awk/testdata/gawk/tradanch.awk new file mode 100644 index 0000000..0cd45d1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/tradanch.awk @@ -0,0 +1,2 @@ +/foo^bar/ +/foo$bar/ diff --git a/src/tool/awk/testdata/gawk/tradanch.in b/src/tool/awk/testdata/gawk/tradanch.in new file mode 100644 index 0000000..e5c8a09 --- /dev/null +++ b/src/tool/awk/testdata/gawk/tradanch.in @@ -0,0 +1,2 @@ +foo^bar +foo$bar diff --git a/src/tool/awk/testdata/gawk/tradanch.ok b/src/tool/awk/testdata/gawk/tradanch.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/tweakfld.awk b/src/tool/awk/testdata/gawk/tweakfld.awk new file mode 100644 index 0000000..3feaf55 --- /dev/null +++ b/src/tool/awk/testdata/gawk/tweakfld.awk @@ -0,0 +1,292 @@ +# To: bug-gnu-utils@prep.ai.mit.edu +# Cc: arnold@gnu.ai.mit.edu +# Date: Mon, 20 Nov 1995 11:39:29 -0500 +# From: "R. Hank Donnelly" +# +# Operating system: Linux1.2.13 (Slackware distrib) +# GAWK version: 2.15 (?) +# compiler: GCC (?) +# +# The following enclosed script does not want to fully process the input data +# file. It correctly executes the operations on the first record, and then dies +# on the second one. My true data file is much longer but this is +# representative and it does fail on a file even as short as this one. +# The failure appears to occur in the declared function add2output. Between the +# steps of incrementing NF by one and setting $NF to the passed variable +# the passed variable appears to vanish (i.e. NF does go from 68 to 69 +# and before incrementing it "variable" equals what it should but after +# "variable" has no value at all.) +# +# The scripts have been developed using nawk on a Sun (where they run fine) +# I have tried gawk there but get a different crash which I have not yet traced +# down. Ideally I would like to keep the script the same so that it would run +# on either gawk or nawk (that way I can step back and forth between laptop and +# workstation. +# +# Any ideas why the laptop installation is having problems? +# Hank +# +# +# #!/usr/bin/gawk -f + +BEGIN { + # set a few values + FS = "\t" + OFS = "\t" + pi = atan2(0, -1) +# distance from HRMA to focal plane in mm + fullradius = 10260.54 + + # set locations of parameters on input line + nf_nrg = 1 + nf_order = 3 + nf_item = 4 + nf_suite = 5 + nf_grating = 8 + nf_shutter = 9 + nf_type = 13 + nf_src = 14 + nf_target = 15 + nf_voltage = 16 + nf_flux = 17 + nf_filt1 = 20 + nf_filt1_th = 21 + nf_filt2 = 22 + nf_filt2_th = 23 + nf_bnd = 24 + nf_hrma_polar = 27 + nf_hrma_az = 28 + nf_detector = 30 + nf_acis_read = 32 + nf_acis_proc = 33 + nf_acis_frame = 34 + nf_hxda_aplist = 36 + nf_hxda_y_range = 37 + nf_hxda_z_range = 38 + nf_hxda_y_step = 39 + nf_hxda_z_step = 40 + nf_sim_z = 41 + nf_fam_polar = 43 + nf_fam_az = 44 + nf_fam_dither_type = 45 + nf_mono_init = 51 + nf_mono_range = 52 + nf_mono_step = 53 + nf_defocus = 54 + nf_acis_temp = 55 + nf_tight = 59 + nf_offset_y = 64 + nf_offset_z = 65 + +# "date" | getline date_line +# ADR: use a fixed date so that testing will work + date_line = "Sun Mar 10 23:00:27 EST 1996" + split(date_line, in_date, " ") + out_date = in_date[2] " " in_date[3] ", " in_date[6] +} + +function add2output( variable ) { +#print("hi1") >> "debug" + NF++ +#print("hi2") >> "debug" + $NF = variable +#print("hi3") >> "debug" +} + +function error( ekey, message ) { +# print "Error at input line " NR ", anode " ekey >> "errors.cleanup" +# print " " message "." >> "errors.cleanup" +} + +function hxda_na() { + $nf_hxda_aplist = $nf_hxda_y_range = $nf_hxda_z_range = "N/A" + $nf_hxda_y_step = $nf_hxda_z_step = "N/A" +} + +function acis_na() { + $nf_acis_read = $nf_acis_proc = $nf_acis_frame = $nf_acis_temp = "N/A" +} + +function hrc_na() { +# print ("hi") >> "debug" +} + +function fpsi_na() { + acis_na() + hrc_na() + $nf_sim_z = $nf_fam_polar = $nf_fam_az = $nf_fam_dither_type = "N/A" +} + +function mono_na() { + $nf_mono_init = $nf_mono_range = $nf_mono_step = "N/A" +} + +# this gives the pitch and yaw of the HRMA and FAM +# positive pitch is facing the source "looking down" +# positive yaw is looking left +# 0 az is north 90 is up +# this also adds in the FAM X,Y,Z positions + +function polaz2yawpitch(polar, az) { + theta = az * pi / 180 + phi = polar * pi / 180 / 60 + + + if( polar == 0 ) { + add2output( 0 ) + add2output( 0 ) + } else { + if(az == 0 || az == 180) + add2output( 0 ) + else + add2output( - polar * sin(theta) ) + + +# x = cos (phi) +# y = sin (phi) * cos (theta) +# add2output( atan2(y,x)*180 / pi * 60 ) + + if(az == 90 || az ==270 ) + add2output( 0 ) + else + add2output( - polar * cos(theta) ) + + } +# x = cos (phi) +# z= sin (phi) * sin (theta) +# add2output( atan2(z,x)*180 / pi * 60 ) + + if(config !~ /HXDA/) { +# negative values of defocus move us farther from the source thus +# increasing radius + radius = fullradius - defocus + +# FAM_x; FAM_y; FAM_z + if((offset_y == 0) && (offset_z == 0)){ + add2output( fullradius - radius * cos (phi) ) + + if (az == 90 || az ==270) + add2output( 0 ) + else + add2output( radius * sin (phi) * cos (theta) ) + + if (az == 0 || az == 180) + add2output( 0 ) + else + add2output( - radius * sin (phi) * sin (theta) ) + } else { +# ******* THIS SEGMENT OF CODE IS NOT MATHEMATICALLY CORRECT FOR **** +# OFF AXIS ANGLES AND IS SUPPLIED AS A WORKAROUND SINCE IT WILL +# PROBABLY ONLY BE USED ON AXIS. + add2output( defocus ) + add2output( offset_y ) + add2output( offset_z ) + } + + } else { + add2output( "N/A" ) + add2output( "N/A" ) + add2output( "N/A" ) + } +} + +# set TIGHT/LOOSE to N/A if it is not one of the two allowed values +function tight_na() { + if( $nf_tight !~ /TIGHT|LOOSE/ ) { + $nf_tight == "N/A" + } +} + +# this entry is used to give certain entries names +{ + type = $nf_type + item = $nf_item + suite = $nf_suite + order = $nf_order + detector = $nf_detector + grating = $nf_grating + offset_y= $nf_offset_y + offset_z= $nf_offset_z + bnd = $nf_bnd + defocus = $nf_defocus +} + +{ + # make configuration parameter + # as well as setting configuration-dependent N/A values + + if( $nf_bnd ~ "SCAN" ) { + # BND is scanning beam + config = "BND" + hxda_na() + fpsi_na() + } else { + if( grating == "NONE" ) { + config = "HRMA" + } else { + if( grating == "HETG" ) { + if( order != "Both" ) { + $nf_shutter = order substr($nf_shutter, \ + index($nf_shutter, ",") ) + } + } else { + order = "N/A" + } + config = "HRMA/" grating + } + + if( detector ~ /ACIS|HRC/ ) { + detsys = detector + nsub = sub("-", ",", detsys) + config = config "/" detsys + hxda_na() + } else { + config = config "/HXDA" + fpsi_na() + if( detector == "HSI" ) { + hxda_na() + } + } + } + + add2output( config ) + + if( $nf_src ~ /EIPS|Penning/ ) mono_na() + + if( $nf_src == "Penning" ) $nf_voltage = "N/A" + + itm = sprintf("%03d", item) + + if(config in mnemonic) { + if( type in mnemonic ) { + ID = mnemonic[config] "-" mnemonic[type] "-" suite "." itm + add2output( ID ) + } else { + error(type, "measurement type not in list") + } + } else { + error(config, "measurement configuration not in list") + } + + # add date to output line + add2output( out_date ) + + # Convert HRMA polar and azimuthal angles to yaw and pitch + polaz2yawpitch($nf_hrma_polar, $nf_hrma_az) + + # set TIGHT/LOOSE to N/A if it is not one of the two allowed values + tight_na() + + # compute number of HXDA apertures + if( config ~ /HXDA/ && $nf_hxda_aplist != "N/A") + add2output( split( $nf_hxda_aplist, dummy, "," ) ) + else + add2output( "N/A" ) + + # make sure the BND value is properly set + if($nf_bnd == "FIXED" && detector ~ /ACIS/) + $nf_bnd =bnd"-SYNC" + else + $nf_bnd = bnd"-FREE" + print +} diff --git a/src/tool/awk/testdata/gawk/tweakfld.in b/src/tool/awk/testdata/gawk/tweakfld.in new file mode 100644 index 0000000..e27a9dd --- /dev/null +++ b/src/tool/awk/testdata/gawk/tweakfld.in @@ -0,0 +1,3 @@ +0.277 N/A N/A 1 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS C-Ka 1.108 0.13484 N/A N/A C8H8 10.32 C8H8 20.64 FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 44.7175 44.7175 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate +1.486 N/A N/A 2 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Al-Ka 4.458 0.642119 N/A N/A Al 18.38 Al 36.76 FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate +4.51 N/A N/A 3 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Ti-Ka 22.55 3.02894 N/A N/A Ti 40.6 N/A N/A FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate diff --git a/src/tool/awk/testdata/gawk/tweakfld.ok b/src/tool/awk/testdata/gawk/tweakfld.ok new file mode 100644 index 0000000..3c4d894 --- /dev/null +++ b/src/tool/awk/testdata/gawk/tweakfld.ok @@ -0,0 +1,3 @@ +0.277 N/A N/A 1 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS C-Ka 1.108 0.13484 N/A N/A C8H8 10.32 C8H8 20.64 FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 44.7175 44.7175 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A +1.486 N/A N/A 2 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Al-Ka 4.458 0.642119 N/A N/A Al 18.38 Al 36.76 FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A +4.51 N/A N/A 3 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Ti-Ka 22.55 3.02894 N/A N/A Ti 40.6 N/A N/A FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A diff --git a/src/tool/awk/testdata/gawk/uninit2.awk b/src/tool/awk/testdata/gawk/uninit2.awk new file mode 100644 index 0000000..9ded557 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit2.awk @@ -0,0 +1,2 @@ +BEGIN { a = a + 1; x = a; print a} +BEGIN { ++b; x = b; print b} diff --git a/src/tool/awk/testdata/gawk/uninit2.ok b/src/tool/awk/testdata/gawk/uninit2.ok new file mode 100644 index 0000000..6ed281c --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit2.ok @@ -0,0 +1,2 @@ +1 +1 diff --git a/src/tool/awk/testdata/gawk/uninit3.awk b/src/tool/awk/testdata/gawk/uninit3.awk new file mode 100644 index 0000000..d0140d5 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit3.awk @@ -0,0 +1,7 @@ +function f(x){ + print x +} + +BEGIN { + f(x) +} diff --git a/src/tool/awk/testdata/gawk/uninit3.ok b/src/tool/awk/testdata/gawk/uninit3.ok new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit3.ok @@ -0,0 +1 @@ + diff --git a/src/tool/awk/testdata/gawk/uninit4.awk b/src/tool/awk/testdata/gawk/uninit4.awk new file mode 100644 index 0000000..89de732 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit4.awk @@ -0,0 +1,13 @@ +# test whether --lint catches uninitialized fields: +function pr() +{ + print +} + +BEGIN { + pr() + print $0 + print $(1-1) + print $1 + NF=3; print $2 +} diff --git a/src/tool/awk/testdata/gawk/uninit4.ok b/src/tool/awk/testdata/gawk/uninit4.ok new file mode 100644 index 0000000..3f2ff2d --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit4.ok @@ -0,0 +1,5 @@ + + + + + diff --git a/src/tool/awk/testdata/gawk/uninit5.awk b/src/tool/awk/testdata/gawk/uninit5.awk new file mode 100644 index 0000000..bf743f1 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit5.awk @@ -0,0 +1,117 @@ +#From gregfjohnson@yahoo.com Sun Aug 30 08:36:36 2009 +#Return-Path: +#Received: from aahz (localhost [127.0.0.1]) +# by skeeve.com (8.14.1/8.14.1) with ESMTP id n7U5WoJ2003836 +# for ; Sun, 30 Aug 2009 08:36:36 +0300 +#X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on server1.f7.net +#X-Spam-Level: +#X-Spam-Status: No, score=-6.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED +# autolearn=ham version=3.2.4 +#X-Envelope-From: gregfjohnson@yahoo.com +#X-Envelope-To: +#Received: from server1.f7.net [64.34.169.74] +# by aahz with IMAP (fetchmail-6.3.7) +# for (single-drop); Sun, 30 Aug 2009 08:36:36 +0300 (IDT) +#Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) +# by f7.net (8.11.7-20030920/8.11.7) with ESMTP id n7U33m709453 +# for ; Sat, 29 Aug 2009 22:03:48 -0500 +#Received: from mail.gnu.org ([199.232.76.166]:42095 helo=mx10.gnu.org) +# by fencepost.gnu.org with esmtp (Exim 4.67) +# (envelope-from ) +# id 1Mhai6-0004Qt-3R +# for bug-gawk@gnu.org; Sat, 29 Aug 2009 23:04:06 -0400 +#Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) +# (envelope-from ) +# id 1Mhai5-00062I-EM +# for bug-gawk@gnu.org; Sat, 29 Aug 2009 23:04:05 -0400 +#Received: from web33507.mail.mud.yahoo.com ([68.142.206.156]:28597) +# by monty-python.gnu.org with smtp (Exim 4.60) +# (envelope-from ) +# id 1Mhai5-00061w-2n +# for bug-gawk@gnu.org; Sat, 29 Aug 2009 23:04:05 -0400 +#Received: (qmail 68722 invoked by uid 60001); 30 Aug 2009 03:04:03 -0000 +#DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1251601443; bh=9h2ZOOgxUh+s8Ow5/ZMWUxcviy2L4rpiaNamPAXxhEk=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=tWxCQq/aTOT5lhtdPc5hxtXzOjDFmLU6Ao0BSlwbeeBsd9Wl6DU3JCR4gTkoL0aVUOTdjMjgRY7I72yCht+YruDiqZrvtSKvUoAvZAKcPG26RE4jzxUlxQklEHZG9mq9h2gpTIiLYehYDiC0975wukwi/e7ePADfkFwg8eTnT44= +#DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; +# s=s1024; d=yahoo.com; +# h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; +# b=LWfhVgxojFG1eYoRrxtrS3YOfH3MTUVTYZle/4utMQEPZQfsmrn6GBwBfThryGqJyZfg38/7JfK9cz/Q3Yt+mf8+xl9/m+Srckc+Xvi42CE0OmoN439vCyhAD8A74XOJsmfKDjJ/+LtioShStUohj1iYDDmRTN4RnnP9X4xnt3c=; +#Message-ID: <410222.68490.qm@web33507.mail.mud.yahoo.com> +#X-YMail-OSG: mfjax.MVM1lI2q5gcl6bChbn6zHgNgj1fByHWJSzB8ZZUmI2QCH6pNwV_IaHxcqecu.VqjKUR6HQhXbziUnX.v5E2nOE61ass9AzqfdVOtKTEAzTPQJ8Z7QB7fq7BMtjn8yohDR6mwOyVTqv3RZh0m1Us7sLit6UmcgeSvJo2rROAmeceq.FBwk2XnEp2_QsljjPHak_WXyvtAK81klDv5qQORWQWqR9q79x7yxORL6fLWwb_x6mZZMSOUaA0p8.ucT453eqT1L8NGkthF.fXmOM3_EYd03zUgr9Sb.zvMvbDC3MCMnVr0JT1uroLmFtVIdTojrFJYFQEDFSB9zT3Ua80ZpGXrjQGx3rZw-- +#Received: from [71.165.246.171] by web33507.mail.mud.yahoo.com via HTTP; Sat, 29 Aug 2009 20:04:03 PDT +#X-Mailer: YahooMailClassic/6.1.2 YahooMailWebService/0.7.338.2 +#Date: Sat, 29 Aug 2009 20:04:03 -0700 (PDT) +#From: Greg Johnson +#Subject: bugs in passing uninitialized array to a function +#To: bug-gawk@gnu.org +#MIME-Version: 1.0 +#Content-Type: multipart/mixed; boundary="0-1690489838-1251601443=:68490" +#X-detected-operating-system: by monty-python.gnu.org: FreeBSD 6.x (1) +#Status: RO +# +#--0-1690489838-1251601443=:68490 +#Content-Type: text/plain; charset=us-ascii +# +#I am using gawk version 3.1.7. +# +#The attached programs illustrate what look to me like two bugs +#in the handling of uninitialized variables to functions that treat +#them as arrays. +# +#Greg Johnson +# +# +# +#--0-1690489838-1251601443=:68490 +#Content-Type: application/octet-stream; name=b1 +#Content-Transfer-Encoding: base64 +#Content-Disposition: attachment; filename="b1" + +# bug? on uninitialized array, length(a) prints as 3, then the loop +# behaves differently, iterating once. so, length() behaves differently +# on two calls to the same variable, which was not changed. + +function array_length(a, k, n) { + n = 0 + for (k in a) n++ + return n +} + +function prt1(a, len) +{ + print "length: " array_length(a) + + for (i = 1; i <= array_length(a); i++) + printf "<" i "," a[i] "> " + + print "\n" +} + +BEGIN { + prt1(zzz) +} + +#--0-1690489838-1251601443=:68490 +#Content-Type: application/octet-stream; name=b2 +#Content-Transfer-Encoding: base64 +#Content-Disposition: attachment; filename="b2" + +# shouldn't an uninitialized array have length zero? +# length is printed as 1, and the loop iterates once. + +function prt(a, len) +{ + len = array_length(a) + print "length: " len + + for (i = 1; i <= len; i++) + printf "<" i "," a[i] "> " + + print "\n" +} + +BEGIN { + prt(zzz) +} + +#--0-1690489838-1251601443=:68490-- + diff --git a/src/tool/awk/testdata/gawk/uninit5.ok b/src/tool/awk/testdata/gawk/uninit5.ok new file mode 100644 index 0000000..9eb5952 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninit5.ok @@ -0,0 +1,6 @@ +length: 0 + + +length: 0 + + diff --git a/src/tool/awk/testdata/gawk/uninitialized.awk b/src/tool/awk/testdata/gawk/uninitialized.awk new file mode 100644 index 0000000..09bb643 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uninitialized.awk @@ -0,0 +1,3 @@ +BEGIN { + a += 2 +} diff --git a/src/tool/awk/testdata/gawk/uninitialized.ok b/src/tool/awk/testdata/gawk/uninitialized.ok new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/gawk/unterm.awk b/src/tool/awk/testdata/gawk/unterm.awk new file mode 100644 index 0000000..c420c47 --- /dev/null +++ b/src/tool/awk/testdata/gawk/unterm.awk @@ -0,0 +1 @@ +BEGIN{x=".........................................................................................................................................................................................................................................................} \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/unterm.ok b/src/tool/awk/testdata/gawk/unterm.ok new file mode 100644 index 0000000..2af5eb9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/unterm.ok @@ -0,0 +1 @@ +parse error at 1:260: didn't find end quote in string \ No newline at end of file diff --git a/src/tool/awk/testdata/gawk/uparrfs.awk b/src/tool/awk/testdata/gawk/uparrfs.awk new file mode 100644 index 0000000..8590524 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uparrfs.awk @@ -0,0 +1,8 @@ +BEGIN { + FS = "(^x+)|( +)" +} + +{ + for (i = 1; i <= NF; i++) + printf "-->%s<--\n", $i +} diff --git a/src/tool/awk/testdata/gawk/uparrfs.in b/src/tool/awk/testdata/gawk/uparrfs.in new file mode 100644 index 0000000..8e6b5c0 --- /dev/null +++ b/src/tool/awk/testdata/gawk/uparrfs.in @@ -0,0 +1 @@ +xxAA xxBxx C diff --git a/src/tool/awk/testdata/gawk/uparrfs.ok b/src/tool/awk/testdata/gawk/uparrfs.ok new file mode 100644 index 0000000..944ba9a --- /dev/null +++ b/src/tool/awk/testdata/gawk/uparrfs.ok @@ -0,0 +1,4 @@ +--><-- +-->AA<-- +-->xxBxx<-- +-->C<-- diff --git a/src/tool/awk/testdata/gawk/uplus.awk b/src/tool/awk/testdata/gawk/uplus.awk new file mode 100644 index 0000000..3220f7f --- /dev/null +++ b/src/tool/awk/testdata/gawk/uplus.awk @@ -0,0 +1,5 @@ +BEGIN { + print "01" + 0 + print +"01" + print -"01" +} diff --git a/src/tool/awk/testdata/gawk/uplus.ok b/src/tool/awk/testdata/gawk/uplus.ok new file mode 100644 index 0000000..9f6e83e --- /dev/null +++ b/src/tool/awk/testdata/gawk/uplus.ok @@ -0,0 +1,3 @@ +1 +1 +-1 diff --git a/src/tool/awk/testdata/gawk/wideidx.awk b/src/tool/awk/testdata/gawk/wideidx.awk new file mode 100644 index 0000000..9c8a64c --- /dev/null +++ b/src/tool/awk/testdata/gawk/wideidx.awk @@ -0,0 +1,7 @@ +{ + a=$0 + print index(a,"b") + getline + a = a $0 + print index(a,"b") +} diff --git a/src/tool/awk/testdata/gawk/wideidx.in b/src/tool/awk/testdata/gawk/wideidx.in new file mode 100644 index 0000000..3bd1f0e --- /dev/null +++ b/src/tool/awk/testdata/gawk/wideidx.in @@ -0,0 +1,2 @@ +foo +bar diff --git a/src/tool/awk/testdata/gawk/wideidx.ok b/src/tool/awk/testdata/gawk/wideidx.ok new file mode 100644 index 0000000..4f1d7cd --- /dev/null +++ b/src/tool/awk/testdata/gawk/wideidx.ok @@ -0,0 +1,2 @@ +0 +4 diff --git a/src/tool/awk/testdata/gawk/wideidx2.awk b/src/tool/awk/testdata/gawk/wideidx2.awk new file mode 100644 index 0000000..335c29d --- /dev/null +++ b/src/tool/awk/testdata/gawk/wideidx2.awk @@ -0,0 +1,89 @@ +# Date: Thu, 27 Apr 2006 20:59:03 +0100 +# From: Lee Haywood +# Subject: gawk multi-byte support bugs, assertion bug and fix. +# To: bug-gawk@gnu.org +# Message-id: <60962be00604271259na0d8fdayb9d0c69a853216e8@mail.gmail.com> +# MIME-version: 1.0 +# Content-type: multipart/alternative; +# boundary="----=_Part_10136_920879.1146167943492" +# Status: RO +# +# ------=_Part_10136_920879.1146167943492 +# Content-Type: text/plain; charset=ISO-8859-1 +# Content-Transfer-Encoding: quoted-printable +# Content-Disposition: inline +# +# +# Firstly, I have been getting the following error from version 3.1.5. +# +# awk: node.c:515: unref: Assertion `(tmp->flags & 4096) !=3D 0' failed. +# +# In mk_number() in node.c the MBS_SUPPORT code is inside the GAWKDEBUG +# section - moving it outside explicitly clears the string values, which +# prevents the assertion error from occurring. The corrected version is +# shown at the end of this message. +# +# As an aside, I also noticed that n->wstptr is not cleared by +# set_field() and set_record() in field.c when the flags are set to +# exclude WSTRCUR. However, I do not have a test case to show if +# changing them makes any difference. +# +# A second problem also occurs when gawk 3.1.5 is compiled with +# multi-byte character support (MBS_SUPPORT). The following code should +# change the index of the substring "bc" from 2 to 3, but it gets +# reported as 2 in both cases - which is obviously disastrous. +# +# awk 'BEGIN { +# Value =3D "abc" +# +# print "Before <" Value "> ", +# index( Value, "bc" ) +# +# sub( /bc/, "bbc", Value ) +# +# print "After <" Value ">", +# index( Value, "bc" ) +# }' +# +# Compiling with MBS_SUPPORT undefined makes these problems go away. +# +# /* mk_number --- allocate a node with defined number */ +# +# NODE * +# mk_number(AWKNUM x, unsigned int flags) +# { +# register NODE *r; +# +# getnode(r); +# r->type =3D Node_val; +# r->numbr =3D x; +# r->flags =3D flags; +# #if defined MBS_SUPPORT +# r->wstptr =3D NULL; +# r->wstlen =3D 0; +# #endif /* MBS_SUPPORT */ +# #ifdef GAWKDEBUG +# r->stref =3D 1; +# r->stptr =3D NULL; +# r->stlen =3D 0; +# #if defined MBS_SUPPORT +# r->flags &=3D ~WSTRCUR; +# #endif /* MBS_SUPPORT */ +# #endif /* GAWKDEBUG */ +# return r; +# } +# +# Thanks. +# +# -- +# Lee Haywood. + +BEGIN { + Value = "abc" + + print "Before <" Value "> ", index( Value, "bc" ) + + sub( /bc/, "bbc", Value ) + + print "After <" Value ">", index( Value, "bc" ) +} diff --git a/src/tool/awk/testdata/gawk/wideidx2.ok b/src/tool/awk/testdata/gawk/wideidx2.ok new file mode 100644 index 0000000..c0206ec --- /dev/null +++ b/src/tool/awk/testdata/gawk/wideidx2.ok @@ -0,0 +1,2 @@ +Before 2 +After 3 diff --git a/src/tool/awk/testdata/gawk/widesub.awk b/src/tool/awk/testdata/gawk/widesub.awk new file mode 100644 index 0000000..768e715 --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub.awk @@ -0,0 +1,12 @@ +BEGIN { + str = "type=\"directory\" version=\"1.0\"" + #print "BEGIN:", str + + while (str) { + sub(/^[^=]*/, "", str); + s = substr(str, 2) + print s + sub(/^="[^"]*"/, "", str) + sub(/^[ \t]*/, "", str) + } +} diff --git a/src/tool/awk/testdata/gawk/widesub.ok b/src/tool/awk/testdata/gawk/widesub.ok new file mode 100644 index 0000000..54842cd --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub.ok @@ -0,0 +1,2 @@ +"directory" version="1.0" +"1.0" diff --git a/src/tool/awk/testdata/gawk/widesub2.awk b/src/tool/awk/testdata/gawk/widesub2.awk new file mode 100644 index 0000000..69383d3 --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub2.awk @@ -0,0 +1,9 @@ +BEGIN { + Value = "abc" + + print "Before <" Value "> ", index( Value, "bc" ) + + sub( /bc/, "bbc", Value ) + + print "After <" Value ">", index( Value, "bc" ) +} diff --git a/src/tool/awk/testdata/gawk/widesub2.ok b/src/tool/awk/testdata/gawk/widesub2.ok new file mode 100644 index 0000000..c0206ec --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub2.ok @@ -0,0 +1,2 @@ +Before 2 +After 3 diff --git a/src/tool/awk/testdata/gawk/widesub3.awk b/src/tool/awk/testdata/gawk/widesub3.awk new file mode 100644 index 0000000..48c414a --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub3.awk @@ -0,0 +1,6 @@ +{ + if (substr($1,1,1) == substr($0,1,1)) + print "substr matches" + sub(/foo/,"bar") + print nr++ +} diff --git a/src/tool/awk/testdata/gawk/widesub3.in b/src/tool/awk/testdata/gawk/widesub3.in new file mode 100644 index 0000000..6357df9 --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub3.in @@ -0,0 +1,2 @@ +test +foo diff --git a/src/tool/awk/testdata/gawk/widesub3.ok b/src/tool/awk/testdata/gawk/widesub3.ok new file mode 100644 index 0000000..7507261 --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub3.ok @@ -0,0 +1,4 @@ +substr matches +0 +substr matches +1 diff --git a/src/tool/awk/testdata/gawk/widesub4.awk b/src/tool/awk/testdata/gawk/widesub4.awk new file mode 100644 index 0000000..8d0a8de --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub4.awk @@ -0,0 +1,51 @@ +# Date: Sun, 28 May 2006 11:20:58 +0200 +# From: Frantisek Hanzlik +# Subject: sub() function do'nt alter string length in awk 3.1.5 +# To: bug-gawk@gnu.org +# Message-id: <44796B7A.3050908@hanzlici.cz> +# +# Hello, +# I not know when it is my mistake or gawk bug - in simple example below +# I delete some chars from string variable, and after this string is +# modified, but its length is unchanged. +# +# awk 'BEGIN{A="1234567890abcdef"; +# for (i=1;i<6;i++){print length(A),"A=" A ".";sub("....","",A)} +# }' +# 16 A=1234567890abcdef. +# 16 A=567890abcdef. +# 16 A=90abcdef. +# 16 A=cdef. +# 16 A=. +# +# When I use gensub() instead of sub(), result is as I expected: +# +# awk 'BEGIN{A="1234567890abcdef"; +# for (i=1;i<6;i++){print length(A),"A=" A ".";A=gensub("....","",1,A)} +# }' +# 16 A=1234567890abcdef. +# 12 A=567890abcdef. +# 8 A=90abcdef. +# 4 A=cdef. +# 0 A=. +# +# OS/GAWK versions: +# - GNU/Linux kernel 2.6.16-1.2122_FC5 #1 i686, Fedora Core 5 distro +# - glibc-2.4-8 +# - GNU Awk 3.1.5 +# +# Yours sincerely +# Frantisek Hanzlík +# +# == Lucní 502 Linux/Unix, Novell, Internet Tel: +420-373729699 == +# == 33209 Stenovice e-mail:franta@hanzlici.cz Fax: +420-373729699 == +# == Czech Republic http://hanzlici.cz/ GSM: +420-604117319 == +# +# +# +# ##################################################################################### +# This Mail Was Scanned by 012.net AntiVirus Service3- Powered by TrendMicro Interscan +# +BEGIN{A="1234567890abcdef"; + for (i=1;i<6;i++){print length(A),"A=" A ".";sub("....","",A)} +} diff --git a/src/tool/awk/testdata/gawk/widesub4.ok b/src/tool/awk/testdata/gawk/widesub4.ok new file mode 100644 index 0000000..f969b32 --- /dev/null +++ b/src/tool/awk/testdata/gawk/widesub4.ok @@ -0,0 +1,5 @@ +16 A=1234567890abcdef. +12 A=567890abcdef. +8 A=90abcdef. +4 A=cdef. +0 A=. diff --git a/src/tool/awk/testdata/gawk/wjposer1.awk b/src/tool/awk/testdata/gawk/wjposer1.awk new file mode 100644 index 0000000..396089b --- /dev/null +++ b/src/tool/awk/testdata/gawk/wjposer1.awk @@ -0,0 +1,75 @@ +# From arnold@f7.net Sun Sep 5 12:30:53 2004 +# Date: Fri, 3 Sep 2004 00:54:32 -0400 (EDT) +# From: William J Poser +# To: arnold@skeeve.com +# Subject: gawk bug +# Message-ID: <20040903004347.W80049@lorax.ldc.upenn.edu> +# +# Here is a revised version of my previous message, modified to describe +# the accompanying files. +# +# IhSplit.awk should replicate every record with exactly one entry in the +# IH field, delete records lacking an IH field, and produce as many copies +# of records with two or more entries in the IH field as there are entries. +# In the latter case, the original IH field should be relabelled OIH and +# a new IH field be added at the beginning of the record. +# +# This has worked properly for many years, since at least 1997. It worked properly with gawk 3.0.5 +# and possibly later versions. Unfortunately I didn't keep track of exactly what version it +# broke on, but it was whatever came with Mandrake Linux 9.0. It continued to fail with version +# 3.1.2. However, the problem was eliminated with version 3.1.3 and remains +# eliminated in version 3.1.4. +# +# The problem was that an apparently random subset of records would loose some +# or all of their fields. Running the script on the same input always produces +# the same output with the same errors. +# +# The file Input is a subset of a real lexicon that produces errors using +# gawk 3.1.2. GoodOutput is the expected output. BadOutput is the erroneous +# output. A diff will show that there are actually two errors. One record +# has fields stripped as described above. Another is omitted in its entirety. +# +# +# Bill Poser, Linguistics, University of Pennsylvania +# http://www.ling.upenn.edu/~wjposer/ billposer@alum.mit.edu +# ---------------------------------------------------------------------------- +#For each record that contains multiple items in its inverse headword (IH) +#field, generate a set of new records each containing exactly one item +#in the inverse headword field, otherwise copies of the original. + +function CleanUp() #Clean up for next input record. +{ + for(i in rec) delete rec[i]; +} + +BEGIN { +RS = ""; +FS = "\n?%" +} +{ + +# First, create an associative array with the tags as indices. + for(i = 2; i <= NF; i++) { # The leading FS creates an initial empty field + split($i, f, ":"); + rec[f[1]]=substr($i,index($i,":")+1); + } + + if(!("IH" in rec)) next; + +# Parse out the inverse headwords + + items = split(rec["IH"],ihs,"/"); + +# Replace the old IH field. + + sub(/%IH:/,"%OIH:",$0); + +# Generate a new copy of the record for each inverse headword + + for(i = 1; i <= items; i++){ + entries+=1; + printf("%%IH:%s\n",ihs[i]); + printf("%s\n\n",$0); + } + CleanUp(); + } diff --git a/src/tool/awk/testdata/gawk/wjposer1.in b/src/tool/awk/testdata/gawk/wjposer1.in new file mode 100644 index 0000000..bdcd4a8 --- /dev/null +++ b/src/tool/awk/testdata/gawk/wjposer1.in @@ -0,0 +1,1527 @@ +%P:nut'i +%G:exertion +%IH:exertion +%C:N +%SF:abstractions-misc +%S:JOPA/EDFR/VESE +%ES:000088 +%UID:002463 +%MD:1999/03/15 + +%P:ts'iyantsuk t'eooninzun +%G:information +%IH:information +%C:N +%SF:abstractions-misc +%S:JOPA/BRBI +%UID:000986 +%MD:1997/12/17 + +%P:k'et'uk +%G:interval +%IH:interval +%C:N +%SF:abstractions-misc +%S:MAGO +%ES:001077 +%UID:000873 +%MD:1997/12/11 + +%P:khunek +%G:language, word, message +%IH:language/word/message +%POSS:ghunek +%P1p:neghunek +%C:N +%SF:abstractions-misc +%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO +%UID:000928 +%MD:2001/02/10 + +%P:gal +%G:running +%IH:running +%C:N +%R:Dugal ndesda. He got hurt while running. +%SF:abstractions-misc +%S:JOPA +%ES:000535 +%UID:002462 +%MD:1999/03/15 + +%P:t'en +%G:work +%IH:work +%C:N +%SF:abstractions-misc +%S:VESE/PEJO +%ES:000672 +%UID:003028 +%POCKET:N +%MD:2000/10/04 + +%P:'ut'en +%G:work +%IH:work +%C:N +%SF:abstractions-misc +%P1p:neye'ut'en +%S:JOPA +%ES:001041 +%UID:004264 +%POCKET:Y +%MD:2001/03/15 + +%P:dulkw'ah +%G:Spotted Frog +%IH:Spotted Frog/Frog, Spotted +%SN:Rana pretiosa +%MN:Lives in water and has red markings on the belly. +%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps +%CAPTION:{\qc Tsasdli} --- Spotted Frog +%PICPERMISSION:N +%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}. +%C:N +%SF:amphibiansandreptiles +%S:EDFR +%UID:004111 +%POCKET:Y +%MD:2001/03/07 + +%P:chunlai +%G:salamander, lizard +%IH:lizard/salamander +%MN:The only species of salamander found in the region is the + Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards + are found in the region. However, this term is applied to other + varieties of salamander and to lizards, such as the gekkos sold as + pets. +%FGREF:Corkran \& Thoms (1996;39) +%SN:Ambystoma macrodactylum +%C:N +%SF:amphibiansandreptiles +%S:LITM/JOPA/BRBI +%UID:000157 +%MD:1998/05/16 + +%P:tl'ughus +%G:snake +%IH:snake +%C:N +%MN:The only snake found in the region is the Common Garter Snake + {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes. +%SN:Thamnophis sirtalis +%SF:amphibiansandreptiles +%S:LITM/JOPA/BRBI/MAGO +%UID:000250 +%MD:1998/12/07 + +%P:tsasdli +%G:Western Toad +%SN:Bufo boreas +%IH:Western Toad/Toad, Western +%MN:Lives on land. +%SF:amphibiansandreptiles +%C:N +%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR +%UID:000059 +%MD:2001/03/07 + +%P:lhits'e +%G:bitch, female dog +%IH:bitch/dog, female +%C:N +%SF:animals-domestic +%S:JOPA/EDFR/VESE +%UID:002446 +%MD:1999/03/15 + +%P:musdus +%G:cow +%IH:cow +%C:N +%P2s:nmusdus +%ETYM:Loan from Cree {\qf mostos} ``buffalo''. +%LOANSOURCE:Cree +%SF:animals-domestic +%S:LITM/JOPA/BRBI/MAGO +%UID:000036 +%MD:1997/06/12 + +%P:lhi +%G:dog +%IH:dog +%C:N +%DUOPLURAL:lhike +%SF:animals-domestic +%POSS:lik +%P1s:slik +%P1p:nelik +%DUOPLURAL:lhike +%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO +%UID:000270 +%MD:2001/02/15 + +%P:budzocho +%G:donkey, mule +%IH:donkey/mule +%SF:animals-domestic +%ETYM:``big ears''. +%C:N +%S:JOPA/BRBI +%UID:000376 +%MD:1997/11/14 + +%P:yeztli +%G:horse +%IH:horse +%SF:animals-domestic +%ETYM:A contraction of {\qc yezihlhi} ``elk dog''. +%C:N +%S:LITM/JOPA/BRBI/PEJO +%UID:000042 +%MD:2000/10/21 + +%P:lhike +%G:Irregular plural of {\qc lhi}, q.v. +%IH:dogs +%C:N +%SF:animals-domestic +%S:LITM/BRBI/JOPA/STJA +%UID:000293 +%MD:1999/01/26 + +%P:sbaiyaz +%G:lamb +%IH:lamb +%C:N +%SF:animals-domestic +%S:LITM +%UID:000254 +%MD:1997/06/16 + +%P:gugoos +%G:pig +%IH:pig +%C:N +%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree. +%LOANSOURCE:Cree +%SF:animals-domestic +%S:LITM/JOPA/BRBI +%UID:000133 +%MD:1997/06/16 + +%P:'ut'az +%G:bat +%IH:bat +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000390 +%MD:1997/11/14 + +%P:liyabdut'ai +%G:bat +%MN:The only kind of bat found in the region is the Little Brown Myotis. +%IH:bat +%SF:animals-land +%SN:Myotis lucifugus +%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from + French {\qf le diable}, and {\qc dut'ai} ``bird''. +%LOANSOURCE:French +%C:N +%S:JOPA/BRBI +%UID:000215 +%MD:1997/06/16 + +%P:sus +%G:black bear +%IH:black bear +%C:N +%SF:animals-land +%SN:Ursus americanus +%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO +%UID:000048 +%MD:1998/12/19 + +%P:musduscho dughai +%G:buffalo +%IH:buffalo +%SF:animals-land +%C:N +%ETYM:``big hairy cow''. +%S:JOPA/EDFR +%UID:003478 +%POCKET:Y +%MD:2000/11/04 + +%P:tl'ok'umusdus +%G:buffalo +%IH:buffalo +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000374 +%MD:2000/11/01 + +%P:jenyo +%G:bull moose +%IH:bull moose/moose, bull +%SF:animals-land +%C:N +%S:MAGO/JOPA/VESE/EDFR/JEKO +%UID:000474 +%MD:1999/05/11 + +%P:denyo +%G:bull moose +%IH:moose, bull +%SF:animals-land +%C:N +%S:LITM/JOPA +%UID:000348 +%MD:1997/06/18 + +%P:tsiyeyaz +%G:calf moose +%IH:calf moose/moose, calf +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000380 +%MD:1997/11/14 + +%P:duniyaz +%G:calf moose +%IH:calf moose/moose, calf +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000245 +%MD:1997/06/16 + +%P:whudzih +%G:caribou +%IH:caribou +%C:N +%SF:animals-land +%SN:Rangifer tarandus +%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO +%UID:000274 +%MD:1999/05/11 + +%P:boos +%G:cat +%IH:cat +%C:N +%SN:Felis domesticus +%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon. +%LOANSOURCE:English +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000137 +%MD:1997/12/17 + +%P:ts'uwhuljos +%G:chipmunk +%IH:chipmunk +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000146 +%MD:1997/06/16 + +%P:booscho +%G:cougar +%IH:cougar +%SF:animals-land +%SN:Felis concolor +%C:N +%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English + {\qf puss}, possibly via Chinook Jargon. +%S:JOPA/BRBI +%UID:000050 +%MD:1997/11/14 + +%P:duni'at +%G:cow moose +%IH:cow moose/moose, cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000377 +%MD:1997/11/14 + +%P:tintulhi +%G:coyote +%IH:coyote +%C:N +%SF:animals-land +%SN:Canis latrans +%S:JOPA/BRBI +%R:LITM has chuntulhi. +%UID:000155 +%MD:1997/06/16 + +%P:yests'e +%G:deer +%IH:deer +%SF:animals-land +%C:N +%S:LITM/JOPA/BRBI/EDFR +%UID:000132 +%MD:1998/12/16 + +%P:dets'it +%G:dry cow moose +%IH:dry cow moose/moose, dry cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000378 +%MD:1997/11/14 + +%P:yezih +%G:elk +%IH:elk +%SF:animals-land +%C:N +%R:STJA doesn't use this. +%S:JOPA/BRBI +%UID:000382 +%MD:1997/11/14 + +%P:tsa'at +%G:female beaver +%IH:beaver, female +%C:N +%SF:animals-land +%S:STJA +%UID:001295 +%MD:1998/12/08 + +%P:chunihcho +%G:fisher +%IH:fisher +%ETYM:``big marten''. +%SF:animals-land +%SN:Martes pennanti +%C:N +%S:JOPA/BRBI/MAGO +%UID:000385 +%MD:2000/06/18 + +%P:ts'unalhbuz +%G:flying squirrel +%IH:flying squirrel +%SF:animals-land +%SN:Glaucomys sabrinus alpinus +%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps +%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel +%PICPERMISSION:N +%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}. +%C:N +%S:JOPA/BRBI +%UID:000389 +%MD:1997/11/14 + +%P:nanguz +%G:fox +%IH:fox +%C:N +%SF:animals-land +%S:MAGO +%UID:000139 +%MD:2001/02/26 + +%P:shas +%G:grizzly bear +%IH:grizzly bear +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO +%UID:000039 +%MD:1997/06/12 + +%P:shasyaz +%G:grizzly bear cub +%IH:grizzly bear cub/cub, grizzly bear +%C:N +%SF:animals-land +%S:STJA +%UID:002114 +%MD:1999/02/20 + +%P:shas'at +%G:grizzly bear sow +%IH:grizzly bear sow/sow, grizzly bear +%C:N +%SF:animals-land +%ETYM:``grizzly bear's wife''. +%S:STJA +%UID:002113 +%MD:1999/02/20 + +%P:-lik +%G:irregular possessed stem of {\qc lhi}, q.v. +%C:N +%SF:animals-land +%S:MAGO +%UID:000564 +%MD:1997/12/11 + +%P:wasi +%G:lynx +%IH:lynx +%C:N +%SF:animals-land +%SN:Felis lynx +%ETYM:Loan from Gitksan {\qf wish}. +%LOANSOURCE:Gitksan +%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO +%UID:000049 +%MD:2001/04/20 + +%P:k'ani +%G:woodchuck +%IH:woodchuck +%C:N +%SF:animals-land +%SN:Marmota monax +%S:JOPA/BRBI/PEJO +%R:Clarified with Josie and Peter 2001/05/28. +%UID:000391 +%POCKET:Y +%MD:2001/05/28 + +%P:dutni +%G:marmot +%IH:marmot +%SF:animals-land +%C:N +%SN:Marmota caligata +%R:Josie and Peter are not really familiar with marmots but have heard older + people talk about them. +%S:JOPA/PEJO +%UID:000143 +%MD:1998/02/10 + +%P:chunih +%G:marten +%IH:marten +%SF:animals-land +%SN:Martes americana +%C:N +%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO +%UID:000016 +%MD:2001/04/20 + +%P:telhjoos +%G:mink +%IH:mink +%C:N +%SF:animals-land +%SN:Mustela vison +%S:LITM/JOPA/BRBI +%UID:000167 +%MD:1997/06/16 + +%P:duni +%G:moose +%IH:moose +%C:N +%SF:animals-land +%SN:Alces alces andersoni +%S:LITM-EDFR/JOPA/BRBI +%UID:000346 +%MD:1997/06/18 + +%P:dats'ooz +%G:mouse +%IH:mouse +%SF:animals-land +%C:N +%S:LITM/JOPA/MAGO/VESE/JEKO +%UID:000156 +%MD:2001/01/22 + +%P:tsek'et +%G:muskrat +%IH:muskrat +%C:N +%SF:animals-land +%SN:Ondatra zibethicus +%S:JOPA/BRBI/STJA/MAGO +%UID:000335 +%MD:1998/12/08 + +%P:chanjo +%G:newly sexually mature cow moose +%IH:moose, newly sexually mature cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000379 +%MD:1997/11/14 + +%P:looncho +%G:pack rat +%IH:pack rat +%C:N +%SF:animals-land +%S:VESE/JEKO/MAGO +%UID:000149 +%MD:1999/05/10 + +%P:dlooncho +%G:packrat +%IH:packrat +%C:N +%SF:animals-land +%S:JOPA +%UID:002701 +%MD:1999/05/11 + +%P:duneza +%G:porcupine +%IH:porcupine +%SF:animals-land +%C:N +%S:JOPA/BRBI/MAGO +%UID:000388 +%MD:2001/03/06 + +%P:ts'it +%G:porcupine +%IH:porcupine +%SF:animals-land +%SN:Erethizon dorsatum +%C:N +%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''. +%S:JOPA/BRBI/MAGO/BEMC/STJA +%UID:000387 +%MD:1998/12/08 + +%P:lhiyaz +%G:puppy +%IH:puppy +%C:N +%SF:animals-land +%DUOPLURAL:lhiyazke +%DUOPLURAL:lhikeyaz +%R:Josie prefers {\qc lhikeyaz}. +%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO +%UID:000182 +%MD:2001/05/26 + +%P:nats'ildelh +%G:Red Squirrel +%IH:squirrel/Red Squirrel +%SN:Tamiasciurus hudsonicus colum. +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI/STJA +%UID:000034 +%MD:1999/02/17 + +%P:goh +%G:rabbit +%IH:rabbit +%C:N +%SF:animals-land +%S:LITM/JOPA/VESE/EDFR/JEKO +%UID:000023 +%MD:1999/05/11 + +%P:ooch'ainischoot +%G:recently weaned calf moose +%IH:moose, recently weaned calf +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000381 +%MD:1997/11/14 + +%P:sbai +%G:sheep +%IH:sheep +%C:N +%SF:animals-land +%S:MAGO +%UID:001131 +%MD:1998/02/10 + +%P:'usbai +%G:sheep +%IH:sheep +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000375 +%MD:1997/11/14 + +%P:'ulhguk +%G:shrew +%IH:shrew +%SF:animals-land +%C:N +%S:MAGO/VESE/JEKO +%UID:000526 +%MD:2001/01/22 + +%P:hoonliz +%G:skunk +%IH:skunk +%C:N +%P2s:unhoonliz +%SF:animals-land +%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000052 +%MD:1997/06/12 + +%P:nohbai +%G:weasel +%IH:weasel +%C:N +%SF:animals-land +%S:JOPA/BRBI/MAGO +%UID:000141 +%MD:1997/06/16 + +%P:yus +%G:wolf +%IH:wolf +%C:N +%SF:animals-land +%SN:Canis lupus +%S:LITM/JOPA/BRBI +%UID:000051 +%MD:1997/06/12 + +%P:noostel +%G:wolverine +%IH:wolverine +%C:N +%SF:animals-land +%SN:Gulo gulo +%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000140 +%MD:2001/04/20 + +%P:tsatsul +%G:young beaver +%IH:beaver, young +%SF:animals-land +%C:N +%S:JOPA/BRBI/STJA +%UID:000384 +%MD:1998/12/08 + +%P:lht'at +%G:beaver dam +%IH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001287 +%MD:1998/12/08 + +%P:'ulh +%G:beaver dam +%IH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001288 +%MD:1998/12/08 + +%P:tsaken +%G:beaver lodge +%IH:beaver lodge +%C:N +%SF:animals-misc +%S:JOPA/BRBI/STJA +%UID:000405 +%MD:1998/12/08 + +%P:tunyohtsati +%G:beaver path under the ice +%IH:beaver path under the ice +%C:N +%SF:animals-misc +%S:JOPA/EDFR +%UID:003769 +%POCKET:Y +%MD:2001/02/13 + +%P:sus'an +%G:black bear den +%IH:black bear den +%C:N +%SF:animals-misc +%S:LITM/STJA +%UID:000131 +%MD:1998/12/08 + +%P:shask'oh +%G:grizzly bear tracks +%IH:tracks, grizzly bear +%C:N +%SF:animals-misc +%S:MAGO +%UID:001132 +%MD:1998/02/10 + +%P:hoolht'ukw +%G:leech +%IH:leech +%SF:animals-misc +%C:N +%S:JOPA/PEJO/EDFR +%UID:003410 +%POCKET:Y +%MD:2000/11/01 + +%P:hoot'ub +%G:leech +%IH:leech +%SF:bugs +%C:N +%S:JOPA/BRBI/MAGO +%UID:000370 +%MD:2000/11/01 + +%P:dunik'oh +%G:moose tracks +%IH:moose tracks +%C:N +%SF:animals-misc +%S:PEJO/JOPA +%ES:000491 +%UID:003121 +%POCKET:Y +%MD:2000/09/28 + +%P:gohk'oh +%G:rabbit tracks +%IH:tracks, rabbit +%C:N +%SF:animals-misc +%S:LITM +%UID:000073 +%MD:1997/06/12 + +%P:tsa +%G:beaver +%IH:beaver +%C:N +%SN:Castor canadensis +%UID:000044 +%SF:animals-water +%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO +%MD:2001/04/18 + +%P:tsayaz +%G:beaver kit +%IH:kit, beaver/beaver, baby +%SF:animals-water +%C:N +%S:STJA +%UID:001294 +%MD:2000/06/18 + +%P:tsati +%G:big beaver, old beaver +%IH:beaver, big/beaver, old +%C:N +%SF:animals-water +%S:LITM/JOPA/BRBI/STJA +%UID:000206 +%MD:1998/12/08 + +%P:tsis +%G:otter +%IH:otter +%SF:animals-water +%SN:Lutra canadensis +%C:N +%S:JOPA/BRBI +%UID:000386 +%MD:1997/11/14 + +%P:datsan +%G:American Crow +%C:N +%SF:bird-gen +%SN:Corvus brachyrhynchos +%IH:crow/American Crow +%S:LITM/PEJO +%UID:000158 +%MD:2000/10/21 + +%P:sewh +%G:American Robin +%IH:Robin, American +%SN:Turdus migratorius +%C:N +%SF:bird-gen +%S:LITM/JOPA/BRBI/PEJO +%UID:000181 +%MD:2000/10/21 + +%P:tsebalyan +%G:Bald Eagle +%IH:Bald Eagle +%C:N +%SF:bird-gen +%SN:Haliaeetus leucocephalus +%S:LITM/JOPA/BRBI +%UID:000150 +%MD:1997/06/16 + +%P:dut'ai +%G:bird, duck +%IH:bird/duck +%C:N +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO +%UID:000081 +%MD:2000/09/28 + +%P:delh +%G:crane +%IH:crane +%C:N +%SF:bird-gen +%S:LITM +%UID:000255 +%MD:1997/06/16 + +%P:khoh +%G:goose +%IH:goose +%C:N +%P1s:skhoh +%P2s:nkhoh +%P1p:nekhoh +%POSS:khoh +%SF:bird-gen +%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000031 +%MD:2001/02/15 + +%P:ts'unalhduz +%G:hummingbird +%IH:hummingbird +%C:N +%SF:bird-gen +%S:LITM/BRBI/JOPA +%UID:000242 +%MD:1997/06/16 + +%P:gagiyaz +%G:little bird +%IH:bird, little +%C:N +%QCHECK:Any little bird? +%SF:bird-gen +%S:PEJO +%UID:003115 +%POCKET:Y +%MD:2000/09/28 + +%P:dut'aiyaz +%G:little bird +%IH:bird, little +%C:N +%SF:bird-gen +%S:STJA/JOPA/EDFR/VESE/PEJO +%UID:001818 +%MD:2000/09/28 + +%P:dadzi +%G:loon +%IH:loon +%SF:bird-gen +%SN:Gavia immer +%C:N +%S:LITM/JOPA/BRBI +%UID:000020 +%MD:1997/06/12 + +%P:t'ugicho +%G:Mallard Duck +%IH:Mallard Duck +%C:N +%SN:Anas platyrhynchos +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000041 +%MD:1999/05/11 + +%P:musdzoon +%G:owl +%IH:owl +%C:N +%SF:bird-gen +%S:LITM/BRBI/JOPA/MAGO +%UID:000135 +%MD:1997/12/11 + +%P:ts'olh +%G:Red-necked Grebe +%MN:A variety of duck locally known as the Helldiver. +%IH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked +%SN:Podiceps grisegena +%SF:bird-gen +%C:N +%S:BRBI/JOPA +%UID:000263 +%MD:2001/03/08 + +%P:'utsut +%G:Ruffed grouse +%IH:Ruffed grouse +%C:N +%SF:bird-gen +%S:LITM +%UID:000218 +%MD:1997/06/16 + +%P:nat'oh +%G:Spruce Grouse, Fool Hen +%IH:Spruce Grouse/Grouse, Spruce/Fool Hen +%SF:bird-gen +%SN:Dendragapus canadensis +%C:N +%S:MAGO/LITM +%UID:000539 +%MD:1997/12/04 + +%P:tehgwuzeh +%G:Steller's Jay, commonly known locally as ``bluejay''. +%IH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay) +%SF:bird-gen +%SN:Cyanocitta stelleri +%C:N +%S:JOPA/BRBI +%UID:000356 +%MD:1997/11/14 + +%P:wedlew +%G:sandpiper +%IH:sandpiper +%C:N +%SN:Eremophila alpestris et sim. +%SF:bird-gen +%S:LITM +%UID:000237 +%MD:2002/07/19 + +%P:besk'i +%G:seagull +%IH:seagull +%C:N +%SN:Larus species +%SF:bird-gen +%S:LITM +%UID:000136 +%MD:2002/07/19 + +%P:ts'incho +%G:swan +%IH:swan +%C:N +%SF:bird-gen +%S:LITM +%UID:000222 +%MD:1997/06/16 + +%P:'uschas +%G:Tree Swallow +%IH:Tree Swallow +%SF:bird-gen +%SN:Tachycineta bicolor +%C:N +%S:MAGO +%UID:000535 +%MD:1997/11/22 + +%P:gwuzeh +%G:Whiskey Jack, Gray Jay, Canadian Jay +%IH:Whiskey Jack/Jay, Gray/Jay, Canadian +%C:N +%SN:Perisoreus canadensis +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO +%UID:000148 +%MD:1997/11/22 + +%P:chundulkw'uz +%G:woodpecker +%IH:woodpecker +%C:N +%SF:bird-gen +%S:JOPA/BRBI/STJA +%UID:000138 +%MD:1999/03/31 + +%P:-t'o +%G:nest +%IH:nest +%C:N +%Pind:'ut'o +%P3s:but'o +%Pref:dut'o +%SF:bird-misc/bugs +%S:STJA/PEJO/JOPA/BRBI/EDFR +%ES:001353 +%UID:000226 +%MD:2001/03/07 + +%P:-nak'uz +%G:a single eye +%IH:eye, a single +%C:N +%SF:body-ext +%S:JOPA/EDFR +%ES:000457 +%UID:003770 +%POCKET:Y +%MD:2001/02/13 + +%P:-kechunoh +%G:ankle +%IH:ankle +%P1s:skechunoh +%P2s:nkechunoh +%C:N +%S:MAGO/STJA +%SF:body-ext +%UID:000865 +%MD:1999/03/03 + +%P:-de +%G:antler, horn +%IH:antler/horn +%C:N +%SF:body-ext +%P3s:bude +%S:STJA +%UID:002266 +%MD:1999/03/02 + +%P:-de_zu_s +%G:antler velvet +%IH:velvet, antler +%C:N +%SF:body-ext +%P3s:bude_zu_s +%S:STJA +%UID:002267 +%MD:1999/03/02 + +%P:-tsul +%G:anus, asshole +%IH:anus/asshole +%C:N +%P1s:stsul +%SF:body-ext +%S:STJA +%UID:002171 +%MD:1999/02/23 + +%P:-gan +%G:arm +%IH:arm +%P1s:sgan +%P2s:ngan +%Pref:dugan +%C:N +%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO +%SF:body-ext +%UID:000863 +%MD:1999/02/22 + +%P:-chak'ests'oh +%G:armpit +%IH:armpit +%P1s:schak'ests'oh +%C:N +%S:MAGO +%UID:000859 +%SF:body-ext +%MD:1997/12/11 + +%P:-t'ak +%G:back (of body) +%IH:back (of body) +%P1s:st'ak +%P3s:but'ak +%C:N +%S:MAGO/EDFR/VESE/JEKO +%SF:body-ext +%UID:000899 +%MD:1997/12/11 + +%P:-lat'ak +%G:back of hand +%IH:back of hand +%P1s:slat'ak +%C:N +%S:MAGO +%SF:body-ext +%UID:000871 +%MD:1997/12/11 + +%P:tsake +%G:beaver paws +%IH:beaver paws +%C:N +%SF:body-ext +%S:LITM-EDFR +%UID:000329 +%MD:1997/06/18 + +%P:tsache +%G:beaver tail +%IH:beaver tail +%C:N +%SF:body-ext +%S:LITM +%UID:000207 +%MD:1997/06/16 + +%P:-but +%G:belly +%IH:belly +%P1s:sbut +%C:N +%S:MAGO +%SF:body-ext +%UID:000937 +%MD:1997/12/11 + +%P:-ts'oo +%G:breast +%IH:breast +%P1s:sts'oo +%C:N +%S:MAGO +%UID:000855 +%SF:body-ext +%MD:1997/12/11 + +%P:-tl'a +%G:bum, buttocks +%IH:bum/buttocks +%P1s:stl'a +%C:N +%S:MAGO +%SF:body-ext +%UID:000936 +%MD:1997/12/11 + +%P:-kechunch'ooz +%G:calf of leg +%IH:calf of leg +%C:N +%SF:body-ext +%S:JOPA/EDFR +%UID:004458 +%POCKET:Y +%MD:2001/04/20 + +%P:-nembus +%G:cheek +%IH:cheek +%P1s:snimbus +%C:N +%S:MAGO/JOPA/BRBI +%SF:body-ext +%UID:000889 +%MD:1997/12/11 + +%P:-yoh +%G:chest +%IH:chest +%C:N +%SF:body-ext +%S:JOPA/EDFR +%ES:000660 +%UID:003777 +%POCKET:Y +%MD:2001/02/13 + +%P:-yeda' +%G:chin +%IH:chin +%P1s:syeda' +%C:N +%S:MAGO +%SF:body-ext +%UID:000882 +%MD:1997/12/11 + +%P:-tsidakwhudutle +%G:cranial fontanelle, baby's soft spot +%IH:cranial fontanelle/baby's soft spot +%C:N +%P3s:butsidakwhudutle +%S:MAGO +%SF:body-ext +%UID:000898 +%MD:1997/12/11 + +%P:-dzo +%G:ear +%IH:ear +%MN:This refers to the ear considered as a whole, especially the exterior. + When the canal in particular is referred to, one uses {\qc -dzek}, q.v. +%C:N +%P1s:sdzo +%S:MAGO +%SF:body-ext +%UID:000879 +%MD:1997/12/11 + +%P:-dzobal +%G:earlobe +%IH:earlobe +%C:N +%P1s:sdzobal +%SF:body-ext +%S:BRBI/MAGO +%UID:000641 +%MD:1997/12/17 + +%P:-nints'uzti +%G:elbow +%IH:elbow +%P1s:snints'uzti +%C:N +%S:MAGO +%SF:body-ext +%UID:000916 +%MD:1997/12/11 + +%P:-na +%G:eye +%IH:eye +%P1s:sna +%P3s:buna +%C:N +%S:MAGO/JOPA/EDFR +%SF:body-ext +%UID:000891 +%MD:1998/12/18 + +%P:-nak'et +%G:eye socket +%IH:eye socket +%P1s:snak'et +%C:N +%S:MAGO +%SF:body-ext +%UID:000892 +%MD:1997/12/11 + +%P:-nach'usdooz +%G:eyebrow +%IH:eyebrow +%P1s:snach'usdooz +%C:N +%S:MAGO +%SF:body-ext +%UID:000896 +%MD:1997/12/11 + +%P:-nalusgha +%G:eyelash +%IH:eyelash +%P1s:snalusgha +%C:N +%S:MAGO +%SF:body-ext +%UID:000895 +%MD:1997/12/11 + +%P:-nalus +%G:eyelid +%IH:eyelid +%P1s:snalus +%C:N +%S:MAGO +%SF:body-ext +%UID:000894 +%MD:1997/12/11 + +%P:-nen +%G:face +%IH:face +%P1s:snen +%P2s:nyunen +%P3s:bunen +%C:N +%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR +%SF:body-ext +%ES:000369 +%UID:000890 +%MD:2001/04/20 + +%P:ts'uz +%G:feather, down +%IH:feather/down +%C:N +%SF:body-ext +%S:LITM/STJA/PEJO +%UID:000271 +%MD:2000/10/16 + +%P:dut'aits'uz +%G:feathers, down +%IH:feathers/down +%C:N +%SF:body-ext +%S:STJA +%UID:002647 +%MD:2001/02/27 + +%P:-lasge +%G:finger other than thumb or pinkie +%IH:finger other than thumb or pinkie +%P1s:slasge +%C:N +%S:MAGO/STJA/JOPA/PEJO/EDFR +%SF:body-ext +%UID:000869 +%MD:2000/11/01 + +%P:-lagui +%G:fingernails, claws of forepaws +%IH:fingernails/claws of forepaws +%P1s:slagui +%C:N +%S:MAGO +%SF:body-ext +%UID:000875 +%MD:1997/12/11 + +%P:-ke +%G:foot +%IH:foot +%C:N +%P1s:ske +%Pref:duke +%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO +%UID:000851 +%SF:body-ext +%MD:1999/05/11 + +%P:-gha +%G:hair +%MN:This refers to hair in general and where no more specific term exists, as on the + arms and chest. It is not used to refer to the hair of the head, for which the + more specific term {\qc -tsigha} is always used. +%IH:hair +%C:N +%S:MAGO +%SF:body-ext +%UID:000888 +%MD:1997/12/11 + +%P:-tsigha +%G:hair of the head +%IH:hair of the head +%P1s:stsigha +%P2s:ntsigha +%P3s:butsigha +%C:N +%S:MAGO/LITM/PEJO +%SF:body-ext +%UID:000887 +%MD:2000/10/20 + +%P:-la +%G:hand +%IH:hand +%P1s:sla +%P2s:nla +%C:N +%S:MAGO/STJA +%SF:body-ext +%POCKET:Y +%UID:000866 +%MD:1999/02/17 + +%P:-tsi +%G:head +%IH:head +%Pref:dutsi +%C:N +%SF:body-ext +%S:STJA +%UID:002965 +%POCKET:Y +%MD:1999/06/24 + +%P:-kelatsul +%G:heel +%IH:heel +%P1s:skelatsul +%C:N +%S:MAGO +%SF:body-ext +%UID:000917 +%MD:1997/12/11 + +%P:-k'ui +%G:hip +%IH:hip +%P1s:sk'ui +%C:N +%S:MAGO/JOPA +%SF:body-ext +%UID:000923 +%MD:2001/03/15 + +%P:-gwut +%G:knee +%IH:knee +%P1s:sgwut +%C:N +%S:MAGO +%SF:body-ext +%UID:000933 +%MD:1997/12/11 + +%P:-gwutlasi'ai +%G:kneecap +%IH:kneecap +%P1s:sgwutlasi'ai +%R:has something to do with floating at tip of knee +%C:N +%S:MAGO +%SF:body-ext +%UID:000925 +%MD:1997/12/11 + +%P:-langwut +%G:knuckles at boundary between hand and fingers +%IH:knuckles at boundary between hand and fingers +%P1s:slangwut +%SF:body-ext +%C:N +%S:JOPA/BRBI +%UID:000967 +%MD:1997/12/17 + +%P:-kechun +%G:leg +%IH:leg +%P1s:skechun +%C:N +%S:MAGO +%UID:000852 +%SF:body-ext +%MD:1997/12/11 diff --git a/src/tool/awk/testdata/gawk/wjposer1.ok b/src/tool/awk/testdata/gawk/wjposer1.ok new file mode 100644 index 0000000..16cde6a --- /dev/null +++ b/src/tool/awk/testdata/gawk/wjposer1.ok @@ -0,0 +1,2068 @@ +%IH:exertion +%P:nut'i +%G:exertion +%OIH:exertion +%C:N +%SF:abstractions-misc +%S:JOPA/EDFR/VESE +%ES:000088 +%UID:002463 +%MD:1999/03/15 + +%IH:information +%P:ts'iyantsuk t'eooninzun +%G:information +%OIH:information +%C:N +%SF:abstractions-misc +%S:JOPA/BRBI +%UID:000986 +%MD:1997/12/17 + +%IH:interval +%P:k'et'uk +%G:interval +%OIH:interval +%C:N +%SF:abstractions-misc +%S:MAGO +%ES:001077 +%UID:000873 +%MD:1997/12/11 + +%IH:language +%P:khunek +%G:language, word, message +%OIH:language/word/message +%POSS:ghunek +%P1p:neghunek +%C:N +%SF:abstractions-misc +%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO +%UID:000928 +%MD:2001/02/10 + +%IH:word +%P:khunek +%G:language, word, message +%OIH:language/word/message +%POSS:ghunek +%P1p:neghunek +%C:N +%SF:abstractions-misc +%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO +%UID:000928 +%MD:2001/02/10 + +%IH:message +%P:khunek +%G:language, word, message +%OIH:language/word/message +%POSS:ghunek +%P1p:neghunek +%C:N +%SF:abstractions-misc +%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO +%UID:000928 +%MD:2001/02/10 + +%IH:running +%P:gal +%G:running +%OIH:running +%C:N +%R:Dugal ndesda. He got hurt while running. +%SF:abstractions-misc +%S:JOPA +%ES:000535 +%UID:002462 +%MD:1999/03/15 + +%IH:work +%P:t'en +%G:work +%OIH:work +%C:N +%SF:abstractions-misc +%S:VESE/PEJO +%ES:000672 +%UID:003028 +%POCKET:N +%MD:2000/10/04 + +%IH:work +%P:'ut'en +%G:work +%OIH:work +%C:N +%SF:abstractions-misc +%P1p:neye'ut'en +%S:JOPA +%ES:001041 +%UID:004264 +%POCKET:Y +%MD:2001/03/15 + +%IH:Spotted Frog +%P:dulkw'ah +%G:Spotted Frog +%OIH:Spotted Frog/Frog, Spotted +%SN:Rana pretiosa +%MN:Lives in water and has red markings on the belly. +%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps +%CAPTION:{\qc Tsasdli} --- Spotted Frog +%PICPERMISSION:N +%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}. +%C:N +%SF:amphibiansandreptiles +%S:EDFR +%UID:004111 +%POCKET:Y +%MD:2001/03/07 + +%IH:Frog, Spotted +%P:dulkw'ah +%G:Spotted Frog +%OIH:Spotted Frog/Frog, Spotted +%SN:Rana pretiosa +%MN:Lives in water and has red markings on the belly. +%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps +%CAPTION:{\qc Tsasdli} --- Spotted Frog +%PICPERMISSION:N +%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}. +%C:N +%SF:amphibiansandreptiles +%S:EDFR +%UID:004111 +%POCKET:Y +%MD:2001/03/07 + +%IH:lizard +%P:chunlai +%G:salamander, lizard +%OIH:lizard/salamander +%MN:The only species of salamander found in the region is the + Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards + are found in the region. However, this term is applied to other + varieties of salamander and to lizards, such as the gekkos sold as + pets. +%FGREF:Corkran \& Thoms (1996;39) +%SN:Ambystoma macrodactylum +%C:N +%SF:amphibiansandreptiles +%S:LITM/JOPA/BRBI +%UID:000157 +%MD:1998/05/16 + +%IH:salamander +%P:chunlai +%G:salamander, lizard +%OIH:lizard/salamander +%MN:The only species of salamander found in the region is the + Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards + are found in the region. However, this term is applied to other + varieties of salamander and to lizards, such as the gekkos sold as + pets. +%FGREF:Corkran \& Thoms (1996;39) +%SN:Ambystoma macrodactylum +%C:N +%SF:amphibiansandreptiles +%S:LITM/JOPA/BRBI +%UID:000157 +%MD:1998/05/16 + +%IH:snake +%P:tl'ughus +%G:snake +%OIH:snake +%C:N +%MN:The only snake found in the region is the Common Garter Snake + {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes. +%SN:Thamnophis sirtalis +%SF:amphibiansandreptiles +%S:LITM/JOPA/BRBI/MAGO +%UID:000250 +%MD:1998/12/07 + +%IH:Western Toad +%P:tsasdli +%G:Western Toad +%SN:Bufo boreas +%OIH:Western Toad/Toad, Western +%MN:Lives on land. +%SF:amphibiansandreptiles +%C:N +%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR +%UID:000059 +%MD:2001/03/07 + +%IH:Toad, Western +%P:tsasdli +%G:Western Toad +%SN:Bufo boreas +%OIH:Western Toad/Toad, Western +%MN:Lives on land. +%SF:amphibiansandreptiles +%C:N +%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR +%UID:000059 +%MD:2001/03/07 + +%IH:bitch +%P:lhits'e +%G:bitch, female dog +%OIH:bitch/dog, female +%C:N +%SF:animals-domestic +%S:JOPA/EDFR/VESE +%UID:002446 +%MD:1999/03/15 + +%IH:dog, female +%P:lhits'e +%G:bitch, female dog +%OIH:bitch/dog, female +%C:N +%SF:animals-domestic +%S:JOPA/EDFR/VESE +%UID:002446 +%MD:1999/03/15 + +%IH:cow +%P:musdus +%G:cow +%OIH:cow +%C:N +%P2s:nmusdus +%ETYM:Loan from Cree {\qf mostos} ``buffalo''. +%LOANSOURCE:Cree +%SF:animals-domestic +%S:LITM/JOPA/BRBI/MAGO +%UID:000036 +%MD:1997/06/12 + +%IH:dog +%P:lhi +%G:dog +%OIH:dog +%C:N +%DUOPLURAL:lhike +%SF:animals-domestic +%POSS:lik +%P1s:slik +%P1p:nelik +%DUOPLURAL:lhike +%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO +%UID:000270 +%MD:2001/02/15 + +%IH:donkey +%P:budzocho +%G:donkey, mule +%OIH:donkey/mule +%SF:animals-domestic +%ETYM:``big ears''. +%C:N +%S:JOPA/BRBI +%UID:000376 +%MD:1997/11/14 + +%IH:mule +%P:budzocho +%G:donkey, mule +%OIH:donkey/mule +%SF:animals-domestic +%ETYM:``big ears''. +%C:N +%S:JOPA/BRBI +%UID:000376 +%MD:1997/11/14 + +%IH:horse +%P:yeztli +%G:horse +%OIH:horse +%SF:animals-domestic +%ETYM:A contraction of {\qc yezihlhi} ``elk dog''. +%C:N +%S:LITM/JOPA/BRBI/PEJO +%UID:000042 +%MD:2000/10/21 + +%IH:dogs +%P:lhike +%G:Irregular plural of {\qc lhi}, q.v. +%OIH:dogs +%C:N +%SF:animals-domestic +%S:LITM/BRBI/JOPA/STJA +%UID:000293 +%MD:1999/01/26 + +%IH:lamb +%P:sbaiyaz +%G:lamb +%OIH:lamb +%C:N +%SF:animals-domestic +%S:LITM +%UID:000254 +%MD:1997/06/16 + +%IH:pig +%P:gugoos +%G:pig +%OIH:pig +%C:N +%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree. +%LOANSOURCE:Cree +%SF:animals-domestic +%S:LITM/JOPA/BRBI +%UID:000133 +%MD:1997/06/16 + +%IH:bat +%P:'ut'az +%G:bat +%OIH:bat +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000390 +%MD:1997/11/14 + +%IH:bat +%P:liyabdut'ai +%G:bat +%MN:The only kind of bat found in the region is the Little Brown Myotis. +%OIH:bat +%SF:animals-land +%SN:Myotis lucifugus +%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from + French {\qf le diable}, and {\qc dut'ai} ``bird''. +%LOANSOURCE:French +%C:N +%S:JOPA/BRBI +%UID:000215 +%MD:1997/06/16 + +%IH:black bear +%P:sus +%G:black bear +%OIH:black bear +%C:N +%SF:animals-land +%SN:Ursus americanus +%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO +%UID:000048 +%MD:1998/12/19 + +%IH:buffalo +%P:musduscho dughai +%G:buffalo +%OIH:buffalo +%SF:animals-land +%C:N +%ETYM:``big hairy cow''. +%S:JOPA/EDFR +%UID:003478 +%POCKET:Y +%MD:2000/11/04 + +%IH:buffalo +%P:tl'ok'umusdus +%G:buffalo +%OIH:buffalo +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000374 +%MD:2000/11/01 + +%IH:bull moose +%P:jenyo +%G:bull moose +%OIH:bull moose/moose, bull +%SF:animals-land +%C:N +%S:MAGO/JOPA/VESE/EDFR/JEKO +%UID:000474 +%MD:1999/05/11 + +%IH:moose, bull +%P:jenyo +%G:bull moose +%OIH:bull moose/moose, bull +%SF:animals-land +%C:N +%S:MAGO/JOPA/VESE/EDFR/JEKO +%UID:000474 +%MD:1999/05/11 + +%IH:moose, bull +%P:denyo +%G:bull moose +%OIH:moose, bull +%SF:animals-land +%C:N +%S:LITM/JOPA +%UID:000348 +%MD:1997/06/18 + +%IH:calf moose +%P:tsiyeyaz +%G:calf moose +%OIH:calf moose/moose, calf +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000380 +%MD:1997/11/14 + +%IH:moose, calf +%P:tsiyeyaz +%G:calf moose +%OIH:calf moose/moose, calf +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000380 +%MD:1997/11/14 + +%IH:calf moose +%P:duniyaz +%G:calf moose +%OIH:calf moose/moose, calf +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000245 +%MD:1997/06/16 + +%IH:moose, calf +%P:duniyaz +%G:calf moose +%OIH:calf moose/moose, calf +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000245 +%MD:1997/06/16 + +%IH:caribou +%P:whudzih +%G:caribou +%OIH:caribou +%C:N +%SF:animals-land +%SN:Rangifer tarandus +%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO +%UID:000274 +%MD:1999/05/11 + +%IH:cat +%P:boos +%G:cat +%OIH:cat +%C:N +%SN:Felis domesticus +%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon. +%LOANSOURCE:English +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000137 +%MD:1997/12/17 + +%IH:chipmunk +%P:ts'uwhuljos +%G:chipmunk +%OIH:chipmunk +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI +%UID:000146 +%MD:1997/06/16 + +%IH:cougar +%P:booscho +%G:cougar +%OIH:cougar +%SF:animals-land +%SN:Felis concolor +%C:N +%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English + {\qf puss}, possibly via Chinook Jargon. +%S:JOPA/BRBI +%UID:000050 +%MD:1997/11/14 + +%IH:cow moose +%P:duni'at +%G:cow moose +%OIH:cow moose/moose, cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000377 +%MD:1997/11/14 + +%IH:moose, cow +%P:duni'at +%G:cow moose +%OIH:cow moose/moose, cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000377 +%MD:1997/11/14 + +%IH:coyote +%P:tintulhi +%G:coyote +%OIH:coyote +%C:N +%SF:animals-land +%SN:Canis latrans +%S:JOPA/BRBI +%R:LITM has chuntulhi. +%UID:000155 +%MD:1997/06/16 + +%IH:deer +%P:yests'e +%G:deer +%OIH:deer +%SF:animals-land +%C:N +%S:LITM/JOPA/BRBI/EDFR +%UID:000132 +%MD:1998/12/16 + +%IH:dry cow moose +%P:dets'it +%G:dry cow moose +%OIH:dry cow moose/moose, dry cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000378 +%MD:1997/11/14 + +%IH:moose, dry cow +%P:dets'it +%G:dry cow moose +%OIH:dry cow moose/moose, dry cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000378 +%MD:1997/11/14 + +%IH:elk +%P:yezih +%G:elk +%OIH:elk +%SF:animals-land +%C:N +%R:STJA doesn't use this. +%S:JOPA/BRBI +%UID:000382 +%MD:1997/11/14 + +%IH:beaver, female +%P:tsa'at +%G:female beaver +%OIH:beaver, female +%C:N +%SF:animals-land +%S:STJA +%UID:001295 +%MD:1998/12/08 + +%IH:fisher +%P:chunihcho +%G:fisher +%OIH:fisher +%ETYM:``big marten''. +%SF:animals-land +%SN:Martes pennanti +%C:N +%S:JOPA/BRBI/MAGO +%UID:000385 +%MD:2000/06/18 + +%IH:flying squirrel +%P:ts'unalhbuz +%G:flying squirrel +%OIH:flying squirrel +%SF:animals-land +%SN:Glaucomys sabrinus alpinus +%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps +%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel +%PICPERMISSION:N +%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}. +%C:N +%S:JOPA/BRBI +%UID:000389 +%MD:1997/11/14 + +%IH:fox +%P:nanguz +%G:fox +%OIH:fox +%C:N +%SF:animals-land +%S:MAGO +%UID:000139 +%MD:2001/02/26 + +%IH:grizzly bear +%P:shas +%G:grizzly bear +%OIH:grizzly bear +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO +%UID:000039 +%MD:1997/06/12 + +%IH:grizzly bear cub +%P:shasyaz +%G:grizzly bear cub +%OIH:grizzly bear cub/cub, grizzly bear +%C:N +%SF:animals-land +%S:STJA +%UID:002114 +%MD:1999/02/20 + +%IH:cub, grizzly bear +%P:shasyaz +%G:grizzly bear cub +%OIH:grizzly bear cub/cub, grizzly bear +%C:N +%SF:animals-land +%S:STJA +%UID:002114 +%MD:1999/02/20 + +%IH:grizzly bear sow +%P:shas'at +%G:grizzly bear sow +%OIH:grizzly bear sow/sow, grizzly bear +%C:N +%SF:animals-land +%ETYM:``grizzly bear's wife''. +%S:STJA +%UID:002113 +%MD:1999/02/20 + +%IH:sow, grizzly bear +%P:shas'at +%G:grizzly bear sow +%OIH:grizzly bear sow/sow, grizzly bear +%C:N +%SF:animals-land +%ETYM:``grizzly bear's wife''. +%S:STJA +%UID:002113 +%MD:1999/02/20 + +%IH:lynx +%P:wasi +%G:lynx +%OIH:lynx +%C:N +%SF:animals-land +%SN:Felis lynx +%ETYM:Loan from Gitksan {\qf wish}. +%LOANSOURCE:Gitksan +%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO +%UID:000049 +%MD:2001/04/20 + +%IH:woodchuck +%P:k'ani +%G:woodchuck +%OIH:woodchuck +%C:N +%SF:animals-land +%SN:Marmota monax +%S:JOPA/BRBI/PEJO +%R:Clarified with Josie and Peter 2001/05/28. +%UID:000391 +%POCKET:Y +%MD:2001/05/28 + +%IH:marmot +%P:dutni +%G:marmot +%OIH:marmot +%SF:animals-land +%C:N +%SN:Marmota caligata +%R:Josie and Peter are not really familiar with marmots but have heard older + people talk about them. +%S:JOPA/PEJO +%UID:000143 +%MD:1998/02/10 + +%IH:marten +%P:chunih +%G:marten +%OIH:marten +%SF:animals-land +%SN:Martes americana +%C:N +%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO +%UID:000016 +%MD:2001/04/20 + +%IH:mink +%P:telhjoos +%G:mink +%OIH:mink +%C:N +%SF:animals-land +%SN:Mustela vison +%S:LITM/JOPA/BRBI +%UID:000167 +%MD:1997/06/16 + +%IH:moose +%P:duni +%G:moose +%OIH:moose +%C:N +%SF:animals-land +%SN:Alces alces andersoni +%S:LITM-EDFR/JOPA/BRBI +%UID:000346 +%MD:1997/06/18 + +%IH:mouse +%P:dats'ooz +%G:mouse +%OIH:mouse +%SF:animals-land +%C:N +%S:LITM/JOPA/MAGO/VESE/JEKO +%UID:000156 +%MD:2001/01/22 + +%IH:muskrat +%P:tsek'et +%G:muskrat +%OIH:muskrat +%C:N +%SF:animals-land +%SN:Ondatra zibethicus +%S:JOPA/BRBI/STJA/MAGO +%UID:000335 +%MD:1998/12/08 + +%IH:moose, newly sexually mature cow +%P:chanjo +%G:newly sexually mature cow moose +%OIH:moose, newly sexually mature cow +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000379 +%MD:1997/11/14 + +%IH:pack rat +%P:looncho +%G:pack rat +%OIH:pack rat +%C:N +%SF:animals-land +%S:VESE/JEKO/MAGO +%UID:000149 +%MD:1999/05/10 + +%IH:packrat +%P:dlooncho +%G:packrat +%OIH:packrat +%C:N +%SF:animals-land +%S:JOPA +%UID:002701 +%MD:1999/05/11 + +%IH:porcupine +%P:duneza +%G:porcupine +%OIH:porcupine +%SF:animals-land +%C:N +%S:JOPA/BRBI/MAGO +%UID:000388 +%MD:2001/03/06 + +%IH:porcupine +%P:ts'it +%G:porcupine +%OIH:porcupine +%SF:animals-land +%SN:Erethizon dorsatum +%C:N +%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''. +%S:JOPA/BRBI/MAGO/BEMC/STJA +%UID:000387 +%MD:1998/12/08 + +%IH:puppy +%P:lhiyaz +%G:puppy +%OIH:puppy +%C:N +%SF:animals-land +%DUOPLURAL:lhiyazke +%DUOPLURAL:lhikeyaz +%R:Josie prefers {\qc lhikeyaz}. +%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO +%UID:000182 +%MD:2001/05/26 + +%IH:squirrel +%P:nats'ildelh +%G:Red Squirrel +%OIH:squirrel/Red Squirrel +%SN:Tamiasciurus hudsonicus colum. +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI/STJA +%UID:000034 +%MD:1999/02/17 + +%IH:Red Squirrel +%P:nats'ildelh +%G:Red Squirrel +%OIH:squirrel/Red Squirrel +%SN:Tamiasciurus hudsonicus colum. +%C:N +%SF:animals-land +%S:LITM/JOPA/BRBI/STJA +%UID:000034 +%MD:1999/02/17 + +%IH:rabbit +%P:goh +%G:rabbit +%OIH:rabbit +%C:N +%SF:animals-land +%S:LITM/JOPA/VESE/EDFR/JEKO +%UID:000023 +%MD:1999/05/11 + +%IH:moose, recently weaned calf +%P:ooch'ainischoot +%G:recently weaned calf moose +%OIH:moose, recently weaned calf +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000381 +%MD:1997/11/14 + +%IH:sheep +%P:sbai +%G:sheep +%OIH:sheep +%C:N +%SF:animals-land +%S:MAGO +%UID:001131 +%MD:1998/02/10 + +%IH:sheep +%P:'usbai +%G:sheep +%OIH:sheep +%SF:animals-land +%C:N +%S:JOPA/BRBI +%UID:000375 +%MD:1997/11/14 + +%IH:shrew +%P:'ulhguk +%G:shrew +%OIH:shrew +%SF:animals-land +%C:N +%S:MAGO/VESE/JEKO +%UID:000526 +%MD:2001/01/22 + +%IH:skunk +%P:hoonliz +%G:skunk +%OIH:skunk +%C:N +%P2s:unhoonliz +%SF:animals-land +%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000052 +%MD:1997/06/12 + +%IH:weasel +%P:nohbai +%G:weasel +%OIH:weasel +%C:N +%SF:animals-land +%S:JOPA/BRBI/MAGO +%UID:000141 +%MD:1997/06/16 + +%IH:wolf +%P:yus +%G:wolf +%OIH:wolf +%C:N +%SF:animals-land +%SN:Canis lupus +%S:LITM/JOPA/BRBI +%UID:000051 +%MD:1997/06/12 + +%IH:wolverine +%P:noostel +%G:wolverine +%OIH:wolverine +%C:N +%SF:animals-land +%SN:Gulo gulo +%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000140 +%MD:2001/04/20 + +%IH:beaver, young +%P:tsatsul +%G:young beaver +%OIH:beaver, young +%SF:animals-land +%C:N +%S:JOPA/BRBI/STJA +%UID:000384 +%MD:1998/12/08 + +%IH:beaver dam +%P:lht'at +%G:beaver dam +%OIH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001287 +%MD:1998/12/08 + +%IH:dam, beaver +%P:lht'at +%G:beaver dam +%OIH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001287 +%MD:1998/12/08 + +%IH:beaver dam +%P:'ulh +%G:beaver dam +%OIH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001288 +%MD:1998/12/08 + +%IH:dam, beaver +%P:'ulh +%G:beaver dam +%OIH:beaver dam/dam, beaver +%C:N +%SF:animals-misc +%S:STJA +%UID:001288 +%MD:1998/12/08 + +%IH:beaver lodge +%P:tsaken +%G:beaver lodge +%OIH:beaver lodge +%C:N +%SF:animals-misc +%S:JOPA/BRBI/STJA +%UID:000405 +%MD:1998/12/08 + +%IH:beaver path under the ice +%P:tunyohtsati +%G:beaver path under the ice +%OIH:beaver path under the ice +%C:N +%SF:animals-misc +%S:JOPA/EDFR +%UID:003769 +%POCKET:Y +%MD:2001/02/13 + +%IH:black bear den +%P:sus'an +%G:black bear den +%OIH:black bear den +%C:N +%SF:animals-misc +%S:LITM/STJA +%UID:000131 +%MD:1998/12/08 + +%IH:tracks, grizzly bear +%P:shask'oh +%G:grizzly bear tracks +%OIH:tracks, grizzly bear +%C:N +%SF:animals-misc +%S:MAGO +%UID:001132 +%MD:1998/02/10 + +%IH:leech +%P:hoolht'ukw +%G:leech +%OIH:leech +%SF:animals-misc +%C:N +%S:JOPA/PEJO/EDFR +%UID:003410 +%POCKET:Y +%MD:2000/11/01 + +%IH:leech +%P:hoot'ub +%G:leech +%OIH:leech +%SF:bugs +%C:N +%S:JOPA/BRBI/MAGO +%UID:000370 +%MD:2000/11/01 + +%IH:moose tracks +%P:dunik'oh +%G:moose tracks +%OIH:moose tracks +%C:N +%SF:animals-misc +%S:PEJO/JOPA +%ES:000491 +%UID:003121 +%POCKET:Y +%MD:2000/09/28 + +%IH:tracks, rabbit +%P:gohk'oh +%G:rabbit tracks +%OIH:tracks, rabbit +%C:N +%SF:animals-misc +%S:LITM +%UID:000073 +%MD:1997/06/12 + +%IH:beaver +%P:tsa +%G:beaver +%OIH:beaver +%C:N +%SN:Castor canadensis +%UID:000044 +%SF:animals-water +%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO +%MD:2001/04/18 + +%IH:kit, beaver +%P:tsayaz +%G:beaver kit +%OIH:kit, beaver/beaver, baby +%SF:animals-water +%C:N +%S:STJA +%UID:001294 +%MD:2000/06/18 + +%IH:beaver, baby +%P:tsayaz +%G:beaver kit +%OIH:kit, beaver/beaver, baby +%SF:animals-water +%C:N +%S:STJA +%UID:001294 +%MD:2000/06/18 + +%IH:beaver, big +%P:tsati +%G:big beaver, old beaver +%OIH:beaver, big/beaver, old +%C:N +%SF:animals-water +%S:LITM/JOPA/BRBI/STJA +%UID:000206 +%MD:1998/12/08 + +%IH:beaver, old +%P:tsati +%G:big beaver, old beaver +%OIH:beaver, big/beaver, old +%C:N +%SF:animals-water +%S:LITM/JOPA/BRBI/STJA +%UID:000206 +%MD:1998/12/08 + +%IH:otter +%P:tsis +%G:otter +%OIH:otter +%SF:animals-water +%SN:Lutra canadensis +%C:N +%S:JOPA/BRBI +%UID:000386 +%MD:1997/11/14 + +%IH:crow +%P:datsan +%G:American Crow +%C:N +%SF:bird-gen +%SN:Corvus brachyrhynchos +%OIH:crow/American Crow +%S:LITM/PEJO +%UID:000158 +%MD:2000/10/21 + +%IH:American Crow +%P:datsan +%G:American Crow +%C:N +%SF:bird-gen +%SN:Corvus brachyrhynchos +%OIH:crow/American Crow +%S:LITM/PEJO +%UID:000158 +%MD:2000/10/21 + +%IH:Robin, American +%P:sewh +%G:American Robin +%OIH:Robin, American +%SN:Turdus migratorius +%C:N +%SF:bird-gen +%S:LITM/JOPA/BRBI/PEJO +%UID:000181 +%MD:2000/10/21 + +%IH:Bald Eagle +%P:tsebalyan +%G:Bald Eagle +%OIH:Bald Eagle +%C:N +%SF:bird-gen +%SN:Haliaeetus leucocephalus +%S:LITM/JOPA/BRBI +%UID:000150 +%MD:1997/06/16 + +%IH:bird +%P:dut'ai +%G:bird, duck +%OIH:bird/duck +%C:N +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO +%UID:000081 +%MD:2000/09/28 + +%IH:duck +%P:dut'ai +%G:bird, duck +%OIH:bird/duck +%C:N +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO +%UID:000081 +%MD:2000/09/28 + +%IH:crane +%P:delh +%G:crane +%OIH:crane +%C:N +%SF:bird-gen +%S:LITM +%UID:000255 +%MD:1997/06/16 + +%IH:goose +%P:khoh +%G:goose +%OIH:goose +%C:N +%P1s:skhoh +%P2s:nkhoh +%P1p:nekhoh +%POSS:khoh +%SF:bird-gen +%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000031 +%MD:2001/02/15 + +%IH:hummingbird +%P:ts'unalhduz +%G:hummingbird +%OIH:hummingbird +%C:N +%SF:bird-gen +%S:LITM/BRBI/JOPA +%UID:000242 +%MD:1997/06/16 + +%IH:bird, little +%P:gagiyaz +%G:little bird +%OIH:bird, little +%C:N +%QCHECK:Any little bird? +%SF:bird-gen +%S:PEJO +%UID:003115 +%POCKET:Y +%MD:2000/09/28 + +%IH:bird, little +%P:dut'aiyaz +%G:little bird +%OIH:bird, little +%C:N +%SF:bird-gen +%S:STJA/JOPA/EDFR/VESE/PEJO +%UID:001818 +%MD:2000/09/28 + +%IH:loon +%P:dadzi +%G:loon +%OIH:loon +%SF:bird-gen +%SN:Gavia immer +%C:N +%S:LITM/JOPA/BRBI +%UID:000020 +%MD:1997/06/12 + +%IH:Mallard Duck +%P:t'ugicho +%G:Mallard Duck +%OIH:Mallard Duck +%C:N +%SN:Anas platyrhynchos +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO +%UID:000041 +%MD:1999/05/11 + +%IH:owl +%P:musdzoon +%G:owl +%OIH:owl +%C:N +%SF:bird-gen +%S:LITM/BRBI/JOPA/MAGO +%UID:000135 +%MD:1997/12/11 + +%IH:Red-Necked Grebe +%P:ts'olh +%G:Red-necked Grebe +%MN:A variety of duck locally known as the Helldiver. +%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked +%SN:Podiceps grisegena +%SF:bird-gen +%C:N +%S:BRBI/JOPA +%UID:000263 +%MD:2001/03/08 + +%IH:Helldiver +%P:ts'olh +%G:Red-necked Grebe +%MN:A variety of duck locally known as the Helldiver. +%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked +%SN:Podiceps grisegena +%SF:bird-gen +%C:N +%S:BRBI/JOPA +%UID:000263 +%MD:2001/03/08 + +%IH:Grebe, Red-Necked +%P:ts'olh +%G:Red-necked Grebe +%MN:A variety of duck locally known as the Helldiver. +%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked +%SN:Podiceps grisegena +%SF:bird-gen +%C:N +%S:BRBI/JOPA +%UID:000263 +%MD:2001/03/08 + +%IH:Ruffed grouse +%P:'utsut +%G:Ruffed grouse +%OIH:Ruffed grouse +%C:N +%SF:bird-gen +%S:LITM +%UID:000218 +%MD:1997/06/16 + +%IH:Spruce Grouse +%P:nat'oh +%G:Spruce Grouse, Fool Hen +%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen +%SF:bird-gen +%SN:Dendragapus canadensis +%C:N +%S:MAGO/LITM +%UID:000539 +%MD:1997/12/04 + +%IH:Grouse, Spruce +%P:nat'oh +%G:Spruce Grouse, Fool Hen +%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen +%SF:bird-gen +%SN:Dendragapus canadensis +%C:N +%S:MAGO/LITM +%UID:000539 +%MD:1997/12/04 + +%IH:Fool Hen +%P:nat'oh +%G:Spruce Grouse, Fool Hen +%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen +%SF:bird-gen +%SN:Dendragapus canadensis +%C:N +%S:MAGO/LITM +%UID:000539 +%MD:1997/12/04 + +%IH:Steller's Jay +%P:tehgwuzeh +%G:Steller's Jay, commonly known locally as ``bluejay''. +%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay) +%SF:bird-gen +%SN:Cyanocitta stelleri +%C:N +%S:JOPA/BRBI +%UID:000356 +%MD:1997/11/14 + +%IH:jay, Steller's +%P:tehgwuzeh +%G:Steller's Jay, commonly known locally as ``bluejay''. +%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay) +%SF:bird-gen +%SN:Cyanocitta stelleri +%C:N +%S:JOPA/BRBI +%UID:000356 +%MD:1997/11/14 + +%IH:Bluejay (Steller's Jay) +%P:tehgwuzeh +%G:Steller's Jay, commonly known locally as ``bluejay''. +%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay) +%SF:bird-gen +%SN:Cyanocitta stelleri +%C:N +%S:JOPA/BRBI +%UID:000356 +%MD:1997/11/14 + +%IH:sandpiper +%P:wedlew +%G:sandpiper +%OIH:sandpiper +%C:N +%SN:Eremophila alpestris et sim. +%SF:bird-gen +%S:LITM +%UID:000237 +%MD:2002/07/19 + +%IH:seagull +%P:besk'i +%G:seagull +%OIH:seagull +%C:N +%SN:Larus species +%SF:bird-gen +%S:LITM +%UID:000136 +%MD:2002/07/19 + +%IH:swan +%P:ts'incho +%G:swan +%OIH:swan +%C:N +%SF:bird-gen +%S:LITM +%UID:000222 +%MD:1997/06/16 + +%IH:Tree Swallow +%P:'uschas +%G:Tree Swallow +%OIH:Tree Swallow +%SF:bird-gen +%SN:Tachycineta bicolor +%C:N +%S:MAGO +%UID:000535 +%MD:1997/11/22 + +%IH:Whiskey Jack +%P:gwuzeh +%G:Whiskey Jack, Gray Jay, Canadian Jay +%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian +%C:N +%SN:Perisoreus canadensis +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO +%UID:000148 +%MD:1997/11/22 + +%IH:Jay, Gray +%P:gwuzeh +%G:Whiskey Jack, Gray Jay, Canadian Jay +%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian +%C:N +%SN:Perisoreus canadensis +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO +%UID:000148 +%MD:1997/11/22 + +%IH:Jay, Canadian +%P:gwuzeh +%G:Whiskey Jack, Gray Jay, Canadian Jay +%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian +%C:N +%SN:Perisoreus canadensis +%SF:bird-gen +%S:LITM/JOPA/BRBI/MAGO +%UID:000148 +%MD:1997/11/22 + +%IH:woodpecker +%P:chundulkw'uz +%G:woodpecker +%OIH:woodpecker +%C:N +%SF:bird-gen +%S:JOPA/BRBI/STJA +%UID:000138 +%MD:1999/03/31 + +%IH:nest +%P:-t'o +%G:nest +%OIH:nest +%C:N +%Pind:'ut'o +%P3s:but'o +%Pref:dut'o +%SF:bird-misc/bugs +%S:STJA/PEJO/JOPA/BRBI/EDFR +%ES:001353 +%UID:000226 +%MD:2001/03/07 + +%IH:eye, a single +%P:-nak'uz +%G:a single eye +%OIH:eye, a single +%C:N +%SF:body-ext +%S:JOPA/EDFR +%ES:000457 +%UID:003770 +%POCKET:Y +%MD:2001/02/13 + +%IH:ankle +%P:-kechunoh +%G:ankle +%OIH:ankle +%P1s:skechunoh +%P2s:nkechunoh +%C:N +%S:MAGO/STJA +%SF:body-ext +%UID:000865 +%MD:1999/03/03 + +%IH:antler +%P:-de +%G:antler, horn +%OIH:antler/horn +%C:N +%SF:body-ext +%P3s:bude +%S:STJA +%UID:002266 +%MD:1999/03/02 + +%IH:horn +%P:-de +%G:antler, horn +%OIH:antler/horn +%C:N +%SF:body-ext +%P3s:bude +%S:STJA +%UID:002266 +%MD:1999/03/02 + +%IH:velvet, antler +%P:-de_zu_s +%G:antler velvet +%OIH:velvet, antler +%C:N +%SF:body-ext +%P3s:bude_zu_s +%S:STJA +%UID:002267 +%MD:1999/03/02 + +%IH:anus +%P:-tsul +%G:anus, asshole +%OIH:anus/asshole +%C:N +%P1s:stsul +%SF:body-ext +%S:STJA +%UID:002171 +%MD:1999/02/23 + +%IH:asshole +%P:-tsul +%G:anus, asshole +%OIH:anus/asshole +%C:N +%P1s:stsul +%SF:body-ext +%S:STJA +%UID:002171 +%MD:1999/02/23 + +%IH:arm +%P:-gan +%G:arm +%OIH:arm +%P1s:sgan +%P2s:ngan +%Pref:dugan +%C:N +%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO +%SF:body-ext +%UID:000863 +%MD:1999/02/22 + +%IH:armpit +%P:-chak'ests'oh +%G:armpit +%OIH:armpit +%P1s:schak'ests'oh +%C:N +%S:MAGO +%UID:000859 +%SF:body-ext +%MD:1997/12/11 + +%IH:back (of body) +%P:-t'ak +%G:back (of body) +%OIH:back (of body) +%P1s:st'ak +%P3s:but'ak +%C:N +%S:MAGO/EDFR/VESE/JEKO +%SF:body-ext +%UID:000899 +%MD:1997/12/11 + +%IH:back of hand +%P:-lat'ak +%G:back of hand +%OIH:back of hand +%P1s:slat'ak +%C:N +%S:MAGO +%SF:body-ext +%UID:000871 +%MD:1997/12/11 + +%IH:beaver paws +%P:tsake +%G:beaver paws +%OIH:beaver paws +%C:N +%SF:body-ext +%S:LITM-EDFR +%UID:000329 +%MD:1997/06/18 + +%IH:beaver tail +%P:tsache +%G:beaver tail +%OIH:beaver tail +%C:N +%SF:body-ext +%S:LITM +%UID:000207 +%MD:1997/06/16 + +%IH:belly +%P:-but +%G:belly +%OIH:belly +%P1s:sbut +%C:N +%S:MAGO +%SF:body-ext +%UID:000937 +%MD:1997/12/11 + +%IH:breast +%P:-ts'oo +%G:breast +%OIH:breast +%P1s:sts'oo +%C:N +%S:MAGO +%UID:000855 +%SF:body-ext +%MD:1997/12/11 + +%IH:bum +%P:-tl'a +%G:bum, buttocks +%OIH:bum/buttocks +%P1s:stl'a +%C:N +%S:MAGO +%SF:body-ext +%UID:000936 +%MD:1997/12/11 + +%IH:buttocks +%P:-tl'a +%G:bum, buttocks +%OIH:bum/buttocks +%P1s:stl'a +%C:N +%S:MAGO +%SF:body-ext +%UID:000936 +%MD:1997/12/11 + +%IH:calf of leg +%P:-kechunch'ooz +%G:calf of leg +%OIH:calf of leg +%C:N +%SF:body-ext +%S:JOPA/EDFR +%UID:004458 +%POCKET:Y +%MD:2001/04/20 + +%IH:cheek +%P:-nembus +%G:cheek +%OIH:cheek +%P1s:snimbus +%C:N +%S:MAGO/JOPA/BRBI +%SF:body-ext +%UID:000889 +%MD:1997/12/11 + +%IH:chest +%P:-yoh +%G:chest +%OIH:chest +%C:N +%SF:body-ext +%S:JOPA/EDFR +%ES:000660 +%UID:003777 +%POCKET:Y +%MD:2001/02/13 + +%IH:chin +%P:-yeda' +%G:chin +%OIH:chin +%P1s:syeda' +%C:N +%S:MAGO +%SF:body-ext +%UID:000882 +%MD:1997/12/11 + +%IH:cranial fontanelle +%P:-tsidakwhudutle +%G:cranial fontanelle, baby's soft spot +%OIH:cranial fontanelle/baby's soft spot +%C:N +%P3s:butsidakwhudutle +%S:MAGO +%SF:body-ext +%UID:000898 +%MD:1997/12/11 + +%IH:baby's soft spot +%P:-tsidakwhudutle +%G:cranial fontanelle, baby's soft spot +%OIH:cranial fontanelle/baby's soft spot +%C:N +%P3s:butsidakwhudutle +%S:MAGO +%SF:body-ext +%UID:000898 +%MD:1997/12/11 + +%IH:ear +%P:-dzo +%G:ear +%OIH:ear +%MN:This refers to the ear considered as a whole, especially the exterior. + When the canal in particular is referred to, one uses {\qc -dzek}, q.v. +%C:N +%P1s:sdzo +%S:MAGO +%SF:body-ext +%UID:000879 +%MD:1997/12/11 + +%IH:earlobe +%P:-dzobal +%G:earlobe +%OIH:earlobe +%C:N +%P1s:sdzobal +%SF:body-ext +%S:BRBI/MAGO +%UID:000641 +%MD:1997/12/17 + +%IH:elbow +%P:-nints'uzti +%G:elbow +%OIH:elbow +%P1s:snints'uzti +%C:N +%S:MAGO +%SF:body-ext +%UID:000916 +%MD:1997/12/11 + +%IH:eye +%P:-na +%G:eye +%OIH:eye +%P1s:sna +%P3s:buna +%C:N +%S:MAGO/JOPA/EDFR +%SF:body-ext +%UID:000891 +%MD:1998/12/18 + +%IH:eye socket +%P:-nak'et +%G:eye socket +%OIH:eye socket +%P1s:snak'et +%C:N +%S:MAGO +%SF:body-ext +%UID:000892 +%MD:1997/12/11 + +%IH:eyebrow +%P:-nach'usdooz +%G:eyebrow +%OIH:eyebrow +%P1s:snach'usdooz +%C:N +%S:MAGO +%SF:body-ext +%UID:000896 +%MD:1997/12/11 + +%IH:eyelash +%P:-nalusgha +%G:eyelash +%OIH:eyelash +%P1s:snalusgha +%C:N +%S:MAGO +%SF:body-ext +%UID:000895 +%MD:1997/12/11 + +%IH:eyelid +%P:-nalus +%G:eyelid +%OIH:eyelid +%P1s:snalus +%C:N +%S:MAGO +%SF:body-ext +%UID:000894 +%MD:1997/12/11 + +%IH:face +%P:-nen +%G:face +%OIH:face +%P1s:snen +%P2s:nyunen +%P3s:bunen +%C:N +%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR +%SF:body-ext +%ES:000369 +%UID:000890 +%MD:2001/04/20 + +%IH:feather +%P:ts'uz +%G:feather, down +%OIH:feather/down +%C:N +%SF:body-ext +%S:LITM/STJA/PEJO +%UID:000271 +%MD:2000/10/16 + +%IH:down +%P:ts'uz +%G:feather, down +%OIH:feather/down +%C:N +%SF:body-ext +%S:LITM/STJA/PEJO +%UID:000271 +%MD:2000/10/16 + +%IH:feathers +%P:dut'aits'uz +%G:feathers, down +%OIH:feathers/down +%C:N +%SF:body-ext +%S:STJA +%UID:002647 +%MD:2001/02/27 + +%IH:down +%P:dut'aits'uz +%G:feathers, down +%OIH:feathers/down +%C:N +%SF:body-ext +%S:STJA +%UID:002647 +%MD:2001/02/27 + +%IH:finger other than thumb or pinkie +%P:-lasge +%G:finger other than thumb or pinkie +%OIH:finger other than thumb or pinkie +%P1s:slasge +%C:N +%S:MAGO/STJA/JOPA/PEJO/EDFR +%SF:body-ext +%UID:000869 +%MD:2000/11/01 + +%IH:fingernails +%P:-lagui +%G:fingernails, claws of forepaws +%OIH:fingernails/claws of forepaws +%P1s:slagui +%C:N +%S:MAGO +%SF:body-ext +%UID:000875 +%MD:1997/12/11 + +%IH:claws of forepaws +%P:-lagui +%G:fingernails, claws of forepaws +%OIH:fingernails/claws of forepaws +%P1s:slagui +%C:N +%S:MAGO +%SF:body-ext +%UID:000875 +%MD:1997/12/11 + +%IH:foot +%P:-ke +%G:foot +%OIH:foot +%C:N +%P1s:ske +%Pref:duke +%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO +%UID:000851 +%SF:body-ext +%MD:1999/05/11 + +%IH:hair +%P:-gha +%G:hair +%MN:This refers to hair in general and where no more specific term exists, as on the + arms and chest. It is not used to refer to the hair of the head, for which the + more specific term {\qc -tsigha} is always used. +%OIH:hair +%C:N +%S:MAGO +%SF:body-ext +%UID:000888 +%MD:1997/12/11 + +%IH:hair of the head +%P:-tsigha +%G:hair of the head +%OIH:hair of the head +%P1s:stsigha +%P2s:ntsigha +%P3s:butsigha +%C:N +%S:MAGO/LITM/PEJO +%SF:body-ext +%UID:000887 +%MD:2000/10/20 + +%IH:hand +%P:-la +%G:hand +%OIH:hand +%P1s:sla +%P2s:nla +%C:N +%S:MAGO/STJA +%SF:body-ext +%POCKET:Y +%UID:000866 +%MD:1999/02/17 + +%IH:head +%P:-tsi +%G:head +%OIH:head +%Pref:dutsi +%C:N +%SF:body-ext +%S:STJA +%UID:002965 +%POCKET:Y +%MD:1999/06/24 + +%IH:heel +%P:-kelatsul +%G:heel +%OIH:heel +%P1s:skelatsul +%C:N +%S:MAGO +%SF:body-ext +%UID:000917 +%MD:1997/12/11 + +%IH:hip +%P:-k'ui +%G:hip +%OIH:hip +%P1s:sk'ui +%C:N +%S:MAGO/JOPA +%SF:body-ext +%UID:000923 +%MD:2001/03/15 + +%IH:knee +%P:-gwut +%G:knee +%OIH:knee +%P1s:sgwut +%C:N +%S:MAGO +%SF:body-ext +%UID:000933 +%MD:1997/12/11 + +%IH:kneecap +%P:-gwutlasi'ai +%G:kneecap +%OIH:kneecap +%P1s:sgwutlasi'ai +%R:has something to do with floating at tip of knee +%C:N +%S:MAGO +%SF:body-ext +%UID:000925 +%MD:1997/12/11 + +%IH:knuckles at boundary between hand and fingers +%P:-langwut +%G:knuckles at boundary between hand and fingers +%OIH:knuckles at boundary between hand and fingers +%P1s:slangwut +%SF:body-ext +%C:N +%S:JOPA/BRBI +%UID:000967 +%MD:1997/12/17 + +%IH:leg +%P:-kechun +%G:leg +%OIH:leg +%P1s:skechun +%C:N +%S:MAGO +%UID:000852 +%SF:body-ext +%MD:1997/12/11 + diff --git a/src/tool/awk/testdata/gawk/zero2.awk b/src/tool/awk/testdata/gawk/zero2.awk new file mode 100644 index 0000000..8ecfb2f --- /dev/null +++ b/src/tool/awk/testdata/gawk/zero2.awk @@ -0,0 +1,5 @@ +BEGIN { + printf "%d\n", -.4 + printf "%d\n", -0.0 + printf "%d\n", -.9 +} diff --git a/src/tool/awk/testdata/gawk/zero2.ok b/src/tool/awk/testdata/gawk/zero2.ok new file mode 100644 index 0000000..bb0b1cf --- /dev/null +++ b/src/tool/awk/testdata/gawk/zero2.ok @@ -0,0 +1,3 @@ +0 +0 +0 diff --git a/src/tool/awk/testdata/gawk/zeroe0.awk b/src/tool/awk/testdata/gawk/zeroe0.awk new file mode 100644 index 0000000..5dc9c6b --- /dev/null +++ b/src/tool/awk/testdata/gawk/zeroe0.awk @@ -0,0 +1,40 @@ +# From sbohdjal@matrox.com Tue Dec 31 11:41:25 2002 +# Return-Path: +# X-From_: sbohdjal@matrox.com Mon Dec 30 17:34:41 2002 +# Message-Id: <4.3.1.1.20021230101824.00fc4bd8@mailbox.matrox.com> +# Date: Mon, 30 Dec 2002 10:33:10 -0500 +# To: bug-gawk@gnu.org +# From: Serge Bohdjalian +# Subject: GAWK 3.1.1 bug, DJGPP port +# +# When I run the following AWK file... +# +BEGIN { + $0 = "00E0"; + print $0 ", " ($0 && 1) ", " ($0 != ""); + $1 = "00E0"; + print $1 ", " ($1 && 1) ", " ($1 != ""); +} +# +# With the SimTel version of GAWK 3.1.1 for Windows (downloadable from +# ftp://ftp.cdrom.com/pub/simtelnet/gnu/djgpp/v2gnu/), I get the following +# output... +# +# 00E0, 0, 1 +# 00E0, 1, 1 +# +# With the Cygwin version of GAWK 3.1.1 for Windows, I get... +# +# 00E0, 1, 1 +# 00E0, 1, 1 +# +# As far as I know, if "$0" isn't blank, the value of "($0 && 1)" should be +# "1" (true). I get the same problem if I substitute "00E0" with "00E1" to +# "00E9". Other strings don't have have this problem (for example, "00EA"). +# The problem occurs whether I use file input or whether I manually assign +# "$0" (as above). +# +# The problem is also discussed in a comp.lang.awk posting ("Bug in GAWK +# 3.1.1?", Dec. 27, 2002). +# +# -Serge diff --git a/src/tool/awk/testdata/gawk/zeroe0.ok b/src/tool/awk/testdata/gawk/zeroe0.ok new file mode 100644 index 0000000..cdf28fb --- /dev/null +++ b/src/tool/awk/testdata/gawk/zeroe0.ok @@ -0,0 +1,2 @@ +00E0, 1, 1 +00E0, 1, 1 diff --git a/src/tool/awk/testdata/gawk/zeroflag.awk b/src/tool/awk/testdata/gawk/zeroflag.awk new file mode 100644 index 0000000..526ed0e --- /dev/null +++ b/src/tool/awk/testdata/gawk/zeroflag.awk @@ -0,0 +1 @@ +BEGIN { printf("%2.1d---%02.1d\n", 2, 2) } diff --git a/src/tool/awk/testdata/gawk/zeroflag.ok b/src/tool/awk/testdata/gawk/zeroflag.ok new file mode 100644 index 0000000..937c0ed --- /dev/null +++ b/src/tool/awk/testdata/gawk/zeroflag.ok @@ -0,0 +1 @@ + 2--- 2 diff --git a/src/tool/awk/testdata/output/p.1 b/src/tool/awk/testdata/output/p.1 new file mode 100644 index 0000000..3f021d5 --- /dev/null +++ b/src/tool/awk/testdata/output/p.1 @@ -0,0 +1,10 @@ +Russia 8650 262 Asia +Canada 3852 24 North America +China 3692 866 Asia +USA 3615 219 North America +Brazil 3286 116 South America +Australia 2968 14 Australia +India 1269 637 Asia +Argentina 1072 26 South America +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.10 b/src/tool/awk/testdata/output/p.10 new file mode 100644 index 0000000..511b832 --- /dev/null +++ b/src/tool/awk/testdata/output/p.10 @@ -0,0 +1 @@ +Australia 2968 14 Australia diff --git a/src/tool/awk/testdata/output/p.11 b/src/tool/awk/testdata/output/p.11 new file mode 100644 index 0000000..f87bcf7 --- /dev/null +++ b/src/tool/awk/testdata/output/p.11 @@ -0,0 +1,3 @@ +Russia 8650 262 Asia +China 3692 866 Asia +India 1269 637 Asia diff --git a/src/tool/awk/testdata/output/p.12 b/src/tool/awk/testdata/output/p.12 new file mode 100644 index 0000000..abe7a2a --- /dev/null +++ b/src/tool/awk/testdata/output/p.12 @@ -0,0 +1,3 @@ +Russia +China +India diff --git a/src/tool/awk/testdata/output/p.13 b/src/tool/awk/testdata/output/p.13 new file mode 100644 index 0000000..5dde73d --- /dev/null +++ b/src/tool/awk/testdata/output/p.13 @@ -0,0 +1,7 @@ +Canada +USA +Brazil +Australia +Argentina +Sudan +Algeria diff --git a/src/tool/awk/testdata/output/p.14 b/src/tool/awk/testdata/output/p.14 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.15 b/src/tool/awk/testdata/output/p.15 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.16 b/src/tool/awk/testdata/output/p.16 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.17 b/src/tool/awk/testdata/output/p.17 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.18 b/src/tool/awk/testdata/output/p.18 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.19 b/src/tool/awk/testdata/output/p.19 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.2 b/src/tool/awk/testdata/output/p.2 new file mode 100644 index 0000000..a8d759c --- /dev/null +++ b/src/tool/awk/testdata/output/p.2 @@ -0,0 +1,10 @@ +Russia 262 +Canada 24 +China 866 +USA 219 +Brazil 116 +Australia 14 +India 637 +Argentina 26 +Sudan 19 +Algeria 18 diff --git a/src/tool/awk/testdata/output/p.20 b/src/tool/awk/testdata/output/p.20 new file mode 100644 index 0000000..2cce5fd --- /dev/null +++ b/src/tool/awk/testdata/output/p.20 @@ -0,0 +1,2 @@ +China 3692 866 Asia +India 1269 637 Asia diff --git a/src/tool/awk/testdata/output/p.21 b/src/tool/awk/testdata/output/p.21 new file mode 100644 index 0000000..f87bcf7 --- /dev/null +++ b/src/tool/awk/testdata/output/p.21 @@ -0,0 +1,3 @@ +Russia 8650 262 Asia +China 3692 866 Asia +India 1269 637 Asia diff --git a/src/tool/awk/testdata/output/p.21a b/src/tool/awk/testdata/output/p.21a new file mode 100644 index 0000000..d0d93a5 --- /dev/null +++ b/src/tool/awk/testdata/output/p.21a @@ -0,0 +1,5 @@ +Russia 8650 262 Asia +China 3692 866 Asia +India 1269 637 Asia +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.22 b/src/tool/awk/testdata/output/p.22 new file mode 100644 index 0000000..f87bcf7 --- /dev/null +++ b/src/tool/awk/testdata/output/p.22 @@ -0,0 +1,3 @@ +Russia 8650 262 Asia +China 3692 866 Asia +India 1269 637 Asia diff --git a/src/tool/awk/testdata/output/p.23 b/src/tool/awk/testdata/output/p.23 new file mode 100644 index 0000000..3722358 --- /dev/null +++ b/src/tool/awk/testdata/output/p.23 @@ -0,0 +1,4 @@ +Canada 3852 24 North America +China 3692 866 Asia +USA 3615 219 North America +Brazil 3286 116 South America diff --git a/src/tool/awk/testdata/output/p.24 b/src/tool/awk/testdata/output/p.24 new file mode 100644 index 0000000..3597d78 --- /dev/null +++ b/src/tool/awk/testdata/output/p.24 @@ -0,0 +1,5 @@ +testdata/test.countries Russia 8650 262 Asia +testdata/test.countries Canada 3852 24 North America +testdata/test.countries China 3692 866 Asia +testdata/test.countries USA 3615 219 North America +testdata/test.countries Brazil 3286 116 South America diff --git a/src/tool/awk/testdata/output/p.25 b/src/tool/awk/testdata/output/p.25 new file mode 100644 index 0000000..d21789e --- /dev/null +++ b/src/tool/awk/testdata/output/p.25 @@ -0,0 +1,10 @@ + Russia 30.3 + Canada 6.2 + China 234.6 + USA 60.6 + Brazil 35.3 + Australia 4.7 + India 502.0 + Argentina 24.3 + Sudan 19.6 + Algeria 19.6 diff --git a/src/tool/awk/testdata/output/p.26 b/src/tool/awk/testdata/output/p.26 new file mode 100644 index 0000000..7cceb21 --- /dev/null +++ b/src/tool/awk/testdata/output/p.26 @@ -0,0 +1 @@ +population of 3 Asian countries in millions is 1765 diff --git a/src/tool/awk/testdata/output/p.26a b/src/tool/awk/testdata/output/p.26a new file mode 100644 index 0000000..7cceb21 --- /dev/null +++ b/src/tool/awk/testdata/output/p.26a @@ -0,0 +1 @@ +population of 3 Asian countries in millions is 1765 diff --git a/src/tool/awk/testdata/output/p.27 b/src/tool/awk/testdata/output/p.27 new file mode 100644 index 0000000..03ebfea --- /dev/null +++ b/src/tool/awk/testdata/output/p.27 @@ -0,0 +1 @@ +China 866 diff --git a/src/tool/awk/testdata/output/p.28 b/src/tool/awk/testdata/output/p.28 new file mode 100644 index 0000000..a8bd36a --- /dev/null +++ b/src/tool/awk/testdata/output/p.28 @@ -0,0 +1,10 @@ +1:Russia 8650 262 Asia +2:Canada 3852 24 North America +3:China 3692 866 Asia +4:USA 3615 219 North America +5:Brazil 3286 116 South America +6:Australia 2968 14 Australia +7:India 1269 637 Asia +8:Argentina 1072 26 South America +9:Sudan 968 19 Africa +10:Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.29 b/src/tool/awk/testdata/output/p.29 new file mode 100644 index 0000000..8b65a30 --- /dev/null +++ b/src/tool/awk/testdata/output/p.29 @@ -0,0 +1,10 @@ +Russia 8650 262 Asia +Canada 3852 24 North America +China 3692 866 Asia +United States 3615 219 North America +Brazil 3286 116 South America +Australia 2968 14 Australia +India 1269 637 Asia +Argentina 1072 26 South America +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.3 b/src/tool/awk/testdata/output/p.3 new file mode 100644 index 0000000..9f038ab --- /dev/null +++ b/src/tool/awk/testdata/output/p.3 @@ -0,0 +1,10 @@ +[ Russia] [262 ] +[ Canada] [24 ] +[ China] [866 ] +[ USA] [219 ] +[ Brazil] [116 ] +[ Australia] [14 ] +[ India] [637 ] +[ Argentina] [26 ] +[ Sudan] [19 ] +[ Algeria] [18 ] diff --git a/src/tool/awk/testdata/output/p.30 b/src/tool/awk/testdata/output/p.30 new file mode 100644 index 0000000..c3d35db --- /dev/null +++ b/src/tool/awk/testdata/output/p.30 @@ -0,0 +1,10 @@ +20 Russia 8650 262 Asia +28 Canada 3852 24 North America +19 China 3692 866 Asia +26 USA 3615 219 North America +29 Brazil 3286 116 South America +27 Australia 2968 14 Australia +19 India 1269 637 Asia +31 Argentina 1072 26 South America +19 Sudan 968 19 Africa +21 Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.31 b/src/tool/awk/testdata/output/p.31 new file mode 100644 index 0000000..7e93a84 --- /dev/null +++ b/src/tool/awk/testdata/output/p.31 @@ -0,0 +1 @@ +Australia diff --git a/src/tool/awk/testdata/output/p.32 b/src/tool/awk/testdata/output/p.32 new file mode 100644 index 0000000..ec4e9fb --- /dev/null +++ b/src/tool/awk/testdata/output/p.32 @@ -0,0 +1,10 @@ +Rus 8650 262 Asia +Can 3852 24 North America +Chi 3692 866 Asia +USA 3615 219 North America +Bra 3286 116 South America +Aus 2968 14 Australia +Ind 1269 637 Asia +Arg 1072 26 South America +Sud 968 19 Africa +Alg 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.33 b/src/tool/awk/testdata/output/p.33 new file mode 100644 index 0000000..b3d0869 --- /dev/null +++ b/src/tool/awk/testdata/output/p.33 @@ -0,0 +1 @@ + Rus Can Chi USA Bra Aus Ind Arg Sud Alg diff --git a/src/tool/awk/testdata/output/p.34 b/src/tool/awk/testdata/output/p.34 new file mode 100644 index 0000000..8f6c400 --- /dev/null +++ b/src/tool/awk/testdata/output/p.34 @@ -0,0 +1,10 @@ +Russia 8.65 262 Asia +Canada 3.852 24 North America +China 3.692 866 Asia +USA 3.615 219 North America +Brazil 3.286 116 South America +Australia 2.968 14 Australia +India 1.269 637 Asia +Argentina 1.072 26 South America +Sudan 0.968 19 Africa +Algeria 0.92 18 Africa diff --git a/src/tool/awk/testdata/output/p.35 b/src/tool/awk/testdata/output/p.35 new file mode 100644 index 0000000..0059fca --- /dev/null +++ b/src/tool/awk/testdata/output/p.35 @@ -0,0 +1,10 @@ +Russia 8650 262 Asia +Canada 3852 24 NA +China 3692 866 Asia +USA 3615 219 NA +Brazil 3286 116 SA +Australia 2968 14 Australia +India 1269 637 Asia +Argentina 1072 26 SA +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.36 b/src/tool/awk/testdata/output/p.36 new file mode 100644 index 0000000..482dab5 --- /dev/null +++ b/src/tool/awk/testdata/output/p.36 @@ -0,0 +1,10 @@ +Russia 8650 262 Asia 30.289 +Canada 3852 24 North America 6.23053 +China 3692 866 Asia 234.561 +USA 3615 219 North America 60.5809 +Brazil 3286 116 South America 35.3013 +Australia 2968 14 Australia 4.71698 +India 1269 637 Asia 501.97 +Argentina 1072 26 South America 24.2537 +Sudan 968 19 Africa 19.6281 +Algeria 920 18 Africa 19.5652 diff --git a/src/tool/awk/testdata/output/p.37 b/src/tool/awk/testdata/output/p.37 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.38 b/src/tool/awk/testdata/output/p.38 new file mode 100644 index 0000000..03ebfea --- /dev/null +++ b/src/tool/awk/testdata/output/p.38 @@ -0,0 +1 @@ +China 866 diff --git a/src/tool/awk/testdata/output/p.39 b/src/tool/awk/testdata/output/p.39 new file mode 100644 index 0000000..91a9a33 --- /dev/null +++ b/src/tool/awk/testdata/output/p.39 @@ -0,0 +1,44 @@ +Russia +8650 +262 +Asia +Canada +3852 +24 +North +America +China +3692 +866 +Asia +USA +3615 +219 +North +America +Brazil +3286 +116 +South +America +Australia +2968 +14 +Australia +India +1269 +637 +Asia +Argentina +1072 +26 +South +America +Sudan +968 +19 +Africa +Algeria +920 +18 +Africa diff --git a/src/tool/awk/testdata/output/p.4 b/src/tool/awk/testdata/output/p.4 new file mode 100644 index 0000000..ef26556 --- /dev/null +++ b/src/tool/awk/testdata/output/p.4 @@ -0,0 +1,10 @@ +1 Russia 8650 262 Asia +2 Canada 3852 24 North America +3 China 3692 866 Asia +4 USA 3615 219 North America +5 Brazil 3286 116 South America +6 Australia 2968 14 Australia +7 India 1269 637 Asia +8 Argentina 1072 26 South America +9 Sudan 968 19 Africa +10 Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.40 b/src/tool/awk/testdata/output/p.40 new file mode 100644 index 0000000..91a9a33 --- /dev/null +++ b/src/tool/awk/testdata/output/p.40 @@ -0,0 +1,44 @@ +Russia +8650 +262 +Asia +Canada +3852 +24 +North +America +China +3692 +866 +Asia +USA +3615 +219 +North +America +Brazil +3286 +116 +South +America +Australia +2968 +14 +Australia +India +1269 +637 +Asia +Argentina +1072 +26 +South +America +Sudan +968 +19 +Africa +Algeria +920 +18 +Africa diff --git a/src/tool/awk/testdata/output/p.41 b/src/tool/awk/testdata/output/p.41 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.42 b/src/tool/awk/testdata/output/p.42 new file mode 100644 index 0000000..e06381e --- /dev/null +++ b/src/tool/awk/testdata/output/p.42 @@ -0,0 +1,2 @@ +Asian population in millions is 1765 +African population in millions is 37 diff --git a/src/tool/awk/testdata/output/p.43 b/src/tool/awk/testdata/output/p.43 new file mode 100644 index 0000000..e1c2db6 --- /dev/null +++ b/src/tool/awk/testdata/output/p.43 @@ -0,0 +1,5 @@ +Africa:1888 +Asia:13611 +Australia:2968 +North America:7467 +South America:4358 diff --git a/src/tool/awk/testdata/output/p.44 b/src/tool/awk/testdata/output/p.44 new file mode 100644 index 0000000..3aeb1ff --- /dev/null +++ b/src/tool/awk/testdata/output/p.44 @@ -0,0 +1,10 @@ +Russia! is 0 +Canada! is 0 +China! is 0 +USA! is 0 +Brazil! is 0 +Australia! is 0 +India! is 0 +Argentina! is 0 +Sudan! is 0 +Algeria! is 0 diff --git a/src/tool/awk/testdata/output/p.45 b/src/tool/awk/testdata/output/p.45 new file mode 100644 index 0000000..713786b --- /dev/null +++ b/src/tool/awk/testdata/output/p.45 @@ -0,0 +1,20 @@ +Russia:8650 + +Canada:3852 + +China:3692 + +USA:3615 + +Brazil:3286 + +Australia:2968 + +India:1269 + +Argentina:1072 + +Sudan:968 + +Algeria:920 + diff --git a/src/tool/awk/testdata/output/p.46 b/src/tool/awk/testdata/output/p.46 new file mode 100644 index 0000000..e6f8104 --- /dev/null +++ b/src/tool/awk/testdata/output/p.46 @@ -0,0 +1,10 @@ +Russia8650 +Canada3852 +China3692 +USA3615 +Brazil3286 +Australia2968 +India1269 +Argentina1072 +Sudan968 +Algeria920 diff --git a/src/tool/awk/testdata/output/p.47 b/src/tool/awk/testdata/output/p.47 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.48 b/src/tool/awk/testdata/output/p.48 new file mode 100644 index 0000000..6bc8294 --- /dev/null +++ b/src/tool/awk/testdata/output/p.48 @@ -0,0 +1,5 @@ +Africa:37 +Asia:1765 +Australia:14 +North America:243 +South America:142 diff --git a/src/tool/awk/testdata/output/p.48a b/src/tool/awk/testdata/output/p.48a new file mode 100644 index 0000000..51ce329 --- /dev/null +++ b/src/tool/awk/testdata/output/p.48a @@ -0,0 +1 @@ +testdata/test.countries diff --git a/src/tool/awk/testdata/output/p.48b b/src/tool/awk/testdata/output/p.48b new file mode 100644 index 0000000..44f357c --- /dev/null +++ b/src/tool/awk/testdata/output/p.48b @@ -0,0 +1,3 @@ +China 3692 866 Asia +India 1269 637 Asia +Argentina 1072 26 South America diff --git a/src/tool/awk/testdata/output/p.49 b/src/tool/awk/testdata/output/p.49 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/p.5 b/src/tool/awk/testdata/output/p.5 new file mode 100644 index 0000000..33f32ae --- /dev/null +++ b/src/tool/awk/testdata/output/p.5 @@ -0,0 +1,11 @@ + COUNTRY AREA POP CONTINENT + Russia 8650 262 Asia + Canada 3852 24 North America + China 3692 866 Asia + USA 3615 219 North America + Brazil 3286 116 South America + Australia 2968 14 Australia + India 1269 637 Asia + Argentina 1072 26 South America + Sudan 968 19 Africa + Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.50 b/src/tool/awk/testdata/output/p.50 new file mode 100644 index 0000000..78b6494 --- /dev/null +++ b/src/tool/awk/testdata/output/p.50 @@ -0,0 +1,10 @@ +Africa:Sudan:19 +Africa:Algeria:18 +Asia:China:866 +Asia:India:637 +Asia:Russia:262 +Australia:Australia:14 +North America:USA:219 +North America:Canada:24 +South America:Brazil:116 +South America:Argentina:26 diff --git a/src/tool/awk/testdata/output/p.51 b/src/tool/awk/testdata/output/p.51 new file mode 100644 index 0000000..260a8dc --- /dev/null +++ b/src/tool/awk/testdata/output/p.51 @@ -0,0 +1,30 @@ + +Russia 8650 262 Asia: + 0 + +Canada 3852 24 North America: + 0 + +China 3692 866 Asia: + 0 + +USA 3615 219 North America: + 0 + +Brazil 3286 116 South America: + 0 + +Australia 2968 14 Australia: + 0 + +India 1269 637 Asia: + 0 + +Argentina 1072 26 South America: + 0 + +Sudan 968 19 Africa: + 0 + +Algeria 920 18 Africa: + 0 diff --git a/src/tool/awk/testdata/output/p.52 b/src/tool/awk/testdata/output/p.52 new file mode 100644 index 0000000..d8359ed --- /dev/null +++ b/src/tool/awk/testdata/output/p.52 @@ -0,0 +1,42 @@ + +Russia 8650 262 Asia: + 0 + total 0 + +Canada 3852 24 North America: + 0 + total 0 + +China 3692 866 Asia: + 0 + total 0 + +USA 3615 219 North America: + 0 + total 0 + +Brazil 3286 116 South America: + 0 + total 0 + +Australia 2968 14 Australia: + 0 + total 0 + +India 1269 637 Asia: + 0 + total 0 + +Argentina 1072 26 South America: + 0 + total 0 + +Sudan 968 19 Africa: + 0 + total 0 + +Algeria 920 18 Africa: + 0 + total 0 + +World Total 0 diff --git a/src/tool/awk/testdata/output/p.5a b/src/tool/awk/testdata/output/p.5a new file mode 100644 index 0000000..522d7cf --- /dev/null +++ b/src/tool/awk/testdata/output/p.5a @@ -0,0 +1,11 @@ + COUNTRY AREA POP'N CONTINENT + Russia 8650 262 Asia + Canada 3852 24 North America + China 3692 866 Asia + USA 3615 219 North America + Brazil 3286 116 South America + Australia 2968 14 Australia + India 1269 637 Asia + Argentina 1072 26 South America + Sudan 968 19 Africa + Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/p.6 b/src/tool/awk/testdata/output/p.6 new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/src/tool/awk/testdata/output/p.6 @@ -0,0 +1 @@ +10 diff --git a/src/tool/awk/testdata/output/p.7 b/src/tool/awk/testdata/output/p.7 new file mode 100644 index 0000000..0bc9950 --- /dev/null +++ b/src/tool/awk/testdata/output/p.7 @@ -0,0 +1,5 @@ +Russia 8650 262 Asia +China 3692 866 Asia +USA 3615 219 North America +Brazil 3286 116 South America +India 1269 637 Asia diff --git a/src/tool/awk/testdata/output/p.8 b/src/tool/awk/testdata/output/p.8 new file mode 100644 index 0000000..abe7a2a --- /dev/null +++ b/src/tool/awk/testdata/output/p.8 @@ -0,0 +1,3 @@ +Russia +China +India diff --git a/src/tool/awk/testdata/output/p.9 b/src/tool/awk/testdata/output/p.9 new file mode 100644 index 0000000..68e134f --- /dev/null +++ b/src/tool/awk/testdata/output/p.9 @@ -0,0 +1,2 @@ +USA 3615 219 North America +Sudan 968 19 Africa diff --git a/src/tool/awk/testdata/output/p.table b/src/tool/awk/testdata/output/p.table new file mode 100644 index 0000000..2881e5c --- /dev/null +++ b/src/tool/awk/testdata/output/p.table @@ -0,0 +1,10 @@ +Russia 8650 262 Asia +Canada 3852 24 North America +China 3692 866 Asia +USA 3615 219 North America +Brazil 3286 116 South America +Australia 2968 14 Australia +India 1269 637 Asia +Argentina 1072 26 South America +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/output/t.0 b/src/tool/awk/testdata/output/t.0 new file mode 100644 index 0000000..be3dbf6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.0 @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.0a b/src/tool/awk/testdata/output/t.0a new file mode 100644 index 0000000..0b72bb6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.0a @@ -0,0 +1,199 @@ +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +13 13 +14 14 +15 15 +16 16 +17 17 +18 18 +19 19 +20 20 +21 21 +22 22 +23 23 +24 24 +25 25 +26 26 +27 27 +28 28 +29 29 +30 30 +31 31 +32 32 +33 33 +34 34 +35 35 +36 36 +37 37 +38 38 +39 39 +40 40 +41 41 +42 42 +43 43 +44 44 +45 45 +46 46 +47 47 +48 48 +49 49 +50 50 +51 51 +52 52 +53 53 +54 54 +55 55 +56 56 +57 57 +58 58 +59 59 +60 60 +61 61 +62 62 +63 63 +64 64 +65 65 +66 66 +67 67 +68 68 +69 69 +70 70 +71 71 +72 72 +73 73 +74 74 +75 75 +76 76 +77 77 +78 78 +79 79 +80 80 +81 81 +82 82 +83 83 +84 84 +85 85 +86 86 +87 87 +88 88 +89 89 +90 90 +91 91 +92 92 +93 93 +94 94 +95 95 +96 96 +97 97 +98 98 +99 99 +100 100 +101 101 +102 102 +103 103 +104 104 +105 105 +106 106 +107 107 +108 108 +109 109 +110 110 +111 111 +112 112 +113 113 +114 114 +115 115 +116 116 +117 117 +118 118 +119 119 +120 120 +121 121 +122 122 +123 123 +124 124 +125 125 +126 126 +127 127 +128 128 +129 129 +130 130 +131 131 +132 132 +133 133 +134 134 +135 135 +136 136 +137 137 +138 138 +139 139 +140 140 +141 141 +142 142 +143 143 +144 144 +145 145 +146 146 +147 147 +148 148 +149 149 +150 150 +151 151 +152 152 +153 153 +154 154 +155 155 +156 156 +157 157 +158 158 +159 159 +160 160 +161 161 +162 162 +163 163 +164 164 +165 165 +166 166 +167 167 +168 168 +169 169 +170 170 +171 171 +172 172 +173 173 +174 174 +175 175 +176 176 +177 177 +178 178 +179 179 +180 180 +181 181 +182 182 +183 183 +184 184 +185 185 +186 186 +187 187 +188 188 +189 189 +190 190 +191 191 +192 192 +193 193 +194 194 +195 195 +196 196 +197 197 +198 198 +199 199 diff --git a/src/tool/awk/testdata/output/t.1 b/src/tool/awk/testdata/output/t.1 new file mode 100644 index 0000000..50f8afc --- /dev/null +++ b/src/tool/awk/testdata/output/t.1 @@ -0,0 +1,199 @@ +/dev/rrp3 + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root EMpNB8Zp56 0 +2roottcsh * 0 +3sysadm * 0 +4diag * 0 +5daemon * 1 +6bin * 2 +7nuucp BJnuQbAo 6 +8uucp * 3 +9sys * 4 +10adm * 5 +11lp * 9 +12auditor * 11 +13dbadmin * 12 +14bootes dcon 50 +15cdjuke dcon 51 +16rfindd * 66 +17EZsetup * 992 +18demos * 993 +19tutor * 994 +20tour * 995 +21guest nfP4/Wpvio/Rw 998 +224Dgifts 0nWRTZsOMt. 999 +23nobody * 60001 +24noaccess * 60002 +25nobody * -2 +26rje * 8 +27changes * 11 +28dist sorry 9999 +29man * 99 +30phoneca * 991 +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.1.x b/src/tool/awk/testdata/output/t.1.x new file mode 100644 index 0000000..406d778 --- /dev/null +++ b/src/tool/awk/testdata/output/t.1.x @@ -0,0 +1,199 @@ +count/dev/rrp3: /dev/rrp3: +count +count17379mel 17379 mel +count16693bwk 16693 bwk me +count16116ken 16116 ken him someone else +count15713srb 15713 srb +count11895lem 11895 lem +count10409scj 10409 scj +count10252rhm 10252 rhm +count9853shen 9853 shen +count9748a68 9748 a68 +count9492sif 9492 sif +count9190pjw 9190 pjw +count8912nls 8912 nls +count8895dmr 8895 dmr +count8491cda 8491 cda +count8372bs 8372 bs +count8252llc 8252 llc +count7450mb 7450 mb +count7360ava 7360 ava +count7273jrv 7273 jrv +count7080bin 7080 bin +count7063greg 7063 greg +count6567dict 6567 dict +count6462lck 6462 lck +count6291rje 6291 rje +count6211lwf 6211 lwf +count5671dave 5671 dave +count5373jhc 5373 jhc +count5220agf 5220 agf +count5167doug 5167 doug +count5007valerie 5007 valerie +count3963jca 3963 jca +count3895bbs 3895 bbs +count3796moh 3796 moh +count3481xchar 3481 xchar +count3200tbl 3200 tbl +count2845s 2845 s +count2774tgs 2774 tgs +count2641met 2641 met +count2566jck 2566 jck +count2511port 2511 port +count2479sue 2479 sue +count2127root 2127 root +count1989bsb 1989 bsb +count1989jeg 1989 jeg +count1933eag 1933 eag +count1801pdj 1801 pdj +count1590tpc 1590 tpc +count1385cvw 1385 cvw +count1370rwm 1370 rwm +count1316avg 1316 avg +count1205eg 1205 eg +count1194jam 1194 jam +count1153dl 1153 dl +count1150lgm 1150 lgm +count1031cmb 1031 cmb +count1018jwr 1018 jwr +count950gdb 950 gdb +count931marc 931 marc +count898usg 898 usg +count865ggr 865 ggr +count822daemon 822 daemon +count803mihalis 803 mihalis +count700honey 700 honey +count624tad 624 tad +count559acs 559 acs +count541uucp 541 uucp +count523raf 523 raf +count495adh 495 adh +count456kec 456 kec +count414craig 414 craig +count386donmac 386 donmac +count375jj 375 jj +count348ravi 348 ravi +count344drw 344 drw +count327stars 327 stars +count288mrg 288 mrg +count272jcb 272 jcb +count263ralph 263 ralph +count253tom 253 tom +count251sjb 251 sjb +count248haight 248 haight +count224sharon 224 sharon +count222chuck 222 chuck +count213dsj 213 dsj +count201bill 201 bill +count184god 184 god +count176sys 176 sys +count166meh 166 meh +count163jon 163 jon +count144dan 144 dan +count143fox 143 fox +count123dale 123 dale +count116kab 116 kab +count95buz 95 buz +count80asc 80 asc +count79jas 79 jas +count79trt 79 trt +count64wsb 64 wsb +count62dwh 62 dwh +count56ktf 56 ktf +count54lr 54 lr +count47dlc 47 dlc +count45dls 45 dls +count45jwf 45 jwf +count44mash 44 mash +count43ars 43 ars +count43vgl 43 vgl +count37jfo 37 jfo +count32rab 32 rab +count31pd 31 pd +count29jns 29 jns +count25spm 25 spm +count22rob 22 rob +count15egb 15 egb +count10hm 10 hm +count10mhb 10 mhb +count6aed 6 aed +count6cpb 6 cpb +count5evp 5 evp +count4ber 4 ber +count4men 4 men +count4mitch 4 mitch +count3ast 3 ast +count3jfr 3 jfr +count3lax 3 lax +count3nel 3 nel +count2blue 2 blue +count2jfk 2 jfk +count2njas 2 njas +count1122sec 1 122sec +count1ddwar 1 ddwar +count1gopi 1 gopi +count1jk 1 jk +count1learn 1 learn +count1low 1 low +count1nac 1 nac +count1sidor 1 sidor +count1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +count2roottcsh:*:0:0:Super-Userrunning 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +count3sysadm:*:0:0:SystemV 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +count4diag:*:0:996:HardwareDiagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +count5daemon:*:1:1:daemons:/:/bin/sh 5daemon:*:1:1:daemons:/:/bin/sh +count6bin:*:2:2:SystemTools 6bin:*:2:2:System Tools Owner:/bin:/dev/null +count7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +count8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +count9sys:*:4:0:SystemActivity 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +count10adm:*:5:3:AccountingFiles 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +count11lp:*:9:9:PrintSpooler 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +count12auditor:*:11:0:AuditActivity 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +count13dbadmin:*:12:0:SecurityDatabase 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +count14bootes:dcon:50:1:TomKillian 14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +count15cdjuke:dcon:51:1:TomKillian 15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +count16rfindd:*:66:1:RfindDaemon 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +count17EZsetup:*:992:998:SystemSetup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +count18demos:*:993:997:DemonstrationUser:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +count19tutor:*:994:997:TutorialUser:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +count20tour:*:995:997:IRISSpace 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +count21guest:nfP4/Wpvio/Rw:998:998:GuestAccount:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +count224Dgifts:0nWRTZsOMt.:999:998:4DgiftsAccount:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +count23nobody:*:60001:60001:SVR4nobody 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +count24noaccess:*:60002:60002:uidno 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +count25nobody:*:-2:-2:originalnobody 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +count26rje:*:8:8:RJEOwner:/usr/spool/rje: 26rje:*:8:8:RJE Owner:/usr/spool/rje: +count27changes:*:11:11:systemchange 27changes:*:11:11:system change log:/: +count28dist:sorry:9999:4:filedistributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +count29man:*:99:995:On-lineManual 29man:*:99:995:On-line Manual Owner:/: +count30phoneca:*:991:991:phonecall 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +count1root 1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +count2roottcsh 2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +count3sysadm 3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +count4diag 4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +count5daemon 5d aemon * 1 1 daemons / /bin/sh +count6bin 6b in * 2 2 System Tools Owner /bin /dev/null +count7nuucp 7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +count8uucp 8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +count9sys 9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +count10adm 10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +count11lp 11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +count12auditor 12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +count13dbadmin 13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +count14bootes 14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +count15cdjuke 15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +count16rfindd 16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +count17EZsetup 17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +count18demos 18 demos * 993 997 Demonstration User /usr/demos /bin/csh +count19tutor 19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +count20tour 20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +count21guest 21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +count224Dgifts 22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +count23nobody 23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +count24noaccess 24 noaccess * 60002 60002 uid no access /dev/null /dev/null +count25nobody 25 nobody * -2 -2 original nobody uid /dev/null /dev/null +count26rje 26 rje * 8 8 RJE Owner /usr/spool/rje +count27changes 27 changes * 11 11 system change log / +count28dist 28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +count29man 29 man * 99 995 On-line Manual Owner / +count30phoneca 30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.2 b/src/tool/awk/testdata/output/t.2 new file mode 100644 index 0000000..6fc999e --- /dev/null +++ b/src/tool/awk/testdata/output/t.2 @@ -0,0 +1,199 @@ +/dev/rrp3:====== +====== +17379===mel=== +16693===bwk===me +16116===ken===him +15713===srb=== +11895===lem=== +10409===scj=== +10252===rhm=== +9853===shen=== +9748===a68=== +9492===sif=== +9190===pjw=== +8912===nls=== +8895===dmr=== +8491===cda=== +8372===bs=== +8252===llc=== +7450===mb=== +7360===ava=== +7273===jrv=== +7080===bin=== +7063===greg=== +6567===dict=== +6462===lck=== +6291===rje=== +6211===lwf=== +5671===dave=== +5373===jhc=== +5220===agf=== +5167===doug=== +5007===valerie=== +3963===jca=== +3895===bbs=== +3796===moh=== +3481===xchar=== +3200===tbl=== +2845===s=== +2774===tgs=== +2641===met=== +2566===jck=== +2511===port=== +2479===sue=== +2127===root=== +1989===bsb=== +1989===jeg=== +1933===eag=== +1801===pdj=== +1590===tpc=== +1385===cvw=== +1370===rwm=== +1316===avg=== +1205===eg=== +1194===jam=== +1153===dl=== +1150===lgm=== +1031===cmb=== +1018===jwr=== +950===gdb=== +931===marc=== +898===usg=== +865===ggr=== +822===daemon=== +803===mihalis=== +700===honey=== +624===tad=== +559===acs=== +541===uucp=== +523===raf=== +495===adh=== +456===kec=== +414===craig=== +386===donmac=== +375===jj=== +348===ravi=== +344===drw=== +327===stars=== +288===mrg=== +272===jcb=== +263===ralph=== +253===tom=== +251===sjb=== +248===haight=== +224===sharon=== +222===chuck=== +213===dsj=== +201===bill=== +184===god=== +176===sys=== +166===meh=== +163===jon=== +144===dan=== +143===fox=== +123===dale=== +116===kab=== +95===buz=== +80===asc=== +79===jas=== +79===trt=== +64===wsb=== +62===dwh=== +56===ktf=== +54===lr=== +47===dlc=== +45===dls=== +45===jwf=== +44===mash=== +43===ars=== +43===vgl=== +37===jfo=== +32===rab=== +31===pd=== +29===jns=== +25===spm=== +22===rob=== +15===egb=== +10===hm=== +10===mhb=== +6===aed=== +6===cpb=== +5===evp=== +4===ber=== +4===men=== +4===mitch=== +3===ast=== +3===jfr=== +3===lax=== +3===nel=== +2===blue=== +2===jfk=== +2===njas=== +1===122sec=== +1===ddwar=== +1===gopi=== +1===jk=== +1===learn=== +1===low=== +1===nac=== +1===sidor=== +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh====== +2roottcsh:*:0:0:Super-User===running===tcsh +3sysadm:*:0:0:System===V===Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware===Diagnostics:/usr/diags:/bin/csh=== +5daemon:*:1:1:daemons:/:/bin/sh====== +6bin:*:2:2:System===Tools===Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico====== +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:====== +9sys:*:4:0:System===Activity===Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting===Files===Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print===Spooler===Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit===Activity===Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security===Database===Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom===Killian===(DO +15cdjuke:dcon:51:1:Tom===Killian===(DO +16rfindd:*:66:1:Rfind===Daemon===and +17EZsetup:*:992:998:System===Setup:/var/sysadmdesktop/EZsetup:/bin/csh=== +18demos:*:993:997:Demonstration===User:/usr/demos:/bin/csh=== +19tutor:*:994:997:Tutorial===User:/usr/tutor:/bin/csh=== +20tour:*:995:997:IRIS===Space===Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest===Account:/usr/people/guest:/bin/csh=== +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts===Account:/usr/people/4Dgifts:/bin/csh=== +23nobody:*:60001:60001:SVR4===nobody===uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid===no===access:/dev/null:/dev/null +25nobody:*:-2:-2:original===nobody===uid:/dev/null:/dev/null +26rje:*:8:8:RJE===Owner:/usr/spool/rje:=== +27changes:*:11:11:system===change===log:/: +28dist:sorry:9999:4:file===distributions:/v/adm/dist:/v/bin/sh=== +29man:*:99:995:On-line===Manual===Owner:/: +30phoneca:*:991:991:phone===call===log +1r===oot===EMpNB8Zp56 +2r===oottcsh===* +3s===ysadm===* +4d===iag===* +5d===aemon===* +6b===in===* +7n===uucp===BJnuQbAo +8u===ucp===* +9s===ys===* +10===adm===* +11===lp===* +12===auditor===* +13===dbadmin===* +14===bootes===dcon +15===cdjuke===dcon +16===rfindd===* +17===EZsetup===* +18===demos===* +19===tutor===* +20===tour===* +21===guest===nfP4/Wpvio/Rw +22===4Dgifts===0nWRTZsOMt. +23===nobody===* +24===noaccess===* +25===nobody===* +26===rje===* +27===changes===* +28===dist===sorry +29===man===* +30===phoneca===* diff --git a/src/tool/awk/testdata/output/t.2.x b/src/tool/awk/testdata/output/t.2.x new file mode 100644 index 0000000..6b4d051 --- /dev/null +++ b/src/tool/awk/testdata/output/t.2.x @@ -0,0 +1,199 @@ +2 2 +2 2 +2 2 +2 me 2 +2 him 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 2 +2 tcsh 2 +2 Administration:/usr/admin:/bin/sh 2 +2 2 +2 2 +2 Owner:/bin:/dev/null 2 +2 2 +2 2 +2 Owner:/usr/adm:/bin/sh 2 +2 Owner:/usr/adm:/bin/sh 2 +2 Owner:/var/spool/lp:/bin/sh 2 +2 Owner:/auditor:/bin/sh 2 +2 Owner:/dbadmin:/bin/sh 2 +2 (DO 2 +2 (DO 2 +2 and 2 +2 2 +2 2 +2 2 +2 Tour:/usr/people/tour:/bin/csh 2 +2 2 +2 2 +2 uid:/dev/null:/dev/null 2 +2 access:/dev/null:/dev/null 2 +2 uid:/dev/null:/dev/null 2 +2 2 +2 log:/: 2 +2 2 +2 Owner:/: 2 +2 log 2 +2 EMpNB8Zp56 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 BJnuQbAo 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 dcon 2 +2 dcon 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 nfP4/Wpvio/Rw 2 +2 0nWRTZsOMt. 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 * 2 +2 sorry 2 +2 * 2 +2 * 2 diff --git a/src/tool/awk/testdata/output/t.3 b/src/tool/awk/testdata/output/t.3 new file mode 100644 index 0000000..1d65481 --- /dev/null +++ b/src/tool/awk/testdata/output/t.3 @@ -0,0 +1,4 @@ + 5 evp + 4 ber + 4 men + 4 mitch diff --git a/src/tool/awk/testdata/output/t.3.x b/src/tool/awk/testdata/output/t.3.x new file mode 100644 index 0000000..07657ee --- /dev/null +++ b/src/tool/awk/testdata/output/t.3.x @@ -0,0 +1,500 @@ +17379 +1737.9 +173.79 +17.379 +1.7379 +16693 +1669.3 +166.93 +16.693 +1.6693 +16116 +1611.6 +161.16 +16.116 +1.6116 +15713 +1571.3 +157.13 +15.713 +1.5713 +11895 +1189.5 +118.95 +11.895 +1.1895 +10409 +1040.9 +104.09 +10.409 +1.0409 +10252 +1025.2 +102.52 +10.252 +1.0252 +9853 +985.3 +98.53 +9.853 +9748 +974.8 +97.48 +9.748 +9492 +949.2 +94.92 +9.492 +9190 +919 +91.9 +9.19 +8912 +891.2 +89.12 +8.912 +8895 +889.5 +88.95 +8.895 +8491 +849.1 +84.91 +8.491 +8372 +837.2 +83.72 +8.372 +8252 +825.2 +82.52 +8.252 +7450 +745 +74.5 +7.45 +7360 +736 +73.6 +7.36 +7273 +727.3 +72.73 +7.273 +7080 +708 +70.8 +7.08 +7063 +706.3 +70.63 +7.063 +6567 +656.7 +65.67 +6.567 +6462 +646.2 +64.62 +6.462 +6291 +629.1 +62.91 +6.291 +6211 +621.1 +62.11 +6.211 +5671 +567.1 +56.71 +5.671 +5373 +537.3 +53.73 +5.373 +5220 +522 +52.2 +5.22 +5167 +516.7 +51.67 +5.167 +5007 +500.7 +50.07 +5.007 +3963 +396.3 +39.63 +3.963 +3895 +389.5 +38.95 +3.895 +3796 +379.6 +37.96 +3.796 +3481 +348.1 +34.81 +3.481 +3200 +320 +32 +3.2 +2845 +284.5 +28.45 +2.845 +2774 +277.4 +27.74 +2.774 +2641 +264.1 +26.41 +2.641 +2566 +256.6 +25.66 +2.566 +2511 +251.1 +25.11 +2.511 +2479 +247.9 +24.79 +2.479 +2127 +212.7 +21.27 +2.127 +1989 +198.9 +19.89 +1.989 +1989 +198.9 +19.89 +1.989 +1933 +193.3 +19.33 +1.933 +1801 +180.1 +18.01 +1.801 +1590 +159 +15.9 +1.59 +1385 +138.5 +13.85 +1.385 +1370 +137 +13.7 +1.37 +1316 +131.6 +13.16 +1.316 +1205 +120.5 +12.05 +1.205 +1194 +119.4 +11.94 +1.194 +1153 +115.3 +11.53 +1.153 +1150 +115 +11.5 +1.15 +1031 +103.1 +10.31 +1.031 +1018 +101.8 +10.18 +1.018 +950 +95 +9.5 +931 +93.1 +9.31 +898 +89.8 +8.98 +865 +86.5 +8.65 +822 +82.2 +8.22 +803 +80.3 +8.03 +700 +70 +7 +624 +62.4 +6.24 +559 +55.9 +5.59 +541 +54.1 +5.41 +523 +52.3 +5.23 +495 +49.5 +4.95 +456 +45.6 +4.56 +414 +41.4 +4.14 +386 +38.6 +3.86 +375 +37.5 +3.75 +348 +34.8 +3.48 +344 +34.4 +3.44 +327 +32.7 +3.27 +288 +28.8 +2.88 +272 +27.2 +2.72 +263 +26.3 +2.63 +253 +25.3 +2.53 +251 +25.1 +2.51 +248 +24.8 +2.48 +224 +22.4 +2.24 +222 +22.2 +2.22 +213 +21.3 +2.13 +201 +20.1 +2.01 +184 +18.4 +1.84 +176 +17.6 +1.76 +166 +16.6 +1.66 +163 +16.3 +1.63 +144 +14.4 +1.44 +143 +14.3 +1.43 +123 +12.3 +1.23 +116 +11.6 +1.16 +95 +9.5 +80 +8 +79 +7.9 +79 +7.9 +64 +6.4 +62 +6.2 +56 +5.6 +54 +5.4 +47 +4.7 +45 +4.5 +45 +4.5 +44 +4.4 +43 +4.3 +43 +4.3 +37 +3.7 +32 +3.2 +31 +3.1 +29 +2.9 +25 +2.5 +22 +2.2 +15 +1.5 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User +3sysadm:*:0:0:System +4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System +10adm:*:5:3:Accounting +11lp:*:9:9:Print +1.1 +12auditor:*:11:0:Audit +1.2 +13dbadmin:*:12:0:Security +1.3 +14bootes:dcon:50:1:Tom +1.4 +15cdjuke:dcon:51:1:Tom +1.5 +16rfindd:*:66:1:Rfind +1.6 +17EZsetup:*:992:998:System +1.7 +18demos:*:993:997:Demonstration +1.8 +19tutor:*:994:997:Tutorial +1.9 +20tour:*:995:997:IRIS +2 +21guest:nfP4/Wpvio/Rw:998:998:Guest +2.1 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +22.4 +2.24 +23nobody:*:60001:60001:SVR4 +2.3 +24noaccess:*:60002:60002:uid +2.4 +25nobody:*:-2:-2:original +2.5 +26rje:*:8:8:RJE +2.6 +27changes:*:11:11:system +2.7 +28dist:sorry:9999:4:file +2.8 +29man:*:99:995:On-line +2.9 +30phoneca:*:991:991:phone +3 +1r +2r +3s +4d +5d +6b +7n +8u +9s +10 +11 +1.1 +12 +1.2 +13 +1.3 +14 +1.4 +15 +1.5 +16 +1.6 +17 +1.7 +18 +1.8 +19 +1.9 +20 +2 +21 +2.1 +22 +2.2 +23 +2.3 +24 +2.4 +25 +2.5 +26 +2.6 +27 +2.7 +28 +2.8 +29 +2.9 +30 +3 diff --git a/src/tool/awk/testdata/output/t.4 b/src/tool/awk/testdata/output/t.4 new file mode 100644 index 0000000..efd9ae1 --- /dev/null +++ b/src/tool/awk/testdata/output/t.4 @@ -0,0 +1,90 @@ +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 8895 dmr + 8491 cda + 8252 llc + 7450 mb + 6567 dict + 6462 lck + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3895 bbs + 3481 xchar + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 1590 tpc + 1385 cvw + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 950 gdb + 865 ggr + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 375 jj + 348 ravi + 344 drw + 253 tom + 251 sjb + 248 haight + 224 sharon + 184 god + 144 dan + 143 fox + 95 buz + 64 wsb + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 25 spm + 15 egb + 5 evp + 4 ber + 4 men + 4 mitch +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null diff --git a/src/tool/awk/testdata/output/t.4.x b/src/tool/awk/testdata/output/t.4.x new file mode 100644 index 0000000..022fd30 --- /dev/null +++ b/src/tool/awk/testdata/output/t.4.x @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 +16693 +16116 +15713 +11895 +10409 +10252 +9853 +9748 +9492 +9190 +8912 +8895 +8491 +8372 +8252 +7450 +7360 +7273 +7080 +7063 +6567 +6462 +6291 +6211 +5671 +5373 +5220 +5167 +5007 +3963 +3895 +3796 +3481 +3200 +2845 +2774 +2641 +2566 +2511 +2479 +2127 +1989 +1989 +1933 +1801 +1590 +1385 +1370 +1316 +1205 +1194 +1153 +1150 +1031 +1018 +950 +931 +898 +865 +822 +803 +700 +624 +559 +541 +523 +495 +456 +414 +386 +375 +348 +344 +327 +288 +272 +263 +253 +251 +248 +224 +222 +213 +201 +184 +176 +166 +163 +144 +143 +123 +116 +95 +80 +79 +79 +64 +62 +56 +54 +47 +45 +45 +44 +43 +43 +37 +32 +31 +29 +25 +22 +15 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User +3sysadm:*:0:0:System +4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System +10adm:*:5:3:Accounting +11lp:*:9:9:Print +12auditor:*:11:0:Audit +13dbadmin:*:12:0:Security +14bootes:dcon:50:1:Tom +15cdjuke:dcon:51:1:Tom +16rfindd:*:66:1:Rfind +17EZsetup:*:992:998:System +18demos:*:993:997:Demonstration +19tutor:*:994:997:Tutorial +20tour:*:995:997:IRIS +21guest:nfP4/Wpvio/Rw:998:998:Guest +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +23nobody:*:60001:60001:SVR4 +24noaccess:*:60002:60002:uid +25nobody:*:-2:-2:original +26rje:*:8:8:RJE +27changes:*:11:11:system +28dist:sorry:9999:4:file +29man:*:99:995:On-line +30phoneca:*:991:991:phone +1r +2r +3s +4d +5d +6b +7n +8u +9s +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 diff --git a/src/tool/awk/testdata/output/t.5.x b/src/tool/awk/testdata/output/t.5.x new file mode 100644 index 0000000..5a0b787 --- /dev/null +++ b/src/tool/awk/testdata/output/t.5.x @@ -0,0 +1,199 @@ +xxx xxx +xxx xxx +xxx xxx mel +xxx xxx bwk me +xxx xxx ken him someone else +xxx xxx srb +xxx xxx lem +xxx xxx scj +xxx xxx rhm +xxx xxx shen +xxx xxx a68 +xxx xxx sif +xxx xxx pjw +xxx xxx nls +xxx xxx dmr +xxx xxx cda +xxx xxx bs +xxx xxx llc +xxx xxx mb +xxx xxx ava +xxx xxx jrv +xxx xxx bin +xxx xxx greg +xxx xxx dict +xxx xxx lck +xxx xxx rje +xxx xxx lwf +xxx xxx dave +xxx xxx jhc +xxx xxx agf +xxx xxx doug +xxx xxx valerie +xxx xxx jca +xxx xxx bbs +xxx xxx moh +xxx xxx xchar +xxx xxx tbl +xxx xxx s +xxx xxx tgs +xxx xxx met +xxx xxx jck +xxx xxx port +xxx xxx sue +xxx xxx root +xxx xxx bsb +xxx xxx jeg +xxx xxx eag +xxx xxx pdj +xxx xxx tpc +xxx xxx cvw +xxx xxx rwm +xxx xxx avg +xxx xxx eg +xxx xxx jam +xxx xxx dl +xxx xxx lgm +xxx xxx cmb +xxx xxx jwr +xxx xxx gdb +xxx xxx marc +xxx xxx usg +xxx xxx ggr +xxx xxx daemon +xxx xxx mihalis +xxx xxx honey +xxx xxx tad +xxx xxx acs +xxx xxx uucp +xxx xxx raf +xxx xxx adh +xxx xxx kec +xxx xxx craig +xxx xxx donmac +xxx xxx jj +xxx xxx ravi +xxx xxx drw +xxx xxx stars +xxx xxx mrg +xxx xxx jcb +xxx xxx ralph +xxx xxx tom +xxx xxx sjb +xxx xxx haight +xxx xxx sharon +xxx xxx chuck +xxx xxx dsj +xxx xxx bill +xxx xxx god +xxx xxx sys +xxx xxx meh +xxx xxx jon +xxx xxx dan +xxx xxx fox +xxx xxx dale +xxx xxx kab +xxx xxx buz +xxx xxx asc +xxx xxx jas +xxx xxx trt +xxx xxx wsb +xxx xxx dwh +xxx xxx ktf +xxx xxx lr +xxx xxx dlc +xxx xxx dls +xxx xxx jwf +xxx xxx mash +xxx xxx ars +xxx xxx vgl +xxx xxx jfo +xxx xxx rab +xxx xxx pd +xxx xxx jns +xxx xxx spm +xxx xxx rob +xxx xxx egb +xxx xxx hm +xxx xxx mhb +xxx xxx aed +xxx xxx cpb +xxx xxx evp +xxx xxx ber +xxx xxx men +xxx xxx mitch +xxx xxx ast +xxx xxx jfr +xxx xxx lax +xxx xxx nel +xxx xxx blue +xxx xxx jfk +xxx xxx njas +xxx xxx 122sec +xxx xxx ddwar +xxx xxx gopi +xxx xxx jk +xxx xxx learn +xxx xxx low +xxx xxx nac +xxx xxx sidor +xxx xxx +xxx xxx running tcsh [cbm]:/:/bin/tcsh +xxx xxx V Administration:/usr/admin:/bin/sh +xxx xxx Diagnostics:/usr/diags:/bin/csh +xxx xxx +xxx xxx Tools Owner:/bin:/dev/null +xxx xxx +xxx xxx +xxx xxx Activity Owner:/usr/adm:/bin/sh +xxx xxx Files Owner:/usr/adm:/bin/sh +xxx xxx Spooler Owner:/var/spool/lp:/bin/sh +xxx xxx Activity Owner:/auditor:/bin/sh +xxx xxx Database Owner:/dbadmin:/bin/sh +xxx xxx Killian (DO NOT REMOVE):/tmp: +xxx xxx Killian (DO NOT REMOVE):/tmp: +xxx xxx Daemon and Fsdump:/var/rfindd:/bin/sh +xxx xxx Setup:/var/sysadmdesktop/EZsetup:/bin/csh +xxx xxx User:/usr/demos:/bin/csh +xxx xxx User:/usr/tutor:/bin/csh +xxx xxx Space Tour:/usr/people/tour:/bin/csh +xxx xxx Account:/usr/people/guest:/bin/csh +xxx xxx Account:/usr/people/4Dgifts:/bin/csh +xxx xxx nobody uid:/dev/null:/dev/null +xxx xxx no access:/dev/null:/dev/null +xxx xxx nobody uid:/dev/null:/dev/null +xxx xxx Owner:/usr/spool/rje: +xxx xxx change log:/: +xxx xxx distributions:/v/adm/dist:/v/bin/sh +xxx xxx Manual Owner:/: +xxx xxx call log [tom]:/v/adm/log:/v/bin/sh +xxx xxx oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +xxx xxx oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +xxx xxx ysadm * 0 0 System V Administration /usr/admin /bin/sh +xxx xxx iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +xxx xxx aemon * 1 1 daemons / /bin/sh +xxx xxx in * 2 2 System Tools Owner /bin /dev/null +xxx xxx uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +xxx xxx ucp * 3 5 UUCP.Admin /usr/lib/uucp +xxx xxx ys * 4 0 System Activity Owner /usr/adm /bin/sh +xxx xxx adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +xxx xxx lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +xxx xxx auditor * 11 0 Audit Activity Owner /auditor /bin/sh +xxx xxx dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +xxx xxx bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +xxx xxx cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +xxx xxx rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +xxx xxx EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +xxx xxx demos * 993 997 Demonstration User /usr/demos /bin/csh +xxx xxx tutor * 994 997 Tutorial User /usr/tutor /bin/csh +xxx xxx tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +xxx xxx guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +xxx xxx 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +xxx xxx nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +xxx xxx noaccess * 60002 60002 uid no access /dev/null /dev/null +xxx xxx nobody * -2 -2 original nobody uid /dev/null /dev/null +xxx xxx rje * 8 8 RJE Owner /usr/spool/rje +xxx xxx changes * 11 11 system change log / +xxx xxx dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +xxx xxx man * 99 995 On-line Manual Owner / +xxx xxx phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.6 b/src/tool/awk/testdata/output/t.6 new file mode 100644 index 0000000..6375174 --- /dev/null +++ b/src/tool/awk/testdata/output/t.6 @@ -0,0 +1,453 @@ +16693 bwk me + 16693 + 1669.3 + 166.93 + 16.693 + 1.6693 +15713 srb + 15713 + 1571.3 + 157.13 + 15.713 + 1.5713 +10409 scj + 10409 + 1040.9 + 104.09 + 10.409 + 1.0409 + 9748 a68 + 9748 + 974.8 + 97.48 + 9.748 + 8491 cda + 8491 + 849.1 + 84.91 + 8.491 + 8372 bs + 8372 + 837.2 + 83.72 + 8.372 + 8252 llc + 8252 + 825.2 + 82.52 + 8.252 + 7450 mb + 7450 + 745 + 74.5 + 7.45 + 7360 ava + 7360 + 736 + 73.6 + 7.36 + 7080 bin + 7080 + 708 + 70.8 + 7.08 + 6567 dict + 6567 + 656.7 + 65.67 + 6.567 + 6462 lck + 6462 + 646.2 + 64.62 + 6.462 + 5671 dave + 5671 + 567.1 + 56.71 + 5.671 + 5373 jhc + 5373 + 537.3 + 53.73 + 5.373 + 5220 agf + 5220 + 522 + 52.2 + 5.22 + 5007 valerie + 5007 + 500.7 + 50.07 + 5.007 + 3963 jca + 3963 + 396.3 + 39.63 + 3.963 + 3895 bbs + 3895 + 389.5 + 38.95 + 3.895 + 3481 xchar + 3481 + 348.1 + 34.81 + 3.481 + 3200 tbl + 3200 + 320 + 32 + 3.2 + 2566 jck + 2566 + 256.6 + 25.66 + 2.566 + 1989 bsb + 1989 + 198.9 + 19.89 + 1.989 + 1933 eag + 1933 + 193.3 + 19.33 + 1.933 + 1590 tpc + 1590 + 159 + 15.9 + 1.59 + 1385 cvw + 1385 + 138.5 + 13.85 + 1.385 + 1316 avg + 1316 + 131.6 + 13.16 + 1.316 + 1194 jam + 1194 + 119.4 + 11.94 + 1.194 + 1031 cmb + 1031 + 103.1 + 10.31 + 1.031 + 950 gdb + 950 + 95 + 9.5 + 931 marc + 931 + 93.1 + 9.31 + 822 daemon + 822 + 82.2 + 8.22 + 803 mihalis + 803 + 80.3 + 8.03 + 624 tad + 624 + 62.4 + 6.24 + 559 acs + 559 + 55.9 + 5.59 + 541 uucp + 541 + 54.1 + 5.41 + 523 raf + 523 + 52.3 + 5.23 + 495 adh + 495 + 49.5 + 4.95 + 456 kec + 456 + 45.6 + 4.56 + 414 craig + 414 + 41.4 + 4.14 + 386 donmac + 386 + 38.6 + 3.86 + 348 ravi + 348 + 34.8 + 3.48 + 327 stars + 327 + 32.7 + 3.27 + 272 jcb + 272 + 27.2 + 2.72 + 263 ralph + 263 + 26.3 + 2.63 + 251 sjb + 251 + 25.1 + 2.51 + 248 haight + 248 + 24.8 + 2.48 + 224 sharon + 224 + 22.4 + 2.24 + 222 chuck + 222 + 22.2 + 2.22 + 201 bill + 201 + 20.1 + 2.01 + 144 dan + 144 + 14.4 + 1.44 + 123 dale + 123 + 12.3 + 1.23 + 116 kab + 116 + 11.6 + 1.16 + 95 buz + 95 + 9.5 + 80 asc + 80 + 8 + 79 jas + 79 + 7.9 + 64 wsb + 64 + 6.4 + 47 dlc + 47 + 4.7 + 44 mash + 44 + 4.4 + 43 ars + 43 + 4.3 + 32 rab + 32 + 3.2 + 22 rob + 22 + 2.2 + 15 egb + 15 + 1.5 + 10 mhb + 10 + 1 + 6 aed + 6 + 6 cpb + 6 + 4 ber + 4 + 4 mitch + 4 + 3 ast + 3 + 3 lax + 3 + 2 blue + 2 + 2 njas + 2 + 1 122sec + 1 + 1 ddwar + 1 + 1 learn + 1 + 1 nac + 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + 2roottcsh:*:0:0:Super-User +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + 3sysadm:*:0:0:System +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + 4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh + 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null + 6bin:*:2:2:System +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + 9sys:*:4:0:System +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 10adm:*:5:3:Accounting + 1 +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 11lp:*:9:9:Print + 1.1 +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 12auditor:*:11:0:Audit + 1.2 +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 13dbadmin:*:12:0:Security + 1.3 +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 14bootes:dcon:50:1:Tom + 1.4 +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 15cdjuke:dcon:51:1:Tom + 1.5 +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 16rfindd:*:66:1:Rfind + 1.6 +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 17EZsetup:*:992:998:System + 1.7 +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 18demos:*:993:997:Demonstration + 1.8 +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 19tutor:*:994:997:Tutorial + 1.9 +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 20tour:*:995:997:IRIS + 2 +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 21guest:nfP4/Wpvio/Rw:998:998:Guest + 2.1 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + 22.4 + 2.24 +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 23nobody:*:60001:60001:SVR4 + 2.3 +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 24noaccess:*:60002:60002:uid + 2.4 +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 25nobody:*:-2:-2:original + 2.5 +27changes:*:11:11:system change log:/: + 27changes:*:11:11:system + 2.7 +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 28dist:sorry:9999:4:file + 2.8 +29man:*:99:995:On-line Manual Owner:/: + 29man:*:99:995:On-line + 2.9 +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 30phoneca:*:991:991:phone + 3 +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + 1r +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + 2r +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + 3s +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + 4d +5d aemon * 1 1 daemons / /bin/sh + 5d +6b in * 2 2 System Tools Owner /bin /dev/null + 6b +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + 7n +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + 8u +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + 9s +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 10 + 1 +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 11 + 1.1 +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 12 + 1.2 +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 13 + 1.3 +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 14 + 1.4 +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 15 + 1.5 +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 16 + 1.6 +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 17 + 1.7 +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 18 + 1.8 +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 19 + 1.9 +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 20 + 2 +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 21 + 2.1 +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 22 + 2.2 +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 23 + 2.3 +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 24 + 2.4 +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 25 + 2.5 +27 changes * 11 11 system change log / + 27 + 2.7 +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 28 + 2.8 +29 man * 99 995 On-line Manual Owner / + 29 + 2.9 +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 30 + 3 diff --git a/src/tool/awk/testdata/output/t.6.x b/src/tool/awk/testdata/output/t.6.x new file mode 100644 index 0000000..88ed997 --- /dev/null +++ b/src/tool/awk/testdata/output/t.6.x @@ -0,0 +1,199 @@ +1 /dev/rrp3: +0 +2 17379 mel +3 16693 bwk me +5 16116 ken him someone else +2 15713 srb +2 11895 lem +2 10409 scj +2 10252 rhm +2 9853 shen +2 9748 a68 +2 9492 sif +2 9190 pjw +2 8912 nls +2 8895 dmr +2 8491 cda +2 8372 bs +2 8252 llc +2 7450 mb +2 7360 ava +2 7273 jrv +2 7080 bin +2 7063 greg +2 6567 dict +2 6462 lck +2 6291 rje +2 6211 lwf +2 5671 dave +2 5373 jhc +2 5220 agf +2 5167 doug +2 5007 valerie +2 3963 jca +2 3895 bbs +2 3796 moh +2 3481 xchar +2 3200 tbl +2 2845 s +2 2774 tgs +2 2641 met +2 2566 jck +2 2511 port +2 2479 sue +2 2127 root +2 1989 bsb +2 1989 jeg +2 1933 eag +2 1801 pdj +2 1590 tpc +2 1385 cvw +2 1370 rwm +2 1316 avg +2 1205 eg +2 1194 jam +2 1153 dl +2 1150 lgm +2 1031 cmb +2 1018 jwr +2 950 gdb +2 931 marc +2 898 usg +2 865 ggr +2 822 daemon +2 803 mihalis +2 700 honey +2 624 tad +2 559 acs +2 541 uucp +2 523 raf +2 495 adh +2 456 kec +2 414 craig +2 386 donmac +2 375 jj +2 348 ravi +2 344 drw +2 327 stars +2 288 mrg +2 272 jcb +2 263 ralph +2 253 tom +2 251 sjb +2 248 haight +2 224 sharon +2 222 chuck +2 213 dsj +2 201 bill +2 184 god +2 176 sys +2 166 meh +2 163 jon +2 144 dan +2 143 fox +2 123 dale +2 116 kab +2 95 buz +2 80 asc +2 79 jas +2 79 trt +2 64 wsb +2 62 dwh +2 56 ktf +2 54 lr +2 47 dlc +2 45 dls +2 45 jwf +2 44 mash +2 43 ars +2 43 vgl +2 37 jfo +2 32 rab +2 31 pd +2 29 jns +2 25 spm +2 22 rob +2 15 egb +2 10 hm +2 10 mhb +2 6 aed +2 6 cpb +2 5 evp +2 4 ber +2 4 men +2 4 mitch +2 3 ast +2 3 jfr +2 3 lax +2 3 nel +2 2 blue +2 2 jfk +2 2 njas +2 1 122sec +2 1 ddwar +2 1 gopi +2 1 jk +2 1 learn +2 1 low +2 1 nac +2 1 sidor +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +4 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +2 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +1 5daemon:*:1:1:daemons:/:/bin/sh +3 6bin:*:2:2:System Tools Owner:/bin:/dev/null +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +3 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +3 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +3 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +3 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +3 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +5 14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +5 15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +4 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +2 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +2 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +2 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +3 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +2 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +2 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +3 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +3 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +3 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +2 26rje:*:8:8:RJE Owner:/usr/spool/rje: +3 27changes:*:11:11:system change log:/: +2 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +3 29man:*:99:995:On-line Manual Owner:/: +4 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +8 1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +11 2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +10 3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +9 4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +8 5d aemon * 1 1 daemons / /bin/sh +10 6b in * 2 2 System Tools Owner /bin /dev/null +8 7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7 8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +10 9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +10 12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +10 13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +11 14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +11 15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +11 16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +9 17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +9 18 demos * 993 997 Demonstration User /usr/demos /bin/csh +9 19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +10 20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +9 21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +9 22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +10 23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +10 24 noaccess * 60002 60002 uid no access /dev/null /dev/null +10 25 nobody * -2 -2 original nobody uid /dev/null /dev/null +8 26 rje * 8 8 RJE Owner /usr/spool/rje +9 27 changes * 11 11 system change log / +9 28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +9 29 man * 99 995 On-line Manual Owner / +11 30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.6a b/src/tool/awk/testdata/output/t.6a new file mode 100644 index 0000000..bc9e130 --- /dev/null +++ b/src/tool/awk/testdata/output/t.6a @@ -0,0 +1,453 @@ +16693 bwk me + 1669.3 + 166.93 + 16.693 + 1.6693 + 0.16693 +15713 srb + 1571.3 + 157.13 + 15.713 + 1.5713 + 0.15713 +10409 scj + 1040.9 + 104.09 + 10.409 + 1.0409 + 0.10409 + 9748 a68 + 974.8 + 97.48 + 9.748 + 0.9748 + 8491 cda + 849.1 + 84.91 + 8.491 + 0.8491 + 8372 bs + 837.2 + 83.72 + 8.372 + 0.8372 + 8252 llc + 825.2 + 82.52 + 8.252 + 0.8252 + 7450 mb + 745 + 74.5 + 7.45 + 0.745 + 7360 ava + 736 + 73.6 + 7.36 + 0.736 + 7080 bin + 708 + 70.8 + 7.08 + 0.708 + 6567 dict + 656.7 + 65.67 + 6.567 + 0.6567 + 6462 lck + 646.2 + 64.62 + 6.462 + 0.6462 + 5671 dave + 567.1 + 56.71 + 5.671 + 0.5671 + 5373 jhc + 537.3 + 53.73 + 5.373 + 0.5373 + 5220 agf + 522 + 52.2 + 5.22 + 0.522 + 5007 valerie + 500.7 + 50.07 + 5.007 + 0.5007 + 3963 jca + 396.3 + 39.63 + 3.963 + 0.3963 + 3895 bbs + 389.5 + 38.95 + 3.895 + 0.3895 + 3481 xchar + 348.1 + 34.81 + 3.481 + 0.3481 + 3200 tbl + 320 + 32 + 3.2 + 0.32 + 2566 jck + 256.6 + 25.66 + 2.566 + 0.2566 + 1989 bsb + 198.9 + 19.89 + 1.989 + 0.1989 + 1933 eag + 193.3 + 19.33 + 1.933 + 0.1933 + 1590 tpc + 159 + 15.9 + 1.59 + 0.159 + 1385 cvw + 138.5 + 13.85 + 1.385 + 0.1385 + 1316 avg + 131.6 + 13.16 + 1.316 + 0.1316 + 1194 jam + 119.4 + 11.94 + 1.194 + 0.1194 + 1031 cmb + 103.1 + 10.31 + 1.031 + 0.1031 + 950 gdb + 95 + 9.5 + 0.95 + 931 marc + 93.1 + 9.31 + 0.931 + 822 daemon + 82.2 + 8.22 + 0.822 + 803 mihalis + 80.3 + 8.03 + 0.803 + 624 tad + 62.4 + 6.24 + 0.624 + 559 acs + 55.9 + 5.59 + 0.559 + 541 uucp + 54.1 + 5.41 + 0.541 + 523 raf + 52.3 + 5.23 + 0.523 + 495 adh + 49.5 + 4.95 + 0.495 + 456 kec + 45.6 + 4.56 + 0.456 + 414 craig + 41.4 + 4.14 + 0.414 + 386 donmac + 38.6 + 3.86 + 0.386 + 348 ravi + 34.8 + 3.48 + 0.348 + 327 stars + 32.7 + 3.27 + 0.327 + 272 jcb + 27.2 + 2.72 + 0.272 + 263 ralph + 26.3 + 2.63 + 0.263 + 251 sjb + 25.1 + 2.51 + 0.251 + 248 haight + 24.8 + 2.48 + 0.248 + 224 sharon + 22.4 + 2.24 + 0.224 + 222 chuck + 22.2 + 2.22 + 0.222 + 201 bill + 20.1 + 2.01 + 0.201 + 144 dan + 14.4 + 1.44 + 0.144 + 123 dale + 12.3 + 1.23 + 0.123 + 116 kab + 11.6 + 1.16 + 0.116 + 95 buz + 9.5 + 0.95 + 80 asc + 8 + 0.8 + 79 jas + 7.9 + 0.79 + 64 wsb + 6.4 + 0.64 + 47 dlc + 4.7 + 0.47 + 44 mash + 4.4 + 0.44 + 43 ars + 4.3 + 0.43 + 32 rab + 3.2 + 0.32 + 22 rob + 2.2 + 0.22 + 15 egb + 1.5 + 0.15 + 10 mhb + 1 + 0.1 + 6 aed + 0.6 + 6 cpb + 0.6 + 4 ber + 0.4 + 4 mitch + 0.4 + 3 ast + 0.3 + 3 lax + 0.3 + 2 blue + 0.2 + 2 njas + 0.2 + 1 122sec + 0.1 + 1 ddwar + 0.1 + 1 learn + 0.1 + 1 nac + 0.1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 0.1 +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + 0.2 +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + 0.3 +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + 0.4 +5daemon:*:1:1:daemons:/:/bin/sh + 0.5 +6bin:*:2:2:System Tools Owner:/bin:/dev/null + 0.6 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 0.7 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 0.8 +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + 0.9 +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 1 + 0.1 +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 1.1 + 0.11 +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 1.2 + 0.12 +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 1.3 + 0.13 +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 1.4 + 0.14 +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 1.5 + 0.15 +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 1.6 + 0.16 +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 1.7 + 0.17 +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 1.8 + 0.18 +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 1.9 + 0.19 +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 2 + 0.2 +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 2.1 + 0.21 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 22.4 + 2.24 + 0.224 +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 2.3 + 0.23 +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 2.4 + 0.24 +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 2.5 + 0.25 +27changes:*:11:11:system change log:/: + 2.7 + 0.27 +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 2.8 + 0.28 +29man:*:99:995:On-line Manual Owner:/: + 2.9 + 0.29 +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 3 + 0.3 +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + 0.1 +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + 0.2 +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + 0.3 +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + 0.4 +5d aemon * 1 1 daemons / /bin/sh + 0.5 +6b in * 2 2 System Tools Owner /bin /dev/null + 0.6 +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + 0.7 +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + 0.8 +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + 0.9 +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 1 + 0.1 +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 1.1 + 0.11 +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 1.2 + 0.12 +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 1.3 + 0.13 +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 1.4 + 0.14 +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 1.5 + 0.15 +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 1.6 + 0.16 +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 1.7 + 0.17 +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 1.8 + 0.18 +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 1.9 + 0.19 +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 2 + 0.2 +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 2.1 + 0.21 +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 2.2 + 0.22 +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 2.3 + 0.23 +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 2.4 + 0.24 +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 2.5 + 0.25 +27 changes * 11 11 system change log / + 2.7 + 0.27 +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 2.8 + 0.28 +29 man * 99 995 On-line Manual Owner / + 2.9 + 0.29 +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 3 + 0.3 diff --git a/src/tool/awk/testdata/output/t.6b b/src/tool/awk/testdata/output/t.6b new file mode 100644 index 0000000..fd3df76 --- /dev/null +++ b/src/tool/awk/testdata/output/t.6b @@ -0,0 +1,320 @@ +16693 bwk me + 1669.3 + 166.93 + 16.693 + 1.6693 +15713 srb + 1571.3 + 157.13 + 15.713 + 1.5713 +10409 scj + 1040.9 + 104.09 + 10.409 + 1.0409 + 9748 a68 + 974.8 + 97.48 + 9.748 + 8491 cda + 849.1 + 84.91 + 8.491 + 8372 bs + 837.2 + 83.72 + 8.372 + 8252 llc + 825.2 + 82.52 + 8.252 + 7450 mb + 745 + 74.5 + 7.45 + 7360 ava + 736 + 73.6 + 7.36 + 7080 bin + 708 + 70.8 + 7.08 + 6567 dict + 656.7 + 65.67 + 6.567 + 6462 lck + 646.2 + 64.62 + 6.462 + 5671 dave + 567.1 + 56.71 + 5.671 + 5373 jhc + 537.3 + 53.73 + 5.373 + 5220 agf + 522 + 52.2 + 5.22 + 5007 valerie + 500.7 + 50.07 + 5.007 + 3963 jca + 396.3 + 39.63 + 3.963 + 3895 bbs + 389.5 + 38.95 + 3.895 + 3481 xchar + 348.1 + 34.81 + 3.481 + 3200 tbl + 320 + 32 + 3.2 + 2566 jck + 256.6 + 25.66 + 2.566 + 1989 bsb + 198.9 + 19.89 + 1.989 + 1933 eag + 193.3 + 19.33 + 1.933 + 1590 tpc + 159 + 15.9 + 1.59 + 1385 cvw + 138.5 + 13.85 + 1.385 + 1316 avg + 131.6 + 13.16 + 1.316 + 1194 jam + 119.4 + 11.94 + 1.194 + 1031 cmb + 103.1 + 10.31 + 1.031 + 950 gdb + 95 + 9.5 + 931 marc + 93.1 + 9.31 + 822 daemon + 82.2 + 8.22 + 803 mihalis + 80.3 + 8.03 + 624 tad + 62.4 + 6.24 + 559 acs + 55.9 + 5.59 + 541 uucp + 54.1 + 5.41 + 523 raf + 52.3 + 5.23 + 495 adh + 49.5 + 4.95 + 456 kec + 45.6 + 4.56 + 414 craig + 41.4 + 4.14 + 386 donmac + 38.6 + 3.86 + 348 ravi + 34.8 + 3.48 + 327 stars + 32.7 + 3.27 + 272 jcb + 27.2 + 2.72 + 263 ralph + 26.3 + 2.63 + 251 sjb + 25.1 + 2.51 + 248 haight + 24.8 + 2.48 + 224 sharon + 22.4 + 2.24 + 222 chuck + 22.2 + 2.22 + 201 bill + 20.1 + 2.01 + 144 dan + 14.4 + 1.44 + 123 dale + 12.3 + 1.23 + 116 kab + 11.6 + 1.16 + 95 buz + 9.5 + 80 asc + 8 + 79 jas + 7.9 + 64 wsb + 6.4 + 47 dlc + 4.7 + 44 mash + 4.4 + 43 ars + 4.3 + 32 rab + 3.2 + 22 rob + 2.2 + 15 egb + 1.5 + 10 mhb + 1 + 6 aed + 6 cpb + 4 ber + 4 mitch + 3 ast + 3 lax + 2 blue + 2 njas + 1 122sec + 1 ddwar + 1 learn + 1 nac +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 1 +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 1.1 +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 1.2 +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 1.3 +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 1.4 +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 1.5 +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 1.6 +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 1.7 +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 1.8 +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 1.9 +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 2 +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 2.1 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 22.4 + 2.24 +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 2.3 +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 2.4 +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 2.5 +27changes:*:11:11:system change log:/: + 2.7 +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 2.8 +29man:*:99:995:On-line Manual Owner:/: + 2.9 +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 3 +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 1 +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 1.1 +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 1.2 +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 1.3 +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 1.4 +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 1.5 +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 1.6 +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 1.7 +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 1.8 +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 1.9 +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 2 +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 2.1 +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 2.2 +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 2.3 +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 2.4 +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 2.5 +27 changes * 11 11 system change log / + 2.7 +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 2.8 +29 man * 99 995 On-line Manual Owner / + 2.9 +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 3 diff --git a/src/tool/awk/testdata/output/t.8.x b/src/tool/awk/testdata/output/t.8.x new file mode 100644 index 0000000..3a51ee2 --- /dev/null +++ b/src/tool/awk/testdata/output/t.8.x @@ -0,0 +1,199 @@ +/dev/rrp3: /dev/rrp3: + +17379 17379 +16693 16693 me +16116 16116 him someone else +15713 15713 +11895 11895 +10409 10409 +10252 10252 +9853 9853 +9748 9748 +9492 9492 +9190 9190 +8912 8912 +8895 8895 +8491 8491 +8372 8372 +8252 8252 +7450 7450 +7360 7360 +7273 7273 +7080 7080 +7063 7063 +6567 6567 +6462 6462 +6291 6291 +6211 6211 +5671 5671 +5373 5373 +5220 5220 +5167 5167 +5007 5007 +3963 3963 +3895 3895 +3796 3796 +3481 3481 +3200 3200 +2845 2845 +2774 2774 +2641 2641 +2566 2566 +2511 2511 +2479 2479 +2127 2127 +1989 1989 +1989 1989 +1933 1933 +1801 1801 +1590 1590 +1385 1385 +1370 1370 +1316 1316 +1205 1205 +1194 1194 +1153 1153 +1150 1150 +1031 1031 +1018 1018 +950 950 +931 931 +898 898 +865 865 +822 822 +803 803 +700 700 +624 624 +559 559 +541 541 +523 523 +495 495 +456 456 +414 414 +386 386 +375 375 +348 348 +344 344 +327 327 +288 288 +272 272 +263 263 +253 253 +251 251 +248 248 +224 224 +222 222 +213 213 +201 201 +184 184 +176 176 +166 166 +163 163 +144 144 +143 143 +123 123 +116 116 +95 95 +80 80 +79 79 +79 79 +64 64 +62 62 +56 56 +54 54 +47 47 +45 45 +45 45 +44 44 +43 43 +43 43 +37 37 +32 32 +31 31 +29 29 +25 25 +22 22 +15 15 +10 10 +10 10 +6 6 +6 6 +5 5 +4 4 +4 4 +4 4 +3 3 +3 3 +3 3 +3 3 +2 2 +2 2 +2 2 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User 2roottcsh:*:0:0:Super-User tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System 3sysadm:*:0:0:System Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware 4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System 6bin:*:2:2:System Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System 9sys:*:4:0:System Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting 10adm:*:5:3:Accounting Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print 11lp:*:9:9:Print Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit 12auditor:*:11:0:Audit Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security 13dbadmin:*:12:0:Security Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom 14bootes:dcon:50:1:Tom (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom 15cdjuke:dcon:51:1:Tom (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind 16rfindd:*:66:1:Rfind and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System 17EZsetup:*:992:998:System +18demos:*:993:997:Demonstration 18demos:*:993:997:Demonstration +19tutor:*:994:997:Tutorial 19tutor:*:994:997:Tutorial +20tour:*:995:997:IRIS 20tour:*:995:997:IRIS Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest 21guest:nfP4/Wpvio/Rw:998:998:Guest +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +23nobody:*:60001:60001:SVR4 23nobody:*:60001:60001:SVR4 uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid 24noaccess:*:60002:60002:uid access:/dev/null:/dev/null +25nobody:*:-2:-2:original 25nobody:*:-2:-2:original uid:/dev/null:/dev/null +26rje:*:8:8:RJE 26rje:*:8:8:RJE +27changes:*:11:11:system 27changes:*:11:11:system log:/: +28dist:sorry:9999:4:file 28dist:sorry:9999:4:file +29man:*:99:995:On-line 29man:*:99:995:On-line Owner:/: +30phoneca:*:991:991:phone 30phoneca:*:991:991:phone log [tom]:/v/adm/log:/v/bin/sh +1r 1r EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r 2r * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s 3s * 0 0 System V Administration /usr/admin /bin/sh +4d 4d * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d 5d * 1 1 daemons / /bin/sh +6b 6b * 2 2 System Tools Owner /bin /dev/null +7n 7n BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u 8u * 3 5 UUCP.Admin /usr/lib/uucp +9s 9s * 4 0 System Activity Owner /usr/adm /bin/sh +10 10 * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 11 * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 12 * 11 0 Audit Activity Owner /auditor /bin/sh +13 13 * 12 0 Security Database Owner /dbadmin /bin/sh +14 14 dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 15 dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 16 * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 17 * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 18 * 993 997 Demonstration User /usr/demos /bin/csh +19 19 * 994 997 Tutorial User /usr/tutor /bin/csh +20 20 * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 21 nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 22 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 23 * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 24 * 60002 60002 uid no access /dev/null /dev/null +25 25 * -2 -2 original nobody uid /dev/null /dev/null +26 26 * 8 8 RJE Owner /usr/spool/rje +27 27 * 11 11 system change log / +28 28 sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 29 * 99 995 On-line Manual Owner / +30 30 * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.8.y b/src/tool/awk/testdata/output/t.8.y new file mode 100644 index 0000000..97cc521 --- /dev/null +++ b/src/tool/awk/testdata/output/t.8.y @@ -0,0 +1,199 @@ + + +mel mel +bwk bwk me +ken ken him someone else +srb srb +lem lem +scj scj +rhm rhm +shen shen +a68 a68 +sif sif +pjw pjw +nls nls +dmr dmr +cda cda +bs bs +llc llc +mb mb +ava ava +jrv jrv +bin bin +greg greg +dict dict +lck lck +rje rje +lwf lwf +dave dave +jhc jhc +agf agf +doug doug +valerie valerie +jca jca +bbs bbs +moh moh +xchar xchar +tbl tbl +s s +tgs tgs +met met +jck jck +port port +sue sue +root root +bsb bsb +jeg jeg +eag eag +pdj pdj +tpc tpc +cvw cvw +rwm rwm +avg avg +eg eg +jam jam +dl dl +lgm lgm +cmb cmb +jwr jwr +gdb gdb +marc marc +usg usg +ggr ggr +daemon daemon +mihalis mihalis +honey honey +tad tad +acs acs +uucp uucp +raf raf +adh adh +kec kec +craig craig +donmac donmac +jj jj +ravi ravi +drw drw +stars stars +mrg mrg +jcb jcb +ralph ralph +tom tom +sjb sjb +haight haight +sharon sharon +chuck chuck +dsj dsj +bill bill +god god +sys sys +meh meh +jon jon +dan dan +fox fox +dale dale +kab kab +buz buz +asc asc +jas jas +trt trt +wsb wsb +dwh dwh +ktf ktf +lr lr +dlc dlc +dls dls +jwf jwf +mash mash +ars ars +vgl vgl +jfo jfo +rab rab +pd pd +jns jns +spm spm +rob rob +egb egb +hm hm +mhb mhb +aed aed +cpb cpb +evp evp +ber ber +men men +mitch mitch +ast ast +jfr jfr +lax lax +nel nel +blue blue +jfk jfk +njas njas +122sec 122sec +ddwar ddwar +gopi gopi +jk jk +learn learn +low low +nac nac +sidor sidor + +running running tcsh [cbm]:/:/bin/tcsh +V V Administration:/usr/admin:/bin/sh +Diagnostics:/usr/diags:/bin/csh Diagnostics:/usr/diags:/bin/csh + +Tools Tools Owner:/bin:/dev/null + + +Activity Activity Owner:/usr/adm:/bin/sh +Files Files Owner:/usr/adm:/bin/sh +Spooler Spooler Owner:/var/spool/lp:/bin/sh +Activity Activity Owner:/auditor:/bin/sh +Database Database Owner:/dbadmin:/bin/sh +Killian Killian (DO NOT REMOVE):/tmp: +Killian Killian (DO NOT REMOVE):/tmp: +Daemon Daemon and Fsdump:/var/rfindd:/bin/sh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh Setup:/var/sysadmdesktop/EZsetup:/bin/csh +User:/usr/demos:/bin/csh User:/usr/demos:/bin/csh +User:/usr/tutor:/bin/csh User:/usr/tutor:/bin/csh +Space Space Tour:/usr/people/tour:/bin/csh +Account:/usr/people/guest:/bin/csh Account:/usr/people/guest:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh Account:/usr/people/4Dgifts:/bin/csh +nobody nobody uid:/dev/null:/dev/null +no no access:/dev/null:/dev/null +nobody nobody uid:/dev/null:/dev/null +Owner:/usr/spool/rje: Owner:/usr/spool/rje: +change change log:/: +distributions:/v/adm/dist:/v/bin/sh distributions:/v/adm/dist:/v/bin/sh +Manual Manual Owner:/: +call call log [tom]:/v/adm/log:/v/bin/sh +oot oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +oottcsh oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +ysadm ysadm * 0 0 System V Administration /usr/admin /bin/sh +iag iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +aemon aemon * 1 1 daemons / /bin/sh +in in * 2 2 System Tools Owner /bin /dev/null +uucp uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +ucp ucp * 3 5 UUCP.Admin /usr/lib/uucp +ys ys * 4 0 System Activity Owner /usr/adm /bin/sh +adm adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +lp lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +auditor auditor * 11 0 Audit Activity Owner /auditor /bin/sh +dbadmin dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +bootes bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +cdjuke cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +rfindd rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +EZsetup EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +demos demos * 993 997 Demonstration User /usr/demos /bin/csh +tutor tutor * 994 997 Tutorial User /usr/tutor /bin/csh +tour tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +guest guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +4Dgifts 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +nobody nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +noaccess noaccess * 60002 60002 uid no access /dev/null /dev/null +nobody nobody * -2 -2 original nobody uid /dev/null /dev/null +rje rje * 8 8 RJE Owner /usr/spool/rje +changes changes * 11 11 system change log / +dist dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +man man * 99 995 On-line Manual Owner / +phoneca phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.NF b/src/tool/awk/testdata/output/t.NF new file mode 100644 index 0000000..4480cd9 --- /dev/null +++ b/src/tool/awk/testdata/output/t.NF @@ -0,0 +1,995 @@ +1 +2 +/dev/rrp3:| +5 +/dev/rrp3:||||five +0 +2 +| +5 +||||five +2 +2 +17379|mel +5 +17379|mel|||five +3 +2 +16693|bwk +5 +16693|bwk|||five +5 +2 +16116|ken +5 +16116|ken|||five +2 +2 +15713|srb +5 +15713|srb|||five +2 +2 +11895|lem +5 +11895|lem|||five +2 +2 +10409|scj +5 +10409|scj|||five +2 +2 +10252|rhm +5 +10252|rhm|||five +2 +2 +9853|shen +5 +9853|shen|||five +2 +2 +9748|a68 +5 +9748|a68|||five +2 +2 +9492|sif +5 +9492|sif|||five +2 +2 +9190|pjw +5 +9190|pjw|||five +2 +2 +8912|nls +5 +8912|nls|||five +2 +2 +8895|dmr +5 +8895|dmr|||five +2 +2 +8491|cda +5 +8491|cda|||five +2 +2 +8372|bs +5 +8372|bs|||five +2 +2 +8252|llc +5 +8252|llc|||five +2 +2 +7450|mb +5 +7450|mb|||five +2 +2 +7360|ava +5 +7360|ava|||five +2 +2 +7273|jrv +5 +7273|jrv|||five +2 +2 +7080|bin +5 +7080|bin|||five +2 +2 +7063|greg +5 +7063|greg|||five +2 +2 +6567|dict +5 +6567|dict|||five +2 +2 +6462|lck +5 +6462|lck|||five +2 +2 +6291|rje +5 +6291|rje|||five +2 +2 +6211|lwf +5 +6211|lwf|||five +2 +2 +5671|dave +5 +5671|dave|||five +2 +2 +5373|jhc +5 +5373|jhc|||five +2 +2 +5220|agf +5 +5220|agf|||five +2 +2 +5167|doug +5 +5167|doug|||five +2 +2 +5007|valerie +5 +5007|valerie|||five +2 +2 +3963|jca +5 +3963|jca|||five +2 +2 +3895|bbs +5 +3895|bbs|||five +2 +2 +3796|moh +5 +3796|moh|||five +2 +2 +3481|xchar +5 +3481|xchar|||five +2 +2 +3200|tbl +5 +3200|tbl|||five +2 +2 +2845|s +5 +2845|s|||five +2 +2 +2774|tgs +5 +2774|tgs|||five +2 +2 +2641|met +5 +2641|met|||five +2 +2 +2566|jck +5 +2566|jck|||five +2 +2 +2511|port +5 +2511|port|||five +2 +2 +2479|sue +5 +2479|sue|||five +2 +2 +2127|root +5 +2127|root|||five +2 +2 +1989|bsb +5 +1989|bsb|||five +2 +2 +1989|jeg +5 +1989|jeg|||five +2 +2 +1933|eag +5 +1933|eag|||five +2 +2 +1801|pdj +5 +1801|pdj|||five +2 +2 +1590|tpc +5 +1590|tpc|||five +2 +2 +1385|cvw +5 +1385|cvw|||five +2 +2 +1370|rwm +5 +1370|rwm|||five +2 +2 +1316|avg +5 +1316|avg|||five +2 +2 +1205|eg +5 +1205|eg|||five +2 +2 +1194|jam +5 +1194|jam|||five +2 +2 +1153|dl +5 +1153|dl|||five +2 +2 +1150|lgm +5 +1150|lgm|||five +2 +2 +1031|cmb +5 +1031|cmb|||five +2 +2 +1018|jwr +5 +1018|jwr|||five +2 +2 +950|gdb +5 +950|gdb|||five +2 +2 +931|marc +5 +931|marc|||five +2 +2 +898|usg +5 +898|usg|||five +2 +2 +865|ggr +5 +865|ggr|||five +2 +2 +822|daemon +5 +822|daemon|||five +2 +2 +803|mihalis +5 +803|mihalis|||five +2 +2 +700|honey +5 +700|honey|||five +2 +2 +624|tad +5 +624|tad|||five +2 +2 +559|acs +5 +559|acs|||five +2 +2 +541|uucp +5 +541|uucp|||five +2 +2 +523|raf +5 +523|raf|||five +2 +2 +495|adh +5 +495|adh|||five +2 +2 +456|kec +5 +456|kec|||five +2 +2 +414|craig +5 +414|craig|||five +2 +2 +386|donmac +5 +386|donmac|||five +2 +2 +375|jj +5 +375|jj|||five +2 +2 +348|ravi +5 +348|ravi|||five +2 +2 +344|drw +5 +344|drw|||five +2 +2 +327|stars +5 +327|stars|||five +2 +2 +288|mrg +5 +288|mrg|||five +2 +2 +272|jcb +5 +272|jcb|||five +2 +2 +263|ralph +5 +263|ralph|||five +2 +2 +253|tom +5 +253|tom|||five +2 +2 +251|sjb +5 +251|sjb|||five +2 +2 +248|haight +5 +248|haight|||five +2 +2 +224|sharon +5 +224|sharon|||five +2 +2 +222|chuck +5 +222|chuck|||five +2 +2 +213|dsj +5 +213|dsj|||five +2 +2 +201|bill +5 +201|bill|||five +2 +2 +184|god +5 +184|god|||five +2 +2 +176|sys +5 +176|sys|||five +2 +2 +166|meh +5 +166|meh|||five +2 +2 +163|jon +5 +163|jon|||five +2 +2 +144|dan +5 +144|dan|||five +2 +2 +143|fox +5 +143|fox|||five +2 +2 +123|dale +5 +123|dale|||five +2 +2 +116|kab +5 +116|kab|||five +2 +2 +95|buz +5 +95|buz|||five +2 +2 +80|asc +5 +80|asc|||five +2 +2 +79|jas +5 +79|jas|||five +2 +2 +79|trt +5 +79|trt|||five +2 +2 +64|wsb +5 +64|wsb|||five +2 +2 +62|dwh +5 +62|dwh|||five +2 +2 +56|ktf +5 +56|ktf|||five +2 +2 +54|lr +5 +54|lr|||five +2 +2 +47|dlc +5 +47|dlc|||five +2 +2 +45|dls +5 +45|dls|||five +2 +2 +45|jwf +5 +45|jwf|||five +2 +2 +44|mash +5 +44|mash|||five +2 +2 +43|ars +5 +43|ars|||five +2 +2 +43|vgl +5 +43|vgl|||five +2 +2 +37|jfo +5 +37|jfo|||five +2 +2 +32|rab +5 +32|rab|||five +2 +2 +31|pd +5 +31|pd|||five +2 +2 +29|jns +5 +29|jns|||five +2 +2 +25|spm +5 +25|spm|||five +2 +2 +22|rob +5 +22|rob|||five +2 +2 +15|egb +5 +15|egb|||five +2 +2 +10|hm +5 +10|hm|||five +2 +2 +10|mhb +5 +10|mhb|||five +2 +2 +6|aed +5 +6|aed|||five +2 +2 +6|cpb +5 +6|cpb|||five +2 +2 +5|evp +5 +5|evp|||five +2 +2 +4|ber +5 +4|ber|||five +2 +2 +4|men +5 +4|men|||five +2 +2 +4|mitch +5 +4|mitch|||five +2 +2 +3|ast +5 +3|ast|||five +2 +2 +3|jfr +5 +3|jfr|||five +2 +2 +3|lax +5 +3|lax|||five +2 +2 +3|nel +5 +3|nel|||five +2 +2 +2|blue +5 +2|blue|||five +2 +2 +2|jfk +5 +2|jfk|||five +2 +2 +2|njas +5 +2|njas|||five +2 +2 +1|122sec +5 +1|122sec|||five +2 +2 +1|ddwar +5 +1|ddwar|||five +2 +2 +1|gopi +5 +1|gopi|||five +2 +2 +1|jk +5 +1|jk|||five +2 +2 +1|learn +5 +1|learn|||five +2 +2 +1|low +5 +1|low|||five +2 +2 +1|nac +5 +1|nac|||five +2 +2 +1|sidor +5 +1|sidor|||five +1 +2 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh| +5 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh||||five +4 +2 +2roottcsh:*:0:0:Super-User|running +5 +2roottcsh:*:0:0:Super-User|running|||five +3 +2 +3sysadm:*:0:0:System|V +5 +3sysadm:*:0:0:System|V|||five +2 +2 +4diag:*:0:996:Hardware|Diagnostics:/usr/diags:/bin/csh +5 +4diag:*:0:996:Hardware|Diagnostics:/usr/diags:/bin/csh|||five +1 +2 +5daemon:*:1:1:daemons:/:/bin/sh| +5 +5daemon:*:1:1:daemons:/:/bin/sh||||five +3 +2 +6bin:*:2:2:System|Tools +5 +6bin:*:2:2:System|Tools|||five +1 +2 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico| +5 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico||||five +1 +2 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:| +5 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:||||five +3 +2 +9sys:*:4:0:System|Activity +5 +9sys:*:4:0:System|Activity|||five +3 +2 +10adm:*:5:3:Accounting|Files +5 +10adm:*:5:3:Accounting|Files|||five +3 +2 +11lp:*:9:9:Print|Spooler +5 +11lp:*:9:9:Print|Spooler|||five +3 +2 +12auditor:*:11:0:Audit|Activity +5 +12auditor:*:11:0:Audit|Activity|||five +3 +2 +13dbadmin:*:12:0:Security|Database +5 +13dbadmin:*:12:0:Security|Database|||five +5 +2 +14bootes:dcon:50:1:Tom|Killian +5 +14bootes:dcon:50:1:Tom|Killian|||five +5 +2 +15cdjuke:dcon:51:1:Tom|Killian +5 +15cdjuke:dcon:51:1:Tom|Killian|||five +4 +2 +16rfindd:*:66:1:Rfind|Daemon +5 +16rfindd:*:66:1:Rfind|Daemon|||five +2 +2 +17EZsetup:*:992:998:System|Setup:/var/sysadmdesktop/EZsetup:/bin/csh +5 +17EZsetup:*:992:998:System|Setup:/var/sysadmdesktop/EZsetup:/bin/csh|||five +2 +2 +18demos:*:993:997:Demonstration|User:/usr/demos:/bin/csh +5 +18demos:*:993:997:Demonstration|User:/usr/demos:/bin/csh|||five +2 +2 +19tutor:*:994:997:Tutorial|User:/usr/tutor:/bin/csh +5 +19tutor:*:994:997:Tutorial|User:/usr/tutor:/bin/csh|||five +3 +2 +20tour:*:995:997:IRIS|Space +5 +20tour:*:995:997:IRIS|Space|||five +2 +2 +21guest:nfP4/Wpvio/Rw:998:998:Guest|Account:/usr/people/guest:/bin/csh +5 +21guest:nfP4/Wpvio/Rw:998:998:Guest|Account:/usr/people/guest:/bin/csh|||five +2 +2 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts|Account:/usr/people/4Dgifts:/bin/csh +5 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts|Account:/usr/people/4Dgifts:/bin/csh|||five +3 +2 +23nobody:*:60001:60001:SVR4|nobody +5 +23nobody:*:60001:60001:SVR4|nobody|||five +3 +2 +24noaccess:*:60002:60002:uid|no +5 +24noaccess:*:60002:60002:uid|no|||five +3 +2 +25nobody:*:-2:-2:original|nobody +5 +25nobody:*:-2:-2:original|nobody|||five +2 +2 +26rje:*:8:8:RJE|Owner:/usr/spool/rje: +5 +26rje:*:8:8:RJE|Owner:/usr/spool/rje:|||five +3 +2 +27changes:*:11:11:system|change +5 +27changes:*:11:11:system|change|||five +2 +2 +28dist:sorry:9999:4:file|distributions:/v/adm/dist:/v/bin/sh +5 +28dist:sorry:9999:4:file|distributions:/v/adm/dist:/v/bin/sh|||five +3 +2 +29man:*:99:995:On-line|Manual +5 +29man:*:99:995:On-line|Manual|||five +4 +2 +30phoneca:*:991:991:phone|call +5 +30phoneca:*:991:991:phone|call|||five +8 +2 +1r|oot +5 +1r|oot|||five +11 +2 +2r|oottcsh +5 +2r|oottcsh|||five +10 +2 +3s|ysadm +5 +3s|ysadm|||five +9 +2 +4d|iag +5 +4d|iag|||five +8 +2 +5d|aemon +5 +5d|aemon|||five +10 +2 +6b|in +5 +6b|in|||five +8 +2 +7n|uucp +5 +7n|uucp|||five +7 +2 +8u|ucp +5 +8u|ucp|||five +10 +2 +9s|ys +5 +9s|ys|||five +10 +2 +10|adm +5 +10|adm|||five +10 +2 +11|lp +5 +11|lp|||five +10 +2 +12|auditor +5 +12|auditor|||five +10 +2 +13|dbadmin +5 +13|dbadmin|||five +11 +2 +14|bootes +5 +14|bootes|||five +11 +2 +15|cdjuke +5 +15|cdjuke|||five +11 +2 +16|rfindd +5 +16|rfindd|||five +9 +2 +17|EZsetup +5 +17|EZsetup|||five +9 +2 +18|demos +5 +18|demos|||five +9 +2 +19|tutor +5 +19|tutor|||five +10 +2 +20|tour +5 +20|tour|||five +9 +2 +21|guest +5 +21|guest|||five +9 +2 +22|4Dgifts +5 +22|4Dgifts|||five +10 +2 +23|nobody +5 +23|nobody|||five +10 +2 +24|noaccess +5 +24|noaccess|||five +10 +2 +25|nobody +5 +25|nobody|||five +8 +2 +26|rje +5 +26|rje|||five +9 +2 +27|changes +5 +27|changes|||five +9 +2 +28|dist +5 +28|dist|||five +9 +2 +29|man +5 +29|man|||five +11 +2 +30|phoneca +5 +30|phoneca|||five diff --git a/src/tool/awk/testdata/output/t.a b/src/tool/awk/testdata/output/t.a new file mode 100644 index 0000000..3def133 --- /dev/null +++ b/src/tool/awk/testdata/output/t.a @@ -0,0 +1,187 @@ + 21 +mel 17379 +bwk 16693 +ken 16116 +srb 15713 +lem 11895 +scj 10409 +rhm 10252 +shen 9853 +a68 9748 +sif 9492 +pjw 9190 +nls 8912 +dmr 8895 +cda 8491 +bs 8372 +llc 8252 +mb 7450 +ava 7360 +jrv 7273 +bin 7080 +greg 7063 +dict 6567 +lck 6462 +rje 6317 +lwf 6211 +dave 5671 +jhc 5373 +agf 5220 +doug 5167 +valerie 5007 +jca 3963 +bbs 3895 +moh 3796 +xchar 3481 +tbl 3200 +s 2845 +tgs 2774 +met 2641 +jck 2566 +port 2511 +sue 2479 +root 2127 +bsb 1989 +jeg 1989 +eag 1933 +pdj 1801 +tpc 1590 +cvw 1385 +rwm 1370 +avg 1316 +eg 1205 +jam 1194 +dl 1153 +lgm 1150 +cmb 1031 +jwr 1018 +gdb 950 +marc 931 +usg 898 +ggr 865 +daemon 822 +mihalis 803 +honey 700 +tad 624 +acs 559 +uucp 548 +raf 523 +adh 495 +kec 456 +craig 414 +donmac 386 +jj 375 +ravi 348 +drw 344 +stars 327 +mrg 288 +jcb 272 +ralph 263 +tom 253 +sjb 251 +haight 248 +sharon 224 +chuck 222 +dsj 213 +bill 201 +god 184 +sys 176 +meh 166 +jon 163 +dan 144 +fox 143 +dale 123 +kab 116 +buz 95 +asc 80 +jas 79 +trt 79 +wsb 64 +dwh 62 +ktf 56 +lr 54 +dlc 47 +dls 45 +jwf 45 +mash 44 +ars 43 +vgl 43 +jfo 37 +rab 32 +pd 31 +jns 29 +spm 25 +rob 22 +egb 15 +hm 10 +mhb 10 +aed 6 +cpb 6 +evp 5 +ber 4 +men 4 +mitch 4 +ast 3 +jfr 3 +lax 3 +nel 3 +blue 2 +jfk 2 +njas 2 +122sec 1 +ddwar 1 +gopi 1 +jk 1 +learn 1 +low 1 +nac 1 +sidor 1 +running 2 +V 3 +Diagnostics:/usr/diags:/bin/csh 4 +Tools 6 +Activity 21 +Files 10 +Spooler 11 +Database 13 +Killian 29 +Daemon 16 +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17 +User:/usr/demos:/bin/csh 18 +User:/usr/tutor:/bin/csh 19 +Space 20 +Account:/usr/people/guest:/bin/csh 21 +Account:/usr/people/4Dgifts:/bin/csh 224 +nobody 96 +no 24 +Owner:/usr/spool/rje: 26 +change 27 +distributions:/v/adm/dist:/v/bin/sh 28 +Manual 29 +call 30 +oot 1 +oottcsh 2 +ysadm 3 +iag 4 +aemon 5 +in 6 +ucp 8 +ys 9 +adm 10 +lp 11 +auditor 12 +dbadmin 13 +bootes 14 +cdjuke 15 +rfindd 16 +EZsetup 17 +demos 18 +tutor 19 +tour 20 +guest 21 +4Dgifts 22 +noaccess 24 +changes 27 +dist 28 +man 29 +phoneca 30 diff --git a/src/tool/awk/testdata/output/t.addops b/src/tool/awk/testdata/output/t.addops new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.aeiou b/src/tool/awk/testdata/output/t.aeiou new file mode 100644 index 0000000..423b12f --- /dev/null +++ b/src/tool/awk/testdata/output/t.aeiou @@ -0,0 +1,8 @@ + 7360 ava + 5671 dave + 700 honey + 348 ravi + 224 sharon + 123 dale + 1 gopi + 1 sidor diff --git a/src/tool/awk/testdata/output/t.aeiouy b/src/tool/awk/testdata/output/t.aeiouy new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.arith b/src/tool/awk/testdata/output/t.arith new file mode 100644 index 0000000..589b9b3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.arith @@ -0,0 +1,991 @@ +1 /dev/rrp3: 0 0 0 +1 0 0 +1 0 +2 0 0 0 +2 0 0 +2 0 +3 17379 34758 0 302029641 +3 5793 0 +3 -17379 +3 131.829 +3 131.829 +4 16693 33386 0 278656249 +4 4173.25 1 +4 -16693 +4 129.201 +4 129.201 +5 16116 32232 0 259725456 +5 3223.2 1 +5 -16116 +5 126.949 +5 126.949 +6 15713 31426 0 246898369 +6 2618.83 5 +6 -15713 +6 125.352 +6 125.352 +7 11895 23790 0 141491025 +7 1699.29 2 +7 -11895 +7 109.064 +7 109.064 +8 10409 20818 0 108347281 +8 1301.12 1 +8 -10409 +8 102.025 +8 102.025 +9 10252 20504 0 105103504 +9 1139.11 1 +9 -10252 +9 101.252 +9 101.252 +10 9853 19706 0 97081609 +10 985.3 3 +10 -9853 +10 99.2623 +10 99.2623 +11 9748 19496 0 95023504 +11 886.182 2 +11 -9748 +11 98.732 +11 98.732 +12 9492 18984 0 90098064 +12 791 0 +12 -9492 +12 97.4269 +12 97.4269 +13 9190 18380 0 84456100 +13 706.923 12 +13 -9190 +13 95.8645 +13 95.8645 +14 8912 17824 0 79423744 +14 636.571 8 +14 -8912 +14 94.4034 +14 94.4034 +15 8895 17790 0 79121025 +15 593 0 +15 -8895 +15 94.3133 +15 94.3133 +16 8491 16982 0 72097081 +16 530.688 11 +16 -8491 +16 92.1466 +16 92.1466 +17 8372 16744 0 70090384 +17 492.471 8 +17 -8372 +17 91.4986 +17 91.4986 +18 8252 16504 0 68095504 +18 458.444 8 +18 -8252 +18 90.8405 +18 90.8405 +19 7450 14900 0 55502500 +19 392.105 2 +19 -7450 +19 86.3134 +19 86.3134 +20 7360 14720 0 54169600 +20 368 0 +20 -7360 +20 85.7904 +20 85.7904 +21 7273 14546 0 52896529 +21 346.333 7 +21 -7273 +21 85.2819 +21 85.2819 +22 7080 14160 0 50126400 +22 321.818 18 +22 -7080 +22 84.1427 +22 84.1427 +23 7063 14126 0 49885969 +23 307.087 2 +23 -7063 +23 84.0417 +23 84.0417 +24 6567 13134 0 43125489 +24 273.625 15 +24 -6567 +24 81.037 +24 81.037 +25 6462 12924 0 41757444 +25 258.48 12 +25 -6462 +25 80.3866 +25 80.3866 +26 6291 12582 0 39576681 +26 241.962 25 +26 -6291 +26 79.3158 +26 79.3158 +27 6211 12422 0 38576521 +27 230.037 1 +27 -6211 +27 78.8099 +27 78.8099 +28 5671 11342 0 32160241 +28 202.536 15 +28 -5671 +28 75.306 +28 75.306 +29 5373 10746 0 28869129 +29 185.276 8 +29 -5373 +29 73.3008 +29 73.3008 +30 5220 10440 0 27248400 +30 174 0 +30 -5220 +30 72.2496 +30 72.2496 +31 5167 10334 0 26697889 +31 166.677 21 +31 -5167 +31 71.8818 +31 71.8818 +32 5007 10014 0 25070049 +32 156.469 15 +32 -5007 +32 70.7602 +32 70.7602 +33 3963 7926 0 15705369 +33 120.091 3 +33 -3963 +33 62.9524 +33 62.9524 +34 3895 7790 0 15171025 +34 114.559 19 +34 -3895 +34 62.4099 +34 62.4099 +35 3796 7592 0 14409616 +35 108.457 16 +35 -3796 +35 61.6117 +35 61.6117 +36 3481 6962 0 12117361 +36 96.6944 25 +36 -3481 +36 59 +36 59 +37 3200 6400 0 10240000 +37 86.4865 18 +37 -3200 +37 56.5685 +37 56.5685 +38 2845 5690 0 8094025 +38 74.8684 33 +38 -2845 +38 53.3385 +38 53.3385 +39 2774 5548 0 7695076 +39 71.1282 5 +39 -2774 +39 52.6688 +39 52.6688 +40 2641 5282 0 6974881 +40 66.025 1 +40 -2641 +40 51.3907 +40 51.3907 +41 2566 5132 0 6584356 +41 62.5854 24 +41 -2566 +41 50.6557 +41 50.6557 +42 2511 5022 0 6305121 +42 59.7857 33 +42 -2511 +42 50.1099 +42 50.1099 +43 2479 4958 0 6145441 +43 57.6512 28 +43 -2479 +43 49.7896 +43 49.7896 +44 2127 4254 0 4524129 +44 48.3409 15 +44 -2127 +44 46.1194 +44 46.1194 +45 1989 3978 0 3956121 +45 44.2 9 +45 -1989 +45 44.5982 +45 44.5982 +46 1989 3978 0 3956121 +46 43.2391 11 +46 -1989 +46 44.5982 +46 44.5982 +47 1933 3866 0 3736489 +47 41.1277 6 +47 -1933 +47 43.9659 +47 43.9659 +48 1801 3602 0 3243601 +48 37.5208 25 +48 -1801 +48 42.4382 +48 42.4382 +49 1590 3180 0 2528100 +49 32.449 22 +49 -1590 +49 39.8748 +49 39.8748 +50 1385 2770 0 1918225 +50 27.7 35 +50 -1385 +50 37.2156 +50 37.2156 +51 1370 2740 0 1876900 +51 26.8627 44 +51 -1370 +51 37.0135 +51 37.0135 +52 1316 2632 0 1731856 +52 25.3077 16 +52 -1316 +52 36.2767 +52 36.2767 +53 1205 2410 0 1452025 +53 22.7358 39 +53 -1205 +53 34.7131 +53 34.7131 +54 1194 2388 0 1425636 +54 22.1111 6 +54 -1194 +54 34.5543 +54 34.5543 +55 1153 2306 0 1329409 +55 20.9636 53 +55 -1153 +55 33.9559 +55 33.9559 +56 1150 2300 0 1322500 +56 20.5357 30 +56 -1150 +56 33.9116 +56 33.9116 +57 1031 2062 0 1062961 +57 18.0877 5 +57 -1031 +57 32.1092 +57 32.1092 +58 1018 2036 0 1036324 +58 17.5517 32 +58 -1018 +58 31.9061 +58 31.9061 +59 950 1900 0 902500 +59 16.1017 6 +59 -950 +59 30.8221 +59 30.8221 +60 931 1862 0 866761 +60 15.5167 31 +60 -931 +60 30.5123 +60 30.5123 +61 898 1796 0 806404 +61 14.7213 44 +61 -898 +61 29.9666 +61 29.9666 +62 865 1730 0 748225 +62 13.9516 59 +62 -865 +62 29.4109 +62 29.4109 +63 822 1644 0 675684 +63 13.0476 3 +63 -822 +63 28.6705 +63 28.6705 +64 803 1606 0 644809 +64 12.5469 35 +64 -803 +64 28.3373 +64 28.3373 +65 700 1400 0 490000 +65 10.7692 50 +65 -700 +65 26.4575 +65 26.4575 +66 624 1248 0 389376 +66 9.45455 30 +66 -624 +66 24.98 +66 24.98 +67 559 1118 0 312481 +67 8.34328 23 +67 -559 +67 23.6432 +67 23.6432 +68 541 1082 0 292681 +68 7.95588 65 +68 -541 +68 23.2594 +68 23.2594 +69 523 1046 0 273529 +69 7.57971 40 +69 -523 +69 22.8692 +69 22.8692 +70 495 990 0 245025 +70 7.07143 5 +70 -495 +70 22.2486 +70 22.2486 +71 456 912 0 207936 +71 6.42254 30 +71 -456 +71 21.3542 +71 21.3542 +72 414 828 0 171396 +72 5.75 54 +72 -414 +72 20.347 +72 20.347 +73 386 772 0 148996 +73 5.28767 21 +73 -386 +73 19.6469 +73 19.6469 +74 375 750 0 140625 +74 5.06757 5 +74 -375 +74 19.3649 +74 19.3649 +75 348 696 0 121104 +75 4.64 48 +75 -348 +75 18.6548 +75 18.6548 +76 344 688 0 118336 +76 4.52632 40 +76 -344 +76 18.5472 +76 18.5472 +77 327 654 0 106929 +77 4.24675 19 +77 -327 +77 18.0831 +77 18.0831 +78 288 576 0 82944 +78 3.69231 54 +78 -288 +78 16.9706 +78 16.9706 +79 272 544 0 73984 +79 3.44304 35 +79 -272 +79 16.4924 +79 16.4924 +80 263 526 0 69169 +80 3.2875 23 +80 -263 +80 16.2173 +80 16.2173 +81 253 506 0 64009 +81 3.12346 10 +81 -253 +81 15.906 +81 15.906 +82 251 502 0 63001 +82 3.06098 5 +82 -251 +82 15.843 +82 15.843 +83 248 496 0 61504 +83 2.98795 82 +83 -248 +83 15.748 +83 15.748 +84 224 448 0 50176 +84 2.66667 56 +84 -224 +84 14.9666 +84 14.9666 +85 222 444 0 49284 +85 2.61176 52 +85 -222 +85 14.8997 +85 14.8997 +86 213 426 0 45369 +86 2.47674 41 +86 -213 +86 14.5945 +86 14.5945 +87 201 402 0 40401 +87 2.31034 27 +87 -201 +87 14.1774 +87 14.1774 +88 184 368 0 33856 +88 2.09091 8 +88 -184 +88 13.5647 +88 13.5647 +89 176 352 0 30976 +89 1.97753 87 +89 -176 +89 13.2665 +89 13.2665 +90 166 332 0 27556 +90 1.84444 76 +90 -166 +90 12.8841 +90 12.8841 +91 163 326 0 26569 +91 1.79121 72 +91 -163 +91 12.7671 +91 12.7671 +92 144 288 0 20736 +92 1.56522 52 +92 -144 +92 12 +92 12 +93 143 286 0 20449 +93 1.53763 50 +93 -143 +93 11.9583 +93 11.9583 +94 123 246 0 15129 +94 1.30851 29 +94 -123 +94 11.0905 +94 11.0905 +95 116 232 0 13456 +95 1.22105 21 +95 -116 +95 10.7703 +95 10.7703 +96 95 190 0 9025 +96 0.989583 95 +96 -95 +96 9.74679 +96 9.74679 +97 80 160 0 6400 +97 0.824742 80 +97 -80 +97 8.94427 +97 8.94427 +98 79 158 0 6241 +98 0.806122 79 +98 -79 +98 8.88819 +98 8.88819 +99 79 158 0 6241 +99 0.79798 79 +99 -79 +99 8.88819 +99 8.88819 +100 64 128 0 4096 +100 0.64 64 +100 -64 +100 8 +100 8 +101 62 124 0 3844 +101 0.613861 62 +101 -62 +101 7.87401 +101 7.87401 +102 56 112 0 3136 +102 0.54902 56 +102 -56 +102 7.48331 +102 7.48331 +103 54 108 0 2916 +103 0.524272 54 +103 -54 +103 7.34847 +103 7.34847 +104 47 94 0 2209 +104 0.451923 47 +104 -47 +104 6.85565 +104 6.85565 +105 45 90 0 2025 +105 0.428571 45 +105 -45 +105 6.7082 +105 6.7082 +106 45 90 0 2025 +106 0.424528 45 +106 -45 +106 6.7082 +106 6.7082 +107 44 88 0 1936 +107 0.411215 44 +107 -44 +107 6.63325 +107 6.63325 +108 43 86 0 1849 +108 0.398148 43 +108 -43 +108 6.55744 +108 6.55744 +109 43 86 0 1849 +109 0.394495 43 +109 -43 +109 6.55744 +109 6.55744 +110 37 74 0 1369 +110 0.336364 37 +110 -37 +110 6.08276 +110 6.08276 +111 32 64 0 1024 +111 0.288288 32 +111 -32 +111 5.65685 +111 5.65685 +112 31 62 0 961 +112 0.276786 31 +112 -31 +112 5.56776 +112 5.56776 +113 29 58 0 841 +113 0.256637 29 +113 -29 +113 5.38516 +113 5.38516 +114 25 50 0 625 +114 0.219298 25 +114 -25 +114 5 +114 5 +115 22 44 0 484 +115 0.191304 22 +115 -22 +115 4.69042 +115 4.69042 +116 15 30 0 225 +116 0.12931 15 +116 -15 +116 3.87298 +116 3.87298 +117 10 20 0 100 +117 0.0854701 10 +117 -10 +117 3.16228 +117 3.16228 +118 10 20 0 100 +118 0.0847458 10 +118 -10 +118 3.16228 +118 3.16228 +119 6 12 0 36 +119 0.0504202 6 +119 -6 +119 2.44949 +119 2.44949 +120 6 12 0 36 +120 0.05 6 +120 -6 +120 2.44949 +120 2.44949 +121 5 10 0 25 +121 0.0413223 5 +121 -5 +121 2.23607 +121 2.23607 +122 4 8 0 16 +122 0.0327869 4 +122 -4 +122 2 +122 2 +123 4 8 0 16 +123 0.0325203 4 +123 -4 +123 2 +123 2 +124 4 8 0 16 +124 0.0322581 4 +124 -4 +124 2 +124 2 +125 3 6 0 9 +125 0.024 3 +125 -3 +125 1.73205 +125 1.73205 +126 3 6 0 9 +126 0.0238095 3 +126 -3 +126 1.73205 +126 1.73205 +127 3 6 0 9 +127 0.023622 3 +127 -3 +127 1.73205 +127 1.73205 +128 3 6 0 9 +128 0.0234375 3 +128 -3 +128 1.73205 +128 1.73205 +129 2 4 0 4 +129 0.0155039 2 +129 -2 +129 1.41421 +129 1.41421 +130 2 4 0 4 +130 0.0153846 2 +130 -2 +130 1.41421 +130 1.41421 +131 2 4 0 4 +131 0.0152672 2 +131 -2 +131 1.41421 +131 1.41421 +132 1 2 0 1 +132 0.00757576 1 +132 -1 +132 1 +132 1 +133 1 2 0 1 +133 0.0075188 1 +133 -1 +133 1 +133 1 +134 1 2 0 1 +134 0.00746269 1 +134 -1 +134 1 +134 1 +135 1 2 0 1 +135 0.00740741 1 +135 -1 +135 1 +135 1 +136 1 2 0 1 +136 0.00735294 1 +136 -1 +136 1 +136 1 +137 1 2 0 1 +137 0.00729927 1 +137 -1 +137 1 +137 1 +138 1 2 0 1 +138 0.00724638 1 +138 -1 +138 1 +138 1 +139 1 2 0 1 +139 0.00719424 1 +139 -1 +139 1 +139 1 +140 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 2 0 1 +140 0.00714286 1 +140 -1 +140 1 +140 1 +141 2roottcsh:*:0:0:Super-User 4 0 4 +141 0.0141844 2 +141 -2 +141 1.41421 +141 1.41421 +142 3sysadm:*:0:0:System 6 0 9 +142 0.0211268 3 +142 -3 +142 1.73205 +142 1.73205 +143 4diag:*:0:996:Hardware 8 0 16 +143 0.027972 4 +143 -4 +143 2 +143 2 +144 5daemon:*:1:1:daemons:/:/bin/sh 10 0 25 +144 0.0347222 5 +144 -5 +144 2.23607 +144 2.23607 +145 6bin:*:2:2:System 12 0 36 +145 0.0413793 6 +145 -6 +145 2.44949 +145 2.44949 +146 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 14 0 49 +146 0.0479452 7 +146 -7 +146 2.64575 +146 2.64575 +147 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 16 0 64 +147 0.0544218 8 +147 -8 +147 2.82843 +147 2.82843 +148 9sys:*:4:0:System 18 0 81 +148 0.0608108 9 +148 -9 +148 3 +148 3 +149 10adm:*:5:3:Accounting 20 0 100 +149 0.0671141 10 +149 -10 +149 3.16228 +149 3.16228 +150 11lp:*:9:9:Print 22 0 121 +150 0.0733333 11 +150 -11 +150 3.31662 +150 3.31662 +151 12auditor:*:11:0:Audit 24 0 144 +151 0.0794702 12 +151 -12 +151 3.4641 +151 3.4641 +152 13dbadmin:*:12:0:Security 26 0 169 +152 0.0855263 13 +152 -13 +152 3.60555 +152 3.60555 +153 14bootes:dcon:50:1:Tom 28 0 196 +153 0.0915033 14 +153 -14 +153 3.74166 +153 3.74166 +154 15cdjuke:dcon:51:1:Tom 30 0 225 +154 0.0974026 15 +154 -15 +154 3.87298 +154 3.87298 +155 16rfindd:*:66:1:Rfind 32 0 256 +155 0.103226 16 +155 -16 +155 4 +155 4 +156 17EZsetup:*:992:998:System 34 0 289 +156 0.108974 17 +156 -17 +156 4.12311 +156 4.12311 +157 18demos:*:993:997:Demonstration 36 0 324 +157 0.11465 18 +157 -18 +157 4.24264 +157 4.24264 +158 19tutor:*:994:997:Tutorial 38 0 361 +158 0.120253 19 +158 -19 +158 4.3589 +158 4.3589 +159 20tour:*:995:997:IRIS 40 0 400 +159 0.125786 20 +159 -20 +159 4.47214 +159 4.47214 +160 21guest:nfP4/Wpvio/Rw:998:998:Guest 42 0 441 +160 0.13125 21 +160 -21 +160 4.58258 +160 4.58258 +161 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 448 0 50176 +161 1.3913 63 +161 -224 +161 14.9666 +161 14.9666 +162 23nobody:*:60001:60001:SVR4 46 0 529 +162 0.141975 23 +162 -23 +162 4.79583 +162 4.79583 +163 24noaccess:*:60002:60002:uid 48 0 576 +163 0.147239 24 +163 -24 +163 4.89898 +163 4.89898 +164 25nobody:*:-2:-2:original 50 0 625 +164 0.152439 25 +164 -25 +164 5 +164 5 +165 26rje:*:8:8:RJE 52 0 676 +165 0.157576 26 +165 -26 +165 5.09902 +165 5.09902 +166 27changes:*:11:11:system 54 0 729 +166 0.162651 27 +166 -27 +166 5.19615 +166 5.19615 +167 28dist:sorry:9999:4:file 56 0 784 +167 0.167665 28 +167 -28 +167 5.2915 +167 5.2915 +168 29man:*:99:995:On-line 58 0 841 +168 0.172619 29 +168 -29 +168 5.38516 +168 5.38516 +169 30phoneca:*:991:991:phone 60 0 900 +169 0.177515 30 +169 -30 +169 5.47723 +169 5.47723 +170 1r 2 0 1 +170 0.00588235 1 +170 -1 +170 1 +170 1 +171 2r 4 0 4 +171 0.0116959 2 +171 -2 +171 1.41421 +171 1.41421 +172 3s 6 0 9 +172 0.0174419 3 +172 -3 +172 1.73205 +172 1.73205 +173 4d 8 0 16 +173 0.0231214 4 +173 -4 +173 2 +173 2 +174 5d 10 0 25 +174 0.0287356 5 +174 -5 +174 2.23607 +174 2.23607 +175 6b 12 0 36 +175 0.0342857 6 +175 -6 +175 2.44949 +175 2.44949 +176 7n 14 0 49 +176 0.0397727 7 +176 -7 +176 2.64575 +176 2.64575 +177 8u 16 0 64 +177 0.0451977 8 +177 -8 +177 2.82843 +177 2.82843 +178 9s 18 0 81 +178 0.0505618 9 +178 -9 +178 3 +178 3 +179 10 20 0 100 +179 0.0558659 10 +179 -10 +179 3.16228 +179 3.16228 +180 11 22 0 121 +180 0.0611111 11 +180 -11 +180 3.31662 +180 3.31662 +181 12 24 0 144 +181 0.0662983 12 +181 -12 +181 3.4641 +181 3.4641 +182 13 26 0 169 +182 0.0714286 13 +182 -13 +182 3.60555 +182 3.60555 +183 14 28 0 196 +183 0.0765027 14 +183 -14 +183 3.74166 +183 3.74166 +184 15 30 0 225 +184 0.0815217 15 +184 -15 +184 3.87298 +184 3.87298 +185 16 32 0 256 +185 0.0864865 16 +185 -16 +185 4 +185 4 +186 17 34 0 289 +186 0.0913978 17 +186 -17 +186 4.12311 +186 4.12311 +187 18 36 0 324 +187 0.0962567 18 +187 -18 +187 4.24264 +187 4.24264 +188 19 38 0 361 +188 0.101064 19 +188 -19 +188 4.3589 +188 4.3589 +189 20 40 0 400 +189 0.10582 20 +189 -20 +189 4.47214 +189 4.47214 +190 21 42 0 441 +190 0.110526 21 +190 -21 +190 4.58258 +190 4.58258 +191 22 44 0 484 +191 0.115183 22 +191 -22 +191 4.69042 +191 4.69042 +192 23 46 0 529 +192 0.119792 23 +192 -23 +192 4.79583 +192 4.79583 +193 24 48 0 576 +193 0.124352 24 +193 -24 +193 4.89898 +193 4.89898 +194 25 50 0 625 +194 0.128866 25 +194 -25 +194 5 +194 5 +195 26 52 0 676 +195 0.133333 26 +195 -26 +195 5.09902 +195 5.09902 +196 27 54 0 729 +196 0.137755 27 +196 -27 +196 5.19615 +196 5.19615 +197 28 56 0 784 +197 0.142132 28 +197 -28 +197 5.2915 +197 5.2915 +198 29 58 0 841 +198 0.146465 29 +198 -29 +198 5.38516 +198 5.38516 +199 30 60 0 900 +199 0.150754 30 +199 -30 +199 5.47723 +199 5.47723 diff --git a/src/tool/awk/testdata/output/t.array b/src/tool/awk/testdata/output/t.array new file mode 100644 index 0000000..c19b980 --- /dev/null +++ b/src/tool/awk/testdata/output/t.array @@ -0,0 +1,398 @@ +/dev/rrp3: + /dev/rrp3: + + +17379 mel + mel 17379 +16693 bwk me + bwk 16693 +16116 ken him someone else + ken 16116 +15713 srb + srb 15713 +11895 lem + lem 11895 +10409 scj + scj 10409 +10252 rhm + rhm 10252 + 9853 shen + shen 9853 + 9748 a68 + a68 9748 + 9492 sif + sif 9492 + 9190 pjw + pjw 9190 + 8912 nls + nls 8912 + 8895 dmr + dmr 8895 + 8491 cda + cda 8491 + 8372 bs + bs 8372 + 8252 llc + llc 8252 + 7450 mb + mb 7450 + 7360 ava + ava 7360 + 7273 jrv + jrv 7273 + 7080 bin + bin 7080 + 7063 greg + greg 7063 + 6567 dict + dict 6567 + 6462 lck + lck 6462 + 6291 rje + rje 6291 + 6211 lwf + lwf 6211 + 5671 dave + dave 5671 + 5373 jhc + jhc 5373 + 5220 agf + agf 5220 + 5167 doug + doug 5167 + 5007 valerie + valerie 5007 + 3963 jca + jca 3963 + 3895 bbs + bbs 3895 + 3796 moh + moh 3796 + 3481 xchar + xchar 3481 + 3200 tbl + tbl 3200 + 2845 s + s 2845 + 2774 tgs + tgs 2774 + 2641 met + met 2641 + 2566 jck + jck 2566 + 2511 port + port 2511 + 2479 sue + sue 2479 + 2127 root + root 2127 + 1989 bsb + bsb 1989 + 1989 jeg + jeg 1989 + 1933 eag + eag 1933 + 1801 pdj + pdj 1801 + 1590 tpc + tpc 1590 + 1385 cvw + cvw 1385 + 1370 rwm + rwm 1370 + 1316 avg + avg 1316 + 1205 eg + eg 1205 + 1194 jam + jam 1194 + 1153 dl + dl 1153 + 1150 lgm + lgm 1150 + 1031 cmb + cmb 1031 + 1018 jwr + jwr 1018 + 950 gdb + gdb 950 + 931 marc + marc 931 + 898 usg + usg 898 + 865 ggr + ggr 865 + 822 daemon + daemon 822 + 803 mihalis + mihalis 803 + 700 honey + honey 700 + 624 tad + tad 624 + 559 acs + acs 559 + 541 uucp + uucp 541 + 523 raf + raf 523 + 495 adh + adh 495 + 456 kec + kec 456 + 414 craig + craig 414 + 386 donmac + donmac 386 + 375 jj + jj 375 + 348 ravi + ravi 348 + 344 drw + drw 344 + 327 stars + stars 327 + 288 mrg + mrg 288 + 272 jcb + jcb 272 + 263 ralph + ralph 263 + 253 tom + tom 253 + 251 sjb + sjb 251 + 248 haight + haight 248 + 224 sharon + sharon 224 + 222 chuck + chuck 222 + 213 dsj + dsj 213 + 201 bill + bill 201 + 184 god + god 184 + 176 sys + sys 176 + 166 meh + meh 166 + 163 jon + jon 163 + 144 dan + dan 144 + 143 fox + fox 143 + 123 dale + dale 123 + 116 kab + kab 116 + 95 buz + buz 95 + 80 asc + asc 80 + 79 jas + jas 79 + 79 trt + trt 79 + 64 wsb + wsb 64 + 62 dwh + dwh 62 + 56 ktf + ktf 56 + 54 lr + lr 54 + 47 dlc + dlc 47 + 45 dls + dls 45 + 45 jwf + jwf 45 + 44 mash + mash 44 + 43 ars + ars 43 + 43 vgl + vgl 43 + 37 jfo + jfo 37 + 32 rab + rab 32 + 31 pd + pd 31 + 29 jns + jns 29 + 25 spm + spm 25 + 22 rob + rob 22 + 15 egb + egb 15 + 10 hm + hm 10 + 10 mhb + mhb 10 + 6 aed + aed 6 + 6 cpb + cpb 6 + 5 evp + evp 5 + 4 ber + ber 4 + 4 men + men 4 + 4 mitch + mitch 4 + 3 ast + ast 3 + 3 jfr + jfr 3 + 3 lax + lax 3 + 3 nel + nel 3 + 2 blue + blue 2 + 2 jfk + jfk 2 + 2 njas + njas 2 + 1 122sec + 122sec 1 + 1 ddwar + ddwar 1 + 1 gopi + gopi 1 + 1 jk + jk 1 + 1 learn + learn 1 + 1 low + low 1 + 1 nac + nac 1 + 1 sidor + sidor 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + running 2roottcsh:*:0:0:Super-User +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + V 3sysadm:*:0:0:System +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + Diagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh + 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null + Tools 6bin:*:2:2:System +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + Activity 9sys:*:4:0:System +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + Files 10adm:*:5:3:Accounting +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + Spooler 11lp:*:9:9:Print +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + Activity 12auditor:*:11:0:Audit +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + Database 13dbadmin:*:12:0:Security +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + Killian 14bootes:dcon:50:1:Tom +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + Killian 15cdjuke:dcon:51:1:Tom +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + Daemon 16rfindd:*:66:1:Rfind +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + User:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + User:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + Space 20tour:*:995:997:IRIS +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + Account:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + Account:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + nobody 23nobody:*:60001:60001:SVR4 +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + no 24noaccess:*:60002:60002:uid +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + nobody 25nobody:*:-2:-2:original +26rje:*:8:8:RJE Owner:/usr/spool/rje: + Owner:/usr/spool/rje: 26rje:*:8:8:RJE +27changes:*:11:11:system change log:/: + change 27changes:*:11:11:system +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + distributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file +29man:*:99:995:On-line Manual Owner:/: + Manual 29man:*:99:995:On-line +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + call 30phoneca:*:991:991:phone +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + oot 1r +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + oottcsh 2r +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + ysadm 3s +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + iag 4d +5d aemon * 1 1 daemons / /bin/sh + aemon 5d +6b in * 2 2 System Tools Owner /bin /dev/null + in 6b +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + uucp 7n +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + ucp 8u +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + ys 9s +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + adm 10 +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + lp 11 +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + auditor 12 +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + dbadmin 13 +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + bootes 14 +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + cdjuke 15 +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + rfindd 16 +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + EZsetup 17 +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + demos 18 +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + tutor 19 +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + tour 20 +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + guest 21 +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 4Dgifts 22 +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + nobody 23 +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + noaccess 24 +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + nobody 25 +26 rje * 8 8 RJE Owner /usr/spool/rje + rje 26 +27 changes * 11 11 system change log / + changes 27 +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + dist 28 +29 man * 99 995 On-line Manual Owner / + man 29 +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + phoneca 30 diff --git a/src/tool/awk/testdata/output/t.array1 b/src/tool/awk/testdata/output/t.array1 new file mode 100644 index 0000000..9c3d7b9 --- /dev/null +++ b/src/tool/awk/testdata/output/t.array1 @@ -0,0 +1,474 @@ + +/dev/rrp3: 1 +17379 1 +mel 1 +16693 1 +bwk 1 +me 1 +16116 1 +ken 1 +him 1 +someone 1 +else 1 +15713 1 +srb 1 +11895 1 +lem 1 +10409 1 +scj 1 +10252 1 +rhm 1 +9853 1 +shen 1 +9748 1 +a68 1 +9492 1 +sif 1 +9190 1 +pjw 1 +8912 1 +nls 1 +8895 1 +dmr 1 +8491 1 +cda 1 +8372 1 +bs 1 +8252 1 +llc 1 +7450 1 +mb 1 +7360 1 +ava 1 +7273 1 +jrv 1 +7080 1 +bin 1 +7063 1 +greg 1 +6567 1 +dict 1 +6462 1 +lck 1 +6291 1 +rje 2 +6211 1 +lwf 1 +5671 1 +dave 1 +5373 1 +jhc 1 +5220 1 +agf 1 +5167 1 +doug 1 +5007 1 +valerie 1 +3963 1 +jca 1 +3895 1 +bbs 1 +3796 1 +moh 1 +3481 1 +xchar 1 +3200 1 +tbl 1 +2845 1 +s 1 +2774 1 +tgs 1 +2641 1 +met 1 +2566 1 +jck 1 +2511 1 +port 1 +2479 1 +sue 1 +2127 1 +root 1 +1989 2 +bsb 1 +jeg 1 +1933 1 +eag 1 +1801 1 +pdj 1 +1590 1 +tpc 1 +1385 1 +cvw 1 +1370 1 +rwm 1 +1316 1 +avg 1 +1205 1 +eg 1 +1194 1 +jam 1 +1153 1 +dl 1 +1150 1 +lgm 1 +1031 1 +cmb 1 +1018 1 +jwr 1 +950 1 +gdb 1 +931 1 +marc 1 +898 1 +usg 1 +865 1 +ggr 1 +822 1 +daemon 1 +803 1 +mihalis 1 +700 1 +honey 1 +624 1 +tad 1 +559 1 +acs 1 +541 1 +uucp 2 +523 1 +raf 1 +495 1 +adh 1 +456 1 +kec 1 +414 1 +craig 1 +386 1 +donmac 1 +375 1 +jj 1 +348 1 +ravi 1 +344 1 +drw 1 +327 1 +stars 1 +288 1 +mrg 1 +272 1 +jcb 1 +263 1 +ralph 1 +253 1 +tom 1 +251 1 +sjb 1 +248 1 +haight 1 +224 1 +sharon 1 +222 1 +chuck 1 +213 1 +dsj 1 +201 1 +bill 1 +184 1 +god 1 +176 1 +sys 1 +166 1 +meh 1 +163 1 +jon 1 +144 1 +dan 1 +143 1 +fox 1 +123 1 +dale 1 +116 1 +kab 1 +95 1 +buz 1 +80 1 +asc 1 +79 2 +jas 1 +trt 1 +64 1 +wsb 1 +62 1 +dwh 1 +56 1 +ktf 1 +54 1 +lr 1 +47 1 +dlc 1 +45 2 +dls 1 +jwf 1 +44 1 +mash 1 +43 2 +ars 1 +vgl 1 +37 1 +jfo 1 +32 1 +rab 1 +31 1 +pd 1 +29 2 +jns 1 +25 2 +spm 1 +22 2 +rob 1 +15 2 +egb 1 +10 4 +hm 1 +mhb 1 +6 3 +aed 1 +cpb 1 +5 3 +evp 1 +4 5 +ber 1 +men 1 +mitch 1 +3 6 +ast 1 +jfr 1 +lax 1 +nel 1 +2 5 +blue 1 +jfk 1 +njas 1 +1 13 +122sec 1 +ddwar 1 +gopi 1 +jk 1 +learn 1 +low 1 +nac 1 +sidor 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1 +2roottcsh:*:0:0:Super-User 1 +running 2 +tcsh 2 +[cbm]:/:/bin/tcsh 1 +3sysadm:*:0:0:System 1 +V 2 +Administration:/usr/admin:/bin/sh 1 +4diag:*:0:996:Hardware 1 +Diagnostics:/usr/diags:/bin/csh 1 +5daemon:*:1:1:daemons:/:/bin/sh 1 +6bin:*:2:2:System 1 +Tools 2 +Owner:/bin:/dev/null 1 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 1 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 1 +9sys:*:4:0:System 1 +Activity 4 +Owner:/usr/adm:/bin/sh 2 +10adm:*:5:3:Accounting 1 +Files 2 +11lp:*:9:9:Print 1 +Spooler 2 +Owner:/var/spool/lp:/bin/sh 1 +12auditor:*:11:0:Audit 1 +Owner:/auditor:/bin/sh 1 +13dbadmin:*:12:0:Security 1 +Database 2 +Owner:/dbadmin:/bin/sh 1 +14bootes:dcon:50:1:Tom 1 +Killian 4 +(DO 4 +NOT 4 +REMOVE):/tmp: 2 +15cdjuke:dcon:51:1:Tom 1 +16rfindd:*:66:1:Rfind 1 +Daemon 2 +and 2 +Fsdump:/var/rfindd:/bin/sh 1 +17EZsetup:*:992:998:System 1 +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 1 +18demos:*:993:997:Demonstration 1 +User:/usr/demos:/bin/csh 1 +19tutor:*:994:997:Tutorial 1 +User:/usr/tutor:/bin/csh 1 +20tour:*:995:997:IRIS 1 +Space 2 +Tour:/usr/people/tour:/bin/csh 1 +21guest:nfP4/Wpvio/Rw:998:998:Guest 1 +Account:/usr/people/guest:/bin/csh 1 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 1 +Account:/usr/people/4Dgifts:/bin/csh 1 +23nobody:*:60001:60001:SVR4 1 +nobody 6 +uid:/dev/null:/dev/null 2 +24noaccess:*:60002:60002:uid 1 +no 2 +access:/dev/null:/dev/null 1 +25nobody:*:-2:-2:original 1 +26rje:*:8:8:RJE 1 +Owner:/usr/spool/rje: 1 +27changes:*:11:11:system 1 +change 2 +log:/: 1 +28dist:sorry:9999:4:file 1 +distributions:/v/adm/dist:/v/bin/sh 1 +29man:*:99:995:On-line 1 +Manual 2 +Owner:/: 1 +30phoneca:*:991:991:phone 1 +call 2 +log 3 +[tom]:/v/adm/log:/v/bin/sh 1 +1r 1 +oot 1 +EMpNB8Zp56 1 +0 10 +Super-User,,,,,,, 1 +/ 5 +/bin/sh 9 +2r 1 +oottcsh 1 +* 23 +Super-User 1 +[cbm] 1 +/bin/tcsh 1 +3s 1 +ysadm 1 +System 4 +Administration 1 +/usr/admin 1 +4d 1 +iag 1 +996 1 +Hardware 1 +Diagnostics 1 +/usr/diags 1 +/bin/csh 7 +5d 1 +aemon 1 +daemons 1 +6b 1 +in 1 +Owner 8 +/bin 1 +/dev/null 7 +7n 1 +BJnuQbAo 1 +UUCP.Admin 2 +/usr/spool/uucppublic 1 +/usr/lib/uucp/uucico 1 +8u 1 +ucp 1 +/usr/lib/uucp 1 +9s 1 +ys 1 +/usr/adm 2 +adm 1 +Accounting 1 +11 4 +lp 1 +9 2 +Print 1 +/var/spool/lp 1 +12 2 +auditor 1 +Audit 1 +/auditor 1 +13 1 +dbadmin 1 +Security 1 +/dbadmin 1 +14 1 +bootes 1 +dcon 2 +50 1 +Tom 2 +REMOVE) 2 +/tmp 2 +cdjuke 1 +51 1 +16 1 +rfindd 1 +66 1 +Rfind 1 +Fsdump 1 +/var/rfindd 1 +17 1 +EZsetup 1 +992 1 +998 4 +Setup 1 +/var/sysadmdesktop/EZsetup 1 +18 1 +demos 1 +993 1 +997 3 +Demonstration 1 +User 2 +/usr/demos 1 +19 1 +tutor 1 +994 1 +Tutorial 1 +/usr/tutor 1 +20 1 +tour 1 +995 2 +IRIS 1 +Tour 1 +/usr/people/tour 1 +21 1 +guest 1 +nfP4/Wpvio/Rw 1 +Guest 1 +Account 2 +/usr/people/guest 1 +4Dgifts 2 +0nWRTZsOMt. 1 +999 1 +/usr/people/4Dgifts 1 +23 1 +60001 2 +SVR4 1 +uid 3 +24 1 +noaccess 1 +60002 2 +access 1 +-2 2 +original 1 +26 1 +8 2 +RJE 1 +/usr/spool/rje 1 +27 1 +changes 1 +system 1 +28 1 +dist 1 +sorry 1 +9999 1 +file 1 +distributions 1 +/v/adm/dist 1 +/v/bin/sh 2 +man 1 +99 1 +On-line 1 +30 1 +phoneca 1 +991 2 +phone 1 +[tom] 1 diff --git a/src/tool/awk/testdata/output/t.array2 b/src/tool/awk/testdata/output/t.array2 new file mode 100644 index 0000000..86b7fea --- /dev/null +++ b/src/tool/awk/testdata/output/t.array2 @@ -0,0 +1 @@ +199 99 72 28 diff --git a/src/tool/awk/testdata/output/t.assert b/src/tool/awk/testdata/output/t.assert new file mode 100644 index 0000000..bf58f77 --- /dev/null +++ b/src/tool/awk/testdata/output/t.assert @@ -0,0 +1,124 @@ + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< + >>> assert failed <<< diff --git a/src/tool/awk/testdata/output/t.avg b/src/tool/awk/testdata/output/t.avg new file mode 100644 index 0000000..6472945 --- /dev/null +++ b/src/tool/awk/testdata/output/t.avg @@ -0,0 +1,2 @@ +sum= 341504 count= 199 +avg= 1716.1 diff --git a/src/tool/awk/testdata/output/t.b.x b/src/tool/awk/testdata/output/t.b.x new file mode 100644 index 0000000..99e1c26 --- /dev/null +++ b/src/tool/awk/testdata/output/t.b.x @@ -0,0 +1,398 @@ +::: +6 /dev/rrp3: ::: +::: +6 ::: +::: +6 17379 mel ::: +::: +6 16693 bwk me ::: +::: +6 16116 ken him someone else ::: +::: +6 15713 srb ::: +::: +6 11895 lem ::: +::: +6 10409 scj ::: +::: +6 10252 rhm ::: +::: +6 9853 shen ::: +::: +6 9748 a68 ::: +::: +6 9492 sif ::: +::: +6 9190 pjw ::: +::: +6 8912 nls ::: +::: +6 8895 dmr ::: +::: +6 8491 cda ::: +::: +6 8372 bs ::: +::: +6 8252 llc ::: +::: +6 7450 mb ::: +::: +6 7360 ava ::: +::: +6 7273 jrv ::: +::: +6 7080 bin ::: +::: +6 7063 greg ::: +::: +6 6567 dict ::: +::: +6 6462 lck ::: +::: +6 6291 rje ::: +::: +6 6211 lwf ::: +::: +6 5671 dave ::: +::: +6 5373 jhc ::: +::: +6 5220 agf ::: +::: +6 5167 doug ::: +::: +6 5007 valerie ::: +::: +6 3963 jca ::: +::: +6 3895 bbs ::: +::: +6 3796 moh ::: +::: +6 3481 xchar ::: +::: +6 3200 tbl ::: +::: +6 2845 s ::: +::: +6 2774 tgs ::: +::: +6 2641 met ::: +::: +6 2566 jck ::: +::: +6 2511 port ::: +::: +6 2479 sue ::: +::: +6 2127 root ::: +::: +6 1989 bsb ::: +::: +6 1989 jeg ::: +::: +6 1933 eag ::: +::: +6 1801 pdj ::: +::: +6 1590 tpc ::: +::: +6 1385 cvw ::: +::: +6 1370 rwm ::: +::: +6 1316 avg ::: +::: +6 1205 eg ::: +::: +6 1194 jam ::: +::: +6 1153 dl ::: +::: +6 1150 lgm ::: +::: +6 1031 cmb ::: +::: +6 1018 jwr ::: +::: +6 950 gdb ::: +::: +6 931 marc ::: +::: +6 898 usg ::: +::: +6 865 ggr ::: +::: +6 822 daemon ::: +::: +6 803 mihalis ::: +::: +6 700 honey ::: +::: +6 624 tad ::: +::: +6 559 acs ::: +::: +6 541 uucp ::: +::: +6 523 raf ::: +::: +6 495 adh ::: +::: +6 456 kec ::: +::: +6 414 craig ::: +::: +6 386 donmac ::: +::: +6 375 jj ::: +::: +6 348 ravi ::: +::: +6 344 drw ::: +::: +6 327 stars ::: +::: +6 288 mrg ::: +::: +6 272 jcb ::: +::: +6 263 ralph ::: +::: +6 253 tom ::: +::: +6 251 sjb ::: +::: +6 248 haight ::: +::: +6 224 sharon ::: +::: +6 222 chuck ::: +::: +6 213 dsj ::: +::: +6 201 bill ::: +::: +6 184 god ::: +::: +6 176 sys ::: +::: +6 166 meh ::: +::: +6 163 jon ::: +::: +6 144 dan ::: +::: +6 143 fox ::: +::: +6 123 dale ::: +::: +6 116 kab ::: +::: +6 95 buz ::: +::: +6 80 asc ::: +::: +6 79 jas ::: +::: +6 79 trt ::: +::: +6 64 wsb ::: +::: +6 62 dwh ::: +::: +6 56 ktf ::: +::: +6 54 lr ::: +::: +6 47 dlc ::: +::: +6 45 dls ::: +::: +6 45 jwf ::: +::: +6 44 mash ::: +::: +6 43 ars ::: +::: +6 43 vgl ::: +::: +6 37 jfo ::: +::: +6 32 rab ::: +::: +6 31 pd ::: +::: +6 29 jns ::: +::: +6 25 spm ::: +::: +6 22 rob ::: +::: +6 15 egb ::: +::: +6 10 hm ::: +::: +6 10 mhb ::: +::: +6 6 aed ::: +::: +6 6 cpb ::: +::: +6 5 evp ::: +::: +6 4 ber ::: +::: +6 4 men ::: +::: +6 4 mitch ::: +::: +6 3 ast ::: +::: +6 3 jfr ::: +::: +6 3 lax ::: +::: +6 3 nel ::: +::: +6 2 blue ::: +::: +6 2 jfk ::: +::: +6 2 njas ::: +::: +6 1 122sec ::: +::: +6 1 ddwar ::: +::: +6 1 gopi ::: +::: +6 1 jk ::: +::: +6 1 learn ::: +::: +6 1 low ::: +::: +6 1 nac ::: +::: +6 1 sidor ::: +::: +6 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh ::: +::: +6 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh ::: +::: +6 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh ::: +::: +6 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh ::: +::: +6 5daemon:*:1:1:daemons:/:/bin/sh ::: +::: +6 6bin:*:2:2:System Tools Owner:/bin:/dev/null ::: +::: +6 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico ::: +::: +6 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: ::: +::: +6 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh ::: +::: +6 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh ::: +::: +6 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh ::: +::: +6 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh ::: +::: +6 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh ::: +::: +6 14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: ::: +::: +6 15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: ::: +::: +6 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh ::: +::: +6 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh ::: +::: +6 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh ::: +::: +6 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh ::: +::: +6 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh ::: +::: +6 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh ::: +::: +6 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh ::: +::: +6 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null ::: +::: +6 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null ::: +::: +6 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null ::: +::: +6 26rje:*:8:8:RJE Owner:/usr/spool/rje: ::: +::: +6 27changes:*:11:11:system change log:/: ::: +::: +6 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh ::: +::: +6 29man:*:99:995:On-line Manual Owner:/: ::: +::: +6 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh ::: +::: +8 1r oot EMpNB8Zp56 0 0 ::: / /bin/sh +::: +11 2r oottcsh * 0 0 ::: running tcsh [cbm] / /bin/tcsh +::: +10 3s ysadm * 0 0 ::: V Administration /usr/admin /bin/sh +::: +9 4d iag * 0 996 ::: Diagnostics /usr/diags /bin/csh +::: +8 5d aemon * 1 1 ::: / /bin/sh +::: +10 6b in * 2 2 ::: Tools Owner /bin /dev/null +::: +8 7n uucp BJnuQbAo 6 10 ::: /usr/spool/uucppublic /usr/lib/uucp/uucico +::: +7 8u ucp * 3 5 ::: /usr/lib/uucp +::: +10 9s ys * 4 0 ::: Activity Owner /usr/adm /bin/sh +::: +10 10 adm * 5 3 ::: Files Owner /usr/adm /bin/sh +::: +10 11 lp * 9 9 ::: Spooler Owner /var/spool/lp /bin/sh +::: +10 12 auditor * 11 0 ::: Activity Owner /auditor /bin/sh +::: +10 13 dbadmin * 12 0 ::: Database Owner /dbadmin /bin/sh +::: +11 14 bootes dcon 50 1 ::: Killian (DO NOT REMOVE) /tmp +::: +11 15 cdjuke dcon 51 1 ::: Killian (DO NOT REMOVE) /tmp +::: +11 16 rfindd * 66 1 ::: Daemon and Fsdump /var/rfindd /bin/sh +::: +9 17 EZsetup * 992 998 ::: Setup /var/sysadmdesktop/EZsetup /bin/csh +::: +9 18 demos * 993 997 ::: User /usr/demos /bin/csh +::: +9 19 tutor * 994 997 ::: User /usr/tutor /bin/csh +::: +10 20 tour * 995 997 ::: Space Tour /usr/people/tour /bin/csh +::: +9 21 guest nfP4/Wpvio/Rw 998 998 ::: Account /usr/people/guest /bin/csh +::: +9 22 4Dgifts 0nWRTZsOMt. 999 998 ::: Account /usr/people/4Dgifts /bin/csh +::: +10 23 nobody * 60001 60001 ::: nobody uid /dev/null /dev/null +::: +10 24 noaccess * 60002 60002 ::: no access /dev/null /dev/null +::: +10 25 nobody * -2 -2 ::: nobody uid /dev/null /dev/null +::: +8 26 rje * 8 8 ::: Owner /usr/spool/rje +::: +9 27 changes * 11 11 ::: change log / +::: +9 28 dist sorry 9999 4 ::: distributions /v/adm/dist /v/bin/sh +::: +9 29 man * 99 995 ::: Manual Owner / +::: +11 30 phoneca * 991 991 ::: call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.be b/src/tool/awk/testdata/output/t.be new file mode 100644 index 0000000..7c0bfd2 --- /dev/null +++ b/src/tool/awk/testdata/output/t.be @@ -0,0 +1,2 @@ + +199 diff --git a/src/tool/awk/testdata/output/t.beginexit b/src/tool/awk/testdata/output/t.beginexit new file mode 100644 index 0000000..0d69a27 --- /dev/null +++ b/src/tool/awk/testdata/output/t.beginexit @@ -0,0 +1,10 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen diff --git a/src/tool/awk/testdata/output/t.beginnext b/src/tool/awk/testdata/output/t.beginnext new file mode 100644 index 0000000..390fd54 --- /dev/null +++ b/src/tool/awk/testdata/output/t.beginnext @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen +tenth + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.break b/src/tool/awk/testdata/output/t.break new file mode 100644 index 0000000..78a93fc --- /dev/null +++ b/src/tool/awk/testdata/output/t.break @@ -0,0 +1,170 @@ +mel is alphabetic +bwk is alphabetic +ken is alphabetic +srb is alphabetic +lem is alphabetic +scj is alphabetic +rhm is alphabetic +shen is alphabetic +sif is alphabetic +pjw is alphabetic +nls is alphabetic +dmr is alphabetic +cda is alphabetic +bs is alphabetic +llc is alphabetic +mb is alphabetic +ava is alphabetic +jrv is alphabetic +bin is alphabetic +greg is alphabetic +dict is alphabetic +lck is alphabetic +rje is alphabetic +lwf is alphabetic +dave is alphabetic +jhc is alphabetic +agf is alphabetic +doug is alphabetic +valerie is alphabetic +jca is alphabetic +bbs is alphabetic +moh is alphabetic +xchar is alphabetic +tbl is alphabetic +s is alphabetic +tgs is alphabetic +met is alphabetic +jck is alphabetic +port is alphabetic +sue is alphabetic +root is alphabetic +bsb is alphabetic +jeg is alphabetic +eag is alphabetic +pdj is alphabetic +tpc is alphabetic +cvw is alphabetic +rwm is alphabetic +avg is alphabetic +eg is alphabetic +jam is alphabetic +dl is alphabetic +lgm is alphabetic +cmb is alphabetic +jwr is alphabetic +gdb is alphabetic +marc is alphabetic +usg is alphabetic +ggr is alphabetic +daemon is alphabetic +mihalis is alphabetic +honey is alphabetic +tad is alphabetic +acs is alphabetic +uucp is alphabetic +raf is alphabetic +adh is alphabetic +kec is alphabetic +craig is alphabetic +donmac is alphabetic +jj is alphabetic +ravi is alphabetic +drw is alphabetic +stars is alphabetic +mrg is alphabetic +jcb is alphabetic +ralph is alphabetic +tom is alphabetic +sjb is alphabetic +haight is alphabetic +sharon is alphabetic +chuck is alphabetic +dsj is alphabetic +bill is alphabetic +god is alphabetic +sys is alphabetic +meh is alphabetic +jon is alphabetic +dan is alphabetic +fox is alphabetic +dale is alphabetic +kab is alphabetic +buz is alphabetic +asc is alphabetic +jas is alphabetic +trt is alphabetic +wsb is alphabetic +dwh is alphabetic +ktf is alphabetic +lr is alphabetic +dlc is alphabetic +dls is alphabetic +jwf is alphabetic +mash is alphabetic +ars is alphabetic +vgl is alphabetic +jfo is alphabetic +rab is alphabetic +pd is alphabetic +jns is alphabetic +spm is alphabetic +rob is alphabetic +egb is alphabetic +hm is alphabetic +mhb is alphabetic +aed is alphabetic +cpb is alphabetic +evp is alphabetic +ber is alphabetic +men is alphabetic +mitch is alphabetic +ast is alphabetic +jfr is alphabetic +lax is alphabetic +nel is alphabetic +blue is alphabetic +jfk is alphabetic +njas is alphabetic +ddwar is alphabetic +gopi is alphabetic +jk is alphabetic +learn is alphabetic +low is alphabetic +nac is alphabetic +sidor is alphabetic +running is alphabetic +and is alphabetic +nobody is alphabetic +no is alphabetic +nobody is alphabetic +change is alphabetic +call is alphabetic +oot is alphabetic +oottcsh is alphabetic +ysadm is alphabetic +iag is alphabetic +aemon is alphabetic +in is alphabetic +uucp is alphabetic +ucp is alphabetic +ys is alphabetic +adm is alphabetic +lp is alphabetic +auditor is alphabetic +dbadmin is alphabetic +bootes is alphabetic +cdjuke is alphabetic +rfindd is alphabetic +demos is alphabetic +tutor is alphabetic +tour is alphabetic +guest is alphabetic +nobody is alphabetic +noaccess is alphabetic +nobody is alphabetic +rje is alphabetic +changes is alphabetic +dist is alphabetic +man is alphabetic +phoneca is alphabetic diff --git a/src/tool/awk/testdata/output/t.break1 b/src/tool/awk/testdata/output/t.break1 new file mode 100644 index 0000000..e5a28c3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.break1 @@ -0,0 +1,12 @@ +1 /dev/rrp3: +2 +3 17379 mel +4 16693 bwk me +5 16116 ken him someone else +6 15713 srb +7 11895 lem +8 10409 scj +9 10252 rhm +10 9853 shen +got here +10 9853 shen diff --git a/src/tool/awk/testdata/output/t.break2 b/src/tool/awk/testdata/output/t.break2 new file mode 100644 index 0000000..e5a28c3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.break2 @@ -0,0 +1,12 @@ +1 /dev/rrp3: +2 +3 17379 mel +4 16693 bwk me +5 16116 ken him someone else +6 15713 srb +7 11895 lem +8 10409 scj +9 10252 rhm +10 9853 shen +got here +10 9853 shen diff --git a/src/tool/awk/testdata/output/t.break3 b/src/tool/awk/testdata/output/t.break3 new file mode 100644 index 0000000..a009e99 --- /dev/null +++ b/src/tool/awk/testdata/output/t.break3 @@ -0,0 +1,844 @@ +inner 1 2 +outer 2 2 +outer 1 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +outer 6 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +outer 2 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +outer 5 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +outer 2 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +outer 2 2 +inner 1 2 +outer 2 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +outer 6 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +outer 6 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +outer 5 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +outer 3 2 +inner 1 2 +inner 2 2 +inner 3 2 +outer 4 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +outer 5 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +outer 9 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +inner 11 2 +outer 12 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +outer 9 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +outer 9 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +outer 8 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +inner 11 2 +outer 12 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +inner 11 2 +outer 12 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +inner 11 2 +outer 12 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +outer 11 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +outer 9 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +outer 10 2 +inner 1 2 +inner 2 2 +inner 3 2 +inner 4 2 +inner 5 2 +inner 6 2 +inner 7 2 +inner 8 2 +inner 9 2 +inner 10 2 +inner 11 2 +outer 12 2 diff --git a/src/tool/awk/testdata/output/t.bug1 b/src/tool/awk/testdata/output/t.bug1 new file mode 100644 index 0000000..71e7974 --- /dev/null +++ b/src/tool/awk/testdata/output/t.bug1 @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 +16693 me +16116 him +15713 +11895 +10409 +10252 +9853 +9748 +9492 +9190 +8912 +8895 +8491 +8372 +8252 +7450 +7360 +7273 +7080 +7063 +6567 +6462 +6291 +6211 +5671 +5373 +5220 +5167 +5007 +3963 +3895 +3796 +3481 +3200 +2845 +2774 +2641 +2566 +2511 +2479 +2127 +1989 +1989 +1933 +1801 +1590 +1385 +1370 +1316 +1205 +1194 +1153 +1150 +1031 +1018 +950 +931 +898 +865 +822 +803 +700 +624 +559 +541 +523 +495 +456 +414 +386 +375 +348 +344 +327 +288 +272 +263 +253 +251 +248 +224 +222 +213 +201 +184 +176 +166 +163 +144 +143 +123 +116 +95 +80 +79 +79 +64 +62 +56 +54 +47 +45 +45 +44 +43 +43 +37 +32 +31 +29 +25 +22 +15 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User tcsh +3sysadm:*:0:0:System Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom (DO +15cdjuke:dcon:51:1:Tom (DO +16rfindd:*:66:1:Rfind and +17EZsetup:*:992:998:System +18demos:*:993:997:Demonstration +19tutor:*:994:997:Tutorial +20tour:*:995:997:IRIS Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +23nobody:*:60001:60001:SVR4 uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid access:/dev/null:/dev/null +25nobody:*:-2:-2:original uid:/dev/null:/dev/null +26rje:*:8:8:RJE +27changes:*:11:11:system log:/: +28dist:sorry:9999:4:file +29man:*:99:995:On-line Owner:/: +30phoneca:*:991:991:phone log +1r EMpNB8Zp56 +2r * +3s * +4d * +5d * +6b * +7n BJnuQbAo +8u * +9s * +10 * +11 * +12 * +13 * +14 dcon +15 dcon +16 * +17 * +18 * +19 * +20 * +21 nfP4/Wpvio/Rw +22 0nWRTZsOMt. +23 * +24 * +25 * +26 * +27 * +28 sorry +29 * +30 * diff --git a/src/tool/awk/testdata/output/t.builtins b/src/tool/awk/testdata/output/t.builtins new file mode 100644 index 0000000..77f1ea6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.builtins @@ -0,0 +1,67 @@ +17379 5 9.76302 131.829 131 8103.08 +16693 5 9.72274 129.201 129 20.0855 +16116 5 9.68757 126.949 126 403.429 +15713 5 9.66224 125.352 125 20.0855 +11895 5 9.38387 109.064 109 148.413 +10409 5 9.25043 102.025 102 8103.08 +10252 5 9.23523 101.252 101 7.38906 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 48 0 1 1 2.71828 +2roottcsh:*:0:0:Super-User 26 0.693147 1.41421 1 7.38906 +3sysadm:*:0:0:System 20 1.09861 1.73205 1 20.0855 +4diag:*:0:996:Hardware 22 1.38629 2 2 54.5982 +5daemon:*:1:1:daemons:/:/bin/sh 31 1.60944 2.23607 2 148.413 +6bin:*:2:2:System 17 1.79176 2.44949 2 403.429 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 74 1.94591 2.64575 2 1096.63 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 37 2.07944 2.82843 2 2980.96 +9sys:*:4:0:System 17 2.19722 3 3 8103.08 +10adm:*:5:3:Accounting 22 2.30259 3.16228 3 1 +11lp:*:9:9:Print 16 2.3979 3.31662 3 2.71828 +12auditor:*:11:0:Audit 22 2.48491 3.4641 3 7.38906 +13dbadmin:*:12:0:Security 25 2.56495 3.60555 3 20.0855 +14bootes:dcon:50:1:Tom 22 2.63906 3.74166 3 54.5982 +15cdjuke:dcon:51:1:Tom 22 2.70805 3.87298 3 148.413 +16rfindd:*:66:1:Rfind 21 2.77259 4 4 403.429 +17EZsetup:*:992:998:System 26 2.83321 4.12311 4 1096.63 +18demos:*:993:997:Demonstration 31 2.89037 4.24264 4 2980.96 +19tutor:*:994:997:Tutorial 26 2.94444 4.3589 4 8103.08 +20tour:*:995:997:IRIS 21 2.99573 4.47214 4 1 +21guest:nfP4/Wpvio/Rw:998:998:Guest 35 3.04452 4.58258 4 2.71828 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 37 5.41165 14.9666 14 54.5982 +23nobody:*:60001:60001:SVR4 27 3.13549 4.79583 4 20.0855 +24noaccess:*:60002:60002:uid 28 3.17805 4.89898 4 54.5982 +25nobody:*:-2:-2:original 25 3.21888 5 5 148.413 +26rje:*:8:8:RJE 15 3.2581 5.09902 5 403.429 +27changes:*:11:11:system 24 3.29584 5.19615 5 1096.63 +28dist:sorry:9999:4:file 24 3.3322 5.2915 5 2980.96 +29man:*:99:995:On-line 22 3.3673 5.38516 5 8103.08 +30phoneca:*:991:991:phone 25 3.4012 5.47723 5 1 +1r 2 0 1 1 2.71828 +2r 2 0.693147 1.41421 1 7.38906 +3s 2 1.09861 1.73205 1 20.0855 +4d 2 1.38629 2 2 54.5982 +5d 2 1.60944 2.23607 2 148.413 +6b 2 1.79176 2.44949 2 403.429 +7n 2 1.94591 2.64575 2 1096.63 +8u 2 2.07944 2.82843 2 2980.96 +9s 2 2.19722 3 3 8103.08 +10 2 2.30259 3.16228 3 1 +11 2 2.3979 3.31662 3 2.71828 +12 2 2.48491 3.4641 3 7.38906 +13 2 2.56495 3.60555 3 20.0855 +14 2 2.63906 3.74166 3 54.5982 +15 2 2.70805 3.87298 3 148.413 +16 2 2.77259 4 4 403.429 +17 2 2.83321 4.12311 4 1096.63 +18 2 2.89037 4.24264 4 2980.96 +19 2 2.94444 4.3589 4 8103.08 +20 2 2.99573 4.47214 4 1 +21 2 3.04452 4.58258 4 2.71828 +22 2 3.09104 4.69042 4 7.38906 +23 2 3.13549 4.79583 4 20.0855 +24 2 3.17805 4.89898 4 54.5982 +25 2 3.21888 5 5 148.413 +26 2 3.2581 5.09902 5 403.429 +27 2 3.29584 5.19615 5 1096.63 +28 2 3.3322 5.2915 5 2980.96 +29 2 3.3673 5.38516 5 8103.08 +30 2 3.4012 5.47723 5 1 diff --git a/src/tool/awk/testdata/output/t.cat b/src/tool/awk/testdata/output/t.cat new file mode 100644 index 0000000..741811c --- /dev/null +++ b/src/tool/awk/testdata/output/t.cat @@ -0,0 +1,796 @@ + /dev/rrp3: +/dev/rrp3: is + is /dev/rrp3: +10 10 + + is + is +0 0 +mel 17379 +17379 is mel +mel is 17379 +8 8 +bwk 16693 +16693 is bwk +bwk is 16693 +8 8 +ken 16116 +16116 is ken +ken is 16116 +8 8 +srb 15713 +15713 is srb +srb is 15713 +8 8 +lem 11895 +11895 is lem +lem is 11895 +8 8 +scj 10409 +10409 is scj +scj is 10409 +8 8 +rhm 10252 +10252 is rhm +rhm is 10252 +8 8 +shen 9853 +9853 is shen +shen is 9853 +8 8 +a68 9748 +9748 is a68 +a68 is 9748 +7 7 +sif 9492 +9492 is sif +sif is 9492 +7 7 +pjw 9190 +9190 is pjw +pjw is 9190 +7 7 +nls 8912 +8912 is nls +nls is 8912 +7 7 +dmr 8895 +8895 is dmr +dmr is 8895 +7 7 +cda 8491 +8491 is cda +cda is 8491 +7 7 +bs 8372 +8372 is bs +bs is 8372 +6 6 +llc 8252 +8252 is llc +llc is 8252 +7 7 +mb 7450 +7450 is mb +mb is 7450 +6 6 +ava 7360 +7360 is ava +ava is 7360 +7 7 +jrv 7273 +7273 is jrv +jrv is 7273 +7 7 +bin 7080 +7080 is bin +bin is 7080 +7 7 +greg 7063 +7063 is greg +greg is 7063 +8 8 +dict 6567 +6567 is dict +dict is 6567 +8 8 +lck 6462 +6462 is lck +lck is 6462 +7 7 +rje 6291 +6291 is rje +rje is 6291 +7 7 +lwf 6211 +6211 is lwf +lwf is 6211 +7 7 +dave 5671 +5671 is dave +dave is 5671 +8 8 +jhc 5373 +5373 is jhc +jhc is 5373 +7 7 +agf 5220 +5220 is agf +agf is 5220 +7 7 +doug 5167 +5167 is doug +doug is 5167 +8 8 +valerie 5007 +5007 is valerie +valerie is 5007 +11 11 +jca 3963 +3963 is jca +jca is 3963 +7 7 +bbs 3895 +3895 is bbs +bbs is 3895 +7 7 +moh 3796 +3796 is moh +moh is 3796 +7 7 +xchar 3481 +3481 is xchar +xchar is 3481 +9 9 +tbl 3200 +3200 is tbl +tbl is 3200 +7 7 +s 2845 +2845 is s +s is 2845 +5 5 +tgs 2774 +2774 is tgs +tgs is 2774 +7 7 +met 2641 +2641 is met +met is 2641 +7 7 +jck 2566 +2566 is jck +jck is 2566 +7 7 +port 2511 +2511 is port +port is 2511 +8 8 +sue 2479 +2479 is sue +sue is 2479 +7 7 +root 2127 +2127 is root +root is 2127 +8 8 +bsb 1989 +1989 is bsb +bsb is 1989 +7 7 +jeg 1989 +1989 is jeg +jeg is 1989 +7 7 +eag 1933 +1933 is eag +eag is 1933 +7 7 +pdj 1801 +1801 is pdj +pdj is 1801 +7 7 +tpc 1590 +1590 is tpc +tpc is 1590 +7 7 +cvw 1385 +1385 is cvw +cvw is 1385 +7 7 +rwm 1370 +1370 is rwm +rwm is 1370 +7 7 +avg 1316 +1316 is avg +avg is 1316 +7 7 +eg 1205 +1205 is eg +eg is 1205 +6 6 +jam 1194 +1194 is jam +jam is 1194 +7 7 +dl 1153 +1153 is dl +dl is 1153 +6 6 +lgm 1150 +1150 is lgm +lgm is 1150 +7 7 +cmb 1031 +1031 is cmb +cmb is 1031 +7 7 +jwr 1018 +1018 is jwr +jwr is 1018 +7 7 +gdb 950 +950 is gdb +gdb is 950 +6 6 +marc 931 +931 is marc +marc is 931 +7 7 +usg 898 +898 is usg +usg is 898 +6 6 +ggr 865 +865 is ggr +ggr is 865 +6 6 +daemon 822 +822 is daemon +daemon is 822 +9 9 +mihalis 803 +803 is mihalis +mihalis is 803 +10 10 +honey 700 +700 is honey +honey is 700 +8 8 +tad 624 +624 is tad +tad is 624 +6 6 +acs 559 +559 is acs +acs is 559 +6 6 +uucp 541 +541 is uucp +uucp is 541 +7 7 +raf 523 +523 is raf +raf is 523 +6 6 +adh 495 +495 is adh +adh is 495 +6 6 +kec 456 +456 is kec +kec is 456 +6 6 +craig 414 +414 is craig +craig is 414 +8 8 +donmac 386 +386 is donmac +donmac is 386 +9 9 +jj 375 +375 is jj +jj is 375 +5 5 +ravi 348 +348 is ravi +ravi is 348 +7 7 +drw 344 +344 is drw +drw is 344 +6 6 +stars 327 +327 is stars +stars is 327 +8 8 +mrg 288 +288 is mrg +mrg is 288 +6 6 +jcb 272 +272 is jcb +jcb is 272 +6 6 +ralph 263 +263 is ralph +ralph is 263 +8 8 +tom 253 +253 is tom +tom is 253 +6 6 +sjb 251 +251 is sjb +sjb is 251 +6 6 +haight 248 +248 is haight +haight is 248 +9 9 +sharon 224 +224 is sharon +sharon is 224 +9 9 +chuck 222 +222 is chuck +chuck is 222 +8 8 +dsj 213 +213 is dsj +dsj is 213 +6 6 +bill 201 +201 is bill +bill is 201 +7 7 +god 184 +184 is god +god is 184 +6 6 +sys 176 +176 is sys +sys is 176 +6 6 +meh 166 +166 is meh +meh is 166 +6 6 +jon 163 +163 is jon +jon is 163 +6 6 +dan 144 +144 is dan +dan is 144 +6 6 +fox 143 +143 is fox +fox is 143 +6 6 +dale 123 +123 is dale +dale is 123 +7 7 +kab 116 +116 is kab +kab is 116 +6 6 +buz 95 +95 is buz +buz is 95 +5 5 +asc 80 +80 is asc +asc is 80 +5 5 +jas 79 +79 is jas +jas is 79 +5 5 +trt 79 +79 is trt +trt is 79 +5 5 +wsb 64 +64 is wsb +wsb is 64 +5 5 +dwh 62 +62 is dwh +dwh is 62 +5 5 +ktf 56 +56 is ktf +ktf is 56 +5 5 +lr 54 +54 is lr +lr is 54 +4 4 +dlc 47 +47 is dlc +dlc is 47 +5 5 +dls 45 +45 is dls +dls is 45 +5 5 +jwf 45 +45 is jwf +jwf is 45 +5 5 +mash 44 +44 is mash +mash is 44 +6 6 +ars 43 +43 is ars +ars is 43 +5 5 +vgl 43 +43 is vgl +vgl is 43 +5 5 +jfo 37 +37 is jfo +jfo is 37 +5 5 +rab 32 +32 is rab +rab is 32 +5 5 +pd 31 +31 is pd +pd is 31 +4 4 +jns 29 +29 is jns +jns is 29 +5 5 +spm 25 +25 is spm +spm is 25 +5 5 +rob 22 +22 is rob +rob is 22 +5 5 +egb 15 +15 is egb +egb is 15 +5 5 +hm 10 +10 is hm +hm is 10 +4 4 +mhb 10 +10 is mhb +mhb is 10 +5 5 +aed 6 +6 is aed +aed is 6 +4 4 +cpb 6 +6 is cpb +cpb is 6 +4 4 +evp 5 +5 is evp +evp is 5 +4 4 +ber 4 +4 is ber +ber is 4 +4 4 +men 4 +4 is men +men is 4 +4 4 +mitch 4 +4 is mitch +mitch is 4 +6 6 +ast 3 +3 is ast +ast is 3 +4 4 +jfr 3 +3 is jfr +jfr is 3 +4 4 +lax 3 +3 is lax +lax is 3 +4 4 +nel 3 +3 is nel +nel is 3 +4 4 +blue 2 +2 is blue +blue is 2 +5 5 +jfk 2 +2 is jfk +jfk is 2 +4 4 +njas 2 +2 is njas +njas is 2 +5 5 +122sec 1 +1 is 122sec +122sec is 1 +7 7 +ddwar 1 +1 is ddwar +ddwar is 1 +6 6 +gopi 1 +1 is gopi +gopi is 1 +5 5 +jk 1 +1 is jk +jk is 1 +3 3 +learn 1 +1 is learn +learn is 1 +6 6 +low 1 +1 is low +low is 1 +4 4 +nac 1 +1 is nac +nac is 1 +4 4 +sidor 1 +1 is sidor +sidor is 1 +6 6 + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh is + is 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +48 48 +running 2roottcsh:*:0:0:Super-User +2roottcsh:*:0:0:Super-User is running +running is 2roottcsh:*:0:0:Super-User +33 33 +V 3sysadm:*:0:0:System +3sysadm:*:0:0:System is V +V is 3sysadm:*:0:0:System +21 21 +Diagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware +4diag:*:0:996:Hardware is Diagnostics:/usr/diags:/bin/csh +Diagnostics:/usr/diags:/bin/csh is 4diag:*:0:996:Hardware +53 53 + 5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh is + is 5daemon:*:1:1:daemons:/:/bin/sh +31 31 +Tools 6bin:*:2:2:System +6bin:*:2:2:System is Tools +Tools is 6bin:*:2:2:System +22 22 + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico is + is 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +74 74 + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: is + is 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +37 37 +Activity 9sys:*:4:0:System +9sys:*:4:0:System is Activity +Activity is 9sys:*:4:0:System +25 25 +Files 10adm:*:5:3:Accounting +10adm:*:5:3:Accounting is Files +Files is 10adm:*:5:3:Accounting +27 27 +Spooler 11lp:*:9:9:Print +11lp:*:9:9:Print is Spooler +Spooler is 11lp:*:9:9:Print +23 23 +Activity 12auditor:*:11:0:Audit +12auditor:*:11:0:Audit is Activity +Activity is 12auditor:*:11:0:Audit +30 30 +Database 13dbadmin:*:12:0:Security +13dbadmin:*:12:0:Security is Database +Database is 13dbadmin:*:12:0:Security +33 33 +Killian 14bootes:dcon:50:1:Tom +14bootes:dcon:50:1:Tom is Killian +Killian is 14bootes:dcon:50:1:Tom +29 29 +Killian 15cdjuke:dcon:51:1:Tom +15cdjuke:dcon:51:1:Tom is Killian +Killian is 15cdjuke:dcon:51:1:Tom +29 29 +Daemon 16rfindd:*:66:1:Rfind +16rfindd:*:66:1:Rfind is Daemon +Daemon is 16rfindd:*:66:1:Rfind +27 27 +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System +17EZsetup:*:992:998:System is Setup:/var/sysadmdesktop/EZsetup:/bin/csh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh is 17EZsetup:*:992:998:System +67 67 +User:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration +18demos:*:993:997:Demonstration is User:/usr/demos:/bin/csh +User:/usr/demos:/bin/csh is 18demos:*:993:997:Demonstration +55 55 +User:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial +19tutor:*:994:997:Tutorial is User:/usr/tutor:/bin/csh +User:/usr/tutor:/bin/csh is 19tutor:*:994:997:Tutorial +50 50 +Space 20tour:*:995:997:IRIS +20tour:*:995:997:IRIS is Space +Space is 20tour:*:995:997:IRIS +26 26 +Account:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest +21guest:nfP4/Wpvio/Rw:998:998:Guest is Account:/usr/people/guest:/bin/csh +Account:/usr/people/guest:/bin/csh is 21guest:nfP4/Wpvio/Rw:998:998:Guest +69 69 +Account:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts is Account:/usr/people/4Dgifts:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh is 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +73 73 +nobody 23nobody:*:60001:60001:SVR4 +23nobody:*:60001:60001:SVR4 is nobody +nobody is 23nobody:*:60001:60001:SVR4 +33 33 +no 24noaccess:*:60002:60002:uid +24noaccess:*:60002:60002:uid is no +no is 24noaccess:*:60002:60002:uid +30 30 +nobody 25nobody:*:-2:-2:original +25nobody:*:-2:-2:original is nobody +nobody is 25nobody:*:-2:-2:original +31 31 +Owner:/usr/spool/rje: 26rje:*:8:8:RJE +26rje:*:8:8:RJE is Owner:/usr/spool/rje: +Owner:/usr/spool/rje: is 26rje:*:8:8:RJE +36 36 +change 27changes:*:11:11:system +27changes:*:11:11:system is change +change is 27changes:*:11:11:system +30 30 +distributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file +28dist:sorry:9999:4:file is distributions:/v/adm/dist:/v/bin/sh +distributions:/v/adm/dist:/v/bin/sh is 28dist:sorry:9999:4:file +59 59 +Manual 29man:*:99:995:On-line +29man:*:99:995:On-line is Manual +Manual is 29man:*:99:995:On-line +28 28 +call 30phoneca:*:991:991:phone +30phoneca:*:991:991:phone is call +call is 30phoneca:*:991:991:phone +29 29 +oot 1r +1r is oot +oot is 1r +5 5 +oottcsh 2r +2r is oottcsh +oottcsh is 2r +9 9 +ysadm 3s +3s is ysadm +ysadm is 3s +7 7 +iag 4d +4d is iag +iag is 4d +5 5 +aemon 5d +5d is aemon +aemon is 5d +7 7 +in 6b +6b is in +in is 6b +4 4 +uucp 7n +7n is uucp +uucp is 7n +6 6 +ucp 8u +8u is ucp +ucp is 8u +5 5 +ys 9s +9s is ys +ys is 9s +4 4 +adm 10 +10 is adm +adm is 10 +5 5 +lp 11 +11 is lp +lp is 11 +4 4 +auditor 12 +12 is auditor +auditor is 12 +9 9 +dbadmin 13 +13 is dbadmin +dbadmin is 13 +9 9 +bootes 14 +14 is bootes +bootes is 14 +8 8 +cdjuke 15 +15 is cdjuke +cdjuke is 15 +8 8 +rfindd 16 +16 is rfindd +rfindd is 16 +8 8 +EZsetup 17 +17 is EZsetup +EZsetup is 17 +9 9 +demos 18 +18 is demos +demos is 18 +7 7 +tutor 19 +19 is tutor +tutor is 19 +7 7 +tour 20 +20 is tour +tour is 20 +6 6 +guest 21 +21 is guest +guest is 21 +7 7 +4Dgifts 22 +22 is 4Dgifts +4Dgifts is 22 +9 9 +nobody 23 +23 is nobody +nobody is 23 +8 8 +noaccess 24 +24 is noaccess +noaccess is 24 +10 10 +nobody 25 +25 is nobody +nobody is 25 +8 8 +rje 26 +26 is rje +rje is 26 +5 5 +changes 27 +27 is changes +changes is 27 +9 9 +dist 28 +28 is dist +dist is 28 +6 6 +man 29 +29 is man +man is 29 +5 5 +phoneca 30 +30 is phoneca +phoneca is 30 +9 9 diff --git a/src/tool/awk/testdata/output/t.cat1 b/src/tool/awk/testdata/output/t.cat1 new file mode 100644 index 0000000..be3dbf6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.cat1 @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.cat2 b/src/tool/awk/testdata/output/t.cat2 new file mode 100644 index 0000000..5e69dc4 --- /dev/null +++ b/src/tool/awk/testdata/output/t.cat2 @@ -0,0 +1,199 @@ +/dev/rrp3:* +* +17379* mel +16693* bwk me +16116* ken him someone else +15713* srb +11895* lem +10409* scj +10252* rhm +9853* shen +9748* a68 +9492* sif +9190* pjw +8912* nls +8895* dmr +8491* cda +8372* bs +8252* llc +7450* mb +7360* ava +7273* jrv +7080* bin +7063* greg +6567* dict +6462* lck +6291* rje +6211* lwf +5671* dave +5373* jhc +5220* agf +5167* doug +5007* valerie +3963* jca +3895* bbs +3796* moh +3481* xchar +3200* tbl +2845* s +2774* tgs +2641* met +2566* jck +2511* port +2479* sue +2127* root +1989* bsb +1989* jeg +1933* eag +1801* pdj +1590* tpc +1385* cvw +1370* rwm +1316* avg +1205* eg +1194* jam +1153* dl +1150* lgm +1031* cmb +1018* jwr +950* gdb +931* marc +898* usg +865* ggr +822* daemon +803* mihalis +700* honey +624* tad +559* acs +541* uucp +523* raf +495* adh +456* kec +414* craig +386* donmac +375* jj +348* ravi +344* drw +327* stars +288* mrg +272* jcb +263* ralph +253* tom +251* sjb +248* haight +224* sharon +222* chuck +213* dsj +201* bill +184* god +176* sys +166* meh +163* jon +144* dan +143* fox +123* dale +116* kab +95* buz +80* asc +79* jas +79* trt +64* wsb +62* dwh +56* ktf +54* lr +47* dlc +45* dls +45* jwf +44* mash +43* ars +43* vgl +37* jfo +32* rab +31* pd +29* jns +25* spm +22* rob +15* egb +10* hm +10* mhb +6* aed +6* cpb +5* evp +4* ber +4* men +4* mitch +3* ast +3* jfr +3* lax +3* nel +2* blue +2* jfk +2* njas +1* 122sec +1* ddwar +1* gopi +1* jk +1* learn +1* low +1* nac +1* sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh* +2roottcsh:*:0:0:Super-User* running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System* V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware* Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh* +6bin:*:2:2:System* Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico* +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:* +9sys:*:4:0:System* Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting* Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print* Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit* Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security* Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom* Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom* Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind* Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System* Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration* User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial* User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS* Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest* Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts* Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4* nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid* no access:/dev/null:/dev/null +25nobody:*:-2:-2:original* nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE* Owner:/usr/spool/rje: +27changes:*:11:11:system* change log:/: +28dist:sorry:9999:4:file* distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line* Manual Owner:/: +30phoneca:*:991:991:phone* call log [tom]:/v/adm/log:/v/bin/sh +1r* oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r* oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s* ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d* iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d* aemon * 1 1 daemons / /bin/sh +6b* in * 2 2 System Tools Owner /bin /dev/null +7n* uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u* ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s* ys * 4 0 System Activity Owner /usr/adm /bin/sh +10* adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11* lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12* auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13* dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14* bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15* cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16* rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17* EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18* demos * 993 997 Demonstration User /usr/demos /bin/csh +19* tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20* tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21* guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22* 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23* nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24* noaccess * 60002 60002 uid no access /dev/null /dev/null +25* nobody * -2 -2 original nobody uid /dev/null /dev/null +26* rje * 8 8 RJE Owner /usr/spool/rje +27* changes * 11 11 system change log / +28* dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29* man * 99 995 On-line Manual Owner / +30* phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.cmp b/src/tool/awk/testdata/output/t.cmp new file mode 100644 index 0000000..bb9fac7 --- /dev/null +++ b/src/tool/awk/testdata/output/t.cmp @@ -0,0 +1,193 @@ +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.coerce b/src/tool/awk/testdata/output/t.coerce new file mode 100644 index 0000000..bf953a1 --- /dev/null +++ b/src/tool/awk/testdata/output/t.coerce @@ -0,0 +1,2 @@ + 199 + 199 diff --git a/src/tool/awk/testdata/output/t.coerce2 b/src/tool/awk/testdata/output/t.coerce2 new file mode 100644 index 0000000..00f8bcb --- /dev/null +++ b/src/tool/awk/testdata/output/t.coerce2 @@ -0,0 +1,995 @@ +0 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +1 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 +0 +123 +0 +123456 +1 0 diff --git a/src/tool/awk/testdata/output/t.comment b/src/tool/awk/testdata/output/t.comment new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.comment1 b/src/tool/awk/testdata/output/t.comment1 new file mode 100644 index 0000000..aa34eab --- /dev/null +++ b/src/tool/awk/testdata/output/t.comment1 @@ -0,0 +1 @@ +199 diff --git a/src/tool/awk/testdata/output/t.concat b/src/tool/awk/testdata/output/t.concat new file mode 100644 index 0000000..a62e62f --- /dev/null +++ b/src/tool/awk/testdata/output/t.concat @@ -0,0 +1,199 @@ +/dev/rrp3:1 +2 +173793 +166934 +161165 +157136 +118957 +104098 +102529 +985310 +974811 +949212 +919013 +891214 +889515 +849116 +837217 +825218 +745019 +736020 +727321 +708022 +706323 +656724 +646225 +629126 +621127 +567128 +537329 +522030 +516731 +500732 +396333 +389534 +379635 +348136 +320037 +284538 +277439 +264140 +256641 +251142 +247943 +212744 +198945 +198946 +193347 +180148 +159049 +138550 +137051 +131652 +120553 +119454 +115355 +115056 +103157 +101858 +95059 +93160 +89861 +86562 +82263 +80364 +70065 +62466 +55967 +54168 +52369 +49570 +45671 +41472 +38673 +37574 +34875 +34476 +32777 +28878 +27279 +26380 +25381 +25182 +24883 +22484 +22285 +21386 +20187 +18488 +17689 +16690 +16391 +14492 +14393 +12394 +11695 +9596 +8097 +7998 +7999 +64100 +62101 +56102 +54103 +47104 +45105 +45106 +44107 +43108 +43109 +37110 +32111 +31112 +29113 +25114 +22115 +15116 +10117 +10118 +6119 +6120 +5121 +4122 +4123 +4124 +3125 +3126 +3127 +3128 +2129 +2130 +2131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh140 +2roottcsh:*:0:0:Super-User141 +3sysadm:*:0:0:System142 +4diag:*:0:996:Hardware143 +5daemon:*:1:1:daemons:/:/bin/sh144 +6bin:*:2:2:System145 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico146 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:147 +9sys:*:4:0:System148 +10adm:*:5:3:Accounting149 +11lp:*:9:9:Print150 +12auditor:*:11:0:Audit151 +13dbadmin:*:12:0:Security152 +14bootes:dcon:50:1:Tom153 +15cdjuke:dcon:51:1:Tom154 +16rfindd:*:66:1:Rfind155 +17EZsetup:*:992:998:System156 +18demos:*:993:997:Demonstration157 +19tutor:*:994:997:Tutorial158 +20tour:*:995:997:IRIS159 +21guest:nfP4/Wpvio/Rw:998:998:Guest160 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts161 +23nobody:*:60001:60001:SVR4162 +24noaccess:*:60002:60002:uid163 +25nobody:*:-2:-2:original164 +26rje:*:8:8:RJE165 +27changes:*:11:11:system166 +28dist:sorry:9999:4:file167 +29man:*:99:995:On-line168 +30phoneca:*:991:991:phone169 +1r170 +2r171 +3s172 +4d173 +5d174 +6b175 +7n176 +8u177 +9s178 +10179 +11180 +12181 +13182 +14183 +15184 +16185 +17186 +18187 +19188 +20189 +21190 +22191 +23192 +24193 +25194 +26195 +27196 +28197 +29198 +30199 diff --git a/src/tool/awk/testdata/output/t.cond b/src/tool/awk/testdata/output/t.cond new file mode 100644 index 0000000..5cdd627 --- /dev/null +++ b/src/tool/awk/testdata/output/t.cond @@ -0,0 +1,398 @@ + +e + + +17379 +7 +bwk +6 +16116 +6 +15713 +7 +11895 +8 +10409 +4 +10252 +2 +9853 +9 +9748 +9 +9492 +9 +9190 +9 +8912 +9 +dmr +9 +cda +9 +bs +8 +llc +8 +7450 +7 +ava +7 +jrv +7 +bin +8 +greg +7 +dict +6 +6462 +6 +6291 +9 +lwf +6 +5671 +7 +5373 +7 +agf +5 +doug +6 +5007 +5 +3963 +9 +bbs +9 +moh +9 +3481 +8 +3200 +3 +2845 +8 +2774 +7 +2641 +6 +2566 +6 +2511 +5 +sue +7 +2127 +2 +bsb +9 +1989 +9 +1933 +9 +1801 +8 +1590 +9 +cvw +8 +rwm +7 +avg +3 +eg +2 +1194 +9 +dl +5 +1150 +5 +cmb +3 +jwr +1 +950 +9 +931 +9 +898 +9 +ggr +8 +822 +8 +803 +8 +honey +7 +624 +6 +acs +9 +uucp +5 +523 +5 +adh +9 +456 +6 +craig +4 +donmac +8 +jj +7 +348 +8 +drw +4 +stars +7 +mrg +8 +272 +7 +263 +6 +253 +5 +251 +5 +248 +8 +224 +4 +chuck +2 +dsj +3 +bill +2 +god +8 +sys +7 +166 +6 +jon +6 +144 +4 +fox +4 +123 +3 +116 +6 +buz +9 +asc +8 +79 +9 +79 +9 +64 +6 +dwh +6 +ktf +6 +lr +5 +dlc +7 +dls +5 +jwf +5 +44 +4 +ars +4 +43 +4 +37 +7 +32 +3 +31 +3 +jns +9 +25 +5 +22 +2 +egb +5 +hm +1 +10 +1 +aed +6 +cpb +6 +evp +5 +ber +4 +4 +4 +4 +4 +ast +3 +3 +3 +3 +3 +3 +3 +blue +2 +2 +2 +2 +2 +122sec +1 +ddwar +1 +gopi +1 +jk +1 +1 +1 +low +1 +1 +1 +1 +1 + +r +running +r +3sysadm:*:0:0:System +y +Diagnostics:/usr/diags:/bin/csh +i + +d +Tools +i + +u + +u +Activity +y +Files +a +Spooler +l +Activity +a +Database +d +Killian +b +Killian +c +Daemon +r +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +E +User:/usr/demos:/bin/csh +d +User:/usr/tutor:/bin/csh +t +Space +t +Account:/usr/people/guest:/bin/csh +g +Account:/usr/people/4Dgifts:/bin/csh +4 +nobody +n +no +n +nobody +n +Owner:/usr/spool/rje: +r +change +c +distributions:/v/adm/dist:/v/bin/sh +d +Manual +m +30phoneca:*:991:991:phone +p +oot +r +oottcsh +r +3s +s +4d +d +aemon +d +in +b +uucp +n +8u +u +9s +s +adm +1 +lp +1 +auditor +2 +13 +3 +bootes +4 +cdjuke +5 +16 +6 +EZsetup +7 +demos +8 +tutor +9 +20 +2 +guest +2 +4Dgifts +2 +nobody +3 +noaccess +4 +nobody +5 +26 +6 +changes +7 +dist +8 +29 +9 +30 +3 diff --git a/src/tool/awk/testdata/output/t.contin b/src/tool/awk/testdata/output/t.contin new file mode 100644 index 0000000..715eb4d --- /dev/null +++ b/src/tool/awk/testdata/output/t.contin @@ -0,0 +1,199 @@ +/dev/rrp3: is non-numeric + is all numeric +mel is non-numeric +bwk is non-numeric +ken is non-numeric +srb is non-numeric +lem is non-numeric +scj is non-numeric +rhm is non-numeric +shen is non-numeric +a68 is non-numeric +sif is non-numeric +pjw is non-numeric +nls is non-numeric +dmr is non-numeric +cda is non-numeric +bs is non-numeric +llc is non-numeric +mb is non-numeric +ava is non-numeric +jrv is non-numeric +bin is non-numeric +greg is non-numeric +dict is non-numeric +lck is non-numeric +rje is non-numeric +lwf is non-numeric +dave is non-numeric +jhc is non-numeric +agf is non-numeric +doug is non-numeric +valerie is non-numeric +jca is non-numeric +bbs is non-numeric +moh is non-numeric +xchar is non-numeric +tbl is non-numeric +s is non-numeric +tgs is non-numeric +met is non-numeric +jck is non-numeric +port is non-numeric +sue is non-numeric +root is non-numeric +bsb is non-numeric +jeg is non-numeric +eag is non-numeric +pdj is non-numeric +tpc is non-numeric +cvw is non-numeric +rwm is non-numeric +avg is non-numeric +eg is non-numeric +jam is non-numeric +dl is non-numeric +lgm is non-numeric +cmb is non-numeric +jwr is non-numeric +gdb is non-numeric +marc is non-numeric +usg is non-numeric +ggr is non-numeric +daemon is non-numeric +mihalis is non-numeric +honey is non-numeric +tad is non-numeric +acs is non-numeric +uucp is non-numeric +raf is non-numeric +adh is non-numeric +kec is non-numeric +craig is non-numeric +donmac is non-numeric +jj is non-numeric +ravi is non-numeric +drw is non-numeric +stars is non-numeric +mrg is non-numeric +jcb is non-numeric +ralph is non-numeric +tom is non-numeric +sjb is non-numeric +haight is non-numeric +sharon is non-numeric +chuck is non-numeric +dsj is non-numeric +bill is non-numeric +god is non-numeric +sys is non-numeric +meh is non-numeric +jon is non-numeric +dan is non-numeric +fox is non-numeric +dale is non-numeric +kab is non-numeric +buz is non-numeric +asc is non-numeric +jas is non-numeric +trt is non-numeric +wsb is non-numeric +dwh is non-numeric +ktf is non-numeric +lr is non-numeric +dlc is non-numeric +dls is non-numeric +jwf is non-numeric +mash is non-numeric +ars is non-numeric +vgl is non-numeric +jfo is non-numeric +rab is non-numeric +pd is non-numeric +jns is non-numeric +spm is non-numeric +rob is non-numeric +egb is non-numeric +hm is non-numeric +mhb is non-numeric +aed is non-numeric +cpb is non-numeric +evp is non-numeric +ber is non-numeric +men is non-numeric +mitch is non-numeric +ast is non-numeric +jfr is non-numeric +lax is non-numeric +nel is non-numeric +blue is non-numeric +jfk is non-numeric +njas is non-numeric +122sec is non-numeric +ddwar is non-numeric +gopi is non-numeric +jk is non-numeric +learn is non-numeric +low is non-numeric +nac is non-numeric +sidor is non-numeric +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh is non-numeric +2roottcsh:*:0:0:Super-User is non-numeric +3sysadm:*:0:0:System is non-numeric +4diag:*:0:996:Hardware is non-numeric +5daemon:*:1:1:daemons:/:/bin/sh is non-numeric +6bin:*:2:2:System is non-numeric +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico is non-numeric +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: is non-numeric +9sys:*:4:0:System is non-numeric +10adm:*:5:3:Accounting is non-numeric +11lp:*:9:9:Print is non-numeric +12auditor:*:11:0:Audit is non-numeric +13dbadmin:*:12:0:Security is non-numeric +14bootes:dcon:50:1:Tom is non-numeric +15cdjuke:dcon:51:1:Tom is non-numeric +16rfindd:*:66:1:Rfind is non-numeric +17EZsetup:*:992:998:System is non-numeric +18demos:*:993:997:Demonstration is non-numeric +19tutor:*:994:997:Tutorial is non-numeric +20tour:*:995:997:IRIS is non-numeric +21guest:nfP4/Wpvio/Rw:998:998:Guest is non-numeric +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts is non-numeric +23nobody:*:60001:60001:SVR4 is non-numeric +24noaccess:*:60002:60002:uid is non-numeric +25nobody:*:-2:-2:original is non-numeric +26rje:*:8:8:RJE is non-numeric +27changes:*:11:11:system is non-numeric +28dist:sorry:9999:4:file is non-numeric +29man:*:99:995:On-line is non-numeric +30phoneca:*:991:991:phone is non-numeric +1r is non-numeric +2r is non-numeric +3s is non-numeric +4d is non-numeric +5d is non-numeric +6b is non-numeric +7n is non-numeric +8u is non-numeric +9s is non-numeric +adm is non-numeric +lp is non-numeric +auditor is non-numeric +dbadmin is non-numeric +bootes is non-numeric +cdjuke is non-numeric +rfindd is non-numeric +EZsetup is non-numeric +demos is non-numeric +tutor is non-numeric +tour is non-numeric +guest is non-numeric +4Dgifts is non-numeric +nobody is non-numeric +noaccess is non-numeric +nobody is non-numeric +rje is non-numeric +changes is non-numeric +dist is non-numeric +man is non-numeric +phoneca is non-numeric diff --git a/src/tool/awk/testdata/output/t.count b/src/tool/awk/testdata/output/t.count new file mode 100644 index 0000000..aa34eab --- /dev/null +++ b/src/tool/awk/testdata/output/t.count @@ -0,0 +1 @@ +199 diff --git a/src/tool/awk/testdata/output/t.crlf b/src/tool/awk/testdata/output/t.crlf new file mode 100644 index 0000000..be3dbf6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.crlf @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.cum b/src/tool/awk/testdata/output/t.cum new file mode 100644 index 0000000..2ace10e --- /dev/null +++ b/src/tool/awk/testdata/output/t.cum @@ -0,0 +1,200 @@ +0 +0 +17379 +34072 +50188 +65901 +77796 +88205 +98457 +108310 +118058 +127550 +136740 +145652 +154547 +163038 +171410 +179662 +187112 +194472 +201745 +208825 +215888 +222455 +228917 +235208 +241419 +247090 +252463 +257683 +262850 +267857 +271820 +275715 +279511 +282992 +286192 +289037 +291811 +294452 +297018 +299529 +302008 +304135 +306124 +308113 +310046 +311847 +313437 +314822 +316192 +317508 +318713 +319907 +321060 +322210 +323241 +324259 +325209 +326140 +327038 +327903 +328725 +329528 +330228 +330852 +331411 +331952 +332475 +332970 +333426 +333840 +334226 +334601 +334949 +335293 +335620 +335908 +336180 +336443 +336696 +336947 +337195 +337419 +337641 +337854 +338055 +338239 +338415 +338581 +338744 +338888 +339031 +339154 +339270 +339365 +339445 +339524 +339603 +339667 +339729 +339785 +339839 +339886 +339931 +339976 +340020 +340063 +340106 +340143 +340175 +340206 +340235 +340260 +340282 +340297 +340307 +340317 +340323 +340329 +340334 +340338 +340342 +340346 +340349 +340352 +340355 +340358 +340360 +340362 +340364 +340365 +340366 +340367 +340368 +340369 +340370 +340371 +340372 +340373 +340375 +340378 +340382 +340387 +340393 +340400 +340408 +340417 +340427 +340438 +340450 +340463 +340477 +340492 +340508 +340525 +340543 +340562 +340582 +340603 +340827 +340850 +340874 +340899 +340925 +340952 +340980 +341009 +341039 +341040 +341042 +341045 +341049 +341054 +341060 +341067 +341075 +341084 +341094 +341105 +341117 +341130 +341144 +341159 +341175 +341192 +341210 +341229 +341249 +341270 +341292 +341315 +341339 +341364 +341390 +341417 +341445 +341474 +341504 +341504 diff --git a/src/tool/awk/testdata/output/t.d.x b/src/tool/awk/testdata/output/t.d.x new file mode 100644 index 0000000..94d7e96 --- /dev/null +++ b/src/tool/awk/testdata/output/t.d.x @@ -0,0 +1,199 @@ +2 :/dev/rrp3: +0 : +1 :17379 mel +1 :16693 bwk me +1 :16116 ken him someone else +1 :15713 srb +1 :11895 lem +1 :10409 scj +1 :10252 rhm +1 : 9853 shen +1 : 9748 a68 +1 : 9492 sif +1 : 9190 pjw +1 : 8912 nls +1 : 8895 dmr +1 : 8491 cda +1 : 8372 bs +1 : 8252 llc +1 : 7450 mb +1 : 7360 ava +1 : 7273 jrv +1 : 7080 bin +1 : 7063 greg +1 : 6567 dict +1 : 6462 lck +1 : 6291 rje +1 : 6211 lwf +1 : 5671 dave +1 : 5373 jhc +1 : 5220 agf +1 : 5167 doug +1 : 5007 valerie +1 : 3963 jca +1 : 3895 bbs +1 : 3796 moh +1 : 3481 xchar +1 : 3200 tbl +1 : 2845 s +1 : 2774 tgs +1 : 2641 met +1 : 2566 jck +1 : 2511 port +1 : 2479 sue +1 : 2127 root +1 : 1989 bsb +1 : 1989 jeg +1 : 1933 eag +1 : 1801 pdj +1 : 1590 tpc +1 : 1385 cvw +1 : 1370 rwm +1 : 1316 avg +1 : 1205 eg +1 : 1194 jam +1 : 1153 dl +1 : 1150 lgm +1 : 1031 cmb +1 : 1018 jwr +1 : 950 gdb +1 : 931 marc +1 : 898 usg +1 : 865 ggr +1 : 822 daemon +1 : 803 mihalis +1 : 700 honey +1 : 624 tad +1 : 559 acs +1 : 541 uucp +1 : 523 raf +1 : 495 adh +1 : 456 kec +1 : 414 craig +1 : 386 donmac +1 : 375 jj +1 : 348 ravi +1 : 344 drw +1 : 327 stars +1 : 288 mrg +1 : 272 jcb +1 : 263 ralph +1 : 253 tom +1 : 251 sjb +1 : 248 haight +1 : 224 sharon +1 : 222 chuck +1 : 213 dsj +1 : 201 bill +1 : 184 god +1 : 176 sys +1 : 166 meh +1 : 163 jon +1 : 144 dan +1 : 143 fox +1 : 123 dale +1 : 116 kab +1 : 95 buz +1 : 80 asc +1 : 79 jas +1 : 79 trt +1 : 64 wsb +1 : 62 dwh +1 : 56 ktf +1 : 54 lr +1 : 47 dlc +1 : 45 dls +1 : 45 jwf +1 : 44 mash +1 : 43 ars +1 : 43 vgl +1 : 37 jfo +1 : 32 rab +1 : 31 pd +1 : 29 jns +1 : 25 spm +1 : 22 rob +1 : 15 egb +1 : 10 hm +1 : 10 mhb +1 : 6 aed +1 : 6 cpb +1 : 5 evp +1 : 4 ber +1 : 4 men +1 : 4 mitch +1 : 3 ast +1 : 3 jfr +1 : 3 lax +1 : 3 nel +1 : 2 blue +1 : 2 jfk +1 : 2 njas +1 : 1 122sec +1 : 1 ddwar +1 : 1 gopi +1 : 1 jk +1 : 1 learn +1 : 1 low +1 : 1 nac +1 : 1 sidor +7 :1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +7 :2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +7 :3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +7 :4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +7 :5daemon:*:1:1:daemons:/:/bin/sh +7 :6bin:*:2:2:System Tools Owner:/bin:/dev/null +7 :7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7 :8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +7 :9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +7 :10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +7 :11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +7 :12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +7 :13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +7 :14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +7 :15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +7 :16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +7 :17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +7 :18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +7 :19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +7 :20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +7 :21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +7 :224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +7 :23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +7 :24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +7 :25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +7 :26rje:*:8:8:RJE Owner:/usr/spool/rje: +7 :27changes:*:11:11:system change log:/: +7 :28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +7 :29man:*:99:995:On-line Manual Owner:/: +7 :30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1 :1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1 :2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +1 :3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +1 :4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +1 :5d aemon * 1 1 daemons / /bin/sh +1 :6b in * 2 2 System Tools Owner /bin /dev/null +1 :7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +1 :8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +1 :9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +1 :10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +1 :11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +1 :12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +1 :13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +1 :14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +1 :15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +1 :16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +1 :17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +1 :18 demos * 993 997 Demonstration User /usr/demos /bin/csh +1 :19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +1 :20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +1 :21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +1 :22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +1 :23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +1 :24 noaccess * 60002 60002 uid no access /dev/null /dev/null +1 :25 nobody * -2 -2 original nobody uid /dev/null /dev/null +1 :26 rje * 8 8 RJE Owner /usr/spool/rje +1 :27 changes * 11 11 system change log / +1 :28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +1 :29 man * 99 995 On-line Manual Owner / +1 :30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.delete1 b/src/tool/awk/testdata/output/t.delete1 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.delete2 b/src/tool/awk/testdata/output/t.delete2 new file mode 100644 index 0000000..c5e4e2d --- /dev/null +++ b/src/tool/awk/testdata/output/t.delete2 @@ -0,0 +1,44 @@ +delete2 miscount 20 vs 2 at 6 +delete2 miscount 20 vs 2 at 7 +delete2 miscount 20 vs 2 at 8 +delete2 miscount 20 vs 2 at 9 +delete2 miscount 20 vs 2 at 10 +delete2 miscount 20 vs 2 at 11 +delete2 miscount 20 vs 2 at 12 +delete2 miscount 20 vs 2 at 13 +delete2 miscount 20 vs 2 at 14 +delete2 miscount 20 vs 2 at 15 +delete2 miscount 20 vs 2 at 16 +delete2 miscount 20 vs 2 at 17 +delete2 miscount 20 vs 2 at 18 +delete2 miscount 20 vs 2 at 19 +delete2 miscount 20 vs 2 at 20 +delete2 miscount 20 vs 2 at 21 +delete2 miscount 20 vs 2 at 22 +delete2 miscount 20 vs 2 at 23 +delete2 miscount 20 vs 2 at 24 +delete2 miscount 20 vs 2 at 25 +delete2 miscount 20 vs 2 at 26 +delete2 miscount 20 vs 2 at 27 +delete2 miscount 20 vs 2 at 28 +delete2 miscount 20 vs 2 at 29 +delete2 miscount 20 vs 2 at 30 +delete2 miscount 20 vs 2 at 31 +delete2 miscount 20 vs 2 at 32 +delete2 miscount 20 vs 2 at 33 +delete2 miscount 20 vs 2 at 34 +delete2 miscount 20 vs 2 at 35 +delete2 miscount 20 vs 2 at 36 +delete2 miscount 20 vs 2 at 37 +delete2 miscount 20 vs 2 at 38 +delete2 miscount 20 vs 2 at 39 +delete2 miscount 20 vs 2 at 40 +delete2 miscount 20 vs 2 at 41 +delete2 miscount 20 vs 2 at 42 +delete2 miscount 20 vs 2 at 43 +delete2 miscount 20 vs 2 at 44 +delete2 miscount 20 vs 2 at 45 +delete2 miscount 20 vs 2 at 46 +delete2 miscount 20 vs 2 at 47 +delete2 miscount 20 vs 2 at 48 +delete2 miscount 20 vs 2 at 49 diff --git a/src/tool/awk/testdata/output/t.delete3 b/src/tool/awk/testdata/output/t.delete3 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.do b/src/tool/awk/testdata/output/t.do new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.e b/src/tool/awk/testdata/output/t.e new file mode 100644 index 0000000..eb91e61 --- /dev/null +++ b/src/tool/awk/testdata/output/t.e @@ -0,0 +1,24 @@ +/dev/rrp3: + +16693 bwk me + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor diff --git a/src/tool/awk/testdata/output/t.else b/src/tool/awk/testdata/output/t.else new file mode 100644 index 0000000..e3cf0ec --- /dev/null +++ b/src/tool/awk/testdata/output/t.else @@ -0,0 +1,199 @@ +no +no +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no diff --git a/src/tool/awk/testdata/output/t.exit b/src/tool/awk/testdata/output/t.exit new file mode 100644 index 0000000..bedf98f --- /dev/null +++ b/src/tool/awk/testdata/output/t.exit @@ -0,0 +1 @@ +/dev/rrp3: diff --git a/src/tool/awk/testdata/output/t.exit1 b/src/tool/awk/testdata/output/t.exit1 new file mode 100644 index 0000000..4d96c52 --- /dev/null +++ b/src/tool/awk/testdata/output/t.exit1 @@ -0,0 +1,4 @@ +this is before calling myabort +in myabort - before exit 1 +into END +in myabort - before exit 2 diff --git a/src/tool/awk/testdata/output/t.f b/src/tool/awk/testdata/output/t.f new file mode 100644 index 0000000..00cf8de --- /dev/null +++ b/src/tool/awk/testdata/output/t.f @@ -0,0 +1,199 @@ + /dev/rrp3: + +mel 17379 +bwk 16693 +ken 16116 +srb 15713 +lem 11895 +scj 10409 +rhm 10252 +shen 9853 +a68 9748 +sif 9492 +pjw 9190 +nls 8912 +dmr 8895 +cda 8491 +bs 8372 +llc 8252 +mb 7450 +ava 7360 +jrv 7273 +bin 7080 +greg 7063 +dict 6567 +lck 6462 +rje 6291 +lwf 6211 +dave 5671 +jhc 5373 +agf 5220 +doug 5167 +valerie 5007 +jca 3963 +bbs 3895 +moh 3796 +xchar 3481 +tbl 3200 +s 2845 +tgs 2774 +met 2641 +jck 2566 +port 2511 +sue 2479 +root 2127 +bsb 1989 +jeg 1989 +eag 1933 +pdj 1801 +tpc 1590 +cvw 1385 +rwm 1370 +avg 1316 +eg 1205 +jam 1194 +dl 1153 +lgm 1150 +cmb 1031 +jwr 1018 +gdb 950 +marc 931 +usg 898 +ggr 865 +daemon 822 +mihalis 803 +honey 700 +tad 624 +acs 559 +uucp 541 +raf 523 +adh 495 +kec 456 +craig 414 +donmac 386 +jj 375 +ravi 348 +drw 344 +stars 327 +mrg 288 +jcb 272 +ralph 263 +tom 253 +sjb 251 +haight 248 +sharon 224 +chuck 222 +dsj 213 +bill 201 +god 184 +sys 176 +meh 166 +jon 163 +dan 144 +fox 143 +dale 123 +kab 116 +buz 95 +asc 80 +jas 79 +trt 79 +wsb 64 +dwh 62 +ktf 56 +lr 54 +dlc 47 +dls 45 +jwf 45 +mash 44 +ars 43 +vgl 43 +jfo 37 +rab 32 +pd 31 +jns 29 +spm 25 +rob 22 +egb 15 +hm 10 +mhb 10 +aed 6 +cpb 6 +evp 5 +ber 4 +men 4 +mitch 4 +ast 3 +jfr 3 +lax 3 +nel 3 +blue 2 +jfk 2 +njas 2 +122sec 1 +ddwar 1 +gopi 1 +jk 1 +learn 1 +low 1 +nac 1 +sidor 1 + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +running 2roottcsh:*:0:0:Super-User +V 3sysadm:*:0:0:System +Diagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware + 5daemon:*:1:1:daemons:/:/bin/sh +Tools 6bin:*:2:2:System + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +Activity 9sys:*:4:0:System +Files 10adm:*:5:3:Accounting +Spooler 11lp:*:9:9:Print +Activity 12auditor:*:11:0:Audit +Database 13dbadmin:*:12:0:Security +Killian 14bootes:dcon:50:1:Tom +Killian 15cdjuke:dcon:51:1:Tom +Daemon 16rfindd:*:66:1:Rfind +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System +User:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration +User:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial +Space 20tour:*:995:997:IRIS +Account:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest +Account:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +nobody 23nobody:*:60001:60001:SVR4 +no 24noaccess:*:60002:60002:uid +nobody 25nobody:*:-2:-2:original +Owner:/usr/spool/rje: 26rje:*:8:8:RJE +change 27changes:*:11:11:system +distributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file +Manual 29man:*:99:995:On-line +call 30phoneca:*:991:991:phone +oot 1r +oottcsh 2r +ysadm 3s +iag 4d +aemon 5d +in 6b +uucp 7n +ucp 8u +ys 9s +adm 10 +lp 11 +auditor 12 +dbadmin 13 +bootes 14 +cdjuke 15 +rfindd 16 +EZsetup 17 +demos 18 +tutor 19 +tour 20 +guest 21 +4Dgifts 22 +nobody 23 +noaccess 24 +nobody 25 +rje 26 +changes 27 +dist 28 +man 29 +phoneca 30 diff --git a/src/tool/awk/testdata/output/t.f.x b/src/tool/awk/testdata/output/t.f.x new file mode 100644 index 0000000..dac5357 --- /dev/null +++ b/src/tool/awk/testdata/output/t.f.x @@ -0,0 +1,197 @@ +17379 131.829 +16693 129.201 +16116 126.949 +15713 125.352 +11895 109.064 +10409 102.025 +10252 101.252 +9853 99.2623 +9748 98.732 +9492 97.4269 +9190 95.8645 +8912 94.4034 +8895 94.3133 +8491 92.1466 +8372 91.4986 +8252 90.8405 +7450 86.3134 +7360 85.7904 +7273 85.2819 +7080 84.1427 +7063 84.0417 +6567 81.037 +6462 80.3866 +6291 79.3158 +6211 78.8099 +5671 75.306 +5373 73.3008 +5220 72.2496 +5167 71.8818 +5007 70.7602 +3963 62.9524 +3895 62.4099 +3796 61.6117 +3481 59 +3200 56.5685 +2845 53.3385 +2774 52.6688 +2641 51.3907 +2566 50.6557 +2511 50.1099 +2479 49.7896 +2127 46.1194 +1989 44.5982 +1989 44.5982 +1933 43.9659 +1801 42.4382 +1590 39.8748 +1385 37.2156 +1370 37.0135 +1316 36.2767 +1205 34.7131 +1194 34.5543 +1153 33.9559 +1150 33.9116 +1031 32.1092 +1018 31.9061 +950 30.8221 +931 30.5123 +898 29.9666 +865 29.4109 +822 28.6705 +803 28.3373 +700 26.4575 +624 24.98 +559 23.6432 +541 23.2594 +523 22.8692 +495 22.2486 +456 21.3542 +414 20.347 +386 19.6469 +375 19.3649 +348 18.6548 +344 18.5472 +327 18.0831 +288 16.9706 +272 16.4924 +263 16.2173 +253 15.906 +251 15.843 +248 15.748 +224 14.9666 +222 14.8997 +213 14.5945 +201 14.1774 +184 13.5647 +176 13.2665 +166 12.8841 +163 12.7671 +144 12 +143 11.9583 +123 11.0905 +116 10.7703 +95 9.74679 +80 8.94427 +79 8.88819 +79 8.88819 +64 8 +62 7.87401 +56 7.48331 +54 7.34847 +47 6.85565 +45 6.7082 +45 6.7082 +44 6.63325 +43 6.55744 +43 6.55744 +37 6.08276 +32 5.65685 +31 5.56776 +29 5.38516 +25 5 +22 4.69042 +15 3.87298 +10 3.16228 +10 3.16228 +6 2.44949 +6 2.44949 +5 2.23607 +4 2 +4 2 +4 2 +3 1.73205 +3 1.73205 +3 1.73205 +3 1.73205 +2 1.41421 +2 1.41421 +2 1.41421 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1 +2roottcsh:*:0:0:Super-User 1.41421 +3sysadm:*:0:0:System 1.73205 +4diag:*:0:996:Hardware 2 +5daemon:*:1:1:daemons:/:/bin/sh 2.23607 +6bin:*:2:2:System 2.44949 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 2.64575 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 2.82843 +9sys:*:4:0:System 3 +10adm:*:5:3:Accounting 3.16228 +11lp:*:9:9:Print 3.31662 +12auditor:*:11:0:Audit 3.4641 +13dbadmin:*:12:0:Security 3.60555 +14bootes:dcon:50:1:Tom 3.74166 +15cdjuke:dcon:51:1:Tom 3.87298 +16rfindd:*:66:1:Rfind 4 +17EZsetup:*:992:998:System 4.12311 +18demos:*:993:997:Demonstration 4.24264 +19tutor:*:994:997:Tutorial 4.3589 +20tour:*:995:997:IRIS 4.47214 +21guest:nfP4/Wpvio/Rw:998:998:Guest 4.58258 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 14.9666 +23nobody:*:60001:60001:SVR4 4.79583 +24noaccess:*:60002:60002:uid 4.89898 +25nobody:*:-2:-2:original 5 +26rje:*:8:8:RJE 5.09902 +27changes:*:11:11:system 5.19615 +28dist:sorry:9999:4:file 5.2915 +29man:*:99:995:On-line 5.38516 +30phoneca:*:991:991:phone 5.47723 +1r 1 +2r 1.41421 +3s 1.73205 +4d 2 +5d 2.23607 +6b 2.44949 +7n 2.64575 +8u 2.82843 +9s 3 +10 3.16228 +11 3.31662 +12 3.4641 +13 3.60555 +14 3.74166 +15 3.87298 +16 4 +17 4.12311 +18 4.24264 +19 4.3589 +20 4.47214 +21 4.58258 +22 4.69042 +23 4.79583 +24 4.89898 +25 5 +26 5.09902 +27 5.19615 +28 5.2915 +29 5.38516 +30 5.47723 diff --git a/src/tool/awk/testdata/output/t.f0 b/src/tool/awk/testdata/output/t.f0 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.f1 b/src/tool/awk/testdata/output/t.f1 new file mode 100644 index 0000000..6cdb847 --- /dev/null +++ b/src/tool/awk/testdata/output/t.f1 @@ -0,0 +1,199 @@ +1 +1 +1 mel +1 bwk me +1 ken him someone else +1 srb +1 lem +1 scj +1 rhm +1 shen +1 a68 +1 sif +1 pjw +1 nls +1 dmr +1 cda +1 bs +1 llc +1 mb +1 ava +1 jrv +1 bin +1 greg +1 dict +1 lck +1 rje +1 lwf +1 dave +1 jhc +1 agf +1 doug +1 valerie +1 jca +1 bbs +1 moh +1 xchar +1 tbl +1 s +1 tgs +1 met +1 jck +1 port +1 sue +1 root +1 bsb +1 jeg +1 eag +1 pdj +1 tpc +1 cvw +1 rwm +1 avg +1 eg +1 jam +1 dl +1 lgm +1 cmb +1 jwr +1 gdb +1 marc +1 usg +1 ggr +1 daemon +1 mihalis +1 honey +1 tad +1 acs +1 uucp +1 raf +1 adh +1 kec +1 craig +1 donmac +1 jj +1 ravi +1 drw +1 stars +1 mrg +1 jcb +1 ralph +1 tom +1 sjb +1 haight +1 sharon +1 chuck +1 dsj +1 bill +1 god +1 sys +1 meh +1 jon +1 dan +1 fox +1 dale +1 kab +1 buz +1 asc +1 jas +1 trt +1 wsb +1 dwh +1 ktf +1 lr +1 dlc +1 dls +1 jwf +1 mash +1 ars +1 vgl +1 jfo +1 rab +1 pd +1 jns +1 spm +1 rob +1 egb +1 hm +1 mhb +1 aed +1 cpb +1 evp +1 ber +1 men +1 mitch +1 ast +1 jfr +1 lax +1 nel +1 blue +1 jfk +1 njas +1 122sec +1 ddwar +1 gopi +1 jk +1 learn +1 low +1 nac +1 sidor +1 +1 running tcsh [cbm]:/:/bin/tcsh +1 V Administration:/usr/admin:/bin/sh +1 Diagnostics:/usr/diags:/bin/csh +1 +1 Tools Owner:/bin:/dev/null +1 +1 +1 Activity Owner:/usr/adm:/bin/sh +1 Files Owner:/usr/adm:/bin/sh +1 Spooler Owner:/var/spool/lp:/bin/sh +1 Activity Owner:/auditor:/bin/sh +1 Database Owner:/dbadmin:/bin/sh +1 Killian (DO NOT REMOVE):/tmp: +1 Killian (DO NOT REMOVE):/tmp: +1 Daemon and Fsdump:/var/rfindd:/bin/sh +1 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 User:/usr/demos:/bin/csh +1 User:/usr/tutor:/bin/csh +1 Space Tour:/usr/people/tour:/bin/csh +1 Account:/usr/people/guest:/bin/csh +1 Account:/usr/people/4Dgifts:/bin/csh +1 nobody uid:/dev/null:/dev/null +1 no access:/dev/null:/dev/null +1 nobody uid:/dev/null:/dev/null +1 Owner:/usr/spool/rje: +1 change log:/: +1 distributions:/v/adm/dist:/v/bin/sh +1 Manual Owner:/: +1 call log [tom]:/v/adm/log:/v/bin/sh +1 oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1 oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +1 ysadm * 0 0 System V Administration /usr/admin /bin/sh +1 iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +1 aemon * 1 1 daemons / /bin/sh +1 in * 2 2 System Tools Owner /bin /dev/null +1 uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +1 ucp * 3 5 UUCP.Admin /usr/lib/uucp +1 ys * 4 0 System Activity Owner /usr/adm /bin/sh +1 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +1 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +1 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +1 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +1 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +1 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +1 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +1 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +1 demos * 993 997 Demonstration User /usr/demos /bin/csh +1 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +1 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +1 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +1 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +1 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +1 noaccess * 60002 60002 uid no access /dev/null /dev/null +1 nobody * -2 -2 original nobody uid /dev/null /dev/null +1 rje * 8 8 RJE Owner /usr/spool/rje +1 changes * 11 11 system change log / +1 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +1 man * 99 995 On-line Manual Owner / +1 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.f2 b/src/tool/awk/testdata/output/t.f2 new file mode 100644 index 0000000..6cdb847 --- /dev/null +++ b/src/tool/awk/testdata/output/t.f2 @@ -0,0 +1,199 @@ +1 +1 +1 mel +1 bwk me +1 ken him someone else +1 srb +1 lem +1 scj +1 rhm +1 shen +1 a68 +1 sif +1 pjw +1 nls +1 dmr +1 cda +1 bs +1 llc +1 mb +1 ava +1 jrv +1 bin +1 greg +1 dict +1 lck +1 rje +1 lwf +1 dave +1 jhc +1 agf +1 doug +1 valerie +1 jca +1 bbs +1 moh +1 xchar +1 tbl +1 s +1 tgs +1 met +1 jck +1 port +1 sue +1 root +1 bsb +1 jeg +1 eag +1 pdj +1 tpc +1 cvw +1 rwm +1 avg +1 eg +1 jam +1 dl +1 lgm +1 cmb +1 jwr +1 gdb +1 marc +1 usg +1 ggr +1 daemon +1 mihalis +1 honey +1 tad +1 acs +1 uucp +1 raf +1 adh +1 kec +1 craig +1 donmac +1 jj +1 ravi +1 drw +1 stars +1 mrg +1 jcb +1 ralph +1 tom +1 sjb +1 haight +1 sharon +1 chuck +1 dsj +1 bill +1 god +1 sys +1 meh +1 jon +1 dan +1 fox +1 dale +1 kab +1 buz +1 asc +1 jas +1 trt +1 wsb +1 dwh +1 ktf +1 lr +1 dlc +1 dls +1 jwf +1 mash +1 ars +1 vgl +1 jfo +1 rab +1 pd +1 jns +1 spm +1 rob +1 egb +1 hm +1 mhb +1 aed +1 cpb +1 evp +1 ber +1 men +1 mitch +1 ast +1 jfr +1 lax +1 nel +1 blue +1 jfk +1 njas +1 122sec +1 ddwar +1 gopi +1 jk +1 learn +1 low +1 nac +1 sidor +1 +1 running tcsh [cbm]:/:/bin/tcsh +1 V Administration:/usr/admin:/bin/sh +1 Diagnostics:/usr/diags:/bin/csh +1 +1 Tools Owner:/bin:/dev/null +1 +1 +1 Activity Owner:/usr/adm:/bin/sh +1 Files Owner:/usr/adm:/bin/sh +1 Spooler Owner:/var/spool/lp:/bin/sh +1 Activity Owner:/auditor:/bin/sh +1 Database Owner:/dbadmin:/bin/sh +1 Killian (DO NOT REMOVE):/tmp: +1 Killian (DO NOT REMOVE):/tmp: +1 Daemon and Fsdump:/var/rfindd:/bin/sh +1 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 User:/usr/demos:/bin/csh +1 User:/usr/tutor:/bin/csh +1 Space Tour:/usr/people/tour:/bin/csh +1 Account:/usr/people/guest:/bin/csh +1 Account:/usr/people/4Dgifts:/bin/csh +1 nobody uid:/dev/null:/dev/null +1 no access:/dev/null:/dev/null +1 nobody uid:/dev/null:/dev/null +1 Owner:/usr/spool/rje: +1 change log:/: +1 distributions:/v/adm/dist:/v/bin/sh +1 Manual Owner:/: +1 call log [tom]:/v/adm/log:/v/bin/sh +1 oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1 oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +1 ysadm * 0 0 System V Administration /usr/admin /bin/sh +1 iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +1 aemon * 1 1 daemons / /bin/sh +1 in * 2 2 System Tools Owner /bin /dev/null +1 uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +1 ucp * 3 5 UUCP.Admin /usr/lib/uucp +1 ys * 4 0 System Activity Owner /usr/adm /bin/sh +1 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +1 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +1 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +1 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +1 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +1 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +1 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +1 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +1 demos * 993 997 Demonstration User /usr/demos /bin/csh +1 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +1 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +1 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +1 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +1 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +1 noaccess * 60002 60002 uid no access /dev/null /dev/null +1 nobody * -2 -2 original nobody uid /dev/null /dev/null +1 rje * 8 8 RJE Owner /usr/spool/rje +1 changes * 11 11 system change log / +1 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +1 man * 99 995 On-line Manual Owner / +1 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.f3 b/src/tool/awk/testdata/output/t.f3 new file mode 100644 index 0000000..4d34a9e --- /dev/null +++ b/src/tool/awk/testdata/output/t.f3 @@ -0,0 +1,199 @@ +1 +2 +3 mel +4 bwk me +5 ken him someone else +6 srb +7 lem +8 scj +9 rhm +10 shen +11 a68 +12 sif +13 pjw +14 nls +15 dmr +16 cda +17 bs +18 llc +19 mb +20 ava +21 jrv +22 bin +23 greg +24 dict +25 lck +26 rje +27 lwf +28 dave +29 jhc +30 agf +31 doug +32 valerie +33 jca +34 bbs +35 moh +36 xchar +37 tbl +38 s +39 tgs +40 met +41 jck +42 port +43 sue +44 root +45 bsb +46 jeg +47 eag +48 pdj +49 tpc +50 cvw +51 rwm +52 avg +53 eg +54 jam +55 dl +56 lgm +57 cmb +58 jwr +59 gdb +60 marc +61 usg +62 ggr +63 daemon +64 mihalis +65 honey +66 tad +67 acs +68 uucp +69 raf +70 adh +71 kec +72 craig +73 donmac +74 jj +75 ravi +76 drw +77 stars +78 mrg +79 jcb +80 ralph +81 tom +82 sjb +83 haight +84 sharon +85 chuck +86 dsj +87 bill +88 god +89 sys +90 meh +91 jon +92 dan +93 fox +94 dale +95 kab +96 buz +97 asc +98 jas +99 trt +100 wsb +101 dwh +102 ktf +103 lr +104 dlc +105 dls +106 jwf +107 mash +108 ars +109 vgl +110 jfo +111 rab +112 pd +113 jns +114 spm +115 rob +116 egb +117 hm +118 mhb +119 aed +120 cpb +121 evp +122 ber +123 men +124 mitch +125 ast +126 jfr +127 lax +128 nel +129 blue +130 jfk +131 njas +132 122sec +133 ddwar +134 gopi +135 jk +136 learn +137 low +138 nac +139 sidor +140 +141 running tcsh [cbm]:/:/bin/tcsh +142 V Administration:/usr/admin:/bin/sh +143 Diagnostics:/usr/diags:/bin/csh +144 +145 Tools Owner:/bin:/dev/null +146 +147 +148 Activity Owner:/usr/adm:/bin/sh +149 Files Owner:/usr/adm:/bin/sh +150 Spooler Owner:/var/spool/lp:/bin/sh +151 Activity Owner:/auditor:/bin/sh +152 Database Owner:/dbadmin:/bin/sh +153 Killian (DO NOT REMOVE):/tmp: +154 Killian (DO NOT REMOVE):/tmp: +155 Daemon and Fsdump:/var/rfindd:/bin/sh +156 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +157 User:/usr/demos:/bin/csh +158 User:/usr/tutor:/bin/csh +159 Space Tour:/usr/people/tour:/bin/csh +160 Account:/usr/people/guest:/bin/csh +161 Account:/usr/people/4Dgifts:/bin/csh +162 nobody uid:/dev/null:/dev/null +163 no access:/dev/null:/dev/null +164 nobody uid:/dev/null:/dev/null +165 Owner:/usr/spool/rje: +166 change log:/: +167 distributions:/v/adm/dist:/v/bin/sh +168 Manual Owner:/: +169 call log [tom]:/v/adm/log:/v/bin/sh +170 oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +171 oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +172 ysadm * 0 0 System V Administration /usr/admin /bin/sh +173 iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +174 aemon * 1 1 daemons / /bin/sh +175 in * 2 2 System Tools Owner /bin /dev/null +176 uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +177 ucp * 3 5 UUCP.Admin /usr/lib/uucp +178 ys * 4 0 System Activity Owner /usr/adm /bin/sh +179 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +180 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +181 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +182 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +183 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +184 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +185 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +186 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +187 demos * 993 997 Demonstration User /usr/demos /bin/csh +188 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +189 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +190 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +191 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +192 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +193 noaccess * 60002 60002 uid no access /dev/null /dev/null +194 nobody * -2 -2 original nobody uid /dev/null /dev/null +195 rje * 8 8 RJE Owner /usr/spool/rje +196 changes * 11 11 system change log / +197 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +198 man * 99 995 On-line Manual Owner / +199 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.f4 b/src/tool/awk/testdata/output/t.f4 new file mode 100644 index 0000000..4d34a9e --- /dev/null +++ b/src/tool/awk/testdata/output/t.f4 @@ -0,0 +1,199 @@ +1 +2 +3 mel +4 bwk me +5 ken him someone else +6 srb +7 lem +8 scj +9 rhm +10 shen +11 a68 +12 sif +13 pjw +14 nls +15 dmr +16 cda +17 bs +18 llc +19 mb +20 ava +21 jrv +22 bin +23 greg +24 dict +25 lck +26 rje +27 lwf +28 dave +29 jhc +30 agf +31 doug +32 valerie +33 jca +34 bbs +35 moh +36 xchar +37 tbl +38 s +39 tgs +40 met +41 jck +42 port +43 sue +44 root +45 bsb +46 jeg +47 eag +48 pdj +49 tpc +50 cvw +51 rwm +52 avg +53 eg +54 jam +55 dl +56 lgm +57 cmb +58 jwr +59 gdb +60 marc +61 usg +62 ggr +63 daemon +64 mihalis +65 honey +66 tad +67 acs +68 uucp +69 raf +70 adh +71 kec +72 craig +73 donmac +74 jj +75 ravi +76 drw +77 stars +78 mrg +79 jcb +80 ralph +81 tom +82 sjb +83 haight +84 sharon +85 chuck +86 dsj +87 bill +88 god +89 sys +90 meh +91 jon +92 dan +93 fox +94 dale +95 kab +96 buz +97 asc +98 jas +99 trt +100 wsb +101 dwh +102 ktf +103 lr +104 dlc +105 dls +106 jwf +107 mash +108 ars +109 vgl +110 jfo +111 rab +112 pd +113 jns +114 spm +115 rob +116 egb +117 hm +118 mhb +119 aed +120 cpb +121 evp +122 ber +123 men +124 mitch +125 ast +126 jfr +127 lax +128 nel +129 blue +130 jfk +131 njas +132 122sec +133 ddwar +134 gopi +135 jk +136 learn +137 low +138 nac +139 sidor +140 +141 running tcsh [cbm]:/:/bin/tcsh +142 V Administration:/usr/admin:/bin/sh +143 Diagnostics:/usr/diags:/bin/csh +144 +145 Tools Owner:/bin:/dev/null +146 +147 +148 Activity Owner:/usr/adm:/bin/sh +149 Files Owner:/usr/adm:/bin/sh +150 Spooler Owner:/var/spool/lp:/bin/sh +151 Activity Owner:/auditor:/bin/sh +152 Database Owner:/dbadmin:/bin/sh +153 Killian (DO NOT REMOVE):/tmp: +154 Killian (DO NOT REMOVE):/tmp: +155 Daemon and Fsdump:/var/rfindd:/bin/sh +156 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +157 User:/usr/demos:/bin/csh +158 User:/usr/tutor:/bin/csh +159 Space Tour:/usr/people/tour:/bin/csh +160 Account:/usr/people/guest:/bin/csh +161 Account:/usr/people/4Dgifts:/bin/csh +162 nobody uid:/dev/null:/dev/null +163 no access:/dev/null:/dev/null +164 nobody uid:/dev/null:/dev/null +165 Owner:/usr/spool/rje: +166 change log:/: +167 distributions:/v/adm/dist:/v/bin/sh +168 Manual Owner:/: +169 call log [tom]:/v/adm/log:/v/bin/sh +170 oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +171 oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +172 ysadm * 0 0 System V Administration /usr/admin /bin/sh +173 iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +174 aemon * 1 1 daemons / /bin/sh +175 in * 2 2 System Tools Owner /bin /dev/null +176 uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +177 ucp * 3 5 UUCP.Admin /usr/lib/uucp +178 ys * 4 0 System Activity Owner /usr/adm /bin/sh +179 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +180 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +181 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +182 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +183 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +184 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +185 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +186 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +187 demos * 993 997 Demonstration User /usr/demos /bin/csh +188 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +189 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +190 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +191 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +192 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +193 noaccess * 60002 60002 uid no access /dev/null /dev/null +194 nobody * -2 -2 original nobody uid /dev/null /dev/null +195 rje * 8 8 RJE Owner /usr/spool/rje +196 changes * 11 11 system change log / +197 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +198 man * 99 995 On-line Manual Owner / +199 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.for b/src/tool/awk/testdata/output/t.for new file mode 100644 index 0000000..2aa2eb8 --- /dev/null +++ b/src/tool/awk/testdata/output/t.for @@ -0,0 +1,645 @@ +1 /dev/rrp3: +1 17379 +2 mel +1 16693 +2 bwk +3 me +1 16116 +2 ken +3 him +4 someone +5 else +1 15713 +2 srb +1 11895 +2 lem +1 10409 +2 scj +1 10252 +2 rhm +1 9853 +2 shen +1 9748 +2 a68 +1 9492 +2 sif +1 9190 +2 pjw +1 8912 +2 nls +1 8895 +2 dmr +1 8491 +2 cda +1 8372 +2 bs +1 8252 +2 llc +1 7450 +2 mb +1 7360 +2 ava +1 7273 +2 jrv +1 7080 +2 bin +1 7063 +2 greg +1 6567 +2 dict +1 6462 +2 lck +1 6291 +2 rje +1 6211 +2 lwf +1 5671 +2 dave +1 5373 +2 jhc +1 5220 +2 agf +1 5167 +2 doug +1 5007 +2 valerie +1 3963 +2 jca +1 3895 +2 bbs +1 3796 +2 moh +1 3481 +2 xchar +1 3200 +2 tbl +1 2845 +2 s +1 2774 +2 tgs +1 2641 +2 met +1 2566 +2 jck +1 2511 +2 port +1 2479 +2 sue +1 2127 +2 root +1 1989 +2 bsb +1 1989 +2 jeg +1 1933 +2 eag +1 1801 +2 pdj +1 1590 +2 tpc +1 1385 +2 cvw +1 1370 +2 rwm +1 1316 +2 avg +1 1205 +2 eg +1 1194 +2 jam +1 1153 +2 dl +1 1150 +2 lgm +1 1031 +2 cmb +1 1018 +2 jwr +1 950 +2 gdb +1 931 +2 marc +1 898 +2 usg +1 865 +2 ggr +1 822 +2 daemon +1 803 +2 mihalis +1 700 +2 honey +1 624 +2 tad +1 559 +2 acs +1 541 +2 uucp +1 523 +2 raf +1 495 +2 adh +1 456 +2 kec +1 414 +2 craig +1 386 +2 donmac +1 375 +2 jj +1 348 +2 ravi +1 344 +2 drw +1 327 +2 stars +1 288 +2 mrg +1 272 +2 jcb +1 263 +2 ralph +1 253 +2 tom +1 251 +2 sjb +1 248 +2 haight +1 224 +2 sharon +1 222 +2 chuck +1 213 +2 dsj +1 201 +2 bill +1 184 +2 god +1 176 +2 sys +1 166 +2 meh +1 163 +2 jon +1 144 +2 dan +1 143 +2 fox +1 123 +2 dale +1 116 +2 kab +1 95 +2 buz +1 80 +2 asc +1 79 +2 jas +1 79 +2 trt +1 64 +2 wsb +1 62 +2 dwh +1 56 +2 ktf +1 54 +2 lr +1 47 +2 dlc +1 45 +2 dls +1 45 +2 jwf +1 44 +2 mash +1 43 +2 ars +1 43 +2 vgl +1 37 +2 jfo +1 32 +2 rab +1 31 +2 pd +1 29 +2 jns +1 25 +2 spm +1 22 +2 rob +1 15 +2 egb +1 10 +2 hm +1 10 +2 mhb +1 6 +2 aed +1 6 +2 cpb +1 5 +2 evp +1 4 +2 ber +1 4 +2 men +1 4 +2 mitch +1 3 +2 ast +1 3 +2 jfr +1 3 +2 lax +1 3 +2 nel +1 2 +2 blue +1 2 +2 jfk +1 2 +2 njas +1 1 +2 122sec +1 1 +2 ddwar +1 1 +2 gopi +1 1 +2 jk +1 1 +2 learn +1 1 +2 low +1 1 +2 nac +1 1 +2 sidor +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 2roottcsh:*:0:0:Super-User +2 running +3 tcsh +4 [cbm]:/:/bin/tcsh +1 3sysadm:*:0:0:System +2 V +3 Administration:/usr/admin:/bin/sh +1 4diag:*:0:996:Hardware +2 Diagnostics:/usr/diags:/bin/csh +1 5daemon:*:1:1:daemons:/:/bin/sh +1 6bin:*:2:2:System +2 Tools +3 Owner:/bin:/dev/null +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 9sys:*:4:0:System +2 Activity +3 Owner:/usr/adm:/bin/sh +1 10adm:*:5:3:Accounting +2 Files +3 Owner:/usr/adm:/bin/sh +1 11lp:*:9:9:Print +2 Spooler +3 Owner:/var/spool/lp:/bin/sh +1 12auditor:*:11:0:Audit +2 Activity +3 Owner:/auditor:/bin/sh +1 13dbadmin:*:12:0:Security +2 Database +3 Owner:/dbadmin:/bin/sh +1 14bootes:dcon:50:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 15cdjuke:dcon:51:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 16rfindd:*:66:1:Rfind +2 Daemon +3 and +4 Fsdump:/var/rfindd:/bin/sh +1 17EZsetup:*:992:998:System +2 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 18demos:*:993:997:Demonstration +2 User:/usr/demos:/bin/csh +1 19tutor:*:994:997:Tutorial +2 User:/usr/tutor:/bin/csh +1 20tour:*:995:997:IRIS +2 Space +3 Tour:/usr/people/tour:/bin/csh +1 21guest:nfP4/Wpvio/Rw:998:998:Guest +2 Account:/usr/people/guest:/bin/csh +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +2 Account:/usr/people/4Dgifts:/bin/csh +1 23nobody:*:60001:60001:SVR4 +2 nobody +3 uid:/dev/null:/dev/null +1 24noaccess:*:60002:60002:uid +2 no +3 access:/dev/null:/dev/null +1 25nobody:*:-2:-2:original +2 nobody +3 uid:/dev/null:/dev/null +1 26rje:*:8:8:RJE +2 Owner:/usr/spool/rje: +1 27changes:*:11:11:system +2 change +3 log:/: +1 28dist:sorry:9999:4:file +2 distributions:/v/adm/dist:/v/bin/sh +1 29man:*:99:995:On-line +2 Manual +3 Owner:/: +1 30phoneca:*:991:991:phone +2 call +3 log +4 [tom]:/v/adm/log:/v/bin/sh +1 1r +2 oot +3 EMpNB8Zp56 +4 0 +5 0 +6 Super-User,,,,,,, +7 / +8 /bin/sh +1 2r +2 oottcsh +3 * +4 0 +5 0 +6 Super-User +7 running +8 tcsh +9 [cbm] +10 / +11 /bin/tcsh +1 3s +2 ysadm +3 * +4 0 +5 0 +6 System +7 V +8 Administration +9 /usr/admin +10 /bin/sh +1 4d +2 iag +3 * +4 0 +5 996 +6 Hardware +7 Diagnostics +8 /usr/diags +9 /bin/csh +1 5d +2 aemon +3 * +4 1 +5 1 +6 daemons +7 / +8 /bin/sh +1 6b +2 in +3 * +4 2 +5 2 +6 System +7 Tools +8 Owner +9 /bin +10 /dev/null +1 7n +2 uucp +3 BJnuQbAo +4 6 +5 10 +6 UUCP.Admin +7 /usr/spool/uucppublic +8 /usr/lib/uucp/uucico +1 8u +2 ucp +3 * +4 3 +5 5 +6 UUCP.Admin +7 /usr/lib/uucp +1 9s +2 ys +3 * +4 4 +5 0 +6 System +7 Activity +8 Owner +9 /usr/adm +10 /bin/sh +1 10 +2 adm +3 * +4 5 +5 3 +6 Accounting +7 Files +8 Owner +9 /usr/adm +10 /bin/sh +1 11 +2 lp +3 * +4 9 +5 9 +6 Print +7 Spooler +8 Owner +9 /var/spool/lp +10 /bin/sh +1 12 +2 auditor +3 * +4 11 +5 0 +6 Audit +7 Activity +8 Owner +9 /auditor +10 /bin/sh +1 13 +2 dbadmin +3 * +4 12 +5 0 +6 Security +7 Database +8 Owner +9 /dbadmin +10 /bin/sh +1 14 +2 bootes +3 dcon +4 50 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 15 +2 cdjuke +3 dcon +4 51 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 16 +2 rfindd +3 * +4 66 +5 1 +6 Rfind +7 Daemon +8 and +9 Fsdump +10 /var/rfindd +11 /bin/sh +1 17 +2 EZsetup +3 * +4 992 +5 998 +6 System +7 Setup +8 /var/sysadmdesktop/EZsetup +9 /bin/csh +1 18 +2 demos +3 * +4 993 +5 997 +6 Demonstration +7 User +8 /usr/demos +9 /bin/csh +1 19 +2 tutor +3 * +4 994 +5 997 +6 Tutorial +7 User +8 /usr/tutor +9 /bin/csh +1 20 +2 tour +3 * +4 995 +5 997 +6 IRIS +7 Space +8 Tour +9 /usr/people/tour +10 /bin/csh +1 21 +2 guest +3 nfP4/Wpvio/Rw +4 998 +5 998 +6 Guest +7 Account +8 /usr/people/guest +9 /bin/csh +1 22 +2 4Dgifts +3 0nWRTZsOMt. +4 999 +5 998 +6 4Dgifts +7 Account +8 /usr/people/4Dgifts +9 /bin/csh +1 23 +2 nobody +3 * +4 60001 +5 60001 +6 SVR4 +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 24 +2 noaccess +3 * +4 60002 +5 60002 +6 uid +7 no +8 access +9 /dev/null +10 /dev/null +1 25 +2 nobody +3 * +4 -2 +5 -2 +6 original +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 26 +2 rje +3 * +4 8 +5 8 +6 RJE +7 Owner +8 /usr/spool/rje +1 27 +2 changes +3 * +4 11 +5 11 +6 system +7 change +8 log +9 / +1 28 +2 dist +3 sorry +4 9999 +5 4 +6 file +7 distributions +8 /v/adm/dist +9 /v/bin/sh +1 29 +2 man +3 * +4 99 +5 995 +6 On-line +7 Manual +8 Owner +9 / +1 30 +2 phoneca +3 * +4 991 +5 991 +6 phone +7 call +8 log +9 [tom] +10 /v/adm/log +11 /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.for1 b/src/tool/awk/testdata/output/t.for1 new file mode 100644 index 0000000..2aa2eb8 --- /dev/null +++ b/src/tool/awk/testdata/output/t.for1 @@ -0,0 +1,645 @@ +1 /dev/rrp3: +1 17379 +2 mel +1 16693 +2 bwk +3 me +1 16116 +2 ken +3 him +4 someone +5 else +1 15713 +2 srb +1 11895 +2 lem +1 10409 +2 scj +1 10252 +2 rhm +1 9853 +2 shen +1 9748 +2 a68 +1 9492 +2 sif +1 9190 +2 pjw +1 8912 +2 nls +1 8895 +2 dmr +1 8491 +2 cda +1 8372 +2 bs +1 8252 +2 llc +1 7450 +2 mb +1 7360 +2 ava +1 7273 +2 jrv +1 7080 +2 bin +1 7063 +2 greg +1 6567 +2 dict +1 6462 +2 lck +1 6291 +2 rje +1 6211 +2 lwf +1 5671 +2 dave +1 5373 +2 jhc +1 5220 +2 agf +1 5167 +2 doug +1 5007 +2 valerie +1 3963 +2 jca +1 3895 +2 bbs +1 3796 +2 moh +1 3481 +2 xchar +1 3200 +2 tbl +1 2845 +2 s +1 2774 +2 tgs +1 2641 +2 met +1 2566 +2 jck +1 2511 +2 port +1 2479 +2 sue +1 2127 +2 root +1 1989 +2 bsb +1 1989 +2 jeg +1 1933 +2 eag +1 1801 +2 pdj +1 1590 +2 tpc +1 1385 +2 cvw +1 1370 +2 rwm +1 1316 +2 avg +1 1205 +2 eg +1 1194 +2 jam +1 1153 +2 dl +1 1150 +2 lgm +1 1031 +2 cmb +1 1018 +2 jwr +1 950 +2 gdb +1 931 +2 marc +1 898 +2 usg +1 865 +2 ggr +1 822 +2 daemon +1 803 +2 mihalis +1 700 +2 honey +1 624 +2 tad +1 559 +2 acs +1 541 +2 uucp +1 523 +2 raf +1 495 +2 adh +1 456 +2 kec +1 414 +2 craig +1 386 +2 donmac +1 375 +2 jj +1 348 +2 ravi +1 344 +2 drw +1 327 +2 stars +1 288 +2 mrg +1 272 +2 jcb +1 263 +2 ralph +1 253 +2 tom +1 251 +2 sjb +1 248 +2 haight +1 224 +2 sharon +1 222 +2 chuck +1 213 +2 dsj +1 201 +2 bill +1 184 +2 god +1 176 +2 sys +1 166 +2 meh +1 163 +2 jon +1 144 +2 dan +1 143 +2 fox +1 123 +2 dale +1 116 +2 kab +1 95 +2 buz +1 80 +2 asc +1 79 +2 jas +1 79 +2 trt +1 64 +2 wsb +1 62 +2 dwh +1 56 +2 ktf +1 54 +2 lr +1 47 +2 dlc +1 45 +2 dls +1 45 +2 jwf +1 44 +2 mash +1 43 +2 ars +1 43 +2 vgl +1 37 +2 jfo +1 32 +2 rab +1 31 +2 pd +1 29 +2 jns +1 25 +2 spm +1 22 +2 rob +1 15 +2 egb +1 10 +2 hm +1 10 +2 mhb +1 6 +2 aed +1 6 +2 cpb +1 5 +2 evp +1 4 +2 ber +1 4 +2 men +1 4 +2 mitch +1 3 +2 ast +1 3 +2 jfr +1 3 +2 lax +1 3 +2 nel +1 2 +2 blue +1 2 +2 jfk +1 2 +2 njas +1 1 +2 122sec +1 1 +2 ddwar +1 1 +2 gopi +1 1 +2 jk +1 1 +2 learn +1 1 +2 low +1 1 +2 nac +1 1 +2 sidor +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 2roottcsh:*:0:0:Super-User +2 running +3 tcsh +4 [cbm]:/:/bin/tcsh +1 3sysadm:*:0:0:System +2 V +3 Administration:/usr/admin:/bin/sh +1 4diag:*:0:996:Hardware +2 Diagnostics:/usr/diags:/bin/csh +1 5daemon:*:1:1:daemons:/:/bin/sh +1 6bin:*:2:2:System +2 Tools +3 Owner:/bin:/dev/null +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 9sys:*:4:0:System +2 Activity +3 Owner:/usr/adm:/bin/sh +1 10adm:*:5:3:Accounting +2 Files +3 Owner:/usr/adm:/bin/sh +1 11lp:*:9:9:Print +2 Spooler +3 Owner:/var/spool/lp:/bin/sh +1 12auditor:*:11:0:Audit +2 Activity +3 Owner:/auditor:/bin/sh +1 13dbadmin:*:12:0:Security +2 Database +3 Owner:/dbadmin:/bin/sh +1 14bootes:dcon:50:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 15cdjuke:dcon:51:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 16rfindd:*:66:1:Rfind +2 Daemon +3 and +4 Fsdump:/var/rfindd:/bin/sh +1 17EZsetup:*:992:998:System +2 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 18demos:*:993:997:Demonstration +2 User:/usr/demos:/bin/csh +1 19tutor:*:994:997:Tutorial +2 User:/usr/tutor:/bin/csh +1 20tour:*:995:997:IRIS +2 Space +3 Tour:/usr/people/tour:/bin/csh +1 21guest:nfP4/Wpvio/Rw:998:998:Guest +2 Account:/usr/people/guest:/bin/csh +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +2 Account:/usr/people/4Dgifts:/bin/csh +1 23nobody:*:60001:60001:SVR4 +2 nobody +3 uid:/dev/null:/dev/null +1 24noaccess:*:60002:60002:uid +2 no +3 access:/dev/null:/dev/null +1 25nobody:*:-2:-2:original +2 nobody +3 uid:/dev/null:/dev/null +1 26rje:*:8:8:RJE +2 Owner:/usr/spool/rje: +1 27changes:*:11:11:system +2 change +3 log:/: +1 28dist:sorry:9999:4:file +2 distributions:/v/adm/dist:/v/bin/sh +1 29man:*:99:995:On-line +2 Manual +3 Owner:/: +1 30phoneca:*:991:991:phone +2 call +3 log +4 [tom]:/v/adm/log:/v/bin/sh +1 1r +2 oot +3 EMpNB8Zp56 +4 0 +5 0 +6 Super-User,,,,,,, +7 / +8 /bin/sh +1 2r +2 oottcsh +3 * +4 0 +5 0 +6 Super-User +7 running +8 tcsh +9 [cbm] +10 / +11 /bin/tcsh +1 3s +2 ysadm +3 * +4 0 +5 0 +6 System +7 V +8 Administration +9 /usr/admin +10 /bin/sh +1 4d +2 iag +3 * +4 0 +5 996 +6 Hardware +7 Diagnostics +8 /usr/diags +9 /bin/csh +1 5d +2 aemon +3 * +4 1 +5 1 +6 daemons +7 / +8 /bin/sh +1 6b +2 in +3 * +4 2 +5 2 +6 System +7 Tools +8 Owner +9 /bin +10 /dev/null +1 7n +2 uucp +3 BJnuQbAo +4 6 +5 10 +6 UUCP.Admin +7 /usr/spool/uucppublic +8 /usr/lib/uucp/uucico +1 8u +2 ucp +3 * +4 3 +5 5 +6 UUCP.Admin +7 /usr/lib/uucp +1 9s +2 ys +3 * +4 4 +5 0 +6 System +7 Activity +8 Owner +9 /usr/adm +10 /bin/sh +1 10 +2 adm +3 * +4 5 +5 3 +6 Accounting +7 Files +8 Owner +9 /usr/adm +10 /bin/sh +1 11 +2 lp +3 * +4 9 +5 9 +6 Print +7 Spooler +8 Owner +9 /var/spool/lp +10 /bin/sh +1 12 +2 auditor +3 * +4 11 +5 0 +6 Audit +7 Activity +8 Owner +9 /auditor +10 /bin/sh +1 13 +2 dbadmin +3 * +4 12 +5 0 +6 Security +7 Database +8 Owner +9 /dbadmin +10 /bin/sh +1 14 +2 bootes +3 dcon +4 50 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 15 +2 cdjuke +3 dcon +4 51 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 16 +2 rfindd +3 * +4 66 +5 1 +6 Rfind +7 Daemon +8 and +9 Fsdump +10 /var/rfindd +11 /bin/sh +1 17 +2 EZsetup +3 * +4 992 +5 998 +6 System +7 Setup +8 /var/sysadmdesktop/EZsetup +9 /bin/csh +1 18 +2 demos +3 * +4 993 +5 997 +6 Demonstration +7 User +8 /usr/demos +9 /bin/csh +1 19 +2 tutor +3 * +4 994 +5 997 +6 Tutorial +7 User +8 /usr/tutor +9 /bin/csh +1 20 +2 tour +3 * +4 995 +5 997 +6 IRIS +7 Space +8 Tour +9 /usr/people/tour +10 /bin/csh +1 21 +2 guest +3 nfP4/Wpvio/Rw +4 998 +5 998 +6 Guest +7 Account +8 /usr/people/guest +9 /bin/csh +1 22 +2 4Dgifts +3 0nWRTZsOMt. +4 999 +5 998 +6 4Dgifts +7 Account +8 /usr/people/4Dgifts +9 /bin/csh +1 23 +2 nobody +3 * +4 60001 +5 60001 +6 SVR4 +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 24 +2 noaccess +3 * +4 60002 +5 60002 +6 uid +7 no +8 access +9 /dev/null +10 /dev/null +1 25 +2 nobody +3 * +4 -2 +5 -2 +6 original +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 26 +2 rje +3 * +4 8 +5 8 +6 RJE +7 Owner +8 /usr/spool/rje +1 27 +2 changes +3 * +4 11 +5 11 +6 system +7 change +8 log +9 / +1 28 +2 dist +3 sorry +4 9999 +5 4 +6 file +7 distributions +8 /v/adm/dist +9 /v/bin/sh +1 29 +2 man +3 * +4 99 +5 995 +6 On-line +7 Manual +8 Owner +9 / +1 30 +2 phoneca +3 * +4 991 +5 991 +6 phone +7 call +8 log +9 [tom] +10 /v/adm/log +11 /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.for2 b/src/tool/awk/testdata/output/t.for2 new file mode 100644 index 0000000..2aa2eb8 --- /dev/null +++ b/src/tool/awk/testdata/output/t.for2 @@ -0,0 +1,645 @@ +1 /dev/rrp3: +1 17379 +2 mel +1 16693 +2 bwk +3 me +1 16116 +2 ken +3 him +4 someone +5 else +1 15713 +2 srb +1 11895 +2 lem +1 10409 +2 scj +1 10252 +2 rhm +1 9853 +2 shen +1 9748 +2 a68 +1 9492 +2 sif +1 9190 +2 pjw +1 8912 +2 nls +1 8895 +2 dmr +1 8491 +2 cda +1 8372 +2 bs +1 8252 +2 llc +1 7450 +2 mb +1 7360 +2 ava +1 7273 +2 jrv +1 7080 +2 bin +1 7063 +2 greg +1 6567 +2 dict +1 6462 +2 lck +1 6291 +2 rje +1 6211 +2 lwf +1 5671 +2 dave +1 5373 +2 jhc +1 5220 +2 agf +1 5167 +2 doug +1 5007 +2 valerie +1 3963 +2 jca +1 3895 +2 bbs +1 3796 +2 moh +1 3481 +2 xchar +1 3200 +2 tbl +1 2845 +2 s +1 2774 +2 tgs +1 2641 +2 met +1 2566 +2 jck +1 2511 +2 port +1 2479 +2 sue +1 2127 +2 root +1 1989 +2 bsb +1 1989 +2 jeg +1 1933 +2 eag +1 1801 +2 pdj +1 1590 +2 tpc +1 1385 +2 cvw +1 1370 +2 rwm +1 1316 +2 avg +1 1205 +2 eg +1 1194 +2 jam +1 1153 +2 dl +1 1150 +2 lgm +1 1031 +2 cmb +1 1018 +2 jwr +1 950 +2 gdb +1 931 +2 marc +1 898 +2 usg +1 865 +2 ggr +1 822 +2 daemon +1 803 +2 mihalis +1 700 +2 honey +1 624 +2 tad +1 559 +2 acs +1 541 +2 uucp +1 523 +2 raf +1 495 +2 adh +1 456 +2 kec +1 414 +2 craig +1 386 +2 donmac +1 375 +2 jj +1 348 +2 ravi +1 344 +2 drw +1 327 +2 stars +1 288 +2 mrg +1 272 +2 jcb +1 263 +2 ralph +1 253 +2 tom +1 251 +2 sjb +1 248 +2 haight +1 224 +2 sharon +1 222 +2 chuck +1 213 +2 dsj +1 201 +2 bill +1 184 +2 god +1 176 +2 sys +1 166 +2 meh +1 163 +2 jon +1 144 +2 dan +1 143 +2 fox +1 123 +2 dale +1 116 +2 kab +1 95 +2 buz +1 80 +2 asc +1 79 +2 jas +1 79 +2 trt +1 64 +2 wsb +1 62 +2 dwh +1 56 +2 ktf +1 54 +2 lr +1 47 +2 dlc +1 45 +2 dls +1 45 +2 jwf +1 44 +2 mash +1 43 +2 ars +1 43 +2 vgl +1 37 +2 jfo +1 32 +2 rab +1 31 +2 pd +1 29 +2 jns +1 25 +2 spm +1 22 +2 rob +1 15 +2 egb +1 10 +2 hm +1 10 +2 mhb +1 6 +2 aed +1 6 +2 cpb +1 5 +2 evp +1 4 +2 ber +1 4 +2 men +1 4 +2 mitch +1 3 +2 ast +1 3 +2 jfr +1 3 +2 lax +1 3 +2 nel +1 2 +2 blue +1 2 +2 jfk +1 2 +2 njas +1 1 +2 122sec +1 1 +2 ddwar +1 1 +2 gopi +1 1 +2 jk +1 1 +2 learn +1 1 +2 low +1 1 +2 nac +1 1 +2 sidor +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 2roottcsh:*:0:0:Super-User +2 running +3 tcsh +4 [cbm]:/:/bin/tcsh +1 3sysadm:*:0:0:System +2 V +3 Administration:/usr/admin:/bin/sh +1 4diag:*:0:996:Hardware +2 Diagnostics:/usr/diags:/bin/csh +1 5daemon:*:1:1:daemons:/:/bin/sh +1 6bin:*:2:2:System +2 Tools +3 Owner:/bin:/dev/null +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 9sys:*:4:0:System +2 Activity +3 Owner:/usr/adm:/bin/sh +1 10adm:*:5:3:Accounting +2 Files +3 Owner:/usr/adm:/bin/sh +1 11lp:*:9:9:Print +2 Spooler +3 Owner:/var/spool/lp:/bin/sh +1 12auditor:*:11:0:Audit +2 Activity +3 Owner:/auditor:/bin/sh +1 13dbadmin:*:12:0:Security +2 Database +3 Owner:/dbadmin:/bin/sh +1 14bootes:dcon:50:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 15cdjuke:dcon:51:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +1 16rfindd:*:66:1:Rfind +2 Daemon +3 and +4 Fsdump:/var/rfindd:/bin/sh +1 17EZsetup:*:992:998:System +2 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 18demos:*:993:997:Demonstration +2 User:/usr/demos:/bin/csh +1 19tutor:*:994:997:Tutorial +2 User:/usr/tutor:/bin/csh +1 20tour:*:995:997:IRIS +2 Space +3 Tour:/usr/people/tour:/bin/csh +1 21guest:nfP4/Wpvio/Rw:998:998:Guest +2 Account:/usr/people/guest:/bin/csh +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +2 Account:/usr/people/4Dgifts:/bin/csh +1 23nobody:*:60001:60001:SVR4 +2 nobody +3 uid:/dev/null:/dev/null +1 24noaccess:*:60002:60002:uid +2 no +3 access:/dev/null:/dev/null +1 25nobody:*:-2:-2:original +2 nobody +3 uid:/dev/null:/dev/null +1 26rje:*:8:8:RJE +2 Owner:/usr/spool/rje: +1 27changes:*:11:11:system +2 change +3 log:/: +1 28dist:sorry:9999:4:file +2 distributions:/v/adm/dist:/v/bin/sh +1 29man:*:99:995:On-line +2 Manual +3 Owner:/: +1 30phoneca:*:991:991:phone +2 call +3 log +4 [tom]:/v/adm/log:/v/bin/sh +1 1r +2 oot +3 EMpNB8Zp56 +4 0 +5 0 +6 Super-User,,,,,,, +7 / +8 /bin/sh +1 2r +2 oottcsh +3 * +4 0 +5 0 +6 Super-User +7 running +8 tcsh +9 [cbm] +10 / +11 /bin/tcsh +1 3s +2 ysadm +3 * +4 0 +5 0 +6 System +7 V +8 Administration +9 /usr/admin +10 /bin/sh +1 4d +2 iag +3 * +4 0 +5 996 +6 Hardware +7 Diagnostics +8 /usr/diags +9 /bin/csh +1 5d +2 aemon +3 * +4 1 +5 1 +6 daemons +7 / +8 /bin/sh +1 6b +2 in +3 * +4 2 +5 2 +6 System +7 Tools +8 Owner +9 /bin +10 /dev/null +1 7n +2 uucp +3 BJnuQbAo +4 6 +5 10 +6 UUCP.Admin +7 /usr/spool/uucppublic +8 /usr/lib/uucp/uucico +1 8u +2 ucp +3 * +4 3 +5 5 +6 UUCP.Admin +7 /usr/lib/uucp +1 9s +2 ys +3 * +4 4 +5 0 +6 System +7 Activity +8 Owner +9 /usr/adm +10 /bin/sh +1 10 +2 adm +3 * +4 5 +5 3 +6 Accounting +7 Files +8 Owner +9 /usr/adm +10 /bin/sh +1 11 +2 lp +3 * +4 9 +5 9 +6 Print +7 Spooler +8 Owner +9 /var/spool/lp +10 /bin/sh +1 12 +2 auditor +3 * +4 11 +5 0 +6 Audit +7 Activity +8 Owner +9 /auditor +10 /bin/sh +1 13 +2 dbadmin +3 * +4 12 +5 0 +6 Security +7 Database +8 Owner +9 /dbadmin +10 /bin/sh +1 14 +2 bootes +3 dcon +4 50 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 15 +2 cdjuke +3 dcon +4 51 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +1 16 +2 rfindd +3 * +4 66 +5 1 +6 Rfind +7 Daemon +8 and +9 Fsdump +10 /var/rfindd +11 /bin/sh +1 17 +2 EZsetup +3 * +4 992 +5 998 +6 System +7 Setup +8 /var/sysadmdesktop/EZsetup +9 /bin/csh +1 18 +2 demos +3 * +4 993 +5 997 +6 Demonstration +7 User +8 /usr/demos +9 /bin/csh +1 19 +2 tutor +3 * +4 994 +5 997 +6 Tutorial +7 User +8 /usr/tutor +9 /bin/csh +1 20 +2 tour +3 * +4 995 +5 997 +6 IRIS +7 Space +8 Tour +9 /usr/people/tour +10 /bin/csh +1 21 +2 guest +3 nfP4/Wpvio/Rw +4 998 +5 998 +6 Guest +7 Account +8 /usr/people/guest +9 /bin/csh +1 22 +2 4Dgifts +3 0nWRTZsOMt. +4 999 +5 998 +6 4Dgifts +7 Account +8 /usr/people/4Dgifts +9 /bin/csh +1 23 +2 nobody +3 * +4 60001 +5 60001 +6 SVR4 +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 24 +2 noaccess +3 * +4 60002 +5 60002 +6 uid +7 no +8 access +9 /dev/null +10 /dev/null +1 25 +2 nobody +3 * +4 -2 +5 -2 +6 original +7 nobody +8 uid +9 /dev/null +10 /dev/null +1 26 +2 rje +3 * +4 8 +5 8 +6 RJE +7 Owner +8 /usr/spool/rje +1 27 +2 changes +3 * +4 11 +5 11 +6 system +7 change +8 log +9 / +1 28 +2 dist +3 sorry +4 9999 +5 4 +6 file +7 distributions +8 /v/adm/dist +9 /v/bin/sh +1 29 +2 man +3 * +4 99 +5 995 +6 On-line +7 Manual +8 Owner +9 / +1 30 +2 phoneca +3 * +4 991 +5 991 +6 phone +7 call +8 log +9 [tom] +10 /v/adm/log +11 /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.for3 b/src/tool/awk/testdata/output/t.for3 new file mode 100644 index 0000000..ade4378 --- /dev/null +++ b/src/tool/awk/testdata/output/t.for3 @@ -0,0 +1,1290 @@ +1 /dev/rrp3: +/dev/rrp3: +1 17379 +2 mel +17379 +mel +1 16693 +2 bwk +3 me +16693 +bwk +me +1 16116 +2 ken +3 him +4 someone +5 else +16116 +ken +him +someone +else +1 15713 +2 srb +15713 +srb +1 11895 +2 lem +11895 +lem +1 10409 +2 scj +10409 +scj +1 10252 +2 rhm +10252 +rhm +1 9853 +2 shen +9853 +shen +1 9748 +2 a68 +9748 +a68 +1 9492 +2 sif +9492 +sif +1 9190 +2 pjw +9190 +pjw +1 8912 +2 nls +8912 +nls +1 8895 +2 dmr +8895 +dmr +1 8491 +2 cda +8491 +cda +1 8372 +2 bs +8372 +bs +1 8252 +2 llc +8252 +llc +1 7450 +2 mb +7450 +mb +1 7360 +2 ava +7360 +ava +1 7273 +2 jrv +7273 +jrv +1 7080 +2 bin +7080 +bin +1 7063 +2 greg +7063 +greg +1 6567 +2 dict +6567 +dict +1 6462 +2 lck +6462 +lck +1 6291 +2 rje +6291 +rje +1 6211 +2 lwf +6211 +lwf +1 5671 +2 dave +5671 +dave +1 5373 +2 jhc +5373 +jhc +1 5220 +2 agf +5220 +agf +1 5167 +2 doug +5167 +doug +1 5007 +2 valerie +5007 +valerie +1 3963 +2 jca +3963 +jca +1 3895 +2 bbs +3895 +bbs +1 3796 +2 moh +3796 +moh +1 3481 +2 xchar +3481 +xchar +1 3200 +2 tbl +3200 +tbl +1 2845 +2 s +2845 +s +1 2774 +2 tgs +2774 +tgs +1 2641 +2 met +2641 +met +1 2566 +2 jck +2566 +jck +1 2511 +2 port +2511 +port +1 2479 +2 sue +2479 +sue +1 2127 +2 root +2127 +root +1 1989 +2 bsb +1989 +bsb +1 1989 +2 jeg +1989 +jeg +1 1933 +2 eag +1933 +eag +1 1801 +2 pdj +1801 +pdj +1 1590 +2 tpc +1590 +tpc +1 1385 +2 cvw +1385 +cvw +1 1370 +2 rwm +1370 +rwm +1 1316 +2 avg +1316 +avg +1 1205 +2 eg +1205 +eg +1 1194 +2 jam +1194 +jam +1 1153 +2 dl +1153 +dl +1 1150 +2 lgm +1150 +lgm +1 1031 +2 cmb +1031 +cmb +1 1018 +2 jwr +1018 +jwr +1 950 +2 gdb +950 +gdb +1 931 +2 marc +931 +marc +1 898 +2 usg +898 +usg +1 865 +2 ggr +865 +ggr +1 822 +2 daemon +822 +daemon +1 803 +2 mihalis +803 +mihalis +1 700 +2 honey +700 +honey +1 624 +2 tad +624 +tad +1 559 +2 acs +559 +acs +1 541 +2 uucp +541 +uucp +1 523 +2 raf +523 +raf +1 495 +2 adh +495 +adh +1 456 +2 kec +456 +kec +1 414 +2 craig +414 +craig +1 386 +2 donmac +386 +donmac +1 375 +2 jj +375 +jj +1 348 +2 ravi +348 +ravi +1 344 +2 drw +344 +drw +1 327 +2 stars +327 +stars +1 288 +2 mrg +288 +mrg +1 272 +2 jcb +272 +jcb +1 263 +2 ralph +263 +ralph +1 253 +2 tom +253 +tom +1 251 +2 sjb +251 +sjb +1 248 +2 haight +248 +haight +1 224 +2 sharon +224 +sharon +1 222 +2 chuck +222 +chuck +1 213 +2 dsj +213 +dsj +1 201 +2 bill +201 +bill +1 184 +2 god +184 +god +1 176 +2 sys +176 +sys +1 166 +2 meh +166 +meh +1 163 +2 jon +163 +jon +1 144 +2 dan +144 +dan +1 143 +2 fox +143 +fox +1 123 +2 dale +123 +dale +1 116 +2 kab +116 +kab +1 95 +2 buz +95 +buz +1 80 +2 asc +80 +asc +1 79 +2 jas +79 +jas +1 79 +2 trt +79 +trt +1 64 +2 wsb +64 +wsb +1 62 +2 dwh +62 +dwh +1 56 +2 ktf +56 +ktf +1 54 +2 lr +54 +lr +1 47 +2 dlc +47 +dlc +1 45 +2 dls +45 +dls +1 45 +2 jwf +45 +jwf +1 44 +2 mash +44 +mash +1 43 +2 ars +43 +ars +1 43 +2 vgl +43 +vgl +1 37 +2 jfo +37 +jfo +1 32 +2 rab +32 +rab +1 31 +2 pd +31 +pd +1 29 +2 jns +29 +jns +1 25 +2 spm +25 +spm +1 22 +2 rob +22 +rob +1 15 +2 egb +15 +egb +1 10 +2 hm +10 +hm +1 10 +2 mhb +10 +mhb +1 6 +2 aed +6 +aed +1 6 +2 cpb +6 +cpb +1 5 +2 evp +5 +evp +1 4 +2 ber +4 +ber +1 4 +2 men +4 +men +1 4 +2 mitch +4 +mitch +1 3 +2 ast +3 +ast +1 3 +2 jfr +3 +jfr +1 3 +2 lax +3 +lax +1 3 +2 nel +3 +nel +1 2 +2 blue +2 +blue +1 2 +2 jfk +2 +jfk +1 2 +2 njas +2 +njas +1 1 +2 122sec +1 +122sec +1 1 +2 ddwar +1 +ddwar +1 1 +2 gopi +1 +gopi +1 1 +2 jk +1 +jk +1 1 +2 learn +1 +learn +1 1 +2 low +1 +low +1 1 +2 nac +1 +nac +1 1 +2 sidor +1 +sidor +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 2roottcsh:*:0:0:Super-User +2 running +3 tcsh +4 [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User +running +tcsh +[cbm]:/:/bin/tcsh +1 3sysadm:*:0:0:System +2 V +3 Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System +V +Administration:/usr/admin:/bin/sh +1 4diag:*:0:996:Hardware +2 Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware +Diagnostics:/usr/diags:/bin/csh +1 5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +1 6bin:*:2:2:System +2 Tools +3 Owner:/bin:/dev/null +6bin:*:2:2:System +Tools +Owner:/bin:/dev/null +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 9sys:*:4:0:System +2 Activity +3 Owner:/usr/adm:/bin/sh +9sys:*:4:0:System +Activity +Owner:/usr/adm:/bin/sh +1 10adm:*:5:3:Accounting +2 Files +3 Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting +Files +Owner:/usr/adm:/bin/sh +1 11lp:*:9:9:Print +2 Spooler +3 Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print +Spooler +Owner:/var/spool/lp:/bin/sh +1 12auditor:*:11:0:Audit +2 Activity +3 Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit +Activity +Owner:/auditor:/bin/sh +1 13dbadmin:*:12:0:Security +2 Database +3 Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security +Database +Owner:/dbadmin:/bin/sh +1 14bootes:dcon:50:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +14bootes:dcon:50:1:Tom +Killian +(DO +NOT +REMOVE):/tmp: +1 15cdjuke:dcon:51:1:Tom +2 Killian +3 (DO +4 NOT +5 REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom +Killian +(DO +NOT +REMOVE):/tmp: +1 16rfindd:*:66:1:Rfind +2 Daemon +3 and +4 Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind +Daemon +and +Fsdump:/var/rfindd:/bin/sh +1 17EZsetup:*:992:998:System +2 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 18demos:*:993:997:Demonstration +2 User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration +User:/usr/demos:/bin/csh +1 19tutor:*:994:997:Tutorial +2 User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial +User:/usr/tutor:/bin/csh +1 20tour:*:995:997:IRIS +2 Space +3 Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS +Space +Tour:/usr/people/tour:/bin/csh +1 21guest:nfP4/Wpvio/Rw:998:998:Guest +2 Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest +Account:/usr/people/guest:/bin/csh +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +2 Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +Account:/usr/people/4Dgifts:/bin/csh +1 23nobody:*:60001:60001:SVR4 +2 nobody +3 uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 +nobody +uid:/dev/null:/dev/null +1 24noaccess:*:60002:60002:uid +2 no +3 access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid +no +access:/dev/null:/dev/null +1 25nobody:*:-2:-2:original +2 nobody +3 uid:/dev/null:/dev/null +25nobody:*:-2:-2:original +nobody +uid:/dev/null:/dev/null +1 26rje:*:8:8:RJE +2 Owner:/usr/spool/rje: +26rje:*:8:8:RJE +Owner:/usr/spool/rje: +1 27changes:*:11:11:system +2 change +3 log:/: +27changes:*:11:11:system +change +log:/: +1 28dist:sorry:9999:4:file +2 distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file +distributions:/v/adm/dist:/v/bin/sh +1 29man:*:99:995:On-line +2 Manual +3 Owner:/: +29man:*:99:995:On-line +Manual +Owner:/: +1 30phoneca:*:991:991:phone +2 call +3 log +4 [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone +call +log +[tom]:/v/adm/log:/v/bin/sh +1 1r +2 oot +3 EMpNB8Zp56 +4 0 +5 0 +6 Super-User,,,,,,, +7 / +8 /bin/sh +1r +oot +EMpNB8Zp56 +0 +0 +Super-User,,,,,,, +/ +/bin/sh +1 2r +2 oottcsh +3 * +4 0 +5 0 +6 Super-User +7 running +8 tcsh +9 [cbm] +10 / +11 /bin/tcsh +2r +oottcsh +* +0 +0 +Super-User +running +tcsh +[cbm] +/ +/bin/tcsh +1 3s +2 ysadm +3 * +4 0 +5 0 +6 System +7 V +8 Administration +9 /usr/admin +10 /bin/sh +3s +ysadm +* +0 +0 +System +V +Administration +/usr/admin +/bin/sh +1 4d +2 iag +3 * +4 0 +5 996 +6 Hardware +7 Diagnostics +8 /usr/diags +9 /bin/csh +4d +iag +* +0 +996 +Hardware +Diagnostics +/usr/diags +/bin/csh +1 5d +2 aemon +3 * +4 1 +5 1 +6 daemons +7 / +8 /bin/sh +5d +aemon +* +1 +1 +daemons +/ +/bin/sh +1 6b +2 in +3 * +4 2 +5 2 +6 System +7 Tools +8 Owner +9 /bin +10 /dev/null +6b +in +* +2 +2 +System +Tools +Owner +/bin +/dev/null +1 7n +2 uucp +3 BJnuQbAo +4 6 +5 10 +6 UUCP.Admin +7 /usr/spool/uucppublic +8 /usr/lib/uucp/uucico +7n +uucp +BJnuQbAo +6 +10 +UUCP.Admin +/usr/spool/uucppublic +/usr/lib/uucp/uucico +1 8u +2 ucp +3 * +4 3 +5 5 +6 UUCP.Admin +7 /usr/lib/uucp +8u +ucp +* +3 +5 +UUCP.Admin +/usr/lib/uucp +1 9s +2 ys +3 * +4 4 +5 0 +6 System +7 Activity +8 Owner +9 /usr/adm +10 /bin/sh +9s +ys +* +4 +0 +System +Activity +Owner +/usr/adm +/bin/sh +1 10 +2 adm +3 * +4 5 +5 3 +6 Accounting +7 Files +8 Owner +9 /usr/adm +10 /bin/sh +10 +adm +* +5 +3 +Accounting +Files +Owner +/usr/adm +/bin/sh +1 11 +2 lp +3 * +4 9 +5 9 +6 Print +7 Spooler +8 Owner +9 /var/spool/lp +10 /bin/sh +11 +lp +* +9 +9 +Print +Spooler +Owner +/var/spool/lp +/bin/sh +1 12 +2 auditor +3 * +4 11 +5 0 +6 Audit +7 Activity +8 Owner +9 /auditor +10 /bin/sh +12 +auditor +* +11 +0 +Audit +Activity +Owner +/auditor +/bin/sh +1 13 +2 dbadmin +3 * +4 12 +5 0 +6 Security +7 Database +8 Owner +9 /dbadmin +10 /bin/sh +13 +dbadmin +* +12 +0 +Security +Database +Owner +/dbadmin +/bin/sh +1 14 +2 bootes +3 dcon +4 50 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +14 +bootes +dcon +50 +1 +Tom +Killian +(DO +NOT +REMOVE) +/tmp +1 15 +2 cdjuke +3 dcon +4 51 +5 1 +6 Tom +7 Killian +8 (DO +9 NOT +10 REMOVE) +11 /tmp +15 +cdjuke +dcon +51 +1 +Tom +Killian +(DO +NOT +REMOVE) +/tmp +1 16 +2 rfindd +3 * +4 66 +5 1 +6 Rfind +7 Daemon +8 and +9 Fsdump +10 /var/rfindd +11 /bin/sh +16 +rfindd +* +66 +1 +Rfind +Daemon +and +Fsdump +/var/rfindd +/bin/sh +1 17 +2 EZsetup +3 * +4 992 +5 998 +6 System +7 Setup +8 /var/sysadmdesktop/EZsetup +9 /bin/csh +17 +EZsetup +* +992 +998 +System +Setup +/var/sysadmdesktop/EZsetup +/bin/csh +1 18 +2 demos +3 * +4 993 +5 997 +6 Demonstration +7 User +8 /usr/demos +9 /bin/csh +18 +demos +* +993 +997 +Demonstration +User +/usr/demos +/bin/csh +1 19 +2 tutor +3 * +4 994 +5 997 +6 Tutorial +7 User +8 /usr/tutor +9 /bin/csh +19 +tutor +* +994 +997 +Tutorial +User +/usr/tutor +/bin/csh +1 20 +2 tour +3 * +4 995 +5 997 +6 IRIS +7 Space +8 Tour +9 /usr/people/tour +10 /bin/csh +20 +tour +* +995 +997 +IRIS +Space +Tour +/usr/people/tour +/bin/csh +1 21 +2 guest +3 nfP4/Wpvio/Rw +4 998 +5 998 +6 Guest +7 Account +8 /usr/people/guest +9 /bin/csh +21 +guest +nfP4/Wpvio/Rw +998 +998 +Guest +Account +/usr/people/guest +/bin/csh +1 22 +2 4Dgifts +3 0nWRTZsOMt. +4 999 +5 998 +6 4Dgifts +7 Account +8 /usr/people/4Dgifts +9 /bin/csh +22 +4Dgifts +0nWRTZsOMt. +999 +998 +4Dgifts +Account +/usr/people/4Dgifts +/bin/csh +1 23 +2 nobody +3 * +4 60001 +5 60001 +6 SVR4 +7 nobody +8 uid +9 /dev/null +10 /dev/null +23 +nobody +* +60001 +60001 +SVR4 +nobody +uid +/dev/null +/dev/null +1 24 +2 noaccess +3 * +4 60002 +5 60002 +6 uid +7 no +8 access +9 /dev/null +10 /dev/null +24 +noaccess +* +60002 +60002 +uid +no +access +/dev/null +/dev/null +1 25 +2 nobody +3 * +4 -2 +5 -2 +6 original +7 nobody +8 uid +9 /dev/null +10 /dev/null +25 +nobody +* +-2 +-2 +original +nobody +uid +/dev/null +/dev/null +1 26 +2 rje +3 * +4 8 +5 8 +6 RJE +7 Owner +8 /usr/spool/rje +26 +rje +* +8 +8 +RJE +Owner +/usr/spool/rje +1 27 +2 changes +3 * +4 11 +5 11 +6 system +7 change +8 log +9 / +27 +changes +* +11 +11 +system +change +log +/ +1 28 +2 dist +3 sorry +4 9999 +5 4 +6 file +7 distributions +8 /v/adm/dist +9 /v/bin/sh +28 +dist +sorry +9999 +4 +file +distributions +/v/adm/dist +/v/bin/sh +1 29 +2 man +3 * +4 99 +5 995 +6 On-line +7 Manual +8 Owner +9 / +29 +man +* +99 +995 +On-line +Manual +Owner +/ +1 30 +2 phoneca +3 * +4 991 +5 991 +6 phone +7 call +8 log +9 [tom] +10 /v/adm/log +11 /v/bin/sh +30 +phoneca +* +991 +991 +phone +call +log +[tom] +/v/adm/log +/v/bin/sh diff --git a/src/tool/awk/testdata/output/t.format4 b/src/tool/awk/testdata/output/t.format4 new file mode 100644 index 0000000..5112c24 --- /dev/null +++ b/src/tool/awk/testdata/output/t.format4 @@ -0,0 +1,4 @@ +125 + x +105 + diff --git a/src/tool/awk/testdata/output/t.fun b/src/tool/awk/testdata/output/t.fun new file mode 100644 index 0000000..1906196 --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun @@ -0,0 +1,199 @@ +<{/dev/rrp3:}> +<{}> +<{17379}> +<{16693}> +<{16116}> +<{15713}> +<{11895}> +<{10409}> +<{10252}> +<{9853}> +<{9748}> +<{9492}> +<{9190}> +<{8912}> +<{8895}> +<{8491}> +<{8372}> +<{8252}> +<{7450}> +<{7360}> +<{7273}> +<{7080}> +<{7063}> +<{6567}> +<{6462}> +<{6291}> +<{6211}> +<{5671}> +<{5373}> +<{5220}> +<{5167}> +<{5007}> +<{3963}> +<{3895}> +<{3796}> +<{3481}> +<{3200}> +<{2845}> +<{2774}> +<{2641}> +<{2566}> +<{2511}> +<{2479}> +<{2127}> +<{1989}> +<{1989}> +<{1933}> +<{1801}> +<{1590}> +<{1385}> +<{1370}> +<{1316}> +<{1205}> +<{1194}> +<{1153}> +<{1150}> +<{1031}> +<{1018}> +<{950}> +<{931}> +<{898}> +<{865}> +<{822}> +<{803}> +<{700}> +<{624}> +<{559}> +<{541}> +<{523}> +<{495}> +<{456}> +<{414}> +<{386}> +<{375}> +<{348}> +<{344}> +<{327}> +<{288}> +<{272}> +<{263}> +<{253}> +<{251}> +<{248}> +<{224}> +<{222}> +<{213}> +<{201}> +<{184}> +<{176}> +<{166}> +<{163}> +<{144}> +<{143}> +<{123}> +<{116}> +<{95}> +<{80}> +<{79}> +<{79}> +<{64}> +<{62}> +<{56}> +<{54}> +<{47}> +<{45}> +<{45}> +<{44}> +<{43}> +<{43}> +<{37}> +<{32}> +<{31}> +<{29}> +<{25}> +<{22}> +<{15}> +<{10}> +<{10}> +<{6}> +<{6}> +<{5}> +<{4}> +<{4}> +<{4}> +<{3}> +<{3}> +<{3}> +<{3}> +<{2}> +<{2}> +<{2}> +<{1}> +<{1}> +<{1}> +<{1}> +<{1}> +<{1}> +<{1}> +<{1}> +<{1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh}> +<{2roottcsh:*:0:0:Super-User}> +<{3sysadm:*:0:0:System}> +<{4diag:*:0:996:Hardware}> +<{5daemon:*:1:1:daemons:/:/bin/sh}> +<{6bin:*:2:2:System}> +<{7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico}> +<{8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:}> +<{9sys:*:4:0:System}> +<{10adm:*:5:3:Accounting}> +<{11lp:*:9:9:Print}> +<{12auditor:*:11:0:Audit}> +<{13dbadmin:*:12:0:Security}> +<{14bootes:dcon:50:1:Tom}> +<{15cdjuke:dcon:51:1:Tom}> +<{16rfindd:*:66:1:Rfind}> +<{17EZsetup:*:992:998:System}> +<{18demos:*:993:997:Demonstration}> +<{19tutor:*:994:997:Tutorial}> +<{20tour:*:995:997:IRIS}> +<{21guest:nfP4/Wpvio/Rw:998:998:Guest}> +<{224Dgifts:0nWRTZsOMt.:999:998:4Dgifts}> +<{23nobody:*:60001:60001:SVR4}> +<{24noaccess:*:60002:60002:uid}> +<{25nobody:*:-2:-2:original}> +<{26rje:*:8:8:RJE}> +<{27changes:*:11:11:system}> +<{28dist:sorry:9999:4:file}> +<{29man:*:99:995:On-line}> +<{30phoneca:*:991:991:phone}> +<{1r}> +<{2r}> +<{3s}> +<{4d}> +<{5d}> +<{6b}> +<{7n}> +<{8u}> +<{9s}> +<{10}> +<{11}> +<{12}> +<{13}> +<{14}> +<{15}> +<{16}> +<{17}> +<{18}> +<{19}> +<{20}> +<{21}> +<{22}> +<{23}> +<{24}> +<{25}> +<{26}> +<{27}> +<{28}> +<{29}> +<{30}> diff --git a/src/tool/awk/testdata/output/t.fun0 b/src/tool/awk/testdata/output/t.fun0 new file mode 100644 index 0000000..3b2fc2b --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun0 @@ -0,0 +1,398 @@ +hello + +hello +<> +hello +<17379> +hello +<16693> +hello +<16116> +hello +<15713> +hello +<11895> +hello +<10409> +hello +<10252> +hello +<9853> +hello +<9748> +hello +<9492> +hello +<9190> +hello +<8912> +hello +<8895> +hello +<8491> +hello +<8372> +hello +<8252> +hello +<7450> +hello +<7360> +hello +<7273> +hello +<7080> +hello +<7063> +hello +<6567> +hello +<6462> +hello +<6291> +hello +<6211> +hello +<5671> +hello +<5373> +hello +<5220> +hello +<5167> +hello +<5007> +hello +<3963> +hello +<3895> +hello +<3796> +hello +<3481> +hello +<3200> +hello +<2845> +hello +<2774> +hello +<2641> +hello +<2566> +hello +<2511> +hello +<2479> +hello +<2127> +hello +<1989> +hello +<1989> +hello +<1933> +hello +<1801> +hello +<1590> +hello +<1385> +hello +<1370> +hello +<1316> +hello +<1205> +hello +<1194> +hello +<1153> +hello +<1150> +hello +<1031> +hello +<1018> +hello +<950> +hello +<931> +hello +<898> +hello +<865> +hello +<822> +hello +<803> +hello +<700> +hello +<624> +hello +<559> +hello +<541> +hello +<523> +hello +<495> +hello +<456> +hello +<414> +hello +<386> +hello +<375> +hello +<348> +hello +<344> +hello +<327> +hello +<288> +hello +<272> +hello +<263> +hello +<253> +hello +<251> +hello +<248> +hello +<224> +hello +<222> +hello +<213> +hello +<201> +hello +<184> +hello +<176> +hello +<166> +hello +<163> +hello +<144> +hello +<143> +hello +<123> +hello +<116> +hello +<95> +hello +<80> +hello +<79> +hello +<79> +hello +<64> +hello +<62> +hello +<56> +hello +<54> +hello +<47> +hello +<45> +hello +<45> +hello +<44> +hello +<43> +hello +<43> +hello +<37> +hello +<32> +hello +<31> +hello +<29> +hello +<25> +hello +<22> +hello +<15> +hello +<10> +hello +<10> +hello +<6> +hello +<6> +hello +<5> +hello +<4> +hello +<4> +hello +<4> +hello +<3> +hello +<3> +hello +<3> +hello +<3> +hello +<2> +hello +<2> +hello +<2> +hello +<1> +hello +<1> +hello +<1> +hello +<1> +hello +<1> +hello +<1> +hello +<1> +hello +<1> +hello +<1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh> +hello +<2roottcsh:*:0:0:Super-User> +hello +<3sysadm:*:0:0:System> +hello +<4diag:*:0:996:Hardware> +hello +<5daemon:*:1:1:daemons:/:/bin/sh> +hello +<6bin:*:2:2:System> +hello +<7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico> +hello +<8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:> +hello +<9sys:*:4:0:System> +hello +<10adm:*:5:3:Accounting> +hello +<11lp:*:9:9:Print> +hello +<12auditor:*:11:0:Audit> +hello +<13dbadmin:*:12:0:Security> +hello +<14bootes:dcon:50:1:Tom> +hello +<15cdjuke:dcon:51:1:Tom> +hello +<16rfindd:*:66:1:Rfind> +hello +<17EZsetup:*:992:998:System> +hello +<18demos:*:993:997:Demonstration> +hello +<19tutor:*:994:997:Tutorial> +hello +<20tour:*:995:997:IRIS> +hello +<21guest:nfP4/Wpvio/Rw:998:998:Guest> +hello +<224Dgifts:0nWRTZsOMt.:999:998:4Dgifts> +hello +<23nobody:*:60001:60001:SVR4> +hello +<24noaccess:*:60002:60002:uid> +hello +<25nobody:*:-2:-2:original> +hello +<26rje:*:8:8:RJE> +hello +<27changes:*:11:11:system> +hello +<28dist:sorry:9999:4:file> +hello +<29man:*:99:995:On-line> +hello +<30phoneca:*:991:991:phone> +hello +<1r> +hello +<2r> +hello +<3s> +hello +<4d> +hello +<5d> +hello +<6b> +hello +<7n> +hello +<8u> +hello +<9s> +hello +<10> +hello +<11> +hello +<12> +hello +<13> +hello +<14> +hello +<15> +hello +<16> +hello +<17> +hello +<18> +hello +<19> +hello +<20> +hello +<21> +hello +<22> +hello +<23> +hello +<24> +hello +<25> +hello +<26> +hello +<27> +hello +<28> +hello +<29> +hello +<30> diff --git a/src/tool/awk/testdata/output/t.fun1 b/src/tool/awk/testdata/output/t.fun1 new file mode 100644 index 0000000..317e967 --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun1 @@ -0,0 +1,2 @@ +hello +hello diff --git a/src/tool/awk/testdata/output/t.fun2 b/src/tool/awk/testdata/output/t.fun2 new file mode 100644 index 0000000..b13375a --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun2 @@ -0,0 +1,573 @@ +/dev/rrp3: +1 +2 +3 +4 +5 +6 +7 +8 +9 +g /dev/rrp3: + + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g + +g 17379 + +g 16693 + +g 16116 + +g 15713 + +g 11895 + +g 10409 + +g 10252 + +g 9853 + +g 9748 + +g 9492 + +g 9190 + +g 8912 + +g 8895 + +g 8491 + +g 8372 + +g 8252 + +g 7450 + +g 7360 + +g 7273 + +g 7080 + +g 7063 + +g 6567 + +g 6462 + +g 6291 + +g 6211 + +g 5671 + +g 5373 + +g 5220 + +g 5167 + +g 5007 + +g 3963 + +g 3895 + +g 3796 + +g 3481 + +g 3200 + +g 2845 + +g 2774 + +g 2641 + +g 2566 + +g 2511 + +g 2479 + +g 2127 + +g 1989 + +g 1989 + +g 1933 + +g 1801 + +g 1590 + +g 1385 + +g 1370 + +g 1316 + +g 1205 + +g 1194 + +g 1153 + +g 1150 + +g 1031 + +g 1018 + +g 950 + +g 931 + +g 898 + +g 865 + +g 822 + +g 803 + +g 700 + +g 624 + +g 559 + +g 541 + +g 523 + +g 495 + +g 456 + +g 414 + +g 386 + +g 375 + +g 348 + +g 344 + +g 327 + +g 288 + +g 272 + +g 263 + +g 253 + +g 251 + +g 248 + +g 224 + +g 222 + +g 213 + +g 201 + +g 184 + +g 176 + +g 166 + +g 163 + +g 144 + +g 143 + +g 123 + +g 116 + +g 95 + +g 80 + +g 79 + +g 79 + +g 64 + +g 62 + +g 56 + +g 54 + +g 47 + +g 45 + +g 45 + +g 44 + +g 43 + +g 43 + +g 37 + +g 32 + +g 31 + +g 29 + +g 25 + +g 22 + +g 15 + +g 10 + +g 10 + +6 +7 +8 +9 +g 6 + +6 +7 +8 +9 +g 6 + +5 +6 +7 +8 +9 +g 5 + +4 +5 +6 +7 +8 +9 +g 4 + +4 +5 +6 +7 +8 +9 +g 4 + +4 +5 +6 +7 +8 +9 +g 4 + +3 +4 +5 +6 +7 +8 +9 +g 3 + +3 +4 +5 +6 +7 +8 +9 +g 3 + +3 +4 +5 +6 +7 +8 +9 +g 3 + +3 +4 +5 +6 +7 +8 +9 +g 3 + +2 +3 +4 +5 +6 +7 +8 +9 +g 2 + +2 +3 +4 +5 +6 +7 +8 +9 +g 2 + +2 +3 +4 +5 +6 +7 +8 +9 +g 2 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +g 1 + +g 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + +g 2roottcsh:*:0:0:Super-User + +g 3sysadm:*:0:0:System + +g 4diag:*:0:996:Hardware + +g 5daemon:*:1:1:daemons:/:/bin/sh + +g 6bin:*:2:2:System + +g 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + +g 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + +g 9sys:*:4:0:System + +g 10adm:*:5:3:Accounting + +g 11lp:*:9:9:Print + +g 12auditor:*:11:0:Audit + +g 13dbadmin:*:12:0:Security + +g 14bootes:dcon:50:1:Tom + +g 15cdjuke:dcon:51:1:Tom + +g 16rfindd:*:66:1:Rfind + +g 17EZsetup:*:992:998:System + +g 18demos:*:993:997:Demonstration + +g 19tutor:*:994:997:Tutorial + +g 20tour:*:995:997:IRIS + +g 21guest:nfP4/Wpvio/Rw:998:998:Guest + +g 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + +g 23nobody:*:60001:60001:SVR4 + +g 24noaccess:*:60002:60002:uid + +g 25nobody:*:-2:-2:original + +g 26rje:*:8:8:RJE + +g 27changes:*:11:11:system + +g 28dist:sorry:9999:4:file + +g 29man:*:99:995:On-line + +g 30phoneca:*:991:991:phone + +g 1r + +g 2r + +g 3s + +g 4d + +g 5d + +g 6b + +g 7n + +g 8u + +g 9s + +g 10 + +g 11 + +g 12 + +g 13 + +g 14 + +g 15 + +g 16 + +g 17 + +g 18 + +g 19 + +g 20 + +g 21 + +g 22 + +g 23 + +g 24 + +g 25 + +g 26 + +g 27 + +g 28 + +g 29 + +g 30 + diff --git a/src/tool/awk/testdata/output/t.fun3 b/src/tool/awk/testdata/output/t.fun3 new file mode 100644 index 0000000..f0cd7cc --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun3 @@ -0,0 +1,510 @@ +g /dev/rrp3: +g +1737.9 +173.79 +17.379 +1.7379 +g 17379 +1669.3 +166.93 +16.693 +1.6693 +g 16693 +1611.6 +161.16 +16.116 +1.6116 +g 16116 +1571.3 +157.13 +15.713 +1.5713 +g 15713 +1189.5 +118.95 +11.895 +1.1895 +g 11895 +1040.9 +104.09 +10.409 +1.0409 +g 10409 +1025.2 +102.52 +10.252 +1.0252 +g 10252 +985.3 +98.53 +9.853 +g 9853 +974.8 +97.48 +9.748 +g 9748 +949.2 +94.92 +9.492 +g 9492 +919 +91.9 +9.19 +g 9190 +891.2 +89.12 +8.912 +g 8912 +889.5 +88.95 +8.895 +g 8895 +849.1 +84.91 +8.491 +g 8491 +837.2 +83.72 +8.372 +g 8372 +825.2 +82.52 +8.252 +g 8252 +745 +74.5 +7.45 +g 7450 +736 +73.6 +7.36 +g 7360 +727.3 +72.73 +7.273 +g 7273 +708 +70.8 +7.08 +g 7080 +706.3 +70.63 +7.063 +g 7063 +656.7 +65.67 +6.567 +g 6567 +646.2 +64.62 +6.462 +g 6462 +629.1 +62.91 +6.291 +g 6291 +621.1 +62.11 +6.211 +g 6211 +567.1 +56.71 +5.671 +g 5671 +537.3 +53.73 +5.373 +g 5373 +522 +52.2 +5.22 +g 5220 +516.7 +51.67 +5.167 +g 5167 +500.7 +50.07 +5.007 +g 5007 +396.3 +39.63 +3.963 +g 3963 +389.5 +38.95 +3.895 +g 3895 +379.6 +37.96 +3.796 +g 3796 +348.1 +34.81 +3.481 +g 3481 +320 +32 +3.2 +g 3200 +284.5 +28.45 +2.845 +g 2845 +277.4 +27.74 +2.774 +g 2774 +264.1 +26.41 +2.641 +g 2641 +256.6 +25.66 +2.566 +g 2566 +251.1 +25.11 +2.511 +g 2511 +247.9 +24.79 +2.479 +g 2479 +212.7 +21.27 +2.127 +g 2127 +198.9 +19.89 +1.989 +g 1989 +198.9 +19.89 +1.989 +g 1989 +193.3 +19.33 +1.933 +g 1933 +180.1 +18.01 +1.801 +g 1801 +159 +15.9 +1.59 +g 1590 +138.5 +13.85 +1.385 +g 1385 +137 +13.7 +1.37 +g 1370 +131.6 +13.16 +1.316 +g 1316 +120.5 +12.05 +1.205 +g 1205 +119.4 +11.94 +1.194 +g 1194 +115.3 +11.53 +1.153 +g 1153 +115 +11.5 +1.15 +g 1150 +103.1 +10.31 +1.031 +g 1031 +101.8 +10.18 +1.018 +g 1018 +95 +9.5 +g 950 +93.1 +9.31 +g 931 +89.8 +8.98 +g 898 +86.5 +8.65 +g 865 +82.2 +8.22 +g 822 +80.3 +8.03 +g 803 +70 +7 +g 700 +62.4 +6.24 +g 624 +55.9 +5.59 +g 559 +54.1 +5.41 +g 541 +52.3 +5.23 +g 523 +49.5 +4.95 +g 495 +45.6 +4.56 +g 456 +41.4 +4.14 +g 414 +38.6 +3.86 +g 386 +37.5 +3.75 +g 375 +34.8 +3.48 +g 348 +34.4 +3.44 +g 344 +32.7 +3.27 +g 327 +28.8 +2.88 +g 288 +27.2 +2.72 +g 272 +26.3 +2.63 +g 263 +25.3 +2.53 +g 253 +25.1 +2.51 +g 251 +24.8 +2.48 +g 248 +22.4 +2.24 +g 224 +22.2 +2.22 +g 222 +21.3 +2.13 +g 213 +20.1 +2.01 +g 201 +18.4 +1.84 +g 184 +17.6 +1.76 +g 176 +16.6 +1.66 +g 166 +16.3 +1.63 +g 163 +14.4 +1.44 +g 144 +14.3 +1.43 +g 143 +12.3 +1.23 +g 123 +11.6 +1.16 +g 116 +9.5 +g 95 +8 +g 80 +7.9 +g 79 +7.9 +g 79 +6.4 +g 64 +6.2 +g 62 +5.6 +g 56 +5.4 +g 54 +4.7 +g 47 +4.5 +g 45 +4.5 +g 45 +4.4 +g 44 +4.3 +g 43 +4.3 +g 43 +3.7 +g 37 +3.2 +g 32 +3.1 +g 31 +2.9 +g 29 +2.5 +g 25 +2.2 +g 22 +1.5 +g 15 +g 10 +g 10 +g 6 +g 6 +g 5 +g 4 +g 4 +g 4 +g 3 +g 3 +g 3 +g 3 +g 2 +g 2 +g 2 +g 1 +g 1 +g 1 +g 1 +g 1 +g 1 +g 1 +g 1 +g 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +g 2roottcsh:*:0:0:Super-User +g 3sysadm:*:0:0:System +g 4diag:*:0:996:Hardware +g 5daemon:*:1:1:daemons:/:/bin/sh +g 6bin:*:2:2:System +g 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +g 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +g 9sys:*:4:0:System +g 10adm:*:5:3:Accounting +1.1 +g 11lp:*:9:9:Print +1.2 +g 12auditor:*:11:0:Audit +1.3 +g 13dbadmin:*:12:0:Security +1.4 +g 14bootes:dcon:50:1:Tom +1.5 +g 15cdjuke:dcon:51:1:Tom +1.6 +g 16rfindd:*:66:1:Rfind +1.7 +g 17EZsetup:*:992:998:System +1.8 +g 18demos:*:993:997:Demonstration +1.9 +g 19tutor:*:994:997:Tutorial +2 +g 20tour:*:995:997:IRIS +2.1 +g 21guest:nfP4/Wpvio/Rw:998:998:Guest +22.4 +2.24 +g 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +2.3 +g 23nobody:*:60001:60001:SVR4 +2.4 +g 24noaccess:*:60002:60002:uid +2.5 +g 25nobody:*:-2:-2:original +2.6 +g 26rje:*:8:8:RJE +2.7 +g 27changes:*:11:11:system +2.8 +g 28dist:sorry:9999:4:file +2.9 +g 29man:*:99:995:On-line +3 +g 30phoneca:*:991:991:phone +g 1r +g 2r +g 3s +g 4d +g 5d +g 6b +g 7n +g 8u +g 9s +g 10 +1.1 +g 11 +1.2 +g 12 +1.3 +g 13 +1.4 +g 14 +1.5 +g 15 +1.6 +g 16 +1.7 +g 17 +1.8 +g 18 +1.9 +g 19 +2 +g 20 +2.1 +g 21 +2.2 +g 22 +2.3 +g 23 +2.4 +g 24 +2.5 +g 25 +2.6 +g 26 +2.7 +g 27 +2.8 +g 28 +2.9 +g 29 +3 +g 30 diff --git a/src/tool/awk/testdata/output/t.fun4 b/src/tool/awk/testdata/output/t.fun4 new file mode 100644 index 0000000..a0620aa --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun4 @@ -0,0 +1,844 @@ +/dev/rrp3: + /dev/rrp3: + +17379 mel + 17379 + mel +16693 bwk me + 16693 + bwk + me +16116 ken him someone else + 16116 + ken + him + someone + else +15713 srb + 15713 + srb +11895 lem + 11895 + lem +10409 scj + 10409 + scj +10252 rhm + 10252 + rhm + 9853 shen + 9853 + shen + 9748 a68 + 9748 + a68 + 9492 sif + 9492 + sif + 9190 pjw + 9190 + pjw + 8912 nls + 8912 + nls + 8895 dmr + 8895 + dmr + 8491 cda + 8491 + cda + 8372 bs + 8372 + bs + 8252 llc + 8252 + llc + 7450 mb + 7450 + mb + 7360 ava + 7360 + ava + 7273 jrv + 7273 + jrv + 7080 bin + 7080 + bin + 7063 greg + 7063 + greg + 6567 dict + 6567 + dict + 6462 lck + 6462 + lck + 6291 rje + 6291 + rje + 6211 lwf + 6211 + lwf + 5671 dave + 5671 + dave + 5373 jhc + 5373 + jhc + 5220 agf + 5220 + agf + 5167 doug + 5167 + doug + 5007 valerie + 5007 + valerie + 3963 jca + 3963 + jca + 3895 bbs + 3895 + bbs + 3796 moh + 3796 + moh + 3481 xchar + 3481 + xchar + 3200 tbl + 3200 + tbl + 2845 s + 2845 + s + 2774 tgs + 2774 + tgs + 2641 met + 2641 + met + 2566 jck + 2566 + jck + 2511 port + 2511 + port + 2479 sue + 2479 + sue + 2127 root + 2127 + root + 1989 bsb + 1989 + bsb + 1989 jeg + 1989 + jeg + 1933 eag + 1933 + eag + 1801 pdj + 1801 + pdj + 1590 tpc + 1590 + tpc + 1385 cvw + 1385 + cvw + 1370 rwm + 1370 + rwm + 1316 avg + 1316 + avg + 1205 eg + 1205 + eg + 1194 jam + 1194 + jam + 1153 dl + 1153 + dl + 1150 lgm + 1150 + lgm + 1031 cmb + 1031 + cmb + 1018 jwr + 1018 + jwr + 950 gdb + 950 + gdb + 931 marc + 931 + marc + 898 usg + 898 + usg + 865 ggr + 865 + ggr + 822 daemon + 822 + daemon + 803 mihalis + 803 + mihalis + 700 honey + 700 + honey + 624 tad + 624 + tad + 559 acs + 559 + acs + 541 uucp + 541 + uucp + 523 raf + 523 + raf + 495 adh + 495 + adh + 456 kec + 456 + kec + 414 craig + 414 + craig + 386 donmac + 386 + donmac + 375 jj + 375 + jj + 348 ravi + 348 + ravi + 344 drw + 344 + drw + 327 stars + 327 + stars + 288 mrg + 288 + mrg + 272 jcb + 272 + jcb + 263 ralph + 263 + ralph + 253 tom + 253 + tom + 251 sjb + 251 + sjb + 248 haight + 248 + haight + 224 sharon + 224 + sharon + 222 chuck + 222 + chuck + 213 dsj + 213 + dsj + 201 bill + 201 + bill + 184 god + 184 + god + 176 sys + 176 + sys + 166 meh + 166 + meh + 163 jon + 163 + jon + 144 dan + 144 + dan + 143 fox + 143 + fox + 123 dale + 123 + dale + 116 kab + 116 + kab + 95 buz + 95 + buz + 80 asc + 80 + asc + 79 jas + 79 + jas + 79 trt + 79 + trt + 64 wsb + 64 + wsb + 62 dwh + 62 + dwh + 56 ktf + 56 + ktf + 54 lr + 54 + lr + 47 dlc + 47 + dlc + 45 dls + 45 + dls + 45 jwf + 45 + jwf + 44 mash + 44 + mash + 43 ars + 43 + ars + 43 vgl + 43 + vgl + 37 jfo + 37 + jfo + 32 rab + 32 + rab + 31 pd + 31 + pd + 29 jns + 29 + jns + 25 spm + 25 + spm + 22 rob + 22 + rob + 15 egb + 15 + egb + 10 hm + 10 + hm + 10 mhb + 10 + mhb + 6 aed + 6 + aed + 6 cpb + 6 + cpb + 5 evp + 5 + evp + 4 ber + 4 + ber + 4 men + 4 + men + 4 mitch + 4 + mitch + 3 ast + 3 + ast + 3 jfr + 3 + jfr + 3 lax + 3 + lax + 3 nel + 3 + nel + 2 blue + 2 + blue + 2 jfk + 2 + jfk + 2 njas + 2 + njas + 1 122sec + 1 + 122sec + 1 ddwar + 1 + ddwar + 1 gopi + 1 + gopi + 1 jk + 1 + jk + 1 learn + 1 + learn + 1 low + 1 + low + 1 nac + 1 + nac + 1 sidor + 1 + sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + 2roottcsh:*:0:0:Super-User + running + tcsh + [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + 3sysadm:*:0:0:System + V + Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + 4diag:*:0:996:Hardware + Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh + 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null + 6bin:*:2:2:System + Tools + Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + 9sys:*:4:0:System + Activity + Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 10adm:*:5:3:Accounting + Files + Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 11lp:*:9:9:Print + Spooler + Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 12auditor:*:11:0:Audit + Activity + Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 13dbadmin:*:12:0:Security + Database + Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 14bootes:dcon:50:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 15cdjuke:dcon:51:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 16rfindd:*:66:1:Rfind + Daemon + and + Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 17EZsetup:*:992:998:System + Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 18demos:*:993:997:Demonstration + User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 19tutor:*:994:997:Tutorial + User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 20tour:*:995:997:IRIS + Space + Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 21guest:nfP4/Wpvio/Rw:998:998:Guest + Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 23nobody:*:60001:60001:SVR4 + nobody + uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 24noaccess:*:60002:60002:uid + no + access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 25nobody:*:-2:-2:original + nobody + uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: + 26rje:*:8:8:RJE + Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: + 27changes:*:11:11:system + change + log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 28dist:sorry:9999:4:file + distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: + 29man:*:99:995:On-line + Manual + Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 30phoneca:*:991:991:phone + call + log + [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + 1r + oot + EMpNB8Zp56 + 0 + 0 + Super-User,,,,,,, + / + /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + 2r + oottcsh + * + 0 + 0 + Super-User + running + tcsh + [cbm] + / + /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + 3s + ysadm + * + 0 + 0 + System + V + Administration + /usr/admin + /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + 4d + iag + * + 0 + 996 + Hardware + Diagnostics + /usr/diags + /bin/csh +5d aemon * 1 1 daemons / /bin/sh + 5d + aemon + * + 1 + 1 + daemons + / + /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null + 6b + in + * + 2 + 2 + System + Tools + Owner + /bin + /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + 7n + uucp + BJnuQbAo + 6 + 10 + UUCP.Admin + /usr/spool/uucppublic + /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + 8u + ucp + * + 3 + 5 + UUCP.Admin + /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + 9s + ys + * + 4 + 0 + System + Activity + Owner + /usr/adm + /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 10 + adm + * + 5 + 3 + Accounting + Files + Owner + /usr/adm + /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 11 + lp + * + 9 + 9 + Print + Spooler + Owner + /var/spool/lp + /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 12 + auditor + * + 11 + 0 + Audit + Activity + Owner + /auditor + /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 13 + dbadmin + * + 12 + 0 + Security + Database + Owner + /dbadmin + /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 14 + bootes + dcon + 50 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 15 + cdjuke + dcon + 51 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 16 + rfindd + * + 66 + 1 + Rfind + Daemon + and + Fsdump + /var/rfindd + /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 17 + EZsetup + * + 992 + 998 + System + Setup + /var/sysadmdesktop/EZsetup + /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 18 + demos + * + 993 + 997 + Demonstration + User + /usr/demos + /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 19 + tutor + * + 994 + 997 + Tutorial + User + /usr/tutor + /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 20 + tour + * + 995 + 997 + IRIS + Space + Tour + /usr/people/tour + /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 21 + guest + nfP4/Wpvio/Rw + 998 + 998 + Guest + Account + /usr/people/guest + /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 22 + 4Dgifts + 0nWRTZsOMt. + 999 + 998 + 4Dgifts + Account + /usr/people/4Dgifts + /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 23 + nobody + * + 60001 + 60001 + SVR4 + nobody + uid + /dev/null + /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 24 + noaccess + * + 60002 + 60002 + uid + no + access + /dev/null + /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 25 + nobody + * + -2 + -2 + original + nobody + uid + /dev/null + /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje + 26 + rje + * + 8 + 8 + RJE + Owner + /usr/spool/rje +27 changes * 11 11 system change log / + 27 + changes + * + 11 + 11 + system + change + log + / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 28 + dist + sorry + 9999 + 4 + file + distributions + /v/adm/dist + /v/bin/sh +29 man * 99 995 On-line Manual Owner / + 29 + man + * + 99 + 995 + On-line + Manual + Owner + / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 30 + phoneca + * + 991 + 991 + phone + call + log + [tom] + /v/adm/log + /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.fun5 b/src/tool/awk/testdata/output/t.fun5 new file mode 100644 index 0000000..a0620aa --- /dev/null +++ b/src/tool/awk/testdata/output/t.fun5 @@ -0,0 +1,844 @@ +/dev/rrp3: + /dev/rrp3: + +17379 mel + 17379 + mel +16693 bwk me + 16693 + bwk + me +16116 ken him someone else + 16116 + ken + him + someone + else +15713 srb + 15713 + srb +11895 lem + 11895 + lem +10409 scj + 10409 + scj +10252 rhm + 10252 + rhm + 9853 shen + 9853 + shen + 9748 a68 + 9748 + a68 + 9492 sif + 9492 + sif + 9190 pjw + 9190 + pjw + 8912 nls + 8912 + nls + 8895 dmr + 8895 + dmr + 8491 cda + 8491 + cda + 8372 bs + 8372 + bs + 8252 llc + 8252 + llc + 7450 mb + 7450 + mb + 7360 ava + 7360 + ava + 7273 jrv + 7273 + jrv + 7080 bin + 7080 + bin + 7063 greg + 7063 + greg + 6567 dict + 6567 + dict + 6462 lck + 6462 + lck + 6291 rje + 6291 + rje + 6211 lwf + 6211 + lwf + 5671 dave + 5671 + dave + 5373 jhc + 5373 + jhc + 5220 agf + 5220 + agf + 5167 doug + 5167 + doug + 5007 valerie + 5007 + valerie + 3963 jca + 3963 + jca + 3895 bbs + 3895 + bbs + 3796 moh + 3796 + moh + 3481 xchar + 3481 + xchar + 3200 tbl + 3200 + tbl + 2845 s + 2845 + s + 2774 tgs + 2774 + tgs + 2641 met + 2641 + met + 2566 jck + 2566 + jck + 2511 port + 2511 + port + 2479 sue + 2479 + sue + 2127 root + 2127 + root + 1989 bsb + 1989 + bsb + 1989 jeg + 1989 + jeg + 1933 eag + 1933 + eag + 1801 pdj + 1801 + pdj + 1590 tpc + 1590 + tpc + 1385 cvw + 1385 + cvw + 1370 rwm + 1370 + rwm + 1316 avg + 1316 + avg + 1205 eg + 1205 + eg + 1194 jam + 1194 + jam + 1153 dl + 1153 + dl + 1150 lgm + 1150 + lgm + 1031 cmb + 1031 + cmb + 1018 jwr + 1018 + jwr + 950 gdb + 950 + gdb + 931 marc + 931 + marc + 898 usg + 898 + usg + 865 ggr + 865 + ggr + 822 daemon + 822 + daemon + 803 mihalis + 803 + mihalis + 700 honey + 700 + honey + 624 tad + 624 + tad + 559 acs + 559 + acs + 541 uucp + 541 + uucp + 523 raf + 523 + raf + 495 adh + 495 + adh + 456 kec + 456 + kec + 414 craig + 414 + craig + 386 donmac + 386 + donmac + 375 jj + 375 + jj + 348 ravi + 348 + ravi + 344 drw + 344 + drw + 327 stars + 327 + stars + 288 mrg + 288 + mrg + 272 jcb + 272 + jcb + 263 ralph + 263 + ralph + 253 tom + 253 + tom + 251 sjb + 251 + sjb + 248 haight + 248 + haight + 224 sharon + 224 + sharon + 222 chuck + 222 + chuck + 213 dsj + 213 + dsj + 201 bill + 201 + bill + 184 god + 184 + god + 176 sys + 176 + sys + 166 meh + 166 + meh + 163 jon + 163 + jon + 144 dan + 144 + dan + 143 fox + 143 + fox + 123 dale + 123 + dale + 116 kab + 116 + kab + 95 buz + 95 + buz + 80 asc + 80 + asc + 79 jas + 79 + jas + 79 trt + 79 + trt + 64 wsb + 64 + wsb + 62 dwh + 62 + dwh + 56 ktf + 56 + ktf + 54 lr + 54 + lr + 47 dlc + 47 + dlc + 45 dls + 45 + dls + 45 jwf + 45 + jwf + 44 mash + 44 + mash + 43 ars + 43 + ars + 43 vgl + 43 + vgl + 37 jfo + 37 + jfo + 32 rab + 32 + rab + 31 pd + 31 + pd + 29 jns + 29 + jns + 25 spm + 25 + spm + 22 rob + 22 + rob + 15 egb + 15 + egb + 10 hm + 10 + hm + 10 mhb + 10 + mhb + 6 aed + 6 + aed + 6 cpb + 6 + cpb + 5 evp + 5 + evp + 4 ber + 4 + ber + 4 men + 4 + men + 4 mitch + 4 + mitch + 3 ast + 3 + ast + 3 jfr + 3 + jfr + 3 lax + 3 + lax + 3 nel + 3 + nel + 2 blue + 2 + blue + 2 jfk + 2 + jfk + 2 njas + 2 + njas + 1 122sec + 1 + 122sec + 1 ddwar + 1 + ddwar + 1 gopi + 1 + gopi + 1 jk + 1 + jk + 1 learn + 1 + learn + 1 low + 1 + low + 1 nac + 1 + nac + 1 sidor + 1 + sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + 2roottcsh:*:0:0:Super-User + running + tcsh + [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + 3sysadm:*:0:0:System + V + Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + 4diag:*:0:996:Hardware + Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh + 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null + 6bin:*:2:2:System + Tools + Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + 9sys:*:4:0:System + Activity + Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 10adm:*:5:3:Accounting + Files + Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 11lp:*:9:9:Print + Spooler + Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 12auditor:*:11:0:Audit + Activity + Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 13dbadmin:*:12:0:Security + Database + Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 14bootes:dcon:50:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 15cdjuke:dcon:51:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 16rfindd:*:66:1:Rfind + Daemon + and + Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 17EZsetup:*:992:998:System + Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 18demos:*:993:997:Demonstration + User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 19tutor:*:994:997:Tutorial + User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 20tour:*:995:997:IRIS + Space + Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 21guest:nfP4/Wpvio/Rw:998:998:Guest + Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 23nobody:*:60001:60001:SVR4 + nobody + uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 24noaccess:*:60002:60002:uid + no + access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 25nobody:*:-2:-2:original + nobody + uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: + 26rje:*:8:8:RJE + Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: + 27changes:*:11:11:system + change + log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 28dist:sorry:9999:4:file + distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: + 29man:*:99:995:On-line + Manual + Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 30phoneca:*:991:991:phone + call + log + [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + 1r + oot + EMpNB8Zp56 + 0 + 0 + Super-User,,,,,,, + / + /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + 2r + oottcsh + * + 0 + 0 + Super-User + running + tcsh + [cbm] + / + /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + 3s + ysadm + * + 0 + 0 + System + V + Administration + /usr/admin + /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + 4d + iag + * + 0 + 996 + Hardware + Diagnostics + /usr/diags + /bin/csh +5d aemon * 1 1 daemons / /bin/sh + 5d + aemon + * + 1 + 1 + daemons + / + /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null + 6b + in + * + 2 + 2 + System + Tools + Owner + /bin + /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + 7n + uucp + BJnuQbAo + 6 + 10 + UUCP.Admin + /usr/spool/uucppublic + /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + 8u + ucp + * + 3 + 5 + UUCP.Admin + /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + 9s + ys + * + 4 + 0 + System + Activity + Owner + /usr/adm + /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 10 + adm + * + 5 + 3 + Accounting + Files + Owner + /usr/adm + /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 11 + lp + * + 9 + 9 + Print + Spooler + Owner + /var/spool/lp + /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 12 + auditor + * + 11 + 0 + Audit + Activity + Owner + /auditor + /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 13 + dbadmin + * + 12 + 0 + Security + Database + Owner + /dbadmin + /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 14 + bootes + dcon + 50 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 15 + cdjuke + dcon + 51 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 16 + rfindd + * + 66 + 1 + Rfind + Daemon + and + Fsdump + /var/rfindd + /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 17 + EZsetup + * + 992 + 998 + System + Setup + /var/sysadmdesktop/EZsetup + /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 18 + demos + * + 993 + 997 + Demonstration + User + /usr/demos + /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 19 + tutor + * + 994 + 997 + Tutorial + User + /usr/tutor + /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 20 + tour + * + 995 + 997 + IRIS + Space + Tour + /usr/people/tour + /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 21 + guest + nfP4/Wpvio/Rw + 998 + 998 + Guest + Account + /usr/people/guest + /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 22 + 4Dgifts + 0nWRTZsOMt. + 999 + 998 + 4Dgifts + Account + /usr/people/4Dgifts + /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 23 + nobody + * + 60001 + 60001 + SVR4 + nobody + uid + /dev/null + /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 24 + noaccess + * + 60002 + 60002 + uid + no + access + /dev/null + /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 25 + nobody + * + -2 + -2 + original + nobody + uid + /dev/null + /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje + 26 + rje + * + 8 + 8 + RJE + Owner + /usr/spool/rje +27 changes * 11 11 system change log / + 27 + changes + * + 11 + 11 + system + change + log + / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 28 + dist + sorry + 9999 + 4 + file + distributions + /v/adm/dist + /v/bin/sh +29 man * 99 995 On-line Manual Owner / + 29 + man + * + 99 + 995 + On-line + Manual + Owner + / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 30 + phoneca + * + 991 + 991 + phone + call + log + [tom] + /v/adm/log + /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.getval b/src/tool/awk/testdata/output/t.getval new file mode 100644 index 0000000..7619727 --- /dev/null +++ b/src/tool/awk/testdata/output/t.getval @@ -0,0 +1,199 @@ +10 +0 +8 +8 +8 +8 +8 +8 +8 +8 +7 +7 +7 +7 +7 +7 +6 +7 +6 +7 +7 +7 +8 +8 +7 +7 +7 +8 +7 +7 +8 +11 +7 +7 +7 +9 +7 +5 +7 +7 +7 +8 +7 +8 +7 +7 +7 +7 +7 +7 +7 +7 +6 +7 +6 +7 +7 +7 +6 +7 +6 +6 +9 +10 +8 +6 +6 +7 +6 +6 +6 +8 +9 +5 +7 +6 +8 +6 +6 +8 +6 +6 +9 +9 +8 +6 +7 +6 +6 +6 +6 +6 +6 +7 +6 +5 +5 +5 +5 +5 +5 +5 +4 +5 +5 +5 +6 +5 +5 +5 +5 +4 +5 +5 +5 +5 +4 +5 +4 +4 +4 +4 +4 +6 +4 +4 +4 +4 +5 +4 +5 +7 +6 +5 +3 +6 +4 +4 +6 +48 +33 +21 +53 +31 +22 +74 +37 +25 +27 +23 +30 +33 +29 +29 +27 +67 +55 +50 +26 +69 +73 +33 +30 +31 +36 +30 +59 +28 +29 +5 +9 +7 +5 +7 +4 +6 +5 +4 +5 +4 +9 +9 +8 +8 +8 +9 +7 +7 +6 +7 +9 +8 +10 +8 +5 +9 +6 +5 +9 diff --git a/src/tool/awk/testdata/output/t.gsub b/src/tool/awk/testdata/output/t.gsub new file mode 100644 index 0000000..f86f29c --- /dev/null +++ b/src/tool/awk/testdata/output/t.gsub @@ -0,0 +1,199 @@ +/dfoov/rrp3: + +17379 mfool +16693 bwk mfoo +16116 kfoon hfoom sfoomfoofoonfoo foolsfoo +15713 srb +11895 lfoom +10409 scj +10252 rhm + 9853 shfoon + 9748 foo68 + 9492 sfoof + 9190 pjw + 8912 nls + 8895 dmr + 8491 cdfoo + 8372 bs + 8252 llc + 7450 mb + 7360 foovfoo + 7273 jrv + 7080 bfoon + 7063 grfoog + 6567 dfooct + 6462 lck + 6291 rjfoo + 6211 lwf + 5671 dfoovfoo + 5373 jhc + 5220 foogf + 5167 dfoofoog + 5007 vfoolfoorfoofoo + 3963 jcfoo + 3895 bbs + 3796 mfooh + 3481 xchfoor + 3200 tbl + 2845 s + 2774 tgs + 2641 mfoot + 2566 jck + 2511 pfoort + 2479 sfoofoo + 2127 rfoofoot + 1989 bsb + 1989 jfoog + 1933 foofoog + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 foovg + 1205 foog + 1194 jfoom + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 mfoorc + 898 foosg + 865 ggr + 822 dfoofoomfoon + 803 mfoohfoolfoos + 700 hfoonfooy + 624 tfood + 559 foocs + 541 foofoocp + 523 rfoof + 495 foodh + 456 kfooc + 414 crfoofoog + 386 dfoonmfooc + 375 jj + 348 rfoovfoo + 344 drw + 327 stfoors + 288 mrg + 272 jcb + 263 rfoolph + 253 tfoom + 251 sjb + 248 hfoofooght + 224 shfoorfoon + 222 chfoock + 213 dsj + 201 bfooll + 184 gfood + 176 sys + 166 mfooh + 163 jfoon + 144 dfoon + 143 ffoox + 123 dfoolfoo + 116 kfoob + 95 bfooz + 80 foosc + 79 jfoos + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mfoosh + 43 foors + 43 vgl + 37 jffoo + 32 rfoob + 31 pd + 29 jns + 25 spm + 22 rfoob + 15 foogb + 10 hm + 10 mhb + 6 foofood + 6 cpb + 5 foovp + 4 bfoor + 4 mfoon + 4 mfootch + 3 foost + 3 jfr + 3 lfoox + 3 nfool + 2 blfoofoo + 2 jfk + 2 njfoos + 1 122sfooc + 1 ddwfoor + 1 gfoopfoo + 1 jk + 1 lfoofoorn + 1 lfoow + 1 nfooc + 1 sfoodfoor +1rfoofoot:EMpNB8Zp56:0:0:Sfoopfoor-Usfoor,,,,,,,:/:/bfoon/sh +2rfoofoottcsh:*:0:0:Sfoopfoor-Usfoor rfoonnfoong tcsh [cbm]:/:/bfoon/tcsh +3sysfoodm:*:0:0:Systfoom V Admfoonfoostrfootfoofoon:/foosr/foodmfoon:/bfoon/sh +4dfoofoog:*:0:996:Hfoordwfoorfoo Dfoofoognfoostfoocs:/foosr/dfoofoogs:/bfoon/csh +5dfoofoomfoon:*:1:1:dfoofoomfoons:/:/bfoon/sh +6bfoon:*:2:2:Systfoom Tfoofools Ownfoor:/bfoon:/dfoov/nfooll +7nfoofoocp:BJnfooQbAfoo:6:10:UUCP.Admfoon:/foosr/spfoofool/foofoocppfooblfooc:/foosr/lfoob/foofoocp/foofoocfoocfoo +8foofoocp:*:3:5:UUCP.Admfoon:/foosr/lfoob/foofoocp: +9sys:*:4:0:Systfoom Actfoovfooty Ownfoor:/foosr/foodm:/bfoon/sh +10foodm:*:5:3:Accfoofoontfoong Ffoolfoos Ownfoor:/foosr/foodm:/bfoon/sh +11lp:*:9:9:Prfoont Spfoofoolfoor Ownfoor:/vfoor/spfoofool/lp:/bfoon/sh +12foofoodfootfoor:*:11:0:Afoodfoot Actfoovfooty Ownfoor:/foofoodfootfoor:/bfoon/sh +13dbfoodmfoon:*:12:0:Sfoocfoorfooty Dfootfoobfoosfoo Ownfoor:/dbfoodmfoon:/bfoon/sh +14bfoofootfoos:dcfoon:50:1:Tfoom Kfoollfoofoon (DO NOT REMOVE):/tmp: +15cdjfookfoo:dcfoon:51:1:Tfoom Kfoollfoofoon (DO NOT REMOVE):/tmp: +16rffoondd:*:66:1:Rffoond Dfoofoomfoon foond Fsdfoomp:/vfoor/rffoondd:/bfoon/sh +17EZsfootfoop:*:992:998:Systfoom Sfootfoop:/vfoor/sysfoodmdfoosktfoop/EZsfootfoop:/bfoon/csh +18dfoomfoos:*:993:997:Dfoomfoonstrfootfoofoon Usfoor:/foosr/dfoomfoos:/bfoon/csh +19tfootfoor:*:994:997:Tfootfoorfoofool Usfoor:/foosr/tfootfoor:/bfoon/csh +20tfoofoor:*:995:997:IRIS Spfoocfoo Tfoofoor:/foosr/pfoofooplfoo/tfoofoor:/bfoon/csh +21gfoofoost:nfP4/Wpvfoofoo/Rw:998:998:Gfoofoost Accfoofoont:/foosr/pfoofooplfoo/gfoofoost:/bfoon/csh +224Dgfoofts:0nWRTZsOMt.:999:998:4Dgfoofts Accfoofoont:/foosr/pfoofooplfoo/4Dgfoofts:/bfoon/csh +23nfoobfoody:*:60001:60001:SVR4 nfoobfoody foofood:/dfoov/nfooll:/dfoov/nfooll +24nfoofooccfooss:*:60002:60002:foofood nfoo fooccfooss:/dfoov/nfooll:/dfoov/nfooll +25nfoobfoody:*:-2:-2:foorfoogfoonfool nfoobfoody foofood:/dfoov/nfooll:/dfoov/nfooll +26rjfoo:*:8:8:RJE Ownfoor:/foosr/spfoofool/rjfoo: +27chfoongfoos:*:11:11:systfoom chfoongfoo lfoog:/: +28dfoost:sfoorry:9999:4:ffoolfoo dfoostrfoobfootfoofoons:/v/foodm/dfoost:/v/bfoon/sh +29mfoon:*:99:995:On-lfoonfoo Mfoonfoofool Ownfoor:/: +30phfoonfoocfoo:*:991:991:phfoonfoo cfooll lfoog [tfoom]:/v/foodm/lfoog:/v/bfoon/sh +1r foofoot EMpNB8Zp56 0 0 Sfoopfoor-Usfoor,,,,,,, / /bfoon/sh +2r foofoottcsh * 0 0 Sfoopfoor-Usfoor rfoonnfoong tcsh [cbm] / /bfoon/tcsh +3s ysfoodm * 0 0 Systfoom V Admfoonfoostrfootfoofoon /foosr/foodmfoon /bfoon/sh +4d foofoog * 0 996 Hfoordwfoorfoo Dfoofoognfoostfoocs /foosr/dfoofoogs /bfoon/csh +5d foofoomfoon * 1 1 dfoofoomfoons / /bfoon/sh +6b foon * 2 2 Systfoom Tfoofools Ownfoor /bfoon /dfoov/nfooll +7n foofoocp BJnfooQbAfoo 6 10 UUCP.Admfoon /foosr/spfoofool/foofoocppfooblfooc /foosr/lfoob/foofoocp/foofoocfoocfoo +8foo foocp * 3 5 UUCP.Admfoon /foosr/lfoob/foofoocp +9s ys * 4 0 Systfoom Actfoovfooty Ownfoor /foosr/foodm /bfoon/sh +10 foodm * 5 3 Accfoofoontfoong Ffoolfoos Ownfoor /foosr/foodm /bfoon/sh +11 lp * 9 9 Prfoont Spfoofoolfoor Ownfoor /vfoor/spfoofool/lp /bfoon/sh +12 foofoodfootfoor * 11 0 Afoodfoot Actfoovfooty Ownfoor /foofoodfootfoor /bfoon/sh +13 dbfoodmfoon * 12 0 Sfoocfoorfooty Dfootfoobfoosfoo Ownfoor /dbfoodmfoon /bfoon/sh +14 bfoofootfoos dcfoon 50 1 Tfoom Kfoollfoofoon (DO NOT REMOVE) /tmp +15 cdjfookfoo dcfoon 51 1 Tfoom Kfoollfoofoon (DO NOT REMOVE) /tmp +16 rffoondd * 66 1 Rffoond Dfoofoomfoon foond Fsdfoomp /vfoor/rffoondd /bfoon/sh +17 EZsfootfoop * 992 998 Systfoom Sfootfoop /vfoor/sysfoodmdfoosktfoop/EZsfootfoop /bfoon/csh +18 dfoomfoos * 993 997 Dfoomfoonstrfootfoofoon Usfoor /foosr/dfoomfoos /bfoon/csh +19 tfootfoor * 994 997 Tfootfoorfoofool Usfoor /foosr/tfootfoor /bfoon/csh +20 tfoofoor * 995 997 IRIS Spfoocfoo Tfoofoor /foosr/pfoofooplfoo/tfoofoor /bfoon/csh +21 gfoofoost nfP4/Wpvfoofoo/Rw 998 998 Gfoofoost Accfoofoont /foosr/pfoofooplfoo/gfoofoost /bfoon/csh +22 4Dgfoofts 0nWRTZsOMt. 999 998 4Dgfoofts Accfoofoont /foosr/pfoofooplfoo/4Dgfoofts /bfoon/csh +23 nfoobfoody * 60001 60001 SVR4 nfoobfoody foofood /dfoov/nfooll /dfoov/nfooll +24 nfoofooccfooss * 60002 60002 foofood nfoo fooccfooss /dfoov/nfooll /dfoov/nfooll +25 nfoobfoody * -2 -2 foorfoogfoonfool nfoobfoody foofood /dfoov/nfooll /dfoov/nfooll +26 rjfoo * 8 8 RJE Ownfoor /foosr/spfoofool/rjfoo +27 chfoongfoos * 11 11 systfoom chfoongfoo lfoog / +28 dfoost sfoorry 9999 4 ffoolfoo dfoostrfoobfootfoofoons /v/foodm/dfoost /v/bfoon/sh +29 mfoon * 99 995 On-lfoonfoo Mfoonfoofool Ownfoor / +30 phfoonfoocfoo * 991 991 phfoonfoo cfooll lfoog [tfoom] /v/foodm/lfoog /v/bfoon/sh diff --git a/src/tool/awk/testdata/output/t.gsub1 b/src/tool/awk/testdata/output/t.gsub1 new file mode 100644 index 0000000..ca82b0f --- /dev/null +++ b/src/tool/awk/testdata/output/t.gsub1 @@ -0,0 +1,199 @@ +/dev/rrp3:x +x +17379 melx +16693 bwk mex +16116 ken him someone elsex +15713 srbx +11895 lemx +10409 scjx +10252 rhmx + 9853 shenx + 9748 a68x + 9492 sifx + 9190 pjwx + 8912 nlsx + 8895 dmrx + 8491 cdax + 8372 bsx + 8252 llcx + 7450 mbx + 7360 avax + 7273 jrvx + 7080 binx + 7063 gregx + 6567 dictx + 6462 lckx + 6291 rjex + 6211 lwfx + 5671 davex + 5373 jhcx + 5220 agfx + 5167 dougx + 5007 valeriex + 3963 jcax + 3895 bbsx + 3796 mohx + 3481 xcharx + 3200 tblx + 2845 sx + 2774 tgsx + 2641 metx + 2566 jckx + 2511 portx + 2479 suex + 2127 rootx + 1989 bsbx + 1989 jegx + 1933 eagx + 1801 pdjx + 1590 tpcx + 1385 cvwx + 1370 rwmx + 1316 avgx + 1205 egx + 1194 jamx + 1153 dlx + 1150 lgmx + 1031 cmbx + 1018 jwrx + 950 gdbx + 931 marcx + 898 usgx + 865 ggrx + 822 daemonx + 803 mihalisx + 700 honeyx + 624 tadx + 559 acsx + 541 uucpx + 523 rafx + 495 adhx + 456 kecx + 414 craigx + 386 donmacx + 375 jjx + 348 ravix + 344 drwx + 327 starsx + 288 mrgx + 272 jcbx + 263 ralphx + 253 tomx + 251 sjbx + 248 haightx + 224 sharonx + 222 chuckx + 213 dsjx + 201 billx + 184 godx + 176 sysx + 166 mehx + 163 jonx + 144 danx + 143 foxx + 123 dalex + 116 kabx + 95 buzx + 80 ascx + 79 jasx + 79 trtx + 64 wsbx + 62 dwhx + 56 ktfx + 54 lrx + 47 dlcx + 45 dlsx + 45 jwfx + 44 mashx + 43 arsx + 43 vglx + 37 jfox + 32 rabx + 31 pdx + 29 jnsx + 25 spmx + 22 robx + 15 egbx + 10 hmx + 10 mhbx + 6 aedx + 6 cpbx + 5 evpx + 4 berx + 4 menx + 4 mitchx + 3 astx + 3 jfrx + 3 laxx + 3 nelx + 2 bluex + 2 jfkx + 2 njasx + 1 122secx + 1 ddwarx + 1 gopix + 1 jkx + 1 learnx + 1 lowx + 1 nacx + 1 sidorx +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/shx +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcshx +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/shx +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/cshx +5daemon:*:1:1:daemons:/:/bin/shx +6bin:*:2:2:System Tools Owner:/bin:/dev/nullx +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucicox +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:x +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/shx +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/shx +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/shx +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/shx +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/shx +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp:x +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp:x +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/shx +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/cshx +18demos:*:993:997:Demonstration User:/usr/demos:/bin/cshx +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/cshx +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/cshx +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/cshx +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/cshx +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/nullx +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/nullx +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/nullx +26rje:*:8:8:RJE Owner:/usr/spool/rje:x +27changes:*:11:11:system change log:/:x +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/shx +29man:*:99:995:On-line Manual Owner:/:x +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/shx +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/shx +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcshx +3s ysadm * 0 0 System V Administration /usr/admin /bin/shx +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/cshx +5d aemon * 1 1 daemons / /bin/shx +6b in * 2 2 System Tools Owner /bin /dev/nullx +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucicox +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp x +9s ys * 4 0 System Activity Owner /usr/adm /bin/shx +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/shx +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/shx +12 auditor * 11 0 Audit Activity Owner /auditor /bin/shx +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/shx +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp x +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp x +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/shx +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/cshx +18 demos * 993 997 Demonstration User /usr/demos /bin/cshx +19 tutor * 994 997 Tutorial User /usr/tutor /bin/cshx +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/cshx +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/cshx +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/cshx +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/nullx +24 noaccess * 60002 60002 uid no access /dev/null /dev/nullx +25 nobody * -2 -2 original nobody uid /dev/null /dev/nullx +26 rje * 8 8 RJE Owner /usr/spool/rje x +27 changes * 11 11 system change log / x +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/shx +29 man * 99 995 On-line Manual Owner / x +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/shx diff --git a/src/tool/awk/testdata/output/t.gsub3 b/src/tool/awk/testdata/output/t.gsub3 new file mode 100644 index 0000000..e407dc5 --- /dev/null +++ b/src/tool/awk/testdata/output/t.gsub3 @@ -0,0 +1,198 @@ +(/)dev(/)rrp3: +(1)7379 mel +(1)6693 bwk me +(1)6(1)(1)6 ken him someone else +(1)57(1)3 srb +(1)(1)895 lem +(1)0409 scj +(1)0252 rhm + (9)853 shen + (9)748 a68 + (9)4(9)2 sif + (9)1(9)0 pjw + (8)912 nls + (8)(8)95 dmr + (8)491 cda + (8)372 bs + (8)252 llc + (7)450 mb + (7)360 ava + (7)2(7)3 jrv + (7)080 bin + (7)063 greg + (6)5(6)7 dict + (6)4(6)2 lck + (6)291 rje + (6)211 lwf + (5)671 dave + (5)373 jhc + (5)220 agf + (5)167 doug + (5)007 valerie + (3)96(3) jca + (3)895 bbs + (3)796 moh + (3)481 xchar + (3)200 tbl + (2)845 s + (2)774 tgs + (2)641 met + (2)566 jck + (2)511 port + (2)479 sue + (2)1(2)7 root + (1)989 bsb + (1)989 jeg + (1)933 eag + (1)80(1) pdj + (1)590 tpc + (1)385 cvw + (1)370 rwm + (1)3(1)6 avg + (1)205 eg + (1)(1)94 jam + (1)(1)53 dl + (1)(1)50 lgm + (1)03(1) cmb + (1)0(1)8 jwr + (9)50 gdb + (9)31 marc + (8)9(8) usg + (8)65 ggr + (8)22 daemon + (8)03 mihalis + (7)00 honey + (6)24 tad + (5)(5)9 acs + (5)41 uucp + (5)23 raf + (4)95 adh + (4)56 kec + (4)1(4) craig + (3)86 donmac + (3)75 jj + (3)48 ravi + (3)44 drw + (3)27 stars + (2)88 mrg + (2)7(2) jcb + (2)63 ralph + (2)53 tom + (2)51 sjb + (2)48 haight + (2)(2)4 sharon + (2)(2)(2) chuck + (2)13 dsj + (2)01 bill + (1)84 god + (1)76 sys + (1)66 meh + (1)63 jon + (1)44 dan + (1)43 fox + (1)23 dale + (1)(1)6 kab + (9)5 buz + (8)0 asc + (7)9 jas + (7)9 trt + (6)4 wsb + (6)2 dwh + (5)6 ktf + (5)4 lr + (4)7 dlc + (4)5 dls + (4)5 jwf + (4)(4) mash + (4)3 ars + (4)3 vgl + (3)7 jfo + (3)2 rab + (3)1 pd + (2)9 jns + (2)5 spm + (2)(2) rob + (1)5 egb + (1)0 hm + (1)0 mhb + (6) aed + (6) cpb + (5) evp + (4) ber + (4) men + (4) mitch + (3) ast + (3) jfr + (3) lax + (3) nel + (2) blue + (2) jfk + (2) njas + (1) (1)22sec + (1) ddwar + (1) gopi + (1) jk + (1) learn + (1) low + (1) nac + (1) sidor +(1)root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +(2)roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +(3)sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +(4)diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +(5)daemon:*:1:1:daemons:/:/bin/sh +(6)bin:*:2:2:System Tools Owner:/bin:/dev/null +(7)nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +(8)uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +(9)sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +(1)0adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +(1)(1)lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +(1)2auditor:*:(1)(1):0:Audit Activity Owner:/auditor:/bin/sh +(1)3dbadmin:*:(1)2:0:Security Database Owner:/dbadmin:/bin/sh +(1)4bootes:dcon:50:(1):Tom Killian (DO NOT REMOVE):/tmp: +(1)5cdjuke:dcon:5(1):(1):Tom Killian (DO NOT REMOVE):/tmp: +(1)6rfindd:*:66:(1):Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +(1)7EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +(1)8demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +(1)9tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +(2)0tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +(2)1guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +(2)(2)4Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +(2)3nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +(2)4noaccess:*:6000(2):6000(2):uid no access:/dev/null:/dev/null +(2)5nobody:*:-(2):-(2):original nobody uid:/dev/null:/dev/null +(2)6rje:*:8:8:RJE Owner:/usr/spool/rje: +(2)7changes:*:11:11:system change log:/: +(2)8dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +(2)9man:*:99:995:On-line Manual Owner:/: +(3)0phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +(1)r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +(2)r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +(3)s ysadm * 0 0 System V Administration /usr/admin /bin/sh +(4)d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +(5)d aemon * 1 1 daemons / /bin/sh +(6)b in * 2 2 System Tools Owner /bin /dev/null +(7)n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +(8)u ucp * 3 5 UUCP.Admin /usr/lib/uucp +(9)s ys * 4 0 System Activity Owner /usr/adm /bin/sh +(1)0 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +(1)(1) lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +(1)2 auditor * (1)(1) 0 Audit Activity Owner /auditor /bin/sh +(1)3 dbadmin * (1)2 0 Security Database Owner /dbadmin /bin/sh +(1)4 bootes dcon 50 (1) Tom Killian (DO NOT REMOVE) /tmp +(1)5 cdjuke dcon 5(1) (1) Tom Killian (DO NOT REMOVE) /tmp +(1)6 rfindd * 66 (1) Rfind Daemon and Fsdump /var/rfindd /bin/sh +(1)7 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +(1)8 demos * 993 997 Demonstration User /usr/demos /bin/csh +(1)9 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +(2)0 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +(2)1 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +(2)(2) 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +(2)3 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +(2)4 noaccess * 6000(2) 6000(2) uid no access /dev/null /dev/null +(2)5 nobody * -(2) -(2) original nobody uid /dev/null /dev/null +(2)6 rje * 8 8 RJE Owner /usr/spool/rje +(2)7 changes * 11 11 system change log / +(2)8 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +(2)9 man * 99 995 On-line Manual Owner / +(3)0 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.gsub4 b/src/tool/awk/testdata/output/t.gsub4 new file mode 100644 index 0000000..344e0b7 --- /dev/null +++ b/src/tool/awk/testdata/output/t.gsub4 @@ -0,0 +1,276 @@ +(/)(d)(e)(v)(/)(r)(r)(p)(3)(:) +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) +(1)(7)(3)(7)(9) mel +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) mel +(1)(6)(6)(9)(3) bwk me +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) bwk me +(1)(6)(1)(1)(6) ken him someone else +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) ken him someone else +(1)(5)(7)(1)(3) srb +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) srb +(1)(1)(8)(9)(5) lem +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) lem +(1)(0)(4)(0)(9) scj +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) scj +(1)(0)(2)(5)(2) rhm +(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) rhm + (9)(8)(5)(3) shen + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) shen + (9)(7)(4)(8) a6(8) + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) a6(&)(&)(&) + (9)(4)(9)(2) sif + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) sif + (9)(1)(9)(0) pjw + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) pjw + (8)(9)(1)(2) nls + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) nls + (8)(8)(9)(5) dmr + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) dmr + (8)(4)(9)(1) cda + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) cda + (8)(3)(7)(2) bs + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) bs + (8)(2)(5)(2) llc + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) llc + (7)(4)(5)(0) mb + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) mb + (7)(3)(6)(0) ava + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) ava + (7)(2)(7)(3) jrv + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jrv + (7)(0)(8)(0) bin + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) bin + (7)(0)(6)(3) greg + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) greg + (6)(5)(6)(7) dict + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) dict + (6)(4)(6)(2) lck + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) lck + (6)(2)(9)(1) rje + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) rje + (6)(2)(1)(1) lwf + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) lwf + (5)(6)(7)(1) dave + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) dave + (5)(3)(7)(3) jhc + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jhc + (5)(2)(2)(0) agf + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) agf + (5)(1)(6)(7) doug + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) doug + (5)(0)(0)(7) valerie + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) valerie + (3)(9)(6)(3) jca + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jca + (3)(8)(9)(5) bbs + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) bbs + (3)(7)(9)(6) moh + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) moh + (3)(4)(8)(1) xchar + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) xchar + (3)(2)(0)(0) tbl + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) tbl + (2)(8)(4)(5) s + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) s + (2)(7)(7)(4) tgs + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) tgs + (2)(6)(4)(1) met + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) met + (2)(5)(6)(6) jck + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jck + (2)(5)(1)(1) port + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) port + (2)(4)(7)(9) sue + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) sue + (2)(1)(2)(7) root + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) root + (1)(9)(8)(9) bsb + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) bsb + (1)(9)(8)(9) jeg + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jeg + (1)(9)(3)(3) eag + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) eag + (1)(8)(0)(1) pdj + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) pdj + (1)(5)(9)(0) tpc + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) tpc + (1)(3)(8)(5) cvw + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) cvw + (1)(3)(7)(0) rwm + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) rwm + (1)(3)(1)(6) avg + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) avg + (1)(2)(0)(5) eg + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) eg + (1)(1)(9)(4) jam + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jam + (1)(1)(5)(3) dl + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) dl + (1)(1)(5)(0) lgm + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) lgm + (1)(0)(3)(1) cmb + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) cmb + (1)(0)(1)(8) jwr + (&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&)(&) jwr + (9)(5)(0) gdb + (&)(&)(&)(&)(&)(&)(&)(&)(&) gdb + (9)(3)(1) marc + (&)(&)(&)(&)(&)(&)(&)(&)(&) marc + (8)(9)(8) usg + (&)(&)(&)(&)(&)(&)(&)(&)(&) usg + (8)(6)(5) ggr + (&)(&)(&)(&)(&)(&)(&)(&)(&) ggr + (8)(2)(2) daemon + (&)(&)(&)(&)(&)(&)(&)(&)(&) daemon + (8)(0)(3) mihalis + (&)(&)(&)(&)(&)(&)(&)(&)(&) mihalis + (7)(0)(0) honey + (&)(&)(&)(&)(&)(&)(&)(&)(&) honey + (6)(2)(4) tad + (&)(&)(&)(&)(&)(&)(&)(&)(&) tad + (5)(5)(9) acs + (&)(&)(&)(&)(&)(&)(&)(&)(&) acs + (5)(4)(1) uucp + (&)(&)(&)(&)(&)(&)(&)(&)(&) uucp + (5)(2)(3) raf + (&)(&)(&)(&)(&)(&)(&)(&)(&) raf + (4)(9)(5) adh + (&)(&)(&)(&)(&)(&)(&)(&)(&) adh + (4)(5)(6) kec + (&)(&)(&)(&)(&)(&)(&)(&)(&) kec + (4)(1)(4) craig + (&)(&)(&)(&)(&)(&)(&)(&)(&) craig + (3)(8)(6) donmac + (&)(&)(&)(&)(&)(&)(&)(&)(&) donmac + (3)(7)(5) jj + (&)(&)(&)(&)(&)(&)(&)(&)(&) jj + (3)(4)(8) ravi + (&)(&)(&)(&)(&)(&)(&)(&)(&) ravi + (3)(4)(4) drw + (&)(&)(&)(&)(&)(&)(&)(&)(&) drw + (3)(2)(7) stars + (&)(&)(&)(&)(&)(&)(&)(&)(&) stars + (2)(8)(8) mrg + (&)(&)(&)(&)(&)(&)(&)(&)(&) mrg + (2)(7)(2) jcb + (&)(&)(&)(&)(&)(&)(&)(&)(&) jcb + (2)(6)(3) ralph + (&)(&)(&)(&)(&)(&)(&)(&)(&) ralph + (2)(5)(3) tom + (&)(&)(&)(&)(&)(&)(&)(&)(&) tom + (2)(5)(1) sjb + (&)(&)(&)(&)(&)(&)(&)(&)(&) sjb + (2)(4)(8) haight + (&)(&)(&)(&)(&)(&)(&)(&)(&) haight + (2)(2)(4) sharon + (&)(&)(&)(&)(&)(&)(&)(&)(&) sharon + (2)(2)(2) chuck + (&)(&)(&)(&)(&)(&)(&)(&)(&) chuck + (2)(1)(3) dsj + (&)(&)(&)(&)(&)(&)(&)(&)(&) dsj + (2)(0)(1) bill + (&)(&)(&)(&)(&)(&)(&)(&)(&) bill + (1)(8)(4) god + (&)(&)(&)(&)(&)(&)(&)(&)(&) god + (1)(7)(6) sys + (&)(&)(&)(&)(&)(&)(&)(&)(&) sys + (1)(6)(6) meh + (&)(&)(&)(&)(&)(&)(&)(&)(&) meh + (1)(6)(3) jon + (&)(&)(&)(&)(&)(&)(&)(&)(&) jon + (1)(4)(4) dan + (&)(&)(&)(&)(&)(&)(&)(&)(&) dan + (1)(4)(3) fox + (&)(&)(&)(&)(&)(&)(&)(&)(&) fox + (1)(2)(3) dale + (&)(&)(&)(&)(&)(&)(&)(&)(&) dale + (1)(1)(6) kab + (&)(&)(&)(&)(&)(&)(&)(&)(&) kab + (9)(5) buz + (&)(&)(&)(&)(&)(&) buz + (8)(0) asc + (&)(&)(&)(&)(&)(&) asc + (7)(9) jas + (&)(&)(&)(&)(&)(&) jas + (7)(9) trt + (&)(&)(&)(&)(&)(&) trt + (6)(4) wsb + (&)(&)(&)(&)(&)(&) wsb + (6)(2) dwh + (&)(&)(&)(&)(&)(&) dwh + (5)(6) ktf + (&)(&)(&)(&)(&)(&) ktf + (5)(4) lr + (&)(&)(&)(&)(&)(&) lr + (4)(7) dlc + (&)(&)(&)(&)(&)(&) dlc + (4)(5) dls + (&)(&)(&)(&)(&)(&) dls + (4)(5) jwf + (&)(&)(&)(&)(&)(&) jwf + (4)(4) mash + (&)(&)(&)(&)(&)(&) mash + (4)(3) ars + (&)(&)(&)(&)(&)(&) ars + (4)(3) vgl + (&)(&)(&)(&)(&)(&) vgl + (3)(7) jfo + (&)(&)(&)(&)(&)(&) jfo + (3)(2) rab + (&)(&)(&)(&)(&)(&) rab + (3)(1) pd + (&)(&)(&)(&)(&)(&) pd + (2)(9) jns + (&)(&)(&)(&)(&)(&) jns + (2)(5) spm + (&)(&)(&)(&)(&)(&) spm + (2)(2) rob + (&)(&)(&)(&)(&)(&) rob + (1)(5) egb + (&)(&)(&)(&)(&)(&) egb + (1)(0) hm + (&)(&)(&)(&)(&)(&) hm + (1)(0) mhb + (&)(&)(&)(&)(&)(&) mhb + (6) aed + (&)(&)(&) aed + (6) cpb + (&)(&)(&) cpb + (5) evp + (&)(&)(&) evp + (4) ber + (&)(&)(&) ber + (4) men + (&)(&)(&) men + (4) mitch + (&)(&)(&) mitch + (3) ast + (&)(&)(&) ast + (3) jfr + (&)(&)(&) jfr + (3) lax + (&)(&)(&) lax + (3) nel + (&)(&)(&) nel + (2) blue + (&)(&)(&) blue + (2) jfk + (&)(&)(&) jfk + (2) njas + (&)(&)(&) njas + (1) (1)22sec + (&)(&)(&) (&)(&)(&)22sec + (1) ddwar + (&)(&)(&) ddwar + (1) gopi + (&)(&)(&) gopi + (1) jk + (&)(&)(&) jk + (1) learn + (&)(&)(&) learn + (1) low + (&)(&)(&) low + (1) nac + (&)(&)(&) nac + (1) sidor + (&)(&)(&) sidor diff --git a/src/tool/awk/testdata/output/t.i.x b/src/tool/awk/testdata/output/t.i.x new file mode 100644 index 0000000..6d64e5f --- /dev/null +++ b/src/tool/awk/testdata/output/t.i.x @@ -0,0 +1,198 @@ +9.76302 9.76302 +19.4858 9.72274 +29.1733 9.68757 +38.8356 9.66224 +48.2194 9.38387 +57.4699 9.25043 +66.7051 9.23523 +75.9006 9.19553 +85.0855 9.18482 +94.2437 9.1582 +103.37 9.12587 +112.465 9.09515 +121.558 9.09324 +130.605 9.04676 +139.637 9.03265 +148.656 9.01821 +157.572 8.91597 +166.475 8.90382 +175.367 8.89192 +184.232 8.86503 +193.095 8.86263 +201.885 8.78981 +210.658 8.77369 +219.405 8.74688 +228.139 8.73408 +236.782 8.64312 +245.372 8.58914 +253.932 8.56025 +262.482 8.55005 +271.001 8.51859 +279.285 8.28476 +287.553 8.26745 +295.794 8.2417 +303.95 8.15507 +312.02 8.07091 +319.974 7.95332 +327.902 7.92805 +335.781 7.87891 +343.631 7.8501 +351.459 7.82844 +359.275 7.81561 +366.937 7.66247 +374.533 7.59539 +382.128 7.59539 +389.695 7.56683 +397.191 7.4961 +404.562 7.37149 +411.796 7.23346 +419.019 7.22257 +426.201 7.18235 +433.295 7.09423 +440.38 7.08506 +447.43 7.05012 +454.478 7.04752 +461.416 6.93828 +468.342 6.9256 +475.198 6.85646 +482.034 6.83626 +488.835 6.80017 +495.597 6.76273 +502.309 6.71174 +508.997 6.68835 +515.548 6.55108 +521.985 6.43615 +528.311 6.32615 +534.604 6.29342 +540.864 6.25958 +547.068 6.20456 +553.191 6.12249 +559.217 6.02587 +565.173 5.95584 +571.099 5.92693 +576.952 5.8522 +582.792 5.84064 +588.582 5.78996 +594.245 5.66296 +599.851 5.6058 +605.423 5.57215 +610.957 5.53339 +616.482 5.52545 +621.995 5.51343 +627.407 5.41165 +632.81 5.40268 +638.171 5.36129 +643.474 5.3033 +648.689 5.21494 +653.86 5.17048 +658.972 5.11199 +664.066 5.09375 +669.035 4.96981 +673.998 4.96284 +678.81 4.81218 +683.564 4.75359 +688.118 4.55388 +692.5 4.38203 +696.869 4.36945 +701.239 4.36945 +705.398 4.15888 +709.525 4.12713 +713.55 4.02535 +717.539 3.98898 +721.389 3.85015 +725.196 3.80666 +729.003 3.80666 +732.787 3.78419 +736.548 3.7612 +740.309 3.7612 +743.92 3.61092 +747.386 3.46574 +750.82 3.43399 +754.187 3.3673 +757.406 3.21888 +760.497 3.09104 +763.205 2.70805 +765.508 2.30259 +767.81 2.30259 +769.602 1.79176 +771.394 1.79176 +773.003 1.60944 +774.39 1.38629 +775.776 1.38629 +777.162 1.38629 +778.261 1.09861 +779.359 1.09861 +780.458 1.09861 +781.557 1.09861 +782.25 0.693147 +782.943 0.693147 +783.636 0.693147 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +783.636 0 +784.329 0.693147 +785.428 1.09861 +786.814 1.38629 +788.423 1.60944 +790.215 1.79176 +792.161 1.94591 +794.241 2.07944 +796.438 2.19722 +798.74 2.30259 +801.138 2.3979 +803.623 2.48491 +806.188 2.56495 +808.827 2.63906 +811.535 2.70805 +814.308 2.77259 +817.141 2.83321 +820.031 2.89037 +822.976 2.94444 +825.972 2.99573 +829.016 3.04452 +834.428 5.41165 +837.563 3.13549 +840.741 3.17805 +843.96 3.21888 +847.218 3.2581 +850.514 3.29584 +853.846 3.3322 +857.214 3.3673 +860.615 3.4012 +860.615 0 +861.308 0.693147 +862.407 1.09861 +863.793 1.38629 +865.402 1.60944 +867.194 1.79176 +869.14 1.94591 +871.219 2.07944 +873.417 2.19722 +875.719 2.30259 +878.117 2.3979 +880.602 2.48491 +883.167 2.56495 +885.806 2.63906 +888.514 2.70805 +891.287 2.77259 +894.12 2.83321 +897.01 2.89037 +899.955 2.94444 +902.95 2.99573 +905.995 3.04452 +909.086 3.09104 +912.222 3.13549 +915.4 3.17805 +918.618 3.21888 +921.877 3.2581 +925.172 3.29584 +928.505 3.3322 +931.872 3.3673 +935.273 3.4012 +935.273 diff --git a/src/tool/awk/testdata/output/t.if b/src/tool/awk/testdata/output/t.if new file mode 100644 index 0000000..2775e79 --- /dev/null +++ b/src/tool/awk/testdata/output/t.if @@ -0,0 +1,198 @@ +/dev/rrp3: +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.in b/src/tool/awk/testdata/output/t.in new file mode 100644 index 0000000..0d06876 --- /dev/null +++ b/src/tool/awk/testdata/output/t.in @@ -0,0 +1,3 @@ +apple 1 +lemon 3 +orange 2 diff --git a/src/tool/awk/testdata/output/t.in1 b/src/tool/awk/testdata/output/t.in1 new file mode 100644 index 0000000..904fd21 --- /dev/null +++ b/src/tool/awk/testdata/output/t.in1 @@ -0,0 +1,187 @@ +1 21 +10 a68 9748 +100 dwh 62 +101 ktf 56 +102 lr 54 +103 dlc 47 +104 dls 45 +105 jwf 45 +106 mash 44 +107 ars 43 +108 vgl 43 +109 jfo 37 +11 sif 9492 +110 rab 32 +111 pd 31 +112 jns 29 +113 spm 25 +114 rob 22 +115 egb 15 +116 hm 10 +117 mhb 10 +118 aed 6 +119 cpb 6 +12 pjw 9190 +120 evp 5 +121 ber 4 +122 men 4 +123 mitch 4 +124 ast 3 +125 jfr 3 +126 lax 3 +127 nel 3 +128 blue 2 +129 jfk 2 +13 nls 8912 +130 njas 2 +131 122sec 1 +132 ddwar 1 +133 gopi 1 +134 jk 1 +135 learn 1 +136 low 1 +137 nac 1 +138 sidor 1 +139 running 2 +14 dmr 8895 +140 V 3 +141 Diagnostics:/usr/diags:/bin/csh 4 +142 Tools 6 +143 Activity 21 +144 Files 10 +145 Spooler 11 +146 Database 13 +147 Killian 29 +148 Daemon 16 +149 Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17 +15 cda 8491 +150 User:/usr/demos:/bin/csh 18 +151 User:/usr/tutor:/bin/csh 19 +152 Space 20 +153 Account:/usr/people/guest:/bin/csh 21 +154 Account:/usr/people/4Dgifts:/bin/csh 224 +155 nobody 96 +156 no 24 +157 Owner:/usr/spool/rje: 26 +158 change 27 +159 distributions:/v/adm/dist:/v/bin/sh 28 +16 bs 8372 +160 Manual 29 +161 call 30 +162 oot 1 +163 oottcsh 2 +164 ysadm 3 +165 iag 4 +166 aemon 5 +167 in 6 +168 ucp 8 +169 ys 9 +17 llc 8252 +170 adm 10 +171 lp 11 +172 auditor 12 +173 dbadmin 13 +174 bootes 14 +175 cdjuke 15 +176 rfindd 16 +177 EZsetup 17 +178 demos 18 +179 tutor 19 +18 mb 7450 +180 tour 20 +181 guest 21 +182 4Dgifts 22 +183 noaccess 24 +184 changes 27 +185 dist 28 +186 man 29 +187 phoneca 30 +19 ava 7360 +2 mel 17379 +20 jrv 7273 +21 bin 7080 +22 greg 7063 +23 dict 6567 +24 lck 6462 +25 rje 6317 +26 lwf 6211 +27 dave 5671 +28 jhc 5373 +29 agf 5220 +3 bwk 16693 +30 doug 5167 +31 valerie 5007 +32 jca 3963 +33 bbs 3895 +34 moh 3796 +35 xchar 3481 +36 tbl 3200 +37 s 2845 +38 tgs 2774 +39 met 2641 +4 ken 16116 +40 jck 2566 +41 port 2511 +42 sue 2479 +43 root 2127 +44 bsb 1989 +45 jeg 1989 +46 eag 1933 +47 pdj 1801 +48 tpc 1590 +49 cvw 1385 +5 srb 15713 +50 rwm 1370 +51 avg 1316 +52 eg 1205 +53 jam 1194 +54 dl 1153 +55 lgm 1150 +56 cmb 1031 +57 jwr 1018 +58 gdb 950 +59 marc 931 +6 lem 11895 +60 usg 898 +61 ggr 865 +62 daemon 822 +63 mihalis 803 +64 honey 700 +65 tad 624 +66 acs 559 +67 uucp 548 +68 raf 523 +69 adh 495 +7 scj 10409 +70 kec 456 +71 craig 414 +72 donmac 386 +73 jj 375 +74 ravi 348 +75 drw 344 +76 stars 327 +77 mrg 288 +78 jcb 272 +79 ralph 263 +8 rhm 10252 +80 tom 253 +81 sjb 251 +82 haight 248 +83 sharon 224 +84 chuck 222 +85 dsj 213 +86 bill 201 +87 god 184 +88 sys 176 +89 meh 166 +9 shen 9853 +90 jon 163 +91 dan 144 +92 fox 143 +93 dale 123 +94 kab 116 +95 buz 95 +96 asc 80 +97 jas 79 +98 trt 79 +99 wsb 64 diff --git a/src/tool/awk/testdata/output/t.in2 b/src/tool/awk/testdata/output/t.in2 new file mode 100644 index 0000000..34c592d --- /dev/null +++ b/src/tool/awk/testdata/output/t.in2 @@ -0,0 +1,38 @@ + 21 +1 1 +4 22 +A 266 +D 33 +E 17 +F 10 +K 29 +M 29 +O 26 +S 48 +T 6 +U 37 +V 3 +a 24857 +b 38345 +c 11648 +d 29727 +e 3158 +f 143 +g 9084 +h 958 +i 10 +j 24382 +k 16744 +l 34040 +m 33545 +n 9062 +o 3 +p 13563 +r 21272 +s 51795 +t 8559 +u 1454 +v 5050 +w 64 +x 3481 +y 12 diff --git a/src/tool/awk/testdata/output/t.in3 b/src/tool/awk/testdata/output/t.in3 new file mode 100644 index 0000000..094eb3e --- /dev/null +++ b/src/tool/awk/testdata/output/t.in3 @@ -0,0 +1 @@ +10 9853 shen diff --git a/src/tool/awk/testdata/output/t.incr b/src/tool/awk/testdata/output/t.incr new file mode 100644 index 0000000..5036cd5 --- /dev/null +++ b/src/tool/awk/testdata/output/t.incr @@ -0,0 +1 @@ +199 199 -199 199 -199 diff --git a/src/tool/awk/testdata/output/t.incr2 b/src/tool/awk/testdata/output/t.incr2 new file mode 100644 index 0000000..8636aff --- /dev/null +++ b/src/tool/awk/testdata/output/t.incr2 @@ -0,0 +1,199 @@ +0 +0 +17379 +16693 +16116 +15713 +11895 +10409 +10252 +9853 +9748 +9492 +9190 +8912 +8895 +8491 +8372 +8252 +7450 +7360 +7273 +7080 +7063 +6567 +6462 +6291 +6211 +5671 +5373 +5220 +5167 +5007 +3963 +3895 +3796 +3481 +3200 +2845 +2774 +2641 +2566 +2511 +2479 +2127 +1989 +1989 +1933 +1801 +1590 +1385 +1370 +1316 +1205 +1194 +1153 +1150 +1031 +1018 +950 +931 +898 +865 +822 +803 +700 +624 +559 +541 +523 +495 +456 +414 +386 +375 +348 +344 +327 +288 +272 +263 +253 +251 +248 +224 +222 +213 +201 +184 +176 +166 +163 +144 +143 +123 +116 +95 +80 +79 +79 +64 +62 +56 +54 +47 +45 +45 +44 +43 +43 +37 +32 +31 +29 +25 +22 +15 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +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 +996 +2 +4 +16 +8 +4 +18 +29 +23 +25 +65 +67 +83 +2007 +2008 +2010 +2012 +2017 +2019 +120025 +120028 +25 +42 +49 +10031 +1123 +2012 diff --git a/src/tool/awk/testdata/output/t.incr3 b/src/tool/awk/testdata/output/t.incr3 new file mode 100644 index 0000000..7ee1275 --- /dev/null +++ b/src/tool/awk/testdata/output/t.incr3 @@ -0,0 +1,199 @@ +0 +0 +17379 +16693 +16116 +15713 +11895 +10409 +10252 +9853 +9748 +9492 +9190 +8912 +8895 +8491 +8372 +8252 +7450 +7360 +7273 +7080 +7063 +6567 +6462 +6291 +6211 +5671 +5373 +5220 +5167 +5007 +3963 +3895 +3796 +3481 +3200 +2845 +2774 +2641 +2566 +2511 +2479 +2127 +1989 +1989 +1933 +1801 +1590 +1385 +1370 +1316 +1205 +1194 +1153 +1150 +1031 +1018 +950 +931 +898 +865 +822 +803 +700 +624 +559 +541 +523 +495 +456 +414 +386 +375 +348 +344 +327 +288 +272 +263 +253 +251 +248 +224 +222 +213 +201 +184 +176 +166 +163 +144 +143 +123 +116 +95 +80 +79 +79 +64 +62 +56 +54 +47 +45 +45 +44 +43 +43 +37 +32 +31 +29 +25 +22 +15 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +123 +1 +1 +1 +1 +1 +1 +1 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +224 +23 +24 +25 +26 +27 +28 +29 +30 +1 +2 +3 +1000 +7 +10 +23 +16 +13 +18 +29 +23 +25 +65 +67 +83 +2007 +2008 +2010 +2012 +2017 +2027 +120025 +120028 +21 +42 +49 +10031 +1123 +2012 diff --git a/src/tool/awk/testdata/output/t.index b/src/tool/awk/testdata/output/t.index new file mode 100644 index 0000000..f3b5198 --- /dev/null +++ b/src/tool/awk/testdata/output/t.index @@ -0,0 +1,37 @@ +16116 ken him someone else has duplicate letters + 9748 a68 has duplicate letters + 7360 ava has duplicate letters + 7063 greg has duplicate letters + 5007 valerie has duplicate letters + 1989 bsb has duplicate letters + 375 jj has duplicate letters + 327 stars has duplicate letters + 201 bill has duplicate letters + 176 sys has duplicate letters + 79 trt has duplicate letters +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh has duplicate letters +6bin:*:2:2:System Tools Owner:/bin:/dev/null has duplicate letters +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico has duplicate letters +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: has duplicate letters +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: has duplicate letters +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: has duplicate letters +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null has duplicate letters +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null has duplicate letters +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null has duplicate letters +26rje:*:8:8:RJE Owner:/usr/spool/rje: has duplicate letters +27changes:*:11:11:system change log:/: has duplicate letters +29man:*:99:995:On-line Manual Owner:/: has duplicate letters +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh has duplicate letters +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh has duplicate letters +6b in * 2 2 System Tools Owner /bin /dev/null has duplicate letters +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico has duplicate letters +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp has duplicate letters +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp has duplicate letters +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp has duplicate letters +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null has duplicate letters +24 noaccess * 60002 60002 uid no access /dev/null /dev/null has duplicate letters +25 nobody * -2 -2 original nobody uid /dev/null /dev/null has duplicate letters +26 rje * 8 8 RJE Owner /usr/spool/rje has duplicate letters +27 changes * 11 11 system change log / has duplicate letters +29 man * 99 995 On-line Manual Owner / has duplicate letters +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh has duplicate letters diff --git a/src/tool/awk/testdata/output/t.intest b/src/tool/awk/testdata/output/t.intest new file mode 100644 index 0000000..de3899b --- /dev/null +++ b/src/tool/awk/testdata/output/t.intest @@ -0,0 +1,398 @@ +/dev/rrp3: +no + +no +17379 mel +no +16693 bwk me +no + else +no +15713 srb +no +11895 lem +no +10409 scj +no +10252 rhm +no + 9853 shen +no + 9748 a68 +no + 9492 sif +no + 9190 pjw +no + 8912 nls +no + 8895 dmr +no + 8491 cda +no + 8372 bs +no + 8252 llc +no + 7450 mb +no + 7360 ava +no + 7273 jrv +no + 7080 bin +no + 7063 greg +no + 6567 dict +no + 6462 lck +no + 6291 rje +no + 6211 lwf +no + 5671 dave +no + 5373 jhc +no + 5220 agf +no + 5167 doug +no + 5007 valerie +no + 3963 jca +no + 3895 bbs +no + 3796 moh +no + 3481 xchar +no + 3200 tbl +no + 2845 s +no + 2774 tgs +no + 2641 met +no + 2566 jck +no + 2511 port +no + 2479 sue +no + 2127 root +no + 1989 bsb +no + 1989 jeg +no + 1933 eag +no + 1801 pdj +no + 1590 tpc +no + 1385 cvw +no + 1370 rwm +no + 1316 avg +no + 1205 eg +no + 1194 jam +no + 1153 dl +no + 1150 lgm +no + 1031 cmb +no + 1018 jwr +no + 950 gdb +no + 931 marc +no + 898 usg +no + 865 ggr +no + 822 daemon +no + 803 mihalis +no + 700 honey +no + 624 tad +no + 559 acs +no + 541 uucp +no + 523 raf +no + 495 adh +no + 456 kec +no + 414 craig +no + 386 donmac +no + 375 jj +no + 348 ravi +no + 344 drw +no + 327 stars +no + 288 mrg +no + 272 jcb +no + 263 ralph +no + 253 tom +no + 251 sjb +no + 248 haight +no + 224 sharon +no + 222 chuck +no + 213 dsj +no + 201 bill +no + 184 god +no + 176 sys +no + 166 meh +no + 163 jon +no + 144 dan +no + 143 fox +no + 123 dale +no + 116 kab +no + 95 buz +no + 80 asc +no + 79 jas +no + 79 trt +no + 64 wsb +no + 62 dwh +no + 56 ktf +no + 54 lr +no + 47 dlc +no + 45 dls +no + 45 jwf +no + 44 mash +no + 43 ars +no + 43 vgl +no + 37 jfo +no + 32 rab +no + 31 pd +no + 29 jns +no + 25 spm +no + 22 rob +no + 15 egb +no + 10 hm +no + 10 mhb +no + 6 aed +no + 6 cpb +no + 5 evp +no + 4 ber +no + 4 men +no + 4 mitch +no + 3 ast +no + 3 jfr +no + 3 lax +no + 3 nel +no + 2 blue +yes + 2 jfk +yes + 2 njas +yes + 1 122sec +yes + 1 ddwar +yes + 1 gopi +yes + 1 jk +yes + 1 learn +yes + 1 low +yes + 1 nac +yes + 1 sidor +yes +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +no + running tcsh [cbm]:/:/bin/tcsh +no + V Administration:/usr/admin:/bin/sh +no + Diagnostics:/usr/diags:/bin/csh +no +5daemon:*:1:1:daemons:/:/bin/sh +no + Tools Owner:/bin:/dev/null +no +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +no +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +no + Activity Owner:/usr/adm:/bin/sh +no + Files Owner:/usr/adm:/bin/sh +no + Spooler Owner:/var/spool/lp:/bin/sh +no + Activity Owner:/auditor:/bin/sh +no + Database Owner:/dbadmin:/bin/sh +no + Killian (DO NOT REMOVE):/tmp: +no + Killian (DO NOT REMOVE):/tmp: +no + Daemon and Fsdump:/var/rfindd:/bin/sh +no + Setup:/var/sysadmdesktop/EZsetup:/bin/csh +no + User:/usr/demos:/bin/csh +no + User:/usr/tutor:/bin/csh +no + Space Tour:/usr/people/tour:/bin/csh +no + Account:/usr/people/guest:/bin/csh +no + Account:/usr/people/4Dgifts:/bin/csh +no + nobody uid:/dev/null:/dev/null +no + no access:/dev/null:/dev/null +no + nobody uid:/dev/null:/dev/null +no + Owner:/usr/spool/rje: +no + change log:/: +no + distributions:/v/adm/dist:/v/bin/sh +no + Manual Owner:/: +no + call log [tom]:/v/adm/log:/v/bin/sh +no + oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +no + oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +no + ysadm * 0 0 System V Administration /usr/admin /bin/sh +no + iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +no + aemon * 1 1 daemons / /bin/sh +no + in * 2 2 System Tools Owner /bin /dev/null +no + uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +no + ucp * 3 5 UUCP.Admin /usr/lib/uucp +no + ys * 4 0 System Activity Owner /usr/adm /bin/sh +no + adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +no + lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +no + auditor * 11 0 Audit Activity Owner /auditor /bin/sh +no + dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +no + bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +no + cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +no + rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +no + EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +no + demos * 993 997 Demonstration User /usr/demos /bin/csh +no + tutor * 994 997 Tutorial User /usr/tutor /bin/csh +no + tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +no + guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +no + 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +no + nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +no + noaccess * 60002 60002 uid no access /dev/null /dev/null +no + nobody * -2 -2 original nobody uid /dev/null /dev/null +no + rje * 8 8 RJE Owner /usr/spool/rje +no + changes * 11 11 system change log / +no + dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +no + man * 99 995 On-line Manual Owner / +no + phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +no diff --git a/src/tool/awk/testdata/output/t.intest2 b/src/tool/awk/testdata/output/t.intest2 new file mode 100644 index 0000000..b108d9b --- /dev/null +++ b/src/tool/awk/testdata/output/t.intest2 @@ -0,0 +1,1978 @@ + + + + 1 122sec + 1 122sec + 1 122sec1 1 122sec + 1 ddwar + 1 ddwar + 1 ddwar1 1 ddwar + 1 gopi + 1 gopi + 1 gopi1 1 gopi + 1 jk + 1 jk + 1 jk1 1 jk + 1 learn + 1 learn + 1 learn1 1 learn + 1 low + 1 low + 1 low1 1 low + 1 nac + 1 nac + 1 nac1 1 nac + 1 sidor + 1 sidor + 1 sidor1 1 sidor + 2 blue + 2 blue + 2 blue2 2 blue + 2 jfk + 2 jfk + 2 jfk2 2 jfk + 2 njas + 2 njas + 2 njas2 2 njas + 3 ast + 3 ast + 3 ast3 3 ast + 3 jfr + 3 jfr + 3 jfr3 3 jfr + 3 lax + 3 lax + 3 lax3 3 lax + 3 nel + 3 nel + 3 nel3 3 nel + 4 ber + 4 ber + 4 ber4 4 ber + 4 men + 4 men + 4 men4 4 men + 4 mitch + 4 mitch + 4 mitch4 4 mitch + 5 evp + 5 evp + 5 evp5 5 evp + 6 aed + 6 aed + 6 aed6 6 aed + 6 cpb + 6 cpb + 6 cpb6 6 cpb + 10 hm + 10 hm + 10 hm10 10 hm + 10 mhb + 10 mhb + 10 mhb10 10 mhb + 15 egb + 15 egb + 15 egb15 15 egb + 22 rob + 22 rob + 22 rob22 22 rob + 25 spm + 25 spm + 25 spm25 25 spm + 29 jns + 29 jns + 29 jns29 29 jns + 31 pd + 31 pd + 31 pd31 31 pd + 32 rab + 32 rab + 32 rab32 32 rab + 37 jfo + 37 jfo + 37 jfo37 37 jfo + 43 ars + 43 ars + 43 ars43 43 ars + 43 vgl + 43 vgl + 43 vgl43 43 vgl + 44 mash + 44 mash + 44 mash44 44 mash + 45 dls + 45 dls + 45 dls45 45 dls + 45 jwf + 45 jwf + 45 jwf45 45 jwf + 47 dlc + 47 dlc + 47 dlc47 47 dlc + 54 lr + 54 lr + 54 lr54 54 lr + 56 ktf + 56 ktf + 56 ktf56 56 ktf + 62 dwh + 62 dwh + 62 dwh62 62 dwh + 64 wsb + 64 wsb + 64 wsb64 64 wsb + 79 jas + 79 jas + 79 jas79 79 jas + 79 trt + 79 trt + 79 trt79 79 trt + 80 asc + 80 asc + 80 asc80 80 asc + 95 buz + 95 buz + 95 buz95 95 buz + 116 kab + 116 kab + 116 kab116 116 kab + 123 dale + 123 dale + 123 dale123 123 dale + 143 fox + 143 fox + 143 fox143 143 fox + 144 dan + 144 dan + 144 dan144 144 dan + 163 jon + 163 jon + 163 jon163 163 jon + 166 meh + 166 meh + 166 meh166 166 meh + 176 sys + 176 sys + 176 sys176 176 sys + 184 god + 184 god + 184 god184 184 god + 201 bill + 201 bill + 201 bill201 201 bill + 213 dsj + 213 dsj + 213 dsj213 213 dsj + 222 chuck + 222 chuck + 222 chuck222 222 chuck + 224 sharon + 224 sharon + 224 sharon224 224 sharon + 248 haight + 248 haight + 248 haight248 248 haight + 251 sjb + 251 sjb + 251 sjb251 251 sjb + 253 tom + 253 tom + 253 tom253 253 tom + 263 ralph + 263 ralph + 263 ralph263 263 ralph + 272 jcb + 272 jcb + 272 jcb272 272 jcb + 288 mrg + 288 mrg + 288 mrg288 288 mrg + 327 stars + 327 stars + 327 stars327 327 stars + 344 drw + 344 drw + 344 drw344 344 drw + 348 ravi + 348 ravi + 348 ravi348 348 ravi + 375 jj + 375 jj + 375 jj375 375 jj + 386 donmac + 386 donmac + 386 donmac386 386 donmac + 414 craig + 414 craig + 414 craig414 414 craig + 456 kec + 456 kec + 456 kec456 456 kec + 495 adh + 495 adh + 495 adh495 495 adh + 523 raf + 523 raf + 523 raf523 523 raf + 541 uucp + 541 uucp + 541 uucp541 541 uucp + 559 acs + 559 acs + 559 acs559 559 acs + 624 tad + 624 tad + 624 tad624 624 tad + 700 honey + 700 honey + 700 honey700 700 honey + 803 mihalis + 803 mihalis + 803 mihalis803 803 mihalis + 822 daemon + 822 daemon + 822 daemon822 822 daemon + 865 ggr + 865 ggr + 865 ggr865 865 ggr + 898 usg + 898 usg + 898 usg898 898 usg + 931 marc + 931 marc + 931 marc931 931 marc + 950 gdb + 950 gdb + 950 gdb950 950 gdb + 1018 jwr + 1018 jwr + 1018 jwr1018 1018 jwr + 1031 cmb + 1031 cmb + 1031 cmb1031 1031 cmb + 1150 lgm + 1150 lgm + 1150 lgm1150 1150 lgm + 1153 dl + 1153 dl + 1153 dl1153 1153 dl + 1194 jam + 1194 jam + 1194 jam1194 1194 jam + 1205 eg + 1205 eg + 1205 eg1205 1205 eg + 1316 avg + 1316 avg + 1316 avg1316 1316 avg + 1370 rwm + 1370 rwm + 1370 rwm1370 1370 rwm + 1385 cvw + 1385 cvw + 1385 cvw1385 1385 cvw + 1590 tpc + 1590 tpc + 1590 tpc1590 1590 tpc + 1801 pdj + 1801 pdj + 1801 pdj1801 1801 pdj + 1933 eag + 1933 eag + 1933 eag1933 1933 eag + 1989 bsb + 1989 bsb + 1989 bsb1989 1989 bsb + 1989 jeg + 1989 jeg + 1989 jeg1989 1989 jeg + 2127 root + 2127 root + 2127 root2127 2127 root + 2479 sue + 2479 sue + 2479 sue2479 2479 sue + 2511 port + 2511 port + 2511 port2511 2511 port + 2566 jck + 2566 jck + 2566 jck2566 2566 jck + 2641 met + 2641 met + 2641 met2641 2641 met + 2774 tgs + 2774 tgs + 2774 tgs2774 2774 tgs + 2845 s + 2845 s + 2845 s2845 2845 s + 3200 tbl + 3200 tbl + 3200 tbl3200 3200 tbl + 3481 xchar + 3481 xchar + 3481 xchar3481 3481 xchar + 3796 moh + 3796 moh + 3796 moh3796 3796 moh + 3895 bbs + 3895 bbs + 3895 bbs3895 3895 bbs + 3963 jca + 3963 jca + 3963 jca3963 3963 jca + 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 5007 valerie + 5007 valerie + 5007 valerie5007 5007 valerie + 5167 doug + 5167 doug + 5167 doug5167 5167 doug + 5220 agf + 5220 agf + 5220 agf5220 5220 agf + 5373 jhc + 5373 jhc + 5373 jhc5373 5373 jhc + 5671 dave + 5671 dave + 5671 dave5671 5671 dave + 6211 lwf + 6211 lwf + 6211 lwf6211 6211 lwf + 6291 rje + 6291 rje + 6291 rje6291 6291 rje + 6462 lck + 6462 lck + 6462 lck6462 6462 lck + 6567 dict + 6567 dict + 6567 dict6567 6567 dict + 7063 greg + 7063 greg + 7063 greg7063 7063 greg + 7080 bin + 7080 bin + 7080 bin7080 7080 bin + 7273 jrv + 7273 jrv + 7273 jrv7273 7273 jrv + 7360 ava + 7360 ava + 7360 ava7360 7360 ava + 7450 mb + 7450 mb + 7450 mb7450 7450 mb + 8252 llc + 8252 llc + 8252 llc8252 8252 llc + 8372 bs + 8372 bs + 8372 bs8372 8372 bs + 8491 cda + 8491 cda + 8491 cda8491 8491 cda + 8895 dmr + 8895 dmr + 8895 dmr8895 8895 dmr + 8912 nls + 8912 nls + 8912 nls8912 8912 nls + 9190 pjw + 9190 pjw + 9190 pjw9190 9190 pjw + 9492 sif + 9492 sif + 9492 sif9492 9492 sif + 9748 a68 + 9748 a68 + 9748 a689748 9748 a68 + 9853 shen + 9853 shen + 9853 shen9853 9853 shen + Account:/usr/people/4Dgifts:/bin/csh + Account:/usr/people/guest:/bin/csh + Activity Owner:/auditor:/bin/sh + Activity Owner:/usr/adm:/bin/sh + Daemon and Fsdump:/var/rfindd:/bin/sh + Database Owner:/dbadmin:/bin/sh + Diagnostics:/usr/diags:/bin/csh + EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + Files Owner:/usr/adm:/bin/sh + Killian (DO NOT REMOVE):/tmp: + Killian (DO NOT REMOVE):/tmp: + Manual Owner:/: + Owner:/usr/spool/rje: + Setup:/var/sysadmdesktop/EZsetup:/bin/csh + Space Tour:/usr/people/tour:/bin/csh + Spooler Owner:/var/spool/lp:/bin/sh + Tools Owner:/bin:/dev/null + User:/usr/demos:/bin/csh + User:/usr/tutor:/bin/csh + V Administration:/usr/admin:/bin/sh + adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + aemon * 1 1 daemons / /bin/sh + auditor * 11 0 Audit Activity Owner /auditor /bin/sh + bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + call log [tom]:/v/adm/log:/v/bin/sh + cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + change log:/: + changes * 11 11 system change log / + dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + demos * 993 997 Demonstration User /usr/demos /bin/csh + dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + distributions:/v/adm/dist:/v/bin/sh + else + guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + in * 2 2 System Tools Owner /bin /dev/null + lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + man * 99 995 On-line Manual Owner / + no access:/dev/null:/dev/null + noaccess * 60002 60002 uid no access /dev/null /dev/null + nobody * -2 -2 original nobody uid /dev/null /dev/null + nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + nobody uid:/dev/null:/dev/null + nobody uid:/dev/null:/dev/null + oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + rje * 8 8 RJE Owner /usr/spool/rje + running tcsh [cbm]:/:/bin/tcsh + tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + tutor * 994 997 Tutorial User /usr/tutor /bin/csh + ucp * 3 5 UUCP.Admin /usr/lib/uucp + uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + ys * 4 0 System Activity Owner /usr/adm /bin/sh + ysadm * 0 0 System V Administration /usr/admin /bin/sh +/dev/rrp3: +/dev/rrp3: +/dev/rrp3:/dev/rrp3: /dev/rrp3: +1 /dev/rrp3: +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 1 +1 10 +1 10 +1 1018 +1 10252 +1 1031 +1 10409 +1 1150 +1 1153 +1 116 +1 11895 +1 1194 +1 1205 +1 123 +1 1316 +1 1370 +1 1385 +1 143 +1 144 +1 15 +1 15713 +1 1590 +1 163 +1 166 +1 16693 +1 17379 +1 176 +1 1801 +1 184 +1 1933 +1 1989 +1 1989 +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 2 +1 2 +1 2 +1 201 +1 2127 +1 213 +1 22 +1 222 +1 224 +1 2479 +1 248 +1 25 +1 251 +1 2511 +1 253 +1 2566 +1 263 +1 2641 +1 272 +1 2774 +1 2845 +1 288 +1 29 +1 3 +1 3 +1 3 +1 3 +1 31 +1 32 +1 3200 +1 327 +1 344 +1 348 +1 3481 +1 37 +1 375 +1 3796 +1 386 +1 3895 +1 3963 +1 4 +1 4 +1 4 +1 414 +1 43 +1 43 +1 44 +1 45 +1 45 +1 456 +1 47 +1 495 +1 4Dgifts +1 5 +1 5007 +1 5167 +1 5220 +1 523 +1 5373 +1 54 +1 541 +1 559 +1 56 +1 5671 +1 5daemon:*:1:1:daemons:/:/bin/sh +1 6 +1 6 +1 62 +1 6211 +1 624 +1 6291 +1 64 +1 6462 +1 6567 +1 700 +1 7063 +1 7080 +1 7273 +1 7360 +1 7450 +1 79 +1 79 +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 80 +1 803 +1 822 +1 8252 +1 8372 +1 8491 +1 865 +1 8895 +1 8912 +1 898 +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 9190 +1 931 +1 9492 +1 95 +1 950 +1 9748 +1 9853 +1 Account:/usr/people/4Dgifts:/bin/csh +1 Account:/usr/people/guest:/bin/csh +1 Activity +1 Activity +1 Daemon +1 Database +1 Diagnostics:/usr/diags:/bin/csh +1 EZsetup +1 Files +1 Killian +1 Killian +1 Manual +1 Owner:/usr/spool/rje: +1 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 Space +1 Spooler +1 Tools +1 User:/usr/demos:/bin/csh +1 User:/usr/tutor:/bin/csh +1 V +1 adm +1 aemon +1 auditor +1 bootes +1 call +1 cdjuke +1 change +1 changes +1 dbadmin +1 demos +1 dist +1 distributions:/v/adm/dist:/v/bin/sh +1 else +1 guest +1 iag +1 in +1 lp +1 man +1 no +1 noaccess +1 nobody +1 nobody +1 nobody +1 nobody +1 oot +1 oottcsh +1 phoneca +1 rfindd +1 rje +1 running +1 tour +1 tutor +1 ucp +1 uucp +1 ys +1 ysadm +10 /bin/sh +10 /bin/tcsh +10 /tmp +10 /tmp +10 /v/bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh10 10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10252 rhm +10252 rhm +10252 rhm10252 10252 rhm +10409 scj +10409 scj +10409 scj10409 10409 scj +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh10adm:*:5:3:Accounting 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh11 11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11895 lem +11895 lem +11895 lem11895 11895 lem +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh11lp:*:9:9:Print 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh12 12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh12auditor:*:11:0:Audit 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh13 13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh13dbadmin:*:12:0:Security 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp 14 14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp:14bootes:dcon:50:1:Tom 14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp 15 15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15713 srb +15713 srb +15713 srb15713 15713 srb +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp:15cdjuke:dcon:51:1:Tom 15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh16 16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16116 ken him someone else +16116 ken him someone else16116 16116 ken him someone else +16693 bwk me +16693 bwk me +16693 bwk me16693 16693 bwk me +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh16rfindd:*:66:1:Rfind 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh17 17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17379 mel +17379 mel +17379 mel17379 17379 mel +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh17EZsetup:*:992:998:System 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh18 18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh18demos:*:993:997:Demonstration 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh19 19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh19tutor:*:994:997:Tutorial 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh1r 1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2 (DO +2 (DO +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 * +2 0nWRTZsOMt. +2 122sec +2 Administration:/usr/admin:/bin/sh +2 BJnuQbAo +2 EMpNB8Zp56 +2 Owner:/: +2 Owner:/auditor:/bin/sh +2 Owner:/bin:/dev/null +2 Owner:/dbadmin:/bin/sh +2 Owner:/usr/adm:/bin/sh +2 Owner:/usr/adm:/bin/sh +2 Owner:/var/spool/lp:/bin/sh +2 Tour:/usr/people/tour:/bin/csh +2 a68 +2 access:/dev/null:/dev/null +2 acs +2 adh +2 aed +2 agf +2 and +2 ars +2 asc +2 ast +2 ava +2 avg +2 bbs +2 ber +2 bill +2 bin +2 blue +2 bs +2 bsb +2 buz +2 bwk +2 cda +2 chuck +2 cmb +2 cpb +2 craig +2 cvw +2 daemon +2 dale +2 dan +2 dave +2 dcon +2 dcon +2 ddwar +2 dict +2 dl +2 dlc +2 dls +2 dmr +2 donmac +2 doug +2 drw +2 dsj +2 dwh +2 eag +2 eg +2 egb +2 evp +2 fox +2 gdb +2 ggr +2 god +2 gopi +2 greg +2 haight +2 hm +2 honey +2 jam +2 jas +2 jca +2 jcb +2 jck +2 jeg +2 jfk +2 jfo +2 jfr +2 jhc +2 jj +2 jk +2 jns +2 jon +2 jrv +2 jwf +2 jwr +2 kab +2 kec +2 ktf +2 lax +2 lck +2 learn +2 lem +2 lgm +2 llc +2 log +2 log:/: +2 low +2 lr +2 lwf +2 marc +2 mash +2 mb +2 meh +2 mel +2 men +2 met +2 mhb +2 mihalis +2 mitch +2 moh +2 mrg +2 nac +2 nel +2 nfP4/Wpvio/Rw +2 njas +2 nls +2 pd +2 pdj +2 pjw +2 port +2 rab +2 raf +2 ralph +2 ravi +2 rhm +2 rje +2 rob +2 root +2 rwm +2 s +2 scj +2 sharon +2 shen +2 sidor +2 sif +2 sjb +2 sorry +2 spm +2 srb +2 stars +2 sue +2 sys +2 tad +2 tbl +2 tcsh +2 tgs +2 tom +2 tpc +2 trt +2 uid:/dev/null:/dev/null +2 uid:/dev/null:/dev/null +2 usg +2 uucp +2 valerie +2 vgl +2 wsb +2 xchar +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh20 20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh20tour:*:995:997:IRIS 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh21 21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh21guest:nfP4/Wpvio/Rw:998:998:Guest 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh22 22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null23 23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null23nobody:*:60001:60001:SVR4 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null24 24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null24noaccess:*:60002:60002:uid 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null25 25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null25nobody:*:-2:-2:original 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje 26 26 rje * 8 8 RJE Owner /usr/spool/rje +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje:26rje:*:8:8:RJE 26rje:*:8:8:RJE Owner:/usr/spool/rje: +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / 27 27 changes * 11 11 system change log / +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/:27changes:*:11:11:system 27changes:*:11:11:system change log:/: +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh28 28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh28dist:sorry:9999:4:file 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / 29 29 man * 99 995 On-line Manual Owner / +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/:29man:*:99:995:On-line 29man:*:99:995:On-line Manual Owner:/: +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh2r 2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh2roottcsh:*:0:0:Super-User 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3 -2 +3 0 +3 0 +3 0 +3 0 +3 1 +3 11 +3 11 +3 12 +3 2 +3 3 +3 4 +3 5 +3 50 +3 51 +3 6 +3 60001 +3 60002 +3 66 +3 8 +3 9 +3 99 +3 991 +3 992 +3 993 +3 994 +3 995 +3 998 +3 999 +3 9999 +3 Fsdump:/var/rfindd:/bin/sh +3 NOT +3 NOT +3 [cbm]:/:/bin/tcsh +3 [tom]:/v/adm/log:/v/bin/sh +3 me +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh30 30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh30phoneca:*:991:991:phone 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh3s 3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh3sysadm:*:0:0:System 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4 -2 +4 0 +4 0 +4 0 +4 0 +4 0 +4 0 +4 1 +4 1 +4 1 +4 1 +4 10 +4 11 +4 2 +4 3 +4 4 +4 5 +4 60001 +4 60002 +4 8 +4 9 +4 991 +4 995 +4 996 +4 997 +4 997 +4 997 +4 998 +4 998 +4 998 +4 REMOVE):/tmp: +4 REMOVE):/tmp: +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh4d 4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh4diag:*:0:996:Hardware 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5 4Dgifts +5 Accounting +5 Audit +5 Demonstration +5 Guest +5 Hardware +5 IRIS +5 On-line +5 Print +5 RJE +5 Rfind +5 SVR4 +5 Security +5 Super-User +5 Super-User,,,,,,, +5 System +5 System +5 System +5 System +5 Tom +5 Tom +5 Tutorial +5 UUCP.Admin +5 UUCP.Admin +5 daemons +5 file +5 original +5 phone +5 system +5 uid +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh5d 5d aemon * 1 1 daemons / /bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh5daemon:*:1:1:daemons:/:/bin/sh 5daemon:*:1:1:daemons:/:/bin/sh +6 / +6 / +6 /usr/lib/uucp +6 /usr/spool/uucppublic +6 Account +6 Account +6 Activity +6 Activity +6 Daemon +6 Database +6 Diagnostics +6 Files +6 Killian +6 Killian +6 Manual +6 Owner +6 Setup +6 Space +6 Spooler +6 Tools +6 User +6 User +6 V +6 call +6 change +6 distributions +6 no +6 nobody +6 nobody +6 running +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null6b 6b in * 2 2 System Tools Owner /bin /dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null6bin:*:2:2:System 6bin:*:2:2:System Tools Owner:/bin:/dev/null +7 (DO +7 (DO +7 /bin/sh +7 /bin/sh +7 /usr/demos +7 /usr/diags +7 /usr/lib/uucp/uucico +7 /usr/people/4Dgifts +7 /usr/people/guest +7 /usr/spool/rje +7 /usr/tutor +7 /v/adm/dist +7 /var/sysadmdesktop/EZsetup +7 Administration +7 Owner +7 Owner +7 Owner +7 Owner +7 Owner +7 Owner +7 Owner +7 Tour +7 access +7 and +7 log +7 log +7 tcsh +7 uid +7 uid +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico7n 7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8 / +8 / +8 /auditor +8 /bin +8 /bin/csh +8 /bin/csh +8 /bin/csh +8 /bin/csh +8 /bin/csh +8 /bin/csh +8 /dbadmin +8 /dev/null +8 /dev/null +8 /dev/null +8 /usr/adm +8 /usr/adm +8 /usr/admin +8 /usr/people/tour +8 /v/bin/sh +8 /var/spool/lp +8 Fsdump +8 NOT +8 NOT +8 [cbm] +8 [tom] +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp 8u 8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9 / +9 /bin/csh +9 /bin/sh +9 /bin/sh +9 /bin/sh +9 /bin/sh +9 /bin/sh +9 /bin/sh +9 /dev/null +9 /dev/null +9 /dev/null +9 /dev/null +9 /v/adm/log +9 /var/rfindd +9 REMOVE) +9 REMOVE) +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh9s 9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh9sys:*:4:0:System 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +<<< +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +>>> +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +no +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes +yes diff --git a/src/tool/awk/testdata/output/t.j.x b/src/tool/awk/testdata/output/t.j.x new file mode 100644 index 0000000..eb12631 --- /dev/null +++ b/src/tool/awk/testdata/output/t.j.x @@ -0,0 +1,200 @@ +0 0 +0 0 +131.829 131.829 +261.031 129.201 +387.98 126.949 +513.331 125.352 +622.395 109.064 +724.42 102.025 +825.672 101.252 +924.934 99.2623 +1023.67 98.732 +1121.09 97.4269 +1216.96 95.8645 +1311.36 94.4034 +1405.67 94.3133 +1497.82 92.1466 +1589.32 91.4986 +1680.16 90.8405 +1766.47 86.3134 +1852.26 85.7904 +1937.55 85.2819 +2021.69 84.1427 +2105.73 84.0417 +2186.77 81.037 +2267.15 80.3866 +2346.47 79.3158 +2425.28 78.8099 +2500.59 75.306 +2573.89 73.3008 +2646.14 72.2496 +2718.02 71.8818 +2788.78 70.7602 +2851.73 62.9524 +2914.14 62.4099 +2975.75 61.6117 +3034.75 59 +3091.32 56.5685 +3144.66 53.3385 +3197.33 52.6688 +3248.72 51.3907 +3299.37 50.6557 +3349.48 50.1099 +3399.27 49.7896 +3445.39 46.1194 +3489.99 44.5982 +3534.59 44.5982 +3578.56 43.9659 +3620.99 42.4382 +3660.87 39.8748 +3698.08 37.2156 +3735.1 37.0135 +3771.37 36.2767 +3806.09 34.7131 +3840.64 34.5543 +3874.6 33.9559 +3908.51 33.9116 +3940.62 32.1092 +3972.52 31.9061 +4003.35 30.8221 +4033.86 30.5123 +4063.83 29.9666 +4093.24 29.4109 +4121.91 28.6705 +4150.24 28.3373 +4176.7 26.4575 +4201.68 24.98 +4225.32 23.6432 +4248.58 23.2594 +4271.45 22.8692 +4293.7 22.2486 +4315.06 21.3542 +4335.4 20.347 +4355.05 19.6469 +4374.41 19.3649 +4393.07 18.6548 +4411.62 18.5472 +4429.7 18.0831 +4446.67 16.9706 +4463.16 16.4924 +4479.38 16.2173 +4495.29 15.906 +4511.13 15.843 +4526.88 15.748 +4541.84 14.9666 +4556.74 14.8997 +4571.34 14.5945 +4585.52 14.1774 +4599.08 13.5647 +4612.35 13.2665 +4625.23 12.8841 +4638 12.7671 +4650 12 +4661.96 11.9583 +4673.05 11.0905 +4683.82 10.7703 +4693.56 9.74679 +4702.51 8.94427 +4711.4 8.88819 +4720.28 8.88819 +4728.28 8 +4736.16 7.87401 +4743.64 7.48331 +4750.99 7.34847 +4757.85 6.85565 +4764.55 6.7082 +4771.26 6.7082 +4777.9 6.63325 +4784.45 6.55744 +4791.01 6.55744 +4797.09 6.08276 +4802.75 5.65685 +4808.32 5.56776 +4813.7 5.38516 +4818.7 5 +4823.39 4.69042 +4827.27 3.87298 +4830.43 3.16228 +4833.59 3.16228 +4836.04 2.44949 +4838.49 2.44949 +4840.73 2.23607 +4842.73 2 +4844.73 2 +4846.73 2 +4848.46 1.73205 +4850.19 1.73205 +4851.92 1.73205 +4853.65 1.73205 +4855.07 1.41421 +4856.48 1.41421 +4857.9 1.41421 +4858.9 1 +4859.9 1 +4860.9 1 +4861.9 1 +4862.9 1 +4863.9 1 +4864.9 1 +4865.9 1 +4866.9 1 +4868.31 1.41421 +4870.04 1.73205 +4872.04 2 +4874.28 2.23607 +4876.73 2.44949 +4879.37 2.64575 +4882.2 2.82843 +4885.2 3 +4888.37 3.16228 +4891.68 3.31662 +4895.15 3.4641 +4898.75 3.60555 +4902.49 3.74166 +4906.37 3.87298 +4910.37 4 +4914.49 4.12311 +4918.73 4.24264 +4923.09 4.3589 +4927.56 4.47214 +4932.15 4.58258 +4947.11 14.9666 +4951.91 4.79583 +4956.81 4.89898 +4961.81 5 +4966.91 5.09902 +4972.1 5.19615 +4977.39 5.2915 +4982.78 5.38516 +4988.26 5.47723 +4989.26 1 +4990.67 1.41421 +4992.4 1.73205 +4994.4 2 +4996.64 2.23607 +4999.09 2.44949 +5001.73 2.64575 +5004.56 2.82843 +5007.56 3 +5010.72 3.16228 +5014.04 3.31662 +5017.5 3.4641 +5021.11 3.60555 +5024.85 3.74166 +5028.73 3.87298 +5032.73 4 +5036.85 4.12311 +5041.09 4.24264 +5045.45 4.3589 +5049.92 4.47214 +5054.5 4.58258 +5059.19 4.69042 +5063.99 4.79583 +5068.89 4.89898 +5073.89 5 +5078.99 5.09902 +5084.18 5.19615 +5089.48 5.2915 +5094.86 5.38516 +5100.34 5.47723 +71.4167 5100.34 diff --git a/src/tool/awk/testdata/output/t.longstr b/src/tool/awk/testdata/output/t.longstr new file mode 100644 index 0000000..b499f5a --- /dev/null +++ b/src/tool/awk/testdata/output/t.longstr @@ -0,0 +1 @@ +111111111122222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 diff --git a/src/tool/awk/testdata/output/t.makef b/src/tool/awk/testdata/output/t.makef new file mode 100644 index 0000000..2f3a550 --- /dev/null +++ b/src/tool/awk/testdata/output/t.makef @@ -0,0 +1,199 @@ +/dev/rrp3: 0 + 0 +17379 mel 34758 +16693 bwk 33386 +16116 ken 32232 +15713 srb 31426 +11895 lem 23790 +10409 scj 20818 +10252 rhm 20504 +9853 shen 19706 +9748 a68 19496 +9492 sif 18984 +9190 pjw 18380 +8912 nls 17824 +8895 dmr 17790 +8491 cda 16982 +8372 bs 16744 +8252 llc 16504 +7450 mb 14900 +7360 ava 14720 +7273 jrv 14546 +7080 bin 14160 +7063 greg 14126 +6567 dict 13134 +6462 lck 12924 +6291 rje 12582 +6211 lwf 12422 +5671 dave 11342 +5373 jhc 10746 +5220 agf 10440 +5167 doug 10334 +5007 valerie 10014 +3963 jca 7926 +3895 bbs 7790 +3796 moh 7592 +3481 xchar 6962 +3200 tbl 6400 +2845 s 5690 +2774 tgs 5548 +2641 met 5282 +2566 jck 5132 +2511 port 5022 +2479 sue 4958 +2127 root 4254 +1989 bsb 3978 +1989 jeg 3978 +1933 eag 3866 +1801 pdj 3602 +1590 tpc 3180 +1385 cvw 2770 +1370 rwm 2740 +1316 avg 2632 +1205 eg 2410 +1194 jam 2388 +1153 dl 2306 +1150 lgm 2300 +1031 cmb 2062 +1018 jwr 2036 +950 gdb 1900 +931 marc 1862 +898 usg 1796 +865 ggr 1730 +822 daemon 1644 +803 mihalis 1606 +700 honey 1400 +624 tad 1248 +559 acs 1118 +541 uucp 1082 +523 raf 1046 +495 adh 990 +456 kec 912 +414 craig 828 +386 donmac 772 +375 jj 750 +348 ravi 696 +344 drw 688 +327 stars 654 +288 mrg 576 +272 jcb 544 +263 ralph 526 +253 tom 506 +251 sjb 502 +248 haight 496 +224 sharon 448 +222 chuck 444 +213 dsj 426 +201 bill 402 +184 god 368 +176 sys 352 +166 meh 332 +163 jon 326 +144 dan 288 +143 fox 286 +123 dale 246 +116 kab 232 +95 buz 190 +80 asc 160 +79 jas 158 +79 trt 158 +64 wsb 128 +62 dwh 124 +56 ktf 112 +54 lr 108 +47 dlc 94 +45 dls 90 +45 jwf 90 +44 mash 88 +43 ars 86 +43 vgl 86 +37 jfo 74 +32 rab 64 +31 pd 62 +29 jns 58 +25 spm 50 +22 rob 44 +15 egb 30 +10 hm 20 +10 mhb 20 +6 aed 12 +6 cpb 12 +5 evp 10 +4 ber 8 +4 men 8 +4 mitch 8 +3 ast 6 +3 jfr 6 +3 lax 6 +3 nel 6 +2 blue 4 +2 jfk 4 +2 njas 4 +1 122sec 2 +1 ddwar 2 +1 gopi 2 +1 jk 2 +1 learn 2 +1 low 2 +1 nac 2 +1 sidor 2 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 2 +2roottcsh:*:0:0:Super-User running 4 +3sysadm:*:0:0:System V 6 +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh 8 +5daemon:*:1:1:daemons:/:/bin/sh 10 +6bin:*:2:2:System Tools 12 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 14 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 16 +9sys:*:4:0:System Activity 18 +10adm:*:5:3:Accounting Files 20 +11lp:*:9:9:Print Spooler 22 +12auditor:*:11:0:Audit Activity 24 +13dbadmin:*:12:0:Security Database 26 +14bootes:dcon:50:1:Tom Killian 28 +15cdjuke:dcon:51:1:Tom Killian 30 +16rfindd:*:66:1:Rfind Daemon 32 +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh 34 +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh 36 +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh 38 +20tour:*:995:997:IRIS Space 40 +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh 42 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh 448 +23nobody:*:60001:60001:SVR4 nobody 46 +24noaccess:*:60002:60002:uid no 48 +25nobody:*:-2:-2:original nobody 50 +26rje:*:8:8:RJE Owner:/usr/spool/rje: 52 +27changes:*:11:11:system change 54 +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh 56 +29man:*:99:995:On-line Manual 58 +30phoneca:*:991:991:phone call 60 +1r oot 2 +2r oottcsh 4 +3s ysadm 6 +4d iag 8 +5d aemon 10 +6b in 12 +7n uucp 14 +8u ucp 16 +9s ys 18 +10 adm 20 +11 lp 22 +12 auditor 24 +13 dbadmin 26 +14 bootes 28 +15 cdjuke 30 +16 rfindd 32 +17 EZsetup 34 +18 demos 36 +19 tutor 38 +20 tour 40 +21 guest 42 +22 4Dgifts 44 +23 nobody 46 +24 noaccess 48 +25 nobody 50 +26 rje 52 +27 changes 54 +28 dist 56 +29 man 58 +30 phoneca 60 diff --git a/src/tool/awk/testdata/output/t.match b/src/tool/awk/testdata/output/t.match new file mode 100644 index 0000000..4a2f0ec --- /dev/null +++ b/src/tool/awk/testdata/output/t.match @@ -0,0 +1,2 @@ +16693 bwk me + 7360 ava diff --git a/src/tool/awk/testdata/output/t.match1 b/src/tool/awk/testdata/output/t.match1 new file mode 100644 index 0000000..8b0731d --- /dev/null +++ b/src/tool/awk/testdata/output/t.match1 @@ -0,0 +1,4 @@ +/dev/rrp3: 1 10 + 1 122sec 1 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1 48 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 1 74 diff --git a/src/tool/awk/testdata/output/t.max b/src/tool/awk/testdata/output/t.max new file mode 100644 index 0000000..a0927f2 --- /dev/null +++ b/src/tool/awk/testdata/output/t.max @@ -0,0 +1 @@ +75 7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico diff --git a/src/tool/awk/testdata/output/t.mod b/src/tool/awk/testdata/output/t.mod new file mode 100644 index 0000000..3977023 --- /dev/null +++ b/src/tool/awk/testdata/output/t.mod @@ -0,0 +1,100 @@ +/dev/rrp3: +17379 mel +16116 ken him someone else +11895 lem +10252 rhm + 9748 a68 + 9190 pjw + 8895 dmr + 8372 bs + 7450 mb + 7273 jrv + 7063 greg + 6462 lck + 6211 lwf + 5373 jhc + 5167 doug + 3963 jca + 3796 moh + 3200 tbl + 2774 tgs + 2566 jck + 2479 sue + 1989 bsb + 1933 eag + 1590 tpc + 1370 rwm + 1205 eg + 1153 dl + 1031 cmb + 950 gdb + 898 usg + 822 daemon + 700 honey + 559 acs + 523 raf + 456 kec + 386 donmac + 348 ravi + 327 stars + 272 jcb + 253 tom + 248 haight + 222 chuck + 201 bill + 176 sys + 163 jon + 143 fox + 116 kab + 80 asc + 79 trt + 62 dwh + 54 lr + 45 dls + 44 mash + 43 vgl + 32 rab + 29 jns + 22 rob + 10 hm + 6 aed + 5 evp + 4 men + 3 ast + 3 lax + 2 blue + 2 njas + 1 ddwar + 1 jk + 1 low + 1 sidor +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +6b in * 2 2 System Tools Owner /bin /dev/null +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.monotone b/src/tool/awk/testdata/output/t.monotone new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/tool/awk/testdata/output/t.monotone @@ -0,0 +1 @@ + diff --git a/src/tool/awk/testdata/output/t.nameval b/src/tool/awk/testdata/output/t.nameval new file mode 100644 index 0000000..3def133 --- /dev/null +++ b/src/tool/awk/testdata/output/t.nameval @@ -0,0 +1,187 @@ + 21 +mel 17379 +bwk 16693 +ken 16116 +srb 15713 +lem 11895 +scj 10409 +rhm 10252 +shen 9853 +a68 9748 +sif 9492 +pjw 9190 +nls 8912 +dmr 8895 +cda 8491 +bs 8372 +llc 8252 +mb 7450 +ava 7360 +jrv 7273 +bin 7080 +greg 7063 +dict 6567 +lck 6462 +rje 6317 +lwf 6211 +dave 5671 +jhc 5373 +agf 5220 +doug 5167 +valerie 5007 +jca 3963 +bbs 3895 +moh 3796 +xchar 3481 +tbl 3200 +s 2845 +tgs 2774 +met 2641 +jck 2566 +port 2511 +sue 2479 +root 2127 +bsb 1989 +jeg 1989 +eag 1933 +pdj 1801 +tpc 1590 +cvw 1385 +rwm 1370 +avg 1316 +eg 1205 +jam 1194 +dl 1153 +lgm 1150 +cmb 1031 +jwr 1018 +gdb 950 +marc 931 +usg 898 +ggr 865 +daemon 822 +mihalis 803 +honey 700 +tad 624 +acs 559 +uucp 548 +raf 523 +adh 495 +kec 456 +craig 414 +donmac 386 +jj 375 +ravi 348 +drw 344 +stars 327 +mrg 288 +jcb 272 +ralph 263 +tom 253 +sjb 251 +haight 248 +sharon 224 +chuck 222 +dsj 213 +bill 201 +god 184 +sys 176 +meh 166 +jon 163 +dan 144 +fox 143 +dale 123 +kab 116 +buz 95 +asc 80 +jas 79 +trt 79 +wsb 64 +dwh 62 +ktf 56 +lr 54 +dlc 47 +dls 45 +jwf 45 +mash 44 +ars 43 +vgl 43 +jfo 37 +rab 32 +pd 31 +jns 29 +spm 25 +rob 22 +egb 15 +hm 10 +mhb 10 +aed 6 +cpb 6 +evp 5 +ber 4 +men 4 +mitch 4 +ast 3 +jfr 3 +lax 3 +nel 3 +blue 2 +jfk 2 +njas 2 +122sec 1 +ddwar 1 +gopi 1 +jk 1 +learn 1 +low 1 +nac 1 +sidor 1 +running 2 +V 3 +Diagnostics:/usr/diags:/bin/csh 4 +Tools 6 +Activity 21 +Files 10 +Spooler 11 +Database 13 +Killian 29 +Daemon 16 +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17 +User:/usr/demos:/bin/csh 18 +User:/usr/tutor:/bin/csh 19 +Space 20 +Account:/usr/people/guest:/bin/csh 21 +Account:/usr/people/4Dgifts:/bin/csh 224 +nobody 96 +no 24 +Owner:/usr/spool/rje: 26 +change 27 +distributions:/v/adm/dist:/v/bin/sh 28 +Manual 29 +call 30 +oot 1 +oottcsh 2 +ysadm 3 +iag 4 +aemon 5 +in 6 +ucp 8 +ys 9 +adm 10 +lp 11 +auditor 12 +dbadmin 13 +bootes 14 +cdjuke 15 +rfindd 16 +EZsetup 17 +demos 18 +tutor 19 +tour 20 +guest 21 +4Dgifts 22 +noaccess 24 +changes 27 +dist 28 +man 29 +phoneca 30 diff --git a/src/tool/awk/testdata/output/t.next b/src/tool/awk/testdata/output/t.next new file mode 100644 index 0000000..c91760b --- /dev/null +++ b/src/tool/awk/testdata/output/t.next @@ -0,0 +1,159 @@ +/dev/rrp3: + + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.not b/src/tool/awk/testdata/output/t.not new file mode 100644 index 0000000..7ac5b18 --- /dev/null +++ b/src/tool/awk/testdata/output/t.not @@ -0,0 +1,464 @@ +/dev/rrp3: +/dev/rrp3: + + +17379 mel +17379 mel +17379 mel +16693 bwk me +16116 ken him someone else +16116 ken him someone else +16116 ken him someone else +15713 srb +15713 srb +15713 srb +11895 lem +11895 lem +11895 lem +10409 scj +10409 scj +10409 scj +10252 rhm +10252 rhm +10252 rhm + 9853 shen + 9853 shen + 9853 shen + 9748 a68 + 9748 a68 + 9748 a68 + 9492 sif + 9492 sif + 9492 sif + 9190 pjw + 9190 pjw + 9190 pjw + 8912 nls + 8912 nls + 8912 nls + 8895 dmr + 8895 dmr + 8895 dmr + 8491 cda + 8491 cda + 8491 cda + 8372 bs + 8372 bs + 8372 bs + 8252 llc + 8252 llc + 8252 llc + 7450 mb + 7450 mb + 7450 mb + 7360 ava + 7360 ava + 7273 jrv + 7273 jrv + 7273 jrv + 7080 bin + 7080 bin + 7080 bin + 7063 greg + 7063 greg + 7063 greg + 6567 dict + 6567 dict + 6567 dict + 6462 lck + 6462 lck + 6462 lck + 6291 rje + 6291 rje + 6291 rje + 6211 lwf + 6211 lwf + 6211 lwf + 5671 dave + 5671 dave + 5671 dave + 5373 jhc + 5373 jhc + 5373 jhc + 5220 agf + 5220 agf + 5220 agf + 5167 doug + 5167 doug + 5167 doug + 5007 valerie + 5007 valerie + 5007 valerie + 3963 jca + 3963 jca + 3963 jca + 3895 bbs + 3895 bbs + 3895 bbs + 3796 moh + 3796 moh + 3796 moh + 3481 xchar + 3481 xchar + 3481 xchar + 3200 tbl + 3200 tbl + 3200 tbl + 2845 s + 2845 s + 2845 s + 2774 tgs + 2774 tgs + 2774 tgs + 2641 met + 2641 met + 2641 met + 2566 jck + 2566 jck + 2566 jck + 2511 port + 2511 port + 2511 port + 2479 sue + 2479 sue + 2479 sue + 2127 root + 2127 root + 2127 root + 1989 bsb + 1989 bsb + 1989 jeg + 1989 jeg + 1933 eag + 1933 eag + 1801 pdj + 1801 pdj + 1590 tpc + 1590 tpc + 1385 cvw + 1385 cvw + 1370 rwm + 1370 rwm + 1316 avg + 1316 avg + 1205 eg + 1205 eg + 1194 jam + 1194 jam + 1153 dl + 1153 dl + 1150 lgm + 1150 lgm + 1031 cmb + 1031 cmb + 1018 jwr + 1018 jwr + 950 gdb + 950 gdb + 931 marc + 931 marc + 898 usg + 898 usg + 865 ggr + 865 ggr + 822 daemon + 822 daemon + 803 mihalis + 803 mihalis + 700 honey + 700 honey + 624 tad + 624 tad + 559 acs + 559 acs + 541 uucp + 541 uucp + 523 raf + 523 raf + 495 adh + 495 adh + 456 kec + 456 kec + 414 craig + 414 craig + 386 donmac + 386 donmac + 375 jj + 375 jj + 348 ravi + 348 ravi + 344 drw + 344 drw + 327 stars + 327 stars + 288 mrg + 288 mrg + 272 jcb + 272 jcb + 263 ralph + 263 ralph + 253 tom + 253 tom + 251 sjb + 251 sjb + 248 haight + 248 haight + 224 sharon + 224 sharon + 222 chuck + 222 chuck + 213 dsj + 213 dsj + 201 bill + 201 bill + 184 god + 184 god + 176 sys + 176 sys + 166 meh + 166 meh + 163 jon + 163 jon + 144 dan + 144 dan + 143 fox + 143 fox + 123 dale + 123 dale + 116 kab + 116 kab + 95 buz + 95 buz + 80 asc + 80 asc + 79 jas + 79 jas + 79 trt + 79 trt + 64 wsb + 64 wsb + 62 dwh + 62 dwh + 56 ktf + 56 ktf + 54 lr + 54 lr + 47 dlc + 47 dlc + 45 dls + 45 dls + 45 jwf + 45 jwf + 44 mash + 44 mash + 43 ars + 43 ars + 43 vgl + 43 vgl + 37 jfo + 37 jfo + 32 rab + 32 rab + 31 pd + 31 pd + 29 jns + 29 jns + 25 spm + 25 spm + 22 rob + 22 rob + 15 egb + 15 egb + 10 hm + 10 hm + 10 mhb + 10 mhb + 6 aed + 6 aed + 6 cpb + 6 cpb + 5 evp + 5 evp + 4 ber + 4 ber + 4 men + 4 men + 4 mitch + 4 mitch + 3 ast + 3 ast + 3 jfr + 3 jfr + 3 lax + 3 lax + 3 nel + 3 nel + 2 blue + 2 blue + 2 jfk + 2 jfk + 2 njas + 2 njas + 1 122sec + 1 122sec + 1 ddwar + 1 ddwar + 1 gopi + 1 gopi + 1 jk + 1 jk + 1 learn + 1 learn + 1 low + 1 low + 1 nac + 1 nac + 1 sidor + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.null0 b/src/tool/awk/testdata/output/t.null0 new file mode 100644 index 0000000..75a5e4e --- /dev/null +++ b/src/tool/awk/testdata/output/t.null0 @@ -0,0 +1,937 @@ +b +d +e +$5 = null string +$5 = $6 +b +d +e +$1 = null string +$5 = null string +$1 = $3 +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 +b +d +e +$5 = null string +$5 = $6 diff --git a/src/tool/awk/testdata/output/t.ofmt b/src/tool/awk/testdata/output/t.ofmt new file mode 100644 index 0000000..58833eb --- /dev/null +++ b/src/tool/awk/testdata/output/t.ofmt @@ -0,0 +1,199 @@ +0 +0 +17379 +16693 +16116 +15713 +11895 +10409 +10252 +9853 +9748 +9492 +9190 +8912 +8895 +8491 +8372 +8252 +7450 +7360 +7273 +7080 +7063 +6567 +6462 +6291 +6211 +5671 +5373 +5220 +5167 +5007 +3963 +3895 +3796 +3481 +3200 +2845 +2774 +2641 +2566 +2511 +2479 +2127 +1989 +1989 +1933 +1801 +1590 +1385 +1370 +1316 +1205 +1194 +1153 +1150 +1031 +1018 +950 +931 +898 +865 +822 +803 +700 +624 +559 +541 +523 +495 +456 +414 +386 +375 +348 +344 +327 +288 +272 +263 +253 +251 +248 +224 +222 +213 +201 +184 +176 +166 +163 +144 +143 +123 +116 +95 +80 +79 +79 +64 +62 +56 +54 +47 +45 +45 +44 +43 +43 +37 +32 +31 +29 +25 +22 +15 +10 +10 +6 +6 +5 +4 +4 +4 +3 +3 +3 +3 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +224 +23 +24 +25 +26 +27 +28 +29 +30 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 diff --git a/src/tool/awk/testdata/output/t.ofs b/src/tool/awk/testdata/output/t.ofs new file mode 100644 index 0000000..70927eb --- /dev/null +++ b/src/tool/awk/testdata/output/t.ofs @@ -0,0 +1 @@ +/dev/rrp3: %% ##/dev/rrp3:## %% ####17379 %% mel##17379 mel##16693 %% bwk##16693 bwk me##16116 %% ken##16116 ken him someone else##15713 %% srb##15713 srb##11895 %% lem##11895 lem##10409 %% scj##10409 scj##10252 %% rhm##10252 rhm##9853 %% shen## 9853 shen##9748 %% a68## 9748 a68##9492 %% sif## 9492 sif##9190 %% pjw## 9190 pjw##8912 %% nls## 8912 nls##8895 %% dmr## 8895 dmr##8491 %% cda## 8491 cda##8372 %% bs## 8372 bs##8252 %% llc## 8252 llc##7450 %% mb## 7450 mb##7360 %% ava## 7360 ava##7273 %% jrv## 7273 jrv##7080 %% bin## 7080 bin##7063 %% greg## 7063 greg##6567 %% dict## 6567 dict##6462 %% lck## 6462 lck##6291 %% rje## 6291 rje##6211 %% lwf## 6211 lwf##5671 %% dave## 5671 dave##5373 %% jhc## 5373 jhc##5220 %% agf## 5220 agf##5167 %% doug## 5167 doug##5007 %% valerie## 5007 valerie##3963 %% jca## 3963 jca##3895 %% bbs## 3895 bbs##3796 %% moh## 3796 moh##3481 %% xchar## 3481 xchar##3200 %% tbl## 3200 tbl##2845 %% s## 2845 s##2774 %% tgs## 2774 tgs##2641 %% met## 2641 met##2566 %% jck## 2566 jck##2511 %% port## 2511 port##2479 %% sue## 2479 sue##2127 %% root## 2127 root##1989 %% bsb## 1989 bsb##1989 %% jeg## 1989 jeg##1933 %% eag## 1933 eag##1801 %% pdj## 1801 pdj##1590 %% tpc## 1590 tpc##1385 %% cvw## 1385 cvw##1370 %% rwm## 1370 rwm##1316 %% avg## 1316 avg##1205 %% eg## 1205 eg##1194 %% jam## 1194 jam##1153 %% dl## 1153 dl##1150 %% lgm## 1150 lgm##1031 %% cmb## 1031 cmb##1018 %% jwr## 1018 jwr##950 %% gdb## 950 gdb##931 %% marc## 931 marc##898 %% usg## 898 usg##865 %% ggr## 865 ggr##822 %% daemon## 822 daemon##803 %% mihalis## 803 mihalis##700 %% honey## 700 honey##624 %% tad## 624 tad##559 %% acs## 559 acs##541 %% uucp## 541 uucp##523 %% raf## 523 raf##495 %% adh## 495 adh##456 %% kec## 456 kec##414 %% craig## 414 craig##386 %% donmac## 386 donmac##375 %% jj## 375 jj##348 %% ravi## 348 ravi##344 %% drw## 344 drw##327 %% stars## 327 stars##288 %% mrg## 288 mrg##272 %% jcb## 272 jcb##263 %% ralph## 263 ralph##253 %% tom## 253 tom##251 %% sjb## 251 sjb##248 %% haight## 248 haight##224 %% sharon## 224 sharon##222 %% chuck## 222 chuck##213 %% dsj## 213 dsj##201 %% bill## 201 bill##184 %% god## 184 god##176 %% sys## 176 sys##166 %% meh## 166 meh##163 %% jon## 163 jon##144 %% dan## 144 dan##143 %% fox## 143 fox##123 %% dale## 123 dale##116 %% kab## 116 kab##95 %% buz## 95 buz##80 %% asc## 80 asc##79 %% jas## 79 jas##79 %% trt## 79 trt##64 %% wsb## 64 wsb##62 %% dwh## 62 dwh##56 %% ktf## 56 ktf##54 %% lr## 54 lr##47 %% dlc## 47 dlc##45 %% dls## 45 dls##45 %% jwf## 45 jwf##44 %% mash## 44 mash##43 %% ars## 43 ars##43 %% vgl## 43 vgl##37 %% jfo## 37 jfo##32 %% rab## 32 rab##31 %% pd## 31 pd##29 %% jns## 29 jns##25 %% spm## 25 spm##22 %% rob## 22 rob##15 %% egb## 15 egb##10 %% hm## 10 hm##10 %% mhb## 10 mhb##6 %% aed## 6 aed##6 %% cpb## 6 cpb##5 %% evp## 5 evp##4 %% ber## 4 ber##4 %% men## 4 men##4 %% mitch## 4 mitch##3 %% ast## 3 ast##3 %% jfr## 3 jfr##3 %% lax## 3 lax##3 %% nel## 3 nel##2 %% blue## 2 blue##2 %% jfk## 2 jfk##2 %% njas## 2 njas##1 %% 122sec## 1 122sec##1 %% ddwar## 1 ddwar##1 %% gopi## 1 gopi##1 %% jk## 1 jk##1 %% learn## 1 learn##1 %% low## 1 low##1 %% nac## 1 nac##1 %% sidor## 1 sidor##1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh %% ##1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh##2roottcsh:*:0:0:Super-User %% running##2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh##3sysadm:*:0:0:System %% V##3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh##4diag:*:0:996:Hardware %% Diagnostics:/usr/diags:/bin/csh##4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh##5daemon:*:1:1:daemons:/:/bin/sh %% ##5daemon:*:1:1:daemons:/:/bin/sh##6bin:*:2:2:System %% Tools##6bin:*:2:2:System Tools Owner:/bin:/dev/null##7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico %% ##7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico##8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: %% ##8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:##9sys:*:4:0:System %% Activity##9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh##10adm:*:5:3:Accounting %% Files##10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh##11lp:*:9:9:Print %% Spooler##11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh##12auditor:*:11:0:Audit %% Activity##12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh##13dbadmin:*:12:0:Security %% Database##13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh##14bootes:dcon:50:1:Tom %% Killian##14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp:##15cdjuke:dcon:51:1:Tom %% Killian##15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp:##16rfindd:*:66:1:Rfind %% Daemon##16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh##17EZsetup:*:992:998:System %% Setup:/var/sysadmdesktop/EZsetup:/bin/csh##17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh##18demos:*:993:997:Demonstration %% User:/usr/demos:/bin/csh##18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh##19tutor:*:994:997:Tutorial %% User:/usr/tutor:/bin/csh##19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh##20tour:*:995:997:IRIS %% Space##20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh##21guest:nfP4/Wpvio/Rw:998:998:Guest %% Account:/usr/people/guest:/bin/csh##21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh##224Dgifts:0nWRTZsOMt.:999:998:4Dgifts %% Account:/usr/people/4Dgifts:/bin/csh##224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh##23nobody:*:60001:60001:SVR4 %% nobody##23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null##24noaccess:*:60002:60002:uid %% no##24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null##25nobody:*:-2:-2:original %% nobody##25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null##26rje:*:8:8:RJE %% Owner:/usr/spool/rje:##26rje:*:8:8:RJE Owner:/usr/spool/rje:##27changes:*:11:11:system %% change##27changes:*:11:11:system change log:/:##28dist:sorry:9999:4:file %% distributions:/v/adm/dist:/v/bin/sh##28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh##29man:*:99:995:On-line %% Manual##29man:*:99:995:On-line Manual Owner:/:##30phoneca:*:991:991:phone %% call##30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh##1r %% oot##1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh##2r %% oottcsh##2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh##3s %% ysadm##3s ysadm * 0 0 System V Administration /usr/admin /bin/sh##4d %% iag##4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh##5d %% aemon##5d aemon * 1 1 daemons / /bin/sh##6b %% in##6b in * 2 2 System Tools Owner /bin /dev/null##7n %% uucp##7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico##8u %% ucp##8u ucp * 3 5 UUCP.Admin /usr/lib/uucp ##9s %% ys##9s ys * 4 0 System Activity Owner /usr/adm /bin/sh##10 %% adm##10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh##11 %% lp##11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh##12 %% auditor##12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh##13 %% dbadmin##13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh##14 %% bootes##14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp ##15 %% cdjuke##15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp ##16 %% rfindd##16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh##17 %% EZsetup##17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh##18 %% demos##18 demos * 993 997 Demonstration User /usr/demos /bin/csh##19 %% tutor##19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh##20 %% tour##20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh##21 %% guest##21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh##22 %% 4Dgifts##22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh##23 %% nobody##23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null##24 %% noaccess##24 noaccess * 60002 60002 uid no access /dev/null /dev/null##25 %% nobody##25 nobody * -2 -2 original nobody uid /dev/null /dev/null##26 %% rje##26 rje * 8 8 RJE Owner /usr/spool/rje ##27 %% changes##27 changes * 11 11 system change log / ##28 %% dist##28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh##29 %% man##29 man * 99 995 On-line Manual Owner / ##30 %% phoneca##30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh## \ No newline at end of file diff --git a/src/tool/awk/testdata/output/t.ors b/src/tool/awk/testdata/output/t.ors new file mode 100644 index 0000000..6dfa975 --- /dev/null +++ b/src/tool/awk/testdata/output/t.ors @@ -0,0 +1 @@ +/dev/rrp3: abc abc17379 mel abc16693 bwk meabc16116 ken himabc15713 srb abc11895 lem abc10409 scj abc10252 rhm abc9853 shen abc9748 a68 abc9492 sif abc9190 pjw abc8912 nls abc8895 dmr abc8491 cda abc8372 bs abc8252 llc abc7450 mb abc7360 ava abc7273 jrv abc7080 bin abc7063 greg abc6567 dict abc6462 lck abc6291 rje abc6211 lwf abc5671 dave abc5373 jhc abc5220 agf abc5167 doug abc5007 valerie abc3963 jca abc3895 bbs abc3796 moh abc3481 xchar abc3200 tbl abc2845 s abc2774 tgs abc2641 met abc2566 jck abc2511 port abc2479 sue abc2127 root abc1989 bsb abc1989 jeg abc1933 eag abc1801 pdj abc1590 tpc abc1385 cvw abc1370 rwm abc1316 avg abc1205 eg abc1194 jam abc1153 dl abc1150 lgm abc1031 cmb abc1018 jwr abc950 gdb abc931 marc abc898 usg abc865 ggr abc822 daemon abc803 mihalis abc700 honey abc624 tad abc559 acs abc541 uucp abc523 raf abc495 adh abc456 kec abc414 craig abc386 donmac abc375 jj abc348 ravi abc344 drw abc327 stars abc288 mrg abc272 jcb abc263 ralph abc253 tom abc251 sjb abc248 haight abc224 sharon abc222 chuck abc213 dsj abc201 bill abc184 god abc176 sys abc166 meh abc163 jon abc144 dan abc143 fox abc123 dale abc116 kab abc95 buz abc80 asc abc79 jas abc79 trt abc64 wsb abc62 dwh abc56 ktf abc54 lr abc47 dlc abc45 dls abc45 jwf abc44 mash abc43 ars abc43 vgl abc37 jfo abc32 rab abc31 pd abc29 jns abc25 spm abc22 rob abc15 egb abc10 hm abc10 mhb abc6 aed abc6 cpb abc5 evp abc4 ber abc4 men abc4 mitch abc3 ast abc3 jfr abc3 lax abc3 nel abc2 blue abc2 jfk abc2 njas abc1 122sec abc1 ddwar abc1 gopi abc1 jk abc1 learn abc1 low abc1 nac abc1 sidor abc1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh abc2roottcsh:*:0:0:Super-User running tcshabc3sysadm:*:0:0:System V Administration:/usr/admin:/bin/shabc4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh abc5daemon:*:1:1:daemons:/:/bin/sh abc6bin:*:2:2:System Tools Owner:/bin:/dev/nullabc7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico abc8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: abc9sys:*:4:0:System Activity Owner:/usr/adm:/bin/shabc10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/shabc11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/shabc12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/shabc13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/shabc14bootes:dcon:50:1:Tom Killian (DOabc15cdjuke:dcon:51:1:Tom Killian (DOabc16rfindd:*:66:1:Rfind Daemon andabc17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh abc18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh abc19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh abc20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/cshabc21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh abc224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh abc23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/nullabc24noaccess:*:60002:60002:uid no access:/dev/null:/dev/nullabc25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/nullabc26rje:*:8:8:RJE Owner:/usr/spool/rje: abc27changes:*:11:11:system change log:/:abc28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh abc29man:*:99:995:On-line Manual Owner:/:abc30phoneca:*:991:991:phone call logabc1r oot EMpNB8Zp56abc2r oottcsh *abc3s ysadm *abc4d iag *abc5d aemon *abc6b in *abc7n uucp BJnuQbAoabc8u ucp *abc9s ys *abc10 adm *abc11 lp *abc12 auditor *abc13 dbadmin *abc14 bootes dconabc15 cdjuke dconabc16 rfindd *abc17 EZsetup *abc18 demos *abc19 tutor *abc20 tour *abc21 guest nfP4/Wpvio/Rwabc22 4Dgifts 0nWRTZsOMt.abc23 nobody *abc24 noaccess *abc25 nobody *abc26 rje *abc27 changes *abc28 dist sorryabc29 man *abc30 phoneca *abc \ No newline at end of file diff --git a/src/tool/awk/testdata/output/t.pat b/src/tool/awk/testdata/output/t.pat new file mode 100644 index 0000000..254bce3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.pat @@ -0,0 +1,426 @@ +16693 bwk me +15713 srb + 9748 a68 + 9748 a68 + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8491 cda + 8491 cda + 8372 bs + 8372 bs + 8252 llc + 7450 mb + 7450 mb + 7360 ava + 7360 ava + 7360 ava + 7273 jrv + 7080 bin + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5671 dave + 5671 dave + 5373 jhc + 5220 agf + 5220 agf + 5220 agf + 5167 doug + 5007 valerie + 5007 valerie + 5007 valerie + 3963 jca + 3963 jca + 3963 jca + 3895 bbs + 3895 bbs + 3796 moh + 3481 xchar + 3481 xchar + 3481 xchar + 3200 tbl + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 bsb + 1989 jeg + 1933 eag + 1933 eag + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1316 avg + 1316 avg + 1205 eg + 1194 jam + 1194 jam + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1031 cmb + 1018 jwr + 950 gdb + 950 gdb + 931 marc + 931 marc + 931 marc + 898 usg + 865 ggr + 822 daemon + 822 daemon + 822 daemon + 803 mihalis + 803 mihalis + 803 mihalis + 700 honey + 624 tad + 624 tad + 624 tad + 559 acs + 559 acs + 559 acs + 541 uucp + 523 raf + 523 raf + 523 raf + 495 adh + 495 adh + 495 adh + 456 kec + 414 craig + 414 craig + 414 craig + 386 donmac + 386 donmac + 386 donmac + 375 jj + 348 ravi + 348 ravi + 348 ravi + 344 drw + 327 stars + 327 stars + 327 stars + 288 mrg + 272 jcb + 272 jcb + 263 ralph + 263 ralph + 263 ralph + 253 tom + 251 sjb + 251 sjb + 248 haight + 248 haight + 248 haight + 224 sharon + 224 sharon + 224 sharon + 222 chuck + 213 dsj + 201 bill + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 144 dan + 144 dan + 143 fox + 123 dale + 123 dale + 123 dale + 116 kab + 116 kab + 116 kab + 116 kab + 95 buz + 95 buz + 80 asc + 80 asc + 80 asc + 79 jas + 79 jas + 79 jas + 79 trt + 64 wsb + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 44 mash + 44 mash + 43 ars + 43 ars + 43 ars + 43 vgl + 37 jfo + 32 rab + 32 rab + 32 rab + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 22 rob + 15 egb + 15 egb + 10 hm + 10 mhb + 10 mhb + 6 aed + 6 aed + 6 aed + 6 cpb + 6 cpb + 5 evp + 4 ber + 4 ber + 4 men + 4 mitch + 3 ast + 3 ast + 3 ast + 3 jfr + 3 lax + 3 lax + 3 lax + 3 nel + 2 blue + 2 blue + 2 jfk + 2 njas + 2 njas + 2 njas + 1 122sec + 1 ddwar + 1 ddwar + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 learn + 1 learn + 1 low + 1 nac + 1 nac + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.pipe b/src/tool/awk/testdata/output/t.pipe new file mode 100644 index 0000000..9b16a1f --- /dev/null +++ b/src/tool/awk/testdata/output/t.pipe @@ -0,0 +1 @@ +read /usr/bwk/awk/t.pipe diff --git a/src/tool/awk/testdata/output/t.pp b/src/tool/awk/testdata/output/t.pp new file mode 100644 index 0000000..c17aa38 --- /dev/null +++ b/src/tool/awk/testdata/output/t.pp @@ -0,0 +1,130 @@ + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 7360 ava + 7273 jrv + 7080 bin + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3481 xchar + 3200 tbl + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 144 dan + 143 fox + 123 dale + 116 kab + 80 asc + 79 jas + 79 trt + 64 wsb + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 6 aed + 6 cpb + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.pp1 b/src/tool/awk/testdata/output/t.pp1 new file mode 100644 index 0000000..430f532 --- /dev/null +++ b/src/tool/awk/testdata/output/t.pp1 @@ -0,0 +1,3 @@ +bwk 16693 +pjw 9190 +ava 7360 diff --git a/src/tool/awk/testdata/output/t.pp2 b/src/tool/awk/testdata/output/t.pp2 new file mode 100644 index 0000000..c40009e --- /dev/null +++ b/src/tool/awk/testdata/output/t.pp2 @@ -0,0 +1,76 @@ +3: 17379 mel +1: 16693 bwk me +2: 16693 bwk me +3: 16693 bwk me +1: 16116 ken him someone else +2: 16116 ken him someone else +3: 16116 ken him someone else +1: 15713 srb +2: 15713 srb +3: 15713 srb +1: 11895 lem +2: 11895 lem +3: 11895 lem +1: 10409 scj +2: 10409 scj +3: 10409 scj +2: 10252 rhm +3: 10252 rhm +2: 9853 shen +3: 9853 shen +2: 9748 a68 +3: 9748 a68 +2: 9492 sif +3: 9492 sif +2: 9190 pjw +3: 9190 pjw +2: 8912 nls +3: 8912 nls +2: 8895 dmr +3: 8895 dmr +2: 8491 cda +3: 8491 cda +2: 8372 bs +3: 8372 bs +2: 8252 llc +3: 8252 llc +2: 7450 mb +3: 7450 mb +2: 7360 ava +3: 7360 ava +2: 7273 jrv +3: 7273 jrv +2: 7080 bin +3: 7080 bin +2: 7063 greg +3: 7063 greg +2: 6567 dict +3: 6567 dict +2: 6462 lck +3: 6462 lck +2: 6291 rje +3: 6291 rje +2: 6211 lwf +3: 6211 lwf +2: 5671 dave +3: 5671 dave +2: 5373 jhc +3: 5373 jhc +2: 5220 agf +3: 5220 agf +2: 5167 doug +3: 5167 doug +2: 5007 valerie +2: 3963 jca +2: 3895 bbs +2: 3796 moh +2: 3481 xchar +2: 3200 tbl +2: 2845 s +2: 2774 tgs +2: 2641 met +2: 2566 jck +2: 2511 port +2: 2479 sue +2: 2127 root +2: 1989 bsb diff --git a/src/tool/awk/testdata/output/t.printf b/src/tool/awk/testdata/output/t.printf new file mode 100644 index 0000000..31994f4 --- /dev/null +++ b/src/tool/awk/testdata/output/t.printf @@ -0,0 +1,199 @@ +%: ... /dev/rrp3: 0 +%: ... 0 +%: mel ... 17379 17379 mel +%: bwk ... 16693 16693 bwk +%: ken ... 16116 16116 ken +%: srb ... 15713 15713 srb +%: lem ... 11895 11895 lem +%: scj ... 10409 10409 scj +%: rhm ... 10252 10252 rhm +%: shen ... 9853 9853 shen +%: a68 ... 9748 9748 a68 +%: sif ... 9492 9492 sif +%: pjw ... 9190 9190 pjw +%: nls ... 8912 8912 nls +%: dmr ... 8895 8895 dmr +%: cda ... 8491 8491 cda +%: bs ... 8372 8372 bs +%: llc ... 8252 8252 llc +%: mb ... 7450 7450 mb +%: ava ... 7360 7360 ava +%: jrv ... 7273 7273 jrv +%: bin ... 7080 7080 bin +%: greg ... 7063 7063 greg +%: dict ... 6567 6567 dict +%: lck ... 6462 6462 lck +%: rje ... 6291 6291 rje +%: lwf ... 6211 6211 lwf +%: dave ... 5671 5671 dave +%: jhc ... 5373 5373 jhc +%: agf ... 5220 5220 agf +%: doug ... 5167 5167 doug +%: valerie ... 5007 5007 valerie +%: jca ... 3963 3963 jca +%: bbs ... 3895 3895 bbs +%: moh ... 3796 3796 moh +%: xchar ... 3481 3481 xchar +%: tbl ... 3200 3200 tbl +%: s ... 2845 2845 s +%: tgs ... 2774 2774 tgs +%: met ... 2641 2641 met +%: jck ... 2566 2566 jck +%: port ... 2511 2511 port +%: sue ... 2479 2479 sue +%: root ... 2127 2127 root +%: bsb ... 1989 1989 bsb +%: jeg ... 1989 1989 jeg +%: eag ... 1933 1933 eag +%: pdj ... 1801 1801 pdj +%: tpc ... 1590 1590 tpc +%: cvw ... 1385 1385 cvw +%: rwm ... 1370 1370 rwm +%: avg ... 1316 1316 avg +%: eg ... 1205 1205 eg +%: jam ... 1194 1194 jam +%: dl ... 1153 1153 dl +%: lgm ... 1150 1150 lgm +%: cmb ... 1031 1031 cmb +%: jwr ... 1018 1018 jwr +%: gdb ... 950 950 gdb +%: marc ... 931 931 marc +%: usg ... 898 898 usg +%: ggr ... 865 865 ggr +%: daemon ... 822 822 daemon +%: mihalis ... 803 803 mihalis +%: honey ... 700 700 honey +%: tad ... 624 624 tad +%: acs ... 559 559 acs +%: uucp ... 541 541 uucp +%: raf ... 523 523 raf +%: adh ... 495 495 adh +%: kec ... 456 456 kec +%: craig ... 414 414 craig +%: donmac ... 386 386 donmac +%: jj ... 375 375 jj +%: ravi ... 348 348 ravi +%: drw ... 344 344 drw +%: stars ... 327 327 stars +%: mrg ... 288 288 mrg +%: jcb ... 272 272 jcb +%: ralph ... 263 263 ralph +%: tom ... 253 253 tom +%: sjb ... 251 251 sjb +%: haight ... 248 248 haight +%: sharon ... 224 224 sharon +%: chuck ... 222 222 chuck +%: dsj ... 213 213 dsj +%: bill ... 201 201 bill +%: god ... 184 184 god +%: sys ... 176 176 sys +%: meh ... 166 166 meh +%: jon ... 163 163 jon +%: dan ... 144 144 dan +%: fox ... 143 143 fox +%: dale ... 123 123 dale +%: kab ... 116 116 kab +%: buz ... 95 95 buz +%: asc ... 80 80 asc +%: jas ... 79 79 jas +%: trt ... 79 79 trt +%: wsb ... 64 64 wsb +%: dwh ... 62 62 dwh +%: ktf ... 56 56 ktf +%: lr ... 54 54 lr +%: dlc ... 47 47 dlc +%: dls ... 45 45 dls +%: jwf ... 45 45 jwf +%: mash ... 44 44 mash +%: ars ... 43 43 ars +%: vgl ... 43 43 vgl +%: jfo ... 37 37 jfo +%: rab ... 32 32 rab +%: pd ... 31 31 pd +%: jns ... 29 29 jns +%: spm ... 25 25 spm +%: rob ... 22 22 rob +%: egb ... 15 15 egb +%: hm ... 10 10 hm +%: mhb ... 10 10 mhb +%: aed ... 6 6 aed +%: cpb ... 6 6 cpb +%: evp ... 5 5 evp +%: ber ... 4 4 ber +%: men ... 4 4 men +%: mitch ... 4 4 mitch +%: ast ... 3 3 ast +%: jfr ... 3 3 jfr +%: lax ... 3 3 lax +%: nel ... 3 3 nel +%: blue ... 2 2 blue +%: jfk ... 2 2 jfk +%: njas ... 2 2 njas +%: 122sec ... 1 1 122sec +%: ddwar ... 1 1 ddwar +%: gopi ... 1 1 gopi +%: jk ... 1 1 jk +%: learn ... 1 1 learn +%: low ... 1 1 low +%: nac ... 1 1 nac +%: sidor ... 1 1 sidor +%: ... 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1 +%: running ... 2roottcsh:*:0:0:Super-User 2 running +%: V ... 3sysadm:*:0:0:System 3 V +%: Diagnostics:/usr/diags:/bin/csh ... 4diag:*:0:996:Hardware 4 Diagnostic +%: ... 5daemon:*:1:1:daemons:/:/bin/sh 5 +%: Tools ... 6bin:*:2:2:System 6 Tools +%: ... 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7 +%: ... 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8 +%: Activity ... 9sys:*:4:0:System 9 Activity +%: Files ... 10adm:*:5:3:Accounting 10 Files +%: Spooler ... 11lp:*:9:9:Print 11 Spooler +%: Activity ... 12auditor:*:11:0:Audit 12 Activity +%: Database ... 13dbadmin:*:12:0:Security 13 Database +%: Killian ... 14bootes:dcon:50:1:Tom 14 Killian +%: Killian ... 15cdjuke:dcon:51:1:Tom 15 Killian +%: Daemon ... 16rfindd:*:66:1:Rfind 16 Daemon +%: Setup:/var/sysadmdesktop/EZsetup:/bin/csh ... 17EZsetup:*:992:998:System 17 Setup:/var +%: User:/usr/demos:/bin/csh ... 18demos:*:993:997:Demonstration 18 User:/usr/ +%: User:/usr/tutor:/bin/csh ... 19tutor:*:994:997:Tutorial 19 User:/usr/ +%: Space ... 20tour:*:995:997:IRIS 20 Space +%: Account:/usr/people/guest:/bin/csh ... 21guest:nfP4/Wpvio/Rw:998:998:Guest 21 Account:/u +%: Account:/usr/people/4Dgifts:/bin/csh ... 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 224 Account:/u +%: nobody ... 23nobody:*:60001:60001:SVR4 23 nobody +%: no ... 24noaccess:*:60002:60002:uid 24 no +%: nobody ... 25nobody:*:-2:-2:original 25 nobody +%: Owner:/usr/spool/rje: ... 26rje:*:8:8:RJE 26 Owner:/usr +%: change ... 27changes:*:11:11:system 27 change +%: distributions:/v/adm/dist:/v/bin/sh ... 28dist:sorry:9999:4:file 28 distributi +%: Manual ... 29man:*:99:995:On-line 29 Manual +%: call ... 30phoneca:*:991:991:phone 30 call +%: oot ... 1r 1 oot +%: oottcsh ... 2r 2 oottcsh +%: ysadm ... 3s 3 ysadm +%: iag ... 4d 4 iag +%: aemon ... 5d 5 aemon +%: in ... 6b 6 in +%: uucp ... 7n 7 uucp +%: ucp ... 8u 8 ucp +%: ys ... 9s 9 ys +%: adm ... 10 10 adm +%: lp ... 11 11 lp +%: auditor ... 12 12 auditor +%: dbadmin ... 13 13 dbadmin +%: bootes ... 14 14 bootes +%: cdjuke ... 15 15 cdjuke +%: rfindd ... 16 16 rfindd +%: EZsetup ... 17 17 EZsetup +%: demos ... 18 18 demos +%: tutor ... 19 19 tutor +%: tour ... 20 20 tour +%: guest ... 21 21 guest +%: 4Dgifts ... 22 22 4Dgifts +%: nobody ... 23 23 nobody +%: noaccess ... 24 24 noaccess +%: nobody ... 25 25 nobody +%: rje ... 26 26 rje +%: changes ... 27 27 changes +%: dist ... 28 28 dist +%: man ... 29 29 man +%: phoneca ... 30 30 phoneca diff --git a/src/tool/awk/testdata/output/t.printf2 b/src/tool/awk/testdata/output/t.printf2 new file mode 100644 index 0000000..41e7db1 --- /dev/null +++ b/src/tool/awk/testdata/output/t.printf2 @@ -0,0 +1,202 @@ +%: ... /dev/rrp3: 0 0 0 0 / <00> +%: ... 0 0 0 0 <00> <00> +%: mel ... 17379 17379 mel 0 0 0 ã m +%: bwk ... 16693 16693 bwk 0 0 0 5 b +%: ken ... 16116 16116 ken 0 0 0 ô k +%: srb ... 15713 15713 srb 0 0 0 a s +%: lem ... 11895 11895 lem 0 0 0 w l +%: scj ... 10409 10409 scj 0 0 0 © s +%: rhm ... 10252 10252 rhm 0 0 0 r +%: shen ... 9853 9853 shen 0 0 0 } s +%: a68 ... 9748 9748 a68 0 0 0  a +%: sif ... 9492 9492 sif 0 0 0  s +%: pjw ... 9190 9190 pjw 0 0 0 æ p +%: nls ... 8912 8912 nls 0 0 0 Ð n +%: dmr ... 8895 8895 dmr 0 0 0 ¿ d +%: cda ... 8491 8491 cda 0 0 0 + c +%: bs ... 8372 8372 bs 0 0 0 ´ b +%: llc ... 8252 8252 llc 0 0 0 < l +%: mb ... 7450 7450 mb 0 0 0  m +%: ava ... 7360 7360 ava 0 0 0 À a +%: jrv ... 7273 7273 jrv 0 0 0 i j +%: bin ... 7080 7080 bin 0 0 0 ¨ b +%: greg ... 7063 7063 greg 0 0 0 — g +%: dict ... 6567 6567 dict 0 0 0 § d +%: lck ... 6462 6462 lck 0 0 0 > l +%: rje ... 6291 6291 rje 0 0 0 “ r +%: lwf ... 6211 6211 lwf 0 0 0 C l +%: dave ... 5671 5671 dave 0 0 0 ' d +%: jhc ... 5373 5373 jhc 0 0 0 ý j +%: agf ... 5220 5220 agf 0 0 0 d a +%: doug ... 5167 5167 doug 0 0 0 / d +%: valerie ... 5007 5007 valerie 0 0 0 v +%: jca ... 3963 3963 jca 0 0 0 { j +%: bbs ... 3895 3895 bbs 0 0 0 7 b +%: moh ... 3796 3796 moh 0 0 0 Ô m +%: xchar ... 3481 3481 xchar 0 0 0 ™ x +%: tbl ... 3200 3200 tbl 0 0 0 € t +%: s ... 2845 2845 s 0 0 0  s +%: tgs ... 2774 2774 tgs 0 0 0 Ö t +%: met ... 2641 2641 met 0 0 0 Q m +%: jck ... 2566 2566 jck 0 0 0  j +%: port ... 2511 2511 port 0 0 0 Ï p +%: sue ... 2479 2479 sue 0 0 0 ¯ s +%: root ... 2127 2127 root 0 0 0 O r +%: bsb ... 1989 1989 bsb 0 0 0 Å b +%: jeg ... 1989 1989 jeg 0 0 0 Å j +%: eag ... 1933 1933 eag 0 0 0 e +%: pdj ... 1801 1801 pdj 0 0 0 p +%: tpc ... 1590 1590 tpc 0 0 0 6 t +%: cvw ... 1385 1385 cvw 0 0 0 i c +%: rwm ... 1370 1370 rwm 0 0 0 Z r +%: avg ... 1316 1316 avg 0 0 0 $ a +%: eg ... 1205 1205 eg 0 0 0 µ e +%: jam ... 1194 1194 jam 0 0 0 ª j +%: dl ... 1153 1153 dl 0 0 0 d +%: lgm ... 1150 1150 lgm 0 0 0 ~ l +%: cmb ... 1031 1031 cmb 0 0 0  c +%: jwr ... 1018 1018 jwr 0 0 0 ú j +%: gdb ... 950 950 gdb 0 0 0 ¶ g +%: marc ... 931 931 marc 0 0 0 £ m +%: usg ... 898 898 usg 0 0 0 ‚ u +%: ggr ... 865 865 ggr 0 0 0 a g +%: daemon ... 822 822 daemon 0 0 0 6 d +%: mihalis ... 803 803 mihalis 0 0 0 # m +%: honey ... 700 700 honey 0 0 0 ¼ h +%: tad ... 624 624 tad 0 0 0 p t +%: acs ... 559 559 acs 0 0 0 / a +%: uucp ... 541 541 uucp 0 0 0  u +%: raf ... 523 523 raf 0 0 0 r +%: adh ... 495 495 adh 0 0 0 ï a +%: kec ... 456 456 kec 0 0 0 È k +%: craig ... 414 414 craig 0 0 0 ž c +%: donmac ... 386 386 donmac 0 0 0 ‚ d +%: jj ... 375 375 jj 0 0 0 w j +%: ravi ... 348 348 ravi 0 0 0 \ r +%: drw ... 344 344 drw 0 0 0 X d +%: stars ... 327 327 stars 0 0 0 G s +%: mrg ... 288 288 mrg 0 0 0 m +%: jcb ... 272 272 jcb 0 0 0  j +%: ralph ... 263 263 ralph 0 0 0  r +%: tom ... 253 253 tom 0 0 0 ý t +%: sjb ... 251 251 sjb 0 0 0 û s +%: haight ... 248 248 haight 0 0 0 ø h +%: sharon ... 224 224 sharon 0 0 0 à s +%: chuck ... 222 222 chuck 0 0 0 Þ c +%: dsj ... 213 213 dsj 0 0 0 Õ d +%: bill ... 201 201 bill 0 0 0 É b +%: god ... 184 184 god 0 0 0 ¸ g +%: sys ... 176 176 sys 0 0 0 ° s +%: meh ... 166 166 meh 0 0 0 ¦ m +%: jon ... 163 163 jon 0 0 0 £ j +%: dan ... 144 144 dan 0 0 0 d +%: fox ... 143 143 fox 0 0 0 f +%: dale ... 123 123 dale 0 0 0 { d +%: kab ... 116 116 kab 0 0 0 t k +%: buz ... 95 95 buz 0 0 0 _ b +%: asc ... 80 80 asc 0 0 0 P a +%: jas ... 79 79 jas 0 0 0 O j +%: trt ... 79 79 trt 0 0 0 O t +%: wsb ... 64 64 wsb 0 0 0 @ w +%: dwh ... 62 62 dwh 0 0 0 > d +%: ktf ... 56 56 ktf 0 0 0 8 k +%: lr ... 54 54 lr 0 0 0 6 l +%: dlc ... 47 47 dlc 0 0 0 / d +%: dls ... 45 45 dls 0 0 0 - d +%: jwf ... 45 45 jwf 0 0 0 - j +%: mash ... 44 44 mash 0 0 0 , m +%: ars ... 43 43 ars 0 0 0 + a +%: vgl ... 43 43 vgl 0 0 0 + v +%: jfo ... 37 37 jfo 0 0 0 % j +%: rab ... 32 32 rab 0 0 0 r +%: pd ... 31 31 pd 0 0 0  p +%: jns ... 29 29 jns 0 0 0  j +%: spm ... 25 25 spm 0 0 0  s +%: rob ... 22 22 rob 0 0 0  r +%: egb ... 15 15 egb 0 0 0  e +%: hm ... 10 10 hm 0 0 0 + h +%: mhb ... 10 10 mhb 0 0 0 + m +%: aed ... 6 6 aed 0 0 0  a +%: cpb ... 6 6 cpb 0 0 0  c +%: evp ... 5 5 evp 0 0 0  e +%: ber ... 4 4 ber 0 0 0  b +%: men ... 4 4 men 0 0 0  m +%: mitch ... 4 4 mitch 0 0 0  m +%: ast ... 3 3 ast 0 0 0  a +%: jfr ... 3 3 jfr 0 0 0  j +%: lax ... 3 3 lax 0 0 0  l +%: nel ... 3 3 nel 0 0 0  n +%: blue ... 2 2 blue 0 0 0  b +%: jfk ... 2 2 jfk 0 0 0  j +%: njas ... 2 2 njas 0 0 0  n +%: 122sec ... 1 1 122sec 0 0 0  1 +%: ddwar ... 1 1 ddwar 0 0 0  d +%: gopi ... 1 1 gopi 0 0 0  g +%: jk ... 1 1 jk 0 0 0  j +%: learn ... 1 1 learn 0 0 0  l +%: low ... 1 1 low 0 0 0  l +%: nac ... 1 1 nac 0 0 0  n +%: sidor ... 1 1 sidor 0 0 0  s +%: ... 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1 0 0 0 1 <00> +%: running ... 2roottcsh:*:0:0:Super-User 2 running 0 0 0 2 r +%: V ... 3sysadm:*:0:0:System 3 V 0 0 0 3 V +%: Diagnostics:/usr/diags:/bin/csh ... 4diag:*:0:996:Hardware 4 Diagnostic 0 0 0 4 D +%: ... 5daemon:*:1:1:daemons:/:/bin/sh 5 0 0 0 5 <00> +%: Tools ... 6bin:*:2:2:System 6 Tools 0 0 0 6 T +%: ... 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7 0 0 0 7 <00> +%: ... 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8 0 0 0 8 <00> +%: Activity ... 9sys:*:4:0:System 9 Activity 0 0 0 9 A +%: Files ... 10adm:*:5:3:Accounting 10 Files 0 0 0 1 F +%: Spooler ... 11lp:*:9:9:Print 11 Spooler 0 0 0 1 S +%: Activity ... 12auditor:*:11:0:Audit 12 Activity 0 0 0 1 A +%: Database ... 13dbadmin:*:12:0:Security 13 Database 0 0 0 1 D +%: Killian ... 14bootes:dcon:50:1:Tom 14 Killian 0 0 0 1 K +%: Killian ... 15cdjuke:dcon:51:1:Tom 15 Killian 0 0 0 1 K +%: Daemon ... 16rfindd:*:66:1:Rfind 16 Daemon 0 0 0 1 D +%: Setup:/var/sysadmdesktop/EZsetup:/bin/csh ... 17EZsetup:*:992:998:System 17 Setup:/var 0 0 0 1 S +%: User:/usr/demos:/bin/csh ... 18demos:*:993:997:Demonstration 18 User:/usr/ 0 0 0 1 U +%: User:/usr/tutor:/bin/csh ... 19tutor:*:994:997:Tutorial 19 User:/usr/ 0 0 0 1 U +%: Space ... 20tour:*:995:997:IRIS 20 Space 0 0 0 2 S +%: Account:/usr/people/guest:/bin/csh ... 21guest:nfP4/Wpvio/Rw:998:998:Guest 21 Account:/u 0 0 0 2 A +%: Account:/usr/people/4Dgifts:/bin/csh ... 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts 224 Account:/u 0 0 0 2 A +%: nobody ... 23nobody:*:60001:60001:SVR4 23 nobody 0 0 0 2 n +%: no ... 24noaccess:*:60002:60002:uid 24 no 0 0 0 2 n +%: nobody ... 25nobody:*:-2:-2:original 25 nobody 0 0 0 2 n +%: Owner:/usr/spool/rje: ... 26rje:*:8:8:RJE 26 Owner:/usr 0 0 0 2 O +%: change ... 27changes:*:11:11:system 27 change 0 0 0 2 c +%: distributions:/v/adm/dist:/v/bin/sh ... 28dist:sorry:9999:4:file 28 distributi 0 0 0 2 d +%: Manual ... 29man:*:99:995:On-line 29 Manual 0 0 0 2 M +%: call ... 30phoneca:*:991:991:phone 30 call 0 0 0 3 c +%: oot ... 1r 1 oot 0 0 0 1 o +%: oottcsh ... 2r 2 oottcsh 0 0 0 2 o +%: ysadm ... 3s 3 ysadm 0 0 0 3 y +%: iag ... 4d 4 iag 0 0 0 4 i +%: aemon ... 5d 5 aemon 0 0 0 5 a +%: in ... 6b 6 in 0 0 0 6 i +%: uucp ... 7n 7 uucp 0 0 0 7 u +%: ucp ... 8u 8 ucp 0 0 0 8 u +%: ys ... 9s 9 ys 0 0 0 9 y +%: adm ... 10 10 adm 0 0 0 + a +%: lp ... 11 11 lp 0 0 0 l +%: auditor ... 12 12 auditor 0 0 0 a +%: dbadmin ... 13 13 dbadmin 0 0 0 d +%: bootes ... 14 14 bootes 0 0 0  b +%: cdjuke ... 15 15 cdjuke 0 0 0  c +%: rfindd ... 16 16 rfindd 0 0 0  r +%: EZsetup ... 17 17 EZsetup 0 0 0  E +%: demos ... 18 18 demos 0 0 0  d +%: tutor ... 19 19 tutor 0 0 0  t +%: tour ... 20 20 tour 0 0 0  t +%: guest ... 21 21 guest 0 0 0  g +%: 4Dgifts ... 22 22 4Dgifts 0 0 0  4 +%: nobody ... 23 23 nobody 0 0 0  n +%: noaccess ... 24 24 noaccess 0 0 0  n +%: nobody ... 25 25 nobody 0 0 0  n +%: rje ... 26 26 rje 0 0 0  r +%: changes ... 27 27 changes 0 0 0  c +%: dist ... 28 28 dist 0 0 0  d +%: man ... 29 29 man 0 0 0  m +%: phoneca ... 30 30 phoneca 0 0 0  p diff --git a/src/tool/awk/testdata/output/t.quote b/src/tool/awk/testdata/output/t.quote new file mode 100644 index 0000000..2f0cf56 --- /dev/null +++ b/src/tool/awk/testdata/output/t.quote @@ -0,0 +1,199 @@ +"/dev/rrp3:" +"" +"17379" +"16693" +"16116" +"15713" +"11895" +"10409" +"10252" +"9853" +"9748" +"9492" +"9190" +"8912" +"8895" +"8491" +"8372" +"8252" +"7450" +"7360" +"7273" +"7080" +"7063" +"6567" +"6462" +"6291" +"6211" +"5671" +"5373" +"5220" +"5167" +"5007" +"3963" +"3895" +"3796" +"3481" +"3200" +"2845" +"2774" +"2641" +"2566" +"2511" +"2479" +"2127" +"1989" +"1989" +"1933" +"1801" +"1590" +"1385" +"1370" +"1316" +"1205" +"1194" +"1153" +"1150" +"1031" +"1018" +"950" +"931" +"898" +"865" +"822" +"803" +"700" +"624" +"559" +"541" +"523" +"495" +"456" +"414" +"386" +"375" +"348" +"344" +"327" +"288" +"272" +"263" +"253" +"251" +"248" +"224" +"222" +"213" +"201" +"184" +"176" +"166" +"163" +"144" +"143" +"123" +"116" +"95" +"80" +"79" +"79" +"64" +"62" +"56" +"54" +"47" +"45" +"45" +"44" +"43" +"43" +"37" +"32" +"31" +"29" +"25" +"22" +"15" +"10" +"10" +"6" +"6" +"5" +"4" +"4" +"4" +"3" +"3" +"3" +"3" +"2" +"2" +"2" +"1" +"1" +"1" +"1" +"1" +"1" +"1" +"1" +"1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh" +"2roottcsh:*:0:0:Super-User" +"3sysadm:*:0:0:System" +"4diag:*:0:996:Hardware" +"5daemon:*:1:1:daemons:/:/bin/sh" +"6bin:*:2:2:System" +"7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico" +"8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:" +"9sys:*:4:0:System" +"10adm:*:5:3:Accounting" +"11lp:*:9:9:Print" +"12auditor:*:11:0:Audit" +"13dbadmin:*:12:0:Security" +"14bootes:dcon:50:1:Tom" +"15cdjuke:dcon:51:1:Tom" +"16rfindd:*:66:1:Rfind" +"17EZsetup:*:992:998:System" +"18demos:*:993:997:Demonstration" +"19tutor:*:994:997:Tutorial" +"20tour:*:995:997:IRIS" +"21guest:nfP4/Wpvio/Rw:998:998:Guest" +"224Dgifts:0nWRTZsOMt.:999:998:4Dgifts" +"23nobody:*:60001:60001:SVR4" +"24noaccess:*:60002:60002:uid" +"25nobody:*:-2:-2:original" +"26rje:*:8:8:RJE" +"27changes:*:11:11:system" +"28dist:sorry:9999:4:file" +"29man:*:99:995:On-line" +"30phoneca:*:991:991:phone" +"1r" +"2r" +"3s" +"4d" +"5d" +"6b" +"7n" +"8u" +"9s" +"10" +"11" +"12" +"13" +"14" +"15" +"16" +"17" +"18" +"19" +"20" +"21" +"22" +"23" +"24" +"25" +"26" +"27" +"28" +"29" +"30" diff --git a/src/tool/awk/testdata/output/t.randk b/src/tool/awk/testdata/output/t.randk new file mode 100644 index 0000000..3775708 --- /dev/null +++ b/src/tool/awk/testdata/output/t.randk @@ -0,0 +1,203 @@ +1 +1 +1 +3 +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 +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 +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 +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 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +2 +1 +1 +2 +1 +2 +1 +2 +2 +2 +1 +2 +1 +2 +1 +1 +1 +2 +1 +1 +2 +1 +2 +1 +1 +1 +2 +1 +2 +2 +1 +3 +3 +5 +3 +5 +3 +4 +4 +4 +4 +3 +4 +5 +2 +6 +2 +6 +1 +2 +1 +5 +5 +4 +1 +2 +3 +4 +3 +3 +5 diff --git a/src/tool/awk/testdata/output/t.re1 b/src/tool/awk/testdata/output/t.re1 new file mode 100644 index 0000000..82be03d --- /dev/null +++ b/src/tool/awk/testdata/output/t.re1 @@ -0,0 +1,389 @@ +/dev/rrp3: matches /[a-cg-j1-3]/ +/dev/rrp3: matches /[^aeiou]/ +17379 mel matches /[a-cg-j1-3]/ +17379 mel matches /[^aeiou]/ +16693 bwk me matches /[a-cg-j1-3]/ +16693 bwk me matches /[^aeiou]/ +16116 ken him someone else matches /[a-cg-j1-3]/ +16116 ken him someone else matches /[^aeiou]/ +15713 srb matches /[a-cg-j1-3]/ +15713 srb matches /[^aeiou]/ +11895 lem matches /[a-cg-j1-3]/ +11895 lem matches /[^aeiou]/ +10409 scj matches /[a-cg-j1-3]/ +10409 scj matches /[^aeiou]/ +10252 rhm matches /[a-cg-j1-3]/ +10252 rhm matches /[^aeiou]/ + 9853 shen matches /[a-cg-j1-3]/ + 9853 shen matches /[^aeiou]/ + 9748 a68 matches /[a-cg-j1-3]/ + 9748 a68 matches /[^aeiou]/ + 9492 sif matches /[a-cg-j1-3]/ + 9492 sif matches /[^aeiou]/ + 9190 pjw matches /[a-cg-j1-3]/ + 9190 pjw matches /[^aeiou]/ + 8912 nls matches /[a-cg-j1-3]/ + 8912 nls matches /[^aeiou]/ + 8895 dmr matches /[^aeiou]/ + 8491 cda matches /[a-cg-j1-3]/ + 8491 cda matches /[^aeiou]/ + 8372 bs matches /[a-cg-j1-3]/ + 8372 bs matches /[^aeiou]/ + 8252 llc matches /[a-cg-j1-3]/ + 8252 llc matches /[^aeiou]/ + 7450 mb matches /[a-cg-j1-3]/ + 7450 mb matches /[^aeiou]/ + 7360 ava matches /[a-cg-j1-3]/ + 7360 ava matches /[^aeiou]/ + 7273 jrv matches /[a-cg-j1-3]/ + 7273 jrv matches /[^aeiou]/ + 7080 bin matches /[a-cg-j1-3]/ + 7080 bin matches /[^aeiou]/ + 7063 greg matches /[a-cg-j1-3]/ + 7063 greg matches /[^aeiou]/ + 6567 dict matches /[a-cg-j1-3]/ + 6567 dict matches /[^aeiou]/ + 6462 lck matches /[a-cg-j1-3]/ + 6462 lck matches /[^aeiou]/ + 6291 rje matches /[a-cg-j1-3]/ + 6291 rje matches /[^aeiou]/ + 6211 lwf matches /[a-cg-j1-3]/ + 6211 lwf matches /[^aeiou]/ + 5671 dave matches /[a-cg-j1-3]/ + 5671 dave matches /[^aeiou]/ + 5373 jhc matches /[a-cg-j1-3]/ + 5373 jhc matches /[^aeiou]/ + 5220 agf matches /[a-cg-j1-3]/ + 5220 agf matches /[^aeiou]/ + 5167 doug matches /[a-cg-j1-3]/ + 5167 doug matches /[^aeiou]/ + 5007 valerie matches /[a-cg-j1-3]/ + 5007 valerie matches /[^aeiou]/ + 3963 jca matches /[a-cg-j1-3]/ + 3963 jca matches /[^aeiou]/ + 3895 bbs matches /[a-cg-j1-3]/ + 3895 bbs matches /[^aeiou]/ + 3796 moh matches /[a-cg-j1-3]/ + 3796 moh matches /[^aeiou]/ + 3481 xchar matches /[a-cg-j1-3]/ + 3481 xchar matches /[^aeiou]/ + 3200 tbl matches /[a-cg-j1-3]/ + 3200 tbl matches /[^aeiou]/ + 2845 s matches /[a-cg-j1-3]/ + 2845 s matches /[^aeiou]/ + 2774 tgs matches /[a-cg-j1-3]/ + 2774 tgs matches /[^aeiou]/ + 2641 met matches /[a-cg-j1-3]/ + 2641 met matches /[^aeiou]/ + 2566 jck matches /[a-cg-j1-3]/ + 2566 jck matches /[^aeiou]/ + 2511 port matches /[a-cg-j1-3]/ + 2511 port matches /[^aeiou]/ + 2479 sue matches /[a-cg-j1-3]/ + 2479 sue matches /[^aeiou]/ + 2127 root matches /[a-cg-j1-3]/ + 2127 root matches /[^aeiou]/ + 1989 bsb matches /[a-cg-j1-3]/ + 1989 bsb matches /[^aeiou]/ + 1989 jeg matches /[a-cg-j1-3]/ + 1989 jeg matches /[^aeiou]/ + 1933 eag matches /[a-cg-j1-3]/ + 1933 eag matches /[^aeiou]/ + 1801 pdj matches /[a-cg-j1-3]/ + 1801 pdj matches /[^aeiou]/ + 1590 tpc matches /[a-cg-j1-3]/ + 1590 tpc matches /[^aeiou]/ + 1385 cvw matches /[a-cg-j1-3]/ + 1385 cvw matches /[^aeiou]/ + 1370 rwm matches /[a-cg-j1-3]/ + 1370 rwm matches /[^aeiou]/ + 1316 avg matches /[a-cg-j1-3]/ + 1316 avg matches /[^aeiou]/ + 1205 eg matches /[a-cg-j1-3]/ + 1205 eg matches /[^aeiou]/ + 1194 jam matches /[a-cg-j1-3]/ + 1194 jam matches /[^aeiou]/ + 1153 dl matches /[a-cg-j1-3]/ + 1153 dl matches /[^aeiou]/ + 1150 lgm matches /[a-cg-j1-3]/ + 1150 lgm matches /[^aeiou]/ + 1031 cmb matches /[a-cg-j1-3]/ + 1031 cmb matches /[^aeiou]/ + 1018 jwr matches /[a-cg-j1-3]/ + 1018 jwr matches /[^aeiou]/ + 950 gdb matches /[a-cg-j1-3]/ + 950 gdb matches /[^aeiou]/ + 931 marc matches /[a-cg-j1-3]/ + 931 marc matches /[^aeiou]/ + 898 usg matches /[a-cg-j1-3]/ + 898 usg matches /[^aeiou]/ + 865 ggr matches /[a-cg-j1-3]/ + 865 ggr matches /[^aeiou]/ + 822 daemon matches /[a-cg-j1-3]/ + 822 daemon matches /[^aeiou]/ + 803 mihalis matches /[a-cg-j1-3]/ + 803 mihalis matches /[^aeiou]/ + 700 honey matches /[a-cg-j1-3]/ + 700 honey matches /[^aeiou]/ + 624 tad matches /[a-cg-j1-3]/ + 624 tad matches /[^aeiou]/ + 559 acs matches /[a-cg-j1-3]/ + 559 acs matches /[^aeiou]/ + 541 uucp matches /[a-cg-j1-3]/ + 541 uucp matches /[^aeiou]/ + 523 raf matches /[a-cg-j1-3]/ + 523 raf matches /[^aeiou]/ + 495 adh matches /[a-cg-j1-3]/ + 495 adh matches /[^aeiou]/ + 456 kec matches /[a-cg-j1-3]/ + 456 kec matches /[^aeiou]/ + 414 craig matches /[a-cg-j1-3]/ + 414 craig matches /[^aeiou]/ + 386 donmac matches /[a-cg-j1-3]/ + 386 donmac matches /[^aeiou]/ + 375 jj matches /[a-cg-j1-3]/ + 375 jj matches /[^aeiou]/ + 348 ravi matches /[a-cg-j1-3]/ + 348 ravi matches /[^aeiou]/ + 344 drw matches /[a-cg-j1-3]/ + 344 drw matches /[^aeiou]/ + 327 stars matches /[a-cg-j1-3]/ + 327 stars matches /[^aeiou]/ + 288 mrg matches /[a-cg-j1-3]/ + 288 mrg matches /[^aeiou]/ + 272 jcb matches /[a-cg-j1-3]/ + 272 jcb matches /[^aeiou]/ + 263 ralph matches /[a-cg-j1-3]/ + 263 ralph matches /[^aeiou]/ + 253 tom matches /[a-cg-j1-3]/ + 253 tom matches /[^aeiou]/ + 251 sjb matches /[a-cg-j1-3]/ + 251 sjb matches /[^aeiou]/ + 248 haight matches /[a-cg-j1-3]/ + 248 haight matches /[^aeiou]/ + 224 sharon matches /[a-cg-j1-3]/ + 224 sharon matches /[^aeiou]/ + 222 chuck matches /[a-cg-j1-3]/ + 222 chuck matches /[^aeiou]/ + 213 dsj matches /[a-cg-j1-3]/ + 213 dsj matches /[^aeiou]/ + 201 bill matches /[a-cg-j1-3]/ + 201 bill matches /[^aeiou]/ + 184 god matches /[a-cg-j1-3]/ + 184 god matches /[^aeiou]/ + 176 sys matches /[a-cg-j1-3]/ + 176 sys matches /[^aeiou]/ + 166 meh matches /[a-cg-j1-3]/ + 166 meh matches /[^aeiou]/ + 163 jon matches /[a-cg-j1-3]/ + 163 jon matches /[^aeiou]/ + 144 dan matches /[a-cg-j1-3]/ + 144 dan matches /[^aeiou]/ + 143 fox matches /[a-cg-j1-3]/ + 143 fox matches /[^aeiou]/ + 123 dale matches /[a-cg-j1-3]/ + 123 dale matches /[^aeiou]/ + 116 kab matches /[a-cg-j1-3]/ + 116 kab matches /[^aeiou]/ + 95 buz matches /[a-cg-j1-3]/ + 95 buz matches /[^aeiou]/ + 80 asc matches /[a-cg-j1-3]/ + 80 asc matches /[^aeiou]/ + 79 jas matches /[a-cg-j1-3]/ + 79 jas matches /[^aeiou]/ + 79 trt matches /[^aeiou]/ + 64 wsb matches /[a-cg-j1-3]/ + 64 wsb matches /[^aeiou]/ + 62 dwh matches /[a-cg-j1-3]/ + 62 dwh matches /[^aeiou]/ + 56 ktf matches /[^aeiou]/ + 54 lr matches /[^aeiou]/ + 47 dlc matches /[a-cg-j1-3]/ + 47 dlc matches /[^aeiou]/ + 45 dls matches /[^aeiou]/ + 45 jwf matches /[a-cg-j1-3]/ + 45 jwf matches /[^aeiou]/ + 44 mash matches /[a-cg-j1-3]/ + 44 mash matches /[^aeiou]/ + 43 ars matches /[a-cg-j1-3]/ + 43 ars matches /[^aeiou]/ + 43 vgl matches /[a-cg-j1-3]/ + 43 vgl matches /[^aeiou]/ + 37 jfo matches /[a-cg-j1-3]/ + 37 jfo matches /[^aeiou]/ + 32 rab matches /[a-cg-j1-3]/ + 32 rab matches /[^aeiou]/ + 31 pd matches /[a-cg-j1-3]/ + 31 pd matches /[^aeiou]/ + 29 jns matches /[a-cg-j1-3]/ + 29 jns matches /[^aeiou]/ + 25 spm matches /[a-cg-j1-3]/ + 25 spm matches /[^aeiou]/ + 22 rob matches /[a-cg-j1-3]/ + 22 rob matches /[^aeiou]/ + 15 egb matches /[a-cg-j1-3]/ + 15 egb matches /[^aeiou]/ + 10 hm matches /[a-cg-j1-3]/ + 10 hm matches /[^aeiou]/ + 10 mhb matches /[a-cg-j1-3]/ + 10 mhb matches /[^aeiou]/ + 6 aed matches /[a-cg-j1-3]/ + 6 aed matches /[^aeiou]/ + 6 cpb matches /[a-cg-j1-3]/ + 6 cpb matches /[^aeiou]/ + 5 evp matches /[^aeiou]/ + 4 ber matches /[a-cg-j1-3]/ + 4 ber matches /[^aeiou]/ + 4 men matches /[^aeiou]/ + 4 mitch matches /[a-cg-j1-3]/ + 4 mitch matches /[^aeiou]/ + 3 ast matches /[a-cg-j1-3]/ + 3 ast matches /[^aeiou]/ + 3 jfr matches /[a-cg-j1-3]/ + 3 jfr matches /[^aeiou]/ + 3 lax matches /[a-cg-j1-3]/ + 3 lax matches /[^aeiou]/ + 3 nel matches /[a-cg-j1-3]/ + 3 nel matches /[^aeiou]/ + 2 blue matches /[a-cg-j1-3]/ + 2 blue matches /[^aeiou]/ + 2 jfk matches /[a-cg-j1-3]/ + 2 jfk matches /[^aeiou]/ + 2 njas matches /[a-cg-j1-3]/ + 2 njas matches /[^aeiou]/ + 1 122sec matches /[a-cg-j1-3]/ + 1 122sec matches /[^aeiou]/ + 1 ddwar matches /[a-cg-j1-3]/ + 1 ddwar matches /[^aeiou]/ + 1 gopi matches /[a-cg-j1-3]/ + 1 gopi matches /[^aeiou]/ + 1 jk matches /[a-cg-j1-3]/ + 1 jk matches /[^aeiou]/ + 1 learn matches /[a-cg-j1-3]/ + 1 learn matches /[^aeiou]/ + 1 low matches /[a-cg-j1-3]/ + 1 low matches /[^aeiou]/ + 1 nac matches /[a-cg-j1-3]/ + 1 nac matches /[^aeiou]/ + 1 sidor matches /[a-cg-j1-3]/ + 1 sidor matches /[^aeiou]/ +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh matches /[a-cg-j1-3]/ +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh matches /[^aeiou]/ +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh matches /[a-cg-j1-3]/ +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh matches /[^aeiou]/ +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh matches /[a-cg-j1-3]/ +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh matches /[^aeiou]/ +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh matches /[a-cg-j1-3]/ +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh matches /[^aeiou]/ +5daemon:*:1:1:daemons:/:/bin/sh matches /[a-cg-j1-3]/ +5daemon:*:1:1:daemons:/:/bin/sh matches /[^aeiou]/ +6bin:*:2:2:System Tools Owner:/bin:/dev/null matches /[a-cg-j1-3]/ +6bin:*:2:2:System Tools Owner:/bin:/dev/null matches /[^aeiou]/ +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico matches /[a-cg-j1-3]/ +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico matches /[^aeiou]/ +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: matches /[a-cg-j1-3]/ +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: matches /[^aeiou]/ +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh matches /[a-cg-j1-3]/ +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh matches /[^aeiou]/ +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh matches /[a-cg-j1-3]/ +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh matches /[^aeiou]/ +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh matches /[a-cg-j1-3]/ +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh matches /[^aeiou]/ +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh matches /[a-cg-j1-3]/ +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh matches /[^aeiou]/ +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh matches /[a-cg-j1-3]/ +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh matches /[^aeiou]/ +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[a-cg-j1-3]/ +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[^aeiou]/ +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[a-cg-j1-3]/ +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[^aeiou]/ +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh matches /[a-cg-j1-3]/ +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh matches /[^aeiou]/ +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh matches /[a-cg-j1-3]/ +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh matches /[^aeiou]/ +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh matches /[a-cg-j1-3]/ +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh matches /[^aeiou]/ +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh matches /[a-cg-j1-3]/ +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh matches /[^aeiou]/ +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh matches /[a-cg-j1-3]/ +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh matches /[^aeiou]/ +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh matches /[a-cg-j1-3]/ +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh matches /[^aeiou]/ +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh matches /[a-cg-j1-3]/ +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh matches /[^aeiou]/ +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null matches /[a-cg-j1-3]/ +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null matches /[^aeiou]/ +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null matches /[a-cg-j1-3]/ +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null matches /[^aeiou]/ +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null matches /[a-cg-j1-3]/ +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null matches /[^aeiou]/ +26rje:*:8:8:RJE Owner:/usr/spool/rje: matches /[a-cg-j1-3]/ +26rje:*:8:8:RJE Owner:/usr/spool/rje: matches /[^aeiou]/ +27changes:*:11:11:system change log:/: matches /[a-cg-j1-3]/ +27changes:*:11:11:system change log:/: matches /[^aeiou]/ +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches /[a-cg-j1-3]/ +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches /[^aeiou]/ +29man:*:99:995:On-line Manual Owner:/: matches /[a-cg-j1-3]/ +29man:*:99:995:On-line Manual Owner:/: matches /[^aeiou]/ +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh matches /[a-cg-j1-3]/ +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh matches /[^aeiou]/ +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh matches /[a-cg-j1-3]/ +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh matches /[^aeiou]/ +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh matches /[a-cg-j1-3]/ +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh matches /[^aeiou]/ +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches /[a-cg-j1-3]/ +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches /[^aeiou]/ +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches /[a-cg-j1-3]/ +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches /[^aeiou]/ +5d aemon * 1 1 daemons / /bin/sh matches /[a-cg-j1-3]/ +5d aemon * 1 1 daemons / /bin/sh matches /[^aeiou]/ +6b in * 2 2 System Tools Owner /bin /dev/null matches /[a-cg-j1-3]/ +6b in * 2 2 System Tools Owner /bin /dev/null matches /[^aeiou]/ +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico matches /[a-cg-j1-3]/ +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico matches /[^aeiou]/ +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp matches /[a-cg-j1-3]/ +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp matches /[^aeiou]/ +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches /[a-cg-j1-3]/ +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches /[^aeiou]/ +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches /[a-cg-j1-3]/ +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches /[^aeiou]/ +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches /[a-cg-j1-3]/ +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches /[^aeiou]/ +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches /[a-cg-j1-3]/ +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches /[^aeiou]/ +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches /[a-cg-j1-3]/ +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches /[^aeiou]/ +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches /[a-cg-j1-3]/ +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches /[^aeiou]/ +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches /[a-cg-j1-3]/ +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches /[^aeiou]/ +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches /[a-cg-j1-3]/ +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches /[^aeiou]/ +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches /[a-cg-j1-3]/ +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches /[^aeiou]/ +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches /[a-cg-j1-3]/ +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches /[^aeiou]/ +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches /[a-cg-j1-3]/ +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches /[^aeiou]/ +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches /[a-cg-j1-3]/ +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches /[^aeiou]/ +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh matches /[a-cg-j1-3]/ +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh matches /[^aeiou]/ +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh matches /[a-cg-j1-3]/ +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh matches /[^aeiou]/ +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null matches /[a-cg-j1-3]/ +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null matches /[^aeiou]/ +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches /[a-cg-j1-3]/ +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches /[^aeiou]/ +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches /[a-cg-j1-3]/ +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches /[^aeiou]/ +26 rje * 8 8 RJE Owner /usr/spool/rje matches /[a-cg-j1-3]/ +26 rje * 8 8 RJE Owner /usr/spool/rje matches /[^aeiou]/ +27 changes * 11 11 system change log / matches /[a-cg-j1-3]/ +27 changes * 11 11 system change log / matches /[^aeiou]/ +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches /[a-cg-j1-3]/ +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches /[^aeiou]/ +29 man * 99 995 On-line Manual Owner / matches /[a-cg-j1-3]/ +29 man * 99 995 On-line Manual Owner / matches /[^aeiou]/ +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches /[a-cg-j1-3]/ +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches /[^aeiou]/ diff --git a/src/tool/awk/testdata/output/t.re1a b/src/tool/awk/testdata/output/t.re1a new file mode 100644 index 0000000..82be03d --- /dev/null +++ b/src/tool/awk/testdata/output/t.re1a @@ -0,0 +1,389 @@ +/dev/rrp3: matches /[a-cg-j1-3]/ +/dev/rrp3: matches /[^aeiou]/ +17379 mel matches /[a-cg-j1-3]/ +17379 mel matches /[^aeiou]/ +16693 bwk me matches /[a-cg-j1-3]/ +16693 bwk me matches /[^aeiou]/ +16116 ken him someone else matches /[a-cg-j1-3]/ +16116 ken him someone else matches /[^aeiou]/ +15713 srb matches /[a-cg-j1-3]/ +15713 srb matches /[^aeiou]/ +11895 lem matches /[a-cg-j1-3]/ +11895 lem matches /[^aeiou]/ +10409 scj matches /[a-cg-j1-3]/ +10409 scj matches /[^aeiou]/ +10252 rhm matches /[a-cg-j1-3]/ +10252 rhm matches /[^aeiou]/ + 9853 shen matches /[a-cg-j1-3]/ + 9853 shen matches /[^aeiou]/ + 9748 a68 matches /[a-cg-j1-3]/ + 9748 a68 matches /[^aeiou]/ + 9492 sif matches /[a-cg-j1-3]/ + 9492 sif matches /[^aeiou]/ + 9190 pjw matches /[a-cg-j1-3]/ + 9190 pjw matches /[^aeiou]/ + 8912 nls matches /[a-cg-j1-3]/ + 8912 nls matches /[^aeiou]/ + 8895 dmr matches /[^aeiou]/ + 8491 cda matches /[a-cg-j1-3]/ + 8491 cda matches /[^aeiou]/ + 8372 bs matches /[a-cg-j1-3]/ + 8372 bs matches /[^aeiou]/ + 8252 llc matches /[a-cg-j1-3]/ + 8252 llc matches /[^aeiou]/ + 7450 mb matches /[a-cg-j1-3]/ + 7450 mb matches /[^aeiou]/ + 7360 ava matches /[a-cg-j1-3]/ + 7360 ava matches /[^aeiou]/ + 7273 jrv matches /[a-cg-j1-3]/ + 7273 jrv matches /[^aeiou]/ + 7080 bin matches /[a-cg-j1-3]/ + 7080 bin matches /[^aeiou]/ + 7063 greg matches /[a-cg-j1-3]/ + 7063 greg matches /[^aeiou]/ + 6567 dict matches /[a-cg-j1-3]/ + 6567 dict matches /[^aeiou]/ + 6462 lck matches /[a-cg-j1-3]/ + 6462 lck matches /[^aeiou]/ + 6291 rje matches /[a-cg-j1-3]/ + 6291 rje matches /[^aeiou]/ + 6211 lwf matches /[a-cg-j1-3]/ + 6211 lwf matches /[^aeiou]/ + 5671 dave matches /[a-cg-j1-3]/ + 5671 dave matches /[^aeiou]/ + 5373 jhc matches /[a-cg-j1-3]/ + 5373 jhc matches /[^aeiou]/ + 5220 agf matches /[a-cg-j1-3]/ + 5220 agf matches /[^aeiou]/ + 5167 doug matches /[a-cg-j1-3]/ + 5167 doug matches /[^aeiou]/ + 5007 valerie matches /[a-cg-j1-3]/ + 5007 valerie matches /[^aeiou]/ + 3963 jca matches /[a-cg-j1-3]/ + 3963 jca matches /[^aeiou]/ + 3895 bbs matches /[a-cg-j1-3]/ + 3895 bbs matches /[^aeiou]/ + 3796 moh matches /[a-cg-j1-3]/ + 3796 moh matches /[^aeiou]/ + 3481 xchar matches /[a-cg-j1-3]/ + 3481 xchar matches /[^aeiou]/ + 3200 tbl matches /[a-cg-j1-3]/ + 3200 tbl matches /[^aeiou]/ + 2845 s matches /[a-cg-j1-3]/ + 2845 s matches /[^aeiou]/ + 2774 tgs matches /[a-cg-j1-3]/ + 2774 tgs matches /[^aeiou]/ + 2641 met matches /[a-cg-j1-3]/ + 2641 met matches /[^aeiou]/ + 2566 jck matches /[a-cg-j1-3]/ + 2566 jck matches /[^aeiou]/ + 2511 port matches /[a-cg-j1-3]/ + 2511 port matches /[^aeiou]/ + 2479 sue matches /[a-cg-j1-3]/ + 2479 sue matches /[^aeiou]/ + 2127 root matches /[a-cg-j1-3]/ + 2127 root matches /[^aeiou]/ + 1989 bsb matches /[a-cg-j1-3]/ + 1989 bsb matches /[^aeiou]/ + 1989 jeg matches /[a-cg-j1-3]/ + 1989 jeg matches /[^aeiou]/ + 1933 eag matches /[a-cg-j1-3]/ + 1933 eag matches /[^aeiou]/ + 1801 pdj matches /[a-cg-j1-3]/ + 1801 pdj matches /[^aeiou]/ + 1590 tpc matches /[a-cg-j1-3]/ + 1590 tpc matches /[^aeiou]/ + 1385 cvw matches /[a-cg-j1-3]/ + 1385 cvw matches /[^aeiou]/ + 1370 rwm matches /[a-cg-j1-3]/ + 1370 rwm matches /[^aeiou]/ + 1316 avg matches /[a-cg-j1-3]/ + 1316 avg matches /[^aeiou]/ + 1205 eg matches /[a-cg-j1-3]/ + 1205 eg matches /[^aeiou]/ + 1194 jam matches /[a-cg-j1-3]/ + 1194 jam matches /[^aeiou]/ + 1153 dl matches /[a-cg-j1-3]/ + 1153 dl matches /[^aeiou]/ + 1150 lgm matches /[a-cg-j1-3]/ + 1150 lgm matches /[^aeiou]/ + 1031 cmb matches /[a-cg-j1-3]/ + 1031 cmb matches /[^aeiou]/ + 1018 jwr matches /[a-cg-j1-3]/ + 1018 jwr matches /[^aeiou]/ + 950 gdb matches /[a-cg-j1-3]/ + 950 gdb matches /[^aeiou]/ + 931 marc matches /[a-cg-j1-3]/ + 931 marc matches /[^aeiou]/ + 898 usg matches /[a-cg-j1-3]/ + 898 usg matches /[^aeiou]/ + 865 ggr matches /[a-cg-j1-3]/ + 865 ggr matches /[^aeiou]/ + 822 daemon matches /[a-cg-j1-3]/ + 822 daemon matches /[^aeiou]/ + 803 mihalis matches /[a-cg-j1-3]/ + 803 mihalis matches /[^aeiou]/ + 700 honey matches /[a-cg-j1-3]/ + 700 honey matches /[^aeiou]/ + 624 tad matches /[a-cg-j1-3]/ + 624 tad matches /[^aeiou]/ + 559 acs matches /[a-cg-j1-3]/ + 559 acs matches /[^aeiou]/ + 541 uucp matches /[a-cg-j1-3]/ + 541 uucp matches /[^aeiou]/ + 523 raf matches /[a-cg-j1-3]/ + 523 raf matches /[^aeiou]/ + 495 adh matches /[a-cg-j1-3]/ + 495 adh matches /[^aeiou]/ + 456 kec matches /[a-cg-j1-3]/ + 456 kec matches /[^aeiou]/ + 414 craig matches /[a-cg-j1-3]/ + 414 craig matches /[^aeiou]/ + 386 donmac matches /[a-cg-j1-3]/ + 386 donmac matches /[^aeiou]/ + 375 jj matches /[a-cg-j1-3]/ + 375 jj matches /[^aeiou]/ + 348 ravi matches /[a-cg-j1-3]/ + 348 ravi matches /[^aeiou]/ + 344 drw matches /[a-cg-j1-3]/ + 344 drw matches /[^aeiou]/ + 327 stars matches /[a-cg-j1-3]/ + 327 stars matches /[^aeiou]/ + 288 mrg matches /[a-cg-j1-3]/ + 288 mrg matches /[^aeiou]/ + 272 jcb matches /[a-cg-j1-3]/ + 272 jcb matches /[^aeiou]/ + 263 ralph matches /[a-cg-j1-3]/ + 263 ralph matches /[^aeiou]/ + 253 tom matches /[a-cg-j1-3]/ + 253 tom matches /[^aeiou]/ + 251 sjb matches /[a-cg-j1-3]/ + 251 sjb matches /[^aeiou]/ + 248 haight matches /[a-cg-j1-3]/ + 248 haight matches /[^aeiou]/ + 224 sharon matches /[a-cg-j1-3]/ + 224 sharon matches /[^aeiou]/ + 222 chuck matches /[a-cg-j1-3]/ + 222 chuck matches /[^aeiou]/ + 213 dsj matches /[a-cg-j1-3]/ + 213 dsj matches /[^aeiou]/ + 201 bill matches /[a-cg-j1-3]/ + 201 bill matches /[^aeiou]/ + 184 god matches /[a-cg-j1-3]/ + 184 god matches /[^aeiou]/ + 176 sys matches /[a-cg-j1-3]/ + 176 sys matches /[^aeiou]/ + 166 meh matches /[a-cg-j1-3]/ + 166 meh matches /[^aeiou]/ + 163 jon matches /[a-cg-j1-3]/ + 163 jon matches /[^aeiou]/ + 144 dan matches /[a-cg-j1-3]/ + 144 dan matches /[^aeiou]/ + 143 fox matches /[a-cg-j1-3]/ + 143 fox matches /[^aeiou]/ + 123 dale matches /[a-cg-j1-3]/ + 123 dale matches /[^aeiou]/ + 116 kab matches /[a-cg-j1-3]/ + 116 kab matches /[^aeiou]/ + 95 buz matches /[a-cg-j1-3]/ + 95 buz matches /[^aeiou]/ + 80 asc matches /[a-cg-j1-3]/ + 80 asc matches /[^aeiou]/ + 79 jas matches /[a-cg-j1-3]/ + 79 jas matches /[^aeiou]/ + 79 trt matches /[^aeiou]/ + 64 wsb matches /[a-cg-j1-3]/ + 64 wsb matches /[^aeiou]/ + 62 dwh matches /[a-cg-j1-3]/ + 62 dwh matches /[^aeiou]/ + 56 ktf matches /[^aeiou]/ + 54 lr matches /[^aeiou]/ + 47 dlc matches /[a-cg-j1-3]/ + 47 dlc matches /[^aeiou]/ + 45 dls matches /[^aeiou]/ + 45 jwf matches /[a-cg-j1-3]/ + 45 jwf matches /[^aeiou]/ + 44 mash matches /[a-cg-j1-3]/ + 44 mash matches /[^aeiou]/ + 43 ars matches /[a-cg-j1-3]/ + 43 ars matches /[^aeiou]/ + 43 vgl matches /[a-cg-j1-3]/ + 43 vgl matches /[^aeiou]/ + 37 jfo matches /[a-cg-j1-3]/ + 37 jfo matches /[^aeiou]/ + 32 rab matches /[a-cg-j1-3]/ + 32 rab matches /[^aeiou]/ + 31 pd matches /[a-cg-j1-3]/ + 31 pd matches /[^aeiou]/ + 29 jns matches /[a-cg-j1-3]/ + 29 jns matches /[^aeiou]/ + 25 spm matches /[a-cg-j1-3]/ + 25 spm matches /[^aeiou]/ + 22 rob matches /[a-cg-j1-3]/ + 22 rob matches /[^aeiou]/ + 15 egb matches /[a-cg-j1-3]/ + 15 egb matches /[^aeiou]/ + 10 hm matches /[a-cg-j1-3]/ + 10 hm matches /[^aeiou]/ + 10 mhb matches /[a-cg-j1-3]/ + 10 mhb matches /[^aeiou]/ + 6 aed matches /[a-cg-j1-3]/ + 6 aed matches /[^aeiou]/ + 6 cpb matches /[a-cg-j1-3]/ + 6 cpb matches /[^aeiou]/ + 5 evp matches /[^aeiou]/ + 4 ber matches /[a-cg-j1-3]/ + 4 ber matches /[^aeiou]/ + 4 men matches /[^aeiou]/ + 4 mitch matches /[a-cg-j1-3]/ + 4 mitch matches /[^aeiou]/ + 3 ast matches /[a-cg-j1-3]/ + 3 ast matches /[^aeiou]/ + 3 jfr matches /[a-cg-j1-3]/ + 3 jfr matches /[^aeiou]/ + 3 lax matches /[a-cg-j1-3]/ + 3 lax matches /[^aeiou]/ + 3 nel matches /[a-cg-j1-3]/ + 3 nel matches /[^aeiou]/ + 2 blue matches /[a-cg-j1-3]/ + 2 blue matches /[^aeiou]/ + 2 jfk matches /[a-cg-j1-3]/ + 2 jfk matches /[^aeiou]/ + 2 njas matches /[a-cg-j1-3]/ + 2 njas matches /[^aeiou]/ + 1 122sec matches /[a-cg-j1-3]/ + 1 122sec matches /[^aeiou]/ + 1 ddwar matches /[a-cg-j1-3]/ + 1 ddwar matches /[^aeiou]/ + 1 gopi matches /[a-cg-j1-3]/ + 1 gopi matches /[^aeiou]/ + 1 jk matches /[a-cg-j1-3]/ + 1 jk matches /[^aeiou]/ + 1 learn matches /[a-cg-j1-3]/ + 1 learn matches /[^aeiou]/ + 1 low matches /[a-cg-j1-3]/ + 1 low matches /[^aeiou]/ + 1 nac matches /[a-cg-j1-3]/ + 1 nac matches /[^aeiou]/ + 1 sidor matches /[a-cg-j1-3]/ + 1 sidor matches /[^aeiou]/ +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh matches /[a-cg-j1-3]/ +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh matches /[^aeiou]/ +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh matches /[a-cg-j1-3]/ +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh matches /[^aeiou]/ +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh matches /[a-cg-j1-3]/ +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh matches /[^aeiou]/ +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh matches /[a-cg-j1-3]/ +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh matches /[^aeiou]/ +5daemon:*:1:1:daemons:/:/bin/sh matches /[a-cg-j1-3]/ +5daemon:*:1:1:daemons:/:/bin/sh matches /[^aeiou]/ +6bin:*:2:2:System Tools Owner:/bin:/dev/null matches /[a-cg-j1-3]/ +6bin:*:2:2:System Tools Owner:/bin:/dev/null matches /[^aeiou]/ +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico matches /[a-cg-j1-3]/ +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico matches /[^aeiou]/ +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: matches /[a-cg-j1-3]/ +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: matches /[^aeiou]/ +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh matches /[a-cg-j1-3]/ +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh matches /[^aeiou]/ +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh matches /[a-cg-j1-3]/ +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh matches /[^aeiou]/ +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh matches /[a-cg-j1-3]/ +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh matches /[^aeiou]/ +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh matches /[a-cg-j1-3]/ +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh matches /[^aeiou]/ +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh matches /[a-cg-j1-3]/ +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh matches /[^aeiou]/ +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[a-cg-j1-3]/ +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[^aeiou]/ +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[a-cg-j1-3]/ +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches /[^aeiou]/ +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh matches /[a-cg-j1-3]/ +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh matches /[^aeiou]/ +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh matches /[a-cg-j1-3]/ +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh matches /[^aeiou]/ +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh matches /[a-cg-j1-3]/ +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh matches /[^aeiou]/ +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh matches /[a-cg-j1-3]/ +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh matches /[^aeiou]/ +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh matches /[a-cg-j1-3]/ +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh matches /[^aeiou]/ +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh matches /[a-cg-j1-3]/ +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh matches /[^aeiou]/ +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh matches /[a-cg-j1-3]/ +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh matches /[^aeiou]/ +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null matches /[a-cg-j1-3]/ +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null matches /[^aeiou]/ +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null matches /[a-cg-j1-3]/ +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null matches /[^aeiou]/ +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null matches /[a-cg-j1-3]/ +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null matches /[^aeiou]/ +26rje:*:8:8:RJE Owner:/usr/spool/rje: matches /[a-cg-j1-3]/ +26rje:*:8:8:RJE Owner:/usr/spool/rje: matches /[^aeiou]/ +27changes:*:11:11:system change log:/: matches /[a-cg-j1-3]/ +27changes:*:11:11:system change log:/: matches /[^aeiou]/ +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches /[a-cg-j1-3]/ +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches /[^aeiou]/ +29man:*:99:995:On-line Manual Owner:/: matches /[a-cg-j1-3]/ +29man:*:99:995:On-line Manual Owner:/: matches /[^aeiou]/ +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh matches /[a-cg-j1-3]/ +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh matches /[^aeiou]/ +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh matches /[a-cg-j1-3]/ +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh matches /[^aeiou]/ +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh matches /[a-cg-j1-3]/ +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh matches /[^aeiou]/ +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches /[a-cg-j1-3]/ +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches /[^aeiou]/ +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches /[a-cg-j1-3]/ +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches /[^aeiou]/ +5d aemon * 1 1 daemons / /bin/sh matches /[a-cg-j1-3]/ +5d aemon * 1 1 daemons / /bin/sh matches /[^aeiou]/ +6b in * 2 2 System Tools Owner /bin /dev/null matches /[a-cg-j1-3]/ +6b in * 2 2 System Tools Owner /bin /dev/null matches /[^aeiou]/ +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico matches /[a-cg-j1-3]/ +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico matches /[^aeiou]/ +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp matches /[a-cg-j1-3]/ +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp matches /[^aeiou]/ +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches /[a-cg-j1-3]/ +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches /[^aeiou]/ +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches /[a-cg-j1-3]/ +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches /[^aeiou]/ +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches /[a-cg-j1-3]/ +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches /[^aeiou]/ +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches /[a-cg-j1-3]/ +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches /[^aeiou]/ +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches /[a-cg-j1-3]/ +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches /[^aeiou]/ +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches /[a-cg-j1-3]/ +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches /[^aeiou]/ +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches /[a-cg-j1-3]/ +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches /[^aeiou]/ +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches /[a-cg-j1-3]/ +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches /[^aeiou]/ +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches /[a-cg-j1-3]/ +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches /[^aeiou]/ +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches /[a-cg-j1-3]/ +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches /[^aeiou]/ +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches /[a-cg-j1-3]/ +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches /[^aeiou]/ +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches /[a-cg-j1-3]/ +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches /[^aeiou]/ +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh matches /[a-cg-j1-3]/ +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh matches /[^aeiou]/ +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh matches /[a-cg-j1-3]/ +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh matches /[^aeiou]/ +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null matches /[a-cg-j1-3]/ +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null matches /[^aeiou]/ +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches /[a-cg-j1-3]/ +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches /[^aeiou]/ +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches /[a-cg-j1-3]/ +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches /[^aeiou]/ +26 rje * 8 8 RJE Owner /usr/spool/rje matches /[a-cg-j1-3]/ +26 rje * 8 8 RJE Owner /usr/spool/rje matches /[^aeiou]/ +27 changes * 11 11 system change log / matches /[a-cg-j1-3]/ +27 changes * 11 11 system change log / matches /[^aeiou]/ +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches /[a-cg-j1-3]/ +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches /[^aeiou]/ +29 man * 99 995 On-line Manual Owner / matches /[a-cg-j1-3]/ +29 man * 99 995 On-line Manual Owner / matches /[^aeiou]/ +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches /[a-cg-j1-3]/ +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches /[^aeiou]/ diff --git a/src/tool/awk/testdata/output/t.re2 b/src/tool/awk/testdata/output/t.re2 new file mode 100644 index 0000000..c3b906a --- /dev/null +++ b/src/tool/awk/testdata/output/t.re2 @@ -0,0 +1,202 @@ +/dev/rrp3: +/dev/rrp3: +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.re3 b/src/tool/awk/testdata/output/t.re3 new file mode 100644 index 0000000..cad73b6 --- /dev/null +++ b/src/tool/awk/testdata/output/t.re3 @@ -0,0 +1,175 @@ +/dev/rrp3: matches /dev/rrp3: +17379 mel matches 17379 +16693 bwk me matches 16693 +16116 ken him someone else matches 16116 +15713 srb matches 15713 +11895 lem matches 11895 +10409 scj matches 10409 +10252 rhm matches 10252 + 9853 shen matches 9853 + 9748 a68 matches 9748 + 9492 sif matches 9492 + 9190 pjw matches 9190 + 8912 nls matches 8912 + 8895 dmr matches 8895 + 8491 cda matches 8491 + 8372 bs matches 8372 + 8252 llc matches 8252 + 7450 mb matches 7450 + 7360 ava matches 7360 + 7273 jrv matches 7273 + 7080 bin matches 7080 + 7063 greg matches 7063 + 6567 dict matches 6567 + 6462 lck matches 6462 + 6291 rje matches 6291 + 6211 lwf matches 6211 + 5671 dave matches 5671 + 5373 jhc matches 5373 + 5220 agf matches 5220 + 5167 doug matches 5167 + 5007 valerie matches 5007 + 3963 jca matches 3963 + 3895 bbs matches 3895 + 3796 moh matches 3796 + 3481 xchar matches 3481 + 3200 tbl matches 3200 + 2845 s matches 2845 + 2774 tgs matches 2774 + 2641 met matches 2641 + 2566 jck matches 2566 + 2511 port matches 2511 + 2479 sue matches 2479 + 2127 root matches 2127 + 1989 bsb matches 1989 + 1989 jeg matches 1989 + 1933 eag matches 1933 + 1801 pdj matches 1801 + 1590 tpc matches 1590 + 1385 cvw matches 1385 + 1370 rwm matches 1370 + 1316 avg matches 1316 + 1205 eg matches 1205 + 1194 jam matches 1194 + 1153 dl matches 1153 + 1150 lgm matches 1150 + 1031 cmb matches 1031 + 1018 jwr matches 1018 + 950 gdb matches 950 + 931 marc matches 931 + 898 usg matches 898 + 865 ggr matches 865 + 822 daemon matches 822 + 803 mihalis matches 803 + 700 honey matches 700 + 624 tad matches 624 + 559 acs matches 559 + 541 uucp matches 541 + 523 raf matches 523 + 495 adh matches 495 + 456 kec matches 456 + 414 craig matches 414 + 386 donmac matches 386 + 375 jj matches 375 + 348 ravi matches 348 + 344 drw matches 344 + 327 stars matches 327 + 288 mrg matches 288 + 272 jcb matches 272 + 263 ralph matches 263 + 253 tom matches 253 + 251 sjb matches 251 + 248 haight matches 248 + 224 sharon matches 224 + 222 chuck matches 222 + 213 dsj matches 213 + 201 bill matches 201 + 184 god matches 184 + 176 sys matches 176 + 166 meh matches 166 + 163 jon matches 163 + 144 dan matches 144 + 143 fox matches 143 + 123 dale matches 123 + 116 kab matches 116 + 95 buz matches 95 + 80 asc matches 80 + 79 jas matches 79 + 79 trt matches 79 + 64 wsb matches 64 + 62 dwh matches 62 + 56 ktf matches 56 + 54 lr matches 54 + 47 dlc matches 47 + 45 dls matches 45 + 45 jwf matches 45 + 44 mash matches 44 + 43 ars matches 43 + 43 vgl matches 43 + 37 jfo matches 37 + 32 rab matches 32 + 31 pd matches 31 + 29 jns matches 29 + 25 spm matches 25 + 22 rob matches 22 + 15 egb matches 15 + 10 hm matches 10 + 10 mhb matches 10 + 6 aed matches 6 + 6 cpb matches 6 + 5 evp matches 5 + 4 ber matches 4 + 4 men matches 4 + 4 mitch matches 4 + 3 ast matches 3 + 3 jfr matches 3 + 3 lax matches 3 + 3 nel matches 3 + 2 blue matches 2 + 2 jfk matches 2 + 2 njas matches 2 + 1 122sec matches 1 + 1 ddwar matches 1 + 1 gopi matches 1 + 1 jk matches 1 + 1 learn matches 1 + 1 low matches 1 + 1 nac matches 1 + 1 sidor matches 1 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh matches 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico matches 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches 14bootes:dcon:50:1:Tom +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches 15cdjuke:dcon:51:1:Tom +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh matches 21guest:nfP4/Wpvio/Rw:998:998:Guest +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh matches 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches 28dist:sorry:9999:4:file +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh matches 1r +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh matches 2r +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches 3s +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches 4d +5d aemon * 1 1 daemons / /bin/sh matches 5d +6b in * 2 2 System Tools Owner /bin /dev/null matches 6b +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico matches 7n +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp matches 8u +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches 9s +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches 10 +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches 11 +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches 12 +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches 13 +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches 14 +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches 15 +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches 16 +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches 17 +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches 18 +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches 19 +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches 20 +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh matches 21 +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh matches 22 +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null matches 23 +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches 24 +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches 25 +26 rje * 8 8 RJE Owner /usr/spool/rje matches 26 +27 changes * 11 11 system change log / matches 27 +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches 28 +29 man * 99 995 On-line Manual Owner / matches 29 +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches 30 diff --git a/src/tool/awk/testdata/output/t.re4 b/src/tool/awk/testdata/output/t.re4 new file mode 100644 index 0000000..a25501e --- /dev/null +++ b/src/tool/awk/testdata/output/t.re4 @@ -0,0 +1,82 @@ + 9748 a68 matches a + 8491 cda matches a + 7360 ava matches a + 5671 dave matches a + 5220 agf matches a + 5007 valerie matches a + 3963 jca matches a + 3481 xchar matches a + 1933 eag matches a + 1316 avg matches a + 1194 jam matches a + 931 marc matches a + 822 daemon matches a + 803 mihalis matches a + 624 tad matches a + 559 acs matches a + 523 raf matches a + 495 adh matches a + 414 craig matches a + 386 donmac matches a + 348 ravi matches a + 327 stars matches a + 263 ralph matches a + 248 haight matches a + 224 sharon matches a + 144 dan matches a + 123 dale matches a + 116 kab matches a + 80 asc matches a + 79 jas matches a + 44 mash matches a + 43 ars matches a + 32 rab matches a + 6 aed matches a + 3 ast matches a + 3 lax matches a + 2 njas matches a + 1 ddwar matches a + 1 learn matches a + 1 nac matches a +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh matches a +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh matches a +5daemon:*:1:1:daemons:/:/bin/sh matches a +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh matches a +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh matches a +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh matches a +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh matches a +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh matches a +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: matches a +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: matches a +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh matches a +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh matches a +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh matches a +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh matches a +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh matches a +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null matches a +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null matches a +27changes:*:11:11:system change log:/: matches a +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh matches a +29man:*:99:995:On-line Manual Owner:/: matches a +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh matches a +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh matches a +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh matches a +5d aemon * 1 1 daemons / /bin/sh matches a +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh matches a +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh matches a +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh matches a +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh matches a +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh matches a +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp matches a +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp matches a +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh matches a +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh matches a +18 demos * 993 997 Demonstration User /usr/demos /bin/csh matches a +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh matches a +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh matches a +24 noaccess * 60002 60002 uid no access /dev/null /dev/null matches a +25 nobody * -2 -2 original nobody uid /dev/null /dev/null matches a +27 changes * 11 11 system change log / matches a +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh matches a +29 man * 99 995 On-line Manual Owner / matches a +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh matches a diff --git a/src/tool/awk/testdata/output/t.re5 b/src/tool/awk/testdata/output/t.re5 new file mode 100644 index 0000000..0dc48bf --- /dev/null +++ b/src/tool/awk/testdata/output/t.re5 @@ -0,0 +1,571 @@ +/dev/rrp3: +17379 mel +17379 mel +17379 mel +17379 mel +16693 bwk me +16693 bwk me +16693 bwk me +16693 bwk me +16116 ken him someone else +16116 ken him someone else +15713 srb +15713 srb +15713 srb +15713 srb +11895 lem +11895 lem +11895 lem +11895 lem +10409 scj +10409 scj +10409 scj +10409 scj +10252 rhm +10252 rhm +10252 rhm +10252 rhm + 9853 shen + 9853 shen + 9853 shen + 9853 shen + 9748 a68 + 9748 a68 + 9748 a68 + 9748 a68 + 9748 a68 + 9492 sif + 9492 sif + 9492 sif + 9190 pjw + 9190 pjw + 9190 pjw + 8912 nls + 8912 nls + 8912 nls + 8912 nls + 8895 dmr + 8895 dmr + 8895 dmr + 8491 cda + 8491 cda + 8491 cda + 8491 cda + 8372 bs + 8372 bs + 8372 bs + 8372 bs + 8252 llc + 8252 llc + 8252 llc + 7450 mb + 7450 mb + 7450 mb + 7450 mb + 7360 ava + 7360 ava + 7360 ava + 7360 ava + 7273 jrv + 7273 jrv + 7273 jrv + 7080 bin + 7080 bin + 7080 bin + 7063 greg + 7063 greg + 7063 greg + 7063 greg + 6567 dict + 6567 dict + 6567 dict + 6462 lck + 6462 lck + 6462 lck + 6291 rje + 6291 rje + 6291 rje + 6291 rje + 6211 lwf + 6211 lwf + 6211 lwf + 5671 dave + 5671 dave + 5671 dave + 5671 dave + 5373 jhc + 5373 jhc + 5373 jhc + 5220 agf + 5220 agf + 5220 agf + 5167 doug + 5167 doug + 5167 doug + 5167 doug + 5007 valerie + 5007 valerie + 5007 valerie + 3963 jca + 3963 jca + 3963 jca + 3895 bbs + 3895 bbs + 3895 bbs + 3895 bbs + 3796 moh + 3796 moh + 3796 moh + 3796 moh + 3481 xchar + 3481 xchar + 3481 xchar + 3481 xchar + 3200 tbl + 3200 tbl + 3200 tbl + 2845 s + 2845 s + 2845 s + 2845 s + 2774 tgs + 2774 tgs + 2774 tgs + 2641 met + 2641 met + 2641 met + 2641 met + 2566 jck + 2566 jck + 2566 jck + 2511 port + 2511 port + 2511 port + 2479 sue + 2479 sue + 2479 sue + 2479 sue + 2127 root + 2127 root + 2127 root + 1989 bsb + 1989 bsb + 1989 bsb + 1989 jeg + 1989 jeg + 1989 jeg + 1933 eag + 1933 eag + 1933 eag + 1801 pdj + 1801 pdj + 1801 pdj + 1590 tpc + 1590 tpc + 1590 tpc + 1590 tpc + 1385 cvw + 1385 cvw + 1385 cvw + 1385 cvw + 1370 rwm + 1370 rwm + 1370 rwm + 1370 rwm + 1316 avg + 1316 avg + 1316 avg + 1205 eg + 1205 eg + 1205 eg + 1205 eg + 1194 jam + 1194 jam + 1194 jam + 1153 dl + 1153 dl + 1153 dl + 1150 lgm + 1150 lgm + 1150 lgm + 1031 cmb + 1031 cmb + 1031 cmb + 1018 jwr + 1018 jwr + 1018 jwr + 950 gdb + 950 gdb + 950 gdb + 931 marc + 931 marc + 931 marc + 898 usg + 898 usg + 865 ggr + 865 ggr + 865 ggr + 822 daemon + 822 daemon + 803 mihalis + 803 mihalis + 803 mihalis + 700 honey + 700 honey + 624 tad + 624 tad + 624 tad + 559 acs + 559 acs + 541 uucp + 541 uucp + 541 uucp + 523 raf + 523 raf + 523 raf + 495 adh + 495 adh + 495 adh + 456 kec + 456 kec + 456 kec + 414 craig + 414 craig + 386 donmac + 386 donmac + 386 donmac + 375 jj + 375 jj + 375 jj + 348 ravi + 348 ravi + 348 ravi + 344 drw + 344 drw + 327 stars + 327 stars + 327 stars + 288 mrg + 288 mrg + 272 jcb + 272 jcb + 263 ralph + 263 ralph + 263 ralph + 253 tom + 253 tom + 253 tom + 251 sjb + 251 sjb + 251 sjb + 248 haight + 248 haight + 248 haight + 224 sharon + 224 sharon + 222 chuck + 213 dsj + 213 dsj + 213 dsj + 201 bill + 201 bill + 201 bill + 184 god + 184 god + 184 god + 176 sys + 176 sys + 176 sys + 166 meh + 166 meh + 163 jon + 163 jon + 163 jon + 144 dan + 144 dan + 143 fox + 143 fox + 143 fox + 123 dale + 123 dale + 123 dale + 116 kab + 116 kab + 95 buz + 95 buz + 80 asc + 80 asc + 79 jas + 79 jas + 79 trt + 79 trt + 64 wsb + 64 wsb + 62 dwh + 62 dwh + 56 ktf + 56 ktf + 54 lr + 54 lr + 47 dlc + 47 dlc + 45 dls + 45 dls + 45 jwf + 45 jwf + 44 mash + 43 ars + 43 ars + 43 vgl + 43 vgl + 37 jfo + 37 jfo + 32 rab + 32 rab + 31 pd + 31 pd + 29 jns + 29 jns + 25 spm + 25 spm + 22 rob + 15 egb + 15 egb + 10 hm + 10 hm + 10 mhb + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.re7 b/src/tool/awk/testdata/output/t.re7 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.reFS b/src/tool/awk/testdata/output/t.reFS new file mode 100644 index 0000000..4406493 --- /dev/null +++ b/src/tool/awk/testdata/output/t.reFS @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk +16116 ken +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.rec b/src/tool/awk/testdata/output/t.rec new file mode 100644 index 0000000..0df742e --- /dev/null +++ b/src/tool/awk/testdata/output/t.rec @@ -0,0 +1,199 @@ +0 +0 +131.829 +129.201 +126.949 +125.352 +109.064 +102.025 +101.252 +99.2623 +98.732 +97.4269 +95.8645 +94.4034 +94.3133 +92.1466 +91.4986 +90.8405 +86.3134 +85.7904 +85.2819 +84.1427 +84.0417 +81.037 +80.3866 +79.3158 +78.8099 +75.306 +73.3008 +72.2496 +71.8818 +70.7602 +62.9524 +62.4099 +61.6117 +59 +56.5685 +53.3385 +52.6688 +51.3907 +50.6557 +50.1099 +49.7896 +46.1194 +44.5982 +44.5982 +43.9659 +42.4382 +39.8748 +37.2156 +37.0135 +36.2767 +34.7131 +34.5543 +33.9559 +33.9116 +32.1092 +31.9061 +30.8221 +30.5123 +29.9666 +29.4109 +28.6705 +28.3373 +26.4575 +24.98 +23.6432 +23.2594 +22.8692 +22.2486 +21.3542 +20.347 +19.6469 +19.3649 +18.6548 +18.5472 +18.0831 +16.9706 +16.4924 +16.2173 +15.906 +15.843 +15.748 +14.9666 +14.8997 +14.5945 +14.1774 +13.5647 +13.2665 +12.8841 +12.7671 +12 +11.9583 +11.0905 +10.7703 +9.74679 +8.94427 +8.88819 +8.88819 +8 +7.87401 +7.48331 +7.34847 +6.85565 +6.7082 +6.7082 +6.63325 +6.55744 +6.55744 +6.08276 +5.65685 +5.56776 +5.38516 +5 +4.69042 +3.87298 +3.16228 +3.16228 +2.44949 +2.44949 +2.23607 +2 +2 +2 +1.73205 +1.73205 +1.73205 +1.73205 +1.41421 +1.41421 +1.41421 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1.41421 +1.73205 +2 +2.23607 +2.44949 +2.64575 +2.82843 +3 +3.16228 +3.31662 +3.4641 +3.60555 +3.74166 +3.87298 +4 +4.12311 +4.24264 +4.3589 +4.47214 +4.58258 +14.9666 +4.79583 +4.89898 +5 +5.09902 +5.19615 +5.2915 +5.38516 +5.47723 +1 +1.41421 +1.73205 +2 +2.23607 +2.44949 +2.64575 +2.82843 +3 +3.16228 +3.31662 +3.4641 +3.60555 +3.74166 +3.87298 +4 +4.12311 +4.24264 +4.3589 +4.47214 +4.58258 +4.69042 +4.79583 +4.89898 +5 +5.09902 +5.19615 +5.2915 +5.38516 +5.47723 diff --git a/src/tool/awk/testdata/output/t.reg b/src/tool/awk/testdata/output/t.reg new file mode 100644 index 0000000..f3f13b4 --- /dev/null +++ b/src/tool/awk/testdata/output/t.reg @@ -0,0 +1,600 @@ +/dev/rrp3: +/dev/rrp3: +/dev/rrp3: + + +17379 mel +17379 mel +17379 mel +16693 bwk me +16693 bwk me +16693 bwk me +16116 ken him someone else +16116 ken him someone else +16116 ken him someone else +15713 srb +15713 srb +15713 srb +11895 lem +11895 lem +11895 lem +10409 scj +10409 scj +10409 scj +10252 rhm +10252 rhm +10252 rhm + 9853 shen + 9853 shen + 9853 shen + 9748 a68 + 9748 a68 + 9748 a68 + 9492 sif + 9492 sif + 9492 sif + 9190 pjw + 9190 pjw + 9190 pjw + 8912 nls + 8912 nls + 8912 nls + 8895 dmr + 8895 dmr + 8895 dmr + 8491 cda + 8491 cda + 8491 cda + 8372 bs + 8372 bs + 8372 bs + 8252 llc + 8252 llc + 8252 llc + 7450 mb + 7450 mb + 7450 mb + 7360 ava + 7360 ava + 7360 ava + 7273 jrv + 7273 jrv + 7273 jrv + 7080 bin + 7080 bin + 7080 bin + 7063 greg + 7063 greg + 7063 greg + 6567 dict + 6567 dict + 6567 dict + 6462 lck + 6462 lck + 6462 lck + 6291 rje + 6291 rje + 6291 rje + 6211 lwf + 6211 lwf + 6211 lwf + 5671 dave + 5671 dave + 5671 dave + 5373 jhc + 5373 jhc + 5373 jhc + 5220 agf + 5220 agf + 5220 agf + 5167 doug + 5167 doug + 5167 doug + 5007 valerie + 5007 valerie + 5007 valerie + 3963 jca + 3963 jca + 3963 jca + 3895 bbs + 3895 bbs + 3895 bbs + 3796 moh + 3796 moh + 3796 moh + 3481 xchar + 3481 xchar + 3481 xchar + 3200 tbl + 3200 tbl + 3200 tbl + 2845 s + 2845 s + 2845 s + 2774 tgs + 2774 tgs + 2774 tgs + 2641 met + 2641 met + 2641 met + 2566 jck + 2566 jck + 2566 jck + 2511 port + 2511 port + 2511 port + 2479 sue + 2479 sue + 2479 sue + 2127 root + 2127 root + 2127 root + 1989 bsb + 1989 bsb + 1989 bsb + 1989 jeg + 1989 jeg + 1989 jeg + 1933 eag + 1933 eag + 1933 eag + 1801 pdj + 1801 pdj + 1801 pdj + 1590 tpc + 1590 tpc + 1590 tpc + 1385 cvw + 1385 cvw + 1385 cvw + 1370 rwm + 1370 rwm + 1370 rwm + 1316 avg + 1316 avg + 1316 avg + 1205 eg + 1205 eg + 1205 eg + 1194 jam + 1194 jam + 1194 jam + 1153 dl + 1153 dl + 1153 dl + 1150 lgm + 1150 lgm + 1150 lgm + 1031 cmb + 1031 cmb + 1031 cmb + 1018 jwr + 1018 jwr + 1018 jwr + 950 gdb + 950 gdb + 950 gdb + 931 marc + 931 marc + 931 marc + 898 usg + 898 usg + 898 usg + 865 ggr + 865 ggr + 865 ggr + 822 daemon + 822 daemon + 822 daemon + 803 mihalis + 803 mihalis + 803 mihalis + 700 honey + 700 honey + 700 honey + 624 tad + 624 tad + 624 tad + 559 acs + 559 acs + 559 acs + 541 uucp + 541 uucp + 541 uucp + 523 raf + 523 raf + 523 raf + 495 adh + 495 adh + 495 adh + 456 kec + 456 kec + 456 kec + 414 craig + 414 craig + 414 craig + 386 donmac + 386 donmac + 386 donmac + 375 jj + 375 jj + 375 jj + 348 ravi + 348 ravi + 348 ravi + 344 drw + 344 drw + 344 drw + 327 stars + 327 stars + 327 stars + 288 mrg + 288 mrg + 288 mrg + 272 jcb + 272 jcb + 272 jcb + 263 ralph + 263 ralph + 263 ralph + 253 tom + 253 tom + 253 tom + 251 sjb + 251 sjb + 251 sjb + 248 haight + 248 haight + 248 haight + 224 sharon + 224 sharon + 224 sharon + 222 chuck + 222 chuck + 222 chuck + 213 dsj + 213 dsj + 213 dsj + 201 bill + 201 bill + 201 bill + 184 god + 184 god + 184 god + 176 sys + 176 sys + 176 sys + 166 meh + 166 meh + 166 meh + 163 jon + 163 jon + 163 jon + 144 dan + 144 dan + 144 dan + 143 fox + 143 fox + 143 fox + 123 dale + 123 dale + 123 dale + 116 kab + 116 kab + 116 kab + 95 buz + 95 buz + 95 buz + 80 asc + 80 asc + 80 asc + 79 jas + 79 jas + 79 jas + 79 trt + 79 trt + 79 trt + 64 wsb + 64 wsb + 64 wsb + 62 dwh + 62 dwh + 62 dwh + 56 ktf + 56 ktf + 56 ktf + 54 lr + 54 lr + 54 lr + 47 dlc + 47 dlc + 47 dlc + 45 dls + 45 dls + 45 dls + 45 jwf + 45 jwf + 45 jwf + 44 mash + 44 mash + 44 mash + 43 ars + 43 ars + 43 ars + 43 vgl + 43 vgl + 43 vgl + 37 jfo + 37 jfo + 37 jfo + 32 rab + 32 rab + 32 rab + 31 pd + 31 pd + 31 pd + 29 jns + 29 jns + 29 jns + 25 spm + 25 spm + 25 spm + 22 rob + 22 rob + 22 rob + 15 egb + 15 egb + 15 egb + 10 hm + 10 hm + 10 hm + 10 mhb + 10 mhb + 10 mhb + 6 aed + 6 aed + 6 aed + 6 cpb + 6 cpb + 6 cpb + 5 evp + 5 evp + 5 evp + 4 ber + 4 ber + 4 ber + 4 men + 4 men + 4 men + 4 mitch + 4 mitch + 4 mitch + 3 ast + 3 ast + 3 ast + 3 jfr + 3 jfr + 3 jfr + 3 lax + 3 lax + 3 lax + 3 nel + 3 nel + 3 nel + 2 blue + 2 blue + 2 blue + 2 jfk + 2 jfk + 2 jfk + 2 njas + 2 njas + 2 njas + 1 122sec + 1 122sec + 1 122sec + 1 ddwar + 1 ddwar + 1 ddwar + 1 gopi + 1 gopi + 1 gopi + 1 jk + 1 jk + 1 jk + 1 learn + 1 learn + 1 learn + 1 low + 1 low + 1 low + 1 nac + 1 nac + 1 nac + 1 sidor + 1 sidor + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.roff b/src/tool/awk/testdata/output/t.roff new file mode 100644 index 0000000..ee2a376 --- /dev/null +++ b/src/tool/awk/testdata/output/t.roff @@ -0,0 +1,74 @@ + /dev/rrp3: + /dev/rrp3: 17379 mel 16693 bwk me 16116 ken him someone else 15713 srb 11895 lem +10409 scj 10252 rhm 9853 shen 9748 a68 9492 sif 9190 pjw 8912 nls 8895 dmr +8491 cda 8372 bs 8252 llc 7450 mb 7360 ava 7273 jrv 7080 bin 7063 greg 6567 +dict 6462 lck 6291 rje 6211 lwf 5671 dave 5373 jhc 5220 agf 5167 doug 5007 +valerie 3963 jca 3895 bbs 3796 moh 3481 xchar 3200 tbl 2845 s 2774 tgs +2641 met 2566 jck 2511 port 2479 sue 2127 root 1989 bsb 1989 jeg 1933 eag +1801 pdj 1590 tpc 1385 cvw 1370 rwm 1316 avg 1205 eg 1194 jam 1153 dl 1150 +lgm 1031 cmb 1018 jwr 950 gdb 931 marc 898 usg 865 ggr 822 daemon 803 +mihalis 700 honey 624 tad 559 acs 541 uucp 523 raf 495 adh 456 kec 414 +craig 386 donmac 375 jj 348 ravi 344 drw 327 stars 288 mrg 272 jcb 263 +ralph 253 tom 251 sjb 248 haight 224 sharon 222 chuck 213 dsj 201 bill 184 +god 176 sys 166 meh 163 jon 144 dan 143 fox 123 dale 116 kab 95 buz 80 asc 79 +jas 79 trt 64 wsb 62 dwh 56 ktf 54 lr 47 dlc 45 dls 45 jwf 44 mash 43 ars 43 vgl +37 jfo 32 rab 31 pd 29 jns 25 spm 22 rob 15 egb 10 hm 10 mhb 6 aed 6 cpb 5 evp 4 ber +4 men 4 mitch 3 ast 3 jfr 3 lax 3 nel 2 blue 2 jfk 2 njas 1 122sec 1 ddwar 1 gopi 1 +jk 1 learn 1 low 1 nac 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh 6bin:*:2:2:System Tools +Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 9sys:*:4:0:System +Activity Owner:/usr/adm:/bin/sh 10adm:*:5:3:Accounting Files +Owner:/usr/adm:/bin/sh 11lp:*:9:9:Print Spooler +Owner:/var/spool/lp:/bin/sh 12auditor:*:11:0:Audit Activity +Owner:/auditor:/bin/sh 13dbadmin:*:12:0:Security Database +Owner:/dbadmin:/bin/sh 14bootes:dcon:50:1:Tom Killian (DO NOT +REMOVE):/tmp: 15cdjuke:dcon:51:1:Tom Killian (DO NOT +REMOVE):/tmp: 16rfindd:*:66:1:Rfind Daemon and +Fsdump:/var/rfindd:/bin/sh 17EZsetup:*:992:998:System +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest +Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh 2r oottcsh * 0 0 +Super-User running tcsh [cbm] / /bin/tcsh 3s ysadm * 0 0 System V +Administration /usr/admin /bin/sh 4d iag * 0 996 Hardware +Diagnostics /usr/diags /bin/csh 5d aemon * 1 1 daemons / /bin/sh 6b in * +2 2 System Tools Owner /bin /dev/null 7n uucp BJnuQbAo 6 10 UUCP.Admin +/usr/spool/uucppublic /usr/lib/uucp/uucico 8u ucp * 3 5 UUCP.Admin +/usr/lib/uucp 9s ys * 4 0 System Activity Owner /usr/adm /bin/sh 10 adm +* 5 3 Accounting Files Owner /usr/adm /bin/sh 11 lp * 9 9 Print Spooler +Owner /var/spool/lp /bin/sh 12 auditor * 11 0 Audit Activity Owner +/auditor /bin/sh 13 dbadmin * 12 0 Security Database Owner /dbadmin +/bin/sh 14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp 15 cdjuke +dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp 16 rfindd * 66 1 Rfind Daemon +and Fsdump /var/rfindd /bin/sh 17 EZsetup * 992 998 System Setup +/var/sysadmdesktop/EZsetup /bin/csh 18 demos * 993 997 +Demonstration User /usr/demos /bin/csh 19 tutor * 994 997 Tutorial +User /usr/tutor /bin/csh 20 tour * 995 997 IRIS Space Tour +/usr/people/tour /bin/csh 21 guest nfP4/Wpvio/Rw 998 998 Guest +Account /usr/people/guest /bin/csh 22 4Dgifts 0nWRTZsOMt. 999 998 +4Dgifts Account /usr/people/4Dgifts /bin/csh 23 nobody * 60001 +60001 SVR4 nobody uid /dev/null /dev/null 24 noaccess * 60002 60002 +uid no access /dev/null /dev/null 25 nobody * -2 -2 original nobody uid +/dev/null /dev/null 26 rje * 8 8 RJE Owner /usr/spool/rje 27 changes * +11 11 system change log / 28 dist sorry 9999 4 file distributions +/v/adm/dist /v/bin/sh 29 man * 99 995 On-line Manual Owner / 30 phoneca +* 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.sep b/src/tool/awk/testdata/output/t.sep new file mode 100644 index 0000000..8e06170 --- /dev/null +++ b/src/tool/awk/testdata/output/t.sep @@ -0,0 +1,93 @@ +field separator is 1 +17379 mel has 2 fields +16693 bwk me has 2 fields +16116 ken him someone else has 4 fields +15713 srb has 3 fields +11895 lem has 3 fields +10409 scj has 2 fields +10252 rhm has 2 fields + 9190 pjw has 2 fields + 8912 nls has 2 fields + 8491 cda has 2 fields + 6291 rje has 2 fields + 6211 lwf has 3 fields + 5671 dave has 2 fields + 5167 doug has 2 fields + 3481 xchar has 2 fields + 2641 met has 2 fields + 2511 port has 3 fields + 2127 root has 2 fields + 1989 bsb has 2 fields + 1989 jeg has 2 fields + 1933 eag has 2 fields + 1801 pdj has 3 fields + 1590 tpc has 2 fields + 1385 cvw has 2 fields + 1370 rwm has 2 fields + 1316 avg has 3 fields + 1205 eg has 2 fields + 1194 jam has 3 fields + 1153 dl has 3 fields + 1150 lgm has 3 fields + 1031 cmb has 3 fields + 1018 jwr has 3 fields + 931 marc has 2 fields + 541 uucp has 2 fields + 414 craig has 2 fields + 251 sjb has 2 fields + 213 dsj has 2 fields + 201 bill has 2 fields + 184 god has 2 fields + 176 sys has 2 fields + 166 meh has 2 fields + 163 jon has 2 fields + 144 dan has 2 fields + 143 fox has 2 fields + 123 dale has 2 fields + 116 kab has 3 fields + 31 pd has 2 fields + 15 egb has 2 fields + 10 hm has 2 fields + 10 mhb has 2 fields + 1 122sec has 3 fields + 1 ddwar has 2 fields + 1 gopi has 2 fields + 1 jk has 2 fields + 1 learn has 2 fields + 1 low has 2 fields + 1 nac has 2 fields + 1 sidor has 2 fields +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh has 2 fields +5daemon:*:1:1:daemons:/:/bin/sh has 3 fields +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico has 2 fields +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh has 2 fields +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh has 3 fields +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh has 4 fields +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh has 3 fields +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: has 3 fields +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: has 4 fields +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh has 3 fields +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh has 2 fields +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh has 2 fields +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh has 2 fields +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh has 2 fields +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null has 3 fields +27changes:*:11:11:system change log:/: has 5 fields +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh has 3 fields +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh has 2 fields +5d aemon * 1 1 daemons / /bin/sh has 3 fields +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico has 2 fields +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh has 2 fields +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh has 3 fields +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh has 4 fields +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh has 3 fields +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp has 3 fields +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp has 4 fields +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh has 3 fields +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh has 2 fields +18 demos * 993 997 Demonstration User /usr/demos /bin/csh has 2 fields +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh has 2 fields +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh has 2 fields +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null has 3 fields +27 changes * 11 11 system change log / has 5 fields +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh has 3 fields diff --git a/src/tool/awk/testdata/output/t.seqno b/src/tool/awk/testdata/output/t.seqno new file mode 100644 index 0000000..9aef8a5 --- /dev/null +++ b/src/tool/awk/testdata/output/t.seqno @@ -0,0 +1,199 @@ +1 /dev/rrp3: +2 +3 17379 mel +4 16693 bwk me +5 16116 ken him someone else +6 15713 srb +7 11895 lem +8 10409 scj +9 10252 rhm +10 9853 shen +11 9748 a68 +12 9492 sif +13 9190 pjw +14 8912 nls +15 8895 dmr +16 8491 cda +17 8372 bs +18 8252 llc +19 7450 mb +20 7360 ava +21 7273 jrv +22 7080 bin +23 7063 greg +24 6567 dict +25 6462 lck +26 6291 rje +27 6211 lwf +28 5671 dave +29 5373 jhc +30 5220 agf +31 5167 doug +32 5007 valerie +33 3963 jca +34 3895 bbs +35 3796 moh +36 3481 xchar +37 3200 tbl +38 2845 s +39 2774 tgs +40 2641 met +41 2566 jck +42 2511 port +43 2479 sue +44 2127 root +45 1989 bsb +46 1989 jeg +47 1933 eag +48 1801 pdj +49 1590 tpc +50 1385 cvw +51 1370 rwm +52 1316 avg +53 1205 eg +54 1194 jam +55 1153 dl +56 1150 lgm +57 1031 cmb +58 1018 jwr +59 950 gdb +60 931 marc +61 898 usg +62 865 ggr +63 822 daemon +64 803 mihalis +65 700 honey +66 624 tad +67 559 acs +68 541 uucp +69 523 raf +70 495 adh +71 456 kec +72 414 craig +73 386 donmac +74 375 jj +75 348 ravi +76 344 drw +77 327 stars +78 288 mrg +79 272 jcb +80 263 ralph +81 253 tom +82 251 sjb +83 248 haight +84 224 sharon +85 222 chuck +86 213 dsj +87 201 bill +88 184 god +89 176 sys +90 166 meh +91 163 jon +92 144 dan +93 143 fox +94 123 dale +95 116 kab +96 95 buz +97 80 asc +98 79 jas +99 79 trt +100 64 wsb +101 62 dwh +102 56 ktf +103 54 lr +104 47 dlc +105 45 dls +106 45 jwf +107 44 mash +108 43 ars +109 43 vgl +110 37 jfo +111 32 rab +112 31 pd +113 29 jns +114 25 spm +115 22 rob +116 15 egb +117 10 hm +118 10 mhb +119 6 aed +120 6 cpb +121 5 evp +122 4 ber +123 4 men +124 4 mitch +125 3 ast +126 3 jfr +127 3 lax +128 3 nel +129 2 blue +130 2 jfk +131 2 njas +132 1 122sec +133 1 ddwar +134 1 gopi +135 1 jk +136 1 learn +137 1 low +138 1 nac +139 1 sidor +140 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +141 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +142 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +143 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +144 5daemon:*:1:1:daemons:/:/bin/sh +145 6bin:*:2:2:System Tools Owner:/bin:/dev/null +146 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +147 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +148 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +149 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +150 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +151 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +152 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +153 14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +154 15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +155 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +156 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +157 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +158 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +159 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +160 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +161 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +162 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +163 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +164 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +165 26rje:*:8:8:RJE Owner:/usr/spool/rje: +166 27changes:*:11:11:system change log:/: +167 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +168 29man:*:99:995:On-line Manual Owner:/: +169 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +170 1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +171 2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +172 3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +173 4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +174 5d aemon * 1 1 daemons / /bin/sh +175 6b in * 2 2 System Tools Owner /bin /dev/null +176 7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +177 8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +178 9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +179 10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +180 11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +181 12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +182 13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +183 14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +184 15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +185 16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +186 17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +187 18 demos * 993 997 Demonstration User /usr/demos /bin/csh +188 19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +189 20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +190 21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +191 22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +192 23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +193 24 noaccess * 60002 60002 uid no access /dev/null /dev/null +194 25 nobody * -2 -2 original nobody uid /dev/null /dev/null +195 26 rje * 8 8 RJE Owner /usr/spool/rje +196 27 changes * 11 11 system change log / +197 28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +198 29 man * 99 995 On-line Manual Owner / +199 30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.set0 b/src/tool/awk/testdata/output/t.set0 new file mode 100644 index 0000000..0d6a06f --- /dev/null +++ b/src/tool/awk/testdata/output/t.set0 @@ -0,0 +1,1393 @@ +/dev/rrp3: +1 /dev/rrp3: + +/dev/rrp3: +1 /dev/rrp3: + +1 + +0 + + +0 + +1 +17379 +1 17379 + +17379 +1 17379 + +17380 +16693 +1 16693 + +16693 +1 16693 + +16694 +16116 +1 16116 + +16116 +1 16116 + +16117 +15713 +1 15713 + +15713 +1 15713 + +15714 +11895 +1 11895 + +11895 +1 11895 + +11896 +10409 +1 10409 + +10409 +1 10409 + +10410 +10252 +1 10252 + +10252 +1 10252 + +10253 +9853 +1 9853 + +9853 +1 9853 + +9854 +9748 +1 9748 + +9748 +1 9748 + +9749 +9492 +1 9492 + +9492 +1 9492 + +9493 +9190 +1 9190 + +9190 +1 9190 + +9191 +8912 +1 8912 + +8912 +1 8912 + +8913 +8895 +1 8895 + +8895 +1 8895 + +8896 +8491 +1 8491 + +8491 +1 8491 + +8492 +8372 +1 8372 + +8372 +1 8372 + +8373 +8252 +1 8252 + +8252 +1 8252 + +8253 +7450 +1 7450 + +7450 +1 7450 + +7451 +7360 +1 7360 + +7360 +1 7360 + +7361 +7273 +1 7273 + +7273 +1 7273 + +7274 +7080 +1 7080 + +7080 +1 7080 + +7081 +7063 +1 7063 + +7063 +1 7063 + +7064 +6567 +1 6567 + +6567 +1 6567 + +6568 +6462 +1 6462 + +6462 +1 6462 + +6463 +6291 +1 6291 + +6291 +1 6291 + +6292 +6211 +1 6211 + +6211 +1 6211 + +6212 +5671 +1 5671 + +5671 +1 5671 + +5672 +5373 +1 5373 + +5373 +1 5373 + +5374 +5220 +1 5220 + +5220 +1 5220 + +5221 +5167 +1 5167 + +5167 +1 5167 + +5168 +5007 +1 5007 + +5007 +1 5007 + +5008 +3963 +1 3963 + +3963 +1 3963 + +3964 +3895 +1 3895 + +3895 +1 3895 + +3896 +3796 +1 3796 + +3796 +1 3796 + +3797 +3481 +1 3481 + +3481 +1 3481 + +3482 +3200 +1 3200 + +3200 +1 3200 + +3201 +2845 +1 2845 + +2845 +1 2845 + +2846 +2774 +1 2774 + +2774 +1 2774 + +2775 +2641 +1 2641 + +2641 +1 2641 + +2642 +2566 +1 2566 + +2566 +1 2566 + +2567 +2511 +1 2511 + +2511 +1 2511 + +2512 +2479 +1 2479 + +2479 +1 2479 + +2480 +2127 +1 2127 + +2127 +1 2127 + +2128 +1989 +1 1989 + +1989 +1 1989 + +1990 +1989 +1 1989 + +1989 +1 1989 + +1990 +1933 +1 1933 + +1933 +1 1933 + +1934 +1801 +1 1801 + +1801 +1 1801 + +1802 +1590 +1 1590 + +1590 +1 1590 + +1591 +1385 +1 1385 + +1385 +1 1385 + +1386 +1370 +1 1370 + +1370 +1 1370 + +1371 +1316 +1 1316 + +1316 +1 1316 + +1317 +1205 +1 1205 + +1205 +1 1205 + +1206 +1194 +1 1194 + +1194 +1 1194 + +1195 +1153 +1 1153 + +1153 +1 1153 + +1154 +1150 +1 1150 + +1150 +1 1150 + +1151 +1031 +1 1031 + +1031 +1 1031 + +1032 +1018 +1 1018 + +1018 +1 1018 + +1019 +950 +1 950 + +950 +1 950 + +951 +931 +1 931 + +931 +1 931 + +932 +898 +1 898 + +898 +1 898 + +899 +865 +1 865 + +865 +1 865 + +866 +822 +1 822 + +822 +1 822 + +823 +803 +1 803 + +803 +1 803 + +804 +700 +1 700 + +700 +1 700 + +701 +624 +1 624 + +624 +1 624 + +625 +559 +1 559 + +559 +1 559 + +560 +541 +1 541 + +541 +1 541 + +542 +523 +1 523 + +523 +1 523 + +524 +495 +1 495 + +495 +1 495 + +496 +456 +1 456 + +456 +1 456 + +457 +414 +1 414 + +414 +1 414 + +415 +386 +1 386 + +386 +1 386 + +387 +375 +1 375 + +375 +1 375 + +376 +348 +1 348 + +348 +1 348 + +349 +344 +1 344 + +344 +1 344 + +345 +327 +1 327 + +327 +1 327 + +328 +288 +1 288 + +288 +1 288 + +289 +272 +1 272 + +272 +1 272 + +273 +263 +1 263 + +263 +1 263 + +264 +253 +1 253 + +253 +1 253 + +254 +251 +1 251 + +251 +1 251 + +252 +248 +1 248 + +248 +1 248 + +249 +224 +1 224 + +224 +1 224 + +225 +222 +1 222 + +222 +1 222 + +223 +213 +1 213 + +213 +1 213 + +214 +201 +1 201 + +201 +1 201 + +202 +184 +1 184 + +184 +1 184 + +185 +176 +1 176 + +176 +1 176 + +177 +166 +1 166 + +166 +1 166 + +167 +163 +1 163 + +163 +1 163 + +164 +144 +1 144 + +144 +1 144 + +145 +143 +1 143 + +143 +1 143 + +144 +123 +1 123 + +123 +1 123 + +124 +116 +1 116 + +116 +1 116 + +117 +95 +1 95 + +95 +1 95 + +96 +80 +1 80 + +80 +1 80 + +81 +79 +1 79 + +79 +1 79 + +80 +79 +1 79 + +79 +1 79 + +80 +64 +1 64 + +64 +1 64 + +65 +62 +1 62 + +62 +1 62 + +63 +56 +1 56 + +56 +1 56 + +57 +54 +1 54 + +54 +1 54 + +55 +47 +1 47 + +47 +1 47 + +48 +45 +1 45 + +45 +1 45 + +46 +45 +1 45 + +45 +1 45 + +46 +44 +1 44 + +44 +1 44 + +45 +43 +1 43 + +43 +1 43 + +44 +43 +1 43 + +43 +1 43 + +44 +37 +1 37 + +37 +1 37 + +38 +32 +1 32 + +32 +1 32 + +33 +31 +1 31 + +31 +1 31 + +32 +29 +1 29 + +29 +1 29 + +30 +25 +1 25 + +25 +1 25 + +26 +22 +1 22 + +22 +1 22 + +23 +15 +1 15 + +15 +1 15 + +16 +10 +1 10 + +10 +1 10 + +11 +10 +1 10 + +10 +1 10 + +11 +6 +1 6 + +6 +1 6 + +7 +6 +1 6 + +6 +1 6 + +7 +5 +1 5 + +5 +1 5 + +6 +4 +1 4 + +4 +1 4 + +5 +4 +1 4 + +4 +1 4 + +5 +4 +1 4 + +4 +1 4 + +5 +3 +1 3 + +3 +1 3 + +4 +3 +1 3 + +3 +1 3 + +4 +3 +1 3 + +3 +1 3 + +4 +3 +1 3 + +3 +1 3 + +4 +2 +1 2 + +2 +1 2 + +3 +2 +1 2 + +2 +1 2 + +3 +2 +1 2 + +2 +1 2 + +3 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1 +1 1 + +1 +1 1 + +2 +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +1 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + +2 +2roottcsh:*:0:0:Super-User +1 2roottcsh:*:0:0:Super-User + +2roottcsh:*:0:0:Super-User +1 2roottcsh:*:0:0:Super-User + +3 +3sysadm:*:0:0:System +1 3sysadm:*:0:0:System + +3sysadm:*:0:0:System +1 3sysadm:*:0:0:System + +4 +4diag:*:0:996:Hardware +1 4diag:*:0:996:Hardware + +4diag:*:0:996:Hardware +1 4diag:*:0:996:Hardware + +5 +5daemon:*:1:1:daemons:/:/bin/sh +1 5daemon:*:1:1:daemons:/:/bin/sh + +5daemon:*:1:1:daemons:/:/bin/sh +1 5daemon:*:1:1:daemons:/:/bin/sh + +6 +6bin:*:2:2:System +1 6bin:*:2:2:System + +6bin:*:2:2:System +1 6bin:*:2:2:System + +7 +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +1 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + +8 +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +1 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + +9 +9sys:*:4:0:System +1 9sys:*:4:0:System + +9sys:*:4:0:System +1 9sys:*:4:0:System + +10 +10adm:*:5:3:Accounting +1 10adm:*:5:3:Accounting + +10adm:*:5:3:Accounting +1 10adm:*:5:3:Accounting + +11 +11lp:*:9:9:Print +1 11lp:*:9:9:Print + +11lp:*:9:9:Print +1 11lp:*:9:9:Print + +12 +12auditor:*:11:0:Audit +1 12auditor:*:11:0:Audit + +12auditor:*:11:0:Audit +1 12auditor:*:11:0:Audit + +13 +13dbadmin:*:12:0:Security +1 13dbadmin:*:12:0:Security + +13dbadmin:*:12:0:Security +1 13dbadmin:*:12:0:Security + +14 +14bootes:dcon:50:1:Tom +1 14bootes:dcon:50:1:Tom + +14bootes:dcon:50:1:Tom +1 14bootes:dcon:50:1:Tom + +15 +15cdjuke:dcon:51:1:Tom +1 15cdjuke:dcon:51:1:Tom + +15cdjuke:dcon:51:1:Tom +1 15cdjuke:dcon:51:1:Tom + +16 +16rfindd:*:66:1:Rfind +1 16rfindd:*:66:1:Rfind + +16rfindd:*:66:1:Rfind +1 16rfindd:*:66:1:Rfind + +17 +17EZsetup:*:992:998:System +1 17EZsetup:*:992:998:System + +17EZsetup:*:992:998:System +1 17EZsetup:*:992:998:System + +18 +18demos:*:993:997:Demonstration +1 18demos:*:993:997:Demonstration + +18demos:*:993:997:Demonstration +1 18demos:*:993:997:Demonstration + +19 +19tutor:*:994:997:Tutorial +1 19tutor:*:994:997:Tutorial + +19tutor:*:994:997:Tutorial +1 19tutor:*:994:997:Tutorial + +20 +20tour:*:995:997:IRIS +1 20tour:*:995:997:IRIS + +20tour:*:995:997:IRIS +1 20tour:*:995:997:IRIS + +21 +21guest:nfP4/Wpvio/Rw:998:998:Guest +1 21guest:nfP4/Wpvio/Rw:998:998:Guest + +21guest:nfP4/Wpvio/Rw:998:998:Guest +1 21guest:nfP4/Wpvio/Rw:998:998:Guest + +22 +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +1 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + +225 +23nobody:*:60001:60001:SVR4 +1 23nobody:*:60001:60001:SVR4 + +23nobody:*:60001:60001:SVR4 +1 23nobody:*:60001:60001:SVR4 + +24 +24noaccess:*:60002:60002:uid +1 24noaccess:*:60002:60002:uid + +24noaccess:*:60002:60002:uid +1 24noaccess:*:60002:60002:uid + +25 +25nobody:*:-2:-2:original +1 25nobody:*:-2:-2:original + +25nobody:*:-2:-2:original +1 25nobody:*:-2:-2:original + +26 +26rje:*:8:8:RJE +1 26rje:*:8:8:RJE + +26rje:*:8:8:RJE +1 26rje:*:8:8:RJE + +27 +27changes:*:11:11:system +1 27changes:*:11:11:system + +27changes:*:11:11:system +1 27changes:*:11:11:system + +28 +28dist:sorry:9999:4:file +1 28dist:sorry:9999:4:file + +28dist:sorry:9999:4:file +1 28dist:sorry:9999:4:file + +29 +29man:*:99:995:On-line +1 29man:*:99:995:On-line + +29man:*:99:995:On-line +1 29man:*:99:995:On-line + +30 +30phoneca:*:991:991:phone +1 30phoneca:*:991:991:phone + +30phoneca:*:991:991:phone +1 30phoneca:*:991:991:phone + +31 +1r +1 1r + +1r +1 1r + +2 +2r +1 2r + +2r +1 2r + +3 +3s +1 3s + +3s +1 3s + +4 +4d +1 4d + +4d +1 4d + +5 +5d +1 5d + +5d +1 5d + +6 +6b +1 6b + +6b +1 6b + +7 +7n +1 7n + +7n +1 7n + +8 +8u +1 8u + +8u +1 8u + +9 +9s +1 9s + +9s +1 9s + +10 +10 +1 10 + +10 +1 10 + +11 +11 +1 11 + +11 +1 11 + +12 +12 +1 12 + +12 +1 12 + +13 +13 +1 13 + +13 +1 13 + +14 +14 +1 14 + +14 +1 14 + +15 +15 +1 15 + +15 +1 15 + +16 +16 +1 16 + +16 +1 16 + +17 +17 +1 17 + +17 +1 17 + +18 +18 +1 18 + +18 +1 18 + +19 +19 +1 19 + +19 +1 19 + +20 +20 +1 20 + +20 +1 20 + +21 +21 +1 21 + +21 +1 21 + +22 +22 +1 22 + +22 +1 22 + +23 +23 +1 23 + +23 +1 23 + +24 +24 +1 24 + +24 +1 24 + +25 +25 +1 25 + +25 +1 25 + +26 +26 +1 26 + +26 +1 26 + +27 +27 +1 27 + +27 +1 27 + +28 +28 +1 28 + +28 +1 28 + +29 +29 +1 29 + +29 +1 29 + +30 +30 +1 30 + +30 +1 30 + +31 diff --git a/src/tool/awk/testdata/output/t.set0a b/src/tool/awk/testdata/output/t.set0a new file mode 100644 index 0000000..68d80e1 --- /dev/null +++ b/src/tool/awk/testdata/output/t.set0a @@ -0,0 +1,597 @@ + +0 + + +0 + +mel +1 mel +mel +bwk +1 bwk +bwk +ken +1 ken +ken +srb +1 srb +srb +lem +1 lem +lem +scj +1 scj +scj +rhm +1 rhm +rhm +shen +1 shen +shen +a68 +1 a68 +a68 +sif +1 sif +sif +pjw +1 pjw +pjw +nls +1 nls +nls +dmr +1 dmr +dmr +cda +1 cda +cda +bs +1 bs +bs +llc +1 llc +llc +mb +1 mb +mb +ava +1 ava +ava +jrv +1 jrv +jrv +bin +1 bin +bin +greg +1 greg +greg +dict +1 dict +dict +lck +1 lck +lck +rje +1 rje +rje +lwf +1 lwf +lwf +dave +1 dave +dave +jhc +1 jhc +jhc +agf +1 agf +agf +doug +1 doug +doug +valerie +1 valerie +valerie +jca +1 jca +jca +bbs +1 bbs +bbs +moh +1 moh +moh +xchar +1 xchar +xchar +tbl +1 tbl +tbl +s +1 s +s +tgs +1 tgs +tgs +met +1 met +met +jck +1 jck +jck +port +1 port +port +sue +1 sue +sue +root +1 root +root +bsb +1 bsb +bsb +jeg +1 jeg +jeg +eag +1 eag +eag +pdj +1 pdj +pdj +tpc +1 tpc +tpc +cvw +1 cvw +cvw +rwm +1 rwm +rwm +avg +1 avg +avg +eg +1 eg +eg +jam +1 jam +jam +dl +1 dl +dl +lgm +1 lgm +lgm +cmb +1 cmb +cmb +jwr +1 jwr +jwr +gdb +1 gdb +gdb +marc +1 marc +marc +usg +1 usg +usg +ggr +1 ggr +ggr +daemon +1 daemon +daemon +mihalis +1 mihalis +mihalis +honey +1 honey +honey +tad +1 tad +tad +acs +1 acs +acs +uucp +1 uucp +uucp +raf +1 raf +raf +adh +1 adh +adh +kec +1 kec +kec +craig +1 craig +craig +donmac +1 donmac +donmac +jj +1 jj +jj +ravi +1 ravi +ravi +drw +1 drw +drw +stars +1 stars +stars +mrg +1 mrg +mrg +jcb +1 jcb +jcb +ralph +1 ralph +ralph +tom +1 tom +tom +sjb +1 sjb +sjb +haight +1 haight +haight +sharon +1 sharon +sharon +chuck +1 chuck +chuck +dsj +1 dsj +dsj +bill +1 bill +bill +god +1 god +god +sys +1 sys +sys +meh +1 meh +meh +jon +1 jon +jon +dan +1 dan +dan +fox +1 fox +fox +dale +1 dale +dale +kab +1 kab +kab +buz +1 buz +buz +asc +1 asc +asc +jas +1 jas +jas +trt +1 trt +trt +wsb +1 wsb +wsb +dwh +1 dwh +dwh +ktf +1 ktf +ktf +lr +1 lr +lr +dlc +1 dlc +dlc +dls +1 dls +dls +jwf +1 jwf +jwf +mash +1 mash +mash +ars +1 ars +ars +vgl +1 vgl +vgl +jfo +1 jfo +jfo +rab +1 rab +rab +pd +1 pd +pd +jns +1 jns +jns +spm +1 spm +spm +rob +1 rob +rob +egb +1 egb +egb +hm +1 hm +hm +mhb +1 mhb +mhb +aed +1 aed +aed +cpb +1 cpb +cpb +evp +1 evp +evp +ber +1 ber +ber +men +1 men +men +mitch +1 mitch +mitch +ast +1 ast +ast +jfr +1 jfr +jfr +lax +1 lax +lax +nel +1 nel +nel +blue +1 blue +blue +jfk +1 jfk +jfk +njas +1 njas +njas +122sec +1 122sec +122sec +ddwar +1 ddwar +ddwar +gopi +1 gopi +gopi +jk +1 jk +jk +learn +1 learn +learn +low +1 low +low +nac +1 nac +nac +sidor +1 sidor +sidor + +0 + +running +1 running +running +V +1 V +V +Diagnostics:/usr/diags:/bin/csh +1 Diagnostics:/usr/diags:/bin/csh +Diagnostics:/usr/diags:/bin/csh + +0 + +Tools +1 Tools +Tools + +0 + + +0 + +Activity +1 Activity +Activity +Files +1 Files +Files +Spooler +1 Spooler +Spooler +Activity +1 Activity +Activity +Database +1 Database +Database +Killian +1 Killian +Killian +Killian +1 Killian +Killian +Daemon +1 Daemon +Daemon +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +User:/usr/demos:/bin/csh +1 User:/usr/demos:/bin/csh +User:/usr/demos:/bin/csh +User:/usr/tutor:/bin/csh +1 User:/usr/tutor:/bin/csh +User:/usr/tutor:/bin/csh +Space +1 Space +Space +Account:/usr/people/guest:/bin/csh +1 Account:/usr/people/guest:/bin/csh +Account:/usr/people/guest:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +1 Account:/usr/people/4Dgifts:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +nobody +1 nobody +nobody +no +1 no +no +nobody +1 nobody +nobody +Owner:/usr/spool/rje: +1 Owner:/usr/spool/rje: +Owner:/usr/spool/rje: +change +1 change +change +distributions:/v/adm/dist:/v/bin/sh +1 distributions:/v/adm/dist:/v/bin/sh +distributions:/v/adm/dist:/v/bin/sh +Manual +1 Manual +Manual +call +1 call +call +oot +1 oot +oot +oottcsh +1 oottcsh +oottcsh +ysadm +1 ysadm +ysadm +iag +1 iag +iag +aemon +1 aemon +aemon +in +1 in +in +uucp +1 uucp +uucp +ucp +1 ucp +ucp +ys +1 ys +ys +adm +1 adm +adm +lp +1 lp +lp +auditor +1 auditor +auditor +dbadmin +1 dbadmin +dbadmin +bootes +1 bootes +bootes +cdjuke +1 cdjuke +cdjuke +rfindd +1 rfindd +rfindd +EZsetup +1 EZsetup +EZsetup +demos +1 demos +demos +tutor +1 tutor +tutor +tour +1 tour +tour +guest +1 guest +guest +4Dgifts +1 4Dgifts +4Dgifts +nobody +1 nobody +nobody +noaccess +1 noaccess +noaccess +nobody +1 nobody +nobody +rje +1 rje +rje +changes +1 changes +changes +dist +1 dist +dist +man +1 man +man +phoneca +1 phoneca +phoneca diff --git a/src/tool/awk/testdata/output/t.set0b b/src/tool/awk/testdata/output/t.set0b new file mode 100644 index 0000000..c80cc72 --- /dev/null +++ b/src/tool/awk/testdata/output/t.set0b @@ -0,0 +1,597 @@ + + + + + + +mel +mel +mel +bwk +bwk +bwk +ken +ken +ken +srb +srb +srb +lem +lem +lem +scj +scj +scj +rhm +rhm +rhm +shen +shen +shen +a68 +a68 +a68 +sif +sif +sif +pjw +pjw +pjw +nls +nls +nls +dmr +dmr +dmr +cda +cda +cda +bs +bs +bs +llc +llc +llc +mb +mb +mb +ava +ava +ava +jrv +jrv +jrv +bin +bin +bin +greg +greg +greg +dict +dict +dict +lck +lck +lck +rje +rje +rje +lwf +lwf +lwf +dave +dave +dave +jhc +jhc +jhc +agf +agf +agf +doug +doug +doug +valerie +valerie +valerie +jca +jca +jca +bbs +bbs +bbs +moh +moh +moh +xchar +xchar +xchar +tbl +tbl +tbl +s +s +s +tgs +tgs +tgs +met +met +met +jck +jck +jck +port +port +port +sue +sue +sue +root +root +root +bsb +bsb +bsb +jeg +jeg +jeg +eag +eag +eag +pdj +pdj +pdj +tpc +tpc +tpc +cvw +cvw +cvw +rwm +rwm +rwm +avg +avg +avg +eg +eg +eg +jam +jam +jam +dl +dl +dl +lgm +lgm +lgm +cmb +cmb +cmb +jwr +jwr +jwr +gdb +gdb +gdb +marc +marc +marc +usg +usg +usg +ggr +ggr +ggr +daemon +daemon +daemon +mihalis +mihalis +mihalis +honey +honey +honey +tad +tad +tad +acs +acs +acs +uucp +uucp +uucp +raf +raf +raf +adh +adh +adh +kec +kec +kec +craig +craig +craig +donmac +donmac +donmac +jj +jj +jj +ravi +ravi +ravi +drw +drw +drw +stars +stars +stars +mrg +mrg +mrg +jcb +jcb +jcb +ralph +ralph +ralph +tom +tom +tom +sjb +sjb +sjb +haight +haight +haight +sharon +sharon +sharon +chuck +chuck +chuck +dsj +dsj +dsj +bill +bill +bill +god +god +god +sys +sys +sys +meh +meh +meh +jon +jon +jon +dan +dan +dan +fox +fox +fox +dale +dale +dale +kab +kab +kab +buz +buz +buz +asc +asc +asc +jas +jas +jas +trt +trt +trt +wsb +wsb +wsb +dwh +dwh +dwh +ktf +ktf +ktf +lr +lr +lr +dlc +dlc +dlc +dls +dls +dls +jwf +jwf +jwf +mash +mash +mash +ars +ars +ars +vgl +vgl +vgl +jfo +jfo +jfo +rab +rab +rab +pd +pd +pd +jns +jns +jns +spm +spm +spm +rob +rob +rob +egb +egb +egb +hm +hm +hm +mhb +mhb +mhb +aed +aed +aed +cpb +cpb +cpb +evp +evp +evp +ber +ber +ber +men +men +men +mitch +mitch +mitch +ast +ast +ast +jfr +jfr +jfr +lax +lax +lax +nel +nel +nel +blue +blue +blue +jfk +jfk +jfk +njas +njas +njas +122sec +122sec +122sec +ddwar +ddwar +ddwar +gopi +gopi +gopi +jk +jk +jk +learn +learn +learn +low +low +low +nac +nac +nac +sidor +sidor +sidor + + + +running +running +running +V +V +V +Diagnostics:/usr/diags:/bin/csh +Diagnostics:/usr/diags:/bin/csh +Diagnostics:/usr/diags:/bin/csh + + + +Tools +Tools +Tools + + + + + + +Activity +Activity +Activity +Files +Files +Files +Spooler +Spooler +Spooler +Activity +Activity +Activity +Database +Database +Database +Killian +Killian +Killian +Killian +Killian +Killian +Daemon +Daemon +Daemon +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +User:/usr/demos:/bin/csh +User:/usr/demos:/bin/csh +User:/usr/demos:/bin/csh +User:/usr/tutor:/bin/csh +User:/usr/tutor:/bin/csh +User:/usr/tutor:/bin/csh +Space +Space +Space +Account:/usr/people/guest:/bin/csh +Account:/usr/people/guest:/bin/csh +Account:/usr/people/guest:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +nobody +nobody +nobody +no +no +no +nobody +nobody +nobody +Owner:/usr/spool/rje: +Owner:/usr/spool/rje: +Owner:/usr/spool/rje: +change +change +change +distributions:/v/adm/dist:/v/bin/sh +distributions:/v/adm/dist:/v/bin/sh +distributions:/v/adm/dist:/v/bin/sh +Manual +Manual +Manual +call +call +call +oot +oot +oot +oottcsh +oottcsh +oottcsh +ysadm +ysadm +ysadm +iag +iag +iag +aemon +aemon +aemon +in +in +in +uucp +uucp +uucp +ucp +ucp +ucp +ys +ys +ys +adm +adm +adm +lp +lp +lp +auditor +auditor +auditor +dbadmin +dbadmin +dbadmin +bootes +bootes +bootes +cdjuke +cdjuke +cdjuke +rfindd +rfindd +rfindd +EZsetup +EZsetup +EZsetup +demos +demos +demos +tutor +tutor +tutor +tour +tour +tour +guest +guest +guest +4Dgifts +4Dgifts +4Dgifts +nobody +nobody +nobody +noaccess +noaccess +noaccess +nobody +nobody +nobody +rje +rje +rje +changes +changes +changes +dist +dist +dist +man +man +man +phoneca +phoneca +phoneca diff --git a/src/tool/awk/testdata/output/t.set1 b/src/tool/awk/testdata/output/t.set1 new file mode 100644 index 0000000..03e593e --- /dev/null +++ b/src/tool/awk/testdata/output/t.set1 @@ -0,0 +1,398 @@ +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/src/tool/awk/testdata/output/t.set2 b/src/tool/awk/testdata/output/t.set2 new file mode 100644 index 0000000..98d0130 --- /dev/null +++ b/src/tool/awk/testdata/output/t.set2 @@ -0,0 +1,199 @@ + + +mel mel +bwk +ken +srb srb +lem lem +scj scj +rhm rhm +shen +a68 a68 +sif sif +pjw pjw +nls nls +dmr dmr +cda cda +bs +llc llc +mb +ava ava +jrv jrv +bin bin +greg +dict +lck lck +rje rje +lwf lwf +dave +jhc jhc +agf agf +doug +valerie valerie +jca jca +bbs bbs +moh moh +xchar xchar +tbl tbl +s s +tgs tgs +met met +jck jck +port +sue sue +root +bsb bsb +jeg jeg +eag eag +pdj pdj +tpc tpc +cvw cvw +rwm rwm +avg avg +eg +jam jam +dl +lgm lgm +cmb cmb +jwr jwr +gdb gdb +marc +usg usg +ggr ggr +daemon +mihalis mihalis +honey honey +tad tad +acs acs +uucp +raf raf +adh adh +kec kec +craig craig +donmac +jj +ravi +drw drw +stars stars +mrg mrg +jcb jcb +ralph ralph +tom tom +sjb sjb +haight +sharon +chuck chuck +dsj dsj +bill +god god +sys sys +meh meh +jon jon +dan dan +fox fox +dale +kab kab +buz buz +asc asc +jas jas +trt trt +wsb wsb +dwh dwh +ktf ktf +lr +dlc dlc +dls dls +jwf jwf +mash +ars ars +vgl vgl +jfo jfo +rab rab +pd +jns jns +spm spm +rob rob +egb egb +hm +mhb mhb +aed aed +cpb cpb +evp evp +ber ber +men men +mitch mitch +ast ast +jfr jfr +lax lax +nel nel +blue +jfk jfk +njas +122sec +ddwar ddwar +gopi +jk +learn learn +low low +nac nac +sidor sidor + +running running tcsh [cbm]:/:/bin/tcsh +V +Diagnostics:/usr/diags:/bin/csh + +Tools + + +Activity Activity Owner:/usr/adm:/bin/sh +Files Files Owner:/usr/adm:/bin/sh +Spooler +Activity +Database Database Owner:/dbadmin:/bin/sh +Killian +Killian +Daemon Daemon and Fsdump:/var/rfindd:/bin/sh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +User:/usr/demos:/bin/csh +User:/usr/tutor:/bin/csh User:/usr/tutor:/bin/csh +Space +Account:/usr/people/guest:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh +nobody +no +nobody +Owner:/usr/spool/rje: Owner:/usr/spool/rje: +change +distributions:/v/adm/dist:/v/bin/sh +Manual +call call log [tom]:/v/adm/log:/v/bin/sh +oot oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +oottcsh +ysadm ysadm * 0 0 System V Administration /usr/admin /bin/sh +iag iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +aemon +in in * 2 2 System Tools Owner /bin /dev/null +uucp uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +ucp +ys +adm +lp lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +auditor auditor * 11 0 Audit Activity Owner /auditor /bin/sh +dbadmin +bootes bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +cdjuke cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +rfindd +EZsetup EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +demos demos * 993 997 Demonstration User /usr/demos /bin/csh +tutor +tour tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +guest guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +4Dgifts 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +nobody nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +noaccess noaccess * 60002 60002 uid no access /dev/null /dev/null +nobody nobody * -2 -2 original nobody uid /dev/null /dev/null +rje +changes changes * 11 11 system change log / +dist dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +man man * 99 995 On-line Manual Owner / +phoneca diff --git a/src/tool/awk/testdata/output/t.set3 b/src/tool/awk/testdata/output/t.set3 new file mode 100644 index 0000000..5430900 --- /dev/null +++ b/src/tool/awk/testdata/output/t.set3 @@ -0,0 +1,199 @@ +0 +0 +1737.9 mel +1669.3 bwk me +1611.6 ken him someone else +1571.3 srb +1189.5 lem +1040.9 scj +1025.2 rhm +985.3 shen +974.8 a68 +949.2 sif +919 pjw +891.2 nls +889.5 dmr +849.1 cda +837.2 bs +825.2 llc +745 mb +736 ava +727.3 jrv +708 bin +706.3 greg +656.7 dict +646.2 lck +629.1 rje +621.1 lwf +567.1 dave +537.3 jhc +522 agf +516.7 doug +500.7 valerie +396.3 jca +389.5 bbs +379.6 moh +348.1 xchar +320 tbl +284.5 s +277.4 tgs +264.1 met +256.6 jck +251.1 port +247.9 sue +212.7 root +198.9 bsb +198.9 jeg +193.3 eag +180.1 pdj +159 tpc +138.5 cvw +137 rwm +131.6 avg +120.5 eg +119.4 jam +115.3 dl +115 lgm +103.1 cmb +101.8 jwr +95 gdb +93.1 marc +89.8 usg +86.5 ggr +82.2 daemon +80.3 mihalis +70 honey +62.4 tad +55.9 acs +54.1 uucp +52.3 raf +49.5 adh +45.6 kec +41.4 craig +38.6 donmac +37.5 jj +34.8 ravi +34.4 drw +32.7 stars +28.8 mrg +27.2 jcb +26.3 ralph +25.3 tom +25.1 sjb +24.8 haight +22.4 sharon +22.2 chuck +21.3 dsj +20.1 bill +18.4 god +17.6 sys +16.6 meh +16.3 jon +14.4 dan +14.3 fox +12.3 dale +11.6 kab +9.5 buz +8 asc +7.9 jas +7.9 trt +6.4 wsb +6.2 dwh +5.6 ktf +5.4 lr +4.7 dlc +4.5 dls +4.5 jwf +4.4 mash +4.3 ars +4.3 vgl +3.7 jfo +3.2 rab +3.1 pd +2.9 jns +2.5 spm +2.2 rob +1.5 egb +1 hm +1 mhb +0.6 aed +0.6 cpb +0.5 evp +0.4 ber +0.4 men +0.4 mitch +0.3 ast +0.3 jfr +0.3 lax +0.3 nel +0.2 blue +0.2 jfk +0.2 njas +0.1 122sec +0.1 ddwar +0.1 gopi +0.1 jk +0.1 learn +0.1 low +0.1 nac +0.1 sidor +0.1 +0.2 running tcsh [cbm]:/:/bin/tcsh +0.3 V Administration:/usr/admin:/bin/sh +0.4 Diagnostics:/usr/diags:/bin/csh +0.5 +0.6 Tools Owner:/bin:/dev/null +0.7 +0.8 +0.9 Activity Owner:/usr/adm:/bin/sh +1 Files Owner:/usr/adm:/bin/sh +1.1 Spooler Owner:/var/spool/lp:/bin/sh +1.2 Activity Owner:/auditor:/bin/sh +1.3 Database Owner:/dbadmin:/bin/sh +1.4 Killian (DO NOT REMOVE):/tmp: +1.5 Killian (DO NOT REMOVE):/tmp: +1.6 Daemon and Fsdump:/var/rfindd:/bin/sh +1.7 Setup:/var/sysadmdesktop/EZsetup:/bin/csh +1.8 User:/usr/demos:/bin/csh +1.9 User:/usr/tutor:/bin/csh +2 Space Tour:/usr/people/tour:/bin/csh +2.1 Account:/usr/people/guest:/bin/csh +22.4 Account:/usr/people/4Dgifts:/bin/csh +2.3 nobody uid:/dev/null:/dev/null +2.4 no access:/dev/null:/dev/null +2.5 nobody uid:/dev/null:/dev/null +2.6 Owner:/usr/spool/rje: +2.7 change log:/: +2.8 distributions:/v/adm/dist:/v/bin/sh +2.9 Manual Owner:/: +3 call log [tom]:/v/adm/log:/v/bin/sh +0.1 oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +0.2 oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +0.3 ysadm * 0 0 System V Administration /usr/admin /bin/sh +0.4 iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +0.5 aemon * 1 1 daemons / /bin/sh +0.6 in * 2 2 System Tools Owner /bin /dev/null +0.7 uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +0.8 ucp * 3 5 UUCP.Admin /usr/lib/uucp +0.9 ys * 4 0 System Activity Owner /usr/adm /bin/sh +1 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +1.1 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +1.2 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +1.3 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +1.4 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +1.5 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +1.6 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +1.7 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +1.8 demos * 993 997 Demonstration User /usr/demos /bin/csh +1.9 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +2 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +2.1 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +2.2 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +2.3 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +2.4 noaccess * 60002 60002 uid no access /dev/null /dev/null +2.5 nobody * -2 -2 original nobody uid /dev/null /dev/null +2.6 rje * 8 8 RJE Owner /usr/spool/rje +2.7 changes * 11 11 system change log / +2.8 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +2.9 man * 99 995 On-line Manual Owner / +3 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.split2 b/src/tool/awk/testdata/output/t.split2 new file mode 100644 index 0000000..00cf8de --- /dev/null +++ b/src/tool/awk/testdata/output/t.split2 @@ -0,0 +1,199 @@ + /dev/rrp3: + +mel 17379 +bwk 16693 +ken 16116 +srb 15713 +lem 11895 +scj 10409 +rhm 10252 +shen 9853 +a68 9748 +sif 9492 +pjw 9190 +nls 8912 +dmr 8895 +cda 8491 +bs 8372 +llc 8252 +mb 7450 +ava 7360 +jrv 7273 +bin 7080 +greg 7063 +dict 6567 +lck 6462 +rje 6291 +lwf 6211 +dave 5671 +jhc 5373 +agf 5220 +doug 5167 +valerie 5007 +jca 3963 +bbs 3895 +moh 3796 +xchar 3481 +tbl 3200 +s 2845 +tgs 2774 +met 2641 +jck 2566 +port 2511 +sue 2479 +root 2127 +bsb 1989 +jeg 1989 +eag 1933 +pdj 1801 +tpc 1590 +cvw 1385 +rwm 1370 +avg 1316 +eg 1205 +jam 1194 +dl 1153 +lgm 1150 +cmb 1031 +jwr 1018 +gdb 950 +marc 931 +usg 898 +ggr 865 +daemon 822 +mihalis 803 +honey 700 +tad 624 +acs 559 +uucp 541 +raf 523 +adh 495 +kec 456 +craig 414 +donmac 386 +jj 375 +ravi 348 +drw 344 +stars 327 +mrg 288 +jcb 272 +ralph 263 +tom 253 +sjb 251 +haight 248 +sharon 224 +chuck 222 +dsj 213 +bill 201 +god 184 +sys 176 +meh 166 +jon 163 +dan 144 +fox 143 +dale 123 +kab 116 +buz 95 +asc 80 +jas 79 +trt 79 +wsb 64 +dwh 62 +ktf 56 +lr 54 +dlc 47 +dls 45 +jwf 45 +mash 44 +ars 43 +vgl 43 +jfo 37 +rab 32 +pd 31 +jns 29 +spm 25 +rob 22 +egb 15 +hm 10 +mhb 10 +aed 6 +cpb 6 +evp 5 +ber 4 +men 4 +mitch 4 +ast 3 +jfr 3 +lax 3 +nel 3 +blue 2 +jfk 2 +njas 2 +122sec 1 +ddwar 1 +gopi 1 +jk 1 +learn 1 +low 1 +nac 1 +sidor 1 + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +running 2roottcsh:*:0:0:Super-User +V 3sysadm:*:0:0:System +Diagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware + 5daemon:*:1:1:daemons:/:/bin/sh +Tools 6bin:*:2:2:System + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +Activity 9sys:*:4:0:System +Files 10adm:*:5:3:Accounting +Spooler 11lp:*:9:9:Print +Activity 12auditor:*:11:0:Audit +Database 13dbadmin:*:12:0:Security +Killian 14bootes:dcon:50:1:Tom +Killian 15cdjuke:dcon:51:1:Tom +Daemon 16rfindd:*:66:1:Rfind +Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System +User:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration +User:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial +Space 20tour:*:995:997:IRIS +Account:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest +Account:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +nobody 23nobody:*:60001:60001:SVR4 +no 24noaccess:*:60002:60002:uid +nobody 25nobody:*:-2:-2:original +Owner:/usr/spool/rje: 26rje:*:8:8:RJE +change 27changes:*:11:11:system +distributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file +Manual 29man:*:99:995:On-line +call 30phoneca:*:991:991:phone +oot 1r +oottcsh 2r +ysadm 3s +iag 4d +aemon 5d +in 6b +uucp 7n +ucp 8u +ys 9s +adm 10 +lp 11 +auditor 12 +dbadmin 13 +bootes 14 +cdjuke 15 +rfindd 16 +EZsetup 17 +demos 18 +tutor 19 +tour 20 +guest 21 +4Dgifts 22 +nobody 23 +noaccess 24 +nobody 25 +rje 26 +changes 27 +dist 28 +man 29 +phoneca 30 diff --git a/src/tool/awk/testdata/output/t.split2a b/src/tool/awk/testdata/output/t.split2a new file mode 100644 index 0000000..e71254b --- /dev/null +++ b/src/tool/awk/testdata/output/t.split2a @@ -0,0 +1 @@ +2 a b diff --git a/src/tool/awk/testdata/output/t.split3 b/src/tool/awk/testdata/output/t.split3 new file mode 100644 index 0000000..a7401ec --- /dev/null +++ b/src/tool/awk/testdata/output/t.split3 @@ -0,0 +1,139 @@ +31 +31 +16 +16 +16 +16 +16 +16 +16 +13 +16 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +10 gdb +10 marc +10 usg +10 ggr +10 daemon +10 mihalis +10 honey +10 tad +10 acs +10 uucp +10 raf +10 adh +10 kec +10 craig +10 donmac +10 jj +10 ravi +10 drw +10 stars +10 mrg +10 jcb +10 ralph +10 tom +10 sjb +10 haight +10 sharon +10 chuck +10 dsj +10 bill +10 god +10 sys +10 meh +10 jon +10 dan +10 fox +10 dale +10 kab +7 buz +7 asc +7 jas +7 trt +7 wsb +7 dwh +7 ktf +7 lr +7 dlc +7 dls +7 jwf +7 mash +7 ars +7 vgl +7 jfo +7 rab +7 pd +7 jns +7 spm +7 rob +7 egb +7 hm +7 mhb +4 aed aed aed +4 cpb cpb cpb +4 evp evp evp +4 ber ber ber +4 men men men +4 mitch mitch mitch +4 ast ast ast +4 jfr jfr jfr +4 lax lax lax +4 nel nel nel +4 blue blue blue +4 jfk jfk jfk +4 njas njas njas +7 22sec +4 ddwar ddwar ddwar +4 gopi gopi gopi +4 jk jk jk +4 learn learn learn +4 low low low +4 nac nac nac +4 sidor sidor sidor diff --git a/src/tool/awk/testdata/output/t.split4 b/src/tool/awk/testdata/output/t.split4 new file mode 100644 index 0000000..68b5683 --- /dev/null +++ b/src/tool/awk/testdata/output/t.split4 @@ -0,0 +1,199 @@ +4 /dev/rrp3: /dev/rrp3: /dev/rrp3: 123 +2 123 +7 17379 mel 17379 mel +10 16693 bwk me 16693 +16 16116 ken him someone +7 15713 srb 15713 srb +7 11895 lem 11895 lem +7 10409 scj 10409 scj +7 10252 rhm 10252 rhm +8 9853 shen 9853 +8 9748 a68 9748 +8 9492 sif 9492 +8 9190 pjw 9190 +8 8912 nls 8912 +8 8895 dmr 8895 +8 8491 cda 8491 +8 8372 bs 8372 +8 8252 llc 8252 +8 7450 mb 7450 +8 7360 ava 7360 +8 7273 jrv 7273 +8 7080 bin 7080 +8 7063 greg 7063 +8 6567 dict 6567 +8 6462 lck 6462 +8 6291 rje 6291 +8 6211 lwf 6211 +8 5671 dave 5671 +8 5373 jhc 5373 +8 5220 agf 5220 +8 5167 doug 5167 +8 5007 valerie 5007 +8 3963 jca 3963 +8 3895 bbs 3895 +8 3796 moh 3796 +8 3481 xchar 3481 +8 3200 tbl 3200 +8 2845 s 2845 +8 2774 tgs 2774 +8 2641 met 2641 +8 2566 jck 2566 +8 2511 port 2511 +8 2479 sue 2479 +8 2127 root 2127 +8 1989 bsb 1989 +8 1989 jeg 1989 +8 1933 eag 1933 +8 1801 pdj 1801 +8 1590 tpc 1590 +8 1385 cvw 1385 +8 1370 rwm 1370 +8 1316 avg 1316 +8 1205 eg 1205 +8 1194 jam 1194 +8 1153 dl 1153 +8 1150 lgm 1150 +8 1031 cmb 1031 +8 1018 jwr 1018 +8 950 gdb 950 +8 931 marc 931 +8 898 usg 898 +8 865 ggr 865 +8 822 daemon 822 +8 803 mihalis 803 +8 700 honey 700 +8 624 tad 624 +8 559 acs 559 +8 541 uucp 541 +8 523 raf 523 +8 495 adh 495 +8 456 kec 456 +8 414 craig 414 +8 386 donmac 386 +8 375 jj 375 +8 348 ravi 348 +8 344 drw 344 +8 327 stars 327 +8 288 mrg 288 +8 272 jcb 272 +8 263 ralph 263 +8 253 tom 253 +8 251 sjb 251 +8 248 haight 248 +8 224 sharon 224 +8 222 chuck 222 +8 213 dsj 213 +8 201 bill 201 +8 184 god 184 +8 176 sys 176 +8 166 meh 166 +8 163 jon 163 +8 144 dan 144 +8 143 fox 143 +8 123 dale 123 +8 116 kab 116 +8 95 buz 95 +8 80 asc 80 +8 79 jas 79 +8 79 trt 79 +8 64 wsb 64 +8 62 dwh 62 +8 56 ktf 56 +8 54 lr 54 +8 47 dlc 47 +8 45 dls 45 +8 45 jwf 45 +8 44 mash 44 +8 43 ars 43 +8 43 vgl 43 +8 37 jfo 37 +8 32 rab 32 +8 31 pd 31 +8 29 jns 29 +8 25 spm 25 +8 22 rob 22 +8 15 egb 15 +8 10 hm 10 +8 10 mhb 10 +8 6 aed 6 +8 6 cpb 6 +8 5 evp 5 +8 4 ber 4 +8 4 men 4 +8 4 mitch 4 +8 3 ast 3 +8 3 jfr 3 +8 3 lax 3 +8 3 nel 3 +8 2 blue 2 +8 2 jfk 2 +8 2 njas 2 +8 1 122sec 1 +8 1 ddwar 1 +8 1 gopi 1 +8 1 jk 1 +8 1 learn 1 +8 1 low 1 +8 1 nac 1 +8 1 sidor 1 +4 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh 123 +13 2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +10 3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh 3sysadm:*:0:0:System +7 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh 4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +4 5daemon:*:1:1:daemons:/:/bin/sh 5daemon:*:1:1:daemons:/:/bin/sh 5daemon:*:1:1:daemons:/:/bin/sh 123 +10 6bin:*:2:2:System Tools Owner:/bin:/dev/null 6bin:*:2:2:System +4 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico 123 +4 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: 123 +10 9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh 9sys:*:4:0:System +10 10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh 10adm:*:5:3:Accounting +10 11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh 11lp:*:9:9:Print +10 12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh 12auditor:*:11:0:Audit +10 13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh 13dbadmin:*:12:0:Security +16 14bootes:dcon:50:1:Tom Killian (DO NOT +16 15cdjuke:dcon:51:1:Tom Killian (DO NOT +13 16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +7 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh 17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +7 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh 18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +7 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh 19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +10 20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh 20tour:*:995:997:IRIS +7 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh 21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +7 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +10 23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null 23nobody:*:60001:60001:SVR4 +10 24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null 24noaccess:*:60002:60002:uid +10 25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null 25nobody:*:-2:-2:original +7 26rje:*:8:8:RJE Owner:/usr/spool/rje: 26rje:*:8:8:RJE Owner:/usr/spool/rje: +10 27changes:*:11:11:system change log:/: 27changes:*:11:11:system +7 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh 28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +10 29man:*:99:995:On-line Manual Owner:/: 29man:*:99:995:On-line +13 30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +25 1r oot EMpNB8Zp56 0 +34 2r oottcsh * 0 +31 3s ysadm * 0 +28 4d iag * 0 +25 5d aemon * 1 +31 6b in * 2 +25 7n uucp BJnuQbAo 6 +22 8u ucp * 3 +31 9s ys * 4 +31 10 adm * 5 +31 11 lp * 9 +31 12 auditor * 11 +31 13 dbadmin * 12 +34 14 bootes dcon 50 +34 15 cdjuke dcon 51 +34 16 rfindd * 66 +28 17 EZsetup * 992 +28 18 demos * 993 +28 19 tutor * 994 +31 20 tour * 995 +28 21 guest nfP4/Wpvio/Rw 998 +28 22 4Dgifts 0nWRTZsOMt. 999 +31 23 nobody * 60001 +31 24 noaccess * 60002 +31 25 nobody * -2 +25 26 rje * 8 +28 27 changes * 11 +28 28 dist sorry 9999 +28 29 man * 99 +34 30 phoneca * 991 diff --git a/src/tool/awk/testdata/output/t.split8 b/src/tool/awk/testdata/output/t.split8 new file mode 100644 index 0000000..a687a17 --- /dev/null +++ b/src/tool/awk/testdata/output/t.split8 @@ -0,0 +1,725 @@ +1 +0 +2 +3 +5 +2 +2 +2 +2 +3 +split botch at 10 3 2 +different element at 1 9853 +different element at 2 9853 shen +different element at 3 shen +3 +split botch at 11 3 2 +different element at 1 9748 +different element at 2 9748 a68 +different element at 3 a68 +3 +split botch at 12 3 2 +different element at 1 9492 +different element at 2 9492 sif +different element at 3 sif +3 +split botch at 13 3 2 +different element at 1 9190 +different element at 2 9190 pjw +different element at 3 pjw +3 +split botch at 14 3 2 +different element at 1 8912 +different element at 2 8912 nls +different element at 3 nls +3 +split botch at 15 3 2 +different element at 1 8895 +different element at 2 8895 dmr +different element at 3 dmr +3 +split botch at 16 3 2 +different element at 1 8491 +different element at 2 8491 cda +different element at 3 cda +3 +split botch at 17 3 2 +different element at 1 8372 +different element at 2 8372 bs +different element at 3 bs +3 +split botch at 18 3 2 +different element at 1 8252 +different element at 2 8252 llc +different element at 3 llc +3 +split botch at 19 3 2 +different element at 1 7450 +different element at 2 7450 mb +different element at 3 mb +3 +split botch at 20 3 2 +different element at 1 7360 +different element at 2 7360 ava +different element at 3 ava +3 +split botch at 21 3 2 +different element at 1 7273 +different element at 2 7273 jrv +different element at 3 jrv +3 +split botch at 22 3 2 +different element at 1 7080 +different element at 2 7080 bin +different element at 3 bin +3 +split botch at 23 3 2 +different element at 1 7063 +different element at 2 7063 greg +different element at 3 greg +3 +split botch at 24 3 2 +different element at 1 6567 +different element at 2 6567 dict +different element at 3 dict +3 +split botch at 25 3 2 +different element at 1 6462 +different element at 2 6462 lck +different element at 3 lck +3 +split botch at 26 3 2 +different element at 1 6291 +different element at 2 6291 rje +different element at 3 rje +3 +split botch at 27 3 2 +different element at 1 6211 +different element at 2 6211 lwf +different element at 3 lwf +3 +split botch at 28 3 2 +different element at 1 5671 +different element at 2 5671 dave +different element at 3 dave +3 +split botch at 29 3 2 +different element at 1 5373 +different element at 2 5373 jhc +different element at 3 jhc +3 +split botch at 30 3 2 +different element at 1 5220 +different element at 2 5220 agf +different element at 3 agf +3 +split botch at 31 3 2 +different element at 1 5167 +different element at 2 5167 doug +different element at 3 doug +3 +split botch at 32 3 2 +different element at 1 5007 +different element at 2 5007 valerie +different element at 3 valerie +3 +split botch at 33 3 2 +different element at 1 3963 +different element at 2 3963 jca +different element at 3 jca +3 +split botch at 34 3 2 +different element at 1 3895 +different element at 2 3895 bbs +different element at 3 bbs +3 +split botch at 35 3 2 +different element at 1 3796 +different element at 2 3796 moh +different element at 3 moh +3 +split botch at 36 3 2 +different element at 1 3481 +different element at 2 3481 xchar +different element at 3 xchar +3 +split botch at 37 3 2 +different element at 1 3200 +different element at 2 3200 tbl +different element at 3 tbl +3 +split botch at 38 3 2 +different element at 1 2845 +different element at 2 2845 s +different element at 3 s +3 +split botch at 39 3 2 +different element at 1 2774 +different element at 2 2774 tgs +different element at 3 tgs +3 +split botch at 40 3 2 +different element at 1 2641 +different element at 2 2641 met +different element at 3 met +3 +split botch at 41 3 2 +different element at 1 2566 +different element at 2 2566 jck +different element at 3 jck +3 +split botch at 42 3 2 +different element at 1 2511 +different element at 2 2511 port +different element at 3 port +3 +split botch at 43 3 2 +different element at 1 2479 +different element at 2 2479 sue +different element at 3 sue +3 +split botch at 44 3 2 +different element at 1 2127 +different element at 2 2127 root +different element at 3 root +3 +split botch at 45 3 2 +different element at 1 1989 +different element at 2 1989 bsb +different element at 3 bsb +3 +split botch at 46 3 2 +different element at 1 1989 +different element at 2 1989 jeg +different element at 3 jeg +3 +split botch at 47 3 2 +different element at 1 1933 +different element at 2 1933 eag +different element at 3 eag +3 +split botch at 48 3 2 +different element at 1 1801 +different element at 2 1801 pdj +different element at 3 pdj +3 +split botch at 49 3 2 +different element at 1 1590 +different element at 2 1590 tpc +different element at 3 tpc +3 +split botch at 50 3 2 +different element at 1 1385 +different element at 2 1385 cvw +different element at 3 cvw +3 +split botch at 51 3 2 +different element at 1 1370 +different element at 2 1370 rwm +different element at 3 rwm +3 +split botch at 52 3 2 +different element at 1 1316 +different element at 2 1316 avg +different element at 3 avg +3 +split botch at 53 3 2 +different element at 1 1205 +different element at 2 1205 eg +different element at 3 eg +3 +split botch at 54 3 2 +different element at 1 1194 +different element at 2 1194 jam +different element at 3 jam +3 +split botch at 55 3 2 +different element at 1 1153 +different element at 2 1153 dl +different element at 3 dl +3 +split botch at 56 3 2 +different element at 1 1150 +different element at 2 1150 lgm +different element at 3 lgm +3 +split botch at 57 3 2 +different element at 1 1031 +different element at 2 1031 cmb +different element at 3 cmb +3 +split botch at 58 3 2 +different element at 1 1018 +different element at 2 1018 jwr +different element at 3 jwr +3 +split botch at 59 3 2 +different element at 1 950 +different element at 2 950 gdb +different element at 3 gdb +3 +split botch at 60 3 2 +different element at 1 931 +different element at 2 931 marc +different element at 3 marc +3 +split botch at 61 3 2 +different element at 1 898 +different element at 2 898 usg +different element at 3 usg +3 +split botch at 62 3 2 +different element at 1 865 +different element at 2 865 ggr +different element at 3 ggr +3 +split botch at 63 3 2 +different element at 1 822 +different element at 2 822 daemon +different element at 3 daemon +3 +split botch at 64 3 2 +different element at 1 803 +different element at 2 803 mihalis +different element at 3 mihalis +3 +split botch at 65 3 2 +different element at 1 700 +different element at 2 700 honey +different element at 3 honey +3 +split botch at 66 3 2 +different element at 1 624 +different element at 2 624 tad +different element at 3 tad +3 +split botch at 67 3 2 +different element at 1 559 +different element at 2 559 acs +different element at 3 acs +3 +split botch at 68 3 2 +different element at 1 541 +different element at 2 541 uucp +different element at 3 uucp +3 +split botch at 69 3 2 +different element at 1 523 +different element at 2 523 raf +different element at 3 raf +3 +split botch at 70 3 2 +different element at 1 495 +different element at 2 495 adh +different element at 3 adh +3 +split botch at 71 3 2 +different element at 1 456 +different element at 2 456 kec +different element at 3 kec +3 +split botch at 72 3 2 +different element at 1 414 +different element at 2 414 craig +different element at 3 craig +3 +split botch at 73 3 2 +different element at 1 386 +different element at 2 386 donmac +different element at 3 donmac +3 +split botch at 74 3 2 +different element at 1 375 +different element at 2 375 jj +different element at 3 jj +3 +split botch at 75 3 2 +different element at 1 348 +different element at 2 348 ravi +different element at 3 ravi +3 +split botch at 76 3 2 +different element at 1 344 +different element at 2 344 drw +different element at 3 drw +3 +split botch at 77 3 2 +different element at 1 327 +different element at 2 327 stars +different element at 3 stars +3 +split botch at 78 3 2 +different element at 1 288 +different element at 2 288 mrg +different element at 3 mrg +3 +split botch at 79 3 2 +different element at 1 272 +different element at 2 272 jcb +different element at 3 jcb +3 +split botch at 80 3 2 +different element at 1 263 +different element at 2 263 ralph +different element at 3 ralph +3 +split botch at 81 3 2 +different element at 1 253 +different element at 2 253 tom +different element at 3 tom +3 +split botch at 82 3 2 +different element at 1 251 +different element at 2 251 sjb +different element at 3 sjb +3 +split botch at 83 3 2 +different element at 1 248 +different element at 2 248 haight +different element at 3 haight +3 +split botch at 84 3 2 +different element at 1 224 +different element at 2 224 sharon +different element at 3 sharon +3 +split botch at 85 3 2 +different element at 1 222 +different element at 2 222 chuck +different element at 3 chuck +3 +split botch at 86 3 2 +different element at 1 213 +different element at 2 213 dsj +different element at 3 dsj +3 +split botch at 87 3 2 +different element at 1 201 +different element at 2 201 bill +different element at 3 bill +3 +split botch at 88 3 2 +different element at 1 184 +different element at 2 184 god +different element at 3 god +3 +split botch at 89 3 2 +different element at 1 176 +different element at 2 176 sys +different element at 3 sys +3 +split botch at 90 3 2 +different element at 1 166 +different element at 2 166 meh +different element at 3 meh +3 +split botch at 91 3 2 +different element at 1 163 +different element at 2 163 jon +different element at 3 jon +3 +split botch at 92 3 2 +different element at 1 144 +different element at 2 144 dan +different element at 3 dan +3 +split botch at 93 3 2 +different element at 1 143 +different element at 2 143 fox +different element at 3 fox +3 +split botch at 94 3 2 +different element at 1 123 +different element at 2 123 dale +different element at 3 dale +3 +split botch at 95 3 2 +different element at 1 116 +different element at 2 116 kab +different element at 3 kab +3 +split botch at 96 3 2 +different element at 1 95 +different element at 2 95 buz +different element at 3 buz +3 +split botch at 97 3 2 +different element at 1 80 +different element at 2 80 asc +different element at 3 asc +3 +split botch at 98 3 2 +different element at 1 79 +different element at 2 79 jas +different element at 3 jas +3 +split botch at 99 3 2 +different element at 1 79 +different element at 2 79 trt +different element at 3 trt +3 +split botch at 100 3 2 +different element at 1 64 +different element at 2 64 wsb +different element at 3 wsb +3 +split botch at 101 3 2 +different element at 1 62 +different element at 2 62 dwh +different element at 3 dwh +3 +split botch at 102 3 2 +different element at 1 56 +different element at 2 56 ktf +different element at 3 ktf +3 +split botch at 103 3 2 +different element at 1 54 +different element at 2 54 lr +different element at 3 lr +3 +split botch at 104 3 2 +different element at 1 47 +different element at 2 47 dlc +different element at 3 dlc +3 +split botch at 105 3 2 +different element at 1 45 +different element at 2 45 dls +different element at 3 dls +3 +split botch at 106 3 2 +different element at 1 45 +different element at 2 45 jwf +different element at 3 jwf +3 +split botch at 107 3 2 +different element at 1 44 +different element at 2 44 mash +different element at 3 mash +3 +split botch at 108 3 2 +different element at 1 43 +different element at 2 43 ars +different element at 3 ars +3 +split botch at 109 3 2 +different element at 1 43 +different element at 2 43 vgl +different element at 3 vgl +3 +split botch at 110 3 2 +different element at 1 37 +different element at 2 37 jfo +different element at 3 jfo +3 +split botch at 111 3 2 +different element at 1 32 +different element at 2 32 rab +different element at 3 rab +3 +split botch at 112 3 2 +different element at 1 31 +different element at 2 31 pd +different element at 3 pd +3 +split botch at 113 3 2 +different element at 1 29 +different element at 2 29 jns +different element at 3 jns +3 +split botch at 114 3 2 +different element at 1 25 +different element at 2 25 spm +different element at 3 spm +3 +split botch at 115 3 2 +different element at 1 22 +different element at 2 22 rob +different element at 3 rob +3 +split botch at 116 3 2 +different element at 1 15 +different element at 2 15 egb +different element at 3 egb +3 +split botch at 117 3 2 +different element at 1 10 +different element at 2 10 hm +different element at 3 hm +3 +split botch at 118 3 2 +different element at 1 10 +different element at 2 10 mhb +different element at 3 mhb +3 +split botch at 119 3 2 +different element at 1 6 +different element at 2 6 aed +different element at 3 aed +3 +split botch at 120 3 2 +different element at 1 6 +different element at 2 6 cpb +different element at 3 cpb +3 +split botch at 121 3 2 +different element at 1 5 +different element at 2 5 evp +different element at 3 evp +3 +split botch at 122 3 2 +different element at 1 4 +different element at 2 4 ber +different element at 3 ber +3 +split botch at 123 3 2 +different element at 1 4 +different element at 2 4 men +different element at 3 men +3 +split botch at 124 3 2 +different element at 1 4 +different element at 2 4 mitch +different element at 3 mitch +3 +split botch at 125 3 2 +different element at 1 3 +different element at 2 3 ast +different element at 3 ast +3 +split botch at 126 3 2 +different element at 1 3 +different element at 2 3 jfr +different element at 3 jfr +3 +split botch at 127 3 2 +different element at 1 3 +different element at 2 3 lax +different element at 3 lax +3 +split botch at 128 3 2 +different element at 1 3 +different element at 2 3 nel +different element at 3 nel +3 +split botch at 129 3 2 +different element at 1 2 +different element at 2 2 blue +different element at 3 blue +3 +split botch at 130 3 2 +different element at 1 2 +different element at 2 2 jfk +different element at 3 jfk +3 +split botch at 131 3 2 +different element at 1 2 +different element at 2 2 njas +different element at 3 njas +3 +split botch at 132 3 2 +different element at 1 1 +different element at 2 1 122sec +different element at 3 122sec +3 +split botch at 133 3 2 +different element at 1 1 +different element at 2 1 ddwar +different element at 3 ddwar +3 +split botch at 134 3 2 +different element at 1 1 +different element at 2 1 gopi +different element at 3 gopi +3 +split botch at 135 3 2 +different element at 1 1 +different element at 2 1 jk +different element at 3 jk +3 +split botch at 136 3 2 +different element at 1 1 +different element at 2 1 learn +different element at 3 learn +3 +split botch at 137 3 2 +different element at 1 1 +different element at 2 1 low +different element at 3 low +3 +split botch at 138 3 2 +different element at 1 1 +different element at 2 1 nac +different element at 3 nac +3 +split botch at 139 3 2 +different element at 1 1 +different element at 2 1 sidor +different element at 3 sidor +1 +4 +3 +2 +1 +3 +1 +1 +3 +3 +3 +3 +3 +5 +5 +4 +2 +2 +2 +3 +2 +2 +3 +3 +3 +2 +3 +2 +3 +4 +8 +11 +10 +9 +8 +10 +8 +8 +split botch at 177 8 7 +10 +10 +10 +10 +10 +12 +split botch at 183 12 11 +12 +split botch at 184 12 11 +11 +9 +9 +9 +10 +9 +9 +10 +10 +10 +9 +split botch at 195 9 8 +10 +split botch at 196 10 9 +9 +10 +split botch at 198 10 9 +11 diff --git a/src/tool/awk/testdata/output/t.split9 b/src/tool/awk/testdata/output/t.split9 new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.split9a b/src/tool/awk/testdata/output/t.split9a new file mode 100644 index 0000000..e69de29 diff --git a/src/tool/awk/testdata/output/t.stately b/src/tool/awk/testdata/output/t.stately new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/tool/awk/testdata/output/t.stately @@ -0,0 +1 @@ + diff --git a/src/tool/awk/testdata/output/t.strcmp b/src/tool/awk/testdata/output/t.strcmp new file mode 100644 index 0000000..e6ef5b7 --- /dev/null +++ b/src/tool/awk/testdata/output/t.strcmp @@ -0,0 +1,56 @@ +16693 bwk me +15713 srb +10409 scj +10252 rhm + 9853 shen + 9492 sif + 9190 pjw + 8372 bs + 7360 ava + 7080 bin + 6291 rje + 5007 valerie + 3895 bbs + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1590 tpc + 1370 rwm + 1316 avg + 898 usg + 624 tad + 541 uucp + 523 raf + 348 ravi + 327 stars + 263 ralph + 253 tom + 251 sjb + 224 sharon + 201 bill + 176 sys + 95 buz + 79 trt + 64 wsb + 43 vgl + 32 rab + 25 spm + 22 rob + 4 ber + 2 blue + 1 sidor +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +26 rje * 8 8 RJE Owner /usr/spool/rje diff --git a/src/tool/awk/testdata/output/t.strcmp1 b/src/tool/awk/testdata/output/t.strcmp1 new file mode 100644 index 0000000..3971b26 --- /dev/null +++ b/src/tool/awk/testdata/output/t.strcmp1 @@ -0,0 +1,180 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.strnum b/src/tool/awk/testdata/output/t.strnum new file mode 100644 index 0000000..6692b51 --- /dev/null +++ b/src/tool/awk/testdata/output/t.strnum @@ -0,0 +1 @@ +100 0.12 1.23457 diff --git a/src/tool/awk/testdata/output/t.sub1 b/src/tool/awk/testdata/output/t.sub1 new file mode 100644 index 0000000..4079a8f --- /dev/null +++ b/src/tool/awk/testdata/output/t.sub1 @@ -0,0 +1,199 @@ +/dev/rrp3x + +17379 mex +16693 bwk mx +16116 ken him someone elsx +15713 srx +11895 lex +10409 scx +10252 rhx + 9853 shex + 9748 a6x + 9492 six + 9190 pjx + 8912 nlx + 8895 dmx + 8491 cdx + 8372 bx + 8252 llx + 7450 mx + 7360 avx + 7273 jrx + 7080 bix + 7063 grex + 6567 dicx + 6462 lcx + 6291 rjx + 6211 lwx + 5671 davx + 5373 jhx + 5220 agx + 5167 doux + 5007 valerix + 3963 jcx + 3895 bbx + 3796 mox + 3481 xchax + 3200 tbx + 2845 x + 2774 tgx + 2641 mex + 2566 jcx + 2511 porx + 2479 sux + 2127 roox + 1989 bsx + 1989 jex + 1933 eax + 1801 pdx + 1590 tpx + 1385 cvx + 1370 rwx + 1316 avx + 1205 ex + 1194 jax + 1153 dx + 1150 lgx + 1031 cmx + 1018 jwx + 950 gdx + 931 marx + 898 usx + 865 ggx + 822 daemox + 803 mihalix + 700 honex + 624 tax + 559 acx + 541 uucx + 523 rax + 495 adx + 456 kex + 414 craix + 386 donmax + 375 jx + 348 ravx + 344 drx + 327 starx + 288 mrx + 272 jcx + 263 ralpx + 253 tox + 251 sjx + 248 haighx + 224 sharox + 222 chucx + 213 dsx + 201 bilx + 184 gox + 176 syx + 166 mex + 163 jox + 144 dax + 143 fox + 123 dalx + 116 kax + 95 bux + 80 asx + 79 jax + 79 trx + 64 wsx + 62 dwx + 56 ktx + 54 lx + 47 dlx + 45 dlx + 45 jwx + 44 masx + 43 arx + 43 vgx + 37 jfx + 32 rax + 31 px + 29 jnx + 25 spx + 22 rox + 15 egx + 10 hx + 10 mhx + 6 aex + 6 cpx + 5 evx + 4 bex + 4 mex + 4 mitcx + 3 asx + 3 jfx + 3 lax + 3 nex + 2 blux + 2 jfx + 2 njax + 1 122sex + 1 ddwax + 1 gopx + 1 jx + 1 learx + 1 lox + 1 nax + 1 sidox +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sx +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsx +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sx +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csx +5daemon:*:1:1:daemons:/:/bin/sx +6bin:*:2:2:System Tools Owner:/bin:/dev/nulx +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucicx +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucpx +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sx +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sx +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sx +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sx +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sx +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmpx +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmpx +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sx +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csx +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csx +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csx +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csx +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csx +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csx +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/nulx +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/nulx +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/nulx +26rje:*:8:8:RJE Owner:/usr/spool/rjex +27changes:*:11:11:system change log:/x +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sx +29man:*:99:995:On-line Manual Owner:/x +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sx +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sx +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsx +3s ysadm * 0 0 System V Administration /usr/admin /bin/sx +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csx +5d aemon * 1 1 daemons / /bin/sx +6b in * 2 2 System Tools Owner /bin /dev/nulx +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucicx +8u ucp * 3 5 UUCP.Admin /usr/lib/uucpx +9s ys * 4 0 System Activity Owner /usr/adm /bin/sx +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sx +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sx +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sx +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sx +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmpx +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmpx +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sx +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csx +18 demos * 993 997 Demonstration User /usr/demos /bin/csx +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csx +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csx +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csx +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csx +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/nulx +24 noaccess * 60002 60002 uid no access /dev/null /dev/nulx +25 nobody * -2 -2 original nobody uid /dev/null /dev/nulx +26 rje * 8 8 RJE Owner /usr/spool/rjex +27 changes * 11 11 system change log /x +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sx +29 man * 99 995 On-line Manual Owner /x +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sx diff --git a/src/tool/awk/testdata/output/t.sub2 b/src/tool/awk/testdata/output/t.sub2 new file mode 100644 index 0000000..afb80f3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.sub2 @@ -0,0 +1,398 @@ +/dev/rrp3:: +/dev/rrp3::&: + + +17379 mell +17379 mell&l +16693 bwk mee +16693 bwk mee&e +16116 ken him someone elsee +16116 ken him someone elsee&e +15713 srbb +15713 srbb&b +11895 lemm +11895 lemm&m +10409 scjj +10409 scjj&j +10252 rhmm +10252 rhmm&m + 9853 shenn + 9853 shenn&n + 9748 a688 + 9748 a688&8 + 9492 siff + 9492 siff&f + 9190 pjww + 9190 pjww&w + 8912 nlss + 8912 nlss&s + 8895 dmrr + 8895 dmrr&r + 8491 cdaa + 8491 cdaa&a + 8372 bss + 8372 bss&s + 8252 llcc + 8252 llcc&c + 7450 mbb + 7450 mbb&b + 7360 avaa + 7360 avaa&a + 7273 jrvv + 7273 jrvv&v + 7080 binn + 7080 binn&n + 7063 gregg + 7063 gregg&g + 6567 dictt + 6567 dictt&t + 6462 lckk + 6462 lckk&k + 6291 rjee + 6291 rjee&e + 6211 lwff + 6211 lwff&f + 5671 davee + 5671 davee&e + 5373 jhcc + 5373 jhcc&c + 5220 agff + 5220 agff&f + 5167 dougg + 5167 dougg&g + 5007 valeriee + 5007 valeriee&e + 3963 jcaa + 3963 jcaa&a + 3895 bbss + 3895 bbss&s + 3796 mohh + 3796 mohh&h + 3481 xcharr + 3481 xcharr&r + 3200 tbll + 3200 tbll&l + 2845 ss + 2845 ss&s + 2774 tgss + 2774 tgss&s + 2641 mett + 2641 mett&t + 2566 jckk + 2566 jckk&k + 2511 portt + 2511 portt&t + 2479 suee + 2479 suee&e + 2127 roott + 2127 roott&t + 1989 bsbb + 1989 bsbb&b + 1989 jegg + 1989 jegg&g + 1933 eagg + 1933 eagg&g + 1801 pdjj + 1801 pdjj&j + 1590 tpcc + 1590 tpcc&c + 1385 cvww + 1385 cvww&w + 1370 rwmm + 1370 rwmm&m + 1316 avgg + 1316 avgg&g + 1205 egg + 1205 egg&g + 1194 jamm + 1194 jamm&m + 1153 dll + 1153 dll&l + 1150 lgmm + 1150 lgmm&m + 1031 cmbb + 1031 cmbb&b + 1018 jwrr + 1018 jwrr&r + 950 gdbb + 950 gdbb&b + 931 marcc + 931 marcc&c + 898 usgg + 898 usgg&g + 865 ggrr + 865 ggrr&r + 822 daemonn + 822 daemonn&n + 803 mihaliss + 803 mihaliss&s + 700 honeyy + 700 honeyy&y + 624 tadd + 624 tadd&d + 559 acss + 559 acss&s + 541 uucpp + 541 uucpp&p + 523 raff + 523 raff&f + 495 adhh + 495 adhh&h + 456 kecc + 456 kecc&c + 414 craigg + 414 craigg&g + 386 donmacc + 386 donmacc&c + 375 jjj + 375 jjj&j + 348 ravii + 348 ravii&i + 344 drww + 344 drww&w + 327 starss + 327 starss&s + 288 mrgg + 288 mrgg&g + 272 jcbb + 272 jcbb&b + 263 ralphh + 263 ralphh&h + 253 tomm + 253 tomm&m + 251 sjbb + 251 sjbb&b + 248 haightt + 248 haightt&t + 224 sharonn + 224 sharonn&n + 222 chuckk + 222 chuckk&k + 213 dsjj + 213 dsjj&j + 201 billl + 201 billl&l + 184 godd + 184 godd&d + 176 syss + 176 syss&s + 166 mehh + 166 mehh&h + 163 jonn + 163 jonn&n + 144 dann + 144 dann&n + 143 foxx + 143 foxx&x + 123 dalee + 123 dalee&e + 116 kabb + 116 kabb&b + 95 buzz + 95 buzz&z + 80 ascc + 80 ascc&c + 79 jass + 79 jass&s + 79 trtt + 79 trtt&t + 64 wsbb + 64 wsbb&b + 62 dwhh + 62 dwhh&h + 56 ktff + 56 ktff&f + 54 lrr + 54 lrr&r + 47 dlcc + 47 dlcc&c + 45 dlss + 45 dlss&s + 45 jwff + 45 jwff&f + 44 mashh + 44 mashh&h + 43 arss + 43 arss&s + 43 vgll + 43 vgll&l + 37 jfoo + 37 jfoo&o + 32 rabb + 32 rabb&b + 31 pdd + 31 pdd&d + 29 jnss + 29 jnss&s + 25 spmm + 25 spmm&m + 22 robb + 22 robb&b + 15 egbb + 15 egbb&b + 10 hmm + 10 hmm&m + 10 mhbb + 10 mhbb&b + 6 aedd + 6 aedd&d + 6 cpbb + 6 cpbb&b + 5 evpp + 5 evpp&p + 4 berr + 4 berr&r + 4 menn + 4 menn&n + 4 mitchh + 4 mitchh&h + 3 astt + 3 astt&t + 3 jfrr + 3 jfrr&r + 3 laxx + 3 laxx&x + 3 nell + 3 nell&l + 2 bluee + 2 bluee&e + 2 jfkk + 2 jfkk&k + 2 njass + 2 njass&s + 1 122secc + 1 122secc&c + 1 ddwarr + 1 ddwarr&r + 1 gopii + 1 gopii&i + 1 jkk + 1 jkk&k + 1 learnn + 1 learnn&n + 1 loww + 1 loww&w + 1 nacc + 1 nacc&c + 1 sidorr + 1 sidorr&r +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/shh +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/shh&h +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcshh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcshh&h +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/shh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/shh&h +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/cshh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/cshh&h +5daemon:*:1:1:daemons:/:/bin/shh +5daemon:*:1:1:daemons:/:/bin/shh&h +6bin:*:2:2:System Tools Owner:/bin:/dev/nulll +6bin:*:2:2:System Tools Owner:/bin:/dev/nulll&l +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucicoo +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucicoo&o +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp:: +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp::&: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/shh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/shh&h +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/shh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/shh&h +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/shh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/shh&h +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/shh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/shh&h +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/shh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/shh&h +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp:: +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp::&: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp:: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp::&: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/shh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/shh&h +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/cshh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/cshh&h +18demos:*:993:997:Demonstration User:/usr/demos:/bin/cshh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/cshh&h +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/cshh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/cshh&h +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/cshh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/cshh&h +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/cshh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/cshh&h +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/cshh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/cshh&h +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/nulll +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/nulll&l +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/nulll +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/nulll&l +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/nulll +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/nulll&l +26rje:*:8:8:RJE Owner:/usr/spool/rje:: +26rje:*:8:8:RJE Owner:/usr/spool/rje::&: +27changes:*:11:11:system change log:/:: +27changes:*:11:11:system change log:/::&: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/shh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/shh&h +29man:*:99:995:On-line Manual Owner:/:: +29man:*:99:995:On-line Manual Owner:/::&: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/shh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/shh&h +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/shh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/shh&h +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcshh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcshh&h +3s ysadm * 0 0 System V Administration /usr/admin /bin/shh +3s ysadm * 0 0 System V Administration /usr/admin /bin/shh&h +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/cshh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/cshh&h +5d aemon * 1 1 daemons / /bin/shh +5d aemon * 1 1 daemons / /bin/shh&h +6b in * 2 2 System Tools Owner /bin /dev/nulll +6b in * 2 2 System Tools Owner /bin /dev/nulll&l +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucicoo +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucicoo&o +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp & +9s ys * 4 0 System Activity Owner /usr/adm /bin/shh +9s ys * 4 0 System Activity Owner /usr/adm /bin/shh&h +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/shh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/shh&h +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/shh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/shh&h +12 auditor * 11 0 Audit Activity Owner /auditor /bin/shh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/shh&h +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/shh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/shh&h +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp & +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp & +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/shh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/shh&h +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/cshh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/cshh&h +18 demos * 993 997 Demonstration User /usr/demos /bin/cshh +18 demos * 993 997 Demonstration User /usr/demos /bin/cshh&h +19 tutor * 994 997 Tutorial User /usr/tutor /bin/cshh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/cshh&h +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/cshh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/cshh&h +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/cshh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/cshh&h +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/cshh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/cshh&h +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/nulll +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/nulll&l +24 noaccess * 60002 60002 uid no access /dev/null /dev/nulll +24 noaccess * 60002 60002 uid no access /dev/null /dev/nulll&l +25 nobody * -2 -2 original nobody uid /dev/null /dev/nulll +25 nobody * -2 -2 original nobody uid /dev/null /dev/nulll&l +26 rje * 8 8 RJE Owner /usr/spool/rje +26 rje * 8 8 RJE Owner /usr/spool/rje & +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / & +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/shh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/shh&h +29 man * 99 995 On-line Manual Owner / +29 man * 99 995 On-line Manual Owner / & +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/shh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/shh&h diff --git a/src/tool/awk/testdata/output/t.sub3 b/src/tool/awk/testdata/output/t.sub3 new file mode 100644 index 0000000..4cf1041 --- /dev/null +++ b/src/tool/awk/testdata/output/t.sub3 @@ -0,0 +1,198 @@ +(/)dev/rrp3: +(1)7379 mel +(1)6693 bwk me +(1)6116 ken him someone else +(1)5713 srb +(1)1895 lem +(1)0409 scj +(1)0252 rhm + (9)853 shen + (9)748 a68 + (9)492 sif + (9)190 pjw + (8)912 nls + (8)895 dmr + (8)491 cda + (8)372 bs + (8)252 llc + (7)450 mb + (7)360 ava + (7)273 jrv + (7)080 bin + (7)063 greg + (6)567 dict + (6)462 lck + (6)291 rje + (6)211 lwf + (5)671 dave + (5)373 jhc + (5)220 agf + (5)167 doug + (5)007 valerie + (3)963 jca + (3)895 bbs + (3)796 moh + (3)481 xchar + (3)200 tbl + (2)845 s + (2)774 tgs + (2)641 met + (2)566 jck + (2)511 port + (2)479 sue + (2)127 root + (1)989 bsb + (1)989 jeg + (1)933 eag + (1)801 pdj + (1)590 tpc + (1)385 cvw + (1)370 rwm + (1)316 avg + (1)205 eg + (1)194 jam + (1)153 dl + (1)150 lgm + (1)031 cmb + (1)018 jwr + (9)50 gdb + (9)31 marc + (8)98 usg + (8)65 ggr + (8)22 daemon + (8)03 mihalis + (7)00 honey + (6)24 tad + (5)59 acs + (5)41 uucp + (5)23 raf + (4)95 adh + (4)56 kec + (4)14 craig + (3)86 donmac + (3)75 jj + (3)48 ravi + (3)44 drw + (3)27 stars + (2)88 mrg + (2)72 jcb + (2)63 ralph + (2)53 tom + (2)51 sjb + (2)48 haight + (2)24 sharon + (2)22 chuck + (2)13 dsj + (2)01 bill + (1)84 god + (1)76 sys + (1)66 meh + (1)63 jon + (1)44 dan + (1)43 fox + (1)23 dale + (1)16 kab + (9)5 buz + (8)0 asc + (7)9 jas + (7)9 trt + (6)4 wsb + (6)2 dwh + (5)6 ktf + (5)4 lr + (4)7 dlc + (4)5 dls + (4)5 jwf + (4)4 mash + (4)3 ars + (4)3 vgl + (3)7 jfo + (3)2 rab + (3)1 pd + (2)9 jns + (2)5 spm + (2)2 rob + (1)5 egb + (1)0 hm + (1)0 mhb + (6) aed + (6) cpb + (5) evp + (4) ber + (4) men + (4) mitch + (3) ast + (3) jfr + (3) lax + (3) nel + (2) blue + (2) jfk + (2) njas + (1) 122sec + (1) ddwar + (1) gopi + (1) jk + (1) learn + (1) low + (1) nac + (1) sidor +(1)root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +(2)roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +(3)sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +(4)diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +(5)daemon:*:1:1:daemons:/:/bin/sh +(6)bin:*:2:2:System Tools Owner:/bin:/dev/null +(7)nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +(8)uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +(9)sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +(1)0adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +(1)1lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +(1)2auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +(1)3dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +(1)4bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +(1)5cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +(1)6rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +(1)7EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +(1)8demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +(1)9tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +(2)0tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +(2)1guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +(2)24Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +(2)3nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +(2)4noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +(2)5nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +(2)6rje:*:8:8:RJE Owner:/usr/spool/rje: +(2)7changes:*:11:11:system change log:/: +(2)8dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +(2)9man:*:99:995:On-line Manual Owner:/: +(3)0phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +(1)r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +(2)r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +(3)s ysadm * 0 0 System V Administration /usr/admin /bin/sh +(4)d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +(5)d aemon * 1 1 daemons / /bin/sh +(6)b in * 2 2 System Tools Owner /bin /dev/null +(7)n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +(8)u ucp * 3 5 UUCP.Admin /usr/lib/uucp +(9)s ys * 4 0 System Activity Owner /usr/adm /bin/sh +(1)0 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +(1)1 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +(1)2 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +(1)3 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +(1)4 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +(1)5 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +(1)6 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +(1)7 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +(1)8 demos * 993 997 Demonstration User /usr/demos /bin/csh +(1)9 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +(2)0 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +(2)1 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +(2)2 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +(2)3 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +(2)4 noaccess * 60002 60002 uid no access /dev/null /dev/null +(2)5 nobody * -2 -2 original nobody uid /dev/null /dev/null +(2)6 rje * 8 8 RJE Owner /usr/spool/rje +(2)7 changes * 11 11 system change log / +(2)8 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +(2)9 man * 99 995 On-line Manual Owner / +(3)0 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.substr b/src/tool/awk/testdata/output/t.substr new file mode 100644 index 0000000..a2379f3 --- /dev/null +++ b/src/tool/awk/testdata/output/t.substr @@ -0,0 +1,235 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9748 a68 + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8491 cda + 8372 bs + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7360 ava + 7273 jrv + 7080 bin + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1385 cvw + 1370 rwm + 1316 avg + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 559 acs + 541 uucp + 523 raf + 495 adh + 495 adh + 456 kec + 414 craig + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 222 chuck + 213 dsj + 201 bill + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 95 buz + 80 asc + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 aed + 6 cpb + 6 cpb + 5 evp + 4 ber + 4 ber + 4 men + 4 mitch + 3 ast + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.substr1 b/src/tool/awk/testdata/output/t.substr1 new file mode 100644 index 0000000..716f028 --- /dev/null +++ b/src/tool/awk/testdata/output/t.substr1 @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tool/awk/testdata/output/t.time b/src/tool/awk/testdata/output/t.time new file mode 100644 index 0000000..310764d --- /dev/null +++ b/src/tool/awk/testdata/output/t.time @@ -0,0 +1,40 @@ + 44 mash +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh +0 39 2061 52.846154n diff --git a/src/tool/awk/testdata/output/t.vf b/src/tool/awk/testdata/output/t.vf new file mode 100644 index 0000000..019879c --- /dev/null +++ b/src/tool/awk/testdata/output/t.vf @@ -0,0 +1,398 @@ + +/dev/rrp3: + + +mel +17379 +bwk +16693 +ken +16116 +srb +15713 +lem +11895 +scj +10409 +rhm +10252 +shen +9853 +a68 +9748 +sif +9492 +pjw +9190 +nls +8912 +dmr +8895 +cda +8491 +bs +8372 +llc +8252 +mb +7450 +ava +7360 +jrv +7273 +bin +7080 +greg +7063 +dict +6567 +lck +6462 +rje +6291 +lwf +6211 +dave +5671 +jhc +5373 +agf +5220 +doug +5167 +valerie +5007 +jca +3963 +bbs +3895 +moh +3796 +xchar +3481 +tbl +3200 +s +2845 +tgs +2774 +met +2641 +jck +2566 +port +2511 +sue +2479 +root +2127 +bsb +1989 +jeg +1989 +eag +1933 +pdj +1801 +tpc +1590 +cvw +1385 +rwm +1370 +avg +1316 +eg +1205 +jam +1194 +dl +1153 +lgm +1150 +cmb +1031 +jwr +1018 +gdb +950 +marc +931 +usg +898 +ggr +865 +daemon +822 +mihalis +803 +honey +700 +tad +624 +acs +559 +uucp +541 +raf +523 +adh +495 +kec +456 +craig +414 +donmac +386 +jj +375 +ravi +348 +drw +344 +stars +327 +mrg +288 +jcb +272 +ralph +263 +tom +253 +sjb +251 +haight +248 +sharon +224 +chuck +222 +dsj +213 +bill +201 +god +184 +sys +176 +meh +166 +jon +163 +dan +144 +fox +143 +dale +123 +kab +116 +buz +95 +asc +80 +jas +79 +trt +79 +wsb +64 +dwh +62 +ktf +56 +lr +54 +dlc +47 +dls +45 +jwf +45 +mash +44 +ars +43 +vgl +43 +jfo +37 +rab +32 +pd +31 +jns +29 +spm +25 +rob +22 +egb +15 +hm +10 +mhb +10 +aed +6 +cpb +6 +evp +5 +ber +4 +men +4 +mitch +4 +ast +3 +jfr +3 +lax +3 +nel +3 +blue +2 +jfk +2 +njas +2 +122sec +1 +ddwar +1 +gopi +1 +jk +1 +learn +1 +low +1 +nac +1 +sidor +1 + +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +running +2roottcsh:*:0:0:Super-User +V +3sysadm:*:0:0:System +Diagnostics:/usr/diags:/bin/csh +4diag:*:0:996:Hardware + +5daemon:*:1:1:daemons:/:/bin/sh +Tools +6bin:*:2:2:System + +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +Activity +9sys:*:4:0:System +Files +10adm:*:5:3:Accounting +Spooler +11lp:*:9:9:Print +Activity +12auditor:*:11:0:Audit +Database +13dbadmin:*:12:0:Security +Killian +14bootes:dcon:50:1:Tom +Killian +15cdjuke:dcon:51:1:Tom +Daemon +16rfindd:*:66:1:Rfind +Setup:/var/sysadmdesktop/EZsetup:/bin/csh +17EZsetup:*:992:998:System +User:/usr/demos:/bin/csh +18demos:*:993:997:Demonstration +User:/usr/tutor:/bin/csh +19tutor:*:994:997:Tutorial +Space +20tour:*:995:997:IRIS +Account:/usr/people/guest:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest +Account:/usr/people/4Dgifts:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts +nobody +23nobody:*:60001:60001:SVR4 +no +24noaccess:*:60002:60002:uid +nobody +25nobody:*:-2:-2:original +Owner:/usr/spool/rje: +26rje:*:8:8:RJE +change +27changes:*:11:11:system +distributions:/v/adm/dist:/v/bin/sh +28dist:sorry:9999:4:file +Manual +29man:*:99:995:On-line +call +30phoneca:*:991:991:phone +oot +1r +oottcsh +2r +ysadm +3s +iag +4d +aemon +5d +in +6b +uucp +7n +ucp +8u +ys +9s +adm +10 +lp +11 +auditor +12 +dbadmin +13 +bootes +14 +cdjuke +15 +rfindd +16 +EZsetup +17 +demos +18 +tutor +19 +tour +20 +guest +21 +4Dgifts +22 +nobody +23 +noaccess +24 +nobody +25 +rje +26 +changes +27 +dist +28 +man +29 +phoneca +30 diff --git a/src/tool/awk/testdata/output/t.vf1 b/src/tool/awk/testdata/output/t.vf1 new file mode 100644 index 0000000..a0620aa --- /dev/null +++ b/src/tool/awk/testdata/output/t.vf1 @@ -0,0 +1,844 @@ +/dev/rrp3: + /dev/rrp3: + +17379 mel + 17379 + mel +16693 bwk me + 16693 + bwk + me +16116 ken him someone else + 16116 + ken + him + someone + else +15713 srb + 15713 + srb +11895 lem + 11895 + lem +10409 scj + 10409 + scj +10252 rhm + 10252 + rhm + 9853 shen + 9853 + shen + 9748 a68 + 9748 + a68 + 9492 sif + 9492 + sif + 9190 pjw + 9190 + pjw + 8912 nls + 8912 + nls + 8895 dmr + 8895 + dmr + 8491 cda + 8491 + cda + 8372 bs + 8372 + bs + 8252 llc + 8252 + llc + 7450 mb + 7450 + mb + 7360 ava + 7360 + ava + 7273 jrv + 7273 + jrv + 7080 bin + 7080 + bin + 7063 greg + 7063 + greg + 6567 dict + 6567 + dict + 6462 lck + 6462 + lck + 6291 rje + 6291 + rje + 6211 lwf + 6211 + lwf + 5671 dave + 5671 + dave + 5373 jhc + 5373 + jhc + 5220 agf + 5220 + agf + 5167 doug + 5167 + doug + 5007 valerie + 5007 + valerie + 3963 jca + 3963 + jca + 3895 bbs + 3895 + bbs + 3796 moh + 3796 + moh + 3481 xchar + 3481 + xchar + 3200 tbl + 3200 + tbl + 2845 s + 2845 + s + 2774 tgs + 2774 + tgs + 2641 met + 2641 + met + 2566 jck + 2566 + jck + 2511 port + 2511 + port + 2479 sue + 2479 + sue + 2127 root + 2127 + root + 1989 bsb + 1989 + bsb + 1989 jeg + 1989 + jeg + 1933 eag + 1933 + eag + 1801 pdj + 1801 + pdj + 1590 tpc + 1590 + tpc + 1385 cvw + 1385 + cvw + 1370 rwm + 1370 + rwm + 1316 avg + 1316 + avg + 1205 eg + 1205 + eg + 1194 jam + 1194 + jam + 1153 dl + 1153 + dl + 1150 lgm + 1150 + lgm + 1031 cmb + 1031 + cmb + 1018 jwr + 1018 + jwr + 950 gdb + 950 + gdb + 931 marc + 931 + marc + 898 usg + 898 + usg + 865 ggr + 865 + ggr + 822 daemon + 822 + daemon + 803 mihalis + 803 + mihalis + 700 honey + 700 + honey + 624 tad + 624 + tad + 559 acs + 559 + acs + 541 uucp + 541 + uucp + 523 raf + 523 + raf + 495 adh + 495 + adh + 456 kec + 456 + kec + 414 craig + 414 + craig + 386 donmac + 386 + donmac + 375 jj + 375 + jj + 348 ravi + 348 + ravi + 344 drw + 344 + drw + 327 stars + 327 + stars + 288 mrg + 288 + mrg + 272 jcb + 272 + jcb + 263 ralph + 263 + ralph + 253 tom + 253 + tom + 251 sjb + 251 + sjb + 248 haight + 248 + haight + 224 sharon + 224 + sharon + 222 chuck + 222 + chuck + 213 dsj + 213 + dsj + 201 bill + 201 + bill + 184 god + 184 + god + 176 sys + 176 + sys + 166 meh + 166 + meh + 163 jon + 163 + jon + 144 dan + 144 + dan + 143 fox + 143 + fox + 123 dale + 123 + dale + 116 kab + 116 + kab + 95 buz + 95 + buz + 80 asc + 80 + asc + 79 jas + 79 + jas + 79 trt + 79 + trt + 64 wsb + 64 + wsb + 62 dwh + 62 + dwh + 56 ktf + 56 + ktf + 54 lr + 54 + lr + 47 dlc + 47 + dlc + 45 dls + 45 + dls + 45 jwf + 45 + jwf + 44 mash + 44 + mash + 43 ars + 43 + ars + 43 vgl + 43 + vgl + 37 jfo + 37 + jfo + 32 rab + 32 + rab + 31 pd + 31 + pd + 29 jns + 29 + jns + 25 spm + 25 + spm + 22 rob + 22 + rob + 15 egb + 15 + egb + 10 hm + 10 + hm + 10 mhb + 10 + mhb + 6 aed + 6 + aed + 6 cpb + 6 + cpb + 5 evp + 5 + evp + 4 ber + 4 + ber + 4 men + 4 + men + 4 mitch + 4 + mitch + 3 ast + 3 + ast + 3 jfr + 3 + jfr + 3 lax + 3 + lax + 3 nel + 3 + nel + 2 blue + 2 + blue + 2 jfk + 2 + jfk + 2 njas + 2 + njas + 1 122sec + 1 + 122sec + 1 ddwar + 1 + ddwar + 1 gopi + 1 + gopi + 1 jk + 1 + jk + 1 learn + 1 + learn + 1 low + 1 + low + 1 nac + 1 + nac + 1 sidor + 1 + sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh + 1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh + 2roottcsh:*:0:0:Super-User + running + tcsh + [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh + 3sysadm:*:0:0:System + V + Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh + 4diag:*:0:996:Hardware + Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh + 5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null + 6bin:*:2:2:System + Tools + Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico + 7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: + 8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh + 9sys:*:4:0:System + Activity + Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh + 10adm:*:5:3:Accounting + Files + Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh + 11lp:*:9:9:Print + Spooler + Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh + 12auditor:*:11:0:Audit + Activity + Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh + 13dbadmin:*:12:0:Security + Database + Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: + 14bootes:dcon:50:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: + 15cdjuke:dcon:51:1:Tom + Killian + (DO + NOT + REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh + 16rfindd:*:66:1:Rfind + Daemon + and + Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh + 17EZsetup:*:992:998:System + Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh + 18demos:*:993:997:Demonstration + User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh + 19tutor:*:994:997:Tutorial + User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh + 20tour:*:995:997:IRIS + Space + Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh + 21guest:nfP4/Wpvio/Rw:998:998:Guest + Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh + 224Dgifts:0nWRTZsOMt.:999:998:4Dgifts + Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null + 23nobody:*:60001:60001:SVR4 + nobody + uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null + 24noaccess:*:60002:60002:uid + no + access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null + 25nobody:*:-2:-2:original + nobody + uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: + 26rje:*:8:8:RJE + Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: + 27changes:*:11:11:system + change + log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh + 28dist:sorry:9999:4:file + distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: + 29man:*:99:995:On-line + Manual + Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh + 30phoneca:*:991:991:phone + call + log + [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh + 1r + oot + EMpNB8Zp56 + 0 + 0 + Super-User,,,,,,, + / + /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh + 2r + oottcsh + * + 0 + 0 + Super-User + running + tcsh + [cbm] + / + /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh + 3s + ysadm + * + 0 + 0 + System + V + Administration + /usr/admin + /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh + 4d + iag + * + 0 + 996 + Hardware + Diagnostics + /usr/diags + /bin/csh +5d aemon * 1 1 daemons / /bin/sh + 5d + aemon + * + 1 + 1 + daemons + / + /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null + 6b + in + * + 2 + 2 + System + Tools + Owner + /bin + /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico + 7n + uucp + BJnuQbAo + 6 + 10 + UUCP.Admin + /usr/spool/uucppublic + /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp + 8u + ucp + * + 3 + 5 + UUCP.Admin + /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh + 9s + ys + * + 4 + 0 + System + Activity + Owner + /usr/adm + /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh + 10 + adm + * + 5 + 3 + Accounting + Files + Owner + /usr/adm + /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh + 11 + lp + * + 9 + 9 + Print + Spooler + Owner + /var/spool/lp + /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh + 12 + auditor + * + 11 + 0 + Audit + Activity + Owner + /auditor + /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh + 13 + dbadmin + * + 12 + 0 + Security + Database + Owner + /dbadmin + /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp + 14 + bootes + dcon + 50 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp + 15 + cdjuke + dcon + 51 + 1 + Tom + Killian + (DO + NOT + REMOVE) + /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh + 16 + rfindd + * + 66 + 1 + Rfind + Daemon + and + Fsdump + /var/rfindd + /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh + 17 + EZsetup + * + 992 + 998 + System + Setup + /var/sysadmdesktop/EZsetup + /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh + 18 + demos + * + 993 + 997 + Demonstration + User + /usr/demos + /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh + 19 + tutor + * + 994 + 997 + Tutorial + User + /usr/tutor + /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh + 20 + tour + * + 995 + 997 + IRIS + Space + Tour + /usr/people/tour + /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh + 21 + guest + nfP4/Wpvio/Rw + 998 + 998 + Guest + Account + /usr/people/guest + /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh + 22 + 4Dgifts + 0nWRTZsOMt. + 999 + 998 + 4Dgifts + Account + /usr/people/4Dgifts + /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null + 23 + nobody + * + 60001 + 60001 + SVR4 + nobody + uid + /dev/null + /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null + 24 + noaccess + * + 60002 + 60002 + uid + no + access + /dev/null + /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null + 25 + nobody + * + -2 + -2 + original + nobody + uid + /dev/null + /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje + 26 + rje + * + 8 + 8 + RJE + Owner + /usr/spool/rje +27 changes * 11 11 system change log / + 27 + changes + * + 11 + 11 + system + change + log + / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh + 28 + dist + sorry + 9999 + 4 + file + distributions + /v/adm/dist + /v/bin/sh +29 man * 99 995 On-line Manual Owner / + 29 + man + * + 99 + 995 + On-line + Manual + Owner + / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh + 30 + phoneca + * + 991 + 991 + phone + call + log + [tom] + /v/adm/log + /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.vf2 b/src/tool/awk/testdata/output/t.vf2 new file mode 100644 index 0000000..00c8da1 --- /dev/null +++ b/src/tool/awk/testdata/output/t.vf2 @@ -0,0 +1,398 @@ +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +122 +123 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +1 +2 +0 +1 +0 +1 +0 +1 +5 +6 +0 +1 +7 +8 +8 +9 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 +0 +1 diff --git a/src/tool/awk/testdata/output/t.vf3 b/src/tool/awk/testdata/output/t.vf3 new file mode 100644 index 0000000..97cc521 --- /dev/null +++ b/src/tool/awk/testdata/output/t.vf3 @@ -0,0 +1,199 @@ + + +mel mel +bwk bwk me +ken ken him someone else +srb srb +lem lem +scj scj +rhm rhm +shen shen +a68 a68 +sif sif +pjw pjw +nls nls +dmr dmr +cda cda +bs bs +llc llc +mb mb +ava ava +jrv jrv +bin bin +greg greg +dict dict +lck lck +rje rje +lwf lwf +dave dave +jhc jhc +agf agf +doug doug +valerie valerie +jca jca +bbs bbs +moh moh +xchar xchar +tbl tbl +s s +tgs tgs +met met +jck jck +port port +sue sue +root root +bsb bsb +jeg jeg +eag eag +pdj pdj +tpc tpc +cvw cvw +rwm rwm +avg avg +eg eg +jam jam +dl dl +lgm lgm +cmb cmb +jwr jwr +gdb gdb +marc marc +usg usg +ggr ggr +daemon daemon +mihalis mihalis +honey honey +tad tad +acs acs +uucp uucp +raf raf +adh adh +kec kec +craig craig +donmac donmac +jj jj +ravi ravi +drw drw +stars stars +mrg mrg +jcb jcb +ralph ralph +tom tom +sjb sjb +haight haight +sharon sharon +chuck chuck +dsj dsj +bill bill +god god +sys sys +meh meh +jon jon +dan dan +fox fox +dale dale +kab kab +buz buz +asc asc +jas jas +trt trt +wsb wsb +dwh dwh +ktf ktf +lr lr +dlc dlc +dls dls +jwf jwf +mash mash +ars ars +vgl vgl +jfo jfo +rab rab +pd pd +jns jns +spm spm +rob rob +egb egb +hm hm +mhb mhb +aed aed +cpb cpb +evp evp +ber ber +men men +mitch mitch +ast ast +jfr jfr +lax lax +nel nel +blue blue +jfk jfk +njas njas +122sec 122sec +ddwar ddwar +gopi gopi +jk jk +learn learn +low low +nac nac +sidor sidor + +running running tcsh [cbm]:/:/bin/tcsh +V V Administration:/usr/admin:/bin/sh +Diagnostics:/usr/diags:/bin/csh Diagnostics:/usr/diags:/bin/csh + +Tools Tools Owner:/bin:/dev/null + + +Activity Activity Owner:/usr/adm:/bin/sh +Files Files Owner:/usr/adm:/bin/sh +Spooler Spooler Owner:/var/spool/lp:/bin/sh +Activity Activity Owner:/auditor:/bin/sh +Database Database Owner:/dbadmin:/bin/sh +Killian Killian (DO NOT REMOVE):/tmp: +Killian Killian (DO NOT REMOVE):/tmp: +Daemon Daemon and Fsdump:/var/rfindd:/bin/sh +Setup:/var/sysadmdesktop/EZsetup:/bin/csh Setup:/var/sysadmdesktop/EZsetup:/bin/csh +User:/usr/demos:/bin/csh User:/usr/demos:/bin/csh +User:/usr/tutor:/bin/csh User:/usr/tutor:/bin/csh +Space Space Tour:/usr/people/tour:/bin/csh +Account:/usr/people/guest:/bin/csh Account:/usr/people/guest:/bin/csh +Account:/usr/people/4Dgifts:/bin/csh Account:/usr/people/4Dgifts:/bin/csh +nobody nobody uid:/dev/null:/dev/null +no no access:/dev/null:/dev/null +nobody nobody uid:/dev/null:/dev/null +Owner:/usr/spool/rje: Owner:/usr/spool/rje: +change change log:/: +distributions:/v/adm/dist:/v/bin/sh distributions:/v/adm/dist:/v/bin/sh +Manual Manual Owner:/: +call call log [tom]:/v/adm/log:/v/bin/sh +oot oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +oottcsh oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +ysadm ysadm * 0 0 System V Administration /usr/admin /bin/sh +iag iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +aemon aemon * 1 1 daemons / /bin/sh +in in * 2 2 System Tools Owner /bin /dev/null +uucp uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +ucp ucp * 3 5 UUCP.Admin /usr/lib/uucp +ys ys * 4 0 System Activity Owner /usr/adm /bin/sh +adm adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +lp lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +auditor auditor * 11 0 Audit Activity Owner /auditor /bin/sh +dbadmin dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +bootes bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +cdjuke cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +rfindd rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +EZsetup EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +demos demos * 993 997 Demonstration User /usr/demos /bin/csh +tutor tutor * 994 997 Tutorial User /usr/tutor /bin/csh +tour tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +guest guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +4Dgifts 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +nobody nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +noaccess noaccess * 60002 60002 uid no access /dev/null /dev/null +nobody nobody * -2 -2 original nobody uid /dev/null /dev/null +rje rje * 8 8 RJE Owner /usr/spool/rje +changes changes * 11 11 system change log / +dist dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +man man * 99 995 On-line Manual Owner / +phoneca phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/output/t.x b/src/tool/awk/testdata/output/t.x new file mode 100644 index 0000000..fb44b09 --- /dev/null +++ b/src/tool/awk/testdata/output/t.x @@ -0,0 +1,3 @@ + 3481 xchar + 143 fox + 3 lax diff --git a/src/tool/awk/testdata/p.1 b/src/tool/awk/testdata/p.1 new file mode 100644 index 0000000..1751e36 --- /dev/null +++ b/src/tool/awk/testdata/p.1 @@ -0,0 +1 @@ +{ print } diff --git a/src/tool/awk/testdata/p.10 b/src/tool/awk/testdata/p.10 new file mode 100644 index 0000000..49c94ad --- /dev/null +++ b/src/tool/awk/testdata/p.10 @@ -0,0 +1 @@ +$1 == $4 diff --git a/src/tool/awk/testdata/p.11 b/src/tool/awk/testdata/p.11 new file mode 100644 index 0000000..d583cd8 --- /dev/null +++ b/src/tool/awk/testdata/p.11 @@ -0,0 +1 @@ +/Asia/ diff --git a/src/tool/awk/testdata/p.12 b/src/tool/awk/testdata/p.12 new file mode 100644 index 0000000..b12d466 --- /dev/null +++ b/src/tool/awk/testdata/p.12 @@ -0,0 +1 @@ +$4 ~ /Asia/ { print $1 } diff --git a/src/tool/awk/testdata/p.13 b/src/tool/awk/testdata/p.13 new file mode 100644 index 0000000..74d9530 --- /dev/null +++ b/src/tool/awk/testdata/p.13 @@ -0,0 +1 @@ +$4 !~ /Asia/ {print $1 } diff --git a/src/tool/awk/testdata/p.14 b/src/tool/awk/testdata/p.14 new file mode 100644 index 0000000..5f26b57 --- /dev/null +++ b/src/tool/awk/testdata/p.14 @@ -0,0 +1 @@ +/\$/ diff --git a/src/tool/awk/testdata/p.15 b/src/tool/awk/testdata/p.15 new file mode 100644 index 0000000..5955e98 --- /dev/null +++ b/src/tool/awk/testdata/p.15 @@ -0,0 +1 @@ +/\\/ diff --git a/src/tool/awk/testdata/p.16 b/src/tool/awk/testdata/p.16 new file mode 100644 index 0000000..c388481 --- /dev/null +++ b/src/tool/awk/testdata/p.16 @@ -0,0 +1 @@ +/^.$/ diff --git a/src/tool/awk/testdata/p.17 b/src/tool/awk/testdata/p.17 new file mode 100644 index 0000000..ede8a03 --- /dev/null +++ b/src/tool/awk/testdata/p.17 @@ -0,0 +1 @@ +$2 !~ /^[0-9]+$/ diff --git a/src/tool/awk/testdata/p.18 b/src/tool/awk/testdata/p.18 new file mode 100644 index 0000000..3b0a9cf --- /dev/null +++ b/src/tool/awk/testdata/p.18 @@ -0,0 +1 @@ +/(apple|cherry) (pie|tart)/ diff --git a/src/tool/awk/testdata/p.19 b/src/tool/awk/testdata/p.19 new file mode 100644 index 0000000..f063c7b --- /dev/null +++ b/src/tool/awk/testdata/p.19 @@ -0,0 +1,2 @@ +BEGIN { digits = "^[0-9]+$" } +$2 !~ digits diff --git a/src/tool/awk/testdata/p.2 b/src/tool/awk/testdata/p.2 new file mode 100644 index 0000000..dbef6e3 --- /dev/null +++ b/src/tool/awk/testdata/p.2 @@ -0,0 +1 @@ +{ print $1, $3 } diff --git a/src/tool/awk/testdata/p.20 b/src/tool/awk/testdata/p.20 new file mode 100644 index 0000000..7147bc4 --- /dev/null +++ b/src/tool/awk/testdata/p.20 @@ -0,0 +1 @@ +$4 == "Asia" && $3 > 500 diff --git a/src/tool/awk/testdata/p.21 b/src/tool/awk/testdata/p.21 new file mode 100644 index 0000000..8926c13 --- /dev/null +++ b/src/tool/awk/testdata/p.21 @@ -0,0 +1 @@ +$4 == "Asia" || $4 == "Europe" diff --git a/src/tool/awk/testdata/p.21a b/src/tool/awk/testdata/p.21a new file mode 100644 index 0000000..3b7bc10 --- /dev/null +++ b/src/tool/awk/testdata/p.21a @@ -0,0 +1 @@ +/Asia/ || /Africa/ diff --git a/src/tool/awk/testdata/p.22 b/src/tool/awk/testdata/p.22 new file mode 100644 index 0000000..84fe747 --- /dev/null +++ b/src/tool/awk/testdata/p.22 @@ -0,0 +1 @@ +$4 ~ /^(Asia|Europe)$/ diff --git a/src/tool/awk/testdata/p.23 b/src/tool/awk/testdata/p.23 new file mode 100644 index 0000000..ed6dee6 --- /dev/null +++ b/src/tool/awk/testdata/p.23 @@ -0,0 +1 @@ +/Canada/, /Brazil/ diff --git a/src/tool/awk/testdata/p.24 b/src/tool/awk/testdata/p.24 new file mode 100644 index 0000000..bf4ec48 --- /dev/null +++ b/src/tool/awk/testdata/p.24 @@ -0,0 +1 @@ +FNR == 1, FNR == 5 { print FILENAME, $0 } diff --git a/src/tool/awk/testdata/p.25 b/src/tool/awk/testdata/p.25 new file mode 100644 index 0000000..8310866 --- /dev/null +++ b/src/tool/awk/testdata/p.25 @@ -0,0 +1 @@ +{ printf "%10s %6.1f\n", $1, 1000 * $3 / $2 } diff --git a/src/tool/awk/testdata/p.26 b/src/tool/awk/testdata/p.26 new file mode 100644 index 0000000..13b5f4b --- /dev/null +++ b/src/tool/awk/testdata/p.26 @@ -0,0 +1,3 @@ +/Asia/ { pop = pop + $3; n = n + 1 } +END { print "population of", n,\ + "Asian countries in millions is", pop } diff --git a/src/tool/awk/testdata/p.26a b/src/tool/awk/testdata/p.26a new file mode 100644 index 0000000..1c283e7 --- /dev/null +++ b/src/tool/awk/testdata/p.26a @@ -0,0 +1,3 @@ +/Asia/ { pop += $3; ++n } +END { print "population of", n,\ + "Asian countries in millions is", pop } diff --git a/src/tool/awk/testdata/p.27 b/src/tool/awk/testdata/p.27 new file mode 100644 index 0000000..114d91a --- /dev/null +++ b/src/tool/awk/testdata/p.27 @@ -0,0 +1,2 @@ +maxpop < $3 { maxpop = $3; country = $1 } +END { print country, maxpop } diff --git a/src/tool/awk/testdata/p.28 b/src/tool/awk/testdata/p.28 new file mode 100644 index 0000000..e3ddbfc --- /dev/null +++ b/src/tool/awk/testdata/p.28 @@ -0,0 +1 @@ +{ print NR ":" $0 } diff --git a/src/tool/awk/testdata/p.29 b/src/tool/awk/testdata/p.29 new file mode 100644 index 0000000..f5cbbdd --- /dev/null +++ b/src/tool/awk/testdata/p.29 @@ -0,0 +1 @@ + { gsub(/USA/, "United States"); print } diff --git a/src/tool/awk/testdata/p.3 b/src/tool/awk/testdata/p.3 new file mode 100644 index 0000000..e2eb0d2 --- /dev/null +++ b/src/tool/awk/testdata/p.3 @@ -0,0 +1 @@ +{ printf "[%10s] [%-16d]\n", $1, $3 } diff --git a/src/tool/awk/testdata/p.30 b/src/tool/awk/testdata/p.30 new file mode 100644 index 0000000..e1a9ef4 --- /dev/null +++ b/src/tool/awk/testdata/p.30 @@ -0,0 +1 @@ +{ print length, $0 } diff --git a/src/tool/awk/testdata/p.31 b/src/tool/awk/testdata/p.31 new file mode 100644 index 0000000..3d0b32e --- /dev/null +++ b/src/tool/awk/testdata/p.31 @@ -0,0 +1,2 @@ +length($1) > max { max = length($1); name = $1 } +END { print name } diff --git a/src/tool/awk/testdata/p.32 b/src/tool/awk/testdata/p.32 new file mode 100644 index 0000000..90bc2fe --- /dev/null +++ b/src/tool/awk/testdata/p.32 @@ -0,0 +1 @@ +{ $1 = substr($1, 1, 3); print } diff --git a/src/tool/awk/testdata/p.33 b/src/tool/awk/testdata/p.33 new file mode 100644 index 0000000..7acf196 --- /dev/null +++ b/src/tool/awk/testdata/p.33 @@ -0,0 +1,2 @@ + { s = s " " substr($1, 1, 3) } +END { print s } diff --git a/src/tool/awk/testdata/p.34 b/src/tool/awk/testdata/p.34 new file mode 100644 index 0000000..a48f533 --- /dev/null +++ b/src/tool/awk/testdata/p.34 @@ -0,0 +1 @@ +{ $2 /= 1000; print } diff --git a/src/tool/awk/testdata/p.35 b/src/tool/awk/testdata/p.35 new file mode 100644 index 0000000..d1090e1 --- /dev/null +++ b/src/tool/awk/testdata/p.35 @@ -0,0 +1,4 @@ +BEGIN { FS = OFS = "\t" } +$4 ~ /^North America$/ { $4 = "NA" } +$4 ~ /^South America$/ { $4 = "SA" } + { print } diff --git a/src/tool/awk/testdata/p.36 b/src/tool/awk/testdata/p.36 new file mode 100644 index 0000000..7e6aea0 --- /dev/null +++ b/src/tool/awk/testdata/p.36 @@ -0,0 +1,2 @@ +BEGIN { FS = OFS = "\t" } + { $5 = 1000 * $3 / $2 ; print $1, $2, $3, $4, $5 } diff --git a/src/tool/awk/testdata/p.37 b/src/tool/awk/testdata/p.37 new file mode 100644 index 0000000..015bf94 --- /dev/null +++ b/src/tool/awk/testdata/p.37 @@ -0,0 +1 @@ +$1 "" == $2 "" diff --git a/src/tool/awk/testdata/p.38 b/src/tool/awk/testdata/p.38 new file mode 100644 index 0000000..c49fda4 --- /dev/null +++ b/src/tool/awk/testdata/p.38 @@ -0,0 +1,6 @@ +{ if (maxpop < $3) { + maxpop = $3 + country = $1 + } +} +END { print country, maxpop } diff --git a/src/tool/awk/testdata/p.39 b/src/tool/awk/testdata/p.39 new file mode 100644 index 0000000..ea6bdbe --- /dev/null +++ b/src/tool/awk/testdata/p.39 @@ -0,0 +1,6 @@ +{ i = 1 + while (i <= NF) { + print $i + i++ + } +} diff --git a/src/tool/awk/testdata/p.4 b/src/tool/awk/testdata/p.4 new file mode 100644 index 0000000..d900a69 --- /dev/null +++ b/src/tool/awk/testdata/p.4 @@ -0,0 +1 @@ +{ print NR, $0 } diff --git a/src/tool/awk/testdata/p.40 b/src/tool/awk/testdata/p.40 new file mode 100644 index 0000000..a915776 --- /dev/null +++ b/src/tool/awk/testdata/p.40 @@ -0,0 +1,3 @@ +{ for (i = 1; i <= NF; i++) + print $i +} diff --git a/src/tool/awk/testdata/p.41 b/src/tool/awk/testdata/p.41 new file mode 100644 index 0000000..3ce5539 --- /dev/null +++ b/src/tool/awk/testdata/p.41 @@ -0,0 +1,3 @@ +NR >= 10 { exit } +END { if (NR < 10) + print FILENAME " has only " NR " lines" } diff --git a/src/tool/awk/testdata/p.42 b/src/tool/awk/testdata/p.42 new file mode 100644 index 0000000..88e3838 --- /dev/null +++ b/src/tool/awk/testdata/p.42 @@ -0,0 +1,4 @@ +/Asia/ { pop["Asia"] += $3 } +/Africa/ { pop["Africa"] += $3 } +END { print "Asian population in millions is", pop["Asia"] + print "African population in millions is", pop["Africa"] } diff --git a/src/tool/awk/testdata/p.43 b/src/tool/awk/testdata/p.43 new file mode 100644 index 0000000..243161c --- /dev/null +++ b/src/tool/awk/testdata/p.43 @@ -0,0 +1,4 @@ +BEGIN { FS = "\t" } + { area[$4] += $2 } +END { for (name in area) + print name ":" area[name] } diff --git a/src/tool/awk/testdata/p.44 b/src/tool/awk/testdata/p.44 new file mode 100644 index 0000000..5c02a98 --- /dev/null +++ b/src/tool/awk/testdata/p.44 @@ -0,0 +1,7 @@ +function fact(n) { + if (n <= 1) + return 1 + else + return n * fact(n-1) +} +{ print $1 "! is " fact($1) } diff --git a/src/tool/awk/testdata/p.45 b/src/tool/awk/testdata/p.45 new file mode 100644 index 0000000..7034c70 --- /dev/null +++ b/src/tool/awk/testdata/p.45 @@ -0,0 +1,2 @@ +BEGIN { OFS = ":" ; ORS = "\n\n" } + { print $1, $2 } diff --git a/src/tool/awk/testdata/p.46 b/src/tool/awk/testdata/p.46 new file mode 100644 index 0000000..7dd3687 --- /dev/null +++ b/src/tool/awk/testdata/p.46 @@ -0,0 +1 @@ + { print $1 $2 } diff --git a/src/tool/awk/testdata/p.47 b/src/tool/awk/testdata/p.47 new file mode 100644 index 0000000..0b853ef --- /dev/null +++ b/src/tool/awk/testdata/p.47 @@ -0,0 +1,2 @@ +$3 > 100 { print >"tempbig" } +$3 <= 100 { print >"tempsmall" } diff --git a/src/tool/awk/testdata/p.48 b/src/tool/awk/testdata/p.48 new file mode 100644 index 0000000..ab407fb --- /dev/null +++ b/src/tool/awk/testdata/p.48 @@ -0,0 +1,4 @@ +BEGIN { FS = "\t" } + { pop[$4] += $3 } +END { for (c in pop) + print c ":" pop[c] | "sort" } diff --git a/src/tool/awk/testdata/p.48a b/src/tool/awk/testdata/p.48a new file mode 100644 index 0000000..73b5477 --- /dev/null +++ b/src/tool/awk/testdata/p.48a @@ -0,0 +1,6 @@ +BEGIN { + for (i = 1; i < ARGC; i++) + printf "%s ", ARGV[i] + printf "\n" + exit +} diff --git a/src/tool/awk/testdata/p.48b b/src/tool/awk/testdata/p.48b new file mode 100644 index 0000000..472b25a --- /dev/null +++ b/src/tool/awk/testdata/p.48b @@ -0,0 +1,5 @@ +BEGIN { k = 3; n = 10 } +{ if (n <= 0) exit + if (rand() <= k/n) { print; k-- } + n-- +} diff --git a/src/tool/awk/testdata/p.49 b/src/tool/awk/testdata/p.49 new file mode 100644 index 0000000..989b48d --- /dev/null +++ b/src/tool/awk/testdata/p.49 @@ -0,0 +1 @@ +$1 == "include" { system("cat " $2) } diff --git a/src/tool/awk/testdata/p.5 b/src/tool/awk/testdata/p.5 new file mode 100644 index 0000000..bb42e81 --- /dev/null +++ b/src/tool/awk/testdata/p.5 @@ -0,0 +1,3 @@ +BEGIN { FS = "\t" + printf "%10s %6s %5s %15s\n", "COUNTRY", "AREA", "POP", "CONTINENT" } + { printf "%10s %6d %5d %15s\n", $1, $2, $3, $4 } diff --git a/src/tool/awk/testdata/p.50 b/src/tool/awk/testdata/p.50 new file mode 100644 index 0000000..ad6247a --- /dev/null +++ b/src/tool/awk/testdata/p.50 @@ -0,0 +1,4 @@ +BEGIN { FS = "\t" } + { pop[$4 ":" $1] += $3 } +END { for (cc in pop) + print cc ":" pop[cc] | "sort -t: +0 -1 +2nr" } diff --git a/src/tool/awk/testdata/p.51 b/src/tool/awk/testdata/p.51 new file mode 100644 index 0000000..148db8e --- /dev/null +++ b/src/tool/awk/testdata/p.51 @@ -0,0 +1,7 @@ +BEGIN { FS = ":" } +{ if ($1 != prev) { + print "\n" $1 ":" + prev = $1 + } + printf "\t%-10s %6d\n", $2, $3 +} diff --git a/src/tool/awk/testdata/p.52 b/src/tool/awk/testdata/p.52 new file mode 100644 index 0000000..f60acc1 --- /dev/null +++ b/src/tool/awk/testdata/p.52 @@ -0,0 +1,16 @@ +BEGIN { FS = ":" } +{ + if ($1 != prev) { + if (prev) { + printf "\t%-10s\t %6d\n", "total", subtotal + subtotal = 0 + } + print "\n" $1 ":" + prev = $1 + } + printf "\t%-10s %6d\n", $2, $3 + wtotal += $3 + subtotal += $3 +} +END { printf "\t%-10s\t %6d\n", "total", subtotal + printf "\n%-10s\t\t %6d\n", "World Total", wtotal } diff --git a/src/tool/awk/testdata/p.5a b/src/tool/awk/testdata/p.5a new file mode 100644 index 0000000..cd772f4 --- /dev/null +++ b/src/tool/awk/testdata/p.5a @@ -0,0 +1,3 @@ +BEGIN { FS = "\t" + printf "%10s\t%6s\t%6s\t%15s\n", "COUNTRY", "AREA", "POP'N", "CONTINENT"} + { printf "%10s\t%6d\t%6d\t%15s\n", $1, $2, $3, $4} diff --git a/src/tool/awk/testdata/p.6 b/src/tool/awk/testdata/p.6 new file mode 100644 index 0000000..c83e82c --- /dev/null +++ b/src/tool/awk/testdata/p.6 @@ -0,0 +1 @@ +END { print NR } diff --git a/src/tool/awk/testdata/p.7 b/src/tool/awk/testdata/p.7 new file mode 100644 index 0000000..287c873 --- /dev/null +++ b/src/tool/awk/testdata/p.7 @@ -0,0 +1 @@ +$3 > 100 diff --git a/src/tool/awk/testdata/p.8 b/src/tool/awk/testdata/p.8 new file mode 100644 index 0000000..5149f37 --- /dev/null +++ b/src/tool/awk/testdata/p.8 @@ -0,0 +1 @@ +$4 == "Asia" { print $1 } diff --git a/src/tool/awk/testdata/p.9 b/src/tool/awk/testdata/p.9 new file mode 100644 index 0000000..3cf20b6 --- /dev/null +++ b/src/tool/awk/testdata/p.9 @@ -0,0 +1 @@ +$1 >= "S" diff --git a/src/tool/awk/testdata/p.table b/src/tool/awk/testdata/p.table new file mode 100644 index 0000000..68509c6 --- /dev/null +++ b/src/tool/awk/testdata/p.table @@ -0,0 +1,33 @@ +# table - simple table formatter + +BEGIN { + FS = "\t"; blanks = sprintf("%100s", " ") + number = "^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$" +} + +{ row[NR] = $0 + for (i = 1; i <= NF; i++) { + if ($i ~ number) + nwid[i] = max(nwid[i], length($i)) + wid[i] = max(wid[i], length($i)) + } +} + +END { + for (r = 1; r <= NR; r++) { + n = split(row[r], d) + for (i = 1; i <= n; i++) { + sep = (i < n) ? " " : "\n" + if (d[i] ~ number) + printf("%" wid[i] "s%s", numjust(i,d[i]), sep) + else + printf("%-" wid[i] "s%s", d[i], sep) + } + } +} + +function max(x, y) { return (x > y) ? x : y } + +function numjust(n, s) { # position s in field n + return s substr(blanks, 1, int((wid[n]-nwid[n])/2)) +} diff --git a/src/tool/awk/testdata/parseerror/bad.awk b/src/tool/awk/testdata/parseerror/bad.awk new file mode 100644 index 0000000..cb15dec --- /dev/null +++ b/src/tool/awk/testdata/parseerror/bad.awk @@ -0,0 +1,2 @@ + +x* diff --git a/src/tool/awk/testdata/parseerror/good.awk b/src/tool/awk/testdata/parseerror/good.awk new file mode 100644 index 0000000..141bafd --- /dev/null +++ b/src/tool/awk/testdata/parseerror/good.awk @@ -0,0 +1,3 @@ +{ + print $1 +} \ No newline at end of file diff --git a/src/tool/awk/testdata/t.0 b/src/tool/awk/testdata/t.0 new file mode 100644 index 0000000..1751e36 --- /dev/null +++ b/src/tool/awk/testdata/t.0 @@ -0,0 +1 @@ +{ print } diff --git a/src/tool/awk/testdata/t.0a b/src/tool/awk/testdata/t.0a new file mode 100644 index 0000000..b4705e9 --- /dev/null +++ b/src/tool/awk/testdata/t.0a @@ -0,0 +1 @@ +{i = i+1; print i, NR} diff --git a/src/tool/awk/testdata/t.1 b/src/tool/awk/testdata/t.1 new file mode 100644 index 0000000..44a754e --- /dev/null +++ b/src/tool/awk/testdata/t.1 @@ -0,0 +1,2 @@ +BEGIN {FS=":"} + {print $1, $2, $3} diff --git a/src/tool/awk/testdata/t.1.x b/src/tool/awk/testdata/t.1.x new file mode 100644 index 0000000..8954950 --- /dev/null +++ b/src/tool/awk/testdata/t.1.x @@ -0,0 +1 @@ +{i="count" $1 $2; print i , $0} diff --git a/src/tool/awk/testdata/t.2 b/src/tool/awk/testdata/t.2 new file mode 100644 index 0000000..92e058d --- /dev/null +++ b/src/tool/awk/testdata/t.2 @@ -0,0 +1,2 @@ +BEGIN {OFS="==="} + {print $1, $2, $3} diff --git a/src/tool/awk/testdata/t.2.x b/src/tool/awk/testdata/t.2.x new file mode 100644 index 0000000..700aee3 --- /dev/null +++ b/src/tool/awk/testdata/t.2.x @@ -0,0 +1 @@ +{i=2; j=$3; $1=i;print i,j,$1} diff --git a/src/tool/awk/testdata/t.3 b/src/tool/awk/testdata/t.3 new file mode 100644 index 0000000..8abbecc --- /dev/null +++ b/src/tool/awk/testdata/t.3 @@ -0,0 +1 @@ +$1 == "5" || $1 == "4" diff --git a/src/tool/awk/testdata/t.3.x b/src/tool/awk/testdata/t.3.x new file mode 100644 index 0000000..a5be10b --- /dev/null +++ b/src/tool/awk/testdata/t.3.x @@ -0,0 +1,7 @@ +{ +x = $1 +while (x > 1) { + print x + x = x / 10 +} +} diff --git a/src/tool/awk/testdata/t.4 b/src/tool/awk/testdata/t.4 new file mode 100644 index 0000000..d2785f1 --- /dev/null +++ b/src/tool/awk/testdata/t.4 @@ -0,0 +1 @@ +$1 ~ /5/ || $1 ~ /4/ diff --git a/src/tool/awk/testdata/t.4.x b/src/tool/awk/testdata/t.4.x new file mode 100644 index 0000000..9ff09e8 --- /dev/null +++ b/src/tool/awk/testdata/t.4.x @@ -0,0 +1 @@ +{i=$(1); print i} diff --git a/src/tool/awk/testdata/t.5.x b/src/tool/awk/testdata/t.5.x new file mode 100644 index 0000000..d5c305c --- /dev/null +++ b/src/tool/awk/testdata/t.5.x @@ -0,0 +1 @@ +{$(1) = "xxx"; print $1,$0} diff --git a/src/tool/awk/testdata/t.6 b/src/tool/awk/testdata/t.6 new file mode 100644 index 0000000..177d01e --- /dev/null +++ b/src/tool/awk/testdata/t.6 @@ -0,0 +1,8 @@ +/a|b|c/ { + i = $1 + print + while (i >= 1) { + print " ", i + i = i / 10 + } +} diff --git a/src/tool/awk/testdata/t.6.x b/src/tool/awk/testdata/t.6.x new file mode 100644 index 0000000..9f79662 --- /dev/null +++ b/src/tool/awk/testdata/t.6.x @@ -0,0 +1 @@ +{print NF,$0} diff --git a/src/tool/awk/testdata/t.6a b/src/tool/awk/testdata/t.6a new file mode 100644 index 0000000..1cb90c5 --- /dev/null +++ b/src/tool/awk/testdata/t.6a @@ -0,0 +1,5 @@ +/a|b|c/ { + print + for (i = $1; i >= 1; ) + print " ", i /= 10 +} diff --git a/src/tool/awk/testdata/t.6b b/src/tool/awk/testdata/t.6b new file mode 100644 index 0000000..5e36e7d --- /dev/null +++ b/src/tool/awk/testdata/t.6b @@ -0,0 +1,5 @@ +/a|b|c/ { + print + for (i = $1; (i /= 10)>= 1; ) + print " ", i +} diff --git a/src/tool/awk/testdata/t.8.x b/src/tool/awk/testdata/t.8.x new file mode 100644 index 0000000..8c2624d --- /dev/null +++ b/src/tool/awk/testdata/t.8.x @@ -0,0 +1,4 @@ +{$2=$1; print} + +# this should produce a blank for an empty input line +# since it has created fields 1 and 2. diff --git a/src/tool/awk/testdata/t.8.y b/src/tool/awk/testdata/t.8.y new file mode 100644 index 0000000..beee3ef --- /dev/null +++ b/src/tool/awk/testdata/t.8.y @@ -0,0 +1,7 @@ +{$1=$2; print} + +# this should print nothing for an empty input line +# since it has only referred to $2, not created it, +# and thus only $1 exists (and it's null). + +# is this right??? diff --git a/src/tool/awk/testdata/t.NF b/src/tool/awk/testdata/t.NF new file mode 100644 index 0000000..5c638a1 --- /dev/null +++ b/src/tool/awk/testdata/t.NF @@ -0,0 +1 @@ +{ OFS = "|"; print NF; NF = 2; print NF; print; $5 = "five"; print NF; print } diff --git a/src/tool/awk/testdata/t.a b/src/tool/awk/testdata/t.a new file mode 100644 index 0000000..4523c67 --- /dev/null +++ b/src/tool/awk/testdata/t.a @@ -0,0 +1,6 @@ + {if (amount[$2] "" == "") item[++num] = $2; + amount[$2] += $1 + } +END {for (i=1; i<=num; i++) + print item[i], amount[item[i]] + } diff --git a/src/tool/awk/testdata/t.addops b/src/tool/awk/testdata/t.addops new file mode 100644 index 0000000..1e0585f --- /dev/null +++ b/src/tool/awk/testdata/t.addops @@ -0,0 +1,24 @@ +{ n = $1 + n += $1 + if (n != $1 + $1) print NR, "urk +=" + n = $1 + n -= $1 + if (n != 0) print NR, "urk -=" + n = $1 + n *= 3.5 + if (n != 3.5 * $1) print NR, "urk *=" + n = $1 + n /= 4 + if (n != $1 / 4) print NR, "urk /=" + n = NR + n ^= 2 + if (n != NR * NR) print NR, "urk1 ^=", n, NR * NR + n = NR + n **= 2 + if (n != NR * NR) print NR, "urk1 **=", n, NR * NR + n = NR + n ^= 1.5 + ns = sprintf("%.10g", n) + sq = sprintf("%.10g", NR * sqrt(NR)) + if (ns != sq) print NR, "urk2 ^=", ns, sq +} diff --git a/src/tool/awk/testdata/t.aeiou b/src/tool/awk/testdata/t.aeiou new file mode 100644 index 0000000..6ab667c --- /dev/null +++ b/src/tool/awk/testdata/t.aeiou @@ -0,0 +1 @@ +/^[^aeiouy]*[aeiou][^aeiouy][aeiouy][aeiouy]*[^aeiouy]*$/ diff --git a/src/tool/awk/testdata/t.aeiouy b/src/tool/awk/testdata/t.aeiouy new file mode 100644 index 0000000..71f8878 --- /dev/null +++ b/src/tool/awk/testdata/t.aeiouy @@ -0,0 +1 @@ +/^[^aeiouy]*a[^aeiouy]*e[^aeiouy]*i[^aeiouy]*o[^aeiouy]*u[^aeiouy]*y[^aeiouy]*$/ diff --git a/src/tool/awk/testdata/t.arith b/src/tool/awk/testdata/t.arith new file mode 100644 index 0000000..09766e3 --- /dev/null +++ b/src/tool/awk/testdata/t.arith @@ -0,0 +1,6 @@ +{ print NR, $1, $1+$1, $1-$1, $1 * $1 } +{ print NR, $1/NR, $1 % NR } +# { print NR, $1++, $1--, --$1, $1-- } # this depends on order of eval of args! +{ print NR, -$1 } +$1 > 0 { print NR, $1 ^ 0.5 } +$1 > 0 { print NR, $1 ** 0.5 } diff --git a/src/tool/awk/testdata/t.array b/src/tool/awk/testdata/t.array new file mode 100644 index 0000000..167132c --- /dev/null +++ b/src/tool/awk/testdata/t.array @@ -0,0 +1,13 @@ + { x[NR] = $0 } + +END { + i = 1 + while (i <= NR) { + print x[i] + split (x[i], y) + usage = y[1] + name = y[2] + print " ", name, usage + i++ + } +} diff --git a/src/tool/awk/testdata/t.array1 b/src/tool/awk/testdata/t.array1 new file mode 100644 index 0000000..d39475a --- /dev/null +++ b/src/tool/awk/testdata/t.array1 @@ -0,0 +1,10 @@ +{for(i=1; i<=NF; i++) { + if (x[$i] == "") + y[++n] = $i + x[$i]++ + } +} +END { + for (i=0; i>> assert failed <<<" +} + +function i(x) { return x } + +{ m = length($1); n = length($2); n = i(n); assert(m > n) } diff --git a/src/tool/awk/testdata/t.avg b/src/tool/awk/testdata/t.avg new file mode 100644 index 0000000..dc6ff8e --- /dev/null +++ b/src/tool/awk/testdata/t.avg @@ -0,0 +1,5 @@ +{s = s + $1; c = c + 1} +END { +print "sum=", s, " count=", c +print "avg=", s/c +} diff --git a/src/tool/awk/testdata/t.b.x b/src/tool/awk/testdata/t.b.x new file mode 100644 index 0000000..1af0f21 --- /dev/null +++ b/src/tool/awk/testdata/t.b.x @@ -0,0 +1 @@ +{$6=":::" ; print $6; print NF, $0} diff --git a/src/tool/awk/testdata/t.be b/src/tool/awk/testdata/t.be new file mode 100644 index 0000000..4b56c4c --- /dev/null +++ b/src/tool/awk/testdata/t.be @@ -0,0 +1,6 @@ +# some question of what FILENAME ought to be before execution. +# current belief: "-", or name of first file argument. +# this may not be sensible. + +BEGIN { print FILENAME } +END { print NR } diff --git a/src/tool/awk/testdata/t.beginexit b/src/tool/awk/testdata/t.beginexit new file mode 100644 index 0000000..ae29b82 --- /dev/null +++ b/src/tool/awk/testdata/t.beginexit @@ -0,0 +1,6 @@ +BEGIN { + while (getline && n++ < 10) + print + exit +} +{ print } diff --git a/src/tool/awk/testdata/t.beginnext b/src/tool/awk/testdata/t.beginnext new file mode 100644 index 0000000..09a6a87 --- /dev/null +++ b/src/tool/awk/testdata/t.beginnext @@ -0,0 +1,6 @@ +BEGIN { + while (getline && n++ < 10) + print + print "tenth" +} +{ print } diff --git a/src/tool/awk/testdata/t.break b/src/tool/awk/testdata/t.break new file mode 100644 index 0000000..db1ebf7 --- /dev/null +++ b/src/tool/awk/testdata/t.break @@ -0,0 +1,7 @@ +{ +for (i=1; i <= NF; i++) + if ($i ~ /^[a-z]+$/) { + print $i " is alphabetic" + break + } +} diff --git a/src/tool/awk/testdata/t.break1 b/src/tool/awk/testdata/t.break1 new file mode 100644 index 0000000..4ed753a --- /dev/null +++ b/src/tool/awk/testdata/t.break1 @@ -0,0 +1,10 @@ + { x[NR] = $0 } +END { + for (i = 1; i <= NR; i++) { + print i, x[i] + if (x[i] ~ /shen/) + break + } + print "got here" + print i, x[i] +} diff --git a/src/tool/awk/testdata/t.break2 b/src/tool/awk/testdata/t.break2 new file mode 100644 index 0000000..711c4c9 --- /dev/null +++ b/src/tool/awk/testdata/t.break2 @@ -0,0 +1,10 @@ + { x[NR] = $0 } +END { + for (i=1; i <= NR; i++) { + print i, x[i] + if (x[i] ~ /shen/) + break + } + print "got here" + print i, x[i] +} diff --git a/src/tool/awk/testdata/t.break3 b/src/tool/awk/testdata/t.break3 new file mode 100644 index 0000000..f4920d6 --- /dev/null +++ b/src/tool/awk/testdata/t.break3 @@ -0,0 +1,8 @@ +{ for (i = 1; i <= NF; i++) { + for (j = 1; j <= NF; j++) + if (j == 2) + break; + print "inner", i, j + } + print "outer", i, j +} diff --git a/src/tool/awk/testdata/t.bug1 b/src/tool/awk/testdata/t.bug1 new file mode 100644 index 0000000..d438489 --- /dev/null +++ b/src/tool/awk/testdata/t.bug1 @@ -0,0 +1,3 @@ +# this program fails if awk is created without separate I&D +# prints garbage if no $3 +{ print $1, $3 } diff --git a/src/tool/awk/testdata/t.builtins b/src/tool/awk/testdata/t.builtins new file mode 100644 index 0000000..0edcbeb --- /dev/null +++ b/src/tool/awk/testdata/t.builtins @@ -0,0 +1,6 @@ +/^[0-9]/ { print $1, + length($1), + log($1), + sqrt($1), + int(sqrt($1)), + exp($1 % 10) } diff --git a/src/tool/awk/testdata/t.cat b/src/tool/awk/testdata/t.cat new file mode 100644 index 0000000..92c16e6 --- /dev/null +++ b/src/tool/awk/testdata/t.cat @@ -0,0 +1,4 @@ +{print $2 " " $1} +{print $1 " " "is", $2} +{print $2 FS "is" FS $1} +{print length($1 $2), length($1) + length($2)} diff --git a/src/tool/awk/testdata/t.cat1 b/src/tool/awk/testdata/t.cat1 new file mode 100644 index 0000000..ad2a6ce --- /dev/null +++ b/src/tool/awk/testdata/t.cat1 @@ -0,0 +1 @@ +{print x $0} # should precede by zero diff --git a/src/tool/awk/testdata/t.cat2 b/src/tool/awk/testdata/t.cat2 new file mode 100644 index 0000000..2d95d19 --- /dev/null +++ b/src/tool/awk/testdata/t.cat2 @@ -0,0 +1 @@ +{$1 = $1 "*"; print} diff --git a/src/tool/awk/testdata/t.cmp b/src/tool/awk/testdata/t.cmp new file mode 100644 index 0000000..21e9f7a --- /dev/null +++ b/src/tool/awk/testdata/t.cmp @@ -0,0 +1 @@ +$2 > $1 diff --git a/src/tool/awk/testdata/t.coerce b/src/tool/awk/testdata/t.coerce new file mode 100644 index 0000000..ff87d79 --- /dev/null +++ b/src/tool/awk/testdata/t.coerce @@ -0,0 +1,4 @@ +END { print i, NR + if (i < NR) + print i, NR +} diff --git a/src/tool/awk/testdata/t.coerce2 b/src/tool/awk/testdata/t.coerce2 new file mode 100644 index 0000000..c04bf59 --- /dev/null +++ b/src/tool/awk/testdata/t.coerce2 @@ -0,0 +1,7 @@ +{ + print index(1, $1) + print substr(123456789, 1, 3) + print 1 in x + print 1 23 456 + print 123456789 ~ 123, 123456789 ~ "abc" +} diff --git a/src/tool/awk/testdata/t.comment b/src/tool/awk/testdata/t.comment new file mode 100644 index 0000000..0b54956 --- /dev/null +++ b/src/tool/awk/testdata/t.comment @@ -0,0 +1,5 @@ +# this is a comment line +# so is this +/#/ { print "this one has a # in it: " $0 # comment + print "again:" $0 + } diff --git a/src/tool/awk/testdata/t.comment1 b/src/tool/awk/testdata/t.comment1 new file mode 100644 index 0000000..599225f --- /dev/null +++ b/src/tool/awk/testdata/t.comment1 @@ -0,0 +1,7 @@ +#comment + # +BEGIN { x = 1 } +/abc/ { print $0 } +#comment +END { print NR } +#comment diff --git a/src/tool/awk/testdata/t.concat b/src/tool/awk/testdata/t.concat new file mode 100644 index 0000000..c8464af --- /dev/null +++ b/src/tool/awk/testdata/t.concat @@ -0,0 +1 @@ +{ x = $1; print x (++i) } diff --git a/src/tool/awk/testdata/t.cond b/src/tool/awk/testdata/t.cond new file mode 100644 index 0000000..256af65 --- /dev/null +++ b/src/tool/awk/testdata/t.cond @@ -0,0 +1,3 @@ +{ print (substr($2,1,1) > substr($2,2,1)) ? $1 : $2 } +{ x = substr($1, 1, 1); y = substr($1, 2, 1); z = substr($1, 3, 1) + print (x > y ? (x > z ? x : z) : y > z ? y : z) } diff --git a/src/tool/awk/testdata/t.contin b/src/tool/awk/testdata/t.contin new file mode 100644 index 0000000..66669ee --- /dev/null +++ b/src/tool/awk/testdata/t.contin @@ -0,0 +1,9 @@ +{ +for (i = 1; i <= NF; i++) { + if ($i ~ /^[0-9]+$/) + continue; + print $i, " is non-numeric" + next +} +print $0, "is all numeric" +} diff --git a/src/tool/awk/testdata/t.count b/src/tool/awk/testdata/t.count new file mode 100644 index 0000000..5734d14 --- /dev/null +++ b/src/tool/awk/testdata/t.count @@ -0,0 +1 @@ +END { print NR } diff --git a/src/tool/awk/testdata/t.crlf b/src/tool/awk/testdata/t.crlf new file mode 100644 index 0000000..7329b21 --- /dev/null +++ b/src/tool/awk/testdata/t.crlf @@ -0,0 +1,4 @@ +# checks whether lines with crlf are parsed ok + +{print \ + } diff --git a/src/tool/awk/testdata/t.cum b/src/tool/awk/testdata/t.cum new file mode 100644 index 0000000..1f4b4fe --- /dev/null +++ b/src/tool/awk/testdata/t.cum @@ -0,0 +1,4 @@ +{i = i + $1; print i} +END { +print i +} diff --git a/src/tool/awk/testdata/t.d.x b/src/tool/awk/testdata/t.d.x new file mode 100644 index 0000000..38e0fea --- /dev/null +++ b/src/tool/awk/testdata/t.d.x @@ -0,0 +1,2 @@ +BEGIN {FS=":" ; OFS=":"} +{print NF " ",$0} diff --git a/src/tool/awk/testdata/t.delete1 b/src/tool/awk/testdata/t.delete1 new file mode 100644 index 0000000..bb59432 --- /dev/null +++ b/src/tool/awk/testdata/t.delete1 @@ -0,0 +1,7 @@ +{ split("1 1.2 abc", x) + x[$1]++ + delete x[1] + delete x[1.2] + delete x["abc"] + delete x[$1] +} diff --git a/src/tool/awk/testdata/t.delete2 b/src/tool/awk/testdata/t.delete2 new file mode 100644 index 0000000..6b730f9 --- /dev/null +++ b/src/tool/awk/testdata/t.delete2 @@ -0,0 +1,12 @@ +NR < 50 { n = split($0, x) + for (i = 1; i <= n; i++) + for (j = 1; j <= n; j++) + y[i,j] = n * i + j + for (i = 1; i <= n; i++) + delete y[i,i] + k = 0 + for (i in y) + k++ + if (k != int(n^2-n)) + printf "delete2 miscount %d vs %d at %d\n", k, n^2-n, NR +} diff --git a/src/tool/awk/testdata/t.delete3 b/src/tool/awk/testdata/t.delete3 new file mode 100644 index 0000000..73ab00f --- /dev/null +++ b/src/tool/awk/testdata/t.delete3 @@ -0,0 +1,7 @@ +{ x[$1] = $1 + delete x[$1] + n = 0 + for (i in x) n++ + if (n != 0) + print "error", n, "at", NR +} diff --git a/src/tool/awk/testdata/t.do b/src/tool/awk/testdata/t.do new file mode 100644 index 0000000..1c43a47 --- /dev/null +++ b/src/tool/awk/testdata/t.do @@ -0,0 +1,14 @@ +NF > 0 { + t = $0 + gsub(/[ \t]+/, "", t) + n = split($0, y) + if (n > 0) { + i = 1 + s = "" + do { + s = s $i + } while (i++ < NF) + } + if (s != t) + print "bad at", NR +} diff --git a/src/tool/awk/testdata/t.e b/src/tool/awk/testdata/t.e new file mode 100644 index 0000000..5f243e2 --- /dev/null +++ b/src/tool/awk/testdata/t.e @@ -0,0 +1 @@ +$1 < 10 || $2 ~ /bwk/ diff --git a/src/tool/awk/testdata/t.else b/src/tool/awk/testdata/t.else new file mode 100644 index 0000000..391a4ae --- /dev/null +++ b/src/tool/awk/testdata/t.else @@ -0,0 +1,3 @@ +{ if($1>1000) print "yes" + else print "no" +} diff --git a/src/tool/awk/testdata/t.exit b/src/tool/awk/testdata/t.exit new file mode 100644 index 0000000..21b9f4f --- /dev/null +++ b/src/tool/awk/testdata/t.exit @@ -0,0 +1,2 @@ +{ print } +$1 < 5000 { exit NR } diff --git a/src/tool/awk/testdata/t.exit1 b/src/tool/awk/testdata/t.exit1 new file mode 100644 index 0000000..445a619 --- /dev/null +++ b/src/tool/awk/testdata/t.exit1 @@ -0,0 +1,15 @@ +BEGIN { + print "this is before calling myabort" + myabort(1) + print "this is after calling myabort" +} +function myabort(n) { + print "in myabort - before exit", n + exit 2 + print "in myabort - after exit" +} +END { + print "into END" + myabort(2) + print "should not see this" +} diff --git a/src/tool/awk/testdata/t.f b/src/tool/awk/testdata/t.f new file mode 100644 index 0000000..eddf15f --- /dev/null +++ b/src/tool/awk/testdata/t.f @@ -0,0 +1 @@ +{print $2, $1} diff --git a/src/tool/awk/testdata/t.f.x b/src/tool/awk/testdata/t.f.x new file mode 100644 index 0000000..3efd861 --- /dev/null +++ b/src/tool/awk/testdata/t.f.x @@ -0,0 +1 @@ +$1>0 {print $1, sqrt($1)} diff --git a/src/tool/awk/testdata/t.f0 b/src/tool/awk/testdata/t.f0 new file mode 100644 index 0000000..a2ba2ad --- /dev/null +++ b/src/tool/awk/testdata/t.f0 @@ -0,0 +1 @@ +$1 ~ /x/ {print $0} diff --git a/src/tool/awk/testdata/t.f1 b/src/tool/awk/testdata/t.f1 new file mode 100644 index 0000000..209554f --- /dev/null +++ b/src/tool/awk/testdata/t.f1 @@ -0,0 +1 @@ +{$1 = 1; print} diff --git a/src/tool/awk/testdata/t.f2 b/src/tool/awk/testdata/t.f2 new file mode 100644 index 0000000..59cccde --- /dev/null +++ b/src/tool/awk/testdata/t.f2 @@ -0,0 +1 @@ +{$1 = 1; print $0} diff --git a/src/tool/awk/testdata/t.f3 b/src/tool/awk/testdata/t.f3 new file mode 100644 index 0000000..3fb4910 --- /dev/null +++ b/src/tool/awk/testdata/t.f3 @@ -0,0 +1 @@ +{$1 = NR; print} diff --git a/src/tool/awk/testdata/t.f4 b/src/tool/awk/testdata/t.f4 new file mode 100644 index 0000000..2771477 --- /dev/null +++ b/src/tool/awk/testdata/t.f4 @@ -0,0 +1 @@ +{$1 = NR; print $0} diff --git a/src/tool/awk/testdata/t.for b/src/tool/awk/testdata/t.for new file mode 100644 index 0000000..625d73e --- /dev/null +++ b/src/tool/awk/testdata/t.for @@ -0,0 +1,3 @@ +{ for (i=1; i<=NF; i++) + print i, $i +} diff --git a/src/tool/awk/testdata/t.for1 b/src/tool/awk/testdata/t.for1 new file mode 100644 index 0000000..022aa52 --- /dev/null +++ b/src/tool/awk/testdata/t.for1 @@ -0,0 +1,9 @@ +{ + i = 1 + for (;;) { + if (i > NF) + next + print i, $i + i++ + } +} diff --git a/src/tool/awk/testdata/t.for2 b/src/tool/awk/testdata/t.for2 new file mode 100644 index 0000000..c3dd8bc --- /dev/null +++ b/src/tool/awk/testdata/t.for2 @@ -0,0 +1,7 @@ +{ + for (i=1;;i++) { + if (i > NF) + next + print i, $i + } +} diff --git a/src/tool/awk/testdata/t.for3 b/src/tool/awk/testdata/t.for3 new file mode 100644 index 0000000..96d5818 --- /dev/null +++ b/src/tool/awk/testdata/t.for3 @@ -0,0 +1,8 @@ +{ for (i = 1; length($i) > 0; i++) + print i, $i +} +{ for (i = 1; + length($i) > 0; + i++) + print $i +} diff --git a/src/tool/awk/testdata/t.format4 b/src/tool/awk/testdata/t.format4 new file mode 100644 index 0000000..c273d8b --- /dev/null +++ b/src/tool/awk/testdata/t.format4 @@ -0,0 +1,9 @@ +BEGIN { +text=sprintf ("%125s", "x") +print length (text) +print text +xxx=substr (text,1,105) +print length (xxx) +print xxx +exit +} diff --git a/src/tool/awk/testdata/t.fun b/src/tool/awk/testdata/t.fun new file mode 100644 index 0000000..e0c4220 --- /dev/null +++ b/src/tool/awk/testdata/t.fun @@ -0,0 +1,3 @@ +function g() { return "{" f() "}" } +function f() { return $1 } + { print "<" g() ">" } diff --git a/src/tool/awk/testdata/t.fun0 b/src/tool/awk/testdata/t.fun0 new file mode 100644 index 0000000..ad332d7 --- /dev/null +++ b/src/tool/awk/testdata/t.fun0 @@ -0,0 +1,2 @@ +function f(a) { print "hello"; return a } +{ print "<" f($1) ">" } diff --git a/src/tool/awk/testdata/t.fun1 b/src/tool/awk/testdata/t.fun1 new file mode 100644 index 0000000..e9f7e77 --- /dev/null +++ b/src/tool/awk/testdata/t.fun1 @@ -0,0 +1,2 @@ +function f(a,b,c) { print "hello" } +NR < 3 { f(1,2,3) } diff --git a/src/tool/awk/testdata/t.fun2 b/src/tool/awk/testdata/t.fun2 new file mode 100644 index 0000000..d88f69c --- /dev/null +++ b/src/tool/awk/testdata/t.fun2 @@ -0,0 +1,10 @@ +function f(n) { + while (n < 10) { + print n + n = n + 1 + } +} +function g(n) { + print "g", n +} +{ f($1); g($1); print n } diff --git a/src/tool/awk/testdata/t.fun3 b/src/tool/awk/testdata/t.fun3 new file mode 100644 index 0000000..699d8bc --- /dev/null +++ b/src/tool/awk/testdata/t.fun3 @@ -0,0 +1,3 @@ +function f(n) { while ((n /= 10) > 1) print n } +function g(n) { print "g", n } +{ f($1); g($1) } diff --git a/src/tool/awk/testdata/t.fun4 b/src/tool/awk/testdata/t.fun4 new file mode 100644 index 0000000..474672b --- /dev/null +++ b/src/tool/awk/testdata/t.fun4 @@ -0,0 +1,9 @@ +function f(a, n) { + for (i=1; i <= n; i++) + print " " a[i] +} + +{ print + n = split($0, x) + f(x, n) +} diff --git a/src/tool/awk/testdata/t.fun5 b/src/tool/awk/testdata/t.fun5 new file mode 100644 index 0000000..026dfed --- /dev/null +++ b/src/tool/awk/testdata/t.fun5 @@ -0,0 +1,9 @@ +function f(a) { + return split($0, a) +} +{ + print + n = f(x) + for (i = 1; i <= n; i++) + print " " x[i] +} diff --git a/src/tool/awk/testdata/t.getval b/src/tool/awk/testdata/t.getval new file mode 100644 index 0000000..3587f32 --- /dev/null +++ b/src/tool/awk/testdata/t.getval @@ -0,0 +1,6 @@ +{ # tests various resetting of $1, $0, etc. + + $1 = length($1) + length($2) + print $0 + 0 + +} diff --git a/src/tool/awk/testdata/t.gsub b/src/tool/awk/testdata/t.gsub new file mode 100644 index 0000000..31b48c7 --- /dev/null +++ b/src/tool/awk/testdata/t.gsub @@ -0,0 +1 @@ +{gsub(/[aeiou]/,"foo"); print} diff --git a/src/tool/awk/testdata/t.gsub1 b/src/tool/awk/testdata/t.gsub1 new file mode 100644 index 0000000..78aace0 --- /dev/null +++ b/src/tool/awk/testdata/t.gsub1 @@ -0,0 +1 @@ +{gsub(/$/,"x"); print} diff --git a/src/tool/awk/testdata/t.gsub3 b/src/tool/awk/testdata/t.gsub3 new file mode 100644 index 0000000..659d00f --- /dev/null +++ b/src/tool/awk/testdata/t.gsub3 @@ -0,0 +1 @@ +length($1) {gsub(substr($1,1,1),"(&)"); print} diff --git a/src/tool/awk/testdata/t.gsub4 b/src/tool/awk/testdata/t.gsub4 new file mode 100644 index 0000000..c0102c4 --- /dev/null +++ b/src/tool/awk/testdata/t.gsub4 @@ -0,0 +1,4 @@ +length($1) == 0 { next } + +{gsub("[" $1 "]","(&)"); print} +{gsub("[" $1 "]","(\\&)"); print} diff --git a/src/tool/awk/testdata/t.i.x b/src/tool/awk/testdata/t.i.x new file mode 100644 index 0000000..86ec1b4 --- /dev/null +++ b/src/tool/awk/testdata/t.i.x @@ -0,0 +1,2 @@ +$1+0 > 0 {i=i+log($1); print i,log($1)} +END {print i} diff --git a/src/tool/awk/testdata/t.if b/src/tool/awk/testdata/t.if new file mode 100644 index 0000000..123d411 --- /dev/null +++ b/src/tool/awk/testdata/t.if @@ -0,0 +1 @@ +{if($1 || $2) print} diff --git a/src/tool/awk/testdata/t.in b/src/tool/awk/testdata/t.in new file mode 100644 index 0000000..2166980 --- /dev/null +++ b/src/tool/awk/testdata/t.in @@ -0,0 +1,9 @@ +BEGIN { + x["apple"] = 1; + x["orange"] = 2; + x["lemon"] = 3; + for (i in x) + print i, x[i] | "sort" + close("sort") + exit +} diff --git a/src/tool/awk/testdata/t.in1 b/src/tool/awk/testdata/t.in1 new file mode 100644 index 0000000..ade2cfa --- /dev/null +++ b/src/tool/awk/testdata/t.in1 @@ -0,0 +1,7 @@ + { if (amount[$2] == "") + name[++n] = $2 + amount[$2] += $1 + } +END { for (i in name) + print i, name[i], amount[name[i]] | "sort" + } diff --git a/src/tool/awk/testdata/t.in2 b/src/tool/awk/testdata/t.in2 new file mode 100644 index 0000000..8c7316d --- /dev/null +++ b/src/tool/awk/testdata/t.in2 @@ -0,0 +1,4 @@ + { x[substr($2, 1, 1)] += $1 } +END { for (i in x) + print i, x[i] +} diff --git a/src/tool/awk/testdata/t.in3 b/src/tool/awk/testdata/t.in3 new file mode 100644 index 0000000..1332981 --- /dev/null +++ b/src/tool/awk/testdata/t.in3 @@ -0,0 +1,7 @@ + { x[NR] = $0 } +END { + for (i in x) + if (x[i] ~ /shen/) + break + print i, x[i] +} diff --git a/src/tool/awk/testdata/t.incr b/src/tool/awk/testdata/t.incr new file mode 100644 index 0000000..d8103cd --- /dev/null +++ b/src/tool/awk/testdata/t.incr @@ -0,0 +1,2 @@ +{ ++i; --j; k++; l-- } +END { print NR, i, j, k, l } diff --git a/src/tool/awk/testdata/t.incr2 b/src/tool/awk/testdata/t.incr2 new file mode 100644 index 0000000..41ea0dc --- /dev/null +++ b/src/tool/awk/testdata/t.incr2 @@ -0,0 +1,8 @@ +{ s = 0 + for (i=1; i <= NF; ) + if ($(i) ~ /^[0-9]+$/) + s += $(i++) + else + i++ + print s +} diff --git a/src/tool/awk/testdata/t.incr3 b/src/tool/awk/testdata/t.incr3 new file mode 100644 index 0000000..5a572bf --- /dev/null +++ b/src/tool/awk/testdata/t.incr3 @@ -0,0 +1,5 @@ +{ s = 0 + for (i=1; i <= NF; s += $(i++)) + ; + print s +} diff --git a/src/tool/awk/testdata/t.index b/src/tool/awk/testdata/t.index new file mode 100644 index 0000000..dc22d1b --- /dev/null +++ b/src/tool/awk/testdata/t.index @@ -0,0 +1,10 @@ +{ n = length + d = 0 + for (i = 1; i <= n; i++) + if ((k = index($0, substr($0, i))) != i) { + d = 1 + break; + } + if (d) + print $0, "has duplicate letters" +} diff --git a/src/tool/awk/testdata/t.intest b/src/tool/awk/testdata/t.intest new file mode 100644 index 0000000..c1b77f2 --- /dev/null +++ b/src/tool/awk/testdata/t.intest @@ -0,0 +1,9 @@ +{ + line = substr($0, index($0, " ")) + print line + n = split(line, x) + if ($1 in x) + print "yes" + else + print "no" +} diff --git a/src/tool/awk/testdata/t.intest2 b/src/tool/awk/testdata/t.intest2 new file mode 100644 index 0000000..d9f0612 --- /dev/null +++ b/src/tool/awk/testdata/t.intest2 @@ -0,0 +1,16 @@ +{ + line = substr($0, index($0, " ")) + print line + n = split(line, x) + x[$0, $1] = $0 + print x[$0, $1] + print "<<<" +for (i in x) print i, x[i] + print ">>>" + if (($0,$1) in x) + print "yes" + if ($1 in x) + print "yes" + else + print "no" +} diff --git a/src/tool/awk/testdata/t.j.x b/src/tool/awk/testdata/t.j.x new file mode 100644 index 0000000..291fec5 --- /dev/null +++ b/src/tool/awk/testdata/t.j.x @@ -0,0 +1,2 @@ +{i=i+sqrt($1); print i,sqrt($1)} +END {print sqrt(i),i} diff --git a/src/tool/awk/testdata/t.longstr b/src/tool/awk/testdata/t.longstr new file mode 100644 index 0000000..d2dbeaa --- /dev/null +++ b/src/tool/awk/testdata/t.longstr @@ -0,0 +1,5 @@ +BEGIN{ +x = "111111111122222222233333333334444444444555555555566666666667777777777888888888899999999990000000000" +printf "%s\n", x +exit +} diff --git a/src/tool/awk/testdata/t.makef b/src/tool/awk/testdata/t.makef new file mode 100644 index 0000000..b0613f5 --- /dev/null +++ b/src/tool/awk/testdata/t.makef @@ -0,0 +1 @@ +{$3 = 2*$1; print $1, $2, $3} diff --git a/src/tool/awk/testdata/t.match b/src/tool/awk/testdata/t.match new file mode 100644 index 0000000..c85876f --- /dev/null +++ b/src/tool/awk/testdata/t.match @@ -0,0 +1 @@ +$2 ~ /ava|bwk/ diff --git a/src/tool/awk/testdata/t.match1 b/src/tool/awk/testdata/t.match1 new file mode 100644 index 0000000..0b238a2 --- /dev/null +++ b/src/tool/awk/testdata/t.match1 @@ -0,0 +1,6 @@ +NF > 0 && match($NF, $1) { + print $0, RSTART, RLENGTH + if (RLENGTH != length($1)) + printf "match error at %d: %d %d\n", + NR, RLENGTH, RSTART >"/dev/tty" +} diff --git a/src/tool/awk/testdata/t.max b/src/tool/awk/testdata/t.max new file mode 100644 index 0000000..1e16af3 --- /dev/null +++ b/src/tool/awk/testdata/t.max @@ -0,0 +1,2 @@ +length > max { max = length; x = $0} +END { print max, x } diff --git a/src/tool/awk/testdata/t.mod b/src/tool/awk/testdata/t.mod new file mode 100644 index 0000000..906a0ac --- /dev/null +++ b/src/tool/awk/testdata/t.mod @@ -0,0 +1 @@ +NR % 2 == 1 diff --git a/src/tool/awk/testdata/t.monotone b/src/tool/awk/testdata/t.monotone new file mode 100644 index 0000000..8c42ca9 --- /dev/null +++ b/src/tool/awk/testdata/t.monotone @@ -0,0 +1 @@ +/^a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?$|^z?y?x?w?v?u?t?s?r?q?p?o?n?m?l?k?j?i?h?g?f?e?d?c?b?a?$/ diff --git a/src/tool/awk/testdata/t.nameval b/src/tool/awk/testdata/t.nameval new file mode 100644 index 0000000..b1852b6 --- /dev/null +++ b/src/tool/awk/testdata/t.nameval @@ -0,0 +1,7 @@ + { if (amount[$2] == "") + name[++n] = $2 + amount[$2] += $1 + } +END { for (i = 1; i <= n; i++) + print name[i], amount[name[i]] + } diff --git a/src/tool/awk/testdata/t.next b/src/tool/awk/testdata/t.next new file mode 100644 index 0000000..6a31d43 --- /dev/null +++ b/src/tool/awk/testdata/t.next @@ -0,0 +1,2 @@ +$1 > 5000 { next } +{ print } diff --git a/src/tool/awk/testdata/t.not b/src/tool/awk/testdata/t.not new file mode 100644 index 0000000..6fd7fc6 --- /dev/null +++ b/src/tool/awk/testdata/t.not @@ -0,0 +1,4 @@ +$2 !~ /ava|bwk/ +!($1 < 2000) +!($2 ~ /bwk/) +!$2 ~ /bwk/ diff --git a/src/tool/awk/testdata/t.null0 b/src/tool/awk/testdata/t.null0 new file mode 100644 index 0000000..f6870f4 --- /dev/null +++ b/src/tool/awk/testdata/t.null0 @@ -0,0 +1,15 @@ +BEGIN { FS = ":" } +{ if (a) print "a", a + if (b == 0) print "b", b + if ( c == "0") print "c", c + if (d == "") print "d", d + if (e == 1-1) print "e", e +} +$1 == 0 {print "$1 = 0"} +$1 == "0" {print "$1 = quoted 0"} +$1 == "" {print "$1 = null string"} +$5 == 0 {print "$5 = 0"} +$5 == "0" {print "$5 = quoted 0"} +$5 == "" {print "$5 = null string"} +$1 == $3 {print "$1 = $3"} +$5 == $6 {print "$5 = $6"} diff --git a/src/tool/awk/testdata/t.ofmt b/src/tool/awk/testdata/t.ofmt new file mode 100644 index 0000000..375b65b --- /dev/null +++ b/src/tool/awk/testdata/t.ofmt @@ -0,0 +1,2 @@ +BEGIN {OFMT="%.5g"} + {print $1+0} diff --git a/src/tool/awk/testdata/t.ofs b/src/tool/awk/testdata/t.ofs new file mode 100644 index 0000000..6b4274b --- /dev/null +++ b/src/tool/awk/testdata/t.ofs @@ -0,0 +1,2 @@ +BEGIN { OFS = " %% "; ORS = "##" } + { print $1, $2; print } diff --git a/src/tool/awk/testdata/t.ors b/src/tool/awk/testdata/t.ors new file mode 100644 index 0000000..6418428 --- /dev/null +++ b/src/tool/awk/testdata/t.ors @@ -0,0 +1,2 @@ +BEGIN {ORS="abc"} + {print $1, $2, $3} diff --git a/src/tool/awk/testdata/t.pat b/src/tool/awk/testdata/t.pat new file mode 100644 index 0000000..afdac11 --- /dev/null +++ b/src/tool/awk/testdata/t.pat @@ -0,0 +1,4 @@ +/a/ || /b/ +/a/ && /b/ +/a/ && NR > 10 +/a/ || NR > 10 diff --git a/src/tool/awk/testdata/t.pipe b/src/tool/awk/testdata/t.pipe new file mode 100644 index 0000000..7e835df --- /dev/null +++ b/src/tool/awk/testdata/t.pipe @@ -0,0 +1 @@ +BEGIN {print "read /usr/bwk/awk/t.pipe" | "cat"} diff --git a/src/tool/awk/testdata/t.pp b/src/tool/awk/testdata/t.pp new file mode 100644 index 0000000..ac9e8bc --- /dev/null +++ b/src/tool/awk/testdata/t.pp @@ -0,0 +1 @@ +/a/,/b/ diff --git a/src/tool/awk/testdata/t.pp1 b/src/tool/awk/testdata/t.pp1 new file mode 100644 index 0000000..268d0a2 --- /dev/null +++ b/src/tool/awk/testdata/t.pp1 @@ -0,0 +1,3 @@ +/bwk/,/bwk/ { print $2, $1 } +/ava/,/ava/ { print $2, $1 } +/pjw/,/pjw/ { print $2, $1 } diff --git a/src/tool/awk/testdata/t.pp2 b/src/tool/awk/testdata/t.pp2 new file mode 100644 index 0000000..b2e0c7c --- /dev/null +++ b/src/tool/awk/testdata/t.pp2 @@ -0,0 +1,3 @@ +/bwk/,/scj/ { print "1: ", $0 } +/bwk/, /bsb/ { print "2: ", $0 } +/mel/, /doug/ { print "3: ", $0 } diff --git a/src/tool/awk/testdata/t.printf b/src/tool/awk/testdata/t.printf new file mode 100644 index 0000000..5c4bbe1 --- /dev/null +++ b/src/tool/awk/testdata/t.printf @@ -0,0 +1,5 @@ +{ + printf "%%: %s ... %s \t", $2, $1 + x = sprintf("%8d %10.10s", $1, $2) + print x +} diff --git a/src/tool/awk/testdata/t.printf2 b/src/tool/awk/testdata/t.printf2 new file mode 100644 index 0000000..8e71232 --- /dev/null +++ b/src/tool/awk/testdata/t.printf2 @@ -0,0 +1,6 @@ +{ + printf "%%: %s ... %s \t", $2, $1 + x = sprintf("%8d %10.10s %u %o %x", $1, $2, $3, $3, $3*$4) + x = x sprintf(" %c %c", $1, $2) + print x +} diff --git a/src/tool/awk/testdata/t.quote b/src/tool/awk/testdata/t.quote new file mode 100644 index 0000000..3d0f83c --- /dev/null +++ b/src/tool/awk/testdata/t.quote @@ -0,0 +1 @@ +{print "\"" $1 "\""} diff --git a/src/tool/awk/testdata/t.randk b/src/tool/awk/testdata/t.randk new file mode 100644 index 0000000..419f3f2 --- /dev/null +++ b/src/tool/awk/testdata/t.randk @@ -0,0 +1,13 @@ +{ + k = 2 + n = NF + i = 1 + while ( i <= n ) { + if ( rand() < k/n ) { + print i + k-- + } + n-- + i++ + } +} diff --git a/src/tool/awk/testdata/t.re1 b/src/tool/awk/testdata/t.re1 new file mode 100644 index 0000000..805ee6c --- /dev/null +++ b/src/tool/awk/testdata/t.re1 @@ -0,0 +1,2 @@ +/[a-cg-j1-3]/ { print $0 " matches /[a-cg-j1-3]/" } +/[^aeiou]/ { print $0 " matches /[^aeiou]/" } diff --git a/src/tool/awk/testdata/t.re1a b/src/tool/awk/testdata/t.re1a new file mode 100644 index 0000000..613d24d --- /dev/null +++ b/src/tool/awk/testdata/t.re1a @@ -0,0 +1,6 @@ +BEGIN { r1 = "[a-cg-j1-3]" + r2 = "[^aeiou]" +} + +$0 ~ r1 { print $0 " matches /[a-cg-j1-3]/" } +$0 ~ r2 { print $0 " matches /[^aeiou]/" } diff --git a/src/tool/awk/testdata/t.re2 b/src/tool/awk/testdata/t.re2 new file mode 100644 index 0000000..4d96273 --- /dev/null +++ b/src/tool/awk/testdata/t.re2 @@ -0,0 +1,2 @@ +/[a-z]()[0-9]/ +!/^$/ diff --git a/src/tool/awk/testdata/t.re3 b/src/tool/awk/testdata/t.re3 new file mode 100644 index 0000000..99ef62f --- /dev/null +++ b/src/tool/awk/testdata/t.re3 @@ -0,0 +1,6 @@ +{ r1 = $1 + r2 = $1 ":" +} + +length(r1) && $0 ~ r1 { print $0 " matches " r1 } +length(r1) && $0 ~ r2 { print $0 " matches " r2 } diff --git a/src/tool/awk/testdata/t.re4 b/src/tool/awk/testdata/t.re4 new file mode 100644 index 0000000..42778a6 --- /dev/null +++ b/src/tool/awk/testdata/t.re4 @@ -0,0 +1,10 @@ +BEGIN { r1 = "xxx" + r2 = "xxx" ":" + r3 = ":" r2 + r4 = "a" +} + +$0 ~ r1 { print $0 " matches " r1 } +$0 ~ r2 { print $0 " matches " r2 } +$0 ~ r3 { print $0 " matches " r3 } +$0 ~ r4 { print $0 " matches " r4 } diff --git a/src/tool/awk/testdata/t.re5 b/src/tool/awk/testdata/t.re5 new file mode 100644 index 0000000..fe0f81a --- /dev/null +++ b/src/tool/awk/testdata/t.re5 @@ -0,0 +1,3 @@ +BEGIN { for (i = 0; i <= 9; i++) r[i] = i } + +{ for (i in r) if ($0 ~ r[i]) print } diff --git a/src/tool/awk/testdata/t.re7 b/src/tool/awk/testdata/t.re7 new file mode 100644 index 0000000..3a83d7e --- /dev/null +++ b/src/tool/awk/testdata/t.re7 @@ -0,0 +1 @@ +/^([0-9]+\.?[0-9]*|\.[0-9]+)((e|E)(\+|-)?[0-9]+)?$/ diff --git a/src/tool/awk/testdata/t.reFS b/src/tool/awk/testdata/t.reFS new file mode 100644 index 0000000..e985c3e --- /dev/null +++ b/src/tool/awk/testdata/t.reFS @@ -0,0 +1,2 @@ +BEGIN { FS = "\t+" } + { print $1, $2 } diff --git a/src/tool/awk/testdata/t.rec b/src/tool/awk/testdata/t.rec new file mode 100644 index 0000000..2931df8 --- /dev/null +++ b/src/tool/awk/testdata/t.rec @@ -0,0 +1 @@ +{ print sqrt($1) } diff --git a/src/tool/awk/testdata/t.reg b/src/tool/awk/testdata/t.reg new file mode 100644 index 0000000..0698657 --- /dev/null +++ b/src/tool/awk/testdata/t.reg @@ -0,0 +1,4 @@ +/[^\[\]]/ +!/^\[/ +!/^[\[\]]/ +/[\[\]]/ diff --git a/src/tool/awk/testdata/t.roff b/src/tool/awk/testdata/t.roff new file mode 100644 index 0000000..c3cc12e --- /dev/null +++ b/src/tool/awk/testdata/t.roff @@ -0,0 +1,23 @@ +NF > 0 { + for (i = 1; i <= NF; i++) { + n = length($i) + if (n + olen >= 60) { + print oline + olen = n + oline = $i + } else { + oline = oline " " $i + olen += n + } + } +} + +NF == 0 { + print oline + olen = 0 +} + +END { + if (olen > 0) + print oline +} diff --git a/src/tool/awk/testdata/t.sep b/src/tool/awk/testdata/t.sep new file mode 100644 index 0000000..df6865a --- /dev/null +++ b/src/tool/awk/testdata/t.sep @@ -0,0 +1,2 @@ +BEGIN { FS = "1"; print "field separator is", FS } +NF>1 { print $0 " has " NF " fields" } diff --git a/src/tool/awk/testdata/t.seqno b/src/tool/awk/testdata/t.seqno new file mode 100644 index 0000000..4f6f1e9 --- /dev/null +++ b/src/tool/awk/testdata/t.seqno @@ -0,0 +1 @@ +{print NR, $0} diff --git a/src/tool/awk/testdata/t.set0 b/src/tool/awk/testdata/t.set0 new file mode 100644 index 0000000..5c2bdcb --- /dev/null +++ b/src/tool/awk/testdata/t.set0 @@ -0,0 +1,3 @@ +{$0 = $1; print; print NF, $0; print $2} +{$(0) = $1; print; print NF, $0; print $2} +{ i = 1; $(i) = $i+1; print } diff --git a/src/tool/awk/testdata/t.set0a b/src/tool/awk/testdata/t.set0a new file mode 100644 index 0000000..62f3cb1 --- /dev/null +++ b/src/tool/awk/testdata/t.set0a @@ -0,0 +1 @@ +{$0 = $2; print; print NF, $0; print $1} diff --git a/src/tool/awk/testdata/t.set0b b/src/tool/awk/testdata/t.set0b new file mode 100644 index 0000000..f6f9a6c --- /dev/null +++ b/src/tool/awk/testdata/t.set0b @@ -0,0 +1,3 @@ +{x=$1 = $0 = $2; print } +{$0 = $2 = $1; print } +{$(0) = $(2) = $(1); print } diff --git a/src/tool/awk/testdata/t.set1 b/src/tool/awk/testdata/t.set1 new file mode 100644 index 0000000..3f64fc8 --- /dev/null +++ b/src/tool/awk/testdata/t.set1 @@ -0,0 +1,3 @@ +function f(x) { x = 1; print x } +{ f($0) + f($1) } diff --git a/src/tool/awk/testdata/t.set2 b/src/tool/awk/testdata/t.set2 new file mode 100644 index 0000000..fdfd5ee --- /dev/null +++ b/src/tool/awk/testdata/t.set2 @@ -0,0 +1,4 @@ +{ n = length($0) % 2 + $n = $2 + print +} diff --git a/src/tool/awk/testdata/t.set3 b/src/tool/awk/testdata/t.set3 new file mode 100644 index 0000000..e2c9905 --- /dev/null +++ b/src/tool/awk/testdata/t.set3 @@ -0,0 +1 @@ +{ i = 1; $i = $i/10; print } diff --git a/src/tool/awk/testdata/t.split2 b/src/tool/awk/testdata/t.split2 new file mode 100644 index 0000000..05aef2e --- /dev/null +++ b/src/tool/awk/testdata/t.split2 @@ -0,0 +1 @@ +{ split ($0, x); print x[2], x[1] } diff --git a/src/tool/awk/testdata/t.split2a b/src/tool/awk/testdata/t.split2a new file mode 100644 index 0000000..d3a2140 --- /dev/null +++ b/src/tool/awk/testdata/t.split2a @@ -0,0 +1,4 @@ +BEGIN { + a[1]="a b" + print split(a[1],a),a[1],a[2] +} diff --git a/src/tool/awk/testdata/t.split3 b/src/tool/awk/testdata/t.split3 new file mode 100644 index 0000000..f56bc3c --- /dev/null +++ b/src/tool/awk/testdata/t.split3 @@ -0,0 +1,4 @@ +{ a = $0 " " $0 " " $0 + if ($1 != "") + n = split (a, x, "[" $1 "]") + print n, x[1], x[2], x[3], x[4] } diff --git a/src/tool/awk/testdata/t.split4 b/src/tool/awk/testdata/t.split4 new file mode 100644 index 0000000..49213f9 --- /dev/null +++ b/src/tool/awk/testdata/t.split4 @@ -0,0 +1,4 @@ +{ a = $0 " " $0 " " $0 " " 123 + n = split (a, x, /[ \t][ \t]*/) + print n, x[1], x[2], x[3], x[4] +} diff --git a/src/tool/awk/testdata/t.split8 b/src/tool/awk/testdata/t.split8 new file mode 100644 index 0000000..e967bdd --- /dev/null +++ b/src/tool/awk/testdata/t.split8 @@ -0,0 +1,9 @@ +{ + n = split ($0, x, /[ ]+/) + print n + if (n != NF) + print "split botch at ", NR, n, NF + for (i=1; i<=n; i++) + if ($i != x[i]) + print "different element at ", i, x[i], $i +} diff --git a/src/tool/awk/testdata/t.split9 b/src/tool/awk/testdata/t.split9 new file mode 100644 index 0000000..bc62ac8 --- /dev/null +++ b/src/tool/awk/testdata/t.split9 @@ -0,0 +1,8 @@ +{ + n = split ($0, x, FS) + if (n != NF) + print "botch at ", NR, n, NF + for (i=1; i<=n; i++) + if ($i != x[i]) + print "diff at ", i, x[i], $i +} diff --git a/src/tool/awk/testdata/t.split9a b/src/tool/awk/testdata/t.split9a new file mode 100644 index 0000000..b7d8d85 --- /dev/null +++ b/src/tool/awk/testdata/t.split9a @@ -0,0 +1,9 @@ +BEGIN { FS = "a" } +{ + n = split ($0, x, FS) + if (n != NF) + print "botch at ", NR, n, NF + for (i=1; i<=n; i++) + if ($i != x[i]) + print "diff at ", i, x[i], $i +} diff --git a/src/tool/awk/testdata/t.stately b/src/tool/awk/testdata/t.stately new file mode 100644 index 0000000..654458d --- /dev/null +++ b/src/tool/awk/testdata/t.stately @@ -0,0 +1 @@ +/^(al|ak|az|ar|ca|co|ct|de|fl|ga|hi|io|il|in|ia|ks|ky|la|me|md|ma|mi|mn|ms|mo|mt|nb|nv|nh|nj|nm|ny|nc|nd|oh|ok|or|pa|ri|sc|sd|tn|tx|ut|vt|va|wa|wv|wi|-|wy)*$/ diff --git a/src/tool/awk/testdata/t.strcmp b/src/tool/awk/testdata/t.strcmp new file mode 100644 index 0000000..4772bf4 --- /dev/null +++ b/src/tool/awk/testdata/t.strcmp @@ -0,0 +1 @@ +$2 >= "ava" && $2 <= "bwk" || $2 >= "pjw" diff --git a/src/tool/awk/testdata/t.strcmp1 b/src/tool/awk/testdata/t.strcmp1 new file mode 100644 index 0000000..d5ff2c6 --- /dev/null +++ b/src/tool/awk/testdata/t.strcmp1 @@ -0,0 +1 @@ +$1 != 1 && $1 != 2 && $1 != 3 && $1 != 4 && $1 != 5 diff --git a/src/tool/awk/testdata/t.strnum b/src/tool/awk/testdata/t.strnum new file mode 100644 index 0000000..45f41a8 --- /dev/null +++ b/src/tool/awk/testdata/t.strnum @@ -0,0 +1 @@ +BEGIN { print 1E2 "", 12e-2 "", e12 "", 1.23456789 "" } diff --git a/src/tool/awk/testdata/t.sub1 b/src/tool/awk/testdata/t.sub1 new file mode 100644 index 0000000..cd8f4bb --- /dev/null +++ b/src/tool/awk/testdata/t.sub1 @@ -0,0 +1 @@ +{sub(/.$/,"x"); print} diff --git a/src/tool/awk/testdata/t.sub2 b/src/tool/awk/testdata/t.sub2 new file mode 100644 index 0000000..9dea451 --- /dev/null +++ b/src/tool/awk/testdata/t.sub2 @@ -0,0 +1,2 @@ +{sub(/.$/,"&&"); print} +{sub(/.$/,"&\\&&"); print} diff --git a/src/tool/awk/testdata/t.sub3 b/src/tool/awk/testdata/t.sub3 new file mode 100644 index 0000000..5161994 --- /dev/null +++ b/src/tool/awk/testdata/t.sub3 @@ -0,0 +1 @@ +length($1) {sub(substr($1,1,1),"(&)"); print} diff --git a/src/tool/awk/testdata/t.substr b/src/tool/awk/testdata/t.substr new file mode 100644 index 0000000..ab2fbb0 --- /dev/null +++ b/src/tool/awk/testdata/t.substr @@ -0,0 +1,3 @@ +substr($2, 1, 1) ~ /[abc]/ +substr($2, length($2)) !~ /[a-z]/ +substr($2, length($2)) ~ /./ diff --git a/src/tool/awk/testdata/t.substr1 b/src/tool/awk/testdata/t.substr1 new file mode 100644 index 0000000..e7641dd --- /dev/null +++ b/src/tool/awk/testdata/t.substr1 @@ -0,0 +1 @@ +NR % 2 { print substr($0, 0, -1) } diff --git a/src/tool/awk/testdata/t.time b/src/tool/awk/testdata/t.time new file mode 100644 index 0000000..ab4862a --- /dev/null +++ b/src/tool/awk/testdata/t.time @@ -0,0 +1,18 @@ +BEGIN { + FS = "-" +} +/sh$/ { + n++ + l = length($NF) + s += l + ck %= l + totck += ck + print +} +END { + if (n > 0) { + printf "%d %d %d %fn\n", totck, n, s, s/n + } + else + print "n is zero" +} diff --git a/src/tool/awk/testdata/t.vf b/src/tool/awk/testdata/t.vf new file mode 100644 index 0000000..0df3893 --- /dev/null +++ b/src/tool/awk/testdata/t.vf @@ -0,0 +1,3 @@ +BEGIN { i = 1 } +{print $(i+i)} +{print $(1)} diff --git a/src/tool/awk/testdata/t.vf1 b/src/tool/awk/testdata/t.vf1 new file mode 100644 index 0000000..6c4ce33 --- /dev/null +++ b/src/tool/awk/testdata/t.vf1 @@ -0,0 +1,7 @@ +{ print + i = 1 + while (i <= NF) { + print " " $i + i = i + 1 + } +} diff --git a/src/tool/awk/testdata/t.vf2 b/src/tool/awk/testdata/t.vf2 new file mode 100644 index 0000000..06b99e3 --- /dev/null +++ b/src/tool/awk/testdata/t.vf2 @@ -0,0 +1 @@ +{ print $NF++; print $NF } diff --git a/src/tool/awk/testdata/t.vf3 b/src/tool/awk/testdata/t.vf3 new file mode 100644 index 0000000..b45ea98 --- /dev/null +++ b/src/tool/awk/testdata/t.vf3 @@ -0,0 +1,2 @@ +BEGIN { i=1; j=2 } +{$i = $j; print} diff --git a/src/tool/awk/testdata/t.x b/src/tool/awk/testdata/t.x new file mode 100644 index 0000000..dca7730 --- /dev/null +++ b/src/tool/awk/testdata/t.x @@ -0,0 +1 @@ +/x/ diff --git a/src/tool/awk/testdata/test.countries b/src/tool/awk/testdata/test.countries new file mode 100644 index 0000000..3f021d5 --- /dev/null +++ b/src/tool/awk/testdata/test.countries @@ -0,0 +1,10 @@ +Russia 8650 262 Asia +Canada 3852 24 North America +China 3692 866 Asia +USA 3615 219 North America +Brazil 3286 116 South America +Australia 2968 14 Australia +India 1269 637 Asia +Argentina 1072 26 South America +Sudan 968 19 Africa +Algeria 920 18 Africa diff --git a/src/tool/awk/testdata/test.data b/src/tool/awk/testdata/test.data new file mode 100644 index 0000000..be3dbf6 --- /dev/null +++ b/src/tool/awk/testdata/test.data @@ -0,0 +1,199 @@ +/dev/rrp3: + +17379 mel +16693 bwk me +16116 ken him someone else +15713 srb +11895 lem +10409 scj +10252 rhm + 9853 shen + 9748 a68 + 9492 sif + 9190 pjw + 8912 nls + 8895 dmr + 8491 cda + 8372 bs + 8252 llc + 7450 mb + 7360 ava + 7273 jrv + 7080 bin + 7063 greg + 6567 dict + 6462 lck + 6291 rje + 6211 lwf + 5671 dave + 5373 jhc + 5220 agf + 5167 doug + 5007 valerie + 3963 jca + 3895 bbs + 3796 moh + 3481 xchar + 3200 tbl + 2845 s + 2774 tgs + 2641 met + 2566 jck + 2511 port + 2479 sue + 2127 root + 1989 bsb + 1989 jeg + 1933 eag + 1801 pdj + 1590 tpc + 1385 cvw + 1370 rwm + 1316 avg + 1205 eg + 1194 jam + 1153 dl + 1150 lgm + 1031 cmb + 1018 jwr + 950 gdb + 931 marc + 898 usg + 865 ggr + 822 daemon + 803 mihalis + 700 honey + 624 tad + 559 acs + 541 uucp + 523 raf + 495 adh + 456 kec + 414 craig + 386 donmac + 375 jj + 348 ravi + 344 drw + 327 stars + 288 mrg + 272 jcb + 263 ralph + 253 tom + 251 sjb + 248 haight + 224 sharon + 222 chuck + 213 dsj + 201 bill + 184 god + 176 sys + 166 meh + 163 jon + 144 dan + 143 fox + 123 dale + 116 kab + 95 buz + 80 asc + 79 jas + 79 trt + 64 wsb + 62 dwh + 56 ktf + 54 lr + 47 dlc + 45 dls + 45 jwf + 44 mash + 43 ars + 43 vgl + 37 jfo + 32 rab + 31 pd + 29 jns + 25 spm + 22 rob + 15 egb + 10 hm + 10 mhb + 6 aed + 6 cpb + 5 evp + 4 ber + 4 men + 4 mitch + 3 ast + 3 jfr + 3 lax + 3 nel + 2 blue + 2 jfk + 2 njas + 1 122sec + 1 ddwar + 1 gopi + 1 jk + 1 learn + 1 low + 1 nac + 1 sidor +1root:EMpNB8Zp56:0:0:Super-User,,,,,,,:/:/bin/sh +2roottcsh:*:0:0:Super-User running tcsh [cbm]:/:/bin/tcsh +3sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh +4diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh +5daemon:*:1:1:daemons:/:/bin/sh +6bin:*:2:2:System Tools Owner:/bin:/dev/null +7nuucp:BJnuQbAo:6:10:UUCP.Admin:/usr/spool/uucppublic:/usr/lib/uucp/uucico +8uucp:*:3:5:UUCP.Admin:/usr/lib/uucp: +9sys:*:4:0:System Activity Owner:/usr/adm:/bin/sh +10adm:*:5:3:Accounting Files Owner:/usr/adm:/bin/sh +11lp:*:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh +12auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh +13dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh +14bootes:dcon:50:1:Tom Killian (DO NOT REMOVE):/tmp: +15cdjuke:dcon:51:1:Tom Killian (DO NOT REMOVE):/tmp: +16rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh +17EZsetup:*:992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh +18demos:*:993:997:Demonstration User:/usr/demos:/bin/csh +19tutor:*:994:997:Tutorial User:/usr/tutor:/bin/csh +20tour:*:995:997:IRIS Space Tour:/usr/people/tour:/bin/csh +21guest:nfP4/Wpvio/Rw:998:998:Guest Account:/usr/people/guest:/bin/csh +224Dgifts:0nWRTZsOMt.:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh +23nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null +24noaccess:*:60002:60002:uid no access:/dev/null:/dev/null +25nobody:*:-2:-2:original nobody uid:/dev/null:/dev/null +26rje:*:8:8:RJE Owner:/usr/spool/rje: +27changes:*:11:11:system change log:/: +28dist:sorry:9999:4:file distributions:/v/adm/dist:/v/bin/sh +29man:*:99:995:On-line Manual Owner:/: +30phoneca:*:991:991:phone call log [tom]:/v/adm/log:/v/bin/sh +1r oot EMpNB8Zp56 0 0 Super-User,,,,,,, / /bin/sh +2r oottcsh * 0 0 Super-User running tcsh [cbm] / /bin/tcsh +3s ysadm * 0 0 System V Administration /usr/admin /bin/sh +4d iag * 0 996 Hardware Diagnostics /usr/diags /bin/csh +5d aemon * 1 1 daemons / /bin/sh +6b in * 2 2 System Tools Owner /bin /dev/null +7n uucp BJnuQbAo 6 10 UUCP.Admin /usr/spool/uucppublic /usr/lib/uucp/uucico +8u ucp * 3 5 UUCP.Admin /usr/lib/uucp +9s ys * 4 0 System Activity Owner /usr/adm /bin/sh +10 adm * 5 3 Accounting Files Owner /usr/adm /bin/sh +11 lp * 9 9 Print Spooler Owner /var/spool/lp /bin/sh +12 auditor * 11 0 Audit Activity Owner /auditor /bin/sh +13 dbadmin * 12 0 Security Database Owner /dbadmin /bin/sh +14 bootes dcon 50 1 Tom Killian (DO NOT REMOVE) /tmp +15 cdjuke dcon 51 1 Tom Killian (DO NOT REMOVE) /tmp +16 rfindd * 66 1 Rfind Daemon and Fsdump /var/rfindd /bin/sh +17 EZsetup * 992 998 System Setup /var/sysadmdesktop/EZsetup /bin/csh +18 demos * 993 997 Demonstration User /usr/demos /bin/csh +19 tutor * 994 997 Tutorial User /usr/tutor /bin/csh +20 tour * 995 997 IRIS Space Tour /usr/people/tour /bin/csh +21 guest nfP4/Wpvio/Rw 998 998 Guest Account /usr/people/guest /bin/csh +22 4Dgifts 0nWRTZsOMt. 999 998 4Dgifts Account /usr/people/4Dgifts /bin/csh +23 nobody * 60001 60001 SVR4 nobody uid /dev/null /dev/null +24 noaccess * 60002 60002 uid no access /dev/null /dev/null +25 nobody * -2 -2 original nobody uid /dev/null /dev/null +26 rje * 8 8 RJE Owner /usr/spool/rje +27 changes * 11 11 system change log / +28 dist sorry 9999 4 file distributions /v/adm/dist /v/bin/sh +29 man * 99 995 On-line Manual Owner / +30 phoneca * 991 991 phone call log [tom] /v/adm/log /v/bin/sh diff --git a/src/tool/awk/testdata/tt.01_print b/src/tool/awk/testdata/tt.01_print new file mode 100644 index 0000000..1751e36 --- /dev/null +++ b/src/tool/awk/testdata/tt.01_print @@ -0,0 +1 @@ +{ print } diff --git a/src/tool/awk/testdata/tt.02_print_NR_NF b/src/tool/awk/testdata/tt.02_print_NR_NF new file mode 100644 index 0000000..9364ef9 --- /dev/null +++ b/src/tool/awk/testdata/tt.02_print_NR_NF @@ -0,0 +1 @@ +{ print NR, NF, $0 } diff --git a/src/tool/awk/testdata/tt.02a_print_length b/src/tool/awk/testdata/tt.02a_print_length new file mode 100644 index 0000000..9323e8b --- /dev/null +++ b/src/tool/awk/testdata/tt.02a_print_length @@ -0,0 +1 @@ +{ $2 = length($2); print } diff --git a/src/tool/awk/testdata/tt.03_sum_length b/src/tool/awk/testdata/tt.03_sum_length new file mode 100644 index 0000000..0d9d241 --- /dev/null +++ b/src/tool/awk/testdata/tt.03_sum_length @@ -0,0 +1,2 @@ +{ s += length($2) } +END { print s } diff --git a/src/tool/awk/testdata/tt.03a_sum_field b/src/tool/awk/testdata/tt.03a_sum_field new file mode 100644 index 0000000..5697c6d --- /dev/null +++ b/src/tool/awk/testdata/tt.03a_sum_field @@ -0,0 +1,2 @@ +{ s += $3 } +END { print s } diff --git a/src/tool/awk/testdata/tt.04_printf_fields b/src/tool/awk/testdata/tt.04_printf_fields new file mode 100644 index 0000000..cbb471e --- /dev/null +++ b/src/tool/awk/testdata/tt.04_printf_fields @@ -0,0 +1,3 @@ +{ for (i = NF; i > 0; i--) + printf "%s ", $i +} diff --git a/src/tool/awk/testdata/tt.05_concat_fields b/src/tool/awk/testdata/tt.05_concat_fields new file mode 100644 index 0000000..0d19e77 --- /dev/null +++ b/src/tool/awk/testdata/tt.05_concat_fields @@ -0,0 +1,6 @@ +{ + s = "" + for (i = NF; i > 0; i--) + s = s " " $i + print s +} diff --git a/src/tool/awk/testdata/tt.06_count_lengths b/src/tool/awk/testdata/tt.06_count_lengths new file mode 100644 index 0000000..84d5011 --- /dev/null +++ b/src/tool/awk/testdata/tt.06_count_lengths @@ -0,0 +1,7 @@ +{ + x[$1] += length +} +END { + for (i in x) + print i, x[i] | "sort" +} diff --git a/src/tool/awk/testdata/tt.07_even_fields b/src/tool/awk/testdata/tt.07_even_fields new file mode 100644 index 0000000..cab4212 --- /dev/null +++ b/src/tool/awk/testdata/tt.07_even_fields @@ -0,0 +1 @@ +NF % 2 == 0 diff --git a/src/tool/awk/testdata/tt.08_even_lengths b/src/tool/awk/testdata/tt.08_even_lengths new file mode 100644 index 0000000..1aee271 --- /dev/null +++ b/src/tool/awk/testdata/tt.08_even_lengths @@ -0,0 +1 @@ +length % 2 == 0 diff --git a/src/tool/awk/testdata/tt.08z_regex_simple b/src/tool/awk/testdata/tt.08z_regex_simple new file mode 100644 index 0000000..cb7dc93 --- /dev/null +++ b/src/tool/awk/testdata/tt.08z_regex_simple @@ -0,0 +1 @@ +/foo.*d/ { n++ } END { print n } diff --git a/src/tool/awk/testdata/tt.09_regex_starts_with b/src/tool/awk/testdata/tt.09_regex_starts_with new file mode 100644 index 0000000..45867e2 --- /dev/null +++ b/src/tool/awk/testdata/tt.09_regex_starts_with @@ -0,0 +1 @@ +! /^./ diff --git a/src/tool/awk/testdata/tt.10_regex_ends_with b/src/tool/awk/testdata/tt.10_regex_ends_with new file mode 100644 index 0000000..703de02 --- /dev/null +++ b/src/tool/awk/testdata/tt.10_regex_ends_with @@ -0,0 +1 @@ +/.$/ diff --git a/src/tool/awk/testdata/tt.10a_regex_ends_with_var b/src/tool/awk/testdata/tt.10a_regex_ends_with_var new file mode 100644 index 0000000..22c2f62 --- /dev/null +++ b/src/tool/awk/testdata/tt.10a_regex_ends_with_var @@ -0,0 +1,2 @@ +BEGIN { x = ".$" } +$0 ~ x diff --git a/src/tool/awk/testdata/tt.11_substr b/src/tool/awk/testdata/tt.11_substr new file mode 100644 index 0000000..2bb5aa3 --- /dev/null +++ b/src/tool/awk/testdata/tt.11_substr @@ -0,0 +1 @@ +{ print substr($0, 10,10) } diff --git a/src/tool/awk/testdata/tt.12_update_fields b/src/tool/awk/testdata/tt.12_update_fields new file mode 100644 index 0000000..a34a174 --- /dev/null +++ b/src/tool/awk/testdata/tt.12_update_fields @@ -0,0 +1 @@ +{ $3 = "xxx" $3 "xxx"; $4--; print } diff --git a/src/tool/awk/testdata/tt.13_array_ops b/src/tool/awk/testdata/tt.13_array_ops new file mode 100644 index 0000000..0e21b87 --- /dev/null +++ b/src/tool/awk/testdata/tt.13_array_ops @@ -0,0 +1,5 @@ +{ for (i = 1; i <= NF; i++) + x[i] = $i + for (i = 1; i <= NF; i++) + print x[i] +} diff --git a/src/tool/awk/testdata/tt.13a_array_printf b/src/tool/awk/testdata/tt.13a_array_printf new file mode 100644 index 0000000..0542d11 --- /dev/null +++ b/src/tool/awk/testdata/tt.13a_array_printf @@ -0,0 +1,5 @@ +{ for (i = 1; i <= NF; i++) + x[i] = $i + for (i = 1; i <= NF; i++) + printf "%d %s\n", i, x[i] +} diff --git a/src/tool/awk/testdata/tt.14_function_call b/src/tool/awk/testdata/tt.14_function_call new file mode 100644 index 0000000..a3a1b51 --- /dev/null +++ b/src/tool/awk/testdata/tt.14_function_call @@ -0,0 +1,7 @@ +function abs(x) { return (x < 0) ? -x : x } +BEGIN { n = 1000 + for (i = 1; i < n; i++) x[i] = rand() + for (i in x) + for (j in x) + if (abs(x[i]-x[j]) < .01) break + } diff --git a/src/tool/awk/testdata/tt.15_format_lines b/src/tool/awk/testdata/tt.15_format_lines new file mode 100644 index 0000000..c05e61f --- /dev/null +++ b/src/tool/awk/testdata/tt.15_format_lines @@ -0,0 +1,33 @@ +# fmt - format +# input: text +# output: text formatted into lines of <= 72 characters + +BEGIN { + maxlen = 72 +} + +/^[ \t]/ { printline(); print; next } # verbatim +###/^ +/ { printline(); } # whitespace == break + +/./ { for (i = 1; i <= NF; i++) addword($i); next } + +/^$/ { printline(); print "" } +END { printline() } + +function addword(w) { + ## print "adding [", w, "] ", length(w), length(line), maxlen + if (length(line) + length(w) > maxlen) + printline() + if (length(w) > 2 && ( w ~ /[\.!]["?)]?$/ || w ~ /[?!]"?$/) && + w !~ /^(Mr|Dr|Ms|Mrs|vs|Ph.D)\.$/) + w = w " " + line = line " " w +} + +function printline() { + if (length(line) > 0) { + sub(/ +$/, "", line) + print substr(line, 2) # removes leading blank + line = "" + } +} diff --git a/src/tool/awk/testdata/tt.16_count_words b/src/tool/awk/testdata/tt.16_count_words new file mode 100644 index 0000000..d1f04bd --- /dev/null +++ b/src/tool/awk/testdata/tt.16_count_words @@ -0,0 +1,6 @@ + +{ for (i = 1; i <= NF; i++) + w[$i]++ +} + +END { for (i in w) print w[i], i | "sort -nr" } diff --git a/src/tool/awk/testdata/tt.big_complex_program b/src/tool/awk/testdata/tt.big_complex_program new file mode 100644 index 0000000..792217e --- /dev/null +++ b/src/tool/awk/testdata/tt.big_complex_program @@ -0,0 +1,51 @@ +{ print } +{ print NR, NF, $0 } +{ $2 = length($2); print } +{ s += length($2) } +END { print s } +{ s += $3 } +END { print s } +{ for (i = NF; i > 0; i--) + printf "%s ", $i + printf("\n") +} + $1 == $1 && $2 == $2 # test some string compares + $1 != $2 +{ + sss = "" + for (i = NF; i > 0; i--) + sss = sss " " $i + print sss +} +{ + xx[$1] += length +} +END { + for (i in xx) + print i, xx[i] | "sort" +} +NF % 2 == 0 +length % 2 == 0 +! /^./ +/.$/ +BEGIN { xxx = ".$" } +$0 ~ xxx +{ print substr($0, 10,10) } +{ $3 = "xxx" $3 "xxx"; $4--; print } +{ for (i = 1; i <= NF; i++) + x[i] = $i + for (i = 1; i <= NF; i++) + print x[i] +} +{ for (i = 1; i <= NF; i++) + y[i] = $i + for (i = 1; i <= NF; i++) + printf "%d %s\n", i, y[i] +} +function abs(x) { return (x < 0) ? -x : x } +BEGIN { n = 1000 + for (i = 1; i < n; i++) x[i] = rand() + for (i in x) + for (j in x) + if (abs(x[i]-x[j]) < .01) break + } diff --git a/src/tool/awk/testdata/tt.x1_mandelbrot b/src/tool/awk/testdata/tt.x1_mandelbrot new file mode 100644 index 0000000..661046b --- /dev/null +++ b/src/tool/awk/testdata/tt.x1_mandelbrot @@ -0,0 +1,46 @@ +# Generate and display the Mandelbrot set + +BEGIN { + # Constants to determine size and coordinates of grid + if (!width) width = 600 + if (!height) height = 300 + min_x = -2.1; max_x = 0.6 + min_y = -1.2; max_y = 1.2 + iters = 32 + + # "Colors", from '.' (diverges fastest) to '@' (diverges slowly), + # and then ' ' for doesn't diverge within `iters` iterations. + colors[0] = "." + colors[1] = "-" + colors[2] = "+" + colors[3] = "*" + colors[4] = "%%" + colors[5] = "#" + colors[6] = "$" + colors[7] = "@" + colors[8] = " " + + # Loop from top to bottom, and for each line left to right + inc_y = (max_y-min_y) / height + inc_x = (max_x-min_x) / width + y = min_y + for (row=0; row 4) break + } + # Scale "color" according to how fast it diverged + printf colors[int(i*8/iters)] + x += inc_x + } + y += inc_y + printf "\n" + } +} diff --git a/src/tool/awk/testdata/tt.x2_sum_loop b/src/tool/awk/testdata/tt.x2_sum_loop new file mode 100644 index 0000000..8dcaebd --- /dev/null +++ b/src/tool/awk/testdata/tt.x2_sum_loop @@ -0,0 +1,6 @@ +BEGIN { + for (i=0; i<10000000; i++) { + sum += i*2 + } + print sum +} \ No newline at end of file diff --git a/src/tool/awk/testdata/wildcards/a.awk b/src/tool/awk/testdata/wildcards/a.awk new file mode 100644 index 0000000..c56d59a --- /dev/null +++ b/src/tool/awk/testdata/wildcards/a.awk @@ -0,0 +1 @@ +FNR==1 { print FILENAME } diff --git a/src/tool/awk/testdata/wildcards/b.awk b/src/tool/awk/testdata/wildcards/b.awk new file mode 100644 index 0000000..17fd0b2 --- /dev/null +++ b/src/tool/awk/testdata/wildcards/b.awk @@ -0,0 +1 @@ +FNR==1 { print "bee" } diff --git a/src/tool/awk/testdata/wildcards/one.txt b/src/tool/awk/testdata/wildcards/one.txt new file mode 100644 index 0000000..a92d664 --- /dev/null +++ b/src/tool/awk/testdata/wildcards/one.txt @@ -0,0 +1,3 @@ +line 1 +line 2 +line 3 diff --git a/src/tool/awk/testdata/wildcards/two.txt b/src/tool/awk/testdata/wildcards/two.txt new file mode 100644 index 0000000..a92d664 --- /dev/null +++ b/src/tool/awk/testdata/wildcards/two.txt @@ -0,0 +1,3 @@ +line 1 +line 2 +line 3

") + print_line(prefix(3) "") +} + + +function html_begin_pages() +{ + return ((HTML && (BIBFILEURL != "")) ? ("") : "") +} + + +function html_begin_pre() +{ + In_PRE = 1 + print_line("
")
+}
+
+
+function html_begin_title()
+{
+	return ((HTML && (Url != "")) ? ("") : "")
+}
+
+
+function html_begin_toc()
+{
+	html_end_toc()
+	html_begin_pre()
+}
+
+
+function html_body( k)
+{
+	for (k = 1; k <= BodyLines; ++k)
+		print Body[k]
+}
+
+function html_breakpoint(title,maxlength, break_after,k)
+{
+	# Return the largest character position in title AFTER which we
+	# can break the title across lines, without exceeding maxlength
+	# visible characters.
+	if (html_length(title) > maxlength)	# then need to split title across lines
+	{
+		# In the presence of HTML markup, the initialization of
+		# k here is complicated, because we need to advance it
+		# until html_length(title) is at least maxlength,
+		# without invoking the expensive html_length() function
+		# too frequently.  The need to split the title makes the
+		# alternative of delayed insertion of HTML markup much
+		# more complicated.
+		break_after = 0
+		for (k = min(maxlength,length(title)); k < length(title); ++k)
+		{
+			if (substr(title,k+1,1) == " ")
+			{		# could break after position k
+				if (html_length(substr(title,1,k)) <= maxlength)
+					break_after = k
+				else	# advanced too far, retreat back to last break_after
+					break
+			}
+		}
+		if (break_after == 0)		# no breakpoint found by forward scan
+		{				# so switch to backward scan
+			for (k = min(maxlength,length(title)) - 1; \
+				(k > 0) && (substr(title,k+1,1) != " "); --k)
+				;		# find space at which to break title
+			if (k < 1)		# no break point found
+				k = length(title) # so must print entire string
+		}
+		else
+			k = break_after
+	}
+	else					# title fits on one line
+		k = length(title)
+	return (k)
+}
+
+
+
+function html_end_issue()
+{
+	print_line(prefix(3) "")
+	print_line(prefix(2) "

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ℑA?>V`Iw~ufWm+FHbN~ym7A&h?b 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