[PATCH 6/11] apphelp: Implement SdbGetFirstChild.
Mislav Blazevic
krofnica996 at gmail.com
Wed Jul 31 17:58:49 CDT 2013
---
dlls/apphelp/apphelp.c | 34 ++++++++++++++++++++++++++++++++++
dlls/apphelp/apphelp.spec | 2 +-
include/appcompatapi.h | 1 +
3 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/dlls/apphelp/apphelp.c b/dlls/apphelp/apphelp.c
index ce309d6..241e2b5 100644
--- a/dlls/apphelp/apphelp.c
+++ b/dlls/apphelp/apphelp.c
@@ -505,3 +505,37 @@ TAG WINAPI SdbGetTagFromTagID(PDB db, TAGID parent)
return data;
}
+
+/**************************************************************************
+ * SdbGetFirstChild [APPHELP.@]
+ *
+ * Searches shim database for a child of specified parent tag
+ *
+ * PARAMS
+ * db [I] Handle to the shim database
+ * parent [I] TAGID of parent
+ *
+ * RETURNS
+ * Success: TAGID associated with child tag
+ * Failure: TAGID_NULL
+ */
+TAGID WINAPI SdbGetFirstChild(PDB db, TAGID parent)
+{
+ TAG tag;
+
+ /* if we are at beginning of database */
+ if (parent == TAGID_NULL)
+ {
+ /* header only database: no tags */
+ if (db->size <= TAGID_ROOT)
+ return TAGID_NULL;
+ else return TAGID_ROOT;
+ }
+
+ /* only list tag can have children */
+ if (SdbGetTagFromTagID(db, parent) & TAG_TYPE_MASK != TAG_TYPE_LIST)
+ return TAGID_NULL;
+
+ /* first child is sizeof(TAG) + sizeof(DWORD) bytes after beginning */
+ return parent + 6;
+}
diff --git a/dlls/apphelp/apphelp.spec b/dlls/apphelp/apphelp.spec
index c68ac14..6a96a7d 100644
--- a/dlls/apphelp/apphelp.spec
+++ b/dlls/apphelp/apphelp.spec
@@ -62,7 +62,7 @@
@ stub SdbGetFileImageType
@ stub SdbGetFileImageTypeEx
@ stub SdbGetFileInfo
-@ stub SdbGetFirstChild
+@ stdcall SdbGetFirstChild(ptr long)
@ stub SdbGetIndex
@ stub SdbGetItemFromItemRef
@ stub SdbGetLayerName
diff --git a/include/appcompatapi.h b/include/appcompatapi.h
index d277628..185bd33 100644
--- a/include/appcompatapi.h
+++ b/include/appcompatapi.h
@@ -29,6 +29,7 @@ LPCWSTR WINAPI SdbTagToString(TAG);
void WINAPI SdbCloseDatabase(PDB);
PDB WINAPI SdbOpenDatabase(LPCWSTR, PATH_TYPE);
TAG WINAPI SdbGetTagFromTagID(PDB, TAGID);
+TAGID WINAPI SdbGetFirstChild(PDB, TAGID);
typedef enum _PATH_TYPE {
DOS_PATH,
--
1.8.3.4
More information about the wine-patches
mailing list