00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "dthdr.h"
00018
00019 #ifdef DMALLOC
00020 #include "dmalloc.h"
00021 #endif
00022
00023
00024
00025
00026
00027 #if __STD_C
00028 uint dtstrhash(reg uint h, Void_t * args, reg int n)
00029 #else
00030 uint dtstrhash(h, args, n)
00031 reg uint h;
00032 Void_t *args;
00033 reg int n;
00034 #endif
00035 {
00036 reg unsigned char *s = (unsigned char *) args;
00037
00038 if (n <= 0) {
00039 for (; (n = *s) != 0; ++s)
00040 h = dtcharhash(h, n);
00041 } else {
00042 reg unsigned char *ends;
00043 for (ends = s + n; s < ends; ++s) {
00044 n = *s;
00045 h = dtcharhash(h, n);
00046 }
00047 }
00048
00049 return h;
00050 }