hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
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
From 27d225a8a88a002f02c9ad3f5db357b0ad5b1bf1 Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Thu, 7 Mar 2019 17:38:16 +0800
Subject: [PATCH] Support specifing devices in command args
 
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
 input-event-daemon.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)
 
diff --git a/input-event-daemon.c b/input-event-daemon.c
index 51e1e3c..2a7b527 100644
--- a/input-event-daemon.c
+++ b/input-event-daemon.c
@@ -791,7 +791,7 @@ static void daemon_print_help() {
             "    "PROGRAM" "
             "[ [ --monitor | --list | --help | --version ] |\n"
             "                         "
-            "[--config=FILE] [--verbose] [--no-daemon] ]\n"
+            "[--config=FILE] [--verbose] [--no-daemon] ] [devices]\n"
             "\n"
             "Available Options:\n"
             "\n"
@@ -814,7 +814,7 @@ static void daemon_print_version() {
 }
 
 int main(int argc, char *argv[]) {
-    int result, arguments = 0;
+    int result, arguments = 0, listen_len = 0;
     static const struct option long_options[] = {
         { "monitor",   no_argument,       0, 'm' },
         { "list",      no_argument,       0, 'l' },
@@ -834,6 +834,9 @@ int main(int argc, char *argv[]) {
 
     while (optind < argc) {
         result = getopt_long(argc, argv, "mlc:vDhV", long_options, NULL);
+        if (result == -1)
+            break;
+
         arguments++;
 
         switch(result) {
@@ -875,8 +878,18 @@ int main(int argc, char *argv[]) {
         }
     }
 
+    for (arguments = optind; arguments < argc; arguments++) {
+        if(listen_len >= MAX_LISTENER) {
+            fprintf(stderr, PROGRAM": Listener limit exceeded!\n");
+            break;
+        }
+
+        conf.listen[listen_len++] = strdup(argv[arguments]);
+    }
+
     if(conf.monitor) {
-        input_open_all_listener();
+        if (!conf.listen[0])
+            input_open_all_listener();
     } else {
         config_parse_file();
     }
-- 
2.11.0