* int PREFIX_compare(SORT_KEY *a, *b)
* compare two keys, result like strcmp
* int PREFIX_fetch_key(struct fastbuf *f, SORT_KEY *k)
- * fetch next key, returns 1=ok, 0=eof
+ * fetch next key, returns nonzero=ok, 0=eof
* void PREFIX_copy_data(struct fastbuf *src, *dest, SORT_KEY *k)
* write just fetched key k to dest and copy all data
* belonging to this key from src to dest.
* undef'd.
*/
-/* Declarations of externals from sorter.c */
-
-#ifndef SORT_DECLS_READ
-#define SORT_DECLS_READ
-
-extern uns sorter_trace;
-extern uns sorter_presort_bufsize;
-extern uns sorter_stream_bufsize;
-
-extern uns sorter_pass_counter;
-
-#endif /* !SORT_DECLS_READ */
-
-/* The sorter proper */
-
-#ifndef SORT_DECLARE_ONLY
-
+#include "lib/sorter-globals.h"
#include "lib/fastbuf.h"
#include <unistd.h>
#include <fcntl.h>
bclose(in1);
bclose(in2);
if (sorter_trace)
- log(L_INFO, "Pass %d: %d runs, %d+%d KB", sorter_pass_counter, run_count,
+ msg(L_INFO, "Pass %d: %d runs, %d+%d KB", sorter_pass_counter, run_count,
(out1 ? (int)((btell(out1) + 1023) / 1024) : 0),
(out2 ? (int)((btell(out2) + 1023) / 1024) : 0));
*fb1 = P(flush_out)(out1);
struct fastbuf *tbuf;
uns buf_items = sorter_presort_bufsize / sizeof(SORT_KEY);
uns run_count = 0;
- SORT_KEY last_out, *array;
+ SORT_KEY last_out = { }, *array;
ASSERT(!*fb2);
if (buf_items < 2)
bclose(in);
if (sorter_trace)
- log(L_INFO, "Pass 0: %d runs, %d+%d KB",
+ msg(L_INFO, "Pass 0: %d runs, %d+%d KB",
run_count,
(out1 ? (int)((btell(out1) + 1023) / 1024) : 0),
(out2 ? (int)((btell(out2) + 1023) / 1024) : 0));
}
for(;;)
{
- current = (byte *) ALIGN((addr_int_t) current, CPU_STRUCT_ALIGN);
+ current = (byte *) ALIGN_TO((uintptr_t) current, CPU_STRUCT_ALIGN);
if (current + sizeof(*this) > bufend)
break;
this = (SORT_NODE *) current;
bclose(in);
if (sorter_trace)
- log(L_INFO, "Pass 0: %d runs (%d giants, %d splits), %d+%d KB",
+ msg(L_INFO, "Pass 0: %d runs (%d giants, %d splits), %d+%d KB",
run_count, giant_count, split_count,
(out1 ? (int)((btell(out1) + 1023) / 1024) : 0),
(out2 ? (int)((btell(out2) + 1023) / 1024) : 0));
#ifdef SORT_OUTPUT_FB
return fb1;
#else
- bconfig(fb1, BCONFIG_IS_TEMP_FILE, 0);
- if (rename(fb1->name, outname) < 0)
- die("rename(%s,%s): %m", fb1->name, outname);
- bclose(fb1);
+ bfix_tmp_file(fb1, outname);
#endif
}
#undef SORT_OUTPUT_FB
#undef SORT_PRESORT
#undef SORT_UP_TO
-
-#endif /* !SORT_DECLARE_ONLY */