commit 503398bd5f325447f7d801306222e5fc142cacae
parent 2c756c40777d33d10e27d514eb9c7bc52206a894
Author: Demonstrandum <moi@knutsen.co>
Date: Wed, 5 Aug 2020 22:50:38 +0100
Redirect stdout to correct file.
Diffstat:
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/stagit.c b/stagit.c
@@ -397,15 +397,20 @@ writefooter(FILE *fp)
int
syntax_highlight(const char *filename, FILE *fp, const char *s, size_t len)
{
+ // Copy STDOUT
+ int stdout_copy = dup(1);
+ // Redirect STDOUT
+ dup2(fileno(fp), 1);
+
// Ruby script for syntax highlighting.
FILE *child = popen("./highlight", "w");
if (child == NULL) {
printf("child is null: %s", strerror(errno));
exit(1);
}
- // Give filename:
+ // Give filename through STDIN:
fprintf(child, "%s\n", filename);
- // Give code to highlight:
+ // Give code to highlight through STDIN:
int lc;
size_t i;
for (i = 0; *s && i < len; s++, i++) {
@@ -413,12 +418,9 @@ syntax_highlight(const char *filename, FILE *fp, const char *s, size_t len)
fprintf(child, "%c", *s);
}
- // Write returned HTML to the HTML file.
- char c;
- while ((c = fgetc(child)) != EOF)
- fprintf(fp, "%c", c);
-
pclose(child);
+ // Give back STDOUT.
+ dup2(stdout_copy, 1);
return lc;
}