Author: hbelusca
Date: Sat Jan  9 23:42:45 2016
New Revision: 70562

URL: http://svn.reactos.org/svn/reactos?rev=70562&view=rev
Log:
[CMLIB]: Go from 3-space indentation to 4-space.

Modified:
    trunk/reactos/lib/cmlib/cmdata.h
    trunk/reactos/lib/cmlib/cminit.c
    trunk/reactos/lib/cmlib/cmlib.h
    trunk/reactos/lib/cmlib/cmtools.c
    trunk/reactos/lib/cmlib/hivebin.c
    trunk/reactos/lib/cmlib/hivecell.c
    trunk/reactos/lib/cmlib/hivedata.h
    trunk/reactos/lib/cmlib/hiveinit.c
    trunk/reactos/lib/cmlib/hivesum.c
    trunk/reactos/lib/cmlib/hivewrt.c

Modified: trunk/reactos/lib/cmlib/cmdata.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmdata.h?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/cmdata.h    [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmdata.h    [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl

Modified: trunk/reactos/lib/cmlib/cminit.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cminit.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/cminit.c    [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cminit.c    [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl
@@ -13,124 +13,124 @@
 
 BOOLEAN CMAPI
 CmCreateRootNode(
-   PHHIVE Hive,
-   PCWSTR Name)
+    PHHIVE Hive,
+    PCWSTR Name)
 {
-   PCM_KEY_NODE KeyCell;
-   HCELL_INDEX RootCellIndex;
-   ULONG NameSize;
+    PCM_KEY_NODE KeyCell;
+    HCELL_INDEX RootCellIndex;
+    ULONG NameSize;
 
-   /* Allocate the cell */
-   NameSize = (ULONG)strlenW(Name) * sizeof(WCHAR);
-   RootCellIndex = HvAllocateCell(Hive,
-                                  FIELD_OFFSET(CM_KEY_NODE, Name) + NameSize,
-                                  Stable,
-                                  HCELL_NIL);
-   if (RootCellIndex == HCELL_NIL) return FALSE;
+    /* Allocate the cell */
+    NameSize = (ULONG)strlenW(Name) * sizeof(WCHAR);
+    RootCellIndex = HvAllocateCell(Hive,
+                                   FIELD_OFFSET(CM_KEY_NODE, Name) + NameSize,
+                                   Stable,
+                                   HCELL_NIL);
+    if (RootCellIndex == HCELL_NIL) return FALSE;
 
-   /* Seutp the base block */
-   Hive->BaseBlock->RootCell = RootCellIndex;
-   Hive->BaseBlock->CheckSum = HvpHiveHeaderChecksum(Hive->BaseBlock);
+    /* Seutp the base block */
+    Hive->BaseBlock->RootCell = RootCellIndex;
+    Hive->BaseBlock->CheckSum = HvpHiveHeaderChecksum(Hive->BaseBlock);
 
-   /* Get the key cell */
-   KeyCell = (PCM_KEY_NODE)HvGetCell(Hive, RootCellIndex);
-   if (!KeyCell) return FALSE;
+    /* Get the key cell */
+    KeyCell = (PCM_KEY_NODE)HvGetCell(Hive, RootCellIndex);
+    if (!KeyCell) return FALSE;
 
-   /* Setup the cell */
-   KeyCell->Signature = (USHORT)CM_KEY_NODE_SIGNATURE;
-   KeyCell->Flags = KEY_HIVE_ENTRY | KEY_NO_DELETE;
-   KeyCell->LastWriteTime.QuadPart = 0;
-   KeyCell->Parent = HCELL_NIL;
-   KeyCell->SubKeyCounts[Stable] = 0;
-   KeyCell->SubKeyCounts[Volatile] = 0;
-   KeyCell->SubKeyLists[Stable] = HCELL_NIL;
-   KeyCell->SubKeyLists[Volatile] = HCELL_NIL;
-   KeyCell->ValueList.Count = 0;
-   KeyCell->ValueList.List = HCELL_NIL;
-   KeyCell->Security = HCELL_NIL;
-   KeyCell->Class = HCELL_NIL;
-   KeyCell->ClassLength = 0;
-   KeyCell->MaxNameLen = 0;
-   KeyCell->MaxClassLen = 0;
-   KeyCell->MaxValueNameLen = 0;
-   KeyCell->MaxValueDataLen = 0;
+    /* Setup the cell */
+    KeyCell->Signature = (USHORT)CM_KEY_NODE_SIGNATURE;
+    KeyCell->Flags = KEY_HIVE_ENTRY | KEY_NO_DELETE;
+    KeyCell->LastWriteTime.QuadPart = 0;
+    KeyCell->Parent = HCELL_NIL;
+    KeyCell->SubKeyCounts[Stable] = 0;
+    KeyCell->SubKeyCounts[Volatile] = 0;
+    KeyCell->SubKeyLists[Stable] = HCELL_NIL;
+    KeyCell->SubKeyLists[Volatile] = HCELL_NIL;
+    KeyCell->ValueList.Count = 0;
+    KeyCell->ValueList.List = HCELL_NIL;
+    KeyCell->Security = HCELL_NIL;
+    KeyCell->Class = HCELL_NIL;
+    KeyCell->ClassLength = 0;
+    KeyCell->MaxNameLen = 0;
+    KeyCell->MaxClassLen = 0;
+    KeyCell->MaxValueNameLen = 0;
+    KeyCell->MaxValueDataLen = 0;
 
-   /* Write the name */
-   KeyCell->NameLength = (USHORT)NameSize;
-   RtlCopyMemory(KeyCell->Name, Name, NameSize);
+    /* Write the name */
+    KeyCell->NameLength = (USHORT)NameSize;
+    RtlCopyMemory(KeyCell->Name, Name, NameSize);
 
-   /* Return success */
-   HvReleaseCell(Hive, RootCellIndex);
-   return TRUE;
+    /* Return success */
+    HvReleaseCell(Hive, RootCellIndex);
+    return TRUE;
 }
 
 static VOID CMAPI
 CmpPrepareKey(
-   PHHIVE RegistryHive,
-   PCM_KEY_NODE KeyCell);
+    PHHIVE RegistryHive,
+    PCM_KEY_NODE KeyCell);
 
 static VOID CMAPI
 CmpPrepareIndexOfKeys(
-   PHHIVE RegistryHive,
-   PCM_KEY_INDEX IndexCell)
+    PHHIVE RegistryHive,
+    PCM_KEY_INDEX IndexCell)
 {
-   ULONG i;
+    ULONG i;
 
-   if (IndexCell->Signature == CM_KEY_INDEX_ROOT ||
-       IndexCell->Signature == CM_KEY_INDEX_LEAF)
-   {
-      for (i = 0; i < IndexCell->Count; i++)
-      {
-         PCM_KEY_INDEX SubIndexCell = HvGetCell(RegistryHive, 
IndexCell->List[i]);
-         if (SubIndexCell->Signature == CM_KEY_NODE_SIGNATURE)
-            CmpPrepareKey(RegistryHive, (PCM_KEY_NODE)SubIndexCell);
-         else
-            CmpPrepareIndexOfKeys(RegistryHive, SubIndexCell);
-      }
+    if (IndexCell->Signature == CM_KEY_INDEX_ROOT ||
+        IndexCell->Signature == CM_KEY_INDEX_LEAF)
+    {
+        for (i = 0; i < IndexCell->Count; i++)
+        {
+            PCM_KEY_INDEX SubIndexCell = HvGetCell(RegistryHive, 
IndexCell->List[i]);
+            if (SubIndexCell->Signature == CM_KEY_NODE_SIGNATURE)
+                CmpPrepareKey(RegistryHive, (PCM_KEY_NODE)SubIndexCell);
+            else
+                CmpPrepareIndexOfKeys(RegistryHive, SubIndexCell);
+        }
    }
-   else if (IndexCell->Signature == CM_KEY_FAST_LEAF ||
-            IndexCell->Signature == CM_KEY_HASH_LEAF)
-   {
-      PCM_KEY_FAST_INDEX HashCell = (PCM_KEY_FAST_INDEX)IndexCell;
-      for (i = 0; i < HashCell->Count; i++)
-      {
-         PCM_KEY_NODE SubKeyCell = HvGetCell(RegistryHive, 
HashCell->List[i].Cell);
-         CmpPrepareKey(RegistryHive, SubKeyCell);
-      }
-   }
-   else
-   {
-      DPRINT1("IndexCell->Signature %x\n", IndexCell->Signature);
-      ASSERT(FALSE);
-   }
+    else if (IndexCell->Signature == CM_KEY_FAST_LEAF ||
+             IndexCell->Signature == CM_KEY_HASH_LEAF)
+    {
+        PCM_KEY_FAST_INDEX HashCell = (PCM_KEY_FAST_INDEX)IndexCell;
+        for (i = 0; i < HashCell->Count; i++)
+        {
+            PCM_KEY_NODE SubKeyCell = HvGetCell(RegistryHive, 
HashCell->List[i].Cell);
+            CmpPrepareKey(RegistryHive, SubKeyCell);
+        }
+    }
+    else
+    {
+        DPRINT1("IndexCell->Signature %x\n", IndexCell->Signature);
+        ASSERT(FALSE);
+    }
 }
 
 static VOID CMAPI
 CmpPrepareKey(
-   PHHIVE RegistryHive,
-   PCM_KEY_NODE KeyCell)
+    PHHIVE RegistryHive,
+    PCM_KEY_NODE KeyCell)
 {
-   PCM_KEY_INDEX IndexCell;
+    PCM_KEY_INDEX IndexCell;
 
-   ASSERT(KeyCell->Signature == CM_KEY_NODE_SIGNATURE);
+    ASSERT(KeyCell->Signature == CM_KEY_NODE_SIGNATURE);
 
-   KeyCell->SubKeyLists[Volatile] = HCELL_NIL;
-   KeyCell->SubKeyCounts[Volatile] = 0;
+    KeyCell->SubKeyLists[Volatile] = HCELL_NIL;
+    KeyCell->SubKeyCounts[Volatile] = 0;
 
-   /* Enumerate and add subkeys */
-   if (KeyCell->SubKeyCounts[Stable] > 0)
-   {
-      IndexCell = HvGetCell(RegistryHive, KeyCell->SubKeyLists[Stable]);
-      CmpPrepareIndexOfKeys(RegistryHive, IndexCell);
-   }
+    /* Enumerate and add subkeys */
+    if (KeyCell->SubKeyCounts[Stable] > 0)
+    {
+        IndexCell = HvGetCell(RegistryHive, KeyCell->SubKeyLists[Stable]);
+        CmpPrepareIndexOfKeys(RegistryHive, IndexCell);
+    }
 }
 
 VOID CMAPI
 CmPrepareHive(
-   PHHIVE RegistryHive)
+    PHHIVE RegistryHive)
 {
-   PCM_KEY_NODE RootCell;
+    PCM_KEY_NODE RootCell;
 
-   RootCell = HvGetCell(RegistryHive, RegistryHive->BaseBlock->RootCell);
-   CmpPrepareKey(RegistryHive, RootCell);
+    RootCell = HvGetCell(RegistryHive, RegistryHive->BaseBlock->RootCell);
+    CmpPrepareKey(RegistryHive, RootCell);
 }

