File: river.h

package info (click to toggle)
cruft 0.9.38
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 40,624 kB
  • sloc: ansic: 811; sh: 342; perl: 247; python: 85; makefile: 56
file content (38 lines) | stat: -rw-r--r-- 1,159 bytes parent folder | download | duplicates (7)
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
38
#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);