Hans Leidekker : snmpapi: Implement SnmpUtil{DbgPrint, IdsToA, OidToA, PrintAsnAny, PrintOid}.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 23 06:18:11 CST 2007


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

Author: Hans Leidekker <hans at it.vu.nl>
Date:   Mon Jan 22 15:30:01 2007 +0100

snmpapi: Implement SnmpUtil{DbgPrint, IdsToA, OidToA, PrintAsnAny, PrintOid}.

---

 dlls/snmpapi/main.c       |  166 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/snmpapi/snmpapi.spec |   10 ++--
 2 files changed, 171 insertions(+), 5 deletions(-)

diff --git a/dlls/snmpapi/main.c b/dlls/snmpapi/main.c
index e385638..24a2da1 100644
--- a/dlls/snmpapi/main.c
+++ b/dlls/snmpapi/main.c
@@ -21,6 +21,7 @@
 
 #include "config.h"
 
+#include <stdio.h>
 #include <stdarg.h>
 
 #include "windef.h"
@@ -134,6 +135,14 @@ BOOL WINAPI DllMain(
 }
 
 /***********************************************************************
+ *      SnmpUtilDbgPrint        (SNMPAPI.@)
+ */
+void WINAPI SnmpUtilDbgPrint(INT loglevel, LPSTR format, ...)
+{
+    FIXME("(%d, %s)\n", loglevel, debugstr_a(format));
+}
+
+/***********************************************************************
  *      SnmpUtilMemAlloc        (SNMPAPI.@)
  */
 LPVOID WINAPI SnmpUtilMemAlloc(UINT nbytes)
@@ -448,3 +457,160 @@ void WINAPI SnmpUtilVarBindListFree(Snmp
     for (i = 0; i < vb->len; i++) SnmpUtilVarBindFree(entry++);
     HeapFree(GetProcessHeap(), 0, vb->list);
 }
