Line data Source code
1 : /* Copyright (C) 1989-2020 Free Software Foundation, Inc. 2 : Written by James Clark (jjc@jclark.com) 3 : 4 : This file is part of groff, the GNU roff typesetting system. 5 : 6 : groff is free software; you can redistribute it and/or modify it under 7 : the terms of the GNU General Public License as published by the Free 8 : Software Foundation, either version 3 of the License, or 9 : (at your option) any later version. 10 : 11 : groff is distributed in the hope that it will be useful, but WITHOUT ANY 12 : WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 : FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 : for more details. 15 : 16 : You should have received a copy of the GNU General Public License 17 : along with this program. If not, see <http://www.gnu.org/licenses/>. */ 18 : 19 0 : unsigned hash(const char *s, int len) 20 : { 21 : #if 0 22 : unsigned h = 0, g; 23 : while (*s != '\0') { 24 : h <<= 4; 25 : h += *s++; 26 : if ((g = h & 0xf0000000) != 0) { 27 : h ^= g >> 24; 28 : h ^= g; 29 : } 30 : } 31 : #endif 32 0 : unsigned h = 0; 33 0 : while (--len >= 0) 34 0 : h = *s++ + 65587*h; 35 0 : return h; 36 : } 37 : 38 : // Local Variables: 39 : // fill-column: 72 40 : // mode: C++ 41 : // End: 42 : // vim: set cindent noexpandtab shiftwidth=2 textwidth=72: