1 #include "taper-source.h"
6 ConsumerFunctor consumer;
7 gpointer consumer_data;
10 /* A ConsumerFunctor. */
11 static ssize_t size_limited_consumer(gpointer user_data, queue_buffer_t * buffer) {
12 tape_info_t * info = user_data;
15 result = info->consumer(info->consumer_data, buffer);
17 info->tape_used += result;
18 if (info->tape_size < info->tape_used)
24 int main(int argc, char ** argv) {
32 g_fprintf(stderr, "USAGE: %16s volume-size ( holding-disk-file splitsize | \n"
34 "split-disk-buffer splitsize\n"
36 "fallback-splitsize )\n",
41 guint64 splitsize = strtod(argv[3], NULL);
43 source = taper_source_new("", FILE_WRITE, argv[2], -1, NULL,
48 guint64 splitsize, fallback_splitsize;
49 splitsize = strtod(argv[3], NULL);
50 fallback_splitsize = strtod(argv[4], NULL);
52 source = taper_source_new("", PORT_WRITE, NULL, STDIN_FILENO,
53 argv[2][0] == '\0' ? NULL : argv[2],
54 splitsize, fallback_splitsize);
63 info.tape_size = strtod(argv[1], NULL);
64 info.consumer = fd_write_consumer;
65 info.consumer_data = GINT_TO_POINTER(STDOUT_FILENO);
68 gboolean success = do_consumer_producer_queue(taper_source_producer,
70 size_limited_consumer,
74 if (taper_source_get_end_of_data(source)) {
75 g_fprintf(stderr, "Got end of data.\n");
77 } else if (taper_source_get_end_of_part(source)) {
78 taper_source_start_new_part(source);
79 g_fprintf(stderr, "Finished part. Starting new one.\n");
82 g_fprintf(stderr, "Read error.\n");
86 /* Write or read error. (we can't tell) */
88 if (taper_source_seek_to_part_start(source)) {
89 g_fprintf(stderr, "Retrying a part.\n");
92 g_fprintf(stderr, "Couldn't seek. Dying.\n");
98 g_assert_not_reached();