From owner-svn-src-projects@FreeBSD.ORG Thu Jul 28 18:42:10 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E885106564A; Thu, 28 Jul 2011 18:42:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6F06B8FC16; Thu, 28 Jul 2011 18:42:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6SIgAZQ014807; Thu, 28 Jul 2011 18:42:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6SIgA9t014805; Thu, 28 Jul 2011 18:42:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201107281842.p6SIgA9t014805@svn.freebsd.org> From: Alexander Motin Date: Thu, 28 Jul 2011 18:42:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224484 - projects/hid/usr.bin/usbhidaction X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jul 2011 18:42:10 -0000 Author: mav Date: Thu Jul 28 18:42:10 2011 New Revision: 224484 URL: http://svn.freebsd.org/changeset/base/224484 Log: Fix support for multiple Report IDs. Modified: projects/hid/usr.bin/usbhidaction/usbhidaction.c Modified: projects/hid/usr.bin/usbhidaction/usbhidaction.c ============================================================================== --- projects/hid/usr.bin/usbhidaction/usbhidaction.c Thu Jul 28 18:39:47 2011 (r224483) +++ projects/hid/usr.bin/usbhidaction/usbhidaction.c Thu Jul 28 18:42:10 2011 (r224484) @@ -92,12 +92,12 @@ main(int argc, char **argv) char buf[100]; char devnamebuf[PATH_MAX]; struct command *cmd; - int reportid; + int reportid = -1; demon = 1; ignore = 0; dieearly = 0; - while ((ch = getopt(argc, argv, "c:def:ip:t:v")) != -1) { + while ((ch = getopt(argc, argv, "c:def:ip:r:t:v")) != -1) { switch(ch) { case 'c': conf = optarg; @@ -117,6 +117,9 @@ main(int argc, char **argv) case 'p': pidfile = optarg; break; + case 'r': + reportid = atoi(optarg); + break; case 't': table = optarg; break; @@ -146,14 +149,13 @@ main(int argc, char **argv) fd = open(dev, O_RDWR); if (fd < 0) err(1, "%s", dev); - reportid = hid_get_report_id(fd); repd = hid_get_report_desc(fd); if (repd == NULL) err(1, "hid_get_report_desc() failed"); commands = parse_conf(conf, repd, reportid, ignore); - sz = (size_t)hid_report_size(repd, hid_input, reportid); + sz = (size_t)hid_report_size(repd, hid_input, -1); if (verbose) printf("report size %zu\n", sz); @@ -198,6 +200,9 @@ main(int argc, char **argv) } #endif for (cmd = commands; cmd; cmd = cmd->next) { + if (cmd->item.report_ID != 0 && + buf[0] != cmd->item.report_ID) + continue; val = hid_get_data(buf, &cmd->item); if (cmd->value != val && cmd->anyvalue == 0) goto next;