Module: wine Branch: master Commit: 339989638d663d95a74f21d18cc8cdd9d0433480 URL: http://source.winehq.org/git/wine.git/?a=commit;h=339989638d663d95a74f21d18c...
Author: Hans Leidekker hans@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)