One tiny suggestion: s/decode_digits_line_mode/decode_digits_list_mode/ The function documentation talks about 'list_mode', and the call to that function also checks self->list_mode: if (self->list_mode) decode_digits_line_mode (self, &values, val); ... -- Joel