diff options
Diffstat (limited to 'nis/nis_util.c')
-rw-r--r-- | nis/nis_util.c | 58 |
1 files changed, 3 insertions, 55 deletions
diff --git a/nis/nis_util.c b/nis/nis_util.c index 99313be..1220987 100644 --- a/nis/nis_util.c +++ b/nis/nis_util.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (c) 1997, 1998, 1999, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997. @@ -47,58 +47,6 @@ __nis_finddirectory (directory_obj *dir, const_nis_name name) return fd_res; } -/* This is from libc/db/hash/hash_func.c, hash3 is static there */ -/* - * This is INCREDIBLY ugly, but fast. We break the string up into 8 byte - * units. On the first time through the loop we get the "leftover bytes" - * (strlen % 8). On every other iteration, we perform 8 HASHC's so we handle - * all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If - * this routine is heavily used enough, it's worth the ugly coding. - * - * OZ's original sdbm hash - */ -uint32_t -__nis_hash (const void *keyarg, register size_t len) -{ - register const u_char *key; - register size_t loop; - register uint32_t h; - -#define HASHC h = *key++ + 65599 * h - h = 0; - key = keyarg; - if (len > 0) - { - loop = (len + 8 - 1) >> 3; - switch (len & (8 - 1)) - { - case 0: - do { - HASHC; - /* FALLTHROUGH */ - case 7: - HASHC; - /* FALLTHROUGH */ - case 6: - HASHC; - /* FALLTHROUGH */ - case 5: - HASHC; - /* FALLTHROUGH */ - case 4: - HASHC; - /* FALLTHROUGH */ - case 3: - HASHC; - /* FALLTHROUGH */ - case 2: - HASHC; - /* FALLTHROUGH */ - case 1: - HASHC; - } while (--loop); - } - } - return (h); -} +/* The hash implementation is in a separate file. */ +#include "nis_hash.c" |