version 1.18, 2007/03/07 18:11:03 |
version 1.19, 2007/03/11 00:38:01 |
|
|
short flno; |
short flno; |
RECHEADER rec[1]; |
RECHEADER rec[1]; |
} MFILE; |
} MFILE; |
static u_char *wts, *wts1; |
typedef struct tmfile { |
static struct mfile *cfilebuf; |
u_char *end; |
static void *buffer; |
short flno; |
static size_t bufsize; |
TRECHEADER rec[1]; |
|
} TMFILE; |
|
u_char *wts, *wts1 = 0; |
|
struct mfile *cfilebuf; |
|
|
static int cmp(RECHEADER *, RECHEADER *); |
static int cmp(RECHEADER *, RECHEADER *); |
static int insert(struct mfile **, struct mfile **, int, int); |
static int insert(struct mfile **, struct mfile **, int, int); |
|
|
wts = ftbl->weights; |
wts = ftbl->weights; |
if (!UNIQUE && SINGL_FLD && (ftbl->flags & F)) |
if (!UNIQUE && SINGL_FLD && (ftbl->flags & F)) |
wts1 = (ftbl->flags & R) ? Rascii : ascii; |
wts1 = (ftbl->flags & R) ? Rascii : ascii; |
if (cfilebuf == NULL) { |
if (!cfilebuf) { |
cfilebuf = malloc(MAXLLEN + sizeof(MFILE)); |
cfilebuf = malloc(MAXLLEN + sizeof(TMFILE)); |
if (cfilebuf == NULL) |
if (cfilebuf == NULL) |
errx(2, "cannot allocate memory"); |
errx(2, "cannot allocate memory"); |
} |
} |
|
|
i = min(16, nfiles) * LALIGN(MAXLLEN + sizeof(MFILE)); |
i = min(16, nfiles) * LALIGN(MAXLLEN+sizeof(TMFILE)); |
if (i > bufsize) { |
if (i > bufsize) { |
bufsize = i; |
do { |
if ((buffer = realloc(buffer, bufsize)) == NULL) |
bufsize *= 2; |
err(2, NULL); |
} while (i > bufsize); |
|
buffer = realloc(buffer, bufsize); |
|
if (!buffer) |
|
errx(2, "cannot allocate memory"); |
|
bufend = buffer + bufsize - 1; |
} |
} |
|
|
if (binno >= 0) |
if (binno >= 0) |
|
|
|
|
for (i = j = 0; i < nfiles; i++) { |
for (i = j = 0; i < nfiles; i++) { |
cfile = (MFILE *) (buffer + |
cfile = (MFILE *) (buffer + |
i * LALIGN(MAXLLEN + sizeof(MFILE))); |
i * LALIGN(MAXLLEN + sizeof(TMFILE))); |
cfile->flno = j + infl0; |
cfile->flno = j + infl0; |
cfile->end = cfile->rec->data + MAXLLEN; |
cfile->end = cfile->rec->data + MAXLLEN; |
for (c = 1; c == 1;) { |
for (c = 1; c == 1;) { |
|
|
int c; |
int c; |
RECHEADER *crec, *prec, *trec; |
RECHEADER *crec, *prec, *trec; |
|
|
if (bufsize < 2 * ALIGN(MAXLLEN + sizeof(RECHEADER))) { |
if (bufsize < 2 * ALIGN(MAXLLEN + sizeof(TRECHEADER))) { |
bufsize = 2 * ALIGN(MAXLLEN + sizeof(RECHEADER)); |
do { |
|
bufsize *= 2; |
|
} while (bufsize < 2 * ALIGN(MAXLLEN + sizeof(TRECHEADER))); |
if ((buffer = realloc(buffer, bufsize)) == NULL) |
if ((buffer = realloc(buffer, bufsize)) == NULL) |
err(2, NULL); |
err(2, NULL); |
|
bufend = buffer + bufsize - 1; |
} |
} |
crec = (RECHEADER *) buffer; |
crec = (RECHEADER *) buffer; |
crec_end = ((char *)crec) + ALIGN(MAXLLEN + sizeof(RECHEADER)); |
crec_end = ((char *)crec) + ALIGN(MAXLLEN + sizeof(TRECHEADER)); |
prec = (RECHEADER *) crec_end; |
prec = (RECHEADER *) crec_end; |
prec_end = ((char *)prec) + ALIGN(MAXLLEN + sizeof(RECHEADER)); |
prec_end = ((char *)prec) + ALIGN(MAXLLEN + sizeof(TRECHEADER)); |
wts = ftbl->weights; |
wts = ftbl->weights; |
if (SINGL_FLD && (ftbl->flags & F)) |
if (SINGL_FLD && (ftbl->flags & F)) |
wts1 = ftbl->flags & R ? Rascii : ascii; |
wts1 = ftbl->flags & R ? Rascii : ascii; |