[util] Add hb-shape --batch
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 30 Oct 2018 07:50:18 +0000 (00:50 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Tue, 30 Oct 2018 07:52:22 +0000 (00:52 -0700)
util/hb-shape.cc

index 337cd43..6c727d0 100644 (file)
@@ -160,6 +160,36 @@ struct output_buffer_t
 int
 main (int argc, char **argv)
 {
+  if (argc == 2 && !strcmp (argv[1], "--batch"))
+  {
+    unsigned int ret = 0;
+    char *buf = nullptr;
+    size_t len;
+    while (getline (&buf, &len, stdin) > 0)
+    {
+      size_t l = strlen (buf);
+      if (l && buf[l - 1] == '\n') buf[l - 1] = '\0';
+      main_font_text_t<shape_consumer_t<output_buffer_t>, FONT_SIZE_UPEM, 0> driver;
+      char *args[32];
+      argc = 0;
+      char *p = buf, *e;
+      args[argc++] = p;
+      while ((e = strchr (p, ' ')) && argc < (int) (int) ARRAY_LENGTH (args))
+      {
+       *e++ = '\0';
+       while (*e == ' ')
+         e++;
+       args[argc++] = p = e;
+      }
+      ret |= driver.main (argc, args);
+      fflush (stdout);
+
+      if (ret)
+        break;
+    }
+    free (buf);
+    return ret;
+  }
   main_font_text_t<shape_consumer_t<output_buffer_t>, FONT_SIZE_UPEM, 0> driver;
   return driver.main (argc, argv);
 }