The second argument of ioctl is long not int (under Linux)
authorHans de Goede <hdegoede@redhat.com>
Fri, 26 Feb 2010 08:58:11 +0000 (09:58 +0100)
committerHans de Goede <hdegoede@redhat.com>
Fri, 26 Feb 2010 08:58:11 +0000 (09:58 +0100)
All our ioctl wrappers were using an int as second argument, but
the glibc ioctl function expects an unsigned long. This wrong prototype
would cause sign extension of the IOCTL request value, thus we would end
up asking for a non existing request. Luckily glibc internally cuts this
down to 32 bits again so things happened to work, but it is better to
fix this and give the wrappers a proper prototype.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
contrib/test/capture-example.c
contrib/test/pixfmt-test.c
contrib/test/v4l2grab.c
utils/libv4l2util/v4l2_driver.c
utils/v4l2-compliance/v4l2-compliance.cpp
utils/v4l2-ctl/cx18-ctl.c
utils/v4l2-ctl/ivtv-ctl.c
utils/v4l2-ctl/v4l2-ctl.cpp
utils/v4l2-dbg/v4l2-dbg.cpp

index 0ae49c4..2f77cbf 100644 (file)
@@ -53,7 +53,7 @@ static void errno_exit(const char *s)
        exit(EXIT_FAILURE);
 }
 
-static int xioctl(int fh, int request, void *arg)
+static int xioctl(int fh, unsigned long int request, void *arg)
 {
        int r;
 
index e1c8579..a3881b4 100644 (file)
@@ -1213,7 +1213,7 @@ open_window                       (unsigned int           width,
 
 static int
 xioctl                          (int                    fd,
-                                int                    request,
+                                unsigned long int      request,
                                 void *                 arg)
 {
        int r;
index 71f2fec..f68fc1e 100644 (file)
@@ -30,7 +30,7 @@ struct buffer {
        size_t length;
 };
 
-static void xioctl(int fh, int request, void *arg)
+static void xioctl(int fh, unsigned long int request, void *arg)
 {
        int r;
 
index 919119b..81104a0 100644 (file)
@@ -31,7 +31,7 @@
 /****************************************************************************
        Auxiliary routines
  ****************************************************************************/
-static int xioctl (int fd, int request, void *arg)
+static int xioctl (int fd, unsigned long int request, void *arg)
 {
        int r;
 
index 3780f98..889a4fe 100644 (file)
@@ -776,7 +776,7 @@ static v4l2_std_id parse_ntsc(const char *ntsc)
        return 0;
 }
 
-static int doioctl(int fd, int request, void *parm, const char *name)
+static int doioctl(int fd, unsigned long int request, void *parm, const char *name)
 {
        int retVal;
        int e;
index a1061b8..a39eed8 100644 (file)
@@ -217,7 +217,7 @@ static char *doread(const char *fn)
        return buf;
 }
 
-static int doioctl(int fd, int request, void *parm, const char *name)
+static int doioctl(int fd, unsigned long int request, void *parm, const char *name)
 {
        int retVal;
 
index 6af8fc6..61b915c 100644 (file)
@@ -293,7 +293,7 @@ static const char *field2s(int val)
        }
 }
 
-static int doioctl(int fd, int request, void *parm, const char *name)
+static int doioctl(int fd, unsigned long int request, void *parm, const char *name)
 {
        int retVal;
 
index b052645..3d17916 100644 (file)
@@ -1345,7 +1345,7 @@ static v4l2_std_id parse_ntsc(const char *ntsc)
        return 0;
 }
 
-static int doioctl(int fd, int request, void *parm, const char *name)
+static int doioctl(int fd, unsigned long int request, void *parm, const char *name)
 {
        int retVal = ioctl(fd, request, parm);
 
index 8c57c24..f34c57b 100644 (file)
@@ -350,7 +350,7 @@ static const char *binary(unsigned long long val)
        return bin;
 }
 
-static int doioctl(int fd, int request, void *parm, const char *name)
+static int doioctl(int fd, unsigned long int request, void *parm, const char *name)
 {
        int retVal = ioctl(fd, request, parm);