1
1
mirror of https://github.com/wader/fq.git synced 2024-10-06 08:28:39 +03:00
Commit Graph

382 Commits

Author SHA1 Message Date
Mattias Wadman
b66e3287f2
Merge pull request #112 from wader/interp-cleanup-d-alises
interp: Cleanup display aliases, now: d, da, dd, dv, ddv
2022-01-29 12:28:46 +01:00
Mattias Wadman
2efc3cba9b
Merge pull request #115 from wader/doc-example-usages
doc,interp: Add some example usages to cli help
2022-01-29 12:26:08 +01:00
Mattias Wadman
7bc2521938 doc,interp: Add some example usages to cli help 2022-01-29 12:21:51 +01:00
Mattias Wadman
ca68e6a1e4 interp: Add Platform() method to OS interface
Felt bad that main should have to know about it
2022-01-29 11:31:36 +01:00
Mattias Wadman
fc0aacb654 interp: Cleanup display aliases, now: d, da, dd, dv, ddv
Think it makes sense to have them all start with d.
Also f is often used as function argument name.
2022-01-28 18:25:38 +01:00
Mattias Wadman
6cd1c38fbf decode,scalar: Add scalar.Str{Uint/Int/F}ToSym to parse numbers 2022-01-28 17:18:50 +01:00
Mattias Wadman
b2e5a83860
Merge pull request #110 from wader/doc-improve-use-other-func-notation
doc: Use f($a; $b) instead of jq f/2 notation
2022-01-27 10:10:12 +01:00
Mattias Wadman
c52a1a2364 doc: Use f($a; $b) instead of jq f/2 notation
Also some general polish
2022-01-27 09:55:45 +01:00
Mattias Wadman
233d86a384 fq: Add arch and os to --version 2022-01-26 18:09:59 +01:00
Mattias Wadman
898dfec1d1 lint: Fix typeassert and case exhaustive warnings 2022-01-25 17:23:41 +01:00
Mattias Wadman
e792598c69 interp: Add grep_by/1 to recursively match using a filter
Refactor other grep functions to use it
2022-01-24 18:26:25 +01:00
Mattias Wadman
bc107f82e4
Merge pull request #101 from wader/dump-sym-correct-color
interp: Use correct sym color
2022-01-24 17:53:46 +01:00
Mattias Wadman
c31ec2a388 interp: Use correct sym color 2022-01-24 16:57:35 +01:00
Mattias Wadman
b8efd8e549 fuzz: Fuzz all formats
Fix string readers to not panic on make slice with bogus sizes
2022-01-24 16:56:24 +01:00
Mattias Wadman
21ce6574fa
Merge pull request #96 from wader/pcapng-fatal-on-negzero-blocklen
pcapng,fuzz: Fix infinite loop by fatal error on block length <= 0
2022-01-23 13:39:04 +01:00
Mattias Wadman
d1943dad49 pcapng,fuzz: Fix infinite loop by fatal error on block length <= 0
Also add dev/fuzzbytes.go tool to convert fuzz input to raw bytes
2022-01-23 13:34:56 +01:00
Mattias Wadman
bf7a483f87 interp: Fix handling of group decode error from stdin
null input to open means stdin but it as also erroneously also used as object key
to store the error.
2022-01-23 12:41:31 +01:00
Mattias Wadman
34a09c40a7
Merge pull request #90 from wader/decode-stable-sort
decode: Use stable sort for values to not change order or values with…
2022-01-20 16:34:47 +01:00
Mattias Wadman
9198e18c10 decode: Add FieldArrayRootBitBufFn for completeness
Should rethink these, not very nice api
2022-01-20 16:27:52 +01:00
Mattias Wadman
cf8a50c150 decode: Use stable sort for values to not change order or values with same range start
Some decoders might relay on values added with same start to be kept in same order.
2022-01-20 16:21:50 +01:00
Xentripetal
6e1f338ac3 Pull latest from wader 2022-01-19 19:39:12 -06:00
Mattias Wadman
ff5c0b8195 decode: Error on negative number of bits when reading numbers
Maybe should even give error on zero bits? maybe only allow for zero bit for unsigned ints?
2022-01-18 12:01:04 +01:00
Mattias Wadman
548a065388 decode,interp: Finish up nil value support
Update msgpack, bson and cbor to use it.
2022-01-17 10:49:46 +01:00
Mattias Wadman
edad481878 num,mathextra: Rename num package to mathextra
Think it makes more sense
2022-01-15 19:00:42 +01:00
Mattias Wadman
1383b411ae decode,interp: Add arbitrary large integer support (BigInt)
Was already handled in fq in various places as gojq uses them

