conf: add config_dup_block_path()
This commit is contained in:
parent
b42a8d2364
commit
9f5c938ff3
20
src/conf.c
20
src/conf.c
@ -606,6 +606,26 @@ config_get_block_string(const struct config_param *param, const char *name,
|
||||
return bp->value;
|
||||
}
|
||||
|
||||
char *
|
||||
config_dup_block_path(const struct config_param *param, const char *name,
|
||||
GError **error_r)
|
||||
{
|
||||
assert(error_r != NULL);
|
||||
assert(*error_r == NULL);
|
||||
|
||||
const struct block_param *bp = config_get_block_param(param, name);
|
||||
if (bp == NULL)
|
||||
return NULL;
|
||||
|
||||
char *path = parsePath(bp->value, error_r);
|
||||
if (G_UNLIKELY(path == NULL))
|
||||
g_prefix_error(error_r,
|
||||
"Invalid path in \"%s\" at line %i: ",
|
||||
name, bp->line);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
unsigned
|
||||
config_get_block_unsigned(const struct config_param *param, const char *name,
|
||||
unsigned default_value)
|
||||
|
@ -194,6 +194,15 @@ config_dup_block_string(const struct config_param *param, const char *name,
|
||||
return g_strdup(config_get_block_string(param, name, default_value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as config_dup_path(), but looks up the setting in the
|
||||
* specified block.
|
||||
*/
|
||||
G_GNUC_MALLOC
|
||||
char *
|
||||
config_dup_block_path(const struct config_param *param, const char *name,
|
||||
GError **error_r);
|
||||
|
||||
G_GNUC_PURE
|
||||
unsigned
|
||||
config_get_block_unsigned(const struct config_param *param, const char *name,
|
||||
|
@ -178,30 +178,25 @@ fifo_open(struct fifo_data *fd, GError **error)
|
||||
static void *
|
||||
fifo_output_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
||||
const struct config_param *param,
|
||||
GError **error)
|
||||
GError **error_r)
|
||||
{
|
||||
struct fifo_data *fd;
|
||||
char *value, *path;
|
||||
|
||||
value = config_dup_block_string(param, "path", NULL);
|
||||
if (value == NULL) {
|
||||
g_set_error(error, fifo_output_quark(), errno,
|
||||
"No \"path\" parameter specified");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
path = parsePath(value, error);
|
||||
g_free(value);
|
||||
GError *error = NULL;
|
||||
char *path = config_dup_block_path(param, "path", &error);
|
||||
if (!path) {
|
||||
g_prefix_error(error, "Invalid path in line %i: ",
|
||||
param->line);
|
||||
if (error != NULL)
|
||||
g_propagate_error(error_r, error);
|
||||
else
|
||||
g_set_error(error_r, fifo_output_quark(), 0,
|
||||
"No \"path\" parameter specified");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fd = fifo_data_new();
|
||||
fd->path = path;
|
||||
|
||||
if (!fifo_open(fd, error)) {
|
||||
if (!fifo_open(fd, error_r)) {
|
||||
fifo_data_free(fd);
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user