summaryrefslogtreecommitdiffstats
path: root/lib/libusb/descr.c
diff options
context:
space:
mode:
authorn_hibma <n_hibma@FreeBSD.org>2000-10-16 18:13:59 +0000
committern_hibma <n_hibma@FreeBSD.org>2000-10-16 18:13:59 +0000
commitef4994a1212dd74d2ea9e3be4b586433d2aeb0bd (patch)
treef5bf67808c38fb5703446a339a4b2fbee87bfa91 /lib/libusb/descr.c
parentba11a89d00cdc5eb8917da96d66e9feae77dc5e6 (diff)
downloadFreeBSD-src-ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd.zip
FreeBSD-src-ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd.tar.gz
Sync with NetBSD:
K&R -> ANSI Bugfix: 'Keep the bit position even when the report descriptor says POP.' Add hid_use_report_desc, hid_parse_usage_page, hid_parse_usage_in_page. Changed iface for hid_report_size.
Diffstat (limited to 'lib/libusb/descr.c')
-rw-r--r--lib/libusb/descr.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/libusb/descr.c b/lib/libusb/descr.c
index 8904a87..65b60ce 100644
--- a/lib/libusb/descr.c
+++ b/lib/libusb/descr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: descr.c,v 1.7 1999/10/13 17:48:04 drochner Exp $ */
+/* $NetBSD: descr.c,v 1.9 2000/09/24 02:13:24 augustss Exp $ */
/*
* Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
@@ -37,7 +37,9 @@
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
+#if defined(__FreeBSD__)
#include <sys/ioctl.h>
+#endif
#include <dev/usb/usb.h>
@@ -45,28 +47,34 @@
#include "usbvar.h"
report_desc_t
-hid_get_report_desc(fd)
- int fd;
+hid_get_report_desc(int fd)
{
struct usb_ctl_report_desc rep;
- report_desc_t r;
rep.size = 0;
if (ioctl(fd, USB_GET_REPORT_DESC, &rep) < 0)
- return (0);
- r = malloc(sizeof *r + rep.size);
+ return (NULL);
+
+ return hid_use_report_desc(rep.data, (unsigned int)rep.size);
+}
+
+report_desc_t
+hid_use_report_desc(unsigned char *data, unsigned int size)
+{
+ report_desc_t r;
+
+ r = malloc(sizeof(*r) + size);
if (r == 0) {
errno = ENOMEM;
- return (0);
+ return (NULL);
}
- r->size = rep.size;
- memcpy(r->data, rep.data, (unsigned int)rep.size);
+ r->size = size;
+ memcpy(r->data, data, size);
return (r);
}
void
-hid_dispose_report_desc(r)
- report_desc_t r;
+hid_dispose_report_desc(report_desc_t r)
{
free(r);
OpenPOWER on IntegriCloud