Spin off hivex as a separate upstream project. This commit makes the semi-independent hivex library into a separate upstream project. The git repo for hivex is now: http://git.annexia.org/?p=hivex.git;a=summary Downloads of hivex are available here: http://libguestfs.org/download/ All questions, patches, bugs etc should be sent to the libguestfs mailing list and bug tracker.
hivex: Fix handling of inline VKs.
hivex: Documentation and cleanups.
hivex: Make limits into macros.
hivex: Complete the implementation of adding child nodes.
hivex: allocate_block should update valid block bitmap. The internal allocate_block() function wasn't updating the bitmap, so if you revisited a block which you had allocated in the same session, you could get an EFAULT error.
hivex: More debug messages.
hivex: Documentation update. ntreg_lf_record can have id "lf" (old-style hashes) or "lh" (new- style hashes).
hivex: Some missing le32toh endianness conversions.
hivex: Implement deleting child nodes.
hivex: Add flags argument to internal get_children() function. When we later call get_children to visit the intermediate ri/lf/lh records, we have already deleted the subkey nk-records, so checking that those nk-records are still valid is not very helpful. This commit adds a flag to turn these checks off.
hivex: Don't die on valid registries which have bad declared data lengths. Some apparently valid registries contain value data length declarations which exceed the allocated block size for the value. Previously the code would return EFAULT for such registries. However since these appear to be otherwise valid registries, turn this into a warning and just use the allocated block size as the data length (in other words, truncate the value).
hivex: Begin implementation of writing to hives. This implements hivex_node_set_values which is used to delete the (key, value) pairs at a node and optionally replace them with a new set. This also implements hivex_commit which is used to commit changes to hives back to disk.
hivex: Add HIVEX_OPEN_WRITE flag to allow hive to be opened for writing. If this flag is omitted (as in the case for all existing callers) then the hive is still opened read-only. We add a 'writable' flag to the hive handle, and we change the way that the hive file (data) is stored. The data is still mmapped if the file is opened read-only, since that is more efficient and allows us to handle larger hives. However if we need to write to the file then we have to read it all into memory, since if we had to extend the file we need to realloc that data. Note the manpage section L</WRITING TO HIVE FILES> comes in a later commit.
Document that this flag is clear for default keys.
Move htole*/le*toh macros into a separate header file. This allows us to reuse these macros in hivexsh later.
hivex: Const-correctness fix on header_checksum (thanks Jim Meyering).
hivex: Update some previously unknown nk-record fields. Update these fields with what we found out from reverse engineering the file. Also bring the unknownX field names into line with visualizer.ml.
hivex: Fix calculation of block size for vk data blocks.
hivex: Display incorrect block size as unsigned in an error message.