diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2009-01-15 20:58:04 +0200 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2009-01-20 00:16:18 +0200 |
commit | a3762a2f9836b1a5f94eb0c69b24bd1839cb1205 (patch) | |
tree | 9fd680c02d824aef9823861c961e1990bb4c271d /src | |
parent | 6374f8e427269c16afcd9d8a2536eec260d28ef6 (diff) |
cli: fix broken array access with signed state enums
I wish I could have merge sink_to_string and source_to_string, but the
enum values are equal, and we cannot assume they will always be.
Diffstat (limited to 'src')
-rw-r--r-- | src/pulsecore/cli-text.c | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c index 79620398..b97c8709 100644 --- a/src/pulsecore/cli-text.c +++ b/src/pulsecore/cli-text.c @@ -150,17 +150,44 @@ char *pa_card_list_to_string(pa_core *c) { return pa_strbuf_tostring_free(s); } +static const char *sink_state_to_string(pa_sink_state_t state) { + switch (state) { + case PA_SINK_INIT: + return "INIT"; + case PA_SINK_RUNNING: + return "RUNNING"; + case PA_SINK_SUSPENDED: + return "SUSPENDED"; + case PA_SINK_IDLE: + return "IDLE"; + case PA_SINK_UNLINKED: + return "UNLINKED"; + default: + return "INVALID"; + } +} + +static const char *source_state_to_string(pa_source_state_t state) { + switch (state) { + case PA_SOURCE_INIT: + return "INIT"; + case PA_SOURCE_RUNNING: + return "RUNNING"; + case PA_SOURCE_SUSPENDED: + return "SUSPENDED"; + case PA_SOURCE_IDLE: + return "IDLE"; + case PA_SOURCE_UNLINKED: + return "UNLINKED"; + default: + return "INVALID"; + } +} + char *pa_sink_list_to_string(pa_core *c) { pa_strbuf *s; pa_sink *sink; uint32_t idx = PA_IDXSET_INVALID; - static const char* const state_table[] = { - [PA_SINK_INIT] = "INIT", - [PA_SINK_RUNNING] = "RUNNING", - [PA_SINK_SUSPENDED] = "SUSPENDED", - [PA_SINK_IDLE] = "IDLE", - [PA_SINK_UNLINKED] = "UNLINKED" - }; pa_assert(c); s = pa_strbuf_new(); @@ -208,7 +235,7 @@ char *pa_sink_list_to_string(pa_core *c) { sink->flags & PA_SINK_HW_VOLUME_CTRL ? "HW_VOLUME_CTRL " : "", sink->flags & PA_SINK_DECIBEL_VOLUME ? "DECIBEL_VOLUME " : "", sink->flags & PA_SINK_LATENCY ? "LATENCY " : "", - state_table[pa_sink_get_state(sink)], + sink_state_to_string(pa_sink_get_state(sink)), pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE)), sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "", sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE)) : "", @@ -246,13 +273,6 @@ char *pa_source_list_to_string(pa_core *c) { pa_strbuf *s; pa_source *source; uint32_t idx = PA_IDXSET_INVALID; - static const char* const state_table[] = { - [PA_SOURCE_INIT] = "INIT", - [PA_SOURCE_RUNNING] = "RUNNING", - [PA_SOURCE_SUSPENDED] = "SUSPENDED", - [PA_SOURCE_IDLE] = "IDLE", - [PA_SOURCE_UNLINKED] = "UNLINKED" - }; pa_assert(c); s = pa_strbuf_new(); @@ -298,7 +318,7 @@ char *pa_source_list_to_string(pa_core *c) { source->flags & PA_SOURCE_HW_VOLUME_CTRL ? "HW_VOLUME_CTRL " : "", source->flags & PA_SOURCE_DECIBEL_VOLUME ? "DECIBEL_VOLUME " : "", source->flags & PA_SOURCE_LATENCY ? "LATENCY " : "", - state_table[pa_source_get_state(source)], + source_state_to_string(pa_source_get_state(source)), pa_cvolume_snprint(cv, sizeof(cv), pa_source_get_volume(source, FALSE)), source->flags & PA_SOURCE_DECIBEL_VOLUME ? "\n\t " : "", source->flags & PA_SOURCE_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_source_get_volume(source, FALSE)) : "", |