summaryrefslogtreecommitdiff
path: root/util/cairo-script
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-07-15 13:26:34 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-07-15 13:26:34 +0100
commit1caa34103925c53b180cd614f5c6b425b5a3f271 (patch)
tree02e974f51fee963907cd0da1ab298274ae7d46a0 /util/cairo-script
parent818ad38a0e323892231469520a4b077f4dae31d4 (diff)
Fix build under distcheck
Need to play a little dance to get the sources included and paths correct whilst building source files with objdir != srcdir under distcheck.
Diffstat (limited to 'util/cairo-script')
-rw-r--r--util/cairo-script/csi-bind.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/util/cairo-script/csi-bind.c b/util/cairo-script/csi-bind.c
new file mode 100644
index 00000000..91b58fb9
--- /dev/null
+++ b/util/cairo-script/csi-bind.c
@@ -0,0 +1,76 @@
+#include <cairo.h>
+#include <cairo-script-interpreter.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static cairo_status_t
+write_func (void *closure,
+ const unsigned char *data,
+ unsigned int length)
+{
+ if (fwrite (data, length, 1, closure) != 1)
+ return CAIRO_STATUS_WRITE_ERROR;
+
+ return CAIRO_STATUS_SUCCESS;
+}
+
+int
+main (int argc, char **argv)
+{
+ FILE *in = stdin, *out = stdout;
+ cairo_status_t status;
+ int i;
+
+ if (argc >= 3) {
+ if (strcmp (argv[argc-1], "-")) {
+ out = fopen (argv[argc-1], "w");
+ if (out == NULL) {
+ fprintf (stderr, "Failed to open output '%s'\n", argv[argc-1]);
+ return 1;
+ }
+ }
+ }
+
+ if (argc > 2) {
+ for (i = 1; i < argc - 1; i++) {
+ in = fopen (argv[i], "r");
+ if (in == NULL) {
+ fprintf (stderr, "Failed to open input '%s'\n", argv[i]);
+ return 1;
+ }
+
+ status = cairo_script_interpreter_translate_stream (in, write_func, out);
+ fclose (in);
+
+ if (status)
+ break;
+ }
+ } else {
+ if (argc > 1) {
+ if (strcmp (argv[1], "-")) {
+ in = fopen (argv[1], "r");
+ if (in == NULL) {
+ fprintf (stderr, "Failed to open input '%s'\n", argv[1]);
+ return 1;
+ }
+ }
+ }
+
+ status = cairo_script_interpreter_translate_stream (in, write_func, out);
+
+ if (in != stdin)
+ fclose (in);
+ }
+
+ if (out != stdout)
+ fclose (out);
+
+ if (status) {
+ fprintf (stderr, "Translation failed: %s\n",
+ cairo_status_to_string (status));
+ return status;
+ }
+
+ return status;
+}