]> mj.ucw.cz Git - libucw.git/blob - lib/sorter.c
Removed partial support for LFS on Linuxes with pre-2.1 glibc.
[libucw.git] / lib / sorter.c
1 /*
2  *      Sherlock Library -- Universal Sorter
3  *
4  *      (c) 2001 Martin Mares <mj@ucw.cz>
5  */
6
7 #include "lib/lib.h"
8 #include "lib/conf.h"
9 #include "lib/fastbuf.h"
10
11 #include <unistd.h>
12 #include <sys/fcntl.h>
13
14 #define SORT_DECLARE_ONLY
15 #include "lib/sorter.h"
16
17 uns sorter_trace;
18 uns sorter_presort_bufsize = 65536;
19 uns sorter_stream_bufsize = 65536;
20 static byte *sorter_template = "/tmp/sort%d.%d";
21
22 static struct cfitem sorter_config[] = {
23   { "Sorter",           CT_SECTION,     NULL },
24   { "Trace",            CT_INT,         &sorter_trace },
25   { "PresortBuffer",    CT_INT,         &sorter_presort_bufsize },
26   { "StreamBuffer",     CT_INT,         &sorter_stream_bufsize },
27   { "TempLate",         CT_STRING,      &sorter_template },
28   { NULL,               CT_STOP,        NULL }
29 };
30
31 static void CONSTRUCTOR sorter_init_config(void)
32 {
33   cf_register(sorter_config);
34 }
35
36 uns sorter_pass_counter;
37 uns sorter_file_counter;
38
39 struct fastbuf *
40 sorter_open_tmp(void)
41 {
42   byte buf[256];
43   struct fastbuf *f;
44
45   sprintf(buf, sorter_template, (int) getpid(), sorter_file_counter++);
46   f = bopen(buf, O_RDWR | O_CREAT | O_EXCL, sorter_stream_bufsize);
47   f->is_temp_file = 1;
48   return f;
49 }