text: Use a GSList of enabled probe names, not an array.

This commit is contained in:
Martin Ling 2013-04-26 22:14:57 +01:00 committed by Bert Vermeulen
parent db9679afc9
commit d53e4e8d92
2 changed files with 12 additions and 7 deletions

View File

@ -40,23 +40,27 @@ SR_PRIV void flush_linebufs(struct context *ctx, uint8_t *outbuf)
{ {
static int max_probename_len = 0; static int max_probename_len = 0;
int len, i; int len, i;
GSList *l;
char *probe_name;
if (ctx->linebuf[0] == 0) if (ctx->linebuf[0] == 0)
return; return;
if (max_probename_len == 0) { if (max_probename_len == 0) {
/* First time through... */ /* First time through... */
for (i = 0; ctx->probelist[i]; i++) { for (l = ctx->probenames; l; l = l->next) {
len = strlen(ctx->probelist[i]); probe_name = l->data;
len = strlen(probe_name);
if (len > max_probename_len) if (len > max_probename_len)
max_probename_len = len; max_probename_len = len;
} }
} }
for (i = 0; ctx->probelist[i]; i++) { for (i = 0, l = ctx->probenames; l; l = l->next, i++) {
probe_name = l->data;
sprintf((char *)outbuf + strlen((const char *)outbuf), sprintf((char *)outbuf + strlen((const char *)outbuf),
"%*s:%s\n", max_probename_len, "%*s:%s\n", max_probename_len,
ctx->probelist[i], ctx->linebuf + i * ctx->linebuf_len); probe_name, ctx->linebuf + i * ctx->linebuf_len);
} }
/* Mark trigger with a ^ character. */ /* Mark trigger with a ^ character. */
@ -91,15 +95,16 @@ SR_PRIV int init(struct sr_output *o, int default_spl, enum outputmode mode)
o->internal = ctx; o->internal = ctx;
ctx->num_enabled_probes = 0; ctx->num_enabled_probes = 0;
ctx->probenames = NULL;
for (l = o->sdi->probes; l; l = l->next) { for (l = o->sdi->probes; l; l = l->next) {
probe = l->data; probe = l->data;
if (!probe->enabled) if (!probe->enabled)
continue; continue;
ctx->probelist[ctx->num_enabled_probes++] = probe->name; ctx->probenames = g_slist_append(ctx->probenames, probe->name);
ctx->num_enabled_probes++;
} }
ctx->probelist[ctx->num_enabled_probes] = 0;
ctx->unitsize = (ctx->num_enabled_probes + 7) / 8; ctx->unitsize = (ctx->num_enabled_probes + 7) / 8;
ctx->line_offset = 0; ctx->line_offset = 0;
ctx->spl_cnt = 0; ctx->spl_cnt = 0;

View File

@ -36,7 +36,7 @@ struct context {
unsigned int unitsize; unsigned int unitsize;
int line_offset; int line_offset;
int linebuf_len; int linebuf_len;
char *probelist[SR_MAX_NUM_PROBES + 1]; GSList *probenames;
uint8_t *linebuf; uint8_t *linebuf;
int spl_cnt; int spl_cnt;
uint8_t *linevalues; uint8_t *linevalues;