diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2018-10-30 00:50:18 -0700 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2018-10-30 00:52:22 -0700 |
commit | 58e20f53bf61244e3eef09be8ebed60aaf52fb11 (patch) | |
tree | f04464d5a1068fcda7b9b2ca64f6de4fe87c80c3 /util | |
parent | 6131fb6283cff87333db14b9b32e92be6139c3d6 (diff) |
[util] Add hb-shape --batch
Diffstat (limited to 'util')
-rw-r--r-- | util/hb-shape.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/util/hb-shape.cc b/util/hb-shape.cc index 337cd431..6c727d01 100644 --- a/util/hb-shape.cc +++ b/util/hb-shape.cc @@ -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); } |