X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fhash.c;h=129ead1a830b478ec8f27c8cc662611068d1a971;hb=b8f036d16c508efde5bacfab9a96d8b6c6aeeeb2;hp=5d156da8ae8a2d94ea302a8c9c3961a589576feb;hpb=53d0aff795316dc1a4b785632f0d4d93c861e9cb;p=wget
diff --git a/src/hash.c b/src/hash.c
index 5d156da8..129ead1a 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -1,6 +1,6 @@
/* Hash tables.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free
- Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GNU Wget.
@@ -17,21 +17,22 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wget. If not, see .
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables. You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL". If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so. If you do not wish to do
-so, delete this exception statement from your version. */
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work. */
/* With -DSTANDALONE, this file can be compiled outside Wget source
tree. To test, also use -DTEST. */
-#ifdef HAVE_CONFIG_H
-# include
+#ifndef STANDALONE
+# include "wget.h"
#endif
#include
@@ -42,7 +43,6 @@ so, delete this exception statement from your version. */
#ifndef STANDALONE
/* Get Wget's utility headers. */
-# include "wget.h"
# include "utils.h"
#else
/* Make do without them. */
@@ -54,9 +54,9 @@ so, delete this exception statement from your version. */
# define countof(x) (sizeof (x) / sizeof ((x)[0]))
# endif
# include
-# define TOLOWER(x) tolower ((unsigned char) (x))
-# if __STDC_VERSION__ >= 199901L
-# include /* for uintptr_t */
+# define c_tolower(x) tolower ((unsigned char) (x))
+# ifdef HAVE_STDINT_H
+# include
# else
typedef unsigned long uintptr_t;
# endif
@@ -226,7 +226,7 @@ prime_size (int size, int *prime_offset)
243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
1174703521, 1527114613, 1837299131, 2147483647
};
- int i;
+ size_t i;
for (i = *prime_offset; i < countof (primes); i++)
if (primes[i] >= size)
@@ -423,14 +423,14 @@ grow_hash_table (struct hash_table *ht)
table if necessary. */
void
-hash_table_put (struct hash_table *ht, const void *key, void *value)
+hash_table_put (struct hash_table *ht, const void *key, const void *value)
{
struct cell *c = find_cell (ht, key);
if (CELL_OCCUPIED (c))
{
/* update existing item */
c->key = (void *)key; /* const? */
- c->value = value;
+ c->value = (void *)value;
return;
}
@@ -445,7 +445,7 @@ hash_table_put (struct hash_table *ht, const void *key, void *value)
/* add new item */
++ht->count;
c->key = (void *)key; /* const? */
- c->value = value;
+ c->value = (void *)value;
}
/* Remove KEY->value mapping from HT. Return 0 if there was no such
@@ -630,7 +630,7 @@ hash_table_count (const struct hash_table *ht)
* Support for hash tables whose keys are strings.
*
*/
-
+
/* Base 31 hash function. Taken from Gnome's glib, modified to use
standard C types.
@@ -643,11 +643,11 @@ hash_string (const void *key)
{
const char *p = key;
unsigned int h = *p;
-
+
if (h)
for (p += 1; *p != '\0'; p++)
h = (h << 5) - h + *p;
-
+
return h;
}
@@ -680,12 +680,12 @@ static unsigned long
hash_string_nocase (const void *key)
{
const char *p = key;
- unsigned int h = TOLOWER (*p);
-
+ unsigned int h = c_tolower (*p);
+
if (h)
for (p += 1; *p != '\0'; p++)
- h = (h << 5) - h + TOLOWER (*p);
-
+ h = (h << 5) - h + c_tolower (*p);
+
return h;
}