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

Reply via email to