forked from a-detiste/cruft
-
Notifications
You must be signed in to change notification settings - Fork 0
/
river.h
38 lines (35 loc) · 1.13 KB
/
river.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "fn_stream.h"
/*
* A "river" is a bunch of (I/O) streams. It also has some additional data
* which go with it.
*/
typedef struct river {
/* Just a descriptive name */
char* name;
/* Number of input streams open. The number of output streams open is
* the same. */
int n;
/* The offset of the input stream whose line to be read compares as
* lexicographically smallest to lines of other input streams in this
* river.
*/
int least;
/* Input streams. */
fn_stream* in[100];
/* Output streams. */
FILE* out[100];
/* The prefix of filenames which will be read by this river. */
char* input_prefix;
/* The prefix of filenames which will be written by this river. */
char* output_prefix;
/* NOTE: the length of both prefixes must be the same. See
* open_streams(). */
} river;
int rivers_open_files(char *spool_dir_name, river *rivers);
int rivers_prepare_round(river *rivers);
void river_scroll(river *r);
char *river_least_line(river *r);
int river_has_line(river *r);
int rivers_compare(int prev, int cur, river *rivers);
int river_output_line(river *r);
int rivers_close(river *rivers);