Vincent Povirk : ole32: Split the data conversion functions out of WriteProperty.
Alexandre Julliard
julliard at winehq.org
Thu Oct 29 11:20:40 CDT 2009
Module: wine
Branch: master
Commit: 20dd1886d5682801307752f5c85ec6c292e5d6b4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=20dd1886d5682801307752f5c85ec6c292e5d6b4
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Wed Oct 28 13:27:52 2009 -0500
ole32: Split the data conversion functions out of WriteProperty.
---
dlls/ole32/storage32.c | 138 ++++++++++++++++++++++++++----------------------
dlls/ole32/storage32.h | 4 ++
2 files changed, 79 insertions(+), 63 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c
index b1f19f3..3e00cf6 100644
--- a/dlls/ole32/storage32.c
+++ b/dlls/ole32/storage32.c
@@ -3102,6 +3102,80 @@ HRESULT StorageImpl_WriteRawDirEntry(StorageImpl *This, ULONG index, const BYTE
}
/******************************************************************************
+ * UpdateRawDirEntry
+ *
+ * Update raw directory entry data from the fields in newData.
+ *
+ * buffer must be PROPSET_BLOCK_SIZE bytes long.
+ */
+void UpdateRawDirEntry(BYTE *buffer, const StgProperty *newData)
+{
+ memset(buffer, 0, PROPSET_BLOCK_SIZE);
+
+ memcpy(
+ buffer + OFFSET_PS_NAME,
+ newData->name,
+ PROPERTY_NAME_BUFFER_LEN );
+
+ memcpy(buffer + OFFSET_PS_PROPERTYTYPE, &newData->propertyType, 1);
+
+ StorageUtl_WriteWord(
+ buffer,
+ OFFSET_PS_NAMELENGTH,
+ newData->sizeOfNameString);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_LEFTCHILD,
+ newData->leftChild);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_RIGHTCHILD,
+ newData->rightChild);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_DIRPROP,
+ newData->dirProperty);
+
+ StorageUtl_WriteGUID(
+ buffer,
+ OFFSET_PS_GUID,
+ &newData->propertyUniqueID);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_CTIMELOW,
+ newData->ctime.dwLowDateTime);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_CTIMEHIGH,
+ newData->ctime.dwHighDateTime);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_MTIMELOW,
+ newData->mtime.dwLowDateTime);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_MTIMEHIGH,
+ newData->ctime.dwHighDateTime);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_STARTBLOCK,
+ newData->startingBlock);
+
+ StorageUtl_WriteDWord(
+ buffer,
+ OFFSET_PS_SIZE,
+ newData->size.u.LowPart);
+}
+
+/******************************************************************************
* Storage32Impl_ReadProperty
*
* This method will read the specified property from the property chain.
@@ -3203,69 +3277,7 @@ BOOL StorageImpl_WriteProperty(
BYTE currentProperty[PROPSET_BLOCK_SIZE];
HRESULT writeRes;
- memset(currentProperty, 0, PROPSET_BLOCK_SIZE);
-
- memcpy(
- currentProperty + OFFSET_PS_NAME,
- buffer->name,
- PROPERTY_NAME_BUFFER_LEN );
-
- memcpy(currentProperty + OFFSET_PS_PROPERTYTYPE, &buffer->propertyType, 1);
-
- StorageUtl_WriteWord(
- currentProperty,
- OFFSET_PS_NAMELENGTH,
- buffer->sizeOfNameString);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_LEFTCHILD,
- buffer->leftChild);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_RIGHTCHILD,
- buffer->rightChild);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_DIRPROP,
- buffer->dirProperty);
-
- StorageUtl_WriteGUID(
- currentProperty,
- OFFSET_PS_GUID,
- &buffer->propertyUniqueID);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_CTIMELOW,
- buffer->ctime.dwLowDateTime);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_CTIMEHIGH,
- buffer->ctime.dwHighDateTime);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_MTIMELOW,
- buffer->mtime.dwLowDateTime);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_MTIMEHIGH,
- buffer->ctime.dwHighDateTime);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_STARTBLOCK,
- buffer->startingBlock);
-
- StorageUtl_WriteDWord(
- currentProperty,
- OFFSET_PS_SIZE,
- buffer->size.u.LowPart);
+ UpdateRawDirEntry(currentProperty, buffer);
writeRes = StorageImpl_WriteRawDirEntry(This, index, currentProperty);
return SUCCEEDED(writeRes) ? TRUE : FALSE;
diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h
index bbc6a5d..1f3d264 100644
--- a/dlls/ole32/storage32.h
+++ b/dlls/ole32/storage32.h
@@ -295,6 +295,10 @@ HRESULT StorageImpl_ReadRawDirEntry(
ULONG index,
BYTE *buffer);
+void UpdateRawDirEntry(
+ BYTE *buffer,
+ const StgProperty *newData);
+
HRESULT StorageImpl_WriteRawDirEntry(
StorageImpl *This,
ULONG index,
More information about the wine-cvs
mailing list