]> git.scottworley.com Git - keystroke-timestamps/blobdiff - keystroke-timestamps.c
Parse options with getopt instead of strcmp
[keystroke-timestamps] / keystroke-timestamps.c
index 670b43c73c9b7aa2eee530861105dc41311d9a46..2ab4c42938a2cb3177bd1f00c1a2f413d8ba712c 100644 (file)
@@ -1,15 +1,38 @@
+#include <err.h>
 #include <fcntl.h>
 #include <fcntl.h>
+#include <getopt.h>
+#include <linux/input.h>
 #include <stdio.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
 #include <unistd.h>
 #include <unistd.h>
-#include <linux/input.h>
 
 
-int main ()
+int main (int argc, char **argv)
 {
 {
-  struct input_event i;
+  int print_usec = 0;
+  struct option long_options[] = {
+    {"usec",   no_argument,       &print_usec,  1   },
+    {0,        0,                 0,            0   },
+  };
+  while (1) {
+    int c = getopt_long(argc, argv, "", long_options, NULL);
+    if (c == -1) break;
+    if (c != 0) exit(EX_USAGE);
+  }
+
   int fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);
   int fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);
-  while (fd && read(fd, &i, sizeof(i)) == sizeof(i)) {
+  if (fd < 0) {
+    err(EX_NOINPUT, "Could not open keyboard event file");
+  }
+  struct input_event i;
+  while (read(fd, &i, sizeof(i)) == sizeof(i)) {
     if (i.type == 1 && i.value == 1) {
     if (i.type == 1 && i.value == 1) {
-      printf("%ld.%ld\n", i.time.tv_sec, i.time.tv_usec);
+      if (print_usec) {
+        printf("%ld.%ld\n", i.time.tv_sec, i.time.tv_usec);
+      } else {
+        printf("%ld\n", i.time.tv_sec);
+      }
       fflush(stdout);
     }
   }
       fflush(stdout);
     }
   }