stagit

Fork of `stagit` for git.knutsen.co.
git clone git://git.knutsen.co/stagit
Log | Files | Refs | README | LICENSE

commit 503398bd5f325447f7d801306222e5fc142cacae
parent 2c756c40777d33d10e27d514eb9c7bc52206a894
Author: Demonstrandum <moi@knutsen.co>
Date:   Wed,  5 Aug 2020 22:50:38 +0100

Redirect stdout to correct file.

Diffstat:
Mstagit.c | 16+++++++++-------
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; }