Fix problems reported by: -Wsign-conversion from gcc 4.4 on Solaris
authorTrond Norbye <trond.norbye@sun.com>
Tue, 11 Aug 2009 18:56:12 +0000 (20:56 +0200)
committerTrond Norbye <trond.norbye@sun.com>
Tue, 11 Aug 2009 18:56:12 +0000 (20:56 +0200)
13 files changed:
clients/memcat.c
clients/memcp.c
clients/memdump.c
clients/memerror.c
clients/memflush.c
clients/memrm.c
clients/memslap.c
clients/memstat.c
clients/utilities.h
libmemcached/crc.c
libmemcached/memcached_hash.c
libmemcached/murmur_hash.c
tests/function.c

index 1c659b781531fce0593c3406d30f6a0c5912c96b..944afe721467a009da8ed1ce4343323f5c7e7641 100644 (file)
@@ -110,14 +110,14 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
     {
-      {"version", no_argument, NULL, OPT_VERSION},
-      {"help", no_argument, NULL, OPT_HELP},
-      {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-      {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-      {"servers", required_argument, NULL, OPT_SERVERS},
-      {"flag", no_argument, &opt_displayflag, OPT_FLAG},
-      {"hash", required_argument, NULL, OPT_HASH},
-      {"binary", no_argument, NULL, OPT_BINARY},
+      {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+      {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+      {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+      {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+      {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+      {(OPTIONSTRING)"flag", no_argument, &opt_displayflag, OPT_FLAG},
+      {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH},
+      {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
       {0, 0, 0, 0},
     };
 
index 778beaf783c10298201666453d86ed34ea698ba0..716bfefd03482e94c40d8b881260e598c2d55206 100644 (file)
@@ -165,18 +165,18 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
     {
-      {"version", no_argument, NULL, OPT_VERSION},
-      {"help", no_argument, NULL, OPT_HELP},
-      {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-      {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-      {"servers", required_argument, NULL, OPT_SERVERS},
-      {"flag", required_argument, NULL, OPT_FLAG},
-      {"expire", required_argument, NULL, OPT_EXPIRE},
-      {"set",  no_argument, NULL, OPT_SET},
-      {"add",  no_argument, NULL, OPT_ADD},
-      {"replace",  no_argument, NULL, OPT_REPLACE},
-      {"hash", required_argument, NULL, OPT_HASH},
-      {"binary", no_argument, NULL, OPT_BINARY},
+      {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+      {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+      {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+      {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+      {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+      {(OPTIONSTRING)"flag", required_argument, NULL, OPT_FLAG},
+      {(OPTIONSTRING)"expire", required_argument, NULL, OPT_EXPIRE},
+      {(OPTIONSTRING)"set",  no_argument, NULL, OPT_SET},
+      {(OPTIONSTRING)"add",  no_argument, NULL, OPT_ADD},
+      {(OPTIONSTRING)"replace",  no_argument, NULL, OPT_REPLACE},
+      {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH},
+      {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
       {0, 0, 0, 0},
     };
 
index 3dc687d8e8d3a27f23954836b26f3bd4944b5c40..1a21ab64e9be365b34c599f416bf0db58d92896c 100644 (file)
@@ -102,13 +102,13 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
     {
-      {"version", no_argument, NULL, OPT_VERSION},
-      {"help", no_argument, NULL, OPT_HELP},
-      {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-      {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-      {"servers", required_argument, NULL, OPT_SERVERS},
-      {"hash", required_argument, NULL, OPT_HASH},
-      {"binary", no_argument, NULL, OPT_BINARY},
+      {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+      {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+      {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+      {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+      {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+      {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH},
+      {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
       {0, 0, 0, 0}
     };
 
index b70f88300792a71516a597090bb31e48874b9866..fbad55ba2f00245d2182bcbda522ee20c3428647 100644 (file)
@@ -43,10 +43,10 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
     {
-      {"version", no_argument, NULL, OPT_VERSION},
-      {"help", no_argument, NULL, OPT_HELP},
-      {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-      {"debug", no_argument, &opt_verbose, OPT_DEBUG},
+      {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+      {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+      {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+      {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
       {0, 0, 0, 0},
     };
 
index 0d2727bfe274ce3548144b0df4a194e0e4188458..12034adba47e249619b65775b8d66d8ecf375150 100644 (file)
@@ -74,13 +74,13 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
   {
-    {"version", no_argument, NULL, OPT_VERSION},
-    {"help", no_argument, NULL, OPT_HELP},
-    {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-    {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-    {"servers", required_argument, NULL, OPT_SERVERS},
-    {"expire", required_argument, NULL, OPT_EXPIRE},
-    {"binary", no_argument, NULL, OPT_BINARY},
+    {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+    {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+    {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+    {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+    {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+    {(OPTIONSTRING)"expire", required_argument, NULL, OPT_EXPIRE},
+    {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
     {0, 0, 0, 0},
   };
   int option_index= 0;
index 8ed122d77b2283dd3240f35d1f55f76e30e79f79..203146efae04ca2df288901ec19473429c9c6a9d 100644 (file)
@@ -87,14 +87,14 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
   {
-    {"version", no_argument, NULL, OPT_VERSION},
-    {"help", no_argument, NULL, OPT_HELP},
-    {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-    {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-    {"servers", required_argument, NULL, OPT_SERVERS},
-    {"expire", required_argument, NULL, OPT_EXPIRE},
-    {"hash", required_argument, NULL, OPT_HASH},
-    {"binary", no_argument, NULL, OPT_BINARY},
+    {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+    {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+    {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+    {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+    {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+    {(OPTIONSTRING)"expire", required_argument, NULL, OPT_EXPIRE},
+    {(OPTIONSTRING)"hash", required_argument, NULL, OPT_HASH},
+    {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
     {0, 0, 0, 0},
   };
   int option_index= 0;
index 279be30b67d4e9aa9df96fda4607280574320a92..4e3d6813f05742cc6ba4a26a7f64446d306e62bf 100644 (file)
@@ -238,21 +238,21 @@ void options_parse(int argc, char *argv[])
 
   static struct option long_options[]=
     {
-      {"concurrency", required_argument, NULL, OPT_SLAP_CONCURRENCY},
-      {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-      {"execute-number", required_argument, NULL, OPT_SLAP_EXECUTE_NUMBER},
-      {"flag", no_argument, &opt_displayflag, OPT_FLAG},
-      {"flush", no_argument, &opt_flush, OPT_FLUSH},
-      {"help", no_argument, NULL, OPT_HELP},
-      {"initial-load", required_argument, NULL, OPT_SLAP_INITIAL_LOAD}, /* Number to load initially */
-      {"non-blocking", no_argument, &opt_non_blocking_io, OPT_SLAP_NON_BLOCK},
-      {"servers", required_argument, NULL, OPT_SERVERS},
-      {"tcp-nodelay", no_argument, &opt_tcp_nodelay, OPT_SLAP_TCP_NODELAY},
-      {"test", required_argument, NULL, OPT_SLAP_TEST},
-      {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-      {"version", no_argument, NULL, OPT_VERSION},
-      {"binary", no_argument, NULL, OPT_BINARY},
-      {"udp", no_argument, NULL, OPT_UDP},
+      {(OPTIONSTRING)"concurrency", required_argument, NULL, OPT_SLAP_CONCURRENCY},
+      {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+      {(OPTIONSTRING)"execute-number", required_argument, NULL, OPT_SLAP_EXECUTE_NUMBER},
+      {(OPTIONSTRING)"flag", no_argument, &opt_displayflag, OPT_FLAG},
+      {(OPTIONSTRING)"flush", no_argument, &opt_flush, OPT_FLUSH},
+      {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+      {(OPTIONSTRING)"initial-load", required_argument, NULL, OPT_SLAP_INITIAL_LOAD}, /* Number to load initially */
+      {(OPTIONSTRING)"non-blocking", no_argument, &opt_non_blocking_io, OPT_SLAP_NON_BLOCK},
+      {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+      {(OPTIONSTRING)"tcp-nodelay", no_argument, &opt_tcp_nodelay, OPT_SLAP_TCP_NODELAY},
+      {(OPTIONSTRING)"test", required_argument, NULL, OPT_SLAP_TEST},
+      {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+      {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+      {(OPTIONSTRING)"binary", no_argument, NULL, OPT_BINARY},
+      {(OPTIONSTRING)"udp", no_argument, NULL, OPT_UDP},
       {0, 0, 0, 0},
     };
 
index 27c34a41c2caf4ad048c3bb4f8320cfe5950142a..37e18e229c8e6e10193207d0aeb8d02687ca8712 100644 (file)
@@ -35,13 +35,13 @@ static char *analyze_mode= NULL;
 
 static struct option long_options[]=
 {
-  {"version", no_argument, NULL, OPT_VERSION},
-  {"help", no_argument, NULL, OPT_HELP},
-  {"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
-  {"debug", no_argument, &opt_verbose, OPT_DEBUG},
-  {"servers", required_argument, NULL, OPT_SERVERS},
-  {"flag", no_argument, &opt_displayflag, OPT_FLAG},
-  {"analyze", optional_argument, NULL, OPT_ANALYZE},
+  {(OPTIONSTRING)"version", no_argument, NULL, OPT_VERSION},
+  {(OPTIONSTRING)"help", no_argument, NULL, OPT_HELP},
+  {(OPTIONSTRING)"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
+  {(OPTIONSTRING)"debug", no_argument, &opt_verbose, OPT_DEBUG},
+  {(OPTIONSTRING)"servers", required_argument, NULL, OPT_SERVERS},
+  {(OPTIONSTRING)"flag", no_argument, &opt_displayflag, OPT_FLAG},
+  {(OPTIONSTRING)"analyze", optional_argument, NULL, OPT_ANALYZE},
   {0, 0, 0, 0},
 };
 
index af6706135b84a19232b4162ee1e542d0d0188f3f..7ca92497ccbb3b855349dc358712d38c355589fd 100644 (file)
 # endif
 #endif
 
+#ifdef __sun
+  /* For some odd reason the option struct on solaris defines the argument
+   * as char* and not const char*
+   */
+#define OPTIONSTRING char*
+#else
+#define OPTIONSTRING const char*
+#endif
+
 typedef struct memcached_programs_help_st memcached_programs_help_st;
 
 struct memcached_programs_help_st 
index 5c586bf0ab8663cea7ce90a79a2a11abb4d5be96..034ccf1b035e35e9f8064ff6e5a5c6197b055a4b 100644 (file)
@@ -80,7 +80,7 @@ uint32_t hash_crc32(const char *key, size_t key_length)
   uint32_t crc= UINT32_MAX;
 
   for (x= 0; x < key_length; x++)
-    crc= (crc >> 8) ^ crc32tab[(crc ^ (key[x])) & 0xff];
+     crc= (crc >> 8) ^ crc32tab[(crc ^ (uint64_t)key[x]) & 0xff];
 
   return ~crc;
 }
index 4956d18e0655e784bbb4e7a4b3c0200d4552bb77..129d76127e8e7271a5d19861892da6b4c474addd 100644 (file)
@@ -40,7 +40,7 @@ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memca
       for (x= 0; x < key_length; x++) 
       {
         temp_hash *= FNV_64_PRIME;
-        temp_hash ^= key[x];
+        temp_hash ^= (uint64_t)key[x];
       }
       hash= (uint32_t)temp_hash;
     }
@@ -50,7 +50,8 @@ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memca
       hash= (uint32_t) FNV_64_INIT;
       for (x= 0; x < key_length; x++) 
       {
-        hash ^= key[x];
+        uint32_t val= (uint32_t)key[x];
+        hash ^= val;
         hash *= (uint32_t) FNV_64_PRIME;
       }
     }
@@ -60,8 +61,9 @@ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memca
       hash= FNV_32_INIT;
       for (x= 0; x < key_length; x++) 
       {
+        uint32_t val= (uint32_t)key[x];
         hash *= FNV_32_PRIME;
-        hash ^= key[x];
+        hash ^= val;
       }
     }
     break;
@@ -70,7 +72,8 @@ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memca
       hash= FNV_32_INIT;
       for (x= 0; x < key_length; x++) 
       {
-        hash ^= key[x];
+        uint32_t val= (uint32_t)key[x];
+        hash ^= val;
         hash *= FNV_32_PRIME;
       }
     }
@@ -205,7 +208,8 @@ static uint32_t internal_generate_hash(const char *key, size_t key_length)
 
   while (key_length--) 
   {
-    value += (uint32_t) *ptr++;
+    uint32_t val= (uint32_t) *ptr++;
+    value += val;
     value += (value << 10);
     value ^= (value >> 6);
   }
index b95134408d287270b17508af10f2325f9d6035c4..f1c3267c53844ee903889d913fba3e0f8b95797d 100644 (file)
@@ -25,13 +25,13 @@ uint32_t murmur_hash(const char *key, size_t length)
   */
 
   const unsigned int m= 0x5bd1e995;
-  const size_t seed= (0xdeadbeef * length);
+  const uint32_t seed= (0xdeadbeef * (uint32_t)length);
   const int r= 24;
 
 
   // Initialize the hash to a 'random' value
 
-  size_t h= seed ^ length;
+  uint32_t h= seed ^ (uint32_t)length;
 
   // Mix 4 bytes at a time into the hash
 
@@ -56,8 +56,8 @@ uint32_t murmur_hash(const char *key, size_t length)
 
   switch(length)
   {
-  case 3: h ^= data[2] << 16;
-  case 2: h ^= data[1] << 8;
+  case 3: h ^= ((uint32_t)data[2]) << 16;
+  case 2: h ^= ((uint32_t)data[1]) << 8;
   case 1: h ^= data[0];
           h *= m;
   default: break;
index dc373e7bb5d012d99484e21a537d53ffa15de733..f4877a953a333d7c0548fcb1072dc9b93335e390 100644 (file)
@@ -2312,6 +2312,7 @@ static test_return  user_supplied_bug16(memcached_st *memc)
   return 0;
 }
 
+#ifndef __sun
 /* Check the validity of chinese key*/
 static test_return  user_supplied_bug17(memcached_st *memc)
 {
@@ -2338,6 +2339,7 @@ static test_return  user_supplied_bug17(memcached_st *memc)
 
     return 0;
 }
+#endif
 
 /*
   From Andrei on IRC