Modified: trunk/reactos/lib/cmlib/cmlib.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmlib.h?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/cmlib.h     [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmlib.h     [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl

Modified: trunk/reactos/lib/cmlib/cmtools.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmtools.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/cmtools.c   [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmtools.c   [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl

Modified: trunk/reactos/lib/cmlib/hivebin.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivebin.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivebin.c   [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hivebin.c   [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2005 Hartmut Birr
@@ -10,98 +10,98 @@
 
 PHBIN CMAPI
 HvpAddBin(
-   PHHIVE RegistryHive,
-   ULONG Size,
-   HSTORAGE_TYPE Storage)
+    PHHIVE RegistryHive,
+    ULONG Size,
+    HSTORAGE_TYPE Storage)
 {
-   PHMAP_ENTRY BlockList;
-   PHBIN Bin;
-   SIZE_T BinSize;
-   ULONG i;
-   ULONG BitmapSize;
-   ULONG BlockCount;
-   ULONG OldBlockListSize;
-   PHCELL Block;
+    PHMAP_ENTRY BlockList;
+    PHBIN Bin;
+    SIZE_T BinSize;
+    ULONG i;
+    ULONG BitmapSize;
+    ULONG BlockCount;
+    ULONG OldBlockListSize;
+    PHCELL Block;
 
-   BinSize = ROUND_UP(Size + sizeof(HBIN), HBLOCK_SIZE);
-   BlockCount = (ULONG)(BinSize / HBLOCK_SIZE);
+    BinSize = ROUND_UP(Size + sizeof(HBIN), HBLOCK_SIZE);
+    BlockCount = (ULONG)(BinSize / HBLOCK_SIZE);
 
-   Bin = RegistryHive->Allocate(BinSize, TRUE, TAG_CM);
-   if (Bin == NULL)
-      return NULL;
-   RtlZeroMemory(Bin, BinSize);
+    Bin = RegistryHive->Allocate(BinSize, TRUE, TAG_CM);
+    if (Bin == NULL)
+        return NULL;
+    RtlZeroMemory(Bin, BinSize);
 
-   Bin->Signature = HV_BIN_SIGNATURE;
-   Bin->FileOffset = RegistryHive->Storage[Storage].Length *
-                    HBLOCK_SIZE;
-   Bin->Size = (ULONG)BinSize;
+    Bin->Signature = HV_BIN_SIGNATURE;
+    Bin->FileOffset = RegistryHive->Storage[Storage].Length *
+                      HBLOCK_SIZE;
+    Bin->Size = (ULONG)BinSize;
 
-   /* Allocate new block list */
-   OldBlockListSize = RegistryHive->Storage[Storage].Length;
-   BlockList = RegistryHive->Allocate(sizeof(HMAP_ENTRY) *
-                                      (OldBlockListSize + BlockCount),
-                                      TRUE,
-                                      TAG_CM);
-   if (BlockList == NULL)
-   {
-      RegistryHive->Free(Bin, 0);
-      return NULL;
-   }
+    /* Allocate new block list */
+    OldBlockListSize = RegistryHive->Storage[Storage].Length;
+    BlockList = RegistryHive->Allocate(sizeof(HMAP_ENTRY) *
+                                       (OldBlockListSize + BlockCount),
+                                       TRUE,
+                                       TAG_CM);
+    if (BlockList == NULL)
+    {
+        RegistryHive->Free(Bin, 0);
+        return NULL;
+    }
 
-   if (OldBlockListSize > 0)
-   {
-      RtlCopyMemory(BlockList, RegistryHive->Storage[Storage].BlockList,
-                    OldBlockListSize * sizeof(HMAP_ENTRY));
-      RegistryHive->Free(RegistryHive->Storage[Storage].BlockList, 0);
-   }
+    if (OldBlockListSize > 0)
+    {
+        RtlCopyMemory(BlockList, RegistryHive->Storage[Storage].BlockList,
+                      OldBlockListSize * sizeof(HMAP_ENTRY));
+        RegistryHive->Free(RegistryHive->Storage[Storage].BlockList, 0);
+    }
 
-   RegistryHive->Storage[Storage].BlockList = BlockList;
-   RegistryHive->Storage[Storage].Length += BlockCount;
+    RegistryHive->Storage[Storage].BlockList = BlockList;
+    RegistryHive->Storage[Storage].Length += BlockCount;
 
-   for (i = 0; i < BlockCount; i++)
-   {
-      RegistryHive->Storage[Storage].BlockList[OldBlockListSize + 
i].BlockAddress =
-         ((ULONG_PTR)Bin + (i * HBLOCK_SIZE));
-      RegistryHive->Storage[Storage].BlockList[OldBlockListSize + 
i].BinAddress = (ULONG_PTR)Bin;
-   }
+    for (i = 0; i < BlockCount; i++)
+    {
+        RegistryHive->Storage[Storage].BlockList[OldBlockListSize + 
i].BlockAddress =
+            ((ULONG_PTR)Bin + (i * HBLOCK_SIZE));
+        RegistryHive->Storage[Storage].BlockList[OldBlockListSize + 
i].BinAddress = (ULONG_PTR)Bin;
+    }
 
-   /* Initialize a free block in this heap. */
-   Block = (PHCELL)(Bin + 1);
-   Block->Size = (LONG)(BinSize - sizeof(HBIN));
+    /* Initialize a free block in this heap. */
+    Block = (PHCELL)(Bin + 1);
+    Block->Size = (LONG)(BinSize - sizeof(HBIN));
 
-   if (Storage == Stable)
-   {
-      /* Calculate bitmap size in bytes (always a multiple of 32 bits). */
-      BitmapSize = ROUND_UP(RegistryHive->Storage[Stable].Length,
-                            sizeof(ULONG) * 8) / 8;
+    if (Storage == Stable)
+    {
+        /* Calculate bitmap size in bytes (always a multiple of 32 bits). */
+        BitmapSize = ROUND_UP(RegistryHive->Storage[Stable].Length,
+                              sizeof(ULONG) * 8) / 8;
 
-      /* Grow bitmap if necessary. */
-      if (BitmapSize > RegistryHive->DirtyVector.SizeOfBitMap / 8)
-      {
-         PULONG BitmapBuffer;
+        /* Grow bitmap if necessary. */
+        if (BitmapSize > RegistryHive->DirtyVector.SizeOfBitMap / 8)
+        {
+            PULONG BitmapBuffer;
 
-         BitmapBuffer = RegistryHive->Allocate(BitmapSize, TRUE, TAG_CM);
-         RtlZeroMemory(BitmapBuffer, BitmapSize);
-         if (RegistryHive->DirtyVector.SizeOfBitMap > 0)
-         {
-            ASSERT(RegistryHive->DirtyVector.Buffer);
-            RtlCopyMemory(BitmapBuffer,
-                          RegistryHive->DirtyVector.Buffer,
-                          RegistryHive->DirtyVector.SizeOfBitMap / 8);
-            RegistryHive->Free(RegistryHive->DirtyVector.Buffer, 0);
-         }
-         RtlInitializeBitMap(&RegistryHive->DirtyVector, BitmapBuffer,
-                             BitmapSize * 8);
-      }
+            BitmapBuffer = RegistryHive->Allocate(BitmapSize, TRUE, TAG_CM);
+            RtlZeroMemory(BitmapBuffer, BitmapSize);
+            if (RegistryHive->DirtyVector.SizeOfBitMap > 0)
+            {
+                ASSERT(RegistryHive->DirtyVector.Buffer);
+                RtlCopyMemory(BitmapBuffer,
+                              RegistryHive->DirtyVector.Buffer,
+                              RegistryHive->DirtyVector.SizeOfBitMap / 8);
+                RegistryHive->Free(RegistryHive->DirtyVector.Buffer, 0);
+            }
+            RtlInitializeBitMap(&RegistryHive->DirtyVector, BitmapBuffer,
+                                BitmapSize * 8);
+        }
 
-      /* Mark new bin dirty. */
-      RtlSetBits(&RegistryHive->DirtyVector,
-                 Bin->FileOffset / HBLOCK_SIZE,
-                 BlockCount);
+        /* Mark new bin dirty. */
+        RtlSetBits(&RegistryHive->DirtyVector,
+                   Bin->FileOffset / HBLOCK_SIZE,
+                   BlockCount);
 
-      /* Update size in the base block */
-      RegistryHive->BaseBlock->Length += BinSize;
-   }
+        /* Update size in the base block */
+        RegistryHive->BaseBlock->Length += BinSize;
+    }
 
-   return Bin;
+    return Bin;
 }

Modified: trunk/reactos/lib/cmlib/hivecell.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivecell.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivecell.c  [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hivecell.c  [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl
@@ -11,514 +11,515 @@
 
 static __inline PHCELL CMAPI
 HvpGetCellHeader(
-   PHHIVE RegistryHive,
-   HCELL_INDEX CellIndex)
-{
-   PVOID Block;
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx\n",
-       __FUNCTION__, RegistryHive, CellIndex);
-
-   ASSERT(CellIndex != HCELL_NIL);
-   if (!RegistryHive->Flat)
-   {
-      ULONG CellType;
-      ULONG CellBlock;
-      ULONG CellOffset;
-
-      CellType = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
-      CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
-      CellOffset = (CellIndex & HCELL_OFFSET_MASK) >> HCELL_OFFSET_SHIFT;
-      ASSERT(CellBlock < RegistryHive->Storage[CellType].Length);
-      Block = 
(PVOID)RegistryHive->Storage[CellType].BlockList[CellBlock].BlockAddress;
-      ASSERT(Block != NULL);
-      return (PVOID)((ULONG_PTR)Block + CellOffset);
-   }
-   else
-   {
-      ASSERT((CellIndex & HCELL_TYPE_MASK) == Stable);
-      return (PVOID)((ULONG_PTR)RegistryHive->BaseBlock + HBLOCK_SIZE +
-                     CellIndex);
-   }
+    PHHIVE RegistryHive,
+    HCELL_INDEX CellIndex)
+{
+    PVOID Block;
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx\n",
+             __FUNCTION__, RegistryHive, CellIndex);
+
+    ASSERT(CellIndex != HCELL_NIL);
+    if (!RegistryHive->Flat)
+    {
+        ULONG CellType;
+        ULONG CellBlock;
+        ULONG CellOffset;
+
+        CellType = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
+        CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
+        CellOffset = (CellIndex & HCELL_OFFSET_MASK) >> HCELL_OFFSET_SHIFT;
+        ASSERT(CellBlock < RegistryHive->Storage[CellType].Length);
+        Block = 
(PVOID)RegistryHive->Storage[CellType].BlockList[CellBlock].BlockAddress;
+        ASSERT(Block != NULL);
+        return (PVOID)((ULONG_PTR)Block + CellOffset);
+    }
+    else
+    {
+        ASSERT((CellIndex & HCELL_TYPE_MASK) == Stable);
+        return (PVOID)((ULONG_PTR)RegistryHive->BaseBlock + HBLOCK_SIZE +
+                       CellIndex);
+    }
 }
 
 BOOLEAN CMAPI
 HvIsCellAllocated(IN PHHIVE RegistryHive,
                   IN HCELL_INDEX CellIndex)
 {
-   ULONG Type, Block;
-
-   /* If it's a flat hive, the cell is always allocated */
-   if (RegistryHive->Flat)
-      return TRUE;
-
-   /* Otherwise, get the type and make sure it's valid */
-   Type = HvGetCellType(CellIndex);
-   Block = HvGetCellBlock(CellIndex);
-   if (Block >= RegistryHive->Storage[Type].Length)
-      return FALSE;
-
-   /* Try to get the cell block */
-   if (RegistryHive->Storage[Type].BlockList[Block].BlockAddress)
-      return TRUE;
-
-   /* No valid block, fail */
-   return FALSE;
+    ULONG Type, Block;
+
+    /* If it's a flat hive, the cell is always allocated */
+    if (RegistryHive->Flat)
+        return TRUE;
+
+    /* Otherwise, get the type and make sure it's valid */
+    Type = HvGetCellType(CellIndex);
+    Block = HvGetCellBlock(CellIndex);
+    if (Block >= RegistryHive->Storage[Type].Length)
+        return FALSE;
+
+    /* Try to get the cell block */
+    if (RegistryHive->Storage[Type].BlockList[Block].BlockAddress)
+        return TRUE;
+
+    /* No valid block, fail */
+    return FALSE;
 }
 
 PVOID CMAPI
 HvGetCell(
-   PHHIVE RegistryHive,
-   HCELL_INDEX CellIndex)
-{
-   ASSERT(CellIndex != HCELL_NIL);
-   return (PVOID)(HvpGetCellHeader(RegistryHive, CellIndex) + 1);
+    PHHIVE RegistryHive,
+    HCELL_INDEX CellIndex)
+{
+    ASSERT(CellIndex != HCELL_NIL);
+    return (PVOID)(HvpGetCellHeader(RegistryHive, CellIndex) + 1);
 }
 
 static __inline LONG CMAPI
 HvpGetCellFullSize(
-   PHHIVE RegistryHive,
-   PVOID Cell)
-{
-   UNREFERENCED_PARAMETER(RegistryHive);
-   return ((PHCELL)Cell - 1)->Size;
+    PHHIVE RegistryHive,
+    PVOID Cell)
+{
+    UNREFERENCED_PARAMETER(RegistryHive);
+    return ((PHCELL)Cell - 1)->Size;
 }
 
 LONG CMAPI
 HvGetCellSize(IN PHHIVE Hive,
               IN PVOID Address)
 {
-   PHCELL CellHeader;
-   LONG Size;
-
-   UNREFERENCED_PARAMETER(Hive);
-
-   CellHeader = (PHCELL)Address - 1;
-   Size = CellHeader->Size * -1;
-   Size -= sizeof(HCELL);
-   return Size;
+    PHCELL CellHeader;
+    LONG Size;
+
+    UNREFERENCED_PARAMETER(Hive);
+
+    CellHeader = (PHCELL)Address - 1;
+    Size = CellHeader->Size * -1;
+    Size -= sizeof(HCELL);
+    return Size;
 }
 
 BOOLEAN CMAPI
 HvMarkCellDirty(
-   PHHIVE RegistryHive,
-   HCELL_INDEX CellIndex,
-   BOOLEAN HoldingLock)
-{
-   ULONG CellBlock;
-   ULONG CellLastBlock;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx, HoldingLock 
%u\n",
-       __FUNCTION__, RegistryHive, CellIndex, HoldingLock);
-
-   if ((CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT != Stable)
-      return TRUE;
-
-   CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
-   CellLastBlock = ((CellIndex + HBLOCK_SIZE - 1) & HCELL_BLOCK_MASK) >> 
HCELL_BLOCK_SHIFT;
-
-   RtlSetBits(&RegistryHive->DirtyVector,
-              CellBlock, CellLastBlock - CellBlock);
-   RegistryHive->DirtyCount++;
-   return TRUE;
+    PHHIVE RegistryHive,
+    HCELL_INDEX CellIndex,
+    BOOLEAN HoldingLock)
+{
+    ULONG CellBlock;
+    ULONG CellLastBlock;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx, HoldingLock 
%u\n",
+             __FUNCTION__, RegistryHive, CellIndex, HoldingLock);
+
+    if ((CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT != Stable)
+        return TRUE;
+
+    CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
+    CellLastBlock = ((CellIndex + HBLOCK_SIZE - 1) & HCELL_BLOCK_MASK) >> 
HCELL_BLOCK_SHIFT;
+
+    RtlSetBits(&RegistryHive->DirtyVector,
+               CellBlock, CellLastBlock - CellBlock);
+    RegistryHive->DirtyCount++;
+    return TRUE;
 }
 
 BOOLEAN CMAPI
 HvIsCellDirty(IN PHHIVE Hive,
               IN HCELL_INDEX Cell)
 {
-   BOOLEAN IsDirty = FALSE;
-
-   /* Sanity checks */
-   ASSERT(Hive->ReadOnly == FALSE);
-
-   /* Volatile cells are always "dirty" */
-   if (HvGetCellType(Cell) == Volatile)
-      return TRUE;
-
-   /* Check if the dirty bit is set */
-   if (RtlCheckBit(&Hive->DirtyVector, Cell / HBLOCK_SIZE))
-       IsDirty = TRUE;
-
-   /* Return result as boolean*/
-   return IsDirty;
+    BOOLEAN IsDirty = FALSE;
+
+    /* Sanity checks */
+    ASSERT(Hive->ReadOnly == FALSE);
+
+    /* Volatile cells are always "dirty" */
+    if (HvGetCellType(Cell) == Volatile)
+        return TRUE;
+
+    /* Check if the dirty bit is set */
+    if (RtlCheckBit(&Hive->DirtyVector, Cell / HBLOCK_SIZE))
+        IsDirty = TRUE;
+
+    /* Return result as boolean*/
+    return IsDirty;
 }
 
 static __inline ULONG CMAPI
 HvpComputeFreeListIndex(
-   ULONG Size)
-{
-   ULONG Index;
-   static CCHAR FindFirstSet[128] = {
-      0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
-      4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6};
-
-   ASSERT(Size >= (1 << 3));
-   Index = (Size >> 3) - 1;
-   if (Index >= 16)
-   {
-      if (Index > 127)
-         Index = 23;
-      else
-         Index = FindFirstSet[Index] + 16;
-   }
-
-   return Index;
+    ULONG Size)
+{
+    ULONG Index;
+    static CCHAR FindFirstSet[128] = {
+        0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
+        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6};
+
+    ASSERT(Size >= (1 << 3));
+    Index = (Size >> 3) - 1;
+    if (Index >= 16)
+    {
+        if (Index > 127)
+            Index = 23;
+        else
+            Index = FindFirstSet[Index] + 16;
+    }
+
+    return Index;
 }
 
 static NTSTATUS CMAPI
 HvpAddFree(
-   PHHIVE RegistryHive,
-   PHCELL FreeBlock,
-   HCELL_INDEX FreeIndex)
-{
-   PHCELL_INDEX FreeBlockData;
-   HSTORAGE_TYPE Storage;
-   ULONG Index;
-
-   ASSERT(RegistryHive != NULL);
-   ASSERT(FreeBlock != NULL);
-
-   Storage = (FreeIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
-   Index = HvpComputeFreeListIndex((ULONG)FreeBlock->Size);
-
-   FreeBlockData = (PHCELL_INDEX)(FreeBlock + 1);
-   *FreeBlockData = RegistryHive->Storage[Storage].FreeDisplay[Index];
-   RegistryHive->Storage[Storage].FreeDisplay[Index] = FreeIndex;
-
-   /* FIXME: Eventually get rid of free bins. */
-
-   return STATUS_SUCCESS;
+    PHHIVE RegistryHive,
+    PHCELL FreeBlock,
+    HCELL_INDEX FreeIndex)
+{
+    PHCELL_INDEX FreeBlockData;
+    HSTORAGE_TYPE Storage;
+    ULONG Index;
+
+    ASSERT(RegistryHive != NULL);
+    ASSERT(FreeBlock != NULL);
+
+    Storage = (FreeIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
+    Index = HvpComputeFreeListIndex((ULONG)FreeBlock->Size);
+
+    FreeBlockData = (PHCELL_INDEX)(FreeBlock + 1);
+    *FreeBlockData = RegistryHive->Storage[Storage].FreeDisplay[Index];
+    RegistryHive->Storage[Storage].FreeDisplay[Index] = FreeIndex;
+
+    /* FIXME: Eventually get rid of free bins. */
+
+    return STATUS_SUCCESS;
 }
 
 static VOID CMAPI
 HvpRemoveFree(
-   PHHIVE RegistryHive,
-   PHCELL CellBlock,
-   HCELL_INDEX CellIndex)
-{
-   PHCELL_INDEX FreeCellData;
-   PHCELL_INDEX pFreeCellOffset;
-   HSTORAGE_TYPE Storage;
-   ULONG Index, FreeListIndex;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   Storage = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
-   Index = HvpComputeFreeListIndex((ULONG)CellBlock->Size);
-
-   pFreeCellOffset = &RegistryHive->Storage[Storage].FreeDisplay[Index];
-   while (*pFreeCellOffset != HCELL_NIL)
-   {
-      FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, *pFreeCellOffset);
-      if (*pFreeCellOffset == CellIndex)
-      {
-         *pFreeCellOffset = *FreeCellData;
-         return;
-      }
-      pFreeCellOffset = FreeCellData;
-   }
-
-   /* Something bad happened, print a useful trace info and bugcheck */
-   CMLTRACE(CMLIB_HCELL_DEBUG, "-- beginning of HvpRemoveFree trace --\n");
-   CMLTRACE(CMLIB_HCELL_DEBUG, "block we are about to free: %08x\n", 
CellIndex);
-   CMLTRACE(CMLIB_HCELL_DEBUG, "chosen free list index: %u\n", Index);
-   for (FreeListIndex = 0; FreeListIndex < 24; FreeListIndex++)
-   {
-      CMLTRACE(CMLIB_HCELL_DEBUG, "free list [%u]: ", FreeListIndex);
-      pFreeCellOffset = 
&RegistryHive->Storage[Storage].FreeDisplay[FreeListIndex];
-      while (*pFreeCellOffset != HCELL_NIL)
-      {
-         CMLTRACE(CMLIB_HCELL_DEBUG, "%08x ", *pFreeCellOffset);
-         FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, 
*pFreeCellOffset);
-         pFreeCellOffset = FreeCellData;
-      }
-      CMLTRACE(CMLIB_HCELL_DEBUG, "\n");
-   }
-   CMLTRACE(CMLIB_HCELL_DEBUG, "-- end of HvpRemoveFree trace --\n");
-
-   ASSERT(FALSE);
+    PHHIVE RegistryHive,
+    PHCELL CellBlock,
+    HCELL_INDEX CellIndex)
+{
+    PHCELL_INDEX FreeCellData;
+    PHCELL_INDEX pFreeCellOffset;
+    HSTORAGE_TYPE Storage;
+    ULONG Index, FreeListIndex;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    Storage = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
+    Index = HvpComputeFreeListIndex((ULONG)CellBlock->Size);
+
+    pFreeCellOffset = &RegistryHive->Storage[Storage].FreeDisplay[Index];
+    while (*pFreeCellOffset != HCELL_NIL)
+    {
+        FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, *pFreeCellOffset);
+        if (*pFreeCellOffset == CellIndex)
+        {
+            *pFreeCellOffset = *FreeCellData;
+            return;
+        }
+        pFreeCellOffset = FreeCellData;
+    }
+
+    /* Something bad happened, print a useful trace info and bugcheck */
+    CMLTRACE(CMLIB_HCELL_DEBUG, "-- beginning of HvpRemoveFree trace --\n");
+    CMLTRACE(CMLIB_HCELL_DEBUG, "block we are about to free: %08x\n", 
CellIndex);
+    CMLTRACE(CMLIB_HCELL_DEBUG, "chosen free list index: %u\n", Index);
+    for (FreeListIndex = 0; FreeListIndex < 24; FreeListIndex++)
+    {
+        CMLTRACE(CMLIB_HCELL_DEBUG, "free list [%u]: ", FreeListIndex);
+        pFreeCellOffset = 
&RegistryHive->Storage[Storage].FreeDisplay[FreeListIndex];
+        while (*pFreeCellOffset != HCELL_NIL)
+        {
+            CMLTRACE(CMLIB_HCELL_DEBUG, "%08x ", *pFreeCellOffset);
+            FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, 
*pFreeCellOffset);
+            pFreeCellOffset = FreeCellData;
+        }
+        CMLTRACE(CMLIB_HCELL_DEBUG, "\n");
+    }
+    CMLTRACE(CMLIB_HCELL_DEBUG, "-- end of HvpRemoveFree trace --\n");
+
+    ASSERT(FALSE);
 }
 
 static HCELL_INDEX CMAPI
 HvpFindFree(
-   PHHIVE RegistryHive,
-   ULONG Size,
-   HSTORAGE_TYPE Storage)
-{
-   PHCELL_INDEX FreeCellData;
-   HCELL_INDEX FreeCellOffset;
-   PHCELL_INDEX pFreeCellOffset;
-   ULONG Index;
-
-   for (Index = HvpComputeFreeListIndex(Size); Index < 24; Index++)
-   {
-      pFreeCellOffset = &RegistryHive->Storage[Storage].FreeDisplay[Index];
-      while (*pFreeCellOffset != HCELL_NIL)
-      {
-         FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, 
*pFreeCellOffset);
-         if ((ULONG)HvpGetCellFullSize(RegistryHive, FreeCellData) >= Size)
-         {
-            FreeCellOffset = *pFreeCellOffset;
-            *pFreeCellOffset = *FreeCellData;
-            return FreeCellOffset;
-         }
-         pFreeCellOffset = FreeCellData;
-      }
-   }
-
-   return HCELL_NIL;
+    PHHIVE RegistryHive,
+    ULONG Size,
+    HSTORAGE_TYPE Storage)
+{
+    PHCELL_INDEX FreeCellData;
+    HCELL_INDEX FreeCellOffset;
+    PHCELL_INDEX pFreeCellOffset;
+    ULONG Index;
+
+    for (Index = HvpComputeFreeListIndex(Size); Index < 24; Index++)
+    {
+        pFreeCellOffset = &RegistryHive->Storage[Storage].FreeDisplay[Index];
+        while (*pFreeCellOffset != HCELL_NIL)
+        {
+            FreeCellData = (PHCELL_INDEX)HvGetCell(RegistryHive, 
*pFreeCellOffset);
+            if ((ULONG)HvpGetCellFullSize(RegistryHive, FreeCellData) >= Size)
+            {
+                FreeCellOffset = *pFreeCellOffset;
+                *pFreeCellOffset = *FreeCellData;
+                return FreeCellOffset;
+            }
+            pFreeCellOffset = FreeCellData;
+        }
+    }
+
+    return HCELL_NIL;
 }
 
 NTSTATUS CMAPI
 HvpCreateHiveFreeCellList(
-   PHHIVE Hive)
-{
-   HCELL_INDEX BlockOffset;
-   PHCELL FreeBlock;
-   ULONG BlockIndex;
-   ULONG FreeOffset;
-   PHBIN Bin;
-   NTSTATUS Status;
-   ULONG Index;
-
-   /* Initialize the free cell list */
-   for (Index = 0; Index < 24; Index++)
-   {
-      Hive->Storage[Stable].FreeDisplay[Index] = HCELL_NIL;
-      Hive->Storage[Volatile].FreeDisplay[Index] = HCELL_NIL;
-   }
-
-   BlockOffset = 0;
-   BlockIndex = 0;
-   while (BlockIndex < Hive->Storage[Stable].Length)
-   {
-      Bin = (PHBIN)Hive->Storage[Stable].BlockList[BlockIndex].BinAddress;
-
-      /* Search free blocks and add to list */
-      FreeOffset = sizeof(HBIN);
-      while (FreeOffset < Bin->Size)
-      {
-         FreeBlock = (PHCELL)((ULONG_PTR)Bin + FreeOffset);
-         if (FreeBlock->Size > 0)
-         {
-            Status = HvpAddFree(Hive, FreeBlock, Bin->FileOffset + FreeOffset);
-            if (!NT_SUCCESS(Status))
-               return Status;
-
-            FreeOffset += FreeBlock->Size;
-         }
-         else
-         {
-            FreeOffset -= FreeBlock->Size;
-         }
-      }
-
-      BlockIndex += Bin->Size / HBLOCK_SIZE;
-      BlockOffset += Bin->Size;
-   }
-
-   return STATUS_SUCCESS;
+    PHHIVE Hive)
+{
+    HCELL_INDEX BlockOffset;
+    PHCELL FreeBlock;
+    ULONG BlockIndex;
+    ULONG FreeOffset;
+    PHBIN Bin;
+    NTSTATUS Status;
+    ULONG Index;
+
+    /* Initialize the free cell list */
+    for (Index = 0; Index < 24; Index++)
+    {
+        Hive->Storage[Stable].FreeDisplay[Index] = HCELL_NIL;
+        Hive->Storage[Volatile].FreeDisplay[Index] = HCELL_NIL;
+    }
+
+    BlockOffset = 0;
+    BlockIndex = 0;
+    while (BlockIndex < Hive->Storage[Stable].Length)
+    {
+        Bin = (PHBIN)Hive->Storage[Stable].BlockList[BlockIndex].BinAddress;
+
+        /* Search free blocks and add to list */
+        FreeOffset = sizeof(HBIN);
+        while (FreeOffset < Bin->Size)
+        {
+            FreeBlock = (PHCELL)((ULONG_PTR)Bin + FreeOffset);
+            if (FreeBlock->Size > 0)
+            {
+                Status = HvpAddFree(Hive, FreeBlock, Bin->FileOffset + 
FreeOffset);
+                if (!NT_SUCCESS(Status))
+                    return Status;
+
+                FreeOffset += FreeBlock->Size;
+            }
+            else
+            {
+                FreeOffset -= FreeBlock->Size;
+            }
+        }
+
+        BlockIndex += Bin->Size / HBLOCK_SIZE;
+        BlockOffset += Bin->Size;
+    }
+
+    return STATUS_SUCCESS;
 }
 
 HCELL_INDEX CMAPI
 HvAllocateCell(
-   PHHIVE RegistryHive,
-   ULONG Size,
-   HSTORAGE_TYPE Storage,
-   HCELL_INDEX Vicinity)
-{
-   PHCELL FreeCell;
-   HCELL_INDEX FreeCellOffset;
-   PHCELL NewCell;
-   PHBIN Bin;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, Size %x, %s, Vicinity %08lx\n",
-       __FUNCTION__, RegistryHive, Size, (Storage == 0) ? "Stable" : 
"Volatile", Vicinity);
-
-   /* Round to 16 bytes multiple. */
-   Size = ROUND_UP(Size + sizeof(HCELL), 16);
-
-   /* First search in free blocks. */
-   FreeCellOffset = HvpFindFree(RegistryHive, Size, Storage);
-
-   /* If no free cell was found we need to extend the hive file. */
-   if (FreeCellOffset == HCELL_NIL)
-   {
-      Bin = HvpAddBin(RegistryHive, Size, Storage);
-      if (Bin == NULL)
-         return HCELL_NIL;
-      FreeCellOffset = Bin->FileOffset + sizeof(HBIN);
-      FreeCellOffset |= Storage << HCELL_TYPE_SHIFT;
-   }
-
-   FreeCell = HvpGetCellHeader(RegistryHive, FreeCellOffset);
-
-   /* Split the block in two parts */
-
-   /* The free block that is created has to be at least
-      sizeof(HCELL) + sizeof(HCELL_INDEX) big, so that free
-      cell list code can work. Moreover we round cell sizes
-      to 16 bytes, so creating a smaller block would result in
-      a cell that would never be allocated. */
-   if ((ULONG)FreeCell->Size > Size + 16)
-   {
-      NewCell = (PHCELL)((ULONG_PTR)FreeCell + Size);
-      NewCell->Size = FreeCell->Size - Size;
-      FreeCell->Size = Size;
-      HvpAddFree(RegistryHive, NewCell, FreeCellOffset + Size);
-      if (Storage == Stable)
-         HvMarkCellDirty(RegistryHive, FreeCellOffset + Size, FALSE);
-   }
-
-   if (Storage == Stable)
-      HvMarkCellDirty(RegistryHive, FreeCellOffset, FALSE);
-   FreeCell->Size = -FreeCell->Size;
-   RtlZeroMemory(FreeCell + 1, Size - sizeof(HCELL));
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - CellIndex %08lx\n",
-       __FUNCTION__, FreeCellOffset);
-
-   return FreeCellOffset;
+    PHHIVE RegistryHive,
+    ULONG Size,
+    HSTORAGE_TYPE Storage,
+    HCELL_INDEX Vicinity)
+{
+    PHCELL FreeCell;
+    HCELL_INDEX FreeCellOffset;
+    PHCELL NewCell;
+    PHBIN Bin;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, Size %x, %s, Vicinity %08lx\n",
+             __FUNCTION__, RegistryHive, Size, (Storage == 0) ? "Stable" : 
"Volatile", Vicinity);
+
+    /* Round to 16 bytes multiple. */
+    Size = ROUND_UP(Size + sizeof(HCELL), 16);
+
+    /* First search in free blocks. */
+    FreeCellOffset = HvpFindFree(RegistryHive, Size, Storage);
+
+    /* If no free cell was found we need to extend the hive file. */
+    if (FreeCellOffset == HCELL_NIL)
+    {
+        Bin = HvpAddBin(RegistryHive, Size, Storage);
+        if (Bin == NULL)
+            return HCELL_NIL;
+        FreeCellOffset = Bin->FileOffset + sizeof(HBIN);
+        FreeCellOffset |= Storage << HCELL_TYPE_SHIFT;
+    }
+
+    FreeCell = HvpGetCellHeader(RegistryHive, FreeCellOffset);
+
+    /* Split the block in two parts */
+
+    /* The free block that is created has to be at least
+       sizeof(HCELL) + sizeof(HCELL_INDEX) big, so that free
+       cell list code can work. Moreover we round cell sizes
+       to 16 bytes, so creating a smaller block would result in
+       a cell that would never be allocated. */
+    if ((ULONG)FreeCell->Size > Size + 16)
+    {
+        NewCell = (PHCELL)((ULONG_PTR)FreeCell + Size);
+        NewCell->Size = FreeCell->Size - Size;
+        FreeCell->Size = Size;
+        HvpAddFree(RegistryHive, NewCell, FreeCellOffset + Size);
+        if (Storage == Stable)
+            HvMarkCellDirty(RegistryHive, FreeCellOffset + Size, FALSE);
+    }
+
+    if (Storage == Stable)
+        HvMarkCellDirty(RegistryHive, FreeCellOffset, FALSE);
+
+    FreeCell->Size = -FreeCell->Size;
+    RtlZeroMemory(FreeCell + 1, Size - sizeof(HCELL));
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - CellIndex %08lx\n",
+             __FUNCTION__, FreeCellOffset);
+
+    return FreeCellOffset;
 }
 
 HCELL_INDEX CMAPI
 HvReallocateCell(
-   PHHIVE RegistryHive,
-   HCELL_INDEX CellIndex,
-   ULONG Size)
-{
-   PVOID OldCell;
-   PVOID NewCell;
-   LONG OldCellSize;
-   HCELL_INDEX NewCellIndex;
-   HSTORAGE_TYPE Storage;
-
-   ASSERT(CellIndex != HCELL_NIL);
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx, Size %x\n",
-       __FUNCTION__, RegistryHive, CellIndex, Size);
-
-   Storage = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
-
-   OldCell = HvGetCell(RegistryHive, CellIndex);
-   OldCellSize = HvGetCellSize(RegistryHive, OldCell);
-   ASSERT(OldCellSize > 0);
-
-   /*
-    * If new data size is larger than the current, destroy current
-    * data block and allocate a new one.
-    *
-    * FIXME: Merge with adjacent free cell if possible.
-    * FIXME: Implement shrinking.
-    */
-   if (Size > (ULONG)OldCellSize)
-   {
-      NewCellIndex = HvAllocateCell(RegistryHive, Size, Storage, HCELL_NIL);
-      if (NewCellIndex == HCELL_NIL)
-         return HCELL_NIL;
-
-      NewCell = HvGetCell(RegistryHive, NewCellIndex);
-      RtlCopyMemory(NewCell, OldCell, (SIZE_T)OldCellSize);
-
-      HvFreeCell(RegistryHive, CellIndex);
-
-      return NewCellIndex;
-   }
-
-   return CellIndex;
+    PHHIVE RegistryHive,
+    HCELL_INDEX CellIndex,
+    ULONG Size)
+{
+    PVOID OldCell;
+    PVOID NewCell;
+    LONG OldCellSize;
+    HCELL_INDEX NewCellIndex;
+    HSTORAGE_TYPE Storage;
+
+    ASSERT(CellIndex != HCELL_NIL);
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx, Size %x\n",
+             __FUNCTION__, RegistryHive, CellIndex, Size);
+
+    Storage = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
+
+    OldCell = HvGetCell(RegistryHive, CellIndex);
+    OldCellSize = HvGetCellSize(RegistryHive, OldCell);
+    ASSERT(OldCellSize > 0);
+
+    /*
+     * If new data size is larger than the current, destroy current
+     * data block and allocate a new one.
+     *
+     * FIXME: Merge with adjacent free cell if possible.
+     * FIXME: Implement shrinking.
+     */
+    if (Size > (ULONG)OldCellSize)
+    {
+        NewCellIndex = HvAllocateCell(RegistryHive, Size, Storage, HCELL_NIL);
+        if (NewCellIndex == HCELL_NIL)
+            return HCELL_NIL;
+
+        NewCell = HvGetCell(RegistryHive, NewCellIndex);
+        RtlCopyMemory(NewCell, OldCell, (SIZE_T)OldCellSize);
+
+        HvFreeCell(RegistryHive, CellIndex);
+
+        return NewCellIndex;
+    }
+
+    return CellIndex;
 }
 
 VOID CMAPI
 HvFreeCell(
-   PHHIVE RegistryHive,
-   HCELL_INDEX CellIndex)
-{
-   PHCELL Free;
-   PHCELL Neighbor;
-   PHBIN Bin;
-   ULONG CellType;
-   ULONG CellBlock;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx\n",
-       __FUNCTION__, RegistryHive, CellIndex);
-
-   Free = HvpGetCellHeader(RegistryHive, CellIndex);
-
-   ASSERT(Free->Size < 0);
-
-   Free->Size = -Free->Size;
-
-   CellType = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
-   CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
-
-   /* FIXME: Merge free blocks */
-   Bin = 
(PHBIN)RegistryHive->Storage[CellType].BlockList[CellBlock].BinAddress;
-
-   if ((CellIndex & ~HCELL_TYPE_MASK) + Free->Size <
-       Bin->FileOffset + Bin->Size)
-   {
-      Neighbor = (PHCELL)((ULONG_PTR)Free + Free->Size);
-      if (Neighbor->Size > 0)
-      {
-         HvpRemoveFree(RegistryHive, Neighbor,
-                       ((HCELL_INDEX)((ULONG_PTR)Neighbor - (ULONG_PTR)Bin +
-                       Bin->FileOffset)) | (CellIndex & HCELL_TYPE_MASK));
-         Free->Size += Neighbor->Size;
-      }
-   }
-
-   Neighbor = (PHCELL)(Bin + 1);
-   while (Neighbor < Free)
-   {
-      if (Neighbor->Size > 0)
-      {
-         if ((ULONG_PTR)Neighbor + Neighbor->Size == (ULONG_PTR)Free)
-         {
-            HCELL_INDEX NeighborCellIndex =
-               (HCELL_INDEX)((ULONG_PTR)Neighbor - (ULONG_PTR)Bin +
-               Bin->FileOffset) | (CellIndex & HCELL_TYPE_MASK);
-
-            if (HvpComputeFreeListIndex(Neighbor->Size) !=
-                HvpComputeFreeListIndex(Neighbor->Size + Free->Size))
+    PHHIVE RegistryHive,
+    HCELL_INDEX CellIndex)
+{
+    PHCELL Free;
+    PHCELL Neighbor;
+    PHBIN Bin;
+    ULONG CellType;
+    ULONG CellBlock;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    CMLTRACE(CMLIB_HCELL_DEBUG, "%s - Hive %p, CellIndex %08lx\n",
+             __FUNCTION__, RegistryHive, CellIndex);
+
+    Free = HvpGetCellHeader(RegistryHive, CellIndex);
+
+    ASSERT(Free->Size < 0);
+
+    Free->Size = -Free->Size;
+
+    CellType = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;
+    CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;
+
+    /* FIXME: Merge free blocks */
+    Bin = 
(PHBIN)RegistryHive->Storage[CellType].BlockList[CellBlock].BinAddress;
+
+    if ((CellIndex & ~HCELL_TYPE_MASK) + Free->Size <
+        Bin->FileOffset + Bin->Size)
+    {
+        Neighbor = (PHCELL)((ULONG_PTR)Free + Free->Size);
+        if (Neighbor->Size > 0)
+        {
+            HvpRemoveFree(RegistryHive, Neighbor,
+                          ((HCELL_INDEX)((ULONG_PTR)Neighbor - (ULONG_PTR)Bin +
+                            Bin->FileOffset)) | (CellIndex & HCELL_TYPE_MASK));
+            Free->Size += Neighbor->Size;
+        }
+    }
+
+    Neighbor = (PHCELL)(Bin + 1);
+    while (Neighbor < Free)
+    {
+        if (Neighbor->Size > 0)
+        {
+            if ((ULONG_PTR)Neighbor + Neighbor->Size == (ULONG_PTR)Free)
             {
-               HvpRemoveFree(RegistryHive, Neighbor, NeighborCellIndex);
-               Neighbor->Size += Free->Size;
-               HvpAddFree(RegistryHive, Neighbor, NeighborCellIndex);
+                HCELL_INDEX NeighborCellIndex =
+                    ((HCELL_INDEX)((ULONG_PTR)Neighbor - (ULONG_PTR)Bin +
+                     Bin->FileOffset)) | (CellIndex & HCELL_TYPE_MASK);
+
+                if (HvpComputeFreeListIndex(Neighbor->Size) !=
+                    HvpComputeFreeListIndex(Neighbor->Size + Free->Size))
+                {
+                   HvpRemoveFree(RegistryHive, Neighbor, NeighborCellIndex);
+                   Neighbor->Size += Free->Size;
+                   HvpAddFree(RegistryHive, Neighbor, NeighborCellIndex);
+                }
+                else
+                    Neighbor->Size += Free->Size;
+
+                if (CellType == Stable)
+                    HvMarkCellDirty(RegistryHive, NeighborCellIndex, FALSE);
+
+                return;
             }
-            else
-               Neighbor->Size += Free->Size;
-
-            if (CellType == Stable)
-               HvMarkCellDirty(RegistryHive, NeighborCellIndex, FALSE);
-
-            return;
-         }
-         Neighbor = (PHCELL)((ULONG_PTR)Neighbor + Neighbor->Size);
-      }
-      else
-      {
-         Neighbor = (PHCELL)((ULONG_PTR)Neighbor - Neighbor->Size);
-      }
-   }
-
-   /* Add block to the list of free blocks */
-   HvpAddFree(RegistryHive, Free, CellIndex);
-
-   if (CellType == Stable)
-      HvMarkCellDirty(RegistryHive, CellIndex, FALSE);
+            Neighbor = (PHCELL)((ULONG_PTR)Neighbor + Neighbor->Size);
+        }
+        else
+        {
+            Neighbor = (PHCELL)((ULONG_PTR)Neighbor - Neighbor->Size);
+        }
+    }
+
+    /* Add block to the list of free blocks */
+    HvpAddFree(RegistryHive, Free, CellIndex);
+
+    if (CellType == Stable)
+        HvMarkCellDirty(RegistryHive, CellIndex, FALSE);
 }
 
 BOOLEAN

