I don't see anything about delta patching?
Until it can create/apply a minimal patch against an original and modified file system*, it's no better than IPS/UPS.
Also, an alternative to VLI is arbitrary precision numbers. For example, these functions in GMP would be perfect for getting/setting numbers of unknown size:
http://gmplib.org/manual/Integer-Import-and-Export.htmlThe only problem I can think of is a portability issue: size_t (for the
count variable) is the native word size on the processor; 32-bit on 32-bit CPUs, 64-bit on 64-bit CPUs. To make it truly portable, you would have to stick to the least common denominator, which, according to the C99 spec, is 16-bits:
http://en.wikipedia.org/wiki/Size_tJust use a
size of 1, and you have a binary format like this: <uint16_t count>,<uint8_t array[count]>. "Sadly" that limits you to a number between 8 bits and 524,280 bits.
* The "file system" may be a disk image, ISO, NDS ROM, whatever; the point is, once a file in the system grows or shrinks (and the file system is "defragmented" or "rebuilt"), file data moves. A simple byte-by-byte compare of such a modification will typically lead to a patch that contains most (if not all) of the modified file, rather than a minimal series of patches (changes, additions, subtractions, deltas/moved data, etc.)