view src/ploki/strutil.c @ 10131:bbbdb09e6365

<boily> le/rn mate//Mat\xc3\xa9 is a southern hemisphere shamanist beverage that opens your inner self to the Sacred World. Its enlightened users become friendly, wishing \xe2\x80\x9cG\'day, mat\xc3\xa9!\xe2\x80\x9d to one another.
author HackBot
date Sat, 14 Jan 2017 14:02:22 +0000
parents ac0403686959
children
line wrap: on
line source

#include "strutil.h"

#include <string.h>

/* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins
 * from requirements by Colin Plumb.
 * (http://burtleburtle.net/bob/hash/doobs.html) */
size_t u_hash(const char *s, size_t l, size_t h) {
	size_t i;

	for (i = 0; i < l; ++i) {
		h += (unsigned char)s[i];
		h += h << 10;
		h ^= h >> 6;
	}
	h += h << 3;
	h ^= h >> 11;
	h += h << 15;

	return h;
}

int u_cmp(const char *as, size_t al, const char *bs, size_t bl) {
	int tmp;
	if (as == bs && al == bl)
		return 0;
	if ((tmp = memcmp(as, bs, al < bl ? al : bl)))
		return tmp;
	if (al < bl)
		return -1;
	if (al > bl)
		return 1;
	return 0;
}