OSDN Git Service

amixer: fix indentation when printing container TLV contents
authorAnssi Hannula <anssi.hannula@iki.fi>
Tue, 1 Oct 2013 20:46:53 +0000 (23:46 +0300)
committerTakashi Iwai <tiwai@suse.de>
Wed, 2 Oct 2013 15:36:02 +0000 (17:36 +0200)
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@iki.fi>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
amixer/amixer.c

index b83b0c3..cf82892 100644 (file)
@@ -460,6 +460,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
        }
        switch (type) {
        case SND_CTL_TLVT_CONTAINER:
+               printf("container\n");
                size += sizeof(unsigned int) -1;
                size /= sizeof(unsigned int);
                while (idx < size) {