#include "lib/sorter/s-twoway.h"
+#ifndef SORT_UNIFY
+#include "lib/sorter/s-multiway.h"
+#endif
+
#if defined(SORT_HASH_BITS) || defined(SORT_INT)
#include "lib/sorter/s-radix.h"
#endif
bzero(&ctx, sizeof(ctx));
#ifdef SORT_INPUT_FILE
- ctx.in_fb = bopen(in, O_RDONLY, sorter_stream_bufsize);
+ ctx.in_fb = bopen_file(in, O_RDONLY, &sorter_fb_params);
ctx.in_size = bfilesize(ctx.in_fb);
#elif defined(SORT_INPUT_FB)
ctx.in_fb = in;
ctx.internal_estimate = P(internal_estimate);
ctx.twoway_merge = P(twoway_merge);
+#ifndef SORT_UNIFY
+ ctx.multiway_merge = P(multiway_merge);
+#endif
+
sorter_run(&ctx);
#ifdef SORT_OUTPUT_FILE
- if (rename(ctx.out_fb->name, out) < 0)
- die("Cannot rename %s to %s: %m", ctx.out_fb->name, out);
- bconfig(ctx.out_fb, BCONFIG_IS_TEMP_FILE, 0);
- bclose(ctx.out_fb);
+ bfix_tmp_file(ctx.out_fb, out);
ctx.out_fb = NULL;
#endif
return ctx.out_fb;