From 08ad3d28f84de55e2b157551342d4e394fa3f224 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 16 May 2016 12:23:16 +0300 Subject: Support setting control from values stored in a file Signed-off-by: Laurent Pinchart --- yavta.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/yavta.c b/yavta.c index 1490878..2d49131 100644 --- a/yavta.c +++ b/yavta.c @@ -1334,6 +1334,31 @@ static int video_parse_control_array(const struct v4l2_query_ext_ctrl *query, __u32 value; for ( ; isspace(*val); ++val) { }; + + if (*val == '<') { + /* Read the control value from the given file. */ + ssize_t size; + int fd; + + val++; + fd = open(val, O_RDONLY); + if (fd < 0) { + printf("unable to open control file `%s'\n", val); + return -EINVAL; + } + + size = read(fd, ctrl->ptr, ctrl->size); + if (size != (ssize_t)ctrl->size) { + printf("error reading control file `%s' (%s)\n", val, + strerror(errno)); + close(fd); + return -EINVAL; + } + + close(fd); + return 0; + } + if (*val++ != '{') return -EINVAL; -- cgit v1.2.3