#include "file_write.cmdline.h"
#include "error.h"
-/** data specific to the file writer */
+/** Data specific to the file writer. */
struct private_file_write_data {
- /** the file descriptor of the output file */
+ /** The file descriptor of the output file. */
int fd;
- /** non-zero if \a fd was added to the write fd set */
- int check_fd;
};
/*
int ret;
t->error = 0;
- pfwd->check_fd = 0;
ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF);
if (ret > 0) {
para_fd_set(pfwd->fd, &s->wfds, &s->max_fileno);
- pfwd->check_fd = 1;
} else if (ret < 0) {
s->timeout.tv_sec = 0;
s->timeout.tv_usec = 1;
t->error = 0;
ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_LEAF);
- if (ret == 0)
- return;
- if (ret < 0)
- goto err;
- if (!pfwd->check_fd)
- return;
+ if (ret <= 0)
+ goto out;
if (!FD_ISSET(pfwd->fd, &s->wfds))
return;
bytes = btr_next_buffer(btrn, &buf);
//PARA_INFO_LOG("writing %zu\n", bytes);
ret = write(pfwd->fd, buf, bytes);
if (ret < 0)
- goto err;
+ goto out;
btr_consume(btrn, ret);
- return;
-err:
- assert(ret < 0);
+out:
+ if (ret < 0)
+ btr_remove_node(btrn);
t->error = ret;
- btr_remove_node(btrn);
}
__malloc static void *file_write_parse_config(const char *options)