Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 23 | h266 | 1 | Binary diff/patch utility version 4.3, written by |
| 2 | Copyright 2003-2005 Colin Percival <cperciva@freebsd.org> |
||
| 3 | |||
| 4 | bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
||
| 5 | Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
||
| 6 | |||
| 7 | This is a quick native Win32-Port by |
||
| 8 | Andreas John <dynacore@tesla.inka.de> |
||
| 9 | |||
| 10 | ------------------------------------------------------------------------- |
||
| 11 | Quick overview from the homepage of these tools: |
||
| 12 | http://www.daemonology.net/bsdiff/ |
||
| 13 | |||
| 14 | Binary diff/patch utility |
||
| 15 | bsdiff and bspatch are tools for building and applying patches to binary |
||
| 16 | files. By using suffix sorting (specifically, Larsson and Sadakane's |
||
| 17 | qsufsort) and taking advantage of how executable files change, bsdiff |
||
| 18 | routinely produces binary patches 50-80% smaller than those produced by |
||
| 19 | Xdelta, and 15% smaller than those produced by .RTPatch (a $2750/seat |
||
| 20 | commercial patch tool). |
||
| 21 | |||
| 22 | These programs were originally named bdiff and bpatch, but the large |
||
| 23 | number of other programs using those names lead to confusion; I'm not |
||
| 24 | sure if the "bs" in refers to "binary software" (because bsdiff produces |
||
| 25 | exceptionally small patches for executable files) or "bytewise |
||
| 26 | subtraction" (which is the key to how well it performs). Feel free to |
||
| 27 | offer other suggestions. |
||
| 28 | |||
| 29 | bsdiff and bspatch use bzip2; by default they assume it is in /usr/bin. |
||
| 30 | |||
| 31 | bsdiff is quite memory-hungry. It requires max(17*n,9*n+m)+O(1) bytes of |
||
| 32 | memory, where n is the size of the old file and m is the size of the new |
||
| 33 | file. bspatch requires n+m+O(1) bytes. |
||
| 34 | |||
| 35 | bsdiff runs in O((n+m) log n) time; on a 200MHz Pentium Pro, building a |
||
| 36 | binary patch for a 4MB file takes about 90 seconds. bspatch runs in |
||
| 37 | O(n+m) time; on the same machine, applying that patch takes about two |
||
| 38 | seconds. |
||
| 39 | |||
| 40 | Providing that off_t is defined properly, bsdiff and bspatch support |
||
| 41 | files of up to 2^61-1 = 2Ei-1 bytes. |
||
| 42 | ------------------------------------------------------------------------- |