-/* Returns a hash value for null-terminated string S, with
- lowercase and uppercase letters treated as equal, starting
- from BASIS. */
-unsigned int
-hash_case_string (const char *s, unsigned int basis)
-{
- size_t n = strlen (s);
- uint32_t a, b, c;
- uint32_t tmp[3];
- int i;
-
- a = b = c = 0xdeadbeef + n + basis;
-
- while (n >= 12)
- {
- for (i = 0; i < 12; i++)
- ((unsigned char *)tmp)[i] = toupper ((unsigned char) s[i]);
- a += tmp[0];
- b += tmp[1];
- c += tmp[2];
- HASH_MIX (a, b, c);
- n -= 12;
- s += 12;
- }
-
- if (n > 0)
- {
- memset (tmp, 0, 12);
- for (i = 0; i < n; i++)
- ((unsigned char *)tmp)[i] = toupper ((unsigned char) s[i]);
- a += tmp[0];
- b += tmp[1];
- c += tmp[2];
- }
-
- HASH_FINAL (a, b, c);
- return c;
-}
-