Switch gflags and gtest dependencies to a post-sync step.
231 files changed
tree: 51b0559fa5dc05e6a45fb2877b8ae55ffcc3349e
  1. m4/
  2. man/
  3. packages/
  4. src/
  5. testdata/
  6. vsprojects/
  7. .gitignore
  8. aclocal.m4
  9. AUTHORS
  10. autogen.sh
  11. ChangeLog
  12. compile
  13. config.guess
  14. config.sub
  15. configure
  16. configure.ac
  17. CONTRIBUTORS
  18. COPYING
  19. depcomp
  20. fetch_prereq.bat
  21. fetch_prereq.sh
  22. INSTALL
  23. install-sh
  24. ltmain.sh
  25. Makefile.am
  26. Makefile.in
  27. missing
  28. mkinstalldirs
  29. NEWS
  30. README
  31. README.md
  32. THANKS
README.md

open-vcdiff README

open-vcdiff is an encoder and decoder for the VCDIFF format, as described in RFC 3284: The VCDIFF Generic Differencing and Compression Data Format.

You will need to first synchronize gflags and gtest by running ./fetch_prereq.bat on Windows or ./fetch_prereq.sh on other platforms.

A library with a simple API is included, as well as a command-line executable that can apply the encoder and decoder to source, target, and delta files. For further details, please refer to this link.

See INSTALL for (generic) installation instructions for C++: basically

./configure && make && make install

This should compile the unit tests as well as vcdiff, a simple command-line utility to run the encoder and decoder. Typical usage of vcdiff is as follows (the < and > are file redirect operations, not optional arguments):

vcdiff encode -dictionary file.dict < target_file > delta_file
vcdiff decode -dictionary file.dict < delta_file  > target_file

To see the command-line syntax of vcdiff, use vcdiff --help or just vcdiff.

To call the encoder from C++ code, assuming that dictionary, target, and delta are all std::string objects:

#include <google/vcencoder.h>  // Read this file for interface details

// [...]

open_vcdiff::VCDiffEncoder encoder(dictionary.data(), dictionary.size());
encoder.SetFormatFlags(open_vcdiff::VCD_FORMAT_INTERLEAVED);
encoder.Encode(target.data(), target.size(), &delta);

Calling the decoder is just as simple:

#include <google/vcdecoder.h>  // Read this file for interface details

// [...]

open_vcdiff::VCDiffDecoder decoder;
decoder.Decode(dictionary.data(), dictionary.size(), delta, &target);

When using the encoder, the C++ application must be linked with the library options -lvcdcom and -lvcdenc; when using the decoder, it must be linked with -lvcdcom and -lvcddec.

To verify that the package works on your system, especially after making modifications to the source code, please run the unit tests using make check.

For further details, please refer to this link.