+
+/***********************************************************************
+ *      SnmpUtilIdsToA          (SNMPAPI.@)
+ */
+LPSTR WINAPI SnmpUtilIdsToA(UINT *ids, UINT length)
+{
+    static char one[10], oid[514], null_oid[] = "<null oid>";
+    unsigned int i, len, left = sizeof(oid) - 1;
+
+    TRACE("(%p, %d)\n", ids, length);
+
+    if (!ids || !length) return null_oid;
+
+    *oid = 0;
+    for (i = 0; i < length; i++)
+    {
+        sprintf(one, "%d", ids[i]);
+        len = strlen(one);
+        if (left >= len)
+        {
+            strcat(oid, one);
+            left -= len;
+        }
+        else return oid;
+
+        if (i < length - 1)
+        {
+            if (left > 0)
+            {
+                strcat(oid, ".");
+                left--;
+            }
+            else return oid;
+        }
+    }
+    return oid;
+}
+
+/***********************************************************************
+ *      SnmpUtilOidToA          (SNMPAPI.@)
+ */
+LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *oid)
+{
+    static char null_oid[] = "<null oid>";
+
+    TRACE("(%p)\n", oid);
+
+    if (oid)
+        return SnmpUtilIdsToA(oid->ids, oid->idLength);
+    else
+        return null_oid;
+}
+
+/***********************************************************************
+ *      SnmpUtilPrintOid        (SNMPAPI.@)
+ */
+void WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *oid)
+{
+    unsigned int i;
+
+    TRACE("(%p)\n", oid);
+
+    if (!oid) return;
+
+    for (i = 0; i < oid->idLength; i++)
+    {
+        TRACE("%u", oid->ids[i]);
+        if (i < oid->idLength - 1) TRACE(".");
+    }
+}
+
+/***********************************************************************
+ *      SnmpUtilPrintAsnAny     (SNMPAPI.@)
+ */
+void WINAPI SnmpUtilPrintAsnAny(AsnAny *any)
+{
+    unsigned int i;
+
+    TRACE("(%p)\n", any);
+
+    switch (any->asnType)
+    {
+    case ASN_NULL:       TRACE("Null value\n"); return;
+    case ASN_INTEGER32:  TRACE("Integer32 %d\n", any->asnValue.number); return;
+    case ASN_UNSIGNED32: TRACE("Unsigned32 %u\n", any->asnValue.unsigned32); return;
+    case ASN_COUNTER32:  TRACE("Counter32 %u\n", any->asnValue.counter); return;
+    case ASN_GAUGE32:    TRACE("Gauge32 %u\n", any->asnValue.gauge); return;
+    case ASN_TIMETICKS:  TRACE("Timeticks %u\n", any->asnValue.ticks); return;
+    case ASN_COUNTER64:
+    {
+        TRACE("Counter64 %llu\n", any->asnValue.counter64.QuadPart);
+        return;
+    }
+    case ASN_OCTETSTRING:
+    {
+        TRACE("String ");
+        for (i = 0; i < any->asnValue.string.length; i++)
+            TRACE("%c", any->asnValue.string.stream[i]);
+        TRACE("\n");
+        return;
+    }
+    case ASN_IPADDRESS:
+    {
+        TRACE("IpAddress ");
+        if (any->asnValue.string.length < 4)
+        {
+            TRACE("Invalid\n");
+            return;
+        }
+        for (i = 0; i < 4; i++)
+        {
+            TRACE("%u", any->asnValue.string.stream[i]);
+            if (i < 3) TRACE(".");
+        }
+        TRACE("\n");
+        return;
+    }
+    case ASN_BITS:
+    {
+        TRACE("Bits ");
+        for (i = 0; i < any->asnValue.string.length; i++)
+        {
+            TRACE("0x%02x", any->asnValue.string.stream[i]);
+            if (i < any->asnValue.object.idLength - 1) TRACE(" ");
+        }
+        TRACE("\n");
+        return;
+    }
+    case ASN_OPAQUE:
+    {
+        TRACE("Opaque ");
+        for (i = 0; i < any->asnValue.string.length; i++)
+        {
+            TRACE("0x%02x", any->asnValue.string.stream[i]);
+            if (i < any->asnValue.object.idLength - 1) TRACE(" ");
+        }
+        TRACE("\n");
+        return;
+    }
+    case ASN_OBJECTIDENTIFIER:
+    {
+        TRACE("ObjectID ");
+        for (i = 0; i < any->asnValue.object.idLength; i++)
+        {
+            TRACE("%u", any->asnValue.object.ids[i]);
+            if (i < any->asnValue.object.idLength - 1) TRACE(".");
+        }
+        TRACE("\n");
+        return;
+    }
+    default:
+    {
+        TRACE("Invalid type %d\n", any->asnType);
+        return;
+    }
+    }
+}
diff --git a/dlls/snmpapi/snmpapi.spec b/dlls/snmpapi/snmpapi.spec
index b98d029..2ada750 100644
--- a/dlls/snmpapi/snmpapi.spec
+++ b/dlls/snmpapi/snmpapi.spec
@@ -20,8 +20,8 @@
 @ stub SnmpUtilAnsiToUnicode
 @ stdcall SnmpUtilAsnAnyCpy(ptr ptr)
 @ stdcall SnmpUtilAsnAnyFree(ptr)
-@ stub SnmpUtilDbgPrint
-@ stub SnmpUtilIdsToA
+@ stdcall SnmpUtilDbgPrint(long str)
+@ stdcall SnmpUtilIdsToA(ptr long)
 @ stdcall SnmpUtilMemAlloc(long)
 @ stdcall SnmpUtilMemFree(ptr)
 @ stdcall SnmpUtilMemReAlloc(ptr long)
@@ -34,9 +34,9 @@
 @ stdcall SnmpUtilOidCpy(ptr ptr)
 @ stdcall SnmpUtilOidFree(ptr)
 @ stdcall SnmpUtilOidNCmp(ptr ptr long)
-@ stub SnmpUtilOidToA
-@ stub SnmpUtilPrintAsnAny
-@ stub SnmpUtilPrintOid
+@ stdcall SnmpUtilOidToA(ptr)
+@ stdcall SnmpUtilPrintAsnAny(ptr)
+@ stdcall SnmpUtilPrintOid(ptr)
 @ stub SnmpUtilStrlenW
 @ stub SnmpUtilUnicodeToAnsi
 @ stdcall SnmpUtilVarBindCpy(ptr ptr)




More information about the wine-cvs mailing list