/*
* Sherlock Library -- Universal Sorter
*
- * (c) 2001 Martin Mares <mj@ucw.cz>
+ * (c) 2001--2002 Martin Mares <mj@ucw.cz>
+ *
+ * This software may be freely distributed and used according to the terms
+ * of the GNU Lesser General Public License.
*/
/*
extern uns sorter_presort_bufsize;
extern uns sorter_stream_bufsize;
-extern uns sorter_pass_counter, sorter_file_counter;
-struct fastbuf *sorter_open_tmp(void);
+extern uns sorter_pass_counter;
#endif /* !SORT_DECLS_READ */
struct fastbuf *t;
SWAP(out1, out2, t);
if (!out1)
- out1 = sorter_open_tmp();
+ out1 = bopen_tmp(sorter_stream_bufsize);
run_count++;
}
if (comp LESS 0)
{
SWAP(out1, out2, tbuf);
if (!out1)
- out1 = sorter_open_tmp();
+ out1 = bopen_tmp(sorter_stream_bufsize);
current = buffer;
last = &first;
if (leftover)
(out2 ? (int)((btell(out2) + 1023) / 1024) : 0));
*fb1 = P(flush_out)(out1);
*fb2 = P(flush_out)(out2);
+ xfree(buffer);
}
#endif /* SORT_PRESORT */
#endif
#ifdef SORT_DELETE_INPUT
- fb1->is_temp_file = SORT_DELETE_INPUT;
+ FB_IS_TEMP_FILE(fb1) = SORT_DELETE_INPUT;
#endif
sorter_pass_counter = 1;
#ifdef SORT_PRESORT
#endif
do P(pass)(&fb1, &fb2); while (fb1 && fb2);
if (!fb1)
- fb1 = sorter_open_tmp();
+ fb1 = bopen_tmp(sorter_stream_bufsize);
#ifdef SORT_OUTPUT_FB
return fb1;
#else
- fb1->is_temp_file = 0;
+ FB_IS_TEMP_FILE(fb1) = 0;
if (rename(fb1->name, outname) < 0)
die("rename(%s,%s): %m", fb1->name, outname);
bclose(fb1);