summaryrefslogtreecommitdiffstats
path: root/app/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'app/utils.cpp')
-rw-r--r--app/utils.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/app/utils.cpp b/app/utils.cpp
index 1cf71f2..45fd4d7 100644
--- a/app/utils.cpp
+++ b/app/utils.cpp
@@ -156,7 +156,7 @@ os_create_anonymous_file(off_t size)
}
const char*
-get_camera_device(void)
+get_first_camera_device(void)
{
DIR *dir = opendir("/dev");
if (!dir) {
@@ -165,20 +165,22 @@ get_camera_device(void)
}
static char device[PATH_MAX];
+ struct dirent *dirent;
bool found = false;
- while (struct dirent *dirent = readdir(dir)) {
- if (strncmp(dirent->d_name, "video", strlen("video")))
+ while ((dirent = readdir(dir)) != NULL) {
+ struct v4l2_capability vid_cap;
+ int fd;
+
+ if (strcmp(dirent->d_name, "video"))
continue;
- if (!isdigit(dirent->d_name[strlen("video")]))
+ if (!isdigit(dirent->d_name[5]))
continue;
- strcpy(device, "/dev/");
- strncat(device, dirent->d_name, sizeof(device) - 1);
+ snprintf(device, sizeof(device), "/dev/%s", dirent->d_name);
- int fd = open(device, O_RDWR);
+ fd = open(device, O_RDWR);
if (fd == -1)
continue;
- struct v4l2_capability vid_cap;
if (ioctl(fd, VIDIOC_QUERYCAP, &vid_cap) < 0) {
close(fd);
continue;