X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=audiod.c;h=a5a774376b37c50eba92a76a02b1389bd6df67f4;hb=refs%2Fheads%2Fpu;hp=7c223995a9a29cec3c8e8ae5497c3be58655f63c;hpb=914ee19c1fd21834fe5f81260daafe76a4475290;p=paraslash.git diff --git a/audiod.c b/audiod.c index 7c223995..a03a4bda 100644 --- a/audiod.c +++ b/audiod.c @@ -46,8 +46,9 @@ static struct lls_parse_result *lpr; #define OPT_UINT32_VAL(_name) (lls_uint32_val(0, OPT_RESULT(_name))) __printf_2_3 void (*para_log)(int, const char*, ...) = daemon_log; -/** define the array containing all supported audio formats */ -const char *audio_formats[] = {AUDIOD_AUDIO_FORMAT_ARRAY NULL}; +/* Audio formats supported by audiod */ +static const char *audio_formats[] = {AUDIOD_AUDIO_FORMAT_ARRAY}; +#define NUM_AUDIO_FORMATS ARRAY_SIZE(audio_formats) /** Defines how audiod handles one supported audio format. */ struct audio_format_info { @@ -828,11 +829,14 @@ static int parse_stream_command(const char *txt, const char **cmd) static int add_filter(int format, const char *cmdline) { struct audio_format_info *a = &afi[format]; - int filter_num, nf = a->num_filters; + int ret, filter_num, nf = a->num_filters; void *cfg; struct lls_parse_result *flpr; - filter_num = filter_setup(cmdline, &cfg, &flpr); + ret = filter_setup(cmdline, &cfg, &flpr); + if (ret < 0) + return ret; + filter_num = ret; a->filter_lpr = arr_realloc(a->filter_lpr, nf + 1, sizeof(flpr)); a->filter_conf = arr_realloc(a->filter_conf, nf + 1, sizeof(void *)); a->filter_nums = arr_realloc(a->filter_nums, nf + 1, sizeof(unsigned)); @@ -1517,5 +1521,6 @@ out: PARA_ERROR_LOG("%s\n", errctx); if (ret < 0) PARA_EMERG_LOG("%s\n", para_strerror(-ret)); + free(get_confdir()); return ret < 0? EXIT_FAILURE : EXIT_SUCCESS; }