version 1.78, 2013/12/26 22:12:46 |
version 1.79, 2013/12/26 22:30:41 |
|
|
char key[]; /* the string itself */ |
char key[]; /* the string itself */ |
}; |
}; |
|
|
struct id { |
struct inodev { |
ino_t ino; |
ino_t st_ino; |
dev_t dev; |
dev_t st_dev; |
}; |
}; |
|
|
struct mpage { |
struct mpage { |
struct id id; /* used for hashing routine */ |
struct inodev inodev; /* used for hashing routine */ |
struct mpage *next; /* next in mpages_list */ |
struct mpage *next; /* next in mpages_list */ |
enum form dform; /* path-cued form */ |
enum form dform; /* path-cued form */ |
enum form sform; /* suffix-cued form */ |
enum form sform; /* suffix-cued form */ |
Line 324 main(int argc, char *argv[]) |
|
Line 324 main(int argc, char *argv[]) |
|
mpages_info.halloc = filename_info.halloc = hash_halloc; |
mpages_info.halloc = filename_info.halloc = hash_halloc; |
mpages_info.hfree = filename_info.hfree = hash_free; |
mpages_info.hfree = filename_info.hfree = hash_free; |
|
|
mpages_info.key_offset = offsetof(struct mpage, id); |
mpages_info.key_offset = offsetof(struct mpage, inodev); |
filename_info.key_offset = offsetof(struct mpage, file); |
filename_info.key_offset = offsetof(struct mpage, file); |
|
|
progname = strrchr(argv[0], '/'); |
progname = strrchr(argv[0], '/'); |
Line 787 fileadd(struct mpage *mpage) |
|
Line 787 fileadd(struct mpage *mpage) |
|
static int |
static int |
inocheck(const struct stat *st) |
inocheck(const struct stat *st) |
{ |
{ |
struct id id; |
struct inodev inodev; |
uint32_t hash; |
uint32_t hash; |
|
|
memset(&id, 0, sizeof(id)); |
memset(&inodev, 0, sizeof(inodev)); |
id.ino = hash = st->st_ino; |
inodev.st_ino = hash = st->st_ino; |
id.dev = st->st_dev; |
inodev.st_dev = st->st_dev; |
|
|
return(NULL != ohash_find(&mpages, ohash_lookup_memory( |
return(NULL != ohash_find(&mpages, ohash_lookup_memory( |
&mpages, (char *)&id, sizeof(id), hash))); |
&mpages, (char *)&inodev, sizeof(inodev), hash))); |
} |
} |
|
|
/* |
/* |
Line 809 inoadd(const struct stat *st, struct mpage *mpage) |
|
Line 809 inoadd(const struct stat *st, struct mpage *mpage) |
|
uint32_t hash; |
uint32_t hash; |
unsigned int slot; |
unsigned int slot; |
|
|
mpage->id.ino = hash = st->st_ino; |
mpage->inodev.st_ino = hash = st->st_ino; |
mpage->id.dev = st->st_dev; |
mpage->inodev.st_dev = st->st_dev; |
slot = ohash_lookup_memory |
slot = ohash_lookup_memory(&mpages, |
(&mpages, (char *)&mpage->id, sizeof(mpage->id), hash); |
(char *)&mpage->inodev, sizeof(mpage->inodev), hash); |
|
|
assert(NULL == ohash_find(&mpages, slot)); |
assert(NULL == ohash_find(&mpages, slot)); |
ohash_insert(&mpages, slot, mpage); |
ohash_insert(&mpages, slot, mpage); |