if (!sub || !lex_match (ctx->lexer, T_LBRACK))
return sub;
- bool totals = false;
+ enum ctables_summary_variant sv = CSV_CELL;
for (;;)
{
int start_ofs = lex_ofs (ctx->lexer);
struct msg_location *loc = lex_ofs_location (ctx->lexer, start_ofs,
lex_ofs (ctx->lexer) - 1);
- add_summary_spec (sub, function, percentile, label, formatp, loc,
- totals);
+ add_summary_spec (sub, function, percentile, label, formatp, loc, sv);
free (label);
msg_location_destroy (loc);
- if (lex_match (ctx->lexer, T_COMMA))
+ lex_match (ctx->lexer, T_COMMA);
+ if (sv == CSV_CELL && lex_match_id (ctx->lexer, "TOTALS"))
{
- if (!totals && lex_match_id (ctx->lexer, "TOTALS"))
- {
- if (!lex_force_match (ctx->lexer, T_LBRACK))
- goto error;
- totals = true;
- }
+ if (!lex_force_match (ctx->lexer, T_LBRACK))
+ goto error;
+ sv = CSV_TOTAL;
}
else if (lex_force_match (ctx->lexer, T_RBRACK))
{
- if (totals && !lex_force_match (ctx->lexer, T_RBRACK))
+ if (sv == CSV_TOTAL && !lex_force_match (ctx->lexer, T_RBRACK))
goto error;
return sub;
}