From b8ece14bf778401197598c72a7fd7bcd1400aad0 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 2 Aug 2011 00:22:58 +0200 Subject: [PATCH] Calculate width of audio formats in ls output. Currently the field width for the audio format is hard-coded as three as the name of each supported audio format (mp3, ogg, aac, wma, spx) consists of three characters. However, with the forthcoming flac support, this is no longer true since "flac" consists of four characters. So the ls command must calculate the maximal field width of the audio formats of all listed files. This is achieved by introducing the new audio_format_width member of struct ls_widths. --- aft.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/aft.c b/aft.c index 3d22e242..8c31906a 100644 --- a/aft.c +++ b/aft.c @@ -107,6 +107,8 @@ struct ls_widths { unsigned short num_played_width; /** size of the amp field. */ unsigned short amp_width; + /** size of the audio format field. */ + unsigned short audio_format_width; }; /** Data passed from the ls command handler to its callback function. */ @@ -902,7 +904,7 @@ static int print_list_item(struct ls_data *d, struct ls_options *opts, "%*d " /* image_id */ "%*d " /* lyrics_id */ "%*d " /* bitrate */ - "%s " /* audio format */ + "%*s " /* audio format */ "%*d " /* frequency */ "%d " /* channels */ "%s " /* duration */ @@ -914,6 +916,7 @@ static int print_list_item(struct ls_data *d, struct ls_options *opts, w->image_id_width, afsi->image_id, w->lyrics_id_width, afsi->lyrics_id, w->bitrate_width, afhi->bitrate, + w->audio_format_width, audio_format_name(afsi->audio_format_id), w->frequency_width, afhi->frequency, afhi->channels, @@ -1328,6 +1331,8 @@ static int prepare_ls_row(struct osl_row *row, void *ls_opts) w->duration_width = PARA_MAX(w->duration_width, num_digits); GET_NUM_DIGITS(d->afsi.amp, &num_digits); w->amp_width = PARA_MAX(w->amp_width, num_digits); + num_digits = strlen(audio_format_name(d->afsi.audio_format_id)); + w->audio_format_width = PARA_MAX(w->audio_format_width, num_digits); if (options->flags & LS_FLAG_ADMISSIBLE_ONLY) { GET_NUM_DIGITS(score, &num_digits); num_digits++; /* add one for the sign (space or "-") */ -- 2.39.5