Update msgpack to support negative integers that can't represented as int64
Rename read try* number functions to make them more explicit
2022-01-15 19:00:42 +01:00
Xentripetal
788fd0258f Pull latest from wader 2022-01-13 20:59:56 -06:00
Mattias Wadman
0b0f28e966 cbor: Add decoder
Does not decode sematic tag types
Also fixes broken float16 support

Fixes #71
2022-01-12 17:56:03 +01:00
Mattias Wadman
149cb3f45a interp: Add torepr/0 that converts decode value into what it reptresents
Ex: fq -d msgpack torepr file.msgpack
Willoutput the JSON representation of the msgpack

Make per format *_torepr functions internal
2022-01-12 17:33:58 +01:00
Mattias Wadman
05df5a9092
Merge pull request #69 from wader/msgpack
msgpack: Add decoder
2022-01-10 21:38:59 +01:00
Mattias Wadman
9770b0046b repl: Make prompt for array and iter more jqish
Really need to refactor script.go some day into a proper parser
2022-01-10 20:02:43 +01:00
Mattias Wadman
a6bf62ce19 msgpack: Add decoder
Fixes #25
2022-01-10 19:33:09 +01:00
Mattias Wadman
af8e7efc61 bencode: Add decoder
Closes #63
2022-01-10 10:52:14 +01:00
Mattias Wadman
b3a09805a4 interp: Document bit opts funcs and add some error tests 2022-01-09 10:43:07 +01:00
Mattias Wadman
be0ef80c8d interp,fq: Make bit operators normal functions
Uses same rule as jq math functions, 1 arg uses input, more than one all passed as args.
So "bnot 1" -> "1 | bnot", "1 bsl 1" -> "bsl(1; 1)"

Don't think it's worth changing the jq syntax for this and also it could make fq
scripts no compatiblr with other jq tools. Non-10 base number literals are still allowed
but should probably not be used in scripts, only in repl and with cli.
2022-01-09 01:06:36 +01:00
Mattias Wadman
a3cfcd0ad2 interp: Add stderr again for jq compat
Also add tests for print* and stderr
2022-01-07 11:30:09 +01:00
Mattias Wadman
628f0f403d bson: Add decoder
Only supports basic types for now
2022-01-06 00:51:37 +01:00
Mattias Wadman
681dbc26b7 elf,ar: Add ar decoder, improved elf decoder
Add x86, 386, arm64, arm v6, arm v7 linux elf test files
2022-01-05 22:05:09 +01:00
Mattias Wadman
f6abcff1fc
Merge pull request #54 from wader/interp-stdio-cleanup
interp: Cleanup stdio usage and functions
2022-01-05 21:44:48 +01:00
Mattias Wadman
e365f22084 interp: Cleanup stdio usage and functions 2022-01-05 21:41:11 +01:00
Mattias Wadman
b6515c8b15 interp: Remove buffer smartness for regexp match functions
Just confusing and breaks symbolic grep for decode values (as they are buffers).
To get buffer use tobytes functions intstead.
2022-01-05 21:13:39 +01:00
Mattias Wadman
a41f0d4b5f windows: Correct @builtin include path join
Failed because go embed paths always uses /
Switch to always use forward slash paths internally

Related to #21
2022-01-04 22:10:53 +01:00
Mattias Wadman
b9aef39ed4 pcap,pcapng,bsd_loopback_frame: Add decoder, refactor link frame into a group
Also fix incorrect struct name s/UDPDatagramIn/UDPPayloadIn/
2022-01-03 21:06:27 +01:00
Mattias Wadman
6db7218093 doc: Some more dev infomration 2021-12-31 17:13:16 +01:00
Xentripetal
7a8e3ca26e Hook into registry, add codecs 2021-12-28 13:05:10 -06:00
Mattias Wadman
55b1d5c3e7 interp: Move _registry to decode
More related to decode than interp. Maybe should have a format.go?
2021-12-25 16:29:45 +01:00
Mattias Wadman
46b59d0ebf crc: Unbreak build on 32-bit arch
Thanks Alexey Dokuchaev @danfe for report and fix.

Fixes #30
2021-12-25 15:47:54 +01:00
Mattias Wadman
f7c7801bbe interp: Rework buffer regex support
Now all regexp functions should work similar to string version for buffers.
Added scan_toend that works as scan but outputs buffer from match to end of buffer,
useful when trying to decode a format and you dont know or care to limit.
2021-12-17 16:23:44 +01:00
Mattias Wadman
f4f63835dc interp: Add ._index for values in arrays 2021-12-10 18:19:11 +01:00
Mattias Wadman
e823475d3c interp: Fix help a bit 2021-12-09 21:11:24 +01:00
Mattias Wadman
f3480026bf sll2: fuzz: Limit address length to max 8 bytes 2021-12-09 10:38:34 +01:00
Mattias Wadman
6ed2e2e72e interp: dump: Indicate arrays using jq-syntax
Related to #16
2021-12-08 16:24:28 +01:00
Mattias Wadman
c2131bb4a0 flac: Cleanup scalar usage and fix incorrect sample rates
Also split DisplayFormat into actual and sym
2021-12-08 00:39:52 +01:00
Mattias Wadman
9b683cd839 deocde: Cleanup some io panic(err) 2021-12-07 17:33:57 +01:00
Mattias Wadman
713ffe4770 scalar: Add Require* and Require/Validate/AssertRange* 2021-12-07 15:50:55 +01:00
Mattias Wadman
fa350c6165 interp: Move display to jq 2021-12-06 21:08:40 +01:00
Mattias Wadman
4558192e7c interp: Cleanup buffer code and implement ExtType() 2021-12-06 21:08:40 +01:00
Mattias Wadman
75aa47556a decode: Generate Try?Scalar* methods for readers too 2021-12-04 19:05:16 +01:00
Mattias Wadman
9aec91a675 interp: match: Fix issue with regexp meta characters when matching using a buffer 2021-12-04 17:24:43 +01:00
Mattias Wadman
d48ebc12ee decode: Simplify Compound.Children
Not a array reference anymore but instead pass around Compound reference
2021-12-03 00:06:11 +01:00
Mattias Wadman
36e5562e5b interp: Rename value.* to decode.* as it makes more sense 2021-12-02 21:43:16 +01:00
Mattias Wadman
1b7b2f9641 interp: Use gojqextra.NonUpdatableTypeError 2021-12-02 21:41:38 +01:00
Mattias Wadman
2fc0a71a47 decode: Refactor scalar usage
Move scalar into own package.
Split scalar code into decode related scalar code (that reads etc) and
scalar code that just transform the scalar value.
Use a scalar.Mapper interface instead of just a function.
Make mappers, assert and validat impement the interface.
2021-12-02 17:39:26 +01:00
Mattias Wadman
01a407a462 interp: Rename s/bufferrange/buffer and cleanup 2021-11-30 21:10:26 +01:00
Mattias Wadman
4eccb1ee71 interp: Fix broken aes_ctr, should return buffer instead of []byte 2021-11-30 15:30:34 +01:00
Mattias Wadman
f801cc0af7 decode: Rename s/FieldTryFormat/TryFieldFormat for consistency 2021-11-30 15:29:41 +01:00
Mattias Wadman
d1e1cd98c2 decode: Fix walk root depth issue causing dump to indent incorrectly 2021-11-30 12:51:52 +01:00
Mattias Wadman
8d442b82ee interp: Cleanup stdin reading and add more option tests 2021-11-30 12:25:56 +01:00
Mattias Wadman
f55b1af6ac inet: Add tcp and ipv4 reassembly
Also add tcp_stream and udp_payload to decode content
2021-11-29 18:42:18 +01:00
Mattias Wadman
9f2dddc6e1 interp,gojqextra: Make buffers values even more lazy and error early on non-scalar calls 2021-11-29 14:51:00 +01:00
Mattias Wadman
afb1050355 interp: Move _decode_value to value.jq 2021-11-29 14:26:59 +01:00
Mattias Wadman
8e5442f023 interp: Limit how often decode progress fn is called 2021-11-29 14:26:59 +01:00
Mattias Wadman
3bf1a57cfa avc: Cleanup and add color names etc 2021-11-28 17:29:56 +01:00
Mattias Wadman
6034ad7d67 interp: More sure stdOS stops the signal forward gorutine 2021-11-25 13:35:20 +01:00
Mattias Wadman
7b7faaf02b pcap: Add pcap, pcapng, ether8023, ipv4, udp, udp 2021-11-24 18:13:00 +01:00
Mattias Wadman
9d116df799 decode: Rework use of TryFieldReaderRangeFormat
Handle failure better
2021-11-24 15:25:27 +01:00
Mattias Wadman
4f8d03731d format,decode: Some crc and endian refactor 2021-11-24 12:01:01 +01:00
Mattias Wadman
e6cb708d38 mpeg: Nicer sym and description 2021-11-22 17:02:07 +01:00
Mattias Wadman
69e4eea920 interp: Better error if format/group is not found 2021-11-22 13:28:18 +01:00
Mattias Wadman
abcecb8156 interp: Remove unused []byte type 2021-11-22 01:46:06 +01:00
Mattias Wadman
fdb811ec54 gojqextra,decode: Add generic lazy JQValue 2021-11-22 01:23:59 +01:00
Mattias Wadman
1047d909ac doc: Document io packages a bit 2021-11-21 21:55:53 +01:00
Mattias Wadman
7c4b0b3844 bitio: Simplify by embedding reader 2021-11-21 21:55:09 +01:00
Mattias Wadman
aab32cf2db gojqextra,interp: Add lazy string to speed usage of decode value buffer where string is not used 2021-11-21 21:27:44 +01:00
Mattias Wadman
f40320b04c decode: Remove D.Scalar* and add d.(Try)FieldScala*Fn instead
Idea is scalar fn should not read
2021-11-21 13:08:18 +01:00
Mattias Wadman
0480a2f722 decode: Some format decode and sub buffer work 2021-11-20 18:56:59 +01:00
Mattias Wadman
278e909a2f mp4: Add tapt, prof, enof and clap boxes 2021-11-19 15:29:49 +01:00
Mattias Wadman
9cba69e64d interp: Use todescription in tests 2021-11-19 11:56:58 +01:00
Mattias Wadman
07b421011f interp: add topath/0 and make todescription return null if there is none
Move out more code from funcs.jq
2021-11-19 11:44:23 +01:00
Mattias Wadman
07c7daaf92 doc: Some rewording 2021-11-19 00:23:04 +01:00
Mattias Wadman
d838d2f613 zip: Add format decoder 2021-11-19 00:22:26 +01:00
Mattias Wadman
ffb5adff1d registry: Move to pkg/registry, feels better 2021-11-18 01:22:21 +01:00
Mattias Wadman
7af191d974 decode: Move io helper into *D 2021-11-18 01:17:41 +01:00
Mattias Wadman
6fba1a8125 decode: Fix bitbuf root handling a bit 2021-11-18 01:17:15 +01:00
Mattias Wadman
c083a9e475 decode: Fix MapRawToScalar regression 2021-11-17 17:14:19 +01:00
Mattias Wadman
986d5ecc50 decode: Move registry package to decode/registry and add a format group type 2021-11-17 16:59:56 +01:00
Mattias Wadman
5d98a6949a decode: Refactor Error/Fatal into printf functions 2021-11-17 16:26:13 +01:00
Mattias Wadman
ede2e77975 decode: Nicer scalar template and add doc 2021-11-17 16:13:10 +01:00
Mattias Wadman
826c5094f2 decode: Add Generated header for scalar 2021-11-17 10:19:10 +01:00
Mattias Wadman
b66ed32614 decode,interp: Make fuzzing work again and cleanup fatal/error code 2021-11-16 17:11:26 +01:00
Mattias Wadman
f9f866000e interp,decode: Add force option to ignore asserts 2021-11-16 13:03:56 +01:00
Mattias Wadman
5cd5633374 interp: Move jq function impls closer to where they belong 2021-11-16 11:43:11 +01:00
Mattias Wadman
996be0fae3 interp: Move more options code into options.jq 2021-11-16 10:49:18 +01:00
Mattias Wadman
3fafee8559 interp: Clearer help for -d 2021-11-16 08:43:29 +01:00
Mattias Wadman
1b32b42f93 decode: Major decode API refactor
Generate more code
More generic and comfortable API
Improve and Update format decoder to new API
Add some more format tests
2021-11-15 21:12:07 +01:00
Mattias Wadman
fcbfc29154 make: Move testjq.sh into pkg/interp 2021-11-12 00:23:16 +01:00
Mattias Wadman
178032e0a8 interp: Fix $opts shadowing in decode 2021-11-12 00:22:57 +01:00
Mattias Wadman
cc5f405554 interp,format: Update tests after decode refactor/tosym/toactual 2021-11-05 17:29:23 +01:00
Mattias Wadman
6a15625587 interp,decode: Refactor out Scalar from Value and merge Array/Struct into Compound
Also add tosym, toactual
2021-11-05 17:29:22 +01:00
Mattias Wadman
6cacc9b398 interp: Move *CtxWriter to ioextra, some comments cleanup 2021-11-05 17:28:29 +01:00
Mattias Wadman
ff2077bc0f interp: Simplify Function, aliases done in jq now 2021-11-05 17:28:29 +01:00
Mattias Wadman
93322bc434 interp: Implement format/0 in jq 2021-11-03 10:58:33 +01:00
Mattias Wadman
571bf29ab2 Change project title 2021-11-01 17:47:36 +01:00
Mattias Wadman
58ba84ff93 decode,interp: Add RecoverableErrorer interface instead of enumerate 2021-11-01 17:41:39 +01:00
Mattias Wadman
96cc1283cd interp: Eval options in jq instead of calling jq from go
Simpler and causes less weird performance issues
2021-11-01 17:05:36 +01:00
Mattias Wadman
13fae09172 interp: Don't print context cancel 2021-11-01 13:01:05 +01:00
Mattias Wadman
80b5d66c7a interp: Document inputs and repl/cli details 2021-11-01 13:01:05 +01:00
Mattias Wadman
0660ff08c6 interp: Clear up confusing --rawfile (add a jq alias) 2021-11-01 13:01:05 +01:00
Mattias Wadman
472c1ef081 interp: Refactor out string_input to own function 2021-11-01 11:40:24 +01:00
Mattias Wadman
0d693aa59e interp: Add line between usage and args help 2021-10-30 18:35:21 +02:00
Mattias Wadman
67898cb44a interp: Cleanup, use BufferRange for _open, progress for all decode 2021-10-30 01:17:14 +02:00
Mattias Wadman
88eade9ab9 ogg: Add flac support
Refactor flac_streaminfo and flac_metadata from flac_metadatablocks
Some deocde bitbuf api cleanup
2021-10-29 18:30:16 +02:00
Mattias Wadman
97f7317928 interp: Rework repl prompt code and fix some whitespace issues again 2021-10-28 12:08:19 +02:00
Mattias Wadman
cfdd92215d interp: Fix prompt issue with format 2021-10-27 16:40:39 +02:00
Mattias Wadman
80a69977a1 interp: Fix file leak and always cache for now 2021-10-26 11:50:59 +02:00
Mattias Wadman
826c8bd555 interp: Make include abs path work again 2021-10-26 11:02:30 +02:00
Mattias Wadman
2e964fa44f interp: Disable progress after decode is done
Otherwise reading might cause progress output
2021-10-25 11:11:26 +02:00
Mattias Wadman
bc1b3bf819 todo: Add note about symbols and iprint improvments 2021-10-22 11:01:48 +02:00
Mattias Wadman
b024316289 interp: Remove accidental extra space after path in prompt 2021-10-22 00:17:46 +02:00
Mattias Wadman
95ec5e1077 Cleanup and rename s/BufferView/BufferRange 2021-10-21 00:48:30 +02:00
Mattias Wadman
eedfd16b40 interp: Replace find with overloaded match that support buffer 2021-10-20 21:16:13 +02:00
Mattias Wadman
4af5739712 interp: Rework string/buffer for decode values 2021-10-20 01:31:59 +02:00
Mattias Wadman
58bf069ad5 interp: Return []byte value as a buffer for now 2021-10-19 15:44:48 +02:00
Mattias Wadman
5052bae18e decode,interp: Refactor to allow decode/fillgap a range 2021-10-19 14:38:11 +02:00
Mattias Wadman
6ff5acae03 gif: Support GIF87a 2021-10-19 01:53:37 +02:00
Mattias Wadman
8eaba88a10 decode: Refactor walk code a bit, add WalkRoot* to stay inside one root 2021-10-18 15:06:08 +02:00
Mattias Wadman
16d1f45de1 interp: find buffer should always use ByteRuneReader
Fixes grep and bgrep with buffer
2021-10-18 01:34:05 +02:00
Mattias Wadman
d6d94842b5 interp: Remove --options, probably just confusing 2021-10-18 00:59:35 +02:00
Mattias Wadman
36fd74a181 Add comment how raw byte regexp matching works 2021-10-17 14:48:50 +02:00
Mattias Wadman
7f36f703dd Add to/bytes/bits[range] 2021-10-17 14:43:37 +02:00
Mattias Wadman
7298a4cd8d interp: Add buffer match support to find and grep 2021-10-17 01:26:30 +02:00
Mattias Wadman
e86b45bd1a Add *grep/1/2 and find/1/2 2021-10-13 01:27:04 +02:00
Mattias Wadman
f0233bb811 test: Refactor out diff testing into own package 2021-10-10 17:20:49 +02:00
Mattias Wadman
879bb569f3 interp: Correctly check if _decode_value, add more has/1 tests 2021-10-07 13:35:48 +02:00
Mattias Wadman
691688022f fqtest: Refactor our script part to own package
Hopefully can be reused for docs generation
2021-10-06 18:49:03 +02:00
Mattias Wadman
1c3c65b191 interp: Rework buffer, still confusing 2021-10-05 22:26:05 +02:00
Mattias Wadman
b641c77216 interp: Cleanup unfinished/broken preview 2021-10-02 20:42:11 +02:00
Mattias Wadman
ff143d0bdb interp: Remove redundant decode arg 2021-10-02 10:53:01 +02:00
Mattias Wadman
20021f48ec bitio: Handle < 0 nbits
Read/Write64 panic on < 0 bits
Readers return error
2021-09-29 11:53:21 +02:00
Mattias Wadman
aa38ccf0e1 format,interp: Use MustGroup and add probe order test 2021-09-28 13:08:22 +02:00
Mattias Wadman
13e98d44be lint: Fix unused bufferRange and toBufferView 2021-09-28 02:07:44 +02:00