[alsa-devel] [PATCH] amixer: fix indentation when printing container TLV contents

Anssi Hannula anssi.hannula at iki.fi
Tue Oct 1 22:46:53 CEST 2013

decode_tlv() adds indentation in the beginning, with the expectation
that the TLV will be printed on the line afterwards in a switch-case.

However, in the case of a container TLV the switch-case simply adds
another level of indentation and calls decode_tlv() for the inner TLVs.
This causes the first inner TLV to be printed with too much indentation
and double '|'.

Fix that by printing "container" and a newline for container TLVs, so
that the result is as follows:
  : values=0,0,0,0,0,0,0,0
  | container
    | chmap-variable=FL,FR
    | chmap-variable=FL,FR,LFE
    | chmap-variable=FL,FR,FC

Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
 amixer/amixer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/amixer/amixer.c b/amixer/amixer.c
index b83b0c3..cf82892 100644
--- a/amixer/amixer.c
+++ b/amixer/amixer.c
@@ -460,6 +460,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
 	switch (type) {
+		printf("container\n");
 		size += sizeof(unsigned int) -1;
 		size /= sizeof(unsigned int);
 		while (idx < size) {

More information about the Alsa-devel mailing list