From ef4994a1212dd74d2ea9e3be4b586433d2aeb0bd Mon Sep 17 00:00:00 2001 From: n_hibma Date: Mon, 16 Oct 2000 18:13:59 +0000 Subject: 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. --- lib/libusbhid/descr.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'lib/libusbhid/descr.c') diff --git a/lib/libusbhid/descr.c b/lib/libusbhid/descr.c index 8904a87..65b60ce 100644 --- a/lib/libusbhid/descr.c +++ b/lib/libusbhid/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 @@ -37,7 +37,9 @@ #include #include #include +#if defined(__FreeBSD__) #include +#endif #include @@ -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); -- cgit v1.1