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