On Thu, 28 Jun 2007 07:35:52 -0400
Robert Story <[EMAIL PROTECTED]> wrote:
> On Thu, 28 Jun 2007 19:39:58 +0900 Mitsuru wrote:
> MC> #if defined (WIN32) && !defined (mingw32)
> MC> else if (vars->val_len == sizeof(__int64)){
> MC> const unsigned __int64 *val_ullong
> MC> = (const unsigned __int64 *) value;
> MC> #else
> MC> - else if (vars->val_len == sizeof(long long)){
> MC> + else if (vars->val_len == sizeof(long long)){
> MC> const unsigned long long *val_ullong
> MC> = (const unsigned long long *) value;
> MC> #endif
>
> I'd much rather see this special case done away with, and simply use the
> uint64_t type from net-snmp-config.h. Since windows has it's own static
> version, that file should be updated to define uint64_t as __int64.
That makes sense.
And ./win32/net-snmp/net-snmp-config.h already includes following 2 lines.
| typedef unsigned __int64 uint64_t;
| #define HAVE_UINT64_T 1
Then, how about the attached patch?
Thank you,
----
Mitsuru Chinen <[EMAIL PROTECTED]>
Index: snmplib/snmp_client.c
===================================================================
--- snmplib/snmp_client.c (revision 16563)
+++ snmplib/snmp_client.c (working copy)
@@ -807,16 +807,11 @@
}
}
#endif
-#if SIZEOF_LONG != SIZEOF_LONG_LONG
-#if defined (WIN32) && !defined (mingw32)
- else if (vars->val_len == sizeof(__int64)){
- const unsigned __int64 *val_ullong
- = (const unsigned __int64 *) value;
-#else
- else if (vars->val_len == sizeof(long long)){
- const unsigned long long *val_ullong
- = (const unsigned long long *) value;
-#endif
+#if HAVE_UINT64_T
+ else if (vars->val_len == sizeof(uint64_t)){
+ const uint64_t *val_ullong
+ = (const uint64_t *) value;
+
*(vars->val.integer) = (long) *val_ullong;
if (*(vars->val.integer) > 0xffffffff) {
snmp_log(LOG_ERR,"truncating integer value > 32 bits\n");
Index: include/net-snmp/types.h
===================================================================
--- include/net-snmp/types.h (revision 16563)
+++ include/net-snmp/types.h (working copy)
@@ -157,8 +157,10 @@
#ifndef HAVE_UINT64_T
#ifdef HAVE_U_INT64_T
typedef u_int64_t uint64_t;
+#define HAVE_UINT64_T 1
#elif defined(INT64_T)
typedef unsigned INT64_T uint64_t;
+#define HAVE_UINT64_T 1
#endif
#endif
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders