From 892ecce78dec37a1b2701611dd72986442cd094d Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Fri, 4 Jul 2025 00:55:59 +0200 Subject: Import project skeleton from rts https://gitea.privatedns.org/xavi/rts --- tools/add-header.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tools/add-header.c (limited to 'tools/add-header.c') diff --git a/tools/add-header.c b/tools/add-header.c new file mode 100644 index 0000000..75f7458 --- /dev/null +++ b/tools/add-header.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include + +int main(int argc, char **const argv) +{ + int ret = EXIT_FAILURE; + FILE *in = NULL, *out = NULL; + + if (argc < 3) + { + fprintf(stderr, "%s [arg ...] \n", *argv); + goto end; + } + + const char *const in_path = argv[argc - 2], + *const out_path = argv[argc - 1]; + + if (!(out = fopen(out_path, "wb"))) + { + fprintf(stderr, "could not open %s: %s\n", out_path, strerror(errno)); + goto end; + } + else if (!(in = fopen(in_path, "rb"))) + { + fprintf(stderr, "could not open %s: %s\n", in_path, strerror(errno)); + goto end; + } + + for (int i = 1; i < argc - 2; i++) + { + if (fprintf(out, "%s", argv[i]) < 0 + || putc('\0', out) == EOF + || ferror(out)) + { + fprintf(stderr, "failed writing to %s\n", out_path); + goto end; + } + } + + while (!feof(in)) + { + char c; + + if ((!fread(&c, sizeof c, 1, in) + || !fwrite(&c, sizeof c, 1, out)) + && (ferror(in) || ferror(out))) + { + fprintf(stderr, "ferror(%s)=%d, ferror(%s)=%d\n", + in_path, ferror(in), out_path, ferror(out)); + goto end; + } + } + + ret = EXIT_SUCCESS; + +end: + if (out) + fclose(out); + + if (in) + fclose(in); + + return ret; +} -- cgit v1.2.3