]> git.scottworley.com Git - keystroke-timestamps/commitdiff
Allow the output file to be specified
authorScott Worley <scottworley@scottworley.com>
Sun, 6 Jul 2014 05:07:23 +0000 (22:07 -0700)
committerScott Worley <scottworley@scottworley.com>
Sun, 6 Jul 2014 05:07:23 +0000 (22:07 -0700)
keystroke-timestamps.c

index d7aeaf660ff4f8450310435aeb1e8a47ed0178d5..5a27279660103f6503cfc8066be0096d24f1f235 100644 (file)
@@ -13,8 +13,10 @@ int main (int argc, char **argv)
 {
   int print_usec = 0;
   char* device = "/dev/input/by-path/*kbd*";
+  char* output = NULL;
   struct option long_options[] = {
     {"device", required_argument, 0,            'd' },
+    {"output", required_argument, 0,            'o' },
     {"usec",   no_argument,       &print_usec,  1   },
     {0,        0,                 0,            0   },
   };
@@ -25,9 +27,23 @@ int main (int argc, char **argv)
       device = optarg;
       continue;
     }
+    if (c == 'o') {
+      output = optarg;
+      continue;
+    }
     if (c != 0) exit(EX_USAGE);
   }
 
+  FILE *output_file;
+  if (output == NULL) {
+    output_file = stdout;
+  } else {
+    output_file = fopen(output, "a");
+    if (output_file == NULL) {
+      err(EX_CANTCREAT, "Could not open output file: %s", output);
+    }
+  }
+
   fd_set all_inputs;
   FD_ZERO(&all_inputs);
   int maxfd = 0;
@@ -68,11 +84,11 @@ int main (int argc, char **argv)
         }
         if (i.type == 1 && i.value == 1) {
           if (print_usec) {
-            printf("%ld.%06ld\n", i.time.tv_sec, i.time.tv_usec);
+            fprintf(output_file, "%ld.%06ld\n", i.time.tv_sec, i.time.tv_usec);
           } else {
-            printf("%ld\n", i.time.tv_sec);
+            fprintf(output_file, "%ld\n", i.time.tv_sec);
           }
-          fflush(stdout);
+          fflush(output_file);
         }
       }
     }