Module: wine Branch: master Commit: bca85b3da397366fe05cb3d148c1bcc496664235 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bca85b3da397366fe05cb3d148...
Author: Hans Leidekker hans@it.vu.nl Date: Mon Jan 22 11:06:13 2007 +0100
snmpapi: Implement SnmpUtilOctets{Cmp,Cpy,Free,NCmp}.
---
dlls/snmpapi/main.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ dlls/snmpapi/snmpapi.spec | 8 ++-- 2 files changed, 78 insertions(+), 4 deletions(-)
diff --git a/dlls/snmpapi/main.c b/dlls/snmpapi/main.c index 163477b..8031162 100644 --- a/dlls/snmpapi/main.c +++ b/dlls/snmpapi/main.c @@ -179,6 +179,80 @@ void WINAPI SnmpUtilAsnAnyFree(AsnAny *a }
/*********************************************************************** + * SnmpUtilOctetsCpy (SNMPAPI.@) + */ +INT WINAPI SnmpUtilOctetsCpy(AsnOctetString *dst, AsnOctetString *src) +{ + TRACE("(%p, %p)\n", dst, src); + + if (!dst) return SNMPAPI_ERROR; + if (!src) + { + dst->dynamic = FALSE; + dst->length = 0; + dst->stream = NULL; + return SNMPAPI_NOERROR; + } + if ((dst->stream = HeapAlloc(GetProcessHeap(), 0, src->length))) + { + unsigned int i; + + dst->dynamic = TRUE; + dst->length = src->length; + for (i = 0; i < dst->length; i++) dst->stream[i] = src->stream[i]; + return SNMPAPI_NOERROR; + } + return SNMPAPI_ERROR; +} + +/*********************************************************************** + * SnmpUtilOctetsFree (SNMPAPI.@) + */ +void WINAPI SnmpUtilOctetsFree(AsnOctetString *octets) +{ + TRACE("(%p)\n", octets); + + if (octets) + { + octets->length = 0; + if (octets->dynamic) HeapFree(GetProcessHeap(), 0, octets->stream); + octets->stream = NULL; + octets->dynamic = FALSE; + } +} + +/*********************************************************************** + * SnmpUtilOctetsNCmp (SNMPAPI.@) + */ +INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *octets1, AsnOctetString *octets2, UINT count) +{ + INT ret; + unsigned int i; + + TRACE("(%p, %p, %d)\n", octets1, octets2, count); + + if (!octets1 || !octets2) return 0; + + for (i = 0; i < count; i++) + if ((ret = octets1->stream[i] - octets2->stream[i])) return ret; + + return 0; +} + +/*********************************************************************** + * SnmpUtilOctetsCmp (SNMPAPI.@) + */ +INT WINAPI SnmpUtilOctetsCmp(AsnOctetString *octets1, AsnOctetString *octets2) +{ + TRACE("(%p, %p)\n", octets1, octets2); + + if (octets1->length < octets2->length) return -1; + if (octets1->length > octets2->length) return 1; + + return SnmpUtilOctetsNCmp(octets1, octets2, octets1->length); +} + +/*********************************************************************** * SnmpUtilOidCpy (SNMPAPI.@) */ INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *dst, AsnObjectIdentifier *src) diff --git a/dlls/snmpapi/snmpapi.spec b/dlls/snmpapi/snmpapi.spec index 006c8b3..cd6dcd0 100644 --- a/dlls/snmpapi/snmpapi.spec +++ b/dlls/snmpapi/snmpapi.spec @@ -25,10 +25,10 @@ @ stdcall SnmpUtilMemAlloc(long) @ stdcall SnmpUtilMemFree(ptr) @ stdcall SnmpUtilMemReAlloc(ptr long) -@ stub SnmpUtilOctetsCmp -@ stub SnmpUtilOctetsCpy -@ stub SnmpUtilOctetsFree -@ stub SnmpUtilOctetsNCmp +@ stdcall SnmpUtilOctetsCmp(ptr ptr) +@ stdcall SnmpUtilOctetsCpy(ptr ptr) +@ stdcall SnmpUtilOctetsFree(ptr) +@ stdcall SnmpUtilOctetsNCmp(ptr ptr long) @ stub SnmpUtilOidAppend @ stub SnmpUtilOidCmp @ stdcall SnmpUtilOidCpy(ptr ptr)