Hans Leidekker : snmpapi: Implement SnmpUtilVarBindList{Cpy,Free}.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 16 05:22:25 CST 2007


Module: wine
Branch: master
Commit: 339989638d663d95a74f21d18cc8cdd9d0433480
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=339989638d663d95a74f21d18cc8cdd9d0433480

Author: Hans Leidekker <hans at it.vu.nl>
Date:   Mon Jan 15 19:08:40 2007 +0100

snmpapi: Implement SnmpUtilVarBindList{Cpy,Free}.

---

 dlls/snmpapi/main.c       |   72 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/snmpapi/snmpapi.spec |    4 +-
 2 files changed, 74 insertions(+), 2 deletions(-)

diff --git a/dlls/snmpapi/main.c b/dlls/snmpapi/main.c
index fea3d86..16d9b30 100644
--- a/dlls/snmpapi/main.c
+++ b/dlls/snmpapi/main.c
@@ -54,24 +54,36 @@ BOOL WINAPI DllMain(
     return TRUE;
 }
 
+/***********************************************************************
+ *      SnmpUtilMemAlloc        (SNMPAPI.@)
+ */
 LPVOID WINAPI SnmpUtilMemAlloc(UINT nbytes)
 {
     TRACE("(%d)\n", nbytes);
     return HeapAlloc(GetProcessHeap(), 0, nbytes);
 }
 
+/***********************************************************************
+ *      SnmpUtilMemReAlloc      (SNMPAPI.@)
+ */
 LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID mem, UINT nbytes)
 {
     TRACE("(%p, %d)\n", mem, nbytes);
     return HeapReAlloc(GetProcessHeap(), 0, mem, nbytes);
 }
 
+/***********************************************************************
+ *      SnmpUtilMemFree         (SNMPAPI.@)
+ */
 void WINAPI SnmpUtilMemFree(LPVOID mem)
 {
     TRACE("(%p)\n", mem);
     HeapFree(GetProcessHeap(), 0, mem);
 }
 
+/***********************************************************************
+ *      SnmpUtilOidCpy          (SNMPAPI.@)
+ */
 INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *dst, AsnObjectIdentifier *src)
 {
     unsigned int i, size;
@@ -94,6 +106,9 @@ INT WINAPI SnmpUtilOidCpy(AsnObjectIdent
     return SNMPAPI_ERROR;
 }
 
+/***********************************************************************
+ *      SnmpUtilOidFree         (SNMPAPI.@)
+ */
 void WINAPI SnmpUtilOidFree(AsnObjectIdentifier *oid)
 {
     TRACE("(%p)\n", oid);
@@ -102,6 +117,9 @@ void WINAPI SnmpUtilOidFree(AsnObjectIde
     HeapFree(GetProcessHeap(), 0, oid);
 }
 
+/***********************************************************************
+ *      SnmpUtilVarBindCpy      (SNMPAPI.@)
+ */
 INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *dst, SnmpVarBind *src)
 {
     unsigned int i, size;
@@ -171,6 +189,9 @@ error:
     return SNMPAPI_ERROR;
 }
 
+/***********************************************************************
+ *      SnmpUtilVarBindFree     (SNMPAPI.@)
+ */
 void WINAPI SnmpUtilVarBindFree(SnmpVarBind *vb)
 {
     TRACE("(%p)\n", vb);
@@ -198,3 +219,54 @@ void WINAPI SnmpUtilVarBindFree(SnmpVarB
     HeapFree(GetProcessHeap(), 0, vb->name.ids);
     HeapFree(GetProcessHeap(), 0, vb);
 }
+
+/***********************************************************************
+ *      SnmpUtilVarBindListCpy  (SNMPAPI.@)
+ */
+INT WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *dst, SnmpVarBindList *src)
+{
+    unsigned int i, size;
+    SnmpVarBind *src_entry, *dst_entry;
+
+    TRACE("(%p, %p)\n", dst, src);
+
+    size = src->len * sizeof(SnmpVarBind *);
+    if (!(dst->list = HeapAlloc(GetProcessHeap(), 0, size)))
+    {
+        HeapFree(GetProcessHeap(), 0, dst);
+        return SNMPAPI_ERROR;
+    }
+    src_entry = src->list;
+    dst_entry = dst->list;
+    for (i = 0; i < src->len; i++)
+    {
+        if (SnmpUtilVarBindCpy(dst_entry, src_entry))
+        {
+            src_entry++;
+            dst_entry++;
+        }
+        else
+        {
+            for (--i; i > 0; i--) SnmpUtilVarBindFree(--dst_entry);
+            HeapFree(GetProcessHeap(), 0, dst->list);
+            return SNMPAPI_ERROR;
+        }
+    }
+    dst->len = src->len;
+    return SNMPAPI_NOERROR;
+}
+
+/***********************************************************************
+ *      SnmpUtilVarBindListFree (SNMPAPI.@)
+ */
+void WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *vb)
+{
+    unsigned int i;
+    SnmpVarBind *entry;
+
+    TRACE("(%p)\n", vb);
+
+    entry = vb->list;
+    for (i = 0; i < vb->len; i++) SnmpUtilVarBindFree(entry++);
+    HeapFree(GetProcessHeap(), 0, vb->list);
+}
diff --git a/dlls/snmpapi/snmpapi.spec b/dlls/snmpapi/snmpapi.spec
index 615b895..e6a8084 100644
--- a/dlls/snmpapi/snmpapi.spec
+++ b/dlls/snmpapi/snmpapi.spec
@@ -41,5 +41,5 @@
 @ stub SnmpUtilUnicodeToAnsi
 @ stdcall SnmpUtilVarBindCpy(ptr ptr)
 @ stdcall SnmpUtilVarBindFree(ptr)
-@ stub SnmpUtilVarBindListCpy
-@ stub SnmpUtilVarBindListFree
+@ stdcall SnmpUtilVarBindListCpy(ptr ptr)
+@ stdcall SnmpUtilVarBindListFree(ptr)




More information about the wine-cvs mailing list