diff options
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/perk_output.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/internal/perk_output.h b/src/internal/perk_output.h new file mode 100644 index 0000000..d60d78d --- /dev/null +++ b/src/internal/perk_output.h @@ -0,0 +1,31 @@ +#include <perk/perk.h> + +static inline FILE * pe_output_prolog(const struct pe_common_ctx * cctx, FILE * fout, FILE ** ftmp) +{ + int fdout; + + *ftmp = (FILE *)0; + + if (fout) + return fout; + else if (!cctx) + return 0; + else if (cctx->fdout < 0) + return stdout; + + if ((fdout = dup(cctx->fdout)) < 0) + return 0; + + if ((*ftmp = fdopen(fdout,"a"))) + return *ftmp; + + close(fdout); + return 0; +} + +static inline int pe_output_epilog(int ret, FILE * f) +{ + if (f) + fclose(f); + return ret; +} |