Modified: trunk/reactos/lib/cmlib/hivedata.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivedata.h?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivedata.h  [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hivedata.h  [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl

Modified: trunk/reactos/lib/cmlib/hiveinit.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hiveinit.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hiveinit.c  [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hiveinit.c  [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl
@@ -17,32 +17,32 @@
 
 BOOLEAN CMAPI
 HvpVerifyHiveHeader(
-   PHBASE_BLOCK BaseBlock)
-{
-   if (BaseBlock->Signature != HV_SIGNATURE ||
-       BaseBlock->Major != HSYS_MAJOR ||
-       BaseBlock->Minor < HSYS_MINOR ||
-       BaseBlock->Type != HFILE_TYPE_PRIMARY ||
-       BaseBlock->Format != HBASE_FORMAT_MEMORY ||
-       BaseBlock->Cluster != 1 ||
-       BaseBlock->Sequence1 != BaseBlock->Sequence2 ||
-       HvpHiveHeaderChecksum(BaseBlock) != BaseBlock->CheckSum)
-   {
-      DPRINT1("Verify Hive Header failed: \n");
-      DPRINT1("    Signature: 0x%x, expected 0x%x; Major: 0x%x, expected 
0x%x\n",
-          BaseBlock->Signature, HV_SIGNATURE, BaseBlock->Major, HSYS_MAJOR);
-      DPRINT1("    Minor: 0x%x is not >= 0x%x; Type: 0x%x, expected 0x%x\n",
-          BaseBlock->Minor, HSYS_MINOR, BaseBlock->Type, HFILE_TYPE_PRIMARY);
-      DPRINT1("    Format: 0x%x, expected 0x%x; Cluster: 0x%x, expected 1\n",
-          BaseBlock->Format, HBASE_FORMAT_MEMORY, BaseBlock->Cluster);
-      DPRINT1("    Sequence: 0x%x, expected 0x%x; Checksum: 0x%x, expected 
0x%x\n",
-          BaseBlock->Sequence1, BaseBlock->Sequence2,
-          HvpHiveHeaderChecksum(BaseBlock), BaseBlock->CheckSum);
-
-      return FALSE;
-   }
-
-   return TRUE;
+    PHBASE_BLOCK BaseBlock)
+{
+    if (BaseBlock->Signature != HV_SIGNATURE ||
+        BaseBlock->Major != HSYS_MAJOR ||
+        BaseBlock->Minor < HSYS_MINOR ||
+        BaseBlock->Type != HFILE_TYPE_PRIMARY ||
+        BaseBlock->Format != HBASE_FORMAT_MEMORY ||
+        BaseBlock->Cluster != 1 ||
+        BaseBlock->Sequence1 != BaseBlock->Sequence2 ||
+        HvpHiveHeaderChecksum(BaseBlock) != BaseBlock->CheckSum)
+    {
+        DPRINT1("Verify Hive Header failed: \n");
+        DPRINT1("    Signature: 0x%x, expected 0x%x; Major: 0x%x, expected 
0x%x\n",
+                BaseBlock->Signature, HV_SIGNATURE, BaseBlock->Major, 
HSYS_MAJOR);
+        DPRINT1("    Minor: 0x%x is not >= 0x%x; Type: 0x%x, expected 0x%x\n",
+                BaseBlock->Minor, HSYS_MINOR, BaseBlock->Type, 
HFILE_TYPE_PRIMARY);
+        DPRINT1("    Format: 0x%x, expected 0x%x; Cluster: 0x%x, expected 1\n",
+                BaseBlock->Format, HBASE_FORMAT_MEMORY, BaseBlock->Cluster);
+        DPRINT1("    Sequence: 0x%x, expected 0x%x; Checksum: 0x%x, expected 
0x%x\n",
+                BaseBlock->Sequence1, BaseBlock->Sequence2,
+                HvpHiveHeaderChecksum(BaseBlock), BaseBlock->CheckSum);
+
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /**
@@ -54,31 +54,31 @@
 
 VOID CMAPI
 HvpFreeHiveBins(
-   PHHIVE Hive)
-{
-   ULONG i;
-   PHBIN Bin;
-   ULONG Storage;
-
-   for (Storage = Stable; Storage < HTYPE_COUNT; Storage++)
-   {
-      Bin = NULL;
-      for (i = 0; i < Hive->Storage[Storage].Length; i++)
-      {
-         if (Hive->Storage[Storage].BlockList[i].BinAddress == (ULONG_PTR)NULL)
-            continue;
-         if (Hive->Storage[Storage].BlockList[i].BinAddress != (ULONG_PTR)Bin)
-         {
-            Bin = (PHBIN)Hive->Storage[Storage].BlockList[i].BinAddress;
-            Hive->Free((PHBIN)Hive->Storage[Storage].BlockList[i].BinAddress, 
0);
-         }
-         Hive->Storage[Storage].BlockList[i].BinAddress = (ULONG_PTR)NULL;
-         Hive->Storage[Storage].BlockList[i].BlockAddress = (ULONG_PTR)NULL;
-      }
-
-      if (Hive->Storage[Storage].Length)
-         Hive->Free(Hive->Storage[Storage].BlockList, 0);
-   }
+    PHHIVE Hive)
+{
+    ULONG i;
+    PHBIN Bin;
+    ULONG Storage;
+
+    for (Storage = Stable; Storage < HTYPE_COUNT; Storage++)
+    {
+        Bin = NULL;
+        for (i = 0; i < Hive->Storage[Storage].Length; i++)
+        {
+            if (Hive->Storage[Storage].BlockList[i].BinAddress == 
(ULONG_PTR)NULL)
+                continue;
+            if (Hive->Storage[Storage].BlockList[i].BinAddress != 
(ULONG_PTR)Bin)
+            {
+                Bin = (PHBIN)Hive->Storage[Storage].BlockList[i].BinAddress;
+                
Hive->Free((PHBIN)Hive->Storage[Storage].BlockList[i].BinAddress, 0);
+            }
+            Hive->Storage[Storage].BlockList[i].BinAddress = (ULONG_PTR)NULL;
+            Hive->Storage[Storage].BlockList[i].BlockAddress = (ULONG_PTR)NULL;
+        }
+
+        if (Hive->Storage[Storage].Length)
+            Hive->Free(Hive->Storage[Storage].BlockList, 0);
+    }
 }
 
 /**
@@ -92,60 +92,60 @@
 
 NTSTATUS CMAPI
 HvpCreateHive(
-   PHHIVE RegistryHive,
-   PCUNICODE_STRING FileName OPTIONAL)
-{
-   PHBASE_BLOCK BaseBlock;
-   ULONG Index;
-
-   BaseBlock = RegistryHive->Allocate(sizeof(HBASE_BLOCK), FALSE, TAG_CM);
-   if (BaseBlock == NULL)
-      return STATUS_NO_MEMORY;
-
-   RtlZeroMemory(BaseBlock, sizeof(HBASE_BLOCK));
-
-   BaseBlock->Signature = HV_SIGNATURE;
-   BaseBlock->Major = HSYS_MAJOR;
-   BaseBlock->Minor = HSYS_MINOR;
-   BaseBlock->Type = HFILE_TYPE_PRIMARY;
-   BaseBlock->Format = HBASE_FORMAT_MEMORY;
-   BaseBlock->Cluster = 1;
-   BaseBlock->RootCell = HCELL_NIL;
-   BaseBlock->Length = 0;
-   BaseBlock->Sequence1 = 1;
-   BaseBlock->Sequence2 = 1;
-
-   /* Copy the 31 last characters of the hive file name if any */
-   if (FileName)
-   {
-      if (FileName->Length / sizeof(WCHAR) <= HIVE_FILENAME_MAXLEN)
-      {
-         RtlCopyMemory(BaseBlock->FileName,
-                       FileName->Buffer,
-                       FileName->Length);
-      }
-      else
-      {
-         RtlCopyMemory(BaseBlock->FileName,
-                       FileName->Buffer +
-                       FileName->Length / sizeof(WCHAR) - HIVE_FILENAME_MAXLEN,
-                       HIVE_FILENAME_MAXLEN * sizeof(WCHAR));
-      }
-
-      /* NULL-terminate */
-      BaseBlock->FileName[HIVE_FILENAME_MAXLEN] = L'\0';
-   }
-
-   BaseBlock->CheckSum = HvpHiveHeaderChecksum(BaseBlock);
-
-   RegistryHive->BaseBlock = BaseBlock;
-   for (Index = 0; Index < 24; Index++)
-   {
-      RegistryHive->Storage[Stable].FreeDisplay[Index] = HCELL_NIL;
-      RegistryHive->Storage[Volatile].FreeDisplay[Index] = HCELL_NIL;
-   }
-
-   return STATUS_SUCCESS;
+    PHHIVE RegistryHive,
+    PCUNICODE_STRING FileName OPTIONAL)
+{
+    PHBASE_BLOCK BaseBlock;
+    ULONG Index;
+
+    BaseBlock = RegistryHive->Allocate(sizeof(HBASE_BLOCK), FALSE, TAG_CM);
+    if (BaseBlock == NULL)
+        return STATUS_NO_MEMORY;
+
+    RtlZeroMemory(BaseBlock, sizeof(HBASE_BLOCK));
+
+    BaseBlock->Signature = HV_SIGNATURE;
+    BaseBlock->Major = HSYS_MAJOR;
+    BaseBlock->Minor = HSYS_MINOR;
+    BaseBlock->Type = HFILE_TYPE_PRIMARY;
+    BaseBlock->Format = HBASE_FORMAT_MEMORY;
+    BaseBlock->Cluster = 1;
+    BaseBlock->RootCell = HCELL_NIL;
+    BaseBlock->Length = 0;
+    BaseBlock->Sequence1 = 1;
+    BaseBlock->Sequence2 = 1;
+
+    /* Copy the 31 last characters of the hive file name if any */
+    if (FileName)
+    {
+        if (FileName->Length / sizeof(WCHAR) <= HIVE_FILENAME_MAXLEN)
+        {
+            RtlCopyMemory(BaseBlock->FileName,
+                          FileName->Buffer,
+                          FileName->Length);
+        }
+        else
+        {
+            RtlCopyMemory(BaseBlock->FileName,
+                          FileName->Buffer +
+                          FileName->Length / sizeof(WCHAR) - 
HIVE_FILENAME_MAXLEN,
+                          HIVE_FILENAME_MAXLEN * sizeof(WCHAR));
+        }
+
+        /* NULL-terminate */
+        BaseBlock->FileName[HIVE_FILENAME_MAXLEN] = L'\0';
+    }
+
+    BaseBlock->CheckSum = HvpHiveHeaderChecksum(BaseBlock);
+
+    RegistryHive->BaseBlock = BaseBlock;
+    for (Index = 0; Index < 24; Index++)
+    {
+        RegistryHive->Storage[Stable].FreeDisplay[Index] = HCELL_NIL;
+        RegistryHive->Storage[Volatile].FreeDisplay[Index] = HCELL_NIL;
+    }
+
+    return STATUS_SUCCESS;
 }
 
 /**
@@ -160,110 +160,110 @@
 
 NTSTATUS CMAPI
 HvpInitializeMemoryHive(
-   PHHIVE Hive,
-   PVOID ChunkBase)
-{
-   SIZE_T BlockIndex;
-   PHBIN Bin, NewBin;
-   ULONG i;
-   ULONG BitmapSize;
-   PULONG BitmapBuffer;
-   SIZE_T ChunkSize;
-
-   ChunkSize = ((PHBASE_BLOCK)ChunkBase)->Length;
-   DPRINT("ChunkSize: %lx\n", ChunkSize);
-
-   if (ChunkSize < sizeof(HBASE_BLOCK) ||
-       !HvpVerifyHiveHeader((PHBASE_BLOCK)ChunkBase))
-   {
-      DPRINT1("Registry is corrupt: ChunkSize %lu < sizeof(HBASE_BLOCK) %lu, "
-          "or HvpVerifyHiveHeader() failed\n", ChunkSize, 
(SIZE_T)sizeof(HBASE_BLOCK));
-      return STATUS_REGISTRY_CORRUPT;
-   }
-
-   Hive->BaseBlock = Hive->Allocate(sizeof(HBASE_BLOCK), FALSE, TAG_CM);
-   if (Hive->BaseBlock == NULL)
-   {
-      return STATUS_NO_MEMORY;
-   }
-   RtlCopyMemory(Hive->BaseBlock, ChunkBase, sizeof(HBASE_BLOCK));
-
-   /*
-    * Build a block list from the in-memory chunk and copy the data as
-    * we go.
-    */
-
-   Hive->Storage[Stable].Length = (ULONG)(ChunkSize / HBLOCK_SIZE);
-   Hive->Storage[Stable].BlockList =
-      Hive->Allocate(Hive->Storage[Stable].Length *
-                     sizeof(HMAP_ENTRY), FALSE, TAG_CM);
-   if (Hive->Storage[Stable].BlockList == NULL)
-   {
-      DPRINT1("Allocating block list failed\n");
-      Hive->Free(Hive->BaseBlock, 0);
-      return STATUS_NO_MEMORY;
-   }
-
-   for (BlockIndex = 0; BlockIndex < Hive->Storage[Stable].Length; )
-   {
-      Bin = (PHBIN)((ULONG_PTR)ChunkBase + (BlockIndex + 1) * HBLOCK_SIZE);
-      if (Bin->Signature != HV_BIN_SIGNATURE ||
-          (Bin->Size % HBLOCK_SIZE) != 0)
-      {
-         DPRINT1("Invalid bin at BlockIndex %lu, Signature 0x%x, Size 0x%x\n",
-                 (unsigned long)BlockIndex, (unsigned)Bin->Signature, 
(unsigned)Bin->Size);
-         Hive->Free(Hive->BaseBlock, 0);
-         Hive->Free(Hive->Storage[Stable].BlockList, 0);
-         return STATUS_REGISTRY_CORRUPT;
-      }
-
-      NewBin = Hive->Allocate(Bin->Size, TRUE, TAG_CM);
-      if (NewBin == NULL)
-      {
-         Hive->Free(Hive->BaseBlock, 0);
-         Hive->Free(Hive->Storage[Stable].BlockList, 0);
-         return STATUS_NO_MEMORY;
-      }
-
-      Hive->Storage[Stable].BlockList[BlockIndex].BinAddress = 
(ULONG_PTR)NewBin;
-      Hive->Storage[Stable].BlockList[BlockIndex].BlockAddress = 
(ULONG_PTR)NewBin;
-
-      RtlCopyMemory(NewBin, Bin, Bin->Size);
-
-      if (Bin->Size > HBLOCK_SIZE)
-      {
-         for (i = 1; i < Bin->Size / HBLOCK_SIZE; i++)
-         {
-            Hive->Storage[Stable].BlockList[BlockIndex + i].BinAddress = 
(ULONG_PTR)NewBin;
-            Hive->Storage[Stable].BlockList[BlockIndex + i].BlockAddress =
-               ((ULONG_PTR)NewBin + (i * HBLOCK_SIZE));
-         }
-      }
-
-      BlockIndex += Bin->Size / HBLOCK_SIZE;
-   }
-
-   if (HvpCreateHiveFreeCellList(Hive))
-   {
-      HvpFreeHiveBins(Hive);
-      Hive->Free(Hive->BaseBlock, 0);
-      return STATUS_NO_MEMORY;
-   }
-
-   BitmapSize = ROUND_UP(Hive->Storage[Stable].Length,
-                         sizeof(ULONG) * 8) / 8;
-   BitmapBuffer = (PULONG)Hive->Allocate(BitmapSize, TRUE, TAG_CM);
-   if (BitmapBuffer == NULL)
-   {
-      HvpFreeHiveBins(Hive);
-      Hive->Free(Hive->BaseBlock, 0);
-      return STATUS_NO_MEMORY;
-   }
-
-   RtlInitializeBitMap(&Hive->DirtyVector, BitmapBuffer, BitmapSize * 8);
-   RtlClearAllBits(&Hive->DirtyVector);
-
-   return STATUS_SUCCESS;
+    PHHIVE Hive,
+    PVOID ChunkBase)
+{
+    SIZE_T BlockIndex;
+    PHBIN Bin, NewBin;
+    ULONG i;
+    ULONG BitmapSize;
+    PULONG BitmapBuffer;
+    SIZE_T ChunkSize;
+
+    ChunkSize = ((PHBASE_BLOCK)ChunkBase)->Length;
+    DPRINT("ChunkSize: %lx\n", ChunkSize);
+
+    if (ChunkSize < sizeof(HBASE_BLOCK) ||
+        !HvpVerifyHiveHeader((PHBASE_BLOCK)ChunkBase))
+    {
+        DPRINT1("Registry is corrupt: ChunkSize %lu < sizeof(HBASE_BLOCK) %lu, 
"
+                "or HvpVerifyHiveHeader() failed\n", ChunkSize, 
(SIZE_T)sizeof(HBASE_BLOCK));
+        return STATUS_REGISTRY_CORRUPT;
+    }
+
+    Hive->BaseBlock = Hive->Allocate(sizeof(HBASE_BLOCK), FALSE, TAG_CM);
+    if (Hive->BaseBlock == NULL)
+    {
+        return STATUS_NO_MEMORY;
+    }
+    RtlCopyMemory(Hive->BaseBlock, ChunkBase, sizeof(HBASE_BLOCK));
+
+    /*
+     * Build a block list from the in-memory chunk and copy the data as
+     * we go.
+     */
+
+    Hive->Storage[Stable].Length = (ULONG)(ChunkSize / HBLOCK_SIZE);
+    Hive->Storage[Stable].BlockList =
+        Hive->Allocate(Hive->Storage[Stable].Length *
+                       sizeof(HMAP_ENTRY), FALSE, TAG_CM);
+    if (Hive->Storage[Stable].BlockList == NULL)
+    {
+        DPRINT1("Allocating block list failed\n");
+        Hive->Free(Hive->BaseBlock, 0);
+        return STATUS_NO_MEMORY;
+    }
+
+    for (BlockIndex = 0; BlockIndex < Hive->Storage[Stable].Length; )
+    {
+        Bin = (PHBIN)((ULONG_PTR)ChunkBase + (BlockIndex + 1) * HBLOCK_SIZE);
+        if (Bin->Signature != HV_BIN_SIGNATURE ||
+           (Bin->Size % HBLOCK_SIZE) != 0)
+        {
+            DPRINT1("Invalid bin at BlockIndex %lu, Signature 0x%x, Size 
0x%x\n",
+                    (unsigned long)BlockIndex, (unsigned)Bin->Signature, 
(unsigned)Bin->Size);
+            Hive->Free(Hive->BaseBlock, 0);
+            Hive->Free(Hive->Storage[Stable].BlockList, 0);
+            return STATUS_REGISTRY_CORRUPT;
+        }
+
+        NewBin = Hive->Allocate(Bin->Size, TRUE, TAG_CM);
+        if (NewBin == NULL)
+        {
+            Hive->Free(Hive->BaseBlock, 0);
+            Hive->Free(Hive->Storage[Stable].BlockList, 0);
+            return STATUS_NO_MEMORY;
+        }
+
+        Hive->Storage[Stable].BlockList[BlockIndex].BinAddress = 
(ULONG_PTR)NewBin;
+        Hive->Storage[Stable].BlockList[BlockIndex].BlockAddress = 
(ULONG_PTR)NewBin;
+
+        RtlCopyMemory(NewBin, Bin, Bin->Size);
+
+        if (Bin->Size > HBLOCK_SIZE)
+        {
+            for (i = 1; i < Bin->Size / HBLOCK_SIZE; i++)
+            {
+                Hive->Storage[Stable].BlockList[BlockIndex + i].BinAddress = 
(ULONG_PTR)NewBin;
+                Hive->Storage[Stable].BlockList[BlockIndex + i].BlockAddress =
+                    ((ULONG_PTR)NewBin + (i * HBLOCK_SIZE));
+            }
+        }
+
+        BlockIndex += Bin->Size / HBLOCK_SIZE;
+    }
+
+    if (HvpCreateHiveFreeCellList(Hive))
+    {
+        HvpFreeHiveBins(Hive);
+        Hive->Free(Hive->BaseBlock, 0);
+        return STATUS_NO_MEMORY;
+    }
+
+    BitmapSize = ROUND_UP(Hive->Storage[Stable].Length,
+                          sizeof(ULONG) * 8) / 8;
+    BitmapBuffer = (PULONG)Hive->Allocate(BitmapSize, TRUE, TAG_CM);
+    if (BitmapBuffer == NULL)
+    {
+        HvpFreeHiveBins(Hive);
+        Hive->Free(Hive->BaseBlock, 0);
+        return STATUS_NO_MEMORY;
+    }
+
+    RtlInitializeBitMap(&Hive->DirtyVector, BitmapBuffer, BitmapSize * 8);
+    RtlClearAllBits(&Hive->DirtyVector);
+
+    return STATUS_SUCCESS;
 }
 
 /**
@@ -278,19 +278,19 @@
 
 NTSTATUS CMAPI
 HvpInitializeMemoryInplaceHive(
-   PHHIVE Hive,
-   PVOID ChunkBase)
-{
-   if (!HvpVerifyHiveHeader((PHBASE_BLOCK)ChunkBase))
-   {
-      return STATUS_REGISTRY_CORRUPT;
-   }
-
-   Hive->BaseBlock = (PHBASE_BLOCK)ChunkBase;
-   Hive->ReadOnly = TRUE;
-   Hive->Flat = TRUE;
-
-   return STATUS_SUCCESS;
+    PHHIVE Hive,
+    PVOID ChunkBase)
+{
+    if (!HvpVerifyHiveHeader((PHBASE_BLOCK)ChunkBase))
+    {
+        return STATUS_REGISTRY_CORRUPT;
+    }
+
+    Hive->BaseBlock = (PHBASE_BLOCK)ChunkBase;
+    Hive->ReadOnly = TRUE;
+    Hive->Flat = TRUE;
+
+    return STATUS_SUCCESS;
 }
 
 typedef enum _RESULT
@@ -446,83 +446,83 @@
 
 NTSTATUS CMAPI
 HvInitialize(
-   PHHIVE RegistryHive,
-   ULONG Operation,
-   ULONG HiveType,
-   ULONG HiveFlags,
-   PVOID HiveData OPTIONAL,
-   PALLOCATE_ROUTINE Allocate,
-   PFREE_ROUTINE Free,
-   PFILE_SET_SIZE_ROUTINE FileSetSize,
-   PFILE_WRITE_ROUTINE FileWrite,
-   PFILE_READ_ROUTINE FileRead,
-   PFILE_FLUSH_ROUTINE FileFlush,
-   ULONG Cluster OPTIONAL,
-   PCUNICODE_STRING FileName OPTIONAL)
-{
-   NTSTATUS Status;
-   PHHIVE Hive = RegistryHive;
-
-   UNREFERENCED_PARAMETER(HiveType);
-
-   /*
-    * Create a new hive structure that will hold all the maintenance data.
-    */
-
-   RtlZeroMemory(Hive, sizeof(HHIVE));
-
-   Hive->Allocate = Allocate;
-   Hive->Free = Free;
-   Hive->FileRead = FileRead;
-   Hive->FileWrite = FileWrite;
-   Hive->FileSetSize = FileSetSize;
-   Hive->FileFlush = FileFlush;
-   Hive->StorageTypeCount = HTYPE_COUNT;
-   Hive->Cluster = 1;
-   Hive->Version = HSYS_MINOR;
-   Hive->HiveFlags = HiveFlags &~ HIVE_NOLAZYFLUSH;
-
-   switch (Operation)
-   {
-      case HINIT_CREATE:
-         Status = HvpCreateHive(Hive, FileName);
-         break;
-
-      case HINIT_MEMORY:
-         Status = HvpInitializeMemoryHive(Hive, HiveData);
-         break;
-
-      case HINIT_FLAT:
-         Status = HvpInitializeMemoryInplaceHive(Hive, HiveData);
-         break;
-
-      case HINIT_FILE:
-      {
-         /* HACK of doom: Cluster is actually the file size. */
-         Status = HvLoadHive(Hive, Cluster);
-         if ((Status != STATUS_SUCCESS) &&
-             (Status != STATUS_REGISTRY_RECOVERED))
-         {
-             /* Unrecoverable failure */
-             return Status;
-         }
-
-         /* Check for previous damage */
-         ASSERT(Status != STATUS_REGISTRY_RECOVERED);
-         break;
-     }
-
-      default:
-         /* FIXME: A better return status value is needed */
-         Status = STATUS_NOT_IMPLEMENTED;
-         ASSERT(FALSE);
-   }
-
-   if (!NT_SUCCESS(Status)) return Status;
-
-   if (Operation != HINIT_CREATE) CmPrepareHive(Hive);
-
-   return Status;
+    PHHIVE RegistryHive,
+    ULONG Operation,
+    ULONG HiveType,
+    ULONG HiveFlags,
+    PVOID HiveData OPTIONAL,
+    PALLOCATE_ROUTINE Allocate,
+    PFREE_ROUTINE Free,
+    PFILE_SET_SIZE_ROUTINE FileSetSize,
+    PFILE_WRITE_ROUTINE FileWrite,
+    PFILE_READ_ROUTINE FileRead,
+    PFILE_FLUSH_ROUTINE FileFlush,
+    ULONG Cluster OPTIONAL,
+    PCUNICODE_STRING FileName OPTIONAL)
+{
+    NTSTATUS Status;
+    PHHIVE Hive = RegistryHive;
+
+    UNREFERENCED_PARAMETER(HiveType);
+
+    /*
+     * Create a new hive structure that will hold all the maintenance data.
+     */
+
+    RtlZeroMemory(Hive, sizeof(HHIVE));
+
+    Hive->Allocate = Allocate;
+    Hive->Free = Free;
+    Hive->FileRead = FileRead;
+    Hive->FileWrite = FileWrite;
+    Hive->FileSetSize = FileSetSize;
+    Hive->FileFlush = FileFlush;
+    Hive->StorageTypeCount = HTYPE_COUNT;
+    Hive->Cluster = 1;
+    Hive->Version = HSYS_MINOR;
+    Hive->HiveFlags = HiveFlags &~ HIVE_NOLAZYFLUSH;
+
+    switch (Operation)
+    {
+        case HINIT_CREATE:
+            Status = HvpCreateHive(Hive, FileName);
+            break;
+
+        case HINIT_MEMORY:
+            Status = HvpInitializeMemoryHive(Hive, HiveData);
+            break;
+
+        case HINIT_FLAT:
+            Status = HvpInitializeMemoryInplaceHive(Hive, HiveData);
+            break;
+
+        case HINIT_FILE:
+        {
+            /* HACK of doom: Cluster is actually the file size. */
+            Status = HvLoadHive(Hive, Cluster);
+            if ((Status != STATUS_SUCCESS) &&
+                (Status != STATUS_REGISTRY_RECOVERED))
+            {
+                /* Unrecoverable failure */
+                return Status;
+            }
+
+            /* Check for previous damage */
+            ASSERT(Status != STATUS_REGISTRY_RECOVERED);
+            break;
+        }
+
+        default:
+        /* FIXME: A better return status value is needed */
+        Status = STATUS_NOT_IMPLEMENTED;
+        ASSERT(FALSE);
+    }
+
+    if (!NT_SUCCESS(Status)) return Status;
+
+    if (Operation != HINIT_CREATE) CmPrepareHive(Hive);
+
+    return Status;
 }
 
 /**
@@ -534,25 +534,25 @@
 
 VOID CMAPI
 HvFree(
-   PHHIVE RegistryHive)
-{
-   if (!RegistryHive->ReadOnly)
-   {
-      /* Release hive bitmap */
-      if (RegistryHive->DirtyVector.Buffer)
-      {
-         RegistryHive->Free(RegistryHive->DirtyVector.Buffer, 0);
-      }
-
-      HvpFreeHiveBins(RegistryHive);
-
-      /* Free the BaseBlock */
-      if (RegistryHive->BaseBlock)
-      {
-         RegistryHive->Free(RegistryHive->BaseBlock, 0);
-         RegistryHive->BaseBlock = NULL;
-      }
-   }
+    PHHIVE RegistryHive)
+{
+    if (!RegistryHive->ReadOnly)
+    {
+        /* Release hive bitmap */
+        if (RegistryHive->DirtyVector.Buffer)
+        {
+            RegistryHive->Free(RegistryHive->DirtyVector.Buffer, 0);
+        }
+
+        HvpFreeHiveBins(RegistryHive);
+
+        /* Free the BaseBlock */
+        if (RegistryHive->BaseBlock)
+        {
+            RegistryHive->Free(RegistryHive->BaseBlock, 0);
+            RegistryHive->BaseBlock = NULL;
+        }
+    }
 }
 
 /* EOF */

Modified: trunk/reactos/lib/cmlib/hivesum.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivesum.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivesum.c   [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hivesum.c   [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl
@@ -15,18 +15,18 @@
 
 ULONG CMAPI
 HvpHiveHeaderChecksum(
-   PHBASE_BLOCK HiveHeader)
+    PHBASE_BLOCK HiveHeader)
 {
-   PULONG Buffer = (PULONG)HiveHeader;
-   ULONG Sum = 0;
-   ULONG i;
+    PULONG Buffer = (PULONG)HiveHeader;
+    ULONG Sum = 0;
+    ULONG i;
 
-   for (i = 0; i < 127; i++)
-      Sum ^= Buffer[i];
-   if (Sum == (ULONG)-1)
-      Sum = (ULONG)-2;
-   if (Sum == 0)
-      Sum = 1;
+    for (i = 0; i < 127; i++)
+        Sum ^= Buffer[i];
+    if (Sum == (ULONG)-1)
+        Sum = (ULONG)-2;
+    if (Sum == 0)
+        Sum = 1;
 
-   return Sum;
+    return Sum;
 }

Modified: trunk/reactos/lib/cmlib/hivewrt.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivewrt.c?rev=70562&r1=70561&r2=70562&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivewrt.c   [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/hivewrt.c   [iso-8859-1] Sat Jan  9 23:42:45 2016
@@ -1,5 +1,5 @@
 /*
- * PROJECT:   registry manipulation library
+ * PROJECT:   Registry manipulation library
  * LICENSE:   GPL - See COPYING in the top level directory
  * COPYRIGHT: Copyright 2005 Filip Navara <nava...@reactos.org>
  *            Copyright 2001 - 2005 Eric Kohl
@@ -11,267 +11,265 @@
 
 static BOOLEAN CMAPI
 HvpWriteLog(
-   PHHIVE RegistryHive)
-{
-   ULONG FileOffset;
-   UINT32 BufferSize;
-   UINT32 BitmapSize;
-   PUCHAR Buffer;
-   PUCHAR Ptr;
-   ULONG BlockIndex;
-   ULONG LastIndex;
-   PVOID BlockPtr;
-   BOOLEAN Success;
-   static ULONG PrintCount = 0;
-
-   if (PrintCount++ == 0)
-   {
-      UNIMPLEMENTED;
-   }
-   return TRUE;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-   ASSERT(RegistryHive->BaseBlock->Length ==
-          RegistryHive->Storage[Stable].Length * HBLOCK_SIZE);
-
-   DPRINT("HvpWriteLog called\n");
-
-   if (RegistryHive->BaseBlock->Sequence1 !=
-       RegistryHive->BaseBlock->Sequence2)
-   {
-      return FALSE;
-   }
-
-   BitmapSize = RegistryHive->DirtyVector.SizeOfBitMap;
-   BufferSize = HV_LOG_HEADER_SIZE + sizeof(ULONG) + BitmapSize;
-   BufferSize = ROUND_UP(BufferSize, HBLOCK_SIZE);
-
-   DPRINT("Bitmap size %u  buffer size: %u\n", BitmapSize, BufferSize);
-
-   Buffer = RegistryHive->Allocate(BufferSize, TRUE, TAG_CM);
-   if (Buffer == NULL)
-   {
-      return FALSE;
-   }
-
-   /* Update first update counter and CheckSum */
-   RegistryHive->BaseBlock->Type = HFILE_TYPE_LOG;
-   RegistryHive->BaseBlock->Sequence1++;
-   RegistryHive->BaseBlock->CheckSum =
-      HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
-
-   /* Copy hive header */
-   RtlCopyMemory(Buffer, RegistryHive->BaseBlock, HV_LOG_HEADER_SIZE);
-   Ptr = Buffer + HV_LOG_HEADER_SIZE;
-   RtlCopyMemory(Ptr, "DIRT", 4);
-   Ptr += 4;
-   RtlCopyMemory(Ptr, RegistryHive->DirtyVector.Buffer, BitmapSize);
-
-   /* Write hive block and block bitmap */
-   FileOffset = 0;
-   Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
-                                     &FileOffset, Buffer, BufferSize);
-   RegistryHive->Free(Buffer, 0);
-
-   if (!Success)
-   {
-      return FALSE;
-   }
-
-   /* Write dirty blocks */
-   FileOffset = BufferSize;
-   BlockIndex = 0;
-   while (BlockIndex < RegistryHive->Storage[Stable].Length)
-   {
-      LastIndex = BlockIndex;
-      BlockIndex = RtlFindSetBits(&RegistryHive->DirtyVector, 1, BlockIndex);
-      if (BlockIndex == ~0U || BlockIndex < LastIndex)
-      {
-         break;
-      }
-
-      BlockPtr = 
(PVOID)RegistryHive->Storage[Stable].BlockList[BlockIndex].BlockAddress;
-
-      /* Write hive block */
-      Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
-                                        &FileOffset, BlockPtr,
-                                        HBLOCK_SIZE);
-      if (!Success)
-      {
-         return FALSE;
-      }
-
-      BlockIndex++;
-      FileOffset += HBLOCK_SIZE;
-    }
-
-   Success = RegistryHive->FileSetSize(RegistryHive, HFILE_TYPE_LOG, 
FileOffset, FileOffset);
-   if (!Success)
-   {
-      DPRINT("FileSetSize failed\n");
-      return FALSE;
-    }
-
-   /* Flush the log file */
-   Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_LOG, NULL, 0);
-   if (!Success)
-   {
-      DPRINT("FileFlush failed\n");
-   }
-
-   /* Update second update counter and CheckSum. */
-   RegistryHive->BaseBlock->Sequence2++;
-   RegistryHive->BaseBlock->CheckSum =
-      HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
-
-   /* Write hive header again with updated sequence counter. */
-   FileOffset = 0;
-   Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
-                                     &FileOffset, RegistryHive->BaseBlock,
-                                     HV_LOG_HEADER_SIZE);
-   if (!Success)
-   {
-      return FALSE;
-   }
-
-   /* Flush the log file */
-   Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_LOG, NULL, 0);
-   if (!Success)
-   {
-      DPRINT("FileFlush failed\n");
-   }
-
-   return TRUE;
+    PHHIVE RegistryHive)
+{
+    ULONG FileOffset;
+    UINT32 BufferSize;
+    UINT32 BitmapSize;
+    PUCHAR Buffer;
+    PUCHAR Ptr;
+    ULONG BlockIndex;
+    ULONG LastIndex;
+    PVOID BlockPtr;
+    BOOLEAN Success;
+    static ULONG PrintCount = 0;
+
+    if (PrintCount++ == 0)
+    {
+        UNIMPLEMENTED;
+    }
+    return TRUE;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+    ASSERT(RegistryHive->BaseBlock->Length ==
+           RegistryHive->Storage[Stable].Length * HBLOCK_SIZE);
+
+    DPRINT("HvpWriteLog called\n");
+
+    if (RegistryHive->BaseBlock->Sequence1 !=
+        RegistryHive->BaseBlock->Sequence2)
+    {
+        return FALSE;
+    }
+
+    BitmapSize = RegistryHive->DirtyVector.SizeOfBitMap;
+    BufferSize = HV_LOG_HEADER_SIZE + sizeof(ULONG) + BitmapSize;
+    BufferSize = ROUND_UP(BufferSize, HBLOCK_SIZE);
+
+    DPRINT("Bitmap size %u  buffer size: %u\n", BitmapSize, BufferSize);
+
+    Buffer = RegistryHive->Allocate(BufferSize, TRUE, TAG_CM);
+    if (Buffer == NULL)
+    {
+        return FALSE;
+    }
+
+    /* Update first update counter and CheckSum */
+    RegistryHive->BaseBlock->Type = HFILE_TYPE_LOG;
+    RegistryHive->BaseBlock->Sequence1++;
+    RegistryHive->BaseBlock->CheckSum =
+        HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
+
+    /* Copy hive header */
+    RtlCopyMemory(Buffer, RegistryHive->BaseBlock, HV_LOG_HEADER_SIZE);
+    Ptr = Buffer + HV_LOG_HEADER_SIZE;
+    RtlCopyMemory(Ptr, "DIRT", 4);
+    Ptr += 4;
+    RtlCopyMemory(Ptr, RegistryHive->DirtyVector.Buffer, BitmapSize);
+
+    /* Write hive block and block bitmap */
+    FileOffset = 0;
+    Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
+                                      &FileOffset, Buffer, BufferSize);
+    RegistryHive->Free(Buffer, 0);
+
+    if (!Success)
+    {
+        return FALSE;
+    }
+
+    /* Write dirty blocks */
+    FileOffset = BufferSize;
+    BlockIndex = 0;
+    while (BlockIndex < RegistryHive->Storage[Stable].Length)
+    {
+        LastIndex = BlockIndex;
+        BlockIndex = RtlFindSetBits(&RegistryHive->DirtyVector, 1, BlockIndex);
+        if (BlockIndex == ~0U || BlockIndex < LastIndex)
+        {
+            break;
+        }
+
+        BlockPtr = 
(PVOID)RegistryHive->Storage[Stable].BlockList[BlockIndex].BlockAddress;
+
+        /* Write hive block */
+        Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
+                                         &FileOffset, BlockPtr, HBLOCK_SIZE);
+        if (!Success)
+        {
+            return FALSE;
+        }
+
+        BlockIndex++;
+        FileOffset += HBLOCK_SIZE;
+    }
+
+    Success = RegistryHive->FileSetSize(RegistryHive, HFILE_TYPE_LOG, 
FileOffset, FileOffset);
+    if (!Success)
+    {
+        DPRINT("FileSetSize failed\n");
+        return FALSE;
+    }
+
+    /* Flush the log file */
+    Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_LOG, NULL, 0);
+    if (!Success)
+    {
+        DPRINT("FileFlush failed\n");
+    }
+
+    /* Update second update counter and CheckSum. */
+    RegistryHive->BaseBlock->Sequence2++;
+    RegistryHive->BaseBlock->CheckSum =
+    HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
+
+    /* Write hive header again with updated sequence counter. */
+    FileOffset = 0;
+    Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_LOG,
+                                      &FileOffset, RegistryHive->BaseBlock,
+                                      HV_LOG_HEADER_SIZE);
+    if (!Success)
+    {
+        return FALSE;
+    }
+
+    /* Flush the log file */
+    Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_LOG, NULL, 0);
+    if (!Success)
+    {
+        DPRINT("FileFlush failed\n");
+    }
+
+    return TRUE;
 }
 
 static BOOLEAN CMAPI
 HvpWriteHive(
-   PHHIVE RegistryHive,
-   BOOLEAN OnlyDirty)
-{
-   ULONG FileOffset;
-   ULONG BlockIndex;
-   ULONG LastIndex;
-   PVOID BlockPtr;
-   BOOLEAN Success;
-
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-   ASSERT(RegistryHive->BaseBlock->Length ==
-          RegistryHive->Storage[Stable].Length * HBLOCK_SIZE);
-
-   DPRINT("HvpWriteHive called\n");
-
-   if (RegistryHive->BaseBlock->Sequence1 !=
-       RegistryHive->BaseBlock->Sequence2)
-   {
-      return FALSE;
-   }
-
-   /* Update first update counter and CheckSum */
-   RegistryHive->BaseBlock->Type = HFILE_TYPE_PRIMARY;
-   RegistryHive->BaseBlock->Sequence1++;
-   RegistryHive->BaseBlock->CheckSum =
-   HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
-
-   /* Write hive block */
-   FileOffset = 0;
-   Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
-                                     &FileOffset, RegistryHive->BaseBlock,
-                                     sizeof(HBASE_BLOCK));
-   if (!Success)
-   {
-      return FALSE;
-   }
-
-   BlockIndex = 0;
-   while (BlockIndex < RegistryHive->Storage[Stable].Length)
-   {
-      if (OnlyDirty)
-      {
-         LastIndex = BlockIndex;
-         BlockIndex = RtlFindSetBits(&RegistryHive->DirtyVector, 1, 
BlockIndex);
-         if (BlockIndex == ~0U || BlockIndex < LastIndex)
-         {
-            break;
-         }
-      }
-
-      BlockPtr = 
(PVOID)RegistryHive->Storage[Stable].BlockList[BlockIndex].BlockAddress;
-      FileOffset = (BlockIndex + 1) * HBLOCK_SIZE;
-
-      /* Write hive block */
-      Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
-                                        &FileOffset, BlockPtr,
-                                        HBLOCK_SIZE);
-      if (!Success)
-      {
-         return FALSE;
-      }
-
-      BlockIndex++;
-   }
-
-   Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_PRIMARY, NULL, 
0);
-   if (!Success)
-   {
-      DPRINT("FileFlush failed\n");
-   }
-
-   /* Update second update counter and CheckSum */
-   RegistryHive->BaseBlock->Sequence2++;
-   RegistryHive->BaseBlock->CheckSum =
-      HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
-
-   /* Write hive block */
-   FileOffset = 0;
-   Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
-                                     &FileOffset, RegistryHive->BaseBlock,
-                                     sizeof(HBASE_BLOCK));
-   if (!Success)
-   {
-      return FALSE;
-   }
-
-   Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_PRIMARY, NULL, 
0);
-   if (!Success)
-   {
-      DPRINT("FileFlush failed\n");
-   }
-
-   return TRUE;
+    PHHIVE RegistryHive,
+    BOOLEAN OnlyDirty)
+{
+    ULONG FileOffset;
+    ULONG BlockIndex;
+    ULONG LastIndex;
+    PVOID BlockPtr;
+    BOOLEAN Success;
+
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+    ASSERT(RegistryHive->BaseBlock->Length ==
+           RegistryHive->Storage[Stable].Length * HBLOCK_SIZE);
+
+    DPRINT("HvpWriteHive called\n");
+
+    if (RegistryHive->BaseBlock->Sequence1 !=
+        RegistryHive->BaseBlock->Sequence2)
+    {
+        return FALSE;
+    }
+
+    /* Update first update counter and CheckSum */
+    RegistryHive->BaseBlock->Type = HFILE_TYPE_PRIMARY;
+    RegistryHive->BaseBlock->Sequence1++;
+    RegistryHive->BaseBlock->CheckSum =
+    HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
+
+    /* Write hive block */
+    FileOffset = 0;
+    Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
+                                      &FileOffset, RegistryHive->BaseBlock,
+                                      sizeof(HBASE_BLOCK));
+    if (!Success)
+    {
+        return FALSE;
+    }
+
+    BlockIndex = 0;
+    while (BlockIndex < RegistryHive->Storage[Stable].Length)
+    {
+        if (OnlyDirty)
+        {
+            LastIndex = BlockIndex;
+            BlockIndex = RtlFindSetBits(&RegistryHive->DirtyVector, 1, 
BlockIndex);
+            if (BlockIndex == ~0U || BlockIndex < LastIndex)
+            {
+                break;
+            }
+        }
+
+        BlockPtr = 
(PVOID)RegistryHive->Storage[Stable].BlockList[BlockIndex].BlockAddress;
+        FileOffset = (BlockIndex + 1) * HBLOCK_SIZE;
+
+        /* Write hive block */
+        Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
+                                          &FileOffset, BlockPtr, HBLOCK_SIZE);
+        if (!Success)
+        {
+            return FALSE;
+        }
+
+        BlockIndex++;
+    }
+
+    Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_PRIMARY, NULL, 
0);
+    if (!Success)
+    {
+        DPRINT("FileFlush failed\n");
+    }
+
+    /* Update second update counter and CheckSum */
+    RegistryHive->BaseBlock->Sequence2++;
+    RegistryHive->BaseBlock->CheckSum =
+        HvpHiveHeaderChecksum(RegistryHive->BaseBlock);
+
+    /* Write hive block */
+    FileOffset = 0;
+    Success = RegistryHive->FileWrite(RegistryHive, HFILE_TYPE_PRIMARY,
+                                      &FileOffset, RegistryHive->BaseBlock,
+                                      sizeof(HBASE_BLOCK));
+    if (!Success)
+    {
+        return FALSE;
+    }
+
+    Success = RegistryHive->FileFlush(RegistryHive, HFILE_TYPE_PRIMARY, NULL, 
0);
+    if (!Success)
+    {
+        DPRINT("FileFlush failed\n");
+    }
+
+    return TRUE;
 }
 
 BOOLEAN CMAPI
 HvSyncHive(
-   PHHIVE RegistryHive)
-{
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   if (RtlFindSetBits(&RegistryHive->DirtyVector, 1, 0) == ~0U)
-   {
-      return TRUE;
-   }
-
-   /* Update hive header modification time */
-   KeQuerySystemTime(&RegistryHive->BaseBlock->TimeStamp);
-
-   /* Update log file */
-   if (!HvpWriteLog(RegistryHive))
-   {
-      return FALSE;
-   }
-
-   /* Update hive file */
-   if (!HvpWriteHive(RegistryHive, TRUE))
-   {
-      return FALSE;
-   }
-
-   /* Clear dirty bitmap. */
-   RtlClearAllBits(&RegistryHive->DirtyVector);
-   RegistryHive->DirtyCount = 0;
-
-   return TRUE;
+    PHHIVE RegistryHive)
+{
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    if (RtlFindSetBits(&RegistryHive->DirtyVector, 1, 0) == ~0U)
+    {
+        return TRUE;
+    }
+
+    /* Update hive header modification time */
+    KeQuerySystemTime(&RegistryHive->BaseBlock->TimeStamp);
+
+    /* Update log file */
+    if (!HvpWriteLog(RegistryHive))
+    {
+        return FALSE;
+    }
+
+    /* Update hive file */
+    if (!HvpWriteHive(RegistryHive, TRUE))
+    {
+        return FALSE;
+    }
+
+    /* Clear dirty bitmap. */
+    RtlClearAllBits(&RegistryHive->DirtyVector);
+    RegistryHive->DirtyCount = 0;
+
+    return TRUE;
 }
 
 BOOLEAN
@@ -279,23 +277,24 @@
 HvHiveWillShrink(IN PHHIVE RegistryHive)
 {
     /* No shrinking yet */
+    UNIMPLEMENTED;
     return FALSE;
 }
 
 BOOLEAN CMAPI
 HvWriteHive(
-   PHHIVE RegistryHive)
-{
-   ASSERT(RegistryHive->ReadOnly == FALSE);
-
-   /* Update hive header modification time */
-   KeQuerySystemTime(&RegistryHive->BaseBlock->TimeStamp);
-
-   /* Update hive file */
-   if (!HvpWriteHive(RegistryHive, FALSE))
-   {
-      return FALSE;
-   }
-
-   return TRUE;
-}
+    PHHIVE RegistryHive)
+{
+    ASSERT(RegistryHive->ReadOnly == FALSE);
+
+    /* Update hive header modification time */
+    KeQuerySystemTime(&RegistryHive->BaseBlock->TimeStamp);
+
+    /* Update hive file */
+    if (!HvpWriteHive(RegistryHive, FALSE))
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}


Reply via email to