From f174eb4ac121f9c0b13425107fb710d755f2781b Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Mon, 4 Feb 2019 14:55:01 -0500 Subject: [PATCH] sounds: Sort 'core show sounds' output Change-Id: Ib39052a745040f75eb635f15a042da15b20e22ab --- main/sounds.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/main/sounds.c b/main/sounds.c index 091a396807a..c3323daf0c3 100644 --- a/main/sounds.c +++ b/main/sounds.c @@ -135,6 +135,11 @@ static int show_sound_info_cb(void *obj, void *arg, void *data, int flags) return 0; } +static int sound_sorter(const void *obj_left, const void *obj_right, int flags) +{ + return strcmp(obj_left, obj_right); +} + /*! \brief Show a list of sounds available on the system */ static char *handle_cli_sounds_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { @@ -152,6 +157,7 @@ static char *handle_cli_sounds_show(struct ast_cli_entry *e, int cmd, struct ast if (a->argc == 3) { struct ast_media_index *sounds_index = ast_sounds_get_index(); struct ao2_container *sound_files; + struct ao2_container *sorted; if (!sounds_index) { return CLI_FAILURE; @@ -163,8 +169,18 @@ static char *handle_cli_sounds_show(struct ast_cli_entry *e, int cmd, struct ast return CLI_FAILURE; } + sorted = ao2_container_alloc_rbtree(AO2_ALLOC_OPT_LOCK_NOLOCK, 0, + sound_sorter, NULL); + if (!sorted + || ao2_container_dup(sorted, sound_files, 0)) { + ao2_cleanup(sorted); + ao2_cleanup(sound_files); + return CLI_FAILURE; + } + ast_cli(a->fd, "Available audio files:\n"); - ao2_callback(sound_files, OBJ_MULTIPLE | OBJ_NODATA, show_sounds_cb, a); + ao2_callback(sorted, OBJ_MULTIPLE | OBJ_NODATA, show_sounds_cb, a); + ao2_ref(sorted, -1); ao2_ref(sound_files, -1); return CLI_SUCCESS;