[4/11] apphelp: Implement SdbGetFirstChild.

Mislav Blazevic krofnica996 at gmail.com
Thu Aug 1 17:23:13 CDT 2013


---
 dlls/apphelp/apphelp.c    | 33 +++++++++++++++++++++++++++++++++
 dlls/apphelp/apphelp.spec |  2 +-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/dlls/apphelp/apphelp.c b/dlls/apphelp/apphelp.c
index e74529c..89e61e6 100644
--- a/dlls/apphelp/apphelp.c
+++ b/dlls/apphelp/apphelp.c
@@ -411,3 +411,36 @@ TAG WINAPI SdbGetTagFromTagID(PDB db, TAGID tagid)

     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)
+{
+    /* if we are at beginning of database */
+    if (parent == TAGID_ROOT)
+    {
+        /* header only database: no tags */
+        if (db->size <= _TAGID_ROOT)
+            return TAGID_NULL;
+        /* return *real* root tagid */
+        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 of list */
+    return parent + 6;
+}
diff --git a/dlls/apphelp/apphelp.spec b/dlls/apphelp/apphelp.spec
index ee5e96f..f935a15 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
-- 
1.8.3.4



More information about the wine-patches mailing list