=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sort/Attic/fsort.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- src/usr.bin/sort/Attic/fsort.c 2006/10/29 18:40:34 1.15 +++ src/usr.bin/sort/Attic/fsort.c 2007/03/07 18:11:03 1.16 @@ -1,4 +1,4 @@ -/* $OpenBSD: fsort.c,v 1.15 2006/10/29 18:40:34 millert Exp $ */ +/* $OpenBSD: fsort.c,v 1.16 2007/03/07 18:11:03 millert Exp $ */ /*- * Copyright (c) 1993 @@ -36,7 +36,7 @@ #if 0 static char sccsid[] = "@(#)fsort.c 8.1 (Berkeley) 6/6/93"; #else -static char rcsid[] = "$OpenBSD: fsort.c,v 1.15 2006/10/29 18:40:34 millert Exp $"; +static char rcsid[] = "$OpenBSD: fsort.c,v 1.16 2007/03/07 18:11:03 millert Exp $"; #endif #endif /* not lint */ @@ -53,10 +53,9 @@ #include #include -u_char *buffer = NULL, *bufend = NULL, *linebuf = NULL; -size_t bufsize = BUFSIZE, linebuf_size = MAXLLEN; +u_char *linebuf; +size_t linebuf_size = MAXLLEN; struct tempfile fstack[MAXFCT]; -extern char toutpath[]; #define FSORTMAX 4 int PANIC = FSORTMAX; @@ -64,8 +63,9 @@ fsort(int binno, int depth, union f_handle infiles, int nfiles, FILE *outfp, struct field *ftbl) { - u_char *weights, **keypos, *tmpbuf; - static u_char **keylist; + u_char *weights, **keypos, *bufend, *tmpbuf; + static u_char *buffer, **keylist; + static size_t bufsize; int ntfiles, mfct = 0, total, i, maxb, lastb, panic = 0; int c, nelem; long sizes[NBINS+1]; @@ -85,10 +85,13 @@ tfield[0].weights = ascii; tfield[0].icol.num = 1; weights = ftbl[0].weights; - if (keylist == NULL) { - if ((keylist = calloc(MAXNUM, sizeof(u_char *))) == NULL) + if (buffer == NULL) { + bufsize = BUFSIZE; + if ((buffer = malloc(bufsize)) == NULL || + (keylist = calloc(MAXNUM, sizeof(u_char *))) == NULL) err(2, NULL); } + bufend = buffer + bufsize - 1; if (binno >= 0) { tfiles.top = infiles.top + nfiles; get = getnext;