make output modules a bit more crashproof

the event handler in output modules is now optional.
This commit is contained in:
Bert Vermeulen 2011-01-13 02:05:39 +01:00
parent 2507648e63
commit 9ab95e5408
3 changed files with 12 additions and 23 deletions

View File

@ -24,24 +24,6 @@
#include <sigrok.h> #include <sigrok.h>
#include "config.h" #include "config.h"
static int event(struct output *o, int event_type, char **data_out,
uint64_t *length_out)
{
/* Prevent compiler warnings. */
o = o;
switch (event_type) {
case DF_TRIGGER:
/* TODO? Ignore? */
break;
case DF_END:
*data_out = NULL;
*length_out = 0;
break;
}
return SIGROK_OK;
}
static int data(struct output *o, char *data_in, uint64_t length_in, static int data(struct output *o, char *data_in, uint64_t length_in,
char **data_out, uint64_t *length_out) char **data_out, uint64_t *length_out)
@ -67,5 +49,5 @@ struct output_format output_binary = {
DF_LOGIC, DF_LOGIC,
NULL, NULL,
data, data,
event, NULL,
}; };

View File

@ -127,16 +127,17 @@ static int event(struct output *o, int event_type, char **data_out,
ctx = o->internal; ctx = o->internal;
switch (event_type) { switch (event_type) {
case DF_TRIGGER: case DF_TRIGGER:
/* TODO */ /* TODO: can a trigger mark be in a gnuplot data file? */
break; break;
case DF_END: case DF_END:
*data_out = NULL;
*length_out = 0;
free(o->internal); free(o->internal);
o->internal = NULL; o->internal = NULL;
break; break;
} }
*data_out = NULL;
*length_out = 0;
return SIGROK_OK; return SIGROK_OK;
} }

View File

@ -135,7 +135,9 @@ static int event(struct output *o, int event_type, char **data_out,
ctx = o->internal; ctx = o->internal;
switch (event_type) { switch (event_type) {
case DF_TRIGGER: case DF_TRIGGER:
/* TODO */ /* TODO: can a trigger mark be in a VCD file? */
*data_out = NULL;
*length_out = 0;
break; break;
case DF_END: case DF_END:
outlen = strlen("$dumpoff\n$end\n"); outlen = strlen("$dumpoff\n$end\n");
@ -149,6 +151,10 @@ static int event(struct output *o, int event_type, char **data_out,
free(o->internal); free(o->internal);
o->internal = NULL; o->internal = NULL;
break; break;
default:
*data_out = NULL;
*length_out = 0;
break;
} }
return SIGROK_OK; return SIGROK_OK;