1*89a07cf8Schristos /* $NetBSD: common.cpp,v 1.1.1.1 2016/01/13 18:41:48 christos Exp $ */
2*89a07cf8Schristos
3*89a07cf8Schristos /* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
4*89a07cf8Schristos Written by James Clark (jjc@jclark.com)
5*89a07cf8Schristos
6*89a07cf8Schristos This file is part of groff.
7*89a07cf8Schristos
8*89a07cf8Schristos groff is free software; you can redistribute it and/or modify it under
9*89a07cf8Schristos the terms of the GNU General Public License as published by the Free
10*89a07cf8Schristos Software Foundation; either version 2, or (at your option) any later
11*89a07cf8Schristos version.
12*89a07cf8Schristos
13*89a07cf8Schristos groff is distributed in the hope that it will be useful, but WITHOUT ANY
14*89a07cf8Schristos WARRANTY; without even the implied warranty of MERCHANTABILITY or
15*89a07cf8Schristos FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16*89a07cf8Schristos for more details.
17*89a07cf8Schristos
18*89a07cf8Schristos You should have received a copy of the GNU General Public License along
19*89a07cf8Schristos with groff; see the file COPYING. If not, write to the Free Software
20*89a07cf8Schristos Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
21*89a07cf8Schristos
hash(const char * s,int len)22*89a07cf8Schristos unsigned hash(const char *s, int len)
23*89a07cf8Schristos {
24*89a07cf8Schristos #if 0
25*89a07cf8Schristos unsigned h = 0, g;
26*89a07cf8Schristos while (*s != '\0') {
27*89a07cf8Schristos h <<= 4;
28*89a07cf8Schristos h += *s++;
29*89a07cf8Schristos if ((g = h & 0xf0000000) != 0) {
30*89a07cf8Schristos h ^= g >> 24;
31*89a07cf8Schristos h ^= g;
32*89a07cf8Schristos }
33*89a07cf8Schristos }
34*89a07cf8Schristos #endif
35*89a07cf8Schristos unsigned h = 0;
36*89a07cf8Schristos while (--len >= 0)
37*89a07cf8Schristos h = *s++ + 65587*h;
38*89a07cf8Schristos return h;
39*89a07cf8Schristos }
40*89a07cf8Schristos
41