diff --git a/asterisk.c b/asterisk.c index ff85004a1a..a128d03d58 100755 --- a/asterisk.c +++ b/asterisk.c @@ -1703,6 +1703,10 @@ int main(int argc, char *argv[]) printf(term_quit()); exit(1); } + if (ast_file_init()) { + printf(term_quit()); + exit(1); + } if (load_pbx()) { printf(term_quit()); exit(1); diff --git a/contrib/firmware/iax/iaxy.bin b/contrib/firmware/iax/iaxy.bin index 60aec23290..e21624a37b 100755 Binary files a/contrib/firmware/iax/iaxy.bin and b/contrib/firmware/iax/iaxy.bin differ diff --git a/file.c b/file.c index d23879edf2..fa3885a985 100755 --- a/file.c +++ b/file.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -1044,3 +1045,41 @@ char ast_waitstream_full(struct ast_channel *c, char *breakon, int audiofd, int } return (c->_softhangup ? -1 : 0); } + +static int show_file_formats(int fd, int argc, char *argv[]) +{ +#define FORMAT "%-10s %-10s %-20s\n" +#define FORMAT2 "%-10s %-10s %-20s\n" + struct ast_format *f; + if (argc != 3) + return RESULT_SHOWUSAGE; + ast_cli(fd, FORMAT, "Format", "Name", "Extensions"); + + if (ast_mutex_lock(&formatlock)) { + ast_log(LOG_WARNING, "Unable to lock format list\n"); + return -1; + } + + f = formats; + while(f) { + ast_cli(fd, FORMAT2, ast_getformatname(f->format), f->name, f->exts); + f = f->next; + }; + ast_mutex_unlock(&formatlock); + return RESULT_SUCCESS; +} + +struct ast_cli_entry show_file = +{ + { "show", "file", "formats" }, + show_file_formats, + "Displays file formats", + "Usage: show file formats\n" + " displays currently registered file formats (if any)\n" +}; + +int ast_file_init(void) +{ + ast_cli_register(&show_file); + return 0; +} diff --git a/include/asterisk/file.h b/include/asterisk/file.h index 55c0eaa7f9..eb2c78e350 100755 --- a/include/asterisk/file.h +++ b/include/asterisk/file.h @@ -284,6 +284,14 @@ long ast_tellstream(struct ast_filestream *fs); */ struct ast_frame *ast_readframe(struct ast_filestream *s); +//! Initialize file stuff +/*! + * Initializes all the various file stuff. Basically just registers the cli stuff + * Returns 0 all the time + */ +extern int ast_file_init(void); + + #define AST_RESERVED_POINTERS 20 #if defined(__cplusplus) || defined(c_plusplus)