/contrib/groff/src/libs/libbib/common.cpp

https://bitbucket.org/freebsd/freebsd-head/ · C++ · 38 lines · 18 code · 2 blank · 18 comment · 5 complexity · ec50c930242d0152e6e299209fec543d MD5 · raw file

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