Kovid Goyal
d46590c2e6
Fix fd leak in debugprintln
2023-07-30 19:49:45 +05:30
Kovid Goyal
6b5520f07a
More work on porting the receive kitten
2023-07-30 19:49:45 +05:30
Kovid Goyal
3d5fdad029
More work on porting receive kitten
2023-07-30 19:49:44 +05:30
Kovid Goyal
73ee5b32c9
A better way to wrap go's zlib into a streaming decompressor
2023-07-30 19:49:44 +05:30
Kovid Goyal
59b47a3a8f
A facility to easily have child programs print to kitty stdout
...
Works better than the kitty-print DCS escape code as that tends to get
interleaved with other writes to the tty since the loop infrastructure
writes in a separate I/O thread.
2023-07-30 19:49:44 +05:30
Kovid Goyal
063c39ea12
Wire up the rsync code in the send kitten
2023-07-30 19:49:43 +05:30
Kovid Goyal
edc1669ced
Ported tests all pass
2023-07-30 19:49:43 +05:30
Kovid Goyal
b5498090df
Finish the port of the rsync algorithm to C
2023-07-30 19:49:43 +05:30
Kovid Goyal
c84874ca8d
Add tests for the xxhash based hashers
2023-07-30 19:49:42 +05:30
Kovid Goyal
08e3dbb8e7
Patcher signature generation implemented
2023-07-30 19:49:42 +05:30
Kovid Goyal
fabb6bd8cc
Start work on porting Go rsync implementation to C
2023-07-30 19:49:42 +05:30
Kovid Goyal
85df15bfc3
Add a test that the last op is hash
2023-07-30 19:49:42 +05:30
Kovid Goyal
f64c4f34ac
Also use io.Writer for signature iterator
2023-07-30 19:49:42 +05:30
Kovid Goyal
4b5216adcf
Change delta creation API to use io.Writer
...
Simplifies logic and avoids an extra copy if the writer doesnt need to
make its own copy
2023-07-30 19:49:41 +05:30
Kovid Goyal
94b5bedfa5
Add overall file checksum verification to the rsync protocol
2023-07-30 19:49:41 +05:30
Kovid Goyal
e125f803b3
Work on adding overall checksum support
2023-07-30 19:49:41 +05:30
Kovid Goyal
039e17840a
Allow users to customize buffer growth strategy
2023-07-30 19:49:41 +05:30
Kovid Goyal
c2ad662bed
Use the append paradigm for the delta iterator as well
2023-07-30 19:49:41 +05:30
Kovid Goyal
579ab8551e
Add some API docs
2023-07-30 19:49:41 +05:30
Kovid Goyal
77d5fe1be5
Change signature generation API to allow caller to provide storage and control iteration
2023-07-30 19:49:41 +05:30
Kovid Goyal
bbb6a4ae35
Micro-optimization: store strong hash as a uint64 instead of a byte slice
2023-07-30 19:49:41 +05:30
Kovid Goyal
55f9359e1b
Make the rsync struct private
2023-07-30 19:49:41 +05:30
Kovid Goyal
6c10528cbd
Make the hasher var private in the rsync API
2023-07-30 19:49:41 +05:30
Kovid Goyal
ca835cd80d
...
2023-07-30 19:49:41 +05:30
Kovid Goyal
7268513332
More tests
2023-07-30 19:49:41 +05:30
Kovid Goyal
71c7c4b285
Clean up delta generation algorithm implementation
2023-07-30 19:49:41 +05:30
Kovid Goyal
83d97c515c
Use the iterator design for bytes based API as well
2023-07-30 19:49:41 +05:30
Kovid Goyal
e7d02b79d7
Make diff internals private
2023-07-30 19:49:41 +05:30
Kovid Goyal
6bc0fc7615
Make serializing data ops avoid a double copy
2023-07-30 19:49:40 +05:30
Kovid Goyal
f7723a65fa
Removal original delta operation implementation
...
Mine is nicer and much more amenable to debugging
2023-07-30 19:49:40 +05:30
Kovid Goyal
35bfdbd926
...
2023-07-30 19:49:40 +05:30
Kovid Goyal
3db2c4fe5d
Make the test non-random
2023-07-30 19:49:40 +05:30
Kovid Goyal
74e0fa3f1d
Show invocation line for failing test
2023-07-30 19:49:40 +05:30
Kovid Goyal
ed6e3dfe2c
Speedup Memset for single val
2023-07-30 19:49:40 +05:30
Kovid Goyal
678ad627b2
Improve testing infra for rsync roundtrip
2023-07-30 19:49:40 +05:30
Kovid Goyal
26c93af565
...
2023-07-30 19:49:40 +05:30
Kovid Goyal
f27bb2103f
Work on cleaning up the checksum searching algorithm
2023-07-30 19:49:40 +05:30
Kovid Goyal
4dc409ff5d
Increase MaxBlockSize
2023-07-30 19:49:40 +05:30
Kovid Goyal
6a7c194d8f
In the tests check that too much data is not being transmitted
2023-07-30 19:49:40 +05:30
Kovid Goyal
79fd0b19cf
Fix a bug in upstream CreateDelta that could ignore trailing data if a matching hash is not found for it
2023-07-30 19:49:40 +05:30
Kovid Goyal
82721ef053
Check for error during seek()
2023-07-30 19:49:40 +05:30
Kovid Goyal
6d614a98ac
Get the test to pass
2023-07-30 19:49:40 +05:30
Kovid Goyal
26c22f0086
Work on creating tests for rsync api
2023-07-30 19:49:40 +05:30
Kovid Goyal
278a3986e5
Simplify API a bit
2023-07-30 19:49:40 +05:30
Kovid Goyal
2801b934fb
Split up API into two structs one for diffing and one for patching
2023-07-30 19:49:40 +05:30
Kovid Goyal
a5c62da265
Dont use JSON for signature header
2023-07-30 19:49:39 +05:30
Kovid Goyal
c28f6a7bf4
Make CreateSignature byte oriented
2023-07-30 19:49:39 +05:30
Kovid Goyal
71a1050b9f
Make loading of external signature data also streaming
2023-07-30 19:49:39 +05:30
Kovid Goyal
7e12972414
Wrap the rsync Go API to use with byte streams and arbitrary hash functions
2023-07-30 19:49:39 +05:30
Kovid Goyal
d539620c9d
Import Go implementation of rsync algorithm
...
From https://github.com/jbreiding/rsync-go/blob/master/rsync.go
2023-07-30 19:49:39 +05:30