X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fsorter.h;h=aae3cd1f4089cbb3658623c3049acd41ea16c069;hb=9f87c6fe6552ce8b2236a07307d2f825b0e4c439;hp=d1f059fccec58f0240748dc7dc0777cb78eaa27d;hpb=4714386ed8888c1edc4e13ed976dd2c3d67c63ee;p=libucw.git diff --git a/lib/sorter.h b/lib/sorter.h index d1f059fc..aae3cd1f 100644 --- a/lib/sorter.h +++ b/lib/sorter.h @@ -1,7 +1,10 @@ /* * Sherlock Library -- Universal Sorter * - * (c) 2001 Martin Mares + * (c) 2001--2002 Martin Mares + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ /* @@ -75,8 +78,7 @@ extern uns sorter_trace; 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 */ @@ -147,7 +149,7 @@ P(pass)(struct fastbuf **fb1, struct fastbuf **fb2) 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) @@ -273,7 +275,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) { SWAP(out1, out2, tbuf); if (!out1) - out1 = sorter_open_tmp(); + out1 = bopen_tmp(sorter_stream_bufsize); current = buffer; last = &first; if (leftover) @@ -346,6 +348,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) (out2 ? (int)((btell(out2) + 1023) / 1024) : 0)); *fb1 = P(flush_out)(out1); *fb2 = P(flush_out)(out2); + xfree(buffer); } #endif /* SORT_PRESORT */ @@ -382,7 +385,7 @@ struct fastbuf *fb1, struct fastbuf *fb2 #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 @@ -391,12 +394,12 @@ struct fastbuf *fb1, struct fastbuf *fb2 #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);