summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #251 from dbaarda/prepare-v2.3.5HEADmasterDonovan Baarda2023-02-193-3/+9
|\ | | | | Prepare v2.3.5.
| * Prepare v2.3.5.Donovan Baarda2023-02-193-3/+9
|/ | | | Prepare for development of the next v2.3.5 release.
* Merge pull request #250 from dbaarda/release-v2.3.4v2.3.4Donovan Baarda2023-02-193-4/+4
|\ | | | | Release v2.3.4.
| * Release v2.3.4.Donovan Baarda2023-02-193-4/+4
|/ | | | | | | Update everything necessary in preparation for release of v2.3.2. Note CMakeLists.txt and TODO.md are already up to date. Also correct `CONTRIBUTING.md` release instructions for the right `html` path for doxygen docs.
* Fix #248 by putting `#include "config.h"` in most src/*.c files. (#249)Donovan Baarda2023-02-1931-21/+55
| | | | | | | | | | | | | | | | | | * Fix #248 by putting `#include "config.h"` in all src/*.c files. The iwyu tool doesn't handle `config.h` files well, and these includes were incorrectly removed, which breaks things on some platforms. Add them back to most `src/*.c` files with `/* IWYU pragma: keep */` to make iwyu ignore them. We skip `src/hashtable.c` because it is a standalone tool that is platform independent. Also add `/* IWYU pragma: keep */` to includes in `src/fileutil.c` that are needed on some platforms but not others. This means we can remove the special exemptions to skip this file for the `iwyu` and `iwyu-fix` targets in `CMakeLists.txt`. Add some explicit typecasts to `rollsum.[ch]` and `patch.c` to silence warnings on windows. Update NEWS.md for `config.h` include fixes and added typecasts.
* Merge pull request #247 from dbaarda/prepare-v2.3.4Donovan Baarda2023-02-163-4/+10
|\ | | | | Prepare v2.3.4.
| * Prepare for development of the next v2.3.4 release.Donovan Baarda2023-02-163-4/+10
|/
* Merge pull request #246 from dbaarda/release-v2.3.3v2.3.3Donovan Baarda2023-02-162-3/+3
|\ | | | | Update everything necessary in preparation for release of v2.3.3.
| * Update everything necessary in preparation for release of v2.3.3.Donovan Baarda2023-02-162-3/+3
|/ | | | Note CMakeLists.txt and TODO.md are already up to date.
* Fix #244 Add win32 install artifact to release instructions. (#245)Donovan Baarda2023-02-152-11/+50
| | | | | | * Add win32 install artifact to release instructions in `CONTRIBUTING.md`. This ensures we have a compiled win64 release artifact with each release. Also updated NEWS.md to include all pull requests since the last release.
* Update github actions and fix `iwyu` build target. (#243)Donovan Baarda2023-02-015-10/+15
| | | | | | | | | | | | | | | | | | | | | * Update github actions checkout and upload-artifact to v3. The old v2 versions of these github actions now produce errors warning you need to update them. * Fix lint.yml remove install of old libclang-common-9-dev package. The iwyu package dependencies have been fixed, and this old package doesn't exist any more. * Run `make iwyu-fix` to fix includes for `tests/rabinkarp_perf.c`. * Change the `iwyu` build target to use clang output format. This format is much more compact and easier to read. * Make `iwyu` build target trim noisy "note:" output and ignore fileutil.c. * Update NEWS.md for all #243 changes.
* Merge pull request #237 from AvdN/patch-1Martin Pool2021-11-291-1/+1
|\ | | | | Update README.md
| * Update README.mdAnthon van der Neut2021-11-291-1/+1
|/ | | added missing word
* Upload build and install artifacts from Github actions (#231)Martin Pool2021-09-171-0/+18
| | | Add "Build install", "Upload build" and "Upload install" steps to test install and upload build and install artifacts.
* Merge pull request #234 from dbaarda/dev/scoop1Donovan Baarda2021-09-1614-231/+292
|\ | | | | Make delta directly process the input stream if it has enough data.
| * Improve documentation in scoop.h.Donovan Baarda2021-09-161-14/+15
| |
| * Update NEWS.md with changes so far.Donovan Baarda2021-09-151-0/+13
| |
| * Update scoop.c documentation to reflect the new scoop buffering behavour.Donovan Baarda2021-09-141-13/+12
| | | | | | | | | | Update the docstring so it correctly describes how data is processed directly from the input stream if there is sufficient data there.
| * Fix the includes and include guard for scoop.h.Donovan Baarda2021-09-141-4/+6
| | | | | | | | This makes it iwyu clean.
| * Rename stream.h to scoop.h.Donovan Baarda2021-09-149-9/+9
| | | | | | | | | | This means it matches the name of scoop.c which means tools like iwyu correctly find and check it.
| * Add rs_trace call in buf.c to indicate when moving data in buffers.Donovan Baarda2021-09-141-0/+2
| |
| * Update librsync.h docs about processing directly from large input buffers.Donovan Baarda2021-09-141-5/+11
| | | | | | | | | | | | This points out that large buffers can be processed directly and can leave a tail of data behind in the input buffer. Using large buffers avoids data copies and can be much faster.
| * Make rs_scoop_input() only visible inside scoop.c.Donovan Baarda2021-09-142-2/+1
| | | | | | | | | | | | In stream.h remove rs_scoop_input() and in scoop.c make it static inline. This function nolonger needs to be called directly anywhere outside scoop.c.
| * Remove use of ssize_t which doesn't exist on Windows.Donovan Baarda2021-09-142-12/+9
| | | | | | | | | | | | | | It turns out ssize_t is a Posix thing that doesn't exist on Windows. I originally started using it in stream.h so that negative values could be used to indicate errors when iterating through buffers. We don't use or need that, so we can just use size_t instead.
| * Add MAX_DELTA_CMD in job.h for buffer scaling.Donovan Baarda2021-09-143-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This gives us a single point for defining the size used for delta commands and streaming buffers. In job.h define MAX_DELTA_CMD to be the maximum size of a single delta command at 64K. In delta.c use MAX_DELTA_CMD to define MAX_MISS_LEN and use it to get the minimum readahead size in rs_getinput(). In whole.c use MAX_DELTA_CMD for defining the buffer sizes used for delta and patch operations.
| * Make delta directly process the input stream if it has enough data.Donovan Baarda2021-09-143-66/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means we only accumulate data into the scoop buffer if the input stream is too small, otherwise we process directly from the input stream. In job.h rename scoop_pos to scan_pos and add scan_buf and scan_len for pointing at the curren scan data, which can be either in the input stream or the scoop buffer. Also give the scoop and scan fields proper doxygen comments. In delta.c use scan_pos, scan_buf, and scan_len instead of scoop_pos, scoop_next, and scoop_avail respectively. Change rs_getinput() to return an rs_result_t and take the block_len as an argument, and have it set scan_buf and scan_len using rs_scoop_readhead() to get at least enough data to scan and emit a full miss literal command. Change rs_delta_s_scan() and rs_delta_s_flush() to do rs_tube_catchup() before rs_getinput() to consume any literal data off the scoop buffer before refilling it. Change the MAX_MISS_LEN to 64K - 3 cmd bytes from 32K. In whole.c change rs_delta_file() to use buffers large enough for 4x 64K literal commands, which is large enough to scan without copying into the scoop buffer.
| * Add functions for getting and consuming contigous buffers from the scoop.Donovan Baarda2021-09-142-66/+107
| | | | | | | | | | | | | | | | | | | | | | | | Add static inline fuctions to stream.h for getting and iterating through contiguous data buffers from the scoop. In tube.c remove rs_tube_copy_from_scoop() and rs_tube_copy_from_stream() and just make rs_tube_catchup_copy() iterate through contiguous buffers from the scoop. In rs_tube_catchup() use rs_scoop_eof() to check for eof instead of checking the scoop and stream directly. Remove undefined/unused rs_buffers_copy() from steam.h.
| * Only shuffle the scoop buffer if it's necessary to make space.Donovan Baarda2021-09-125-25/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename rs_scoop_total_avail() to rs_scoop_avail() and make it a static inline in stream.h Remove rs_job_input_is_ending() from job.[hc] and replace it with a rs_scoop_eof() static inline in stream.h. In scoop.c make rs_scoop_input() only shuffle data to the start of the buffer if necessary to free up space. Also make an assert() check more strict about the data being within the buffer. Slightly tidy up rs_scoop_read_rest(). In delta.c make rs_delta_s_slack() neater by using the new rs_scoop_*() functions.
| * Make rs_infilebuf_fill() top-up non-empty input buffers.Donovan Baarda2021-09-111-34/+19
| | | | | | | | | | | | | | | | | | Make rs_infilebuf_fill() shuffle and top-up input buffers that are more than half empty. Also tidy and tighten assert() statements in rs_infilebuf_fill() and rs_outfilebuf_drain() about to require the input/output buffers be fully contained in the rs_filebuf_t buffer.
* | Merge pull request #232 from sourcefrog/ignore-cmakeDonovan Baarda2021-09-081-0/+1
|\ \ | |/ |/| Ignore .cmake directory
| * Ignore .cmake directoryMartin Pool2021-09-071-0/+1
|/ | | | Seems to include api fingerprints?
* Merge pull request #230 from dbaarda/dev/docs1Donovan Baarda2021-08-2455-182/+202
|\ | | | | Fix #228 Improve GitHub and Doxygen Docs.
| * Add doxygen `\file` docs to all headers and state engine files.Donovan Baarda2021-08-2423-110/+130
| | | | | | | | | | | | | | Move doxygen docs from `*.c` files to their corresponding `*.h` files if there is one. Remove any "private" or "internal" markers from docs. It's already clear the librsync.h is the only public interface, but the rest of the docs are useful for understanding the code so we still want to generate them.
| * Make headings of markdown files more consistent.Donovan Baarda2021-08-245-5/+5
| | | | | | | | This also makes the doxygen `\ref` links a little nicer.
| * Change Doxyfile.in setting `PAGE_TYPE = a4`.Donovan Baarda2021-08-241-1/+1
| | | | | | | | | | It seems a4wide is not supported in newer doxygen versions on Debian and is giving a warning.
| * Change trace.md title to 'Trace output'.Donovan Baarda2021-08-241-1/+1
| | | | | | | | | | This is more consistent with other document titles and makes neater `\ref` links.
| * Change pull.md title to "Pull API".Donovan Baarda2021-08-231-1/+1
| | | | | | | | | | This makes the title more consistent in the context of the other docs, and avoids confusion around callbacks used for other current (or future) APIs.
| * Rename doc/format.md to doc/formats.md.Donovan Baarda2021-08-231-0/+0
| | | | | | | | This makes the filename consistent with the doxygen anchor name.
| * Rename utilities.md doxygen anchor to page_utilities.Donovan Baarda2021-08-232-2/+2
| | | | | | | | This makes the anchor name consistent with the filename.
| * Rename versioning.md doxygen anchor to `page_versioning`.Donovan Baarda2021-08-234-4/+4
| | | | | | | | This makes the anchor more consistent with the other docs.
| * Rename librsync.md Doxygen anchor to `page_librsync`.Donovan Baarda2021-08-232-2/+2
| | | | | | | | | | This makes the anchor name more consistent with the filename. Also change the title to be more consistent with the other usage doc rdiff.md.
| * Remove unused `{#anchor}` Doxygen anchor from CONTRIBUTING.md.Donovan Baarda2021-08-231-1/+1
| | | | | | | | | | | | Currently this document is only referenced by a markdown link in README.md, and for the old ubuntu_latest Doxygen version markdown links don't work if the doc has an anchor.
| * Reformat README.md and use markdown links for root docs.Donovan Baarda2021-08-231-37/+34
| | | | | | | | | | | | | | | | | | | | This mostly just reformats paragraphs but also uses markdown links for root docs CONTRIBUTING.md, NEWS.md, and TODO.md instead of Doxygen `\ref` links. The root docs don't have `{#anchor}` doxygen anchors which is a pre-requisite for markdown links to work on the old ubuntu_latest version of Doxygen. Note currently CONTRIBUTING.md does have an anchor, but I want to test that it actually fails before removing it.
| * Fix missing `opaque` param docstring in librsync.h.Donovan Baarda2021-08-231-0/+3
| | | | | | | | | | Newer doxygen versions on Debian testing were complaining about this missing argument docstring entry in librsync.h.
| * Install graphviz for generating docs in check.yml githup action.Donovan Baarda2021-08-211-1/+1
| |
| * Change doc target to run in `CMAKE_CURRENT_SOURCE_DIR`.Donovan Baarda2021-08-212-2/+2
| | | | | | | | | | | | | | | | Make the doc target run in CMAKE_CURRENT_SOURCE_DIR and change `Doxyfile.in` to generate output into `OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@`. This ensures consistent doc filenames and references when using different build directorys, without leaking the full path of where it was built. See
| * In Doxyfile.in turn on graphviz svg diargrams.Donovan Baarda2021-08-211-2/+2
| | | | | | | | | | Set `HAVE_DOT = YES` and `DOT_IMAGE_FORMAT = svg`. FTR I compared and svg diagrams are smaller than png as you would expect.
| * Update comment on src/config.h.in to reflect new template name.Donovan Baarda2021-08-201-1/+1
| |
| * Rename src/config.h.cmake -> src/config.h.in.Donovan Baarda2021-08-202-1/+1
| | | | | | | | This makes the name more consistent with other cmake template files.
| * Rename test inputs from `*.in` to `*.input`.Donovan Baarda2021-08-2016-12/+12
|/ | | | | | | | Rename test input files, update test scripts, and update `.gitattributes` to treat `.input` files as binary, not `.in` files. This prevents cmake input templates ending in `.in` from being treated like binary test data files. In particular `doc/Doxyfile.in`.