2 * This is a really simple stupid standalone program which will find two
3 * filenames with the same CRC, used to test the directory iterator.
5 * cc -I /usr/src/sys test_dupkey.c /usr/src/sys/libkern/crc32.c \
6 * /usr/src/sys/libkern/icrc32.c -o test_dupkey
8 * $DragonFly: src/sbin/hammer/test_dupkey.c,v 1.1 2008/06/26 04:07:57 dillon Exp $
11 #include "hammer_util.h"
13 static uint32_t namekey(const char *name);
14 static void randomname(char *name);
16 uint32_t bitmap[0x80000000U / 32];
19 main(int ac, char **av)
28 srandom(0); /* reproducable random sequence number */
33 ptr = &bitmap[key / 32];
34 mask = 1 << (key & 31);
41 printf("duplicate found at count %d key %08x\n", count, key);
42 printf("'%s' and", name);
54 printf(" '%s'\n", name);
59 namekey(const char *name)
63 key = crc32(name, strlen(name)) & 0x7FFFFFFF;
71 randomname(char *name)
73 int len = random() % 16 + 8;
76 for (i = 0; i < len; ++i)
77 name[i] = random() % 26 + 'a';