* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
/* Comment prefix character(s). */
GString *comment;
- /* Termination character(s) used in current stream. */
+ /* Termination character(s) used in current stream. */
char *termination;
/* Determines if sample data is stored in multiple columns. */
size_t line_number;
};
-static int format_match(GHashTable *metadata)
-{
- char *buf;
-
- buf = g_hash_table_lookup(metadata, GINT_TO_POINTER(SR_INPUT_META_MIMETYPE));
- if (!strcmp(buf, "text/csv"))
- return SR_OK;
-
- return SR_ERR;
-}
-
static void strip_comment(char *buf, const GString *prefix)
{
char *ptr;
inc = in->priv;
if (!inc->started) {
- std_session_send_df_header(in->sdi, LOG_PREFIX);
+ std_session_send_df_header(in->sdi);
if (inc->samplerate) {
packet.type = SR_DF_META;
src = sr_config_new(SR_CONF_SAMPLERATE, g_variant_new_uint64(samplerate));
meta.config = g_slist_append(NULL, src);
sr_session_send(in->sdi, &packet);
+ g_slist_free(meta.config);
sr_config_free(src);
}
static int end(struct sr_input *in)
{
struct context *inc;
- struct sr_datafeed_packet packet;
int ret;
if (in->sdi_ready)
ret = SR_OK;
inc = in->priv;
- if (inc->started) {
- /* End of stream. */
- packet.type = SR_DF_END;
- sr_session_send(in->sdi, &packet);
- }
+ if (inc->started)
+ std_session_send_df_end(in->sdi);
return ret;
}
g_free(inc->sample_buffer);
}
+static int reset(struct sr_input *in)
+{
+ struct context *inc = in->priv;
+
+ cleanup(in);
+ inc->started = FALSE;
+ g_string_truncate(in->buf, 0);
+
+ return SR_OK;
+}
+
static struct sr_option options[] = {
{ "single-column", "Single column", "Enable/specify single column", NULL, NULL },
{ "numchannels", "Max channels", "Number of channels", NULL, NULL },
ALL_ZERO
};
-static struct sr_option *get_options(void)
+static const struct sr_option *get_options(void)
{
if (!options[0].def) {
options[0].def = g_variant_ref_sink(g_variant_new_int32(0));
.name = "CSV",
.desc = "Comma-separated values",
.exts = (const char*[]){"csv", NULL},
- .metadata = { SR_INPUT_META_MIMETYPE },
.options = get_options,
- .format_match = format_match,
.init = init,
.receive = receive,
.end = end,
.cleanup = cleanup,
+ .reset = reset,
};