1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
$NetBSD: patch-af,v 1.6 2016/08/28 15:48:32 wiz Exp $
* XXXX
* `mode_t' is promoted to `int' when passed through `...'.
* Fix SunOS 64-bit.
--- libv4l2/v4l2convert.c.orig 2008-08-26 12:32:39.000000000 +0000
+++ libv4l2/v4l2convert.c
@@ -24,11 +24,16 @@
#include <stdarg.h>
#include <stdlib.h>
+#ifdef __linux__
#include <syscall.h>
+#else
+#include <sys/syscall.h>
+#endif
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#ifdef __linux__
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
#include <sys/time.h>
@@ -36,8 +41,22 @@
#include <linux/ioctl.h>
/* end broken header workaround includes */
#include <linux/videodev2.h>
+#else
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#ifdef __sun
+#include <sys/videodev2.h>
+#else
+#include <sys/videoio.h>
+#endif
+#endif
#include <libv4l2.h>
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+
/* Check that open/read/mmap is not a define */
#if defined open || defined read || defined mmap
#error open/read/mmap is a prepocessor macro !!
@@ -61,7 +80,7 @@ LIBV4L_PUBLIC int open (const char *file
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (sizeof (mode_t) < sizeof (int) ? (mode_t)va_arg (ap, int) : va_arg (ap, mode_t));
fd = syscall(SYS_open, file, oflag, mode);
@@ -92,6 +111,7 @@ LIBV4L_PUBLIC int open (const char *file
return fd;
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
{
int fd;
@@ -114,6 +134,7 @@ LIBV4L_PUBLIC int open64(const char *fil
return fd;
}
+#endif
LIBV4L_PUBLIC int close(int fd)
{
@@ -137,22 +158,19 @@ LIBV4L_PUBLIC int ioctl (int fd, unsigne
return v4l2_ioctl (fd, request, arg);
}
-LIBV4L_PUBLIC ssize_t read (int fd, void* buffer, size_t n)
-{
- return v4l2_read (fd, buffer, n);
-}
-
LIBV4L_PUBLIC void *mmap(void *start, size_t length, int prot, int flags, int fd,
__off_t offset)
{
return v4l2_mmap(start, length, prot, flags, fd, offset);
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
__off64_t offset)
{
return v4l2_mmap(start, length, prot, flags, fd, offset);
}
+#endif
LIBV4L_PUBLIC int munmap(void *start, size_t length)
{
|