version 1.23, 2011/12/10 21:46:59 |
version 1.24, 2011/12/16 12:06:35 |
Line 365 index_read(const DBT *key, const DBT *val, int index, |
|
Line 365 index_read(const DBT *key, const DBT *val, int index, |
|
{ |
{ |
size_t left; |
size_t left; |
char *np, *cp; |
char *np, *cp; |
|
char type; |
|
|
#define INDEX_BREAD(_dst) \ |
#define INDEX_BREAD(_dst) \ |
do { \ |
do { \ |
Line 375 index_read(const DBT *key, const DBT *val, int index, |
|
Line 376 index_read(const DBT *key, const DBT *val, int index, |
|
cp = np + 1; \ |
cp = np + 1; \ |
} while (/* CONSTCOND */ 0) |
} while (/* CONSTCOND */ 0) |
|
|
left = val->size; |
if (0 == (left = val->size)) |
cp = (char *)val->data; |
return(0); |
|
|
|
cp = val->data; |
rec->res.rec = *(recno_t *)key->data; |
rec->res.rec = *(recno_t *)key->data; |
rec->res.volume = index; |
rec->res.volume = index; |
|
|
INDEX_BREAD(rec->res.type); |
if ('d' == (type = *cp++)) |
|
rec->res.type = RESTYPE_MDOC; |
|
else if ('a' == type) |
|
rec->res.type = RESTYPE_MAN; |
|
else if ('c' == type) |
|
rec->res.type = RESTYPE_CAT; |
|
else |
|
return(0); |
|
|
|
left--; |
INDEX_BREAD(rec->res.file); |
INDEX_BREAD(rec->res.file); |
INDEX_BREAD(rec->res.cat); |
INDEX_BREAD(rec->res.cat); |
INDEX_BREAD(rec->res.title); |
INDEX_BREAD(rec->res.title); |
|
|
recfree(struct rec *rec) |
recfree(struct rec *rec) |
{ |
{ |
|
|
free(rec->res.type); |
|
free(rec->res.file); |
free(rec->res.file); |
free(rec->res.cat); |
free(rec->res.cat); |
free(rec->res.title); |
free(rec->res.title); |