X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Fsorter.h;h=4cc8c9951dd405bbb2c520ad290b6f8b8546ae51;hb=1f05348cde42852d77da3457b96a33dff1600ca4;hp=15ff9bf7b16bc0378b8231a579cd7035ea8dd088;hpb=7490dc318191ad60efcb34e4a7eef14efdd141aa;p=libucw.git diff --git a/lib/sorter.h b/lib/sorter.h index 15ff9bf7..4cc8c995 100644 --- a/lib/sorter.h +++ b/lib/sorter.h @@ -50,7 +50,7 @@ * 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. @@ -85,23 +85,7 @@ * 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 #include @@ -246,7 +230,7 @@ P(pass)(struct fastbuf **fb1, struct fastbuf **fb2 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); @@ -316,7 +300,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) 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)); @@ -417,7 +401,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) } 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; @@ -475,7 +459,7 @@ P(presort)(struct fastbuf **fb1, struct fastbuf **fb2) 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)); @@ -554,10 +538,7 @@ struct fastbuf *fb1, struct fastbuf *fb2 #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 } @@ -579,5 +560,3 @@ struct fastbuf *fb1, struct fastbuf *fb2 #undef SORT_OUTPUT_FB #undef SORT_PRESORT #undef SORT_UP_TO - -#endif /* !SORT_DECLARE_ONLY */