- struct writer_node_group *g = t->private_data;
- int i;
- size_t min_written = 0;
-
- FOR_EACH_WRITER_NODE(i, g) {
- struct writer_node *wn = &g->writer_nodes[i];
- t->ret = wn->writer->post_select(s, wn);
- if (t->ret < 0) {
- g->eof = 1;
- return;
- }
- if (!i)
- min_written = wn->written;
- else
- min_written = PARA_MIN(min_written, wn->written);
- }
-// PARA_INFO_LOG("loaded: %zd, min_written: %zd bytes\n", *g->loaded, min_written);
- if (min_written) {
- *g->loaded -= min_written;
- FOR_EACH_WRITER_NODE(i, g)
- g->writer_nodes[i].written -= min_written;
- }
- if (!*g->loaded && *g->input_eof) {
- g->eof = 1;
- t->ret = -E_WNG_EOF;
- return;
- }
- t->ret = 1;
- if (*g->loaded && min_written) {
-// PARA_INFO_LOG("moving %zd bytes\n", *g->loaded);
- memmove(g->buf, g->buf + min_written, *g->loaded);
- }
+ if (wid < 0)
+ wid = default_writer_id();
+ return lls_user_data(WRITE_CMD(wid));
+}
+
+/**
+ * Return name of the writer identified by a writer ID.
+ *
+ * \param wid If non-positive, the name of the default writer is returned.
+ *
+ * \return The returned buffer must not be freed by the caller.
+ */
+const char *writer_name(int wid)
+{
+ if (wid <= 0)
+ wid = default_writer_id();
+ return lls_command_name(WRITE_CMD